สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/541966/1620828/leva-umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react-dom'), require('react-dom/client')) :
typeof define === 'function' && define.amd ? define(['exports', 'react', 'react-dom', 'react-dom/client'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.leva = {}, global.React, global.ReactDOM, global.ReactDOM));
})(this, (function (exports, React5, $7SXl2$reactdom, client) { 'use strict';
function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n.default = e;
return Object.freeze(n);
}
var React5__namespace = _interopNamespaceDefault(React5);
var $7SXl2$reactdom__namespace = _interopNamespaceDefault($7SXl2$reactdom);
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) =>
function __require() {
return (
mod ||
(0, cb[__getOwnPropNames(cb)[0]])(
(mod = { exports: {} }).exports,
mod
),
mod.exports
);
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if ((from && typeof from === 'object') || typeof from === 'function') {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, {
get: () => from[key],
enumerable:
!(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __reExport = (target, mod, secondTarget) => (
__copyProps(target, mod, 'default'),
secondTarget
);
var __toESM = (mod, isNodeMode, target) => (
(target = mod != null ? __create(__getProtoOf(mod)) : {}),
__copyProps(
!mod || !mod.__esModule
? __defProp(target, 'default', { value: mod, enumerable: true })
: target,
mod
)
);
var require_maths_267f0992_cjs_dev = __commonJS({
'node_modules/@use-gesture/core/dist/maths-267f0992.cjs.dev.js'(exports) {
function clamp2(v4, min3, max3) {
return Math.max(min3, Math.min(v4, max3));
}
var V3 = {
toVector(v4, fallback) {
if (v4 === void 0) v4 = fallback;
return Array.isArray(v4) ? v4 : [v4, v4];
},
add(v1, v22) {
return [v1[0] + v22[0], v1[1] + v22[1]];
},
sub(v1, v22) {
return [v1[0] - v22[0], v1[1] - v22[1]];
},
addTo(v1, v22) {
v1[0] += v22[0];
v1[1] += v22[1];
},
subTo(v1, v22) {
v1[0] -= v22[0];
v1[1] -= v22[1];
}
};
function rubberband(distance, dimension, constant) {
if (dimension === 0 || Math.abs(dimension) === Infinity)
return Math.pow(distance, constant * 5);
return (
(distance * dimension * constant) /
(dimension + constant * distance)
);
}
function rubberbandIfOutOfBounds(
position,
min3,
max3,
constant = 0.15
) {
if (constant === 0) return clamp2(position, min3, max3);
if (position < min3)
return (
-rubberband(min3 - position, max3 - min3, constant) + min3
);
if (position > max3)
return (
+rubberband(position - max3, max3 - min3, constant) + max3
);
return position;
}
function computeRubberband(bounds, [Vx, Vy], [Rx, Ry]) {
const [[X0, X1], [Y0, Y1]] = bounds;
return [
rubberbandIfOutOfBounds(Vx, X0, X1, Rx),
rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)
];
}
exports.V = V3;
exports.computeRubberband = computeRubberband;
exports.rubberbandIfOutOfBounds = rubberbandIfOutOfBounds;
}
});
var require_actions_6579bdef_cjs_dev = __commonJS({
'node_modules/@use-gesture/core/dist/actions-6579bdef.cjs.dev.js'(exports) {
var maths = require_maths_267f0992_cjs_dev();
function _toPrimitive(input, hint) {
if (typeof input !== 'object' || input === null) return input;
var prim = input[Symbol.toPrimitive];
if (prim !== void 0) {
var res = prim.call(input, hint);
if (typeof res !== 'object') return res;
throw new TypeError(
'@@toPrimitive must return a primitive value.'
);
}
return (hint === 'string' ? String : Number)(input);
}
function _toPropertyKey(arg) {
var key = _toPrimitive(arg, 'string');
return typeof key === 'symbol' ? key : String(key);
}
function _defineProperty4(obj, key, value) {
key = _toPropertyKey(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys4(e4, r4) {
var t4 = Object.keys(e4);
if (Object.getOwnPropertySymbols) {
var o4 = Object.getOwnPropertySymbols(e4);
(r4 &&
(o4 = o4.filter(function (r5) {
return Object.getOwnPropertyDescriptor(e4, r5)
.enumerable;
})),
t4.push.apply(t4, o4));
}
return t4;
}
function _objectSpread22(e4) {
for (var r4 = 1; r4 < arguments.length; r4++) {
var t4 = null != arguments[r4] ? arguments[r4] : {};
r4 % 2
? ownKeys4(Object(t4), true).forEach(function (r5) {
_defineProperty4(e4, r5, t4[r5]);
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
e4,
Object.getOwnPropertyDescriptors(t4)
)
: ownKeys4(Object(t4)).forEach(function (r5) {
Object.defineProperty(
e4,
r5,
Object.getOwnPropertyDescriptor(t4, r5)
);
});
}
return e4;
}
var EVENT_TYPE_MAP = {
pointer: { start: 'down', change: 'move', end: 'up' },
mouse: { start: 'down', change: 'move', end: 'up' },
touch: { start: 'start', change: 'move', end: 'end' },
gesture: { start: 'start', change: 'change', end: 'end' }
};
function capitalize(string2) {
if (!string2) return '';
return string2[0].toUpperCase() + string2.slice(1);
}
var actionsWithoutCaptureSupported = ['enter', 'leave'];
function hasCapture(capture = false, actionKey) {
return (
capture && !actionsWithoutCaptureSupported.includes(actionKey)
);
}
function toHandlerProp(device, action = '', capture = false) {
const deviceProps = EVENT_TYPE_MAP[device];
const actionKey = deviceProps
? deviceProps[action] || action
: action;
return (
'on' +
capitalize(device) +
capitalize(actionKey) +
(hasCapture(capture, actionKey) ? 'Capture' : '')
);
}
var pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];
function parseProp(prop) {
let eventKey = prop.substring(2).toLowerCase();
const passive = !!~eventKey.indexOf('passive');
if (passive) eventKey = eventKey.replace('passive', '');
const captureKey = pointerCaptureEvents.includes(eventKey)
? 'capturecapture'
: 'capture';
const capture = !!~eventKey.indexOf(captureKey);
if (capture) eventKey = eventKey.replace('capture', '');
return { device: eventKey, capture, passive };
}
function toDomEventType(device, action = '') {
const deviceProps = EVENT_TYPE_MAP[device];
const actionKey = deviceProps
? deviceProps[action] || action
: action;
return device + actionKey;
}
function isTouch(event) {
return 'touches' in event;
}
function getPointerType(event) {
if (isTouch(event)) return 'touch';
if ('pointerType' in event) return event.pointerType;
return 'mouse';
}
function getCurrentTargetTouchList(event) {
return Array.from(event.touches).filter((e4) => {
var _event$currentTarget, _event$currentTarget$;
return (
e4.target === event.currentTarget ||
((_event$currentTarget = event.currentTarget) === null ||
_event$currentTarget === void 0 ||
(_event$currentTarget$ = _event$currentTarget.contains) ===
null ||
_event$currentTarget$ === void 0
? void 0
: _event$currentTarget$.call(
_event$currentTarget,
e4.target
))
);
});
}
function getTouchList(event) {
return event.type === 'touchend' || event.type === 'touchcancel'
? event.changedTouches
: event.targetTouches;
}
function getValueEvent(event) {
return isTouch(event) ? getTouchList(event)[0] : event;
}
function distanceAngle(P1, P2) {
try {
const dx = P2.clientX - P1.clientX;
const dy = P2.clientY - P1.clientY;
const cx = (P2.clientX + P1.clientX) / 2;
const cy = (P2.clientY + P1.clientY) / 2;
const distance = Math.hypot(dx, dy);
const angle = -(Math.atan2(dx, dy) * 180) / Math.PI;
const origin = [cx, cy];
return { angle, distance, origin };
} catch (_unused) {}
return null;
}
function touchIds(event) {
return getCurrentTargetTouchList(event).map(
(touch) => touch.identifier
);
}
function touchDistanceAngle(event, ids) {
const [P1, P2] = Array.from(event.touches).filter((touch) =>
ids.includes(touch.identifier)
);
return distanceAngle(P1, P2);
}
function pointerId(event) {
const valueEvent = getValueEvent(event);
return isTouch(event)
? valueEvent.identifier
: valueEvent.pointerId;
}
function pointerValues(event) {
const valueEvent = getValueEvent(event);
return [valueEvent.clientX, valueEvent.clientY];
}
var LINE_HEIGHT = 40;
var PAGE_HEIGHT = 800;
function wheelValues(event) {
let { deltaX, deltaY, deltaMode } = event;
if (deltaMode === 1) {
deltaX *= LINE_HEIGHT;
deltaY *= LINE_HEIGHT;
} else if (deltaMode === 2) {
deltaX *= PAGE_HEIGHT;
deltaY *= PAGE_HEIGHT;
}
return [deltaX, deltaY];
}
function scrollValues(event) {
var _ref, _ref2;
const { scrollX, scrollY, scrollLeft, scrollTop } =
event.currentTarget;
return [
(_ref =
scrollX !== null && scrollX !== void 0
? scrollX
: scrollLeft) !== null && _ref !== void 0
? _ref
: 0,
(_ref2 =
scrollY !== null && scrollY !== void 0
? scrollY
: scrollTop) !== null && _ref2 !== void 0
? _ref2
: 0
];
}
function getEventDetails(event) {
const payload = {};
if ('buttons' in event) payload.buttons = event.buttons;
if ('shiftKey' in event) {
const { shiftKey, altKey, metaKey, ctrlKey } = event;
Object.assign(payload, { shiftKey, altKey, metaKey, ctrlKey });
}
return payload;
}
function call(v4, ...args) {
if (typeof v4 === 'function') {
return v4(...args);
} else {
return v4;
}
}
function noop2() {}
function chain(...fns) {
if (fns.length === 0) return noop2;
if (fns.length === 1) return fns[0];
return function () {
let result;
for (const fn of fns) {
result = fn.apply(this, arguments) || result;
}
return result;
};
}
function assignDefault(value, fallback) {
return Object.assign({}, fallback, value || {});
}
var BEFORE_LAST_KINEMATICS_DELAY = 32;
var Engine = class {
constructor(ctrl, args, key) {
this.ctrl = ctrl;
this.args = args;
this.key = key;
if (!this.state) {
this.state = {};
this.computeValues([0, 0]);
this.computeInitial();
if (this.init) this.init();
this.reset();
}
}
get state() {
return this.ctrl.state[this.key];
}
set state(state) {
this.ctrl.state[this.key] = state;
}
get shared() {
return this.ctrl.state.shared;
}
get eventStore() {
return this.ctrl.gestureEventStores[this.key];
}
get timeoutStore() {
return this.ctrl.gestureTimeoutStores[this.key];
}
get config() {
return this.ctrl.config[this.key];
}
get sharedConfig() {
return this.ctrl.config.shared;
}
get handler() {
return this.ctrl.handlers[this.key];
}
reset() {
const { state, shared, ingKey, args } = this;
shared[ingKey] =
state._active =
state.active =
state._blocked =
state._force =
false;
state._step = [false, false];
state.intentional = false;
state._movement = [0, 0];
state._distance = [0, 0];
state._direction = [0, 0];
state._delta = [0, 0];
state._bounds = [
[-Infinity, Infinity],
[-Infinity, Infinity]
];
state.args = args;
state.axis = void 0;
state.memo = void 0;
state.elapsedTime = state.timeDelta = 0;
state.direction = [0, 0];
state.distance = [0, 0];
state.overflow = [0, 0];
state._movementBound = [false, false];
state.velocity = [0, 0];
state.movement = [0, 0];
state.delta = [0, 0];
state.timeStamp = 0;
}
start(event) {
const state = this.state;
const config = this.config;
if (!state._active) {
this.reset();
this.computeInitial();
state._active = true;
state.target = event.target;
state.currentTarget = event.currentTarget;
state.lastOffset = config.from
? call(config.from, state)
: state.offset;
state.offset = state.lastOffset;
state.startTime = state.timeStamp = event.timeStamp;
}
}
computeValues(values) {
const state = this.state;
state._values = values;
state.values = this.config.transform(values);
}
computeInitial() {
const state = this.state;
state._initial = state._values;
state.initial = state.values;
}
compute(event) {
const { state, config, shared } = this;
state.args = this.args;
let dt = 0;
if (event) {
state.event = event;
if (config.preventDefault && event.cancelable)
state.event.preventDefault();
state.type = event.type;
shared.touches =
this.ctrl.pointerIds.size || this.ctrl.touchIds.size;
shared.locked = !!document.pointerLockElement;
Object.assign(shared, getEventDetails(event));
shared.down = shared.pressed =
shared.buttons % 2 === 1 || shared.touches > 0;
dt = event.timeStamp - state.timeStamp;
state.timeStamp = event.timeStamp;
state.elapsedTime = state.timeStamp - state.startTime;
}
if (state._active) {
const _absoluteDelta = state._delta.map(Math.abs);
maths.V.addTo(state._distance, _absoluteDelta);
}
if (this.axisIntent) this.axisIntent(event);
const [_m0, _m1] = state._movement;
const [t0, t1] = config.threshold;
const { _step, values } = state;
if (config.hasCustomTransform) {
if (_step[0] === false)
_step[0] = Math.abs(_m0) >= t0 && values[0];
if (_step[1] === false)
_step[1] = Math.abs(_m1) >= t1 && values[1];
} else {
if (_step[0] === false)
_step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;
if (_step[1] === false)
_step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;
}
state.intentional = _step[0] !== false || _step[1] !== false;
if (!state.intentional) return;
const movement = [0, 0];
if (config.hasCustomTransform) {
const [v0, v1] = values;
movement[0] = _step[0] !== false ? v0 - _step[0] : 0;
movement[1] = _step[1] !== false ? v1 - _step[1] : 0;
} else {
movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;
movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;
}
if (this.restrictToAxis && !state._blocked)
this.restrictToAxis(movement);
const previousOffset = state.offset;
const gestureIsActive =
(state._active && !state._blocked) || state.active;
if (gestureIsActive) {
state.first = state._active && !state.active;
state.last = !state._active && state.active;
state.active = shared[this.ingKey] = state._active;
if (event) {
if (state.first) {
if ('bounds' in config)
state._bounds = call(config.bounds, state);
if (this.setup) this.setup();
}
state.movement = movement;
this.computeOffset();
}
}
const [ox, oy] = state.offset;
const [[x0, x1], [y0, y1]] = state._bounds;
state.overflow = [
ox < x0 ? -1 : ox > x1 ? 1 : 0,
oy < y0 ? -1 : oy > y1 ? 1 : 0
];
state._movementBound[0] = state.overflow[0]
? state._movementBound[0] === false
? state._movement[0]
: state._movementBound[0]
: false;
state._movementBound[1] = state.overflow[1]
? state._movementBound[1] === false
? state._movement[1]
: state._movementBound[1]
: false;
const rubberband = state._active
? config.rubberband || [0, 0]
: [0, 0];
state.offset = maths.computeRubberband(
state._bounds,
state.offset,
rubberband
);
state.delta = maths.V.sub(state.offset, previousOffset);
this.computeMovement();
if (
gestureIsActive &&
(!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)
) {
state.delta = maths.V.sub(state.offset, previousOffset);
const absoluteDelta = state.delta.map(Math.abs);
maths.V.addTo(state.distance, absoluteDelta);
state.direction = state.delta.map(Math.sign);
state._direction = state._delta.map(Math.sign);
if (!state.first && dt > 0) {
state.velocity = [
absoluteDelta[0] / dt,
absoluteDelta[1] / dt
];
state.timeDelta = dt;
}
}
}
emit() {
const state = this.state;
const shared = this.shared;
const config = this.config;
if (!state._active) this.clean();
if (
(state._blocked || !state.intentional) &&
!state._force &&
!config.triggerAllEvents
)
return;
const memo = this.handler(
_objectSpread22(
_objectSpread22(_objectSpread22({}, shared), state),
{},
{ [this.aliasKey]: state.values }
)
);
if (memo !== void 0) state.memo = memo;
}
clean() {
this.eventStore.clean();
this.timeoutStore.clean();
}
};
function selectAxis([dx, dy], threshold) {
const absDx = Math.abs(dx);
const absDy = Math.abs(dy);
if (absDx > absDy && absDx > threshold) {
return 'x';
}
if (absDy > absDx && absDy > threshold) {
return 'y';
}
return void 0;
}
var CoordinatesEngine = class extends Engine {
constructor(...args) {
super(...args);
_defineProperty4(this, 'aliasKey', 'xy');
}
reset() {
super.reset();
this.state.axis = void 0;
}
init() {
this.state.offset = [0, 0];
this.state.lastOffset = [0, 0];
}
computeOffset() {
this.state.offset = maths.V.add(
this.state.lastOffset,
this.state.movement
);
}
computeMovement() {
this.state.movement = maths.V.sub(
this.state.offset,
this.state.lastOffset
);
}
axisIntent(event) {
const state = this.state;
const config = this.config;
if (!state.axis && event) {
const threshold =
typeof config.axisThreshold === 'object'
? config.axisThreshold[getPointerType(event)]
: config.axisThreshold;
state.axis = selectAxis(state._movement, threshold);
}
state._blocked =
((config.lockDirection || !!config.axis) && !state.axis) ||
(!!config.axis && config.axis !== state.axis);
}
restrictToAxis(v4) {
if (this.config.axis || this.config.lockDirection) {
switch (this.state.axis) {
case 'x':
v4[1] = 0;
break;
case 'y':
v4[0] = 0;
break;
}
}
}
};
var identity = (v4) => v4;
var DEFAULT_RUBBERBAND = 0.15;
var commonConfigResolver = {
enabled(value = true) {
return value;
},
eventOptions(value, _k, config) {
return _objectSpread22(
_objectSpread22({}, config.shared.eventOptions),
value
);
},
preventDefault(value = false) {
return value;
},
triggerAllEvents(value = false) {
return value;
},
rubberband(value = 0) {
switch (value) {
case true:
return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];
case false:
return [0, 0];
default:
return maths.V.toVector(value);
}
},
from(value) {
if (typeof value === 'function') return value;
if (value != null) return maths.V.toVector(value);
},
transform(value, _k, config) {
const transform = value || config.shared.transform;
this.hasCustomTransform = !!transform;
{
const originalTransform = transform || identity;
return (v4) => {
const r4 = originalTransform(v4);
if (!isFinite(r4[0]) || !isFinite(r4[1])) {
console.warn(
`[@use-gesture]: config.transform() must produce a valid result, but it was: [${r4[0]},${[1]}]`
);
}
return r4;
};
}
},
threshold(value) {
return maths.V.toVector(value, 0);
}
};
{
Object.assign(commonConfigResolver, {
domTarget(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`domTarget\` option has been renamed to \`target\`.`
);
}
return NaN;
},
lockDirection(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`lockDirection\` option has been merged with \`axis\`. Use it as in \`{ axis: 'lock' }\``
);
}
return NaN;
},
initial(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`initial\` option has been renamed to \`from\`.`
);
}
return NaN;
}
});
}
var DEFAULT_AXIS_THRESHOLD = 0;
var coordinatesConfigResolver = _objectSpread22(
_objectSpread22({}, commonConfigResolver),
{},
{
axis(_v, _k, { axis }) {
this.lockDirection = axis === 'lock';
if (!this.lockDirection) return axis;
},
axisThreshold(value = DEFAULT_AXIS_THRESHOLD) {
return value;
},
bounds(value = {}) {
if (typeof value === 'function') {
return (state) =>
coordinatesConfigResolver.bounds(value(state));
}
if ('current' in value) {
return () => value.current;
}
if (
typeof HTMLElement === 'function' &&
value instanceof HTMLElement
) {
return value;
}
const {
left = -Infinity,
right = Infinity,
top = -Infinity,
bottom = Infinity
} = value;
return [
[left, right],
[top, bottom]
];
}
}
);
var KEYS_DELTA_MAP = {
ArrowRight: (displacement, factor = 1) => [
displacement * factor,
0
],
ArrowLeft: (displacement, factor = 1) => [
-1 * displacement * factor,
0
],
ArrowUp: (displacement, factor = 1) => [
0,
-1 * displacement * factor
],
ArrowDown: (displacement, factor = 1) => [0, displacement * factor]
};
var DragEngine = class extends CoordinatesEngine {
constructor(...args) {
super(...args);
_defineProperty4(this, 'ingKey', 'dragging');
}
reset() {
super.reset();
const state = this.state;
state._pointerId = void 0;
state._pointerActive = false;
state._keyboardActive = false;
state._preventScroll = false;
state._delayed = false;
state.swipe = [0, 0];
state.tap = false;
state.canceled = false;
state.cancel = this.cancel.bind(this);
}
setup() {
const state = this.state;
if (state._bounds instanceof HTMLElement) {
const boundRect = state._bounds.getBoundingClientRect();
const targetRect =
state.currentTarget.getBoundingClientRect();
const _bounds = {
left:
boundRect.left - targetRect.left + state.offset[0],
right:
boundRect.right -
targetRect.right +
state.offset[0],
top: boundRect.top - targetRect.top + state.offset[1],
bottom:
boundRect.bottom -
targetRect.bottom +
state.offset[1]
};
state._bounds = coordinatesConfigResolver.bounds(_bounds);
}
}
cancel() {
const state = this.state;
if (state.canceled) return;
state.canceled = true;
state._active = false;
setTimeout(() => {
this.compute();
this.emit();
}, 0);
}
setActive() {
this.state._active =
this.state._pointerActive || this.state._keyboardActive;
}
clean() {
this.pointerClean();
this.state._pointerActive = false;
this.state._keyboardActive = false;
super.clean();
}
pointerDown(event) {
const config = this.config;
const state = this.state;
if (
event.buttons != null &&
(Array.isArray(config.pointerButtons)
? !config.pointerButtons.includes(event.buttons)
: config.pointerButtons !== -1 &&
config.pointerButtons !== event.buttons)
)
return;
const ctrlIds = this.ctrl.setEventIds(event);
if (config.pointerCapture) {
event.target.setPointerCapture(event.pointerId);
}
if (ctrlIds && ctrlIds.size > 1 && state._pointerActive) return;
this.start(event);
this.setupPointer(event);
state._pointerId = pointerId(event);
state._pointerActive = true;
this.computeValues(pointerValues(event));
this.computeInitial();
if (
config.preventScrollAxis &&
getPointerType(event) !== 'mouse'
) {
state._active = false;
this.setupScrollPrevention(event);
} else if (config.delay > 0) {
this.setupDelayTrigger(event);
if (config.triggerAllEvents) {
this.compute(event);
this.emit();
}
} else {
this.startPointerDrag(event);
}
}
startPointerDrag(event) {
const state = this.state;
state._active = true;
state._preventScroll = true;
state._delayed = false;
this.compute(event);
this.emit();
}
pointerMove(event) {
const state = this.state;
const config = this.config;
if (!state._pointerActive) return;
const id = pointerId(event);
if (state._pointerId !== void 0 && id !== state._pointerId)
return;
const _values = pointerValues(event);
if (document.pointerLockElement === event.target) {
state._delta = [event.movementX, event.movementY];
} else {
state._delta = maths.V.sub(_values, state._values);
this.computeValues(_values);
}
maths.V.addTo(state._movement, state._delta);
this.compute(event);
if (state._delayed && state.intentional) {
this.timeoutStore.remove('dragDelay');
state.active = false;
this.startPointerDrag(event);
return;
}
if (config.preventScrollAxis && !state._preventScroll) {
if (state.axis) {
if (
state.axis === config.preventScrollAxis ||
config.preventScrollAxis === 'xy'
) {
state._active = false;
this.clean();
return;
} else {
this.timeoutStore.remove('startPointerDrag');
this.startPointerDrag(event);
return;
}
} else {
return;
}
}
this.emit();
}
pointerUp(event) {
this.ctrl.setEventIds(event);
try {
if (
this.config.pointerCapture &&
event.target.hasPointerCapture(event.pointerId)
) {
event.target.releasePointerCapture(event.pointerId);
}
} catch (_unused) {
{
console.warn(`[@use-gesture]: If you see this message, it's likely that you're using an outdated version of \`@react-three/fiber\`.
Please upgrade to the latest version.`);
}
}
const state = this.state;
const config = this.config;
if (!state._active || !state._pointerActive) return;
const id = pointerId(event);
if (state._pointerId !== void 0 && id !== state._pointerId)
return;
this.state._pointerActive = false;
this.setActive();
this.compute(event);
const [dx, dy] = state._distance;
state.tap =
dx <= config.tapsThreshold && dy <= config.tapsThreshold;
if (state.tap && config.filterTaps) {
state._force = true;
} else {
const [_dx, _dy] = state._delta;
const [_mx, _my] = state._movement;
const [svx, svy] = config.swipe.velocity;
const [sx, sy] = config.swipe.distance;
const sdt = config.swipe.duration;
if (state.elapsedTime < sdt) {
const _vx = Math.abs(_dx / state.timeDelta);
const _vy = Math.abs(_dy / state.timeDelta);
if (_vx > svx && Math.abs(_mx) > sx)
state.swipe[0] = Math.sign(_dx);
if (_vy > svy && Math.abs(_my) > sy)
state.swipe[1] = Math.sign(_dy);
}
}
this.emit();
}
pointerClick(event) {
if (!this.state.tap && event.detail > 0) {
event.preventDefault();
event.stopPropagation();
}
}
setupPointer(event) {
const config = this.config;
const device = config.device;
{
try {
if (
device === 'pointer' &&
config.preventScrollDelay === void 0
) {
const currentTarget =
'uv' in event
? event.sourceEvent.currentTarget
: event.currentTarget;
const style =
window.getComputedStyle(currentTarget);
if (style.touchAction === 'auto') {
console.warn(
`[@use-gesture]: The drag target has its \`touch-action\` style property set to \`auto\`. It is recommended to add \`touch-action: 'none'\` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.
This message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.`,
currentTarget
);
}
}
} catch (_unused2) {}
}
if (config.pointerLock) {
event.currentTarget.requestPointerLock();
}
if (!config.pointerCapture) {
this.eventStore.add(
this.sharedConfig.window,
device,
'change',
this.pointerMove.bind(this)
);
this.eventStore.add(
this.sharedConfig.window,
device,
'end',
this.pointerUp.bind(this)
);
this.eventStore.add(
this.sharedConfig.window,
device,
'cancel',
this.pointerUp.bind(this)
);
}
}
pointerClean() {
if (
this.config.pointerLock &&
document.pointerLockElement === this.state.currentTarget
) {
document.exitPointerLock();
}
}
preventScroll(event) {
if (this.state._preventScroll && event.cancelable) {
event.preventDefault();
}
}
setupScrollPrevention(event) {
this.state._preventScroll = false;
persistEvent(event);
const remove = this.eventStore.add(
this.sharedConfig.window,
'touch',
'change',
this.preventScroll.bind(this),
{ passive: false }
);
this.eventStore.add(
this.sharedConfig.window,
'touch',
'end',
remove
);
this.eventStore.add(
this.sharedConfig.window,
'touch',
'cancel',
remove
);
this.timeoutStore.add(
'startPointerDrag',
this.startPointerDrag.bind(this),
this.config.preventScrollDelay,
event
);
}
setupDelayTrigger(event) {
this.state._delayed = true;
this.timeoutStore.add(
'dragDelay',
() => {
this.state._step = [0, 0];
this.startPointerDrag(event);
},
this.config.delay
);
}
keyDown(event) {
const deltaFn = KEYS_DELTA_MAP[event.key];
if (deltaFn) {
const state = this.state;
const factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;
this.start(event);
state._delta = deltaFn(
this.config.keyboardDisplacement,
factor
);
state._keyboardActive = true;
maths.V.addTo(state._movement, state._delta);
this.compute(event);
this.emit();
}
}
keyUp(event) {
if (!(event.key in KEYS_DELTA_MAP)) return;
this.state._keyboardActive = false;
this.setActive();
this.compute(event);
this.emit();
}
bind(bindFunction) {
const device = this.config.device;
bindFunction(device, 'start', this.pointerDown.bind(this));
if (this.config.pointerCapture) {
bindFunction(device, 'change', this.pointerMove.bind(this));
bindFunction(device, 'end', this.pointerUp.bind(this));
bindFunction(device, 'cancel', this.pointerUp.bind(this));
bindFunction(
'lostPointerCapture',
'',
this.pointerUp.bind(this)
);
}
if (this.config.keys) {
bindFunction('key', 'down', this.keyDown.bind(this));
bindFunction('key', 'up', this.keyUp.bind(this));
}
if (this.config.filterTaps) {
bindFunction('click', '', this.pointerClick.bind(this), {
capture: true,
passive: false
});
}
}
};
function persistEvent(event) {
'persist' in event &&
typeof event.persist === 'function' &&
event.persist();
}
var isBrowser =
typeof window !== 'undefined' &&
window.document &&
window.document.createElement;
function supportsTouchEvents() {
return isBrowser && 'ontouchstart' in window;
}
function isTouchScreen() {
return (
supportsTouchEvents() ||
(isBrowser && window.navigator.maxTouchPoints > 1)
);
}
function supportsPointerEvents() {
return isBrowser && 'onpointerdown' in window;
}
function supportsPointerLock() {
return isBrowser && 'exitPointerLock' in window.document;
}
function supportsGestureEvents() {
try {
return 'constructor' in GestureEvent;
} catch (e4) {
return false;
}
}
var SUPPORT = {
isBrowser,
gesture: supportsGestureEvents(),
touch: supportsTouchEvents(),
touchscreen: isTouchScreen(),
pointer: supportsPointerEvents(),
pointerLock: supportsPointerLock()
};
var DEFAULT_PREVENT_SCROLL_DELAY = 250;
var DEFAULT_DRAG_DELAY = 180;
var DEFAULT_SWIPE_VELOCITY = 0.5;
var DEFAULT_SWIPE_DISTANCE = 50;
var DEFAULT_SWIPE_DURATION = 250;
var DEFAULT_KEYBOARD_DISPLACEMENT = 10;
var DEFAULT_DRAG_AXIS_THRESHOLD = { mouse: 0, touch: 0, pen: 8 };
var dragConfigResolver = _objectSpread22(
_objectSpread22({}, coordinatesConfigResolver),
{},
{
device(
_v,
_k,
{
pointer: {
touch = false,
lock = false,
mouse = false
} = {}
}
) {
this.pointerLock = lock && SUPPORT.pointerLock;
if (SUPPORT.touch && touch) return 'touch';
if (this.pointerLock) return 'mouse';
if (SUPPORT.pointer && !mouse) return 'pointer';
if (SUPPORT.touch) return 'touch';
return 'mouse';
},
preventScrollAxis(value, _k, { preventScroll }) {
this.preventScrollDelay =
typeof preventScroll === 'number'
? preventScroll
: preventScroll ||
(preventScroll === void 0 && value)
? DEFAULT_PREVENT_SCROLL_DELAY
: void 0;
if (!SUPPORT.touchscreen || preventScroll === false)
return void 0;
return value
? value
: preventScroll !== void 0
? 'y'
: void 0;
},
pointerCapture(
_v,
_k,
{
pointer: {
capture = true,
buttons = 1,
keys = true
} = {}
}
) {
this.pointerButtons = buttons;
this.keys = keys;
return (
!this.pointerLock &&
this.device === 'pointer' &&
capture
);
},
threshold(
value,
_k,
{ filterTaps = false, tapsThreshold = 3, axis = void 0 }
) {
const threshold = maths.V.toVector(
value,
filterTaps ? tapsThreshold : axis ? 1 : 0
);
this.filterTaps = filterTaps;
this.tapsThreshold = tapsThreshold;
return threshold;
},
swipe({
velocity = DEFAULT_SWIPE_VELOCITY,
distance = DEFAULT_SWIPE_DISTANCE,
duration = DEFAULT_SWIPE_DURATION
} = {}) {
return {
velocity: this.transform(maths.V.toVector(velocity)),
distance: this.transform(maths.V.toVector(distance)),
duration
};
},
delay(value = 0) {
switch (value) {
case true:
return DEFAULT_DRAG_DELAY;
case false:
return 0;
default:
return value;
}
},
axisThreshold(value) {
if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;
return _objectSpread22(
_objectSpread22({}, DEFAULT_DRAG_AXIS_THRESHOLD),
value
);
},
keyboardDisplacement(value = DEFAULT_KEYBOARD_DISPLACEMENT) {
return value;
}
}
);
{
Object.assign(dragConfigResolver, {
useTouch(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`useTouch\` option has been renamed to \`pointer.touch\`. Use it as in \`{ pointer: { touch: true } }\`.`
);
}
return NaN;
},
experimental_preventWindowScrollY(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`experimental_preventWindowScrollY\` option has been renamed to \`preventScroll\`.`
);
}
return NaN;
},
swipeVelocity(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`swipeVelocity\` option has been renamed to \`swipe.velocity\`. Use it as in \`{ swipe: { velocity: 0.5 } }\`.`
);
}
return NaN;
},
swipeDistance(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`swipeDistance\` option has been renamed to \`swipe.distance\`. Use it as in \`{ swipe: { distance: 50 } }\`.`
);
}
return NaN;
},
swipeDuration(value) {
if (value !== void 0) {
throw Error(
`[@use-gesture]: \`swipeDuration\` option has been renamed to \`swipe.duration\`. Use it as in \`{ swipe: { duration: 250 } }\`.`
);
}
return NaN;
}
});
}
function clampStateInternalMovementToBounds(state) {
const [ox, oy] = state.overflow;
const [dx, dy] = state._delta;
const [dirx, diry] = state._direction;
if (
(ox < 0 && dx > 0 && dirx < 0) ||
(ox > 0 && dx < 0 && dirx > 0)
) {
state._movement[0] = state._movementBound[0];
}
if (
(oy < 0 && dy > 0 && diry < 0) ||
(oy > 0 && dy < 0 && diry > 0)
) {
state._movement[1] = state._movementBound[1];
}
}
var SCALE_ANGLE_RATIO_INTENT_DEG = 30;
var PINCH_WHEEL_RATIO = 100;
var PinchEngine = class extends Engine {
constructor(...args) {
super(...args);
_defineProperty4(this, 'ingKey', 'pinching');
_defineProperty4(this, 'aliasKey', 'da');
}
init() {
this.state.offset = [1, 0];
this.state.lastOffset = [1, 0];
this.state._pointerEvents = new Map();
}
reset() {
super.reset();
const state = this.state;
state._touchIds = [];
state.canceled = false;
state.cancel = this.cancel.bind(this);
state.turns = 0;
}
computeOffset() {
const { type, movement, lastOffset } = this.state;
if (type === 'wheel') {
this.state.offset = maths.V.add(movement, lastOffset);
} else {
this.state.offset = [
(1 + movement[0]) * lastOffset[0],
movement[1] + lastOffset[1]
];
}
}
computeMovement() {
const { offset: offset2, lastOffset } = this.state;
this.state.movement = [
offset2[0] / lastOffset[0],
offset2[1] - lastOffset[1]
];
}
axisIntent() {
const state = this.state;
const [_m0, _m1] = state._movement;
if (!state.axis) {
const axisMovementDifference =
Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG -
Math.abs(_m1);
if (axisMovementDifference < 0) state.axis = 'angle';
else if (axisMovementDifference > 0) state.axis = 'scale';
}
}
restrictToAxis(v4) {
if (this.config.lockDirection) {
if (this.state.axis === 'scale') v4[1] = 0;
else if (this.state.axis === 'angle') v4[0] = 0;
}
}
cancel() {
const state = this.state;
if (state.canceled) return;
setTimeout(() => {
state.canceled = true;
state._active = false;
this.compute();
this.emit();
}, 0);
}
touchStart(event) {
this.ctrl.setEventIds(event);
const state = this.state;
const ctrlTouchIds = this.ctrl.touchIds;
if (state._active) {
if (state._touchIds.every((id) => ctrlTouchIds.has(id)))
return;
}
if (ctrlTouchIds.size < 2) return;
this.start(event);
state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);
const payload = touchDistanceAngle(event, state._touchIds);
if (!payload) return;
this.pinchStart(event, payload);
}
pointerStart(event) {
if (event.buttons != null && event.buttons % 2 !== 1) return;
this.ctrl.setEventIds(event);
event.target.setPointerCapture(event.pointerId);
const state = this.state;
const _pointerEvents = state._pointerEvents;
const ctrlPointerIds = this.ctrl.pointerIds;
if (state._active) {
if (
Array.from(_pointerEvents.keys()).every((id) =>
ctrlPointerIds.has(id)
)
)
return;
}
if (_pointerEvents.size < 2) {
_pointerEvents.set(event.pointerId, event);
}
if (state._pointerEvents.size < 2) return;
this.start(event);
const payload = distanceAngle(
...Array.from(_pointerEvents.values())
);
if (!payload) return;
this.pinchStart(event, payload);
}
pinchStart(event, payload) {
const state = this.state;
state.origin = payload.origin;
this.computeValues([payload.distance, payload.angle]);
this.computeInitial();
this.compute(event);
this.emit();
}
touchMove(event) {
if (!this.state._active) return;
const payload = touchDistanceAngle(event, this.state._touchIds);
if (!payload) return;
this.pinchMove(event, payload);
}
pointerMove(event) {
const _pointerEvents = this.state._pointerEvents;
if (_pointerEvents.has(event.pointerId)) {
_pointerEvents.set(event.pointerId, event);
}
if (!this.state._active) return;
const payload = distanceAngle(
...Array.from(_pointerEvents.values())
);
if (!payload) return;
this.pinchMove(event, payload);
}
pinchMove(event, payload) {
const state = this.state;
const prev_a = state._values[1];
const delta_a = payload.angle - prev_a;
let delta_turns = 0;
if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);
this.computeValues([
payload.distance,
payload.angle - 360 * delta_turns
]);
state.origin = payload.origin;
state.turns = delta_turns;
state._movement = [
state._values[0] / state._initial[0] - 1,
state._values[1] - state._initial[1]
];
this.compute(event);
this.emit();
}
touchEnd(event) {
this.ctrl.setEventIds(event);
if (!this.state._active) return;
if (
this.state._touchIds.some(
(id) => !this.ctrl.touchIds.has(id)
)
) {
this.state._active = false;
this.compute(event);
this.emit();
}
}
pointerEnd(event) {
const state = this.state;
this.ctrl.setEventIds(event);
try {
event.target.releasePointerCapture(event.pointerId);
} catch (_unused) {}
if (state._pointerEvents.has(event.pointerId)) {
state._pointerEvents.delete(event.pointerId);
}
if (!state._active) return;
if (state._pointerEvents.size < 2) {
state._active = false;
this.compute(event);
this.emit();
}
}
gestureStart(event) {
if (event.cancelable) event.preventDefault();
const state = this.state;
if (state._active) return;
this.start(event);
this.computeValues([event.scale, event.rotation]);
state.origin = [event.clientX, event.clientY];
this.compute(event);
this.emit();
}
gestureMove(event) {
if (event.cancelable) event.preventDefault();
if (!this.state._active) return;
const state = this.state;
this.computeValues([event.scale, event.rotation]);
state.origin = [event.clientX, event.clientY];
const _previousMovement = state._movement;
state._movement = [event.scale - 1, event.rotation];
state._delta = maths.V.sub(state._movement, _previousMovement);
this.compute(event);
this.emit();
}
gestureEnd(event) {
if (!this.state._active) return;
this.state._active = false;
this.compute(event);
this.emit();
}
wheel(event) {
const modifierKey = this.config.modifierKey;
if (
modifierKey &&
(Array.isArray(modifierKey)
? !modifierKey.find((k4) => event[k4])
: !event[modifierKey])
)
return;
if (!this.state._active) this.wheelStart(event);
else this.wheelChange(event);
this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));
}
wheelStart(event) {
this.start(event);
this.wheelChange(event);
}
wheelChange(event) {
const isR3f = 'uv' in event;
if (!isR3f) {
if (event.cancelable) {
event.preventDefault();
}
if (!event.defaultPrevented) {
console.warn(`[@use-gesture]: To properly support zoom on trackpads, try using the \`target\` option.
This message will only appear in development mode.`);
}
}
const state = this.state;
state._delta = [
(-wheelValues(event)[1] / PINCH_WHEEL_RATIO) *
state.offset[0],
0
];
maths.V.addTo(state._movement, state._delta);
clampStateInternalMovementToBounds(state);
this.state.origin = [event.clientX, event.clientY];
this.compute(event);
this.emit();
}
wheelEnd() {
if (!this.state._active) return;
this.state._active = false;
this.compute();
this.emit();
}
bind(bindFunction) {
const device = this.config.device;
if (!!device) {
bindFunction(
device,
'start',
this[device + 'Start'].bind(this)
);
bindFunction(
device,
'change',
this[device + 'Move'].bind(this)
);
bindFunction(
device,
'end',
this[device + 'End'].bind(this)
);
bindFunction(
device,
'cancel',
this[device + 'End'].bind(this)
);
bindFunction(
'lostPointerCapture',
'',
this[device + 'End'].bind(this)
);
}
if (this.config.pinchOnWheel) {
bindFunction('wheel', '', this.wheel.bind(this), {
passive: false
});
}
}
};
var pinchConfigResolver = _objectSpread22(
_objectSpread22({}, commonConfigResolver),
{},
{
device(_v, _k, { shared, pointer: { touch = false } = {} }) {
const sharedConfig = shared;
if (
sharedConfig.target &&
!SUPPORT.touch &&
SUPPORT.gesture
)
return 'gesture';
if (SUPPORT.touch && touch) return 'touch';
if (SUPPORT.touchscreen) {
if (SUPPORT.pointer) return 'pointer';
if (SUPPORT.touch) return 'touch';
}
},
bounds(_v, _k, { scaleBounds = {}, angleBounds = {} }) {
const _scaleBounds = (state) => {
const D2 = assignDefault(call(scaleBounds, state), {
min: -Infinity,
max: Infinity
});
return [D2.min, D2.max];
};
const _angleBounds = (state) => {
const A2 = assignDefault(call(angleBounds, state), {
min: -Infinity,
max: Infinity
});
return [A2.min, A2.max];
};
if (
typeof scaleBounds !== 'function' &&
typeof angleBounds !== 'function'
)
return [_scaleBounds(), _angleBounds()];
return (state) => [
_scaleBounds(state),
_angleBounds(state)
];
},
threshold(value, _k, config) {
this.lockDirection = config.axis === 'lock';
const threshold = maths.V.toVector(
value,
this.lockDirection ? [0.1, 3] : 0
);
return threshold;
},
modifierKey(value) {
if (value === void 0) return 'ctrlKey';
return value;
},
pinchOnWheel(value = true) {
return value;
}
}
);
var MoveEngine = class extends CoordinatesEngine {
constructor(...args) {
super(...args);
_defineProperty4(this, 'ingKey', 'moving');
}
move(event) {
if (this.config.mouseOnly && event.pointerType !== 'mouse')
return;
if (!this.state._active) this.moveStart(event);
else this.moveChange(event);
this.timeoutStore.add('moveEnd', this.moveEnd.bind(this));
}
moveStart(event) {
this.start(event);
this.computeValues(pointerValues(event));
this.compute(event);
this.computeInitial();
this.emit();
}
moveChange(event) {
if (!this.state._active) return;
const values = pointerValues(event);
const state = this.state;
state._delta = maths.V.sub(values, state._values);
maths.V.addTo(state._movement, state._delta);
this.computeValues(values);
this.compute(event);
this.emit();
}
moveEnd(event) {
if (!this.state._active) return;
this.state._active = false;
this.compute(event);
this.emit();
}
bind(bindFunction) {
bindFunction('pointer', 'change', this.move.bind(this));
bindFunction('pointer', 'leave', this.moveEnd.bind(this));
}
};
var moveConfigResolver = _objectSpread22(
_objectSpread22({}, coordinatesConfigResolver),
{},
{ mouseOnly: (value = true) => value }
);
var ScrollEngine = class extends CoordinatesEngine {
constructor(...args) {
super(...args);
_defineProperty4(this, 'ingKey', 'scrolling');
}
scroll(event) {
if (!this.state._active) this.start(event);
this.scrollChange(event);
this.timeoutStore.add('scrollEnd', this.scrollEnd.bind(this));
}
scrollChange(event) {
if (event.cancelable) event.preventDefault();
const state = this.state;
const values = scrollValues(event);
state._delta = maths.V.sub(values, state._values);
maths.V.addTo(state._movement, state._delta);
this.computeValues(values);
this.compute(event);
this.emit();
}
scrollEnd() {
if (!this.state._active) return;
this.state._active = false;
this.compute();
this.emit();
}
bind(bindFunction) {
bindFunction('scroll', '', this.scroll.bind(this));
}
};
var scrollConfigResolver = coordinatesConfigResolver;
var WheelEngine = class extends CoordinatesEngine {
constructor(...args) {
super(...args);
_defineProperty4(this, 'ingKey', 'wheeling');
}
wheel(event) {
if (!this.state._active) this.start(event);
this.wheelChange(event);
this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));
}
wheelChange(event) {
const state = this.state;
state._delta = wheelValues(event);
maths.V.addTo(state._movement, state._delta);
clampStateInternalMovementToBounds(state);
this.compute(event);
this.emit();
}
wheelEnd() {
if (!this.state._active) return;
this.state._active = false;
this.compute();
this.emit();
}
bind(bindFunction) {
bindFunction('wheel', '', this.wheel.bind(this));
}
};
var wheelConfigResolver = coordinatesConfigResolver;
var HoverEngine = class extends CoordinatesEngine {
constructor(...args) {
super(...args);
_defineProperty4(this, 'ingKey', 'hovering');
}
enter(event) {
if (this.config.mouseOnly && event.pointerType !== 'mouse')
return;
this.start(event);
this.computeValues(pointerValues(event));
this.compute(event);
this.emit();
}
leave(event) {
if (this.config.mouseOnly && event.pointerType !== 'mouse')
return;
const state = this.state;
if (!state._active) return;
state._active = false;
const values = pointerValues(event);
state._movement = state._delta = maths.V.sub(
values,
state._values
);
this.computeValues(values);
this.compute(event);
state.delta = state.movement;
this.emit();
}
bind(bindFunction) {
bindFunction('pointer', 'enter', this.enter.bind(this));
bindFunction('pointer', 'leave', this.leave.bind(this));
}
};
var hoverConfigResolver = _objectSpread22(
_objectSpread22({}, coordinatesConfigResolver),
{},
{ mouseOnly: (value = true) => value }
);
var EngineMap = new Map();
var ConfigResolverMap = new Map();
function registerAction2(action) {
EngineMap.set(action.key, action.engine);
ConfigResolverMap.set(action.key, action.resolver);
}
var dragAction2 = {
key: 'drag',
engine: DragEngine,
resolver: dragConfigResolver
};
var hoverAction2 = {
key: 'hover',
engine: HoverEngine,
resolver: hoverConfigResolver
};
var moveAction2 = {
key: 'move',
engine: MoveEngine,
resolver: moveConfigResolver
};
var pinchAction2 = {
key: 'pinch',
engine: PinchEngine,
resolver: pinchConfigResolver
};
var scrollAction2 = {
key: 'scroll',
engine: ScrollEngine,
resolver: scrollConfigResolver
};
var wheelAction2 = {
key: 'wheel',
engine: WheelEngine,
resolver: wheelConfigResolver
};
exports.ConfigResolverMap = ConfigResolverMap;
exports.EngineMap = EngineMap;
exports.SUPPORT = SUPPORT;
exports._defineProperty = _defineProperty4;
exports._objectSpread2 = _objectSpread22;
exports.chain = chain;
exports.dragAction = dragAction2;
exports.hoverAction = hoverAction2;
exports.isTouch = isTouch;
exports.moveAction = moveAction2;
exports.parseProp = parseProp;
exports.pinchAction = pinchAction2;
exports.registerAction = registerAction2;
exports.scrollAction = scrollAction2;
exports.toDomEventType = toDomEventType;
exports.toHandlerProp = toHandlerProp;
exports.touchIds = touchIds;
exports.wheelAction = wheelAction2;
}
});
var require_use_gesture_core_actions_cjs_dev = __commonJS({
'node_modules/@use-gesture/core/actions/dist/use-gesture-core-actions.cjs.dev.js'(
exports
) {
Object.defineProperty(exports, '__esModule', { value: true });
var actions_dist_useGestureCoreActions =
require_actions_6579bdef_cjs_dev();
require_maths_267f0992_cjs_dev();
exports.ConfigResolverMap =
actions_dist_useGestureCoreActions.ConfigResolverMap;
exports.EngineMap = actions_dist_useGestureCoreActions.EngineMap;
exports.dragAction = actions_dist_useGestureCoreActions.dragAction;
exports.hoverAction = actions_dist_useGestureCoreActions.hoverAction;
exports.moveAction = actions_dist_useGestureCoreActions.moveAction;
exports.pinchAction = actions_dist_useGestureCoreActions.pinchAction;
exports.registerAction =
actions_dist_useGestureCoreActions.registerAction;
exports.scrollAction = actions_dist_useGestureCoreActions.scrollAction;
exports.wheelAction = actions_dist_useGestureCoreActions.wheelAction;
}
});
var require_use_gesture_core_actions_cjs = __commonJS({
'node_modules/@use-gesture/core/actions/dist/use-gesture-core-actions.cjs.js'(
exports,
module
) {
{
module.exports = require_use_gesture_core_actions_cjs_dev();
}
}
});
var require_use_gesture_core_cjs_dev = __commonJS({
'node_modules/@use-gesture/core/dist/use-gesture-core.cjs.dev.js'(exports) {
Object.defineProperty(exports, '__esModule', { value: true });
var actions_dist_useGestureCoreActions =
require_actions_6579bdef_cjs_dev();
require_maths_267f0992_cjs_dev();
function _objectWithoutPropertiesLoose3(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i4;
for (i4 = 0; i4 < sourceKeys.length; i4++) {
key = sourceKeys[i4];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _objectWithoutProperties3(source, excluded) {
if (source == null) return {};
var target = _objectWithoutPropertiesLoose3(source, excluded);
var key, i4;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i4 = 0; i4 < sourceSymbolKeys.length; i4++) {
key = sourceSymbolKeys[i4];
if (excluded.indexOf(key) >= 0) continue;
if (
!Object.prototype.propertyIsEnumerable.call(source, key)
)
continue;
target[key] = source[key];
}
}
return target;
}
var sharedConfigResolver = {
target(value) {
if (value) {
return () => ('current' in value ? value.current : value);
}
return void 0;
},
enabled(value = true) {
return value;
},
window(
value = actions_dist_useGestureCoreActions.SUPPORT.isBrowser
? window
: void 0
) {
return value;
},
eventOptions({ passive = true, capture = false } = {}) {
return { passive, capture };
},
transform(value) {
return value;
}
};
var _excluded6 = [
'target',
'eventOptions',
'window',
'enabled',
'transform'
];
function resolveWith(config = {}, resolvers) {
const result = {};
for (const [key, resolver] of Object.entries(resolvers)) {
switch (typeof resolver) {
case 'function':
{
const r4 = resolver.call(
result,
config[key],
key,
config
);
if (!Number.isNaN(r4)) result[key] = r4;
}
break;
case 'object':
result[key] = resolveWith(config[key], resolver);
break;
case 'boolean':
if (resolver) result[key] = config[key];
break;
}
}
return result;
}
function parse2(newConfig, gestureKey, _config = {}) {
const _ref = newConfig,
{
target,
eventOptions,
window: window2,
enabled,
transform
} = _ref,
rest2 = _objectWithoutProperties3(_ref, _excluded6);
_config.shared = resolveWith(
{ target, eventOptions, window: window2, enabled, transform },
sharedConfigResolver
);
if (gestureKey) {
const resolver =
actions_dist_useGestureCoreActions.ConfigResolverMap.get(
gestureKey
);
_config[gestureKey] = resolveWith(
actions_dist_useGestureCoreActions._objectSpread2(
{ shared: _config.shared },
rest2
),
resolver
);
} else {
for (const key in rest2) {
const resolver =
actions_dist_useGestureCoreActions.ConfigResolverMap.get(
key
);
if (resolver) {
_config[key] = resolveWith(
actions_dist_useGestureCoreActions._objectSpread2(
{ shared: _config.shared },
rest2[key]
),
resolver
);
} else {
if (
![
'drag',
'pinch',
'scroll',
'wheel',
'move',
'hover'
].includes(key)
) {
if (key === 'domTarget') {
throw Error(
`[@use-gesture]: \`domTarget\` option has been renamed to \`target\`.`
);
}
console.warn(
`[@use-gesture]: Unknown config key \`${key}\` was used. Please read the documentation for further information.`
);
}
}
}
}
return _config;
}
var EventStore = class {
constructor(ctrl, gestureKey) {
actions_dist_useGestureCoreActions._defineProperty(
this,
'_listeners',
new Set()
);
this._ctrl = ctrl;
this._gestureKey = gestureKey;
}
add(element, device, action, handler, options) {
const listeners = this._listeners;
const type = actions_dist_useGestureCoreActions.toDomEventType(
device,
action
);
const _options = this._gestureKey
? this._ctrl.config[this._gestureKey].eventOptions
: {};
const eventOptions =
actions_dist_useGestureCoreActions._objectSpread2(
actions_dist_useGestureCoreActions._objectSpread2(
{},
_options
),
options
);
element.addEventListener(type, handler, eventOptions);
const remove = () => {
element.removeEventListener(type, handler, eventOptions);
listeners.delete(remove);
};
listeners.add(remove);
return remove;
}
clean() {
this._listeners.forEach((remove) => remove());
this._listeners.clear();
}
};
var TimeoutStore = class {
constructor() {
actions_dist_useGestureCoreActions._defineProperty(
this,
'_timeouts',
new Map()
);
}
add(key, callback, ms = 140, ...args) {
this.remove(key);
this._timeouts.set(
key,
window.setTimeout(callback, ms, ...args)
);
}
remove(key) {
const timeout = this._timeouts.get(key);
if (timeout) window.clearTimeout(timeout);
}
clean() {
this._timeouts.forEach(
(timeout) => void window.clearTimeout(timeout)
);
this._timeouts.clear();
}
};
var Controller2 = class {
constructor(handlers) {
actions_dist_useGestureCoreActions._defineProperty(
this,
'gestures',
new Set()
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'_targetEventStore',
new EventStore(this)
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'gestureEventStores',
{}
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'gestureTimeoutStores',
{}
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'handlers',
{}
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'config',
{}
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'pointerIds',
new Set()
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'touchIds',
new Set()
);
actions_dist_useGestureCoreActions._defineProperty(
this,
'state',
{
shared: {
shiftKey: false,
metaKey: false,
ctrlKey: false,
altKey: false
}
}
);
resolveGestures(this, handlers);
}
setEventIds(event) {
if (actions_dist_useGestureCoreActions.isTouch(event)) {
this.touchIds = new Set(
actions_dist_useGestureCoreActions.touchIds(event)
);
return this.touchIds;
} else if ('pointerId' in event) {
if (
event.type === 'pointerup' ||
event.type === 'pointercancel'
)
this.pointerIds.delete(event.pointerId);
else if (event.type === 'pointerdown')
this.pointerIds.add(event.pointerId);
return this.pointerIds;
}
}
applyHandlers(handlers, nativeHandlers) {
this.handlers = handlers;
this.nativeHandlers = nativeHandlers;
}
applyConfig(config, gestureKey) {
this.config = parse2(config, gestureKey, this.config);
}
clean() {
this._targetEventStore.clean();
for (const key of this.gestures) {
this.gestureEventStores[key].clean();
this.gestureTimeoutStores[key].clean();
}
}
effect() {
if (this.config.shared.target) this.bind();
return () => this._targetEventStore.clean();
}
bind(...args) {
const sharedConfig = this.config.shared;
const props3 = {};
let target;
if (sharedConfig.target) {
target = sharedConfig.target();
if (!target) return;
}
if (sharedConfig.enabled) {
for (const gestureKey of this.gestures) {
const gestureConfig = this.config[gestureKey];
const bindFunction = bindToProps(
props3,
gestureConfig.eventOptions,
!!target
);
if (gestureConfig.enabled) {
const Engine =
actions_dist_useGestureCoreActions.EngineMap.get(
gestureKey
);
new Engine(this, args, gestureKey).bind(
bindFunction
);
}
}
const nativeBindFunction = bindToProps(
props3,
sharedConfig.eventOptions,
!!target
);
for (const eventKey in this.nativeHandlers) {
nativeBindFunction(
eventKey,
'',
(event) =>
this.nativeHandlers[eventKey](
actions_dist_useGestureCoreActions._objectSpread2(
actions_dist_useGestureCoreActions._objectSpread2(
{},
this.state.shared
),
{},
{ event, args }
)
),
void 0,
true
);
}
}
for (const handlerProp in props3) {
props3[handlerProp] =
actions_dist_useGestureCoreActions.chain(
...props3[handlerProp]
);
}
if (!target) return props3;
for (const handlerProp in props3) {
const { device, capture, passive } =
actions_dist_useGestureCoreActions.parseProp(
handlerProp
);
this._targetEventStore.add(
target,
device,
'',
props3[handlerProp],
{ capture, passive }
);
}
}
};
function setupGesture(ctrl, gestureKey) {
ctrl.gestures.add(gestureKey);
ctrl.gestureEventStores[gestureKey] = new EventStore(
ctrl,
gestureKey
);
ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();
}
function resolveGestures(ctrl, internalHandlers) {
if (internalHandlers.drag) setupGesture(ctrl, 'drag');
if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');
if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');
if (internalHandlers.move) setupGesture(ctrl, 'move');
if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');
if (internalHandlers.hover) setupGesture(ctrl, 'hover');
}
var bindToProps =
(props3, eventOptions, withPassiveOption) =>
(device, action, handler, options = {}, isNative = false) => {
var _options$capture, _options$passive;
const capture =
(_options$capture = options.capture) !== null &&
_options$capture !== void 0
? _options$capture
: eventOptions.capture;
const passive =
(_options$passive = options.passive) !== null &&
_options$passive !== void 0
? _options$passive
: eventOptions.passive;
let handlerProp = isNative
? device
: actions_dist_useGestureCoreActions.toHandlerProp(
device,
action,
capture
);
if (withPassiveOption && passive) handlerProp += 'Passive';
props3[handlerProp] = props3[handlerProp] || [];
props3[handlerProp].push(handler);
};
var RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;
function sortHandlers(_handlers) {
const native = {};
const handlers = {};
const actions = new Set();
for (let key in _handlers) {
if (RE_NOT_NATIVE.test(key)) {
actions.add(RegExp.lastMatch);
handlers[key] = _handlers[key];
} else {
native[key] = _handlers[key];
}
}
return [handlers, native, actions];
}
function registerGesture(
actions,
handlers,
handlerKey,
key,
internalHandlers,
config
) {
if (!actions.has(handlerKey)) return;
if (!actions_dist_useGestureCoreActions.EngineMap.has(key)) {
{
console.warn(`[@use-gesture]: You've created a custom handler that that uses the \`${key}\` gesture but isn't properly configured.
Please add \`${key}Action\` when creating your handler.`);
}
return;
}
const startKey = handlerKey + 'Start';
const endKey = handlerKey + 'End';
const fn = (state) => {
let memo = void 0;
if (state.first && startKey in handlers)
handlers[startKey](state);
if (handlerKey in handlers) memo = handlers[handlerKey](state);
if (state.last && endKey in handlers) handlers[endKey](state);
return memo;
};
internalHandlers[key] = fn;
config[key] = config[key] || {};
}
function parseMergedHandlers2(mergedHandlers, mergedConfig) {
const [handlers, nativeHandlers, actions] =
sortHandlers(mergedHandlers);
const internalHandlers = {};
registerGesture(
actions,
handlers,
'onDrag',
'drag',
internalHandlers,
mergedConfig
);
registerGesture(
actions,
handlers,
'onWheel',
'wheel',
internalHandlers,
mergedConfig
);
registerGesture(
actions,
handlers,
'onScroll',
'scroll',
internalHandlers,
mergedConfig
);
registerGesture(
actions,
handlers,
'onPinch',
'pinch',
internalHandlers,
mergedConfig
);
registerGesture(
actions,
handlers,
'onMove',
'move',
internalHandlers,
mergedConfig
);
registerGesture(
actions,
handlers,
'onHover',
'hover',
internalHandlers,
mergedConfig
);
return {
handlers: internalHandlers,
config: mergedConfig,
nativeHandlers
};
}
exports.Controller = Controller2;
exports.parseMergedHandlers = parseMergedHandlers2;
}
});
var require_use_gesture_core_cjs = __commonJS({
'node_modules/@use-gesture/core/dist/use-gesture-core.cjs.js'(
exports,
module
) {
{
module.exports = require_use_gesture_core_cjs_dev();
}
}
});
var require_use_gesture_core_utils_cjs_dev = __commonJS({
'node_modules/@use-gesture/core/utils/dist/use-gesture-core-utils.cjs.dev.js'(
exports
) {
Object.defineProperty(exports, '__esModule', { value: true });
var maths = require_maths_267f0992_cjs_dev();
exports.rubberbandIfOutOfBounds = maths.rubberbandIfOutOfBounds;
}
});
var require_use_gesture_core_utils_cjs = __commonJS({
'node_modules/@use-gesture/core/utils/dist/use-gesture-core-utils.cjs.js'(
exports,
module
) {
{
module.exports = require_use_gesture_core_utils_cjs_dev();
}
}
});
var require_use_gesture_core_types_cjs_dev = __commonJS({
'node_modules/@use-gesture/core/types/dist/use-gesture-core-types.cjs.dev.js'() {
}
});
var require_use_gesture_core_types_cjs = __commonJS({
'node_modules/@use-gesture/core/types/dist/use-gesture-core-types.cjs.js'(
exports,
module
) {
{
module.exports = require_use_gesture_core_types_cjs_dev();
}
}
});
var require_react_is_development = __commonJS({
'node_modules/react-is/cjs/react-is.development.js'(exports) {
{
(function () {
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = hasSymbol
? Symbol.for('react.element')
: 60103;
var REACT_PORTAL_TYPE = hasSymbol
? Symbol.for('react.portal')
: 60106;
var REACT_FRAGMENT_TYPE = hasSymbol
? Symbol.for('react.fragment')
: 60107;
var REACT_STRICT_MODE_TYPE = hasSymbol
? Symbol.for('react.strict_mode')
: 60108;
var REACT_PROFILER_TYPE = hasSymbol
? Symbol.for('react.profiler')
: 60114;
var REACT_PROVIDER_TYPE = hasSymbol
? Symbol.for('react.provider')
: 60109;
var REACT_CONTEXT_TYPE = hasSymbol
? Symbol.for('react.context')
: 60110;
var REACT_ASYNC_MODE_TYPE = hasSymbol
? Symbol.for('react.async_mode')
: 60111;
var REACT_CONCURRENT_MODE_TYPE = hasSymbol
? Symbol.for('react.concurrent_mode')
: 60111;
var REACT_FORWARD_REF_TYPE = hasSymbol
? Symbol.for('react.forward_ref')
: 60112;
var REACT_SUSPENSE_TYPE = hasSymbol
? Symbol.for('react.suspense')
: 60113;
var REACT_SUSPENSE_LIST_TYPE = hasSymbol
? Symbol.for('react.suspense_list')
: 60120;
var REACT_MEMO_TYPE = hasSymbol
? Symbol.for('react.memo')
: 60115;
var REACT_LAZY_TYPE = hasSymbol
? Symbol.for('react.lazy')
: 60116;
var REACT_BLOCK_TYPE = hasSymbol
? Symbol.for('react.block')
: 60121;
var REACT_FUNDAMENTAL_TYPE = hasSymbol
? Symbol.for('react.fundamental')
: 60117;
var REACT_RESPONDER_TYPE = hasSymbol
? Symbol.for('react.responder')
: 60118;
var REACT_SCOPE_TYPE = hasSymbol
? Symbol.for('react.scope')
: 60119;
function isValidElementType(type) {
return (
typeof type === 'string' ||
typeof type === 'function' ||
type === REACT_FRAGMENT_TYPE ||
type === REACT_CONCURRENT_MODE_TYPE ||
type === REACT_PROFILER_TYPE ||
type === REACT_STRICT_MODE_TYPE ||
type === REACT_SUSPENSE_TYPE ||
type === REACT_SUSPENSE_LIST_TYPE ||
(typeof type === 'object' &&
type !== null &&
(type.$$typeof === REACT_LAZY_TYPE ||
type.$$typeof === REACT_MEMO_TYPE ||
type.$$typeof === REACT_PROVIDER_TYPE ||
type.$$typeof === REACT_CONTEXT_TYPE ||
type.$$typeof === REACT_FORWARD_REF_TYPE ||
type.$$typeof === REACT_FUNDAMENTAL_TYPE ||
type.$$typeof === REACT_RESPONDER_TYPE ||
type.$$typeof === REACT_SCOPE_TYPE ||
type.$$typeof === REACT_BLOCK_TYPE))
);
}
function typeOf(object) {
if (typeof object === 'object' && object !== null) {
var $$typeof = object.$$typeof;
switch ($$typeof) {
case REACT_ELEMENT_TYPE:
var type = object.type;
switch (type) {
case REACT_ASYNC_MODE_TYPE:
case REACT_CONCURRENT_MODE_TYPE:
case REACT_FRAGMENT_TYPE:
case REACT_PROFILER_TYPE:
case REACT_STRICT_MODE_TYPE:
case REACT_SUSPENSE_TYPE:
return type;
default:
var $$typeofType =
type && type.$$typeof;
switch ($$typeofType) {
case REACT_CONTEXT_TYPE:
case REACT_FORWARD_REF_TYPE:
case REACT_LAZY_TYPE:
case REACT_MEMO_TYPE:
case REACT_PROVIDER_TYPE:
return $$typeofType;
default:
return $$typeof;
}
}
case REACT_PORTAL_TYPE:
return $$typeof;
}
}
return void 0;
}
var AsyncMode = REACT_ASYNC_MODE_TYPE;
var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment2 = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal2 = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false;
function isAsyncMode(object) {
{
if (!hasWarnedAboutDeprecatedIsAsyncMode) {
hasWarnedAboutDeprecatedIsAsyncMode = true;
console['warn'](
'The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.'
);
}
}
return (
isConcurrentMode(object) ||
typeOf(object) === REACT_ASYNC_MODE_TYPE
);
}
function isConcurrentMode(object) {
return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
}
function isContextConsumer(object) {
return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement2(object) {
return (
typeof object === 'object' &&
object !== null &&
object.$$typeof === REACT_ELEMENT_TYPE
);
}
function isForwardRef(object) {
return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
return typeOf(object) === REACT_SUSPENSE_TYPE;
}
exports.AsyncMode = AsyncMode;
exports.ConcurrentMode = ConcurrentMode;
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment2;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal2;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement2;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
})();
}
}
});
var require_react_is = __commonJS({
'node_modules/react-is/index.js'(exports, module) {
{
module.exports = require_react_is_development();
}
}
});
var require_object_assign = __commonJS({
'node_modules/object-assign/index.js'(exports, module) {
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
function toObject(val) {
if (val === null || val === void 0) {
throw new TypeError(
'Object.assign cannot be called with null or undefined'
);
}
return Object(val);
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false;
}
var test1 = new String('abc');
test1[5] = 'de';
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false;
}
var test2 = {};
for (var i4 = 0; i4 < 10; i4++) {
test2['_' + String.fromCharCode(i4)] = i4;
}
var order2 = Object.getOwnPropertyNames(test2).map(
function (n4) {
return test2[n4];
}
);
if (order2.join('') !== '0123456789') {
return false;
}
var test3 = {};
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter;
});
if (
Object.keys(Object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst'
) {
return false;
}
return true;
} catch (err) {
return false;
}
}
module.exports = shouldUseNative()
? Object.assign
: function (target, source) {
var from;
var to = toObject(target);
var symbols;
for (var s4 = 1; s4 < arguments.length; s4++) {
from = Object(arguments[s4]);
for (var key in from) {
if (hasOwnProperty.call(from, key)) {
to[key] = from[key];
}
}
if (getOwnPropertySymbols) {
symbols = getOwnPropertySymbols(from);
for (var i4 = 0; i4 < symbols.length; i4++) {
if (propIsEnumerable.call(from, symbols[i4])) {
to[symbols[i4]] = from[symbols[i4]];
}
}
}
}
return to;
};
}
});
var require_ReactPropTypesSecret = __commonJS({
'node_modules/prop-types/lib/ReactPropTypesSecret.js'(exports, module) {
var ReactPropTypesSecret =
'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
module.exports = ReactPropTypesSecret;
}
});
var require_has = __commonJS({
'node_modules/prop-types/lib/has.js'(exports, module) {
module.exports = Function.call.bind(Object.prototype.hasOwnProperty);
}
});
var require_checkPropTypes = __commonJS({
'node_modules/prop-types/checkPropTypes.js'(exports, module) {
var printWarning = function () {};
{
ReactPropTypesSecret = require_ReactPropTypesSecret();
loggedTypeFailures = {};
has2 = require_has();
printWarning = function (text) {
var message = 'Warning: ' + text;
if (typeof console !== 'undefined') {
console.error(message);
}
try {
throw new Error(message);
} catch (x3) {}
};
}
var ReactPropTypesSecret;
var loggedTypeFailures;
var has2;
function checkPropTypes(
typeSpecs,
values,
location2,
componentName,
getStack
) {
{
for (var typeSpecName in typeSpecs) {
if (has2(typeSpecs, typeSpecName)) {
var error;
try {
if (typeof typeSpecs[typeSpecName] !== 'function') {
var err = Error(
(componentName || 'React class') +
': ' +
location2 +
' type `' +
typeSpecName +
'` is invalid; it must be a function, usually from the `prop-types` package, but received `' +
typeof typeSpecs[typeSpecName] +
'`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'
);
err.name = 'Invariant Violation';
throw err;
}
error = typeSpecs[typeSpecName](
values,
typeSpecName,
componentName,
location2,
null,
ReactPropTypesSecret
);
} catch (ex) {
error = ex;
}
if (error && !(error instanceof Error)) {
printWarning(
(componentName || 'React class') +
': type specification of ' +
location2 +
' `' +
typeSpecName +
'` is invalid; the type checker function must return `null` or an `Error` but returned a ' +
typeof error +
'. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).'
);
}
if (
error instanceof Error &&
!(error.message in loggedTypeFailures)
) {
loggedTypeFailures[error.message] = true;
var stack = getStack ? getStack() : '';
printWarning(
'Failed ' +
location2 +
' type: ' +
error.message +
(stack != null ? stack : '')
);
}
}
}
}
}
checkPropTypes.resetWarningCache = function () {
{
loggedTypeFailures = {};
}
};
module.exports = checkPropTypes;
}
});
var require_factoryWithTypeCheckers = __commonJS({
'node_modules/prop-types/factoryWithTypeCheckers.js'(exports, module) {
var ReactIs = require_react_is();
var assign = require_object_assign();
var ReactPropTypesSecret = require_ReactPropTypesSecret();
var has2 = require_has();
var checkPropTypes = require_checkPropTypes();
var printWarning = function () {};
{
printWarning = function (text) {
var message = 'Warning: ' + text;
if (typeof console !== 'undefined') {
console.error(message);
}
try {
throw new Error(message);
} catch (x3) {}
};
}
function emptyFunctionThatReturnsNull() {
return null;
}
module.exports = function (isValidElement, throwOnDirectAccess) {
var ITERATOR_SYMBOL =
typeof Symbol === 'function' && Symbol.iterator;
var FAUX_ITERATOR_SYMBOL = '@@iterator';
function getIteratorFn(maybeIterable) {
var iteratorFn =
maybeIterable &&
((ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL]) ||
maybeIterable[FAUX_ITERATOR_SYMBOL]);
if (typeof iteratorFn === 'function') {
return iteratorFn;
}
}
var ANONYMOUS = '<<anonymous>>';
var ReactPropTypes = {
array: createPrimitiveTypeChecker('array'),
bigint: createPrimitiveTypeChecker('bigint'),
bool: createPrimitiveTypeChecker('boolean'),
func: createPrimitiveTypeChecker('function'),
number: createPrimitiveTypeChecker('number'),
object: createPrimitiveTypeChecker('object'),
string: createPrimitiveTypeChecker('string'),
symbol: createPrimitiveTypeChecker('symbol'),
any: createAnyTypeChecker(),
arrayOf: createArrayOfTypeChecker,
element: createElementTypeChecker(),
elementType: createElementTypeTypeChecker(),
instanceOf: createInstanceTypeChecker,
node: createNodeChecker(),
objectOf: createObjectOfTypeChecker,
oneOf: createEnumTypeChecker,
oneOfType: createUnionTypeChecker,
shape: createShapeTypeChecker,
exact: createStrictShapeTypeChecker
};
function is(x3, y4) {
if (x3 === y4) {
return x3 !== 0 || 1 / x3 === 1 / y4;
} else {
return x3 !== x3 && y4 !== y4;
}
}
function PropTypeError(message, data) {
this.message = message;
this.data = data && typeof data === 'object' ? data : {};
this.stack = '';
}
PropTypeError.prototype = Error.prototype;
function createChainableTypeChecker(validate) {
{
var manualPropTypeCallCache = {};
var manualPropTypeWarningCount = 0;
}
function checkType(
isRequired,
props3,
propName,
componentName,
location2,
propFullName,
secret
) {
componentName = componentName || ANONYMOUS;
propFullName = propFullName || propName;
if (secret !== ReactPropTypesSecret) {
if (throwOnDirectAccess) {
var err = new Error(
'Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types'
);
err.name = 'Invariant Violation';
throw err;
} else if (typeof console !== 'undefined') {
var cacheKey = componentName + ':' + propName;
if (
!manualPropTypeCallCache[cacheKey] &&
manualPropTypeWarningCount < 3
) {
printWarning(
'You are manually calling a React.PropTypes validation function for the `' +
propFullName +
'` prop on `' +
componentName +
'`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.'
);
manualPropTypeCallCache[cacheKey] = true;
manualPropTypeWarningCount++;
}
}
}
if (props3[propName] == null) {
if (isRequired) {
if (props3[propName] === null) {
return new PropTypeError(
'The ' +
location2 +
' `' +
propFullName +
'` is marked as required ' +
('in `' +
componentName +
'`, but its value is `null`.')
);
}
return new PropTypeError(
'The ' +
location2 +
' `' +
propFullName +
'` is marked as required in ' +
('`' +
componentName +
'`, but its value is `undefined`.')
);
}
return null;
} else {
return validate(
props3,
propName,
componentName,
location2,
propFullName
);
}
}
var chainedCheckType = checkType.bind(null, false);
chainedCheckType.isRequired = checkType.bind(null, true);
return chainedCheckType;
}
function createPrimitiveTypeChecker(expectedType) {
function validate(
props3,
propName,
componentName,
location2,
propFullName,
secret
) {
var propValue = props3[propName];
var propType = getPropType(propValue);
if (propType !== expectedType) {
var preciseType = getPreciseType(propValue);
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type ' +
('`' +
preciseType +
'` supplied to `' +
componentName +
'`, expected ') +
('`' + expectedType + '`.'),
{ expectedType }
);
}
return null;
}
return createChainableTypeChecker(validate);
}
function createAnyTypeChecker() {
return createChainableTypeChecker(emptyFunctionThatReturnsNull);
}
function createArrayOfTypeChecker(typeChecker) {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
if (typeof typeChecker !== 'function') {
return new PropTypeError(
'Property `' +
propFullName +
'` of component `' +
componentName +
'` has invalid PropType notation inside arrayOf.'
);
}
var propValue = props3[propName];
if (!Array.isArray(propValue)) {
var propType = getPropType(propValue);
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type ' +
('`' +
propType +
'` supplied to `' +
componentName +
'`, expected an array.')
);
}
for (var i4 = 0; i4 < propValue.length; i4++) {
var error = typeChecker(
propValue,
i4,
componentName,
location2,
propFullName + '[' + i4 + ']',
ReactPropTypesSecret
);
if (error instanceof Error) {
return error;
}
}
return null;
}
return createChainableTypeChecker(validate);
}
function createElementTypeChecker() {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
var propValue = props3[propName];
if (!isValidElement(propValue)) {
var propType = getPropType(propValue);
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type ' +
('`' +
propType +
'` supplied to `' +
componentName +
'`, expected a single ReactElement.')
);
}
return null;
}
return createChainableTypeChecker(validate);
}
function createElementTypeTypeChecker() {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
var propValue = props3[propName];
if (!ReactIs.isValidElementType(propValue)) {
var propType = getPropType(propValue);
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type ' +
('`' +
propType +
'` supplied to `' +
componentName +
'`, expected a single ReactElement type.')
);
}
return null;
}
return createChainableTypeChecker(validate);
}
function createInstanceTypeChecker(expectedClass) {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
if (!(props3[propName] instanceof expectedClass)) {
var expectedClassName = expectedClass.name || ANONYMOUS;
var actualClassName = getClassName(props3[propName]);
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type ' +
('`' +
actualClassName +
'` supplied to `' +
componentName +
'`, expected ') +
('instance of `' + expectedClassName + '`.')
);
}
return null;
}
return createChainableTypeChecker(validate);
}
function createEnumTypeChecker(expectedValues) {
if (!Array.isArray(expectedValues)) {
{
if (arguments.length > 1) {
printWarning(
'Invalid arguments supplied to oneOf, expected an array, got ' +
arguments.length +
' arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
);
} else {
printWarning(
'Invalid argument supplied to oneOf, expected an array.'
);
}
}
return emptyFunctionThatReturnsNull;
}
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
var propValue = props3[propName];
for (var i4 = 0; i4 < expectedValues.length; i4++) {
if (is(propValue, expectedValues[i4])) {
return null;
}
}
var valuesString = JSON.stringify(
expectedValues,
function replacer(key, value) {
var type = getPreciseType(value);
if (type === 'symbol') {
return String(value);
}
return value;
}
);
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of value `' +
String(propValue) +
'` ' +
('supplied to `' +
componentName +
'`, expected one of ' +
valuesString +
'.')
);
}
return createChainableTypeChecker(validate);
}
function createObjectOfTypeChecker(typeChecker) {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
if (typeof typeChecker !== 'function') {
return new PropTypeError(
'Property `' +
propFullName +
'` of component `' +
componentName +
'` has invalid PropType notation inside objectOf.'
);
}
var propValue = props3[propName];
var propType = getPropType(propValue);
if (propType !== 'object') {
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type ' +
('`' +
propType +
'` supplied to `' +
componentName +
'`, expected an object.')
);
}
for (var key in propValue) {
if (has2(propValue, key)) {
var error = typeChecker(
propValue,
key,
componentName,
location2,
propFullName + '.' + key,
ReactPropTypesSecret
);
if (error instanceof Error) {
return error;
}
}
}
return null;
}
return createChainableTypeChecker(validate);
}
function createUnionTypeChecker(arrayOfTypeCheckers) {
if (!Array.isArray(arrayOfTypeCheckers)) {
printWarning(
'Invalid argument supplied to oneOfType, expected an instance of array.'
)
;
return emptyFunctionThatReturnsNull;
}
for (var i4 = 0; i4 < arrayOfTypeCheckers.length; i4++) {
var checker = arrayOfTypeCheckers[i4];
if (typeof checker !== 'function') {
printWarning(
'Invalid argument supplied to oneOfType. Expected an array of check functions, but received ' +
getPostfixForTypeWarning(checker) +
' at index ' +
i4 +
'.'
);
return emptyFunctionThatReturnsNull;
}
}
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
var expectedTypes = [];
for (var i5 = 0; i5 < arrayOfTypeCheckers.length; i5++) {
var checker2 = arrayOfTypeCheckers[i5];
var checkerResult = checker2(
props3,
propName,
componentName,
location2,
propFullName,
ReactPropTypesSecret
);
if (checkerResult == null) {
return null;
}
if (
checkerResult.data &&
has2(checkerResult.data, 'expectedType')
) {
expectedTypes.push(checkerResult.data.expectedType);
}
}
var expectedTypesMessage =
expectedTypes.length > 0
? ', expected one of type [' +
expectedTypes.join(', ') +
']'
: '';
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` supplied to ' +
('`' +
componentName +
'`' +
expectedTypesMessage +
'.')
);
}
return createChainableTypeChecker(validate);
}
function createNodeChecker() {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
if (!isNode2(props3[propName])) {
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` supplied to ' +
('`' +
componentName +
'`, expected a ReactNode.')
);
}
return null;
}
return createChainableTypeChecker(validate);
}
function invalidValidatorError(
componentName,
location2,
propFullName,
key,
type
) {
return new PropTypeError(
(componentName || 'React class') +
': ' +
location2 +
' type `' +
propFullName +
'.' +
key +
'` is invalid; it must be a function, usually from the `prop-types` package, but received `' +
type +
'`.'
);
}
function createShapeTypeChecker(shapeTypes) {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
var propValue = props3[propName];
var propType = getPropType(propValue);
if (propType !== 'object') {
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type `' +
propType +
'` ' +
('supplied to `' +
componentName +
'`, expected `object`.')
);
}
for (var key in shapeTypes) {
var checker = shapeTypes[key];
if (typeof checker !== 'function') {
return invalidValidatorError(
componentName,
location2,
propFullName,
key,
getPreciseType(checker)
);
}
var error = checker(
propValue,
key,
componentName,
location2,
propFullName + '.' + key,
ReactPropTypesSecret
);
if (error) {
return error;
}
}
return null;
}
return createChainableTypeChecker(validate);
}
function createStrictShapeTypeChecker(shapeTypes) {
function validate(
props3,
propName,
componentName,
location2,
propFullName
) {
var propValue = props3[propName];
var propType = getPropType(propValue);
if (propType !== 'object') {
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` of type `' +
propType +
'` ' +
('supplied to `' +
componentName +
'`, expected `object`.')
);
}
var allKeys = assign({}, props3[propName], shapeTypes);
for (var key in allKeys) {
var checker = shapeTypes[key];
if (
has2(shapeTypes, key) &&
typeof checker !== 'function'
) {
return invalidValidatorError(
componentName,
location2,
propFullName,
key,
getPreciseType(checker)
);
}
if (!checker) {
return new PropTypeError(
'Invalid ' +
location2 +
' `' +
propFullName +
'` key `' +
key +
'` supplied to `' +
componentName +
'`.\nBad object: ' +
JSON.stringify(
props3[propName],
null,
' '
) +
'\nValid keys: ' +
JSON.stringify(
Object.keys(shapeTypes),
null,
' '
)
);
}
var error = checker(
propValue,
key,
componentName,
location2,
propFullName + '.' + key,
ReactPropTypesSecret
);
if (error) {
return error;
}
}
return null;
}
return createChainableTypeChecker(validate);
}
function isNode2(propValue) {
switch (typeof propValue) {
case 'number':
case 'string':
case 'undefined':
return true;
case 'boolean':
return !propValue;
case 'object':
if (Array.isArray(propValue)) {
return propValue.every(isNode2);
}
if (propValue === null || isValidElement(propValue)) {
return true;
}
var iteratorFn = getIteratorFn(propValue);
if (iteratorFn) {
var iterator = iteratorFn.call(propValue);
var step;
if (iteratorFn !== propValue.entries) {
while (!(step = iterator.next()).done) {
if (!isNode2(step.value)) {
return false;
}
}
} else {
while (!(step = iterator.next()).done) {
var entry = step.value;
if (entry) {
if (!isNode2(entry[1])) {
return false;
}
}
}
}
} else {
return false;
}
return true;
default:
return false;
}
}
function isSymbol(propType, propValue) {
if (propType === 'symbol') {
return true;
}
if (!propValue) {
return false;
}
if (propValue['@@toStringTag'] === 'Symbol') {
return true;
}
if (
typeof Symbol === 'function' &&
propValue instanceof Symbol
) {
return true;
}
return false;
}
function getPropType(propValue) {
var propType = typeof propValue;
if (Array.isArray(propValue)) {
return 'array';
}
if (propValue instanceof RegExp) {
return 'object';
}
if (isSymbol(propType, propValue)) {
return 'symbol';
}
return propType;
}
function getPreciseType(propValue) {
if (typeof propValue === 'undefined' || propValue === null) {
return '' + propValue;
}
var propType = getPropType(propValue);
if (propType === 'object') {
if (propValue instanceof Date) {
return 'date';
} else if (propValue instanceof RegExp) {
return 'regexp';
}
}
return propType;
}
function getPostfixForTypeWarning(value) {
var type = getPreciseType(value);
switch (type) {
case 'array':
case 'object':
return 'an ' + type;
case 'boolean':
case 'date':
case 'regexp':
return 'a ' + type;
default:
return type;
}
}
function getClassName(propValue) {
if (!propValue.constructor || !propValue.constructor.name) {
return ANONYMOUS;
}
return propValue.constructor.name;
}
ReactPropTypes.checkPropTypes = checkPropTypes;
ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
ReactPropTypes.PropTypes = ReactPropTypes;
return ReactPropTypes;
};
}
});
var require_prop_types = __commonJS({
'node_modules/prop-types/index.js'(exports, module) {
{
ReactIs = require_react_is();
throwOnDirectAccess = true;
module.exports = require_factoryWithTypeCheckers()(
ReactIs.isElement,
throwOnDirectAccess
);
}
var ReactIs;
var throwOnDirectAccess;
}
});
var require_es = __commonJS({
'node_modules/attr-accept/dist/es/index.js'(exports) {
exports.__esModule = true;
exports.default = function (file, acceptedFiles) {
if (file && acceptedFiles) {
var acceptedFilesArray = Array.isArray(acceptedFiles)
? acceptedFiles
: acceptedFiles.split(',');
if (acceptedFilesArray.length === 0) {
return true;
}
var fileName = file.name || '';
var mimeType = (file.type || '').toLowerCase();
var baseMimeType = mimeType.replace(/\/.*$/, '');
return acceptedFilesArray.some(function (type) {
var validType = type.trim().toLowerCase();
if (validType.charAt(0) === '.') {
return fileName.toLowerCase().endsWith(validType);
} else if (validType.endsWith('/*')) {
return baseMimeType === validType.replace(/\/.*$/, '');
}
return mimeType === validType;
});
}
return true;
};
}
});
var require_isobject = __commonJS({
'node_modules/isobject/index.js'(exports, module) {
module.exports = function isObject3(val) {
return (
val != null &&
typeof val === 'object' &&
Array.isArray(val) === false
);
};
}
});
var require_is_plain_object = __commonJS({
'node_modules/is-plain-object/index.js'(exports, module) {
var isObject3 = require_isobject();
function isObjectObject(o4) {
return (
isObject3(o4) === true &&
Object.prototype.toString.call(o4) === '[object Object]'
);
}
module.exports = function isPlainObject(o4) {
var ctor, prot;
if (isObjectObject(o4) === false) return false;
ctor = o4.constructor;
if (typeof ctor !== 'function') return false;
prot = ctor.prototype;
if (isObjectObject(prot) === false) return false;
if (prot.hasOwnProperty('isPrototypeOf') === false) {
return false;
}
return true;
};
}
});
var require_is_extendable = __commonJS({
'node_modules/is-extendable/index.js'(exports, module) {
var isPlainObject = require_is_plain_object();
module.exports = function isExtendable(val) {
return (
isPlainObject(val) ||
typeof val === 'function' ||
Array.isArray(val)
);
};
}
});
var require_for_in = __commonJS({
'node_modules/for-in/index.js'(exports, module) {
module.exports = function forIn(obj, fn, thisArg) {
for (var key in obj) {
if (fn.call(thisArg, obj[key], key, obj) === false) {
break;
}
}
};
}
});
var require_mixin_deep = __commonJS({
'node_modules/mixin-deep/index.js'(exports, module) {
var isExtendable = require_is_extendable();
var forIn = require_for_in();
function mixinDeep(target, objects) {
var len = arguments.length,
i4 = 0;
while (++i4 < len) {
var obj = arguments[i4];
if (isObject3(obj)) {
forIn(obj, copy, target);
}
}
return target;
}
function copy(val, key) {
if (!isValidKey(key)) {
return;
}
var obj = this[key];
if (isObject3(val) && isObject3(obj)) {
mixinDeep(obj, val);
} else {
this[key] = val;
}
}
function isObject3(val) {
return isExtendable(val) && !Array.isArray(val);
}
function isValidKey(key) {
return (
key !== '__proto__' &&
key !== 'constructor' &&
key !== 'prototype'
);
}
module.exports = mixinDeep;
}
});
var require_get_value = __commonJS({
'node_modules/get-value/index.js'(exports, module) {
module.exports = function (obj, prop, a4, b4, c4) {
if (!isObject3(obj) || !prop) {
return obj;
}
prop = toString(prop);
if (a4) prop += '.' + toString(a4);
if (b4) prop += '.' + toString(b4);
if (c4) prop += '.' + toString(c4);
if (prop in obj) {
return obj[prop];
}
var segs = prop.split('.');
var len = segs.length;
var i4 = -1;
while (obj && ++i4 < len) {
var key = segs[i4];
while (key[key.length - 1] === '\\') {
key = key.slice(0, -1) + '.' + segs[++i4];
}
obj = obj[key];
}
return obj;
};
function isObject3(val) {
return (
val !== null &&
(typeof val === 'object' || typeof val === 'function')
);
}
function toString(val) {
if (!val) return '';
if (Array.isArray(val)) {
return val.join('.');
}
return val;
}
}
});
var require_extend_shallow = __commonJS({
'node_modules/extend-shallow/index.js'(exports, module) {
var isObject3 = require_is_extendable();
module.exports = function extend(o4) {
if (!isObject3(o4)) {
o4 = {};
}
var len = arguments.length;
for (var i4 = 1; i4 < len; i4++) {
var obj = arguments[i4];
if (isObject3(obj)) {
assign(o4, obj);
}
}
return o4;
};
function assign(a4, b4) {
for (var key in b4) {
if (hasOwn(b4, key)) {
a4[key] = b4[key];
}
}
}
function hasOwn(obj, key) {
return Object.prototype.hasOwnProperty.call(obj, key);
}
}
});
var require_split_string = __commonJS({
'node_modules/split-string/index.js'(exports, module) {
var extend = require_extend_shallow();
module.exports = function (str, options, fn) {
if (typeof str !== 'string') {
throw new TypeError('expected a string');
}
if (typeof options === 'function') {
fn = options;
options = null;
}
if (typeof options === 'string') {
options = { sep: options };
}
var opts = extend({ sep: '.' }, options);
var quotes = opts.quotes || ['"', "'", '`'];
var brackets;
if (opts.brackets === true) {
brackets = { '<': '>', '(': ')', '[': ']', '{': '}' };
} else if (opts.brackets) {
brackets = opts.brackets;
}
var tokens = [];
var stack = [];
var arr = [''];
var sep = opts.sep;
var len = str.length;
var idx = -1;
var closeIdx;
function expected() {
if (brackets && stack.length) {
return brackets[stack[stack.length - 1]];
}
}
while (++idx < len) {
var ch = str[idx];
var next = str[idx + 1];
var tok = { val: ch, idx, arr, str };
tokens.push(tok);
if (ch === '\\') {
tok.val =
keepEscaping(opts, str, idx) === true
? ch + next
: next;
tok.escaped = true;
if (typeof fn === 'function') {
fn(tok);
}
arr[arr.length - 1] += tok.val;
idx++;
continue;
}
if (brackets && brackets[ch]) {
stack.push(ch);
var e4 = expected();
var i4 = idx + 1;
if (str.indexOf(e4, i4 + 1) !== -1) {
while (stack.length && i4 < len) {
var s4 = str[++i4];
if (s4 === '\\') {
s4++;
continue;
}
if (quotes.indexOf(s4) !== -1) {
i4 = getClosingQuote(str, s4, i4 + 1);
continue;
}
e4 = expected();
if (
stack.length &&
str.indexOf(e4, i4 + 1) === -1
) {
break;
}
if (brackets[s4]) {
stack.push(s4);
continue;
}
if (e4 === s4) {
stack.pop();
}
}
}
closeIdx = i4;
if (closeIdx === -1) {
arr[arr.length - 1] += ch;
continue;
}
ch = str.slice(idx, closeIdx + 1);
tok.val = ch;
tok.idx = idx = closeIdx;
}
if (quotes.indexOf(ch) !== -1) {
closeIdx = getClosingQuote(str, ch, idx + 1);
if (closeIdx === -1) {
arr[arr.length - 1] += ch;
continue;
}
if (keepQuotes(ch, opts) === true) {
ch = str.slice(idx, closeIdx + 1);
} else {
ch = str.slice(idx + 1, closeIdx);
}
tok.val = ch;
tok.idx = idx = closeIdx;
}
if (typeof fn === 'function') {
fn(tok, tokens);
ch = tok.val;
idx = tok.idx;
}
if (tok.val === sep && tok.split !== false) {
arr.push('');
continue;
}
arr[arr.length - 1] += tok.val;
}
return arr;
};
function getClosingQuote(str, ch, i4, brackets) {
var idx = str.indexOf(ch, i4);
if (str.charAt(idx - 1) === '\\') {
return getClosingQuote(str, ch, idx + 1);
}
return idx;
}
function keepQuotes(ch, opts) {
if (opts.keepDoubleQuotes === true && ch === '"') return true;
if (opts.keepSingleQuotes === true && ch === "'") return true;
return opts.keepQuotes;
}
function keepEscaping(opts, str, idx) {
if (typeof opts.keepEscaping === 'function') {
return opts.keepEscaping(str, idx);
}
return opts.keepEscaping === true || str[idx + 1] === '\\';
}
}
});
var require_set_value = __commonJS({
'node_modules/set-value/index.js'(exports, module) {
var split2 = require_split_string();
var extend = require_extend_shallow();
var isPlainObject = require_is_plain_object();
var isObject3 = require_is_extendable();
module.exports = function (obj, prop, val) {
if (!isObject3(obj)) {
return obj;
}
if (Array.isArray(prop)) {
prop = [].concat.apply([], prop).join('.');
}
if (typeof prop !== 'string') {
return obj;
}
var keys = split2(prop, { sep: '.', brackets: true }).filter(
isValidKey
);
var len = keys.length;
var idx = -1;
var current = obj;
while (++idx < len) {
var key = keys[idx];
if (idx !== len - 1) {
if (!isObject3(current[key])) {
current[key] = {};
}
current = current[key];
continue;
}
if (isPlainObject(current[key]) && isPlainObject(val)) {
current[key] = extend({}, current[key], val);
} else {
current[key] = val;
}
}
return obj;
};
function isValidKey(key) {
return (
key !== '__proto__' &&
key !== 'constructor' &&
key !== 'prototype'
);
}
}
});
var require_merge_value = __commonJS({
'node_modules/merge-value/index.js'(exports, module) {
var isObject3 = require_is_extendable();
var merge2 = require_mixin_deep();
var get = require_get_value();
var set = require_set_value();
module.exports = function mergeValue(obj, prop, value) {
if (!isObject3(obj)) {
throw new TypeError('expected an object');
}
if (typeof prop !== 'string' || value == null) {
return merge2.apply(null, arguments);
}
if (typeof value === 'string') {
set(obj, prop, value);
return obj;
}
var current = get(obj, prop);
if (isObject3(value) && isObject3(current)) {
value = merge2({}, current, value);
}
set(obj, prop, value);
return obj;
};
}
});
function _extends() {
return (
(_extends = Object.assign
? Object.assign.bind()
: function (n4) {
for (var e4 = 1; e4 < arguments.length; e4++) {
var t4 = arguments[e4];
for (var r4 in t4)
({}).hasOwnProperty.call(t4, r4) && (n4[r4] = t4[r4]);
}
return n4;
}),
_extends.apply(null, arguments)
);
}
function $6ed0406888f73fc4$var$setRef(ref, value) {
if (typeof ref === 'function') ref(value);
else if (ref !== null && ref !== void 0) ref.current = value;
}
function $6ed0406888f73fc4$export$43e446d32b3d21af(...refs) {
return (node) =>
refs.forEach((ref) => $6ed0406888f73fc4$var$setRef(ref, node));
}
function $6ed0406888f73fc4$export$c7b2cbe3552a0d05(...refs) {
return React5.useCallback(
$6ed0406888f73fc4$export$43e446d32b3d21af(...refs),
refs
);
}
var $5e63c961fc1ce211$export$8c6ed5c666ac1360 = React5.forwardRef(
(props3, forwardedRef) => {
const { children, ...slotProps } = props3;
const childrenArray = React5.Children.toArray(children);
const slottable = childrenArray.find($5e63c961fc1ce211$var$isSlottable);
if (slottable) {
const newElement = slottable.props.children;
const newChildren = childrenArray.map((child) => {
if (child === slottable) {
if (React5.Children.count(newElement) > 1)
return React5.Children.only(null);
return React5.isValidElement(newElement)
? newElement.props.children
: null;
} else return child;
});
return React5.createElement(
$5e63c961fc1ce211$var$SlotClone,
_extends({}, slotProps, { ref: forwardedRef }),
React5.isValidElement(newElement)
? React5.cloneElement(newElement, void 0, newChildren)
: null
);
}
return React5.createElement(
$5e63c961fc1ce211$var$SlotClone,
_extends({}, slotProps, { ref: forwardedRef }),
children
);
}
);
$5e63c961fc1ce211$export$8c6ed5c666ac1360.displayName = 'Slot';
var $5e63c961fc1ce211$var$SlotClone = React5.forwardRef(
(props3, forwardedRef) => {
const { children, ...slotProps } = props3;
if (React5.isValidElement(children))
return React5.cloneElement(children, {
...$5e63c961fc1ce211$var$mergeProps(slotProps, children.props),
ref: $6ed0406888f73fc4$export$43e446d32b3d21af(
forwardedRef,
children.ref
)
});
return React5.Children.count(children) > 1
? React5.Children.only(null)
: null;
}
);
$5e63c961fc1ce211$var$SlotClone.displayName = 'SlotClone';
var $5e63c961fc1ce211$export$d9f1ccf0bdb05d45 = ({ children }) => {
return React5.createElement(React5.Fragment, null, children);
};
function $5e63c961fc1ce211$var$isSlottable(child) {
return (
React5.isValidElement(child) &&
child.type === $5e63c961fc1ce211$export$d9f1ccf0bdb05d45
);
}
function $5e63c961fc1ce211$var$mergeProps(slotProps, childProps) {
const overrideProps = { ...childProps };
for (const propName in childProps) {
const slotPropValue = slotProps[propName];
const childPropValue = childProps[propName];
const isHandler = /^on[A-Z]/.test(propName);
if (isHandler) {
if (slotPropValue && childPropValue)
overrideProps[propName] = (...args) => {
childPropValue(...args);
slotPropValue(...args);
};
else if (slotPropValue) overrideProps[propName] = slotPropValue;
} else if (propName === 'style')
overrideProps[propName] = { ...slotPropValue, ...childPropValue };
else if (propName === 'className')
overrideProps[propName] = [slotPropValue, childPropValue]
.filter(Boolean)
.join(' ');
}
return { ...slotProps, ...overrideProps };
}
var $8927f6f2acc4f386$var$NODES = [
'a',
'button',
'div',
'form',
'h2',
'h3',
'img',
'input',
'label',
'li',
'nav',
'ol',
'p',
'span',
'svg',
'ul'
];
var $8927f6f2acc4f386$export$250ffa63cdc0d034 =
$8927f6f2acc4f386$var$NODES.reduce((primitive, node) => {
const Node = React5.forwardRef((props3, forwardedRef) => {
const { asChild, ...primitiveProps } = props3;
const Comp = asChild
? $5e63c961fc1ce211$export$8c6ed5c666ac1360
: node;
React5.useEffect(() => {
window[Symbol.for('radix-ui')] = true;
}, []);
return React5.createElement(
Comp,
_extends({}, primitiveProps, { ref: forwardedRef })
);
});
Node.displayName = `Primitive.${node}`;
return { ...primitive, [node]: Node };
}, {});
function $8927f6f2acc4f386$export$6d1a0317bde7de7f(target, event) {
if (target) $7SXl2$reactdom.flushSync(() => target.dispatchEvent(event));
}
var $f1701beae083dbae$export$602eac185826482c = React5.forwardRef(
(props3, forwardedRef) => {
var _globalThis$document;
const {
container = globalThis === null || globalThis === void 0
? void 0
: (_globalThis$document = globalThis.document) === null ||
_globalThis$document === void 0
? void 0
: _globalThis$document.body,
...portalProps
} = props3;
return container
? $7SXl2$reactdom.createPortal(
React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.div,
_extends({}, portalProps, { ref: forwardedRef })
),
container
)
: null;
}
);
var $f1701beae083dbae$export$be92b6f5f03c0fe9 =
$f1701beae083dbae$export$602eac185826482c;
var has = Object.prototype.hasOwnProperty;
function dequal(foo, bar) {
var ctor, len;
if (foo === bar) return true;
if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
if (ctor === Date) return foo.getTime() === bar.getTime();
if (ctor === RegExp) return foo.toString() === bar.toString();
if (ctor === Array) {
if ((len = foo.length) === bar.length) {
while (len-- && dequal(foo[len], bar[len]));
}
return len === -1;
}
if (!ctor || typeof foo === 'object') {
len = 0;
for (ctor in foo) {
if (has.call(foo, ctor) && ++len && !has.call(bar, ctor))
return false;
if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor]))
return false;
}
return Object.keys(bar).length === len;
}
}
return foo !== foo && bar !== bar;
}
function shallow(objA, objB) {
if (Object.is(objA, objB)) {
return true;
}
if (
typeof objA !== 'object' ||
objA === null ||
typeof objB !== 'object' ||
objB === null
) {
return false;
}
const keysA = Object.keys(objA);
if (keysA.length !== Object.keys(objB).length) {
return false;
}
for (let i4 = 0; i4 < keysA.length; i4++) {
if (
!Object.prototype.hasOwnProperty.call(objB, keysA[i4]) ||
!Object.is(objA[keysA[i4]], objB[keysA[i4]])
) {
return false;
}
}
return true;
}
var Rule = function Rule2(name, fn, args, modifiers) {
this.name = name;
this.fn = fn;
this.args = args;
this.modifiers = modifiers;
};
Rule.prototype._test = function _test(value) {
var fn = this.fn;
try {
testAux(this.modifiers.slice(), fn, this)(value);
} catch (ex) {
fn = function () {
return false;
};
}
try {
return testAux(this.modifiers.slice(), fn, this)(value);
} catch (ex$1) {
return false;
}
};
Rule.prototype._check = function _check(value) {
try {
testAux(this.modifiers.slice(), this.fn, this)(value);
} catch (ex) {
if (
testAux(
this.modifiers.slice(),
function (it) {
return it;
},
this
)(false)
) {
return;
}
}
if (!testAux(this.modifiers.slice(), this.fn, this)(value)) {
throw null;
}
};
Rule.prototype._testAsync = function _testAsync(value) {
var this$1$1 = this;
return new Promise(function (resolve, reject) {
testAsyncAux(
this$1$1.modifiers.slice(),
this$1$1.fn,
this$1$1
)(value)
.then(function (valid) {
if (valid) {
resolve(value);
} else {
reject(null);
}
})
.catch(function (ex) {
return reject(ex);
});
});
};
function pickFn(fn, variant) {
if (variant === void 0) variant = 'simple';
return typeof fn === 'object' ? fn[variant] : fn;
}
function testAux(modifiers, fn, rule) {
if (modifiers.length) {
var modifier = modifiers.shift();
var nextFn = testAux(modifiers, fn, rule);
return modifier.perform(nextFn, rule);
} else {
return pickFn(fn);
}
}
function testAsyncAux(modifiers, fn, rule) {
if (modifiers.length) {
var modifier = modifiers.shift();
var nextFn = testAsyncAux(modifiers, fn, rule);
return modifier.performAsync(nextFn, rule);
} else {
return function (value) {
return Promise.resolve(pickFn(fn, 'async')(value));
};
}
}
var Modifier = function Modifier2(name, perform, performAsync) {
this.name = name;
this.perform = perform;
this.performAsync = performAsync;
};
var ValidationError = (function (Error2) {
function ValidationError2(rule, value, cause, target) {
var remaining = [],
len = arguments.length - 4;
while (len-- > 0) remaining[len] = arguments[len + 4];
Error2.call(this, remaining);
if (Error2.captureStackTrace) {
Error2.captureStackTrace(this, ValidationError2);
}
this.rule = rule;
this.value = value;
this.cause = cause;
this.target = target;
}
if (Error2) ValidationError2.__proto__ = Error2;
ValidationError2.prototype = Object.create(Error2 && Error2.prototype);
ValidationError2.prototype.constructor = ValidationError2;
return ValidationError2;
})(Error);
var Context = function Context2(chain, nextRuleModifiers) {
if (chain === void 0) chain = [];
if (nextRuleModifiers === void 0) nextRuleModifiers = [];
this.chain = chain;
this.nextRuleModifiers = nextRuleModifiers;
};
Context.prototype._applyRule = function _applyRule(ruleFn, name) {
var this$1$1 = this;
return function () {
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
this$1$1.chain.push(
new Rule(
name,
ruleFn.apply(this$1$1, args),
args,
this$1$1.nextRuleModifiers
)
);
this$1$1.nextRuleModifiers = [];
return this$1$1;
};
};
Context.prototype._applyModifier = function _applyModifier(modifier, name) {
this.nextRuleModifiers.push(
new Modifier(name, modifier.simple, modifier.async)
);
return this;
};
Context.prototype._clone = function _clone() {
return new Context(this.chain.slice(), this.nextRuleModifiers.slice());
};
Context.prototype.test = function test(value) {
return this.chain.every(function (rule) {
return rule._test(value);
});
};
Context.prototype.testAll = function testAll(value) {
var err = [];
this.chain.forEach(function (rule) {
try {
rule._check(value);
} catch (ex) {
err.push(new ValidationError(rule, value, ex));
}
});
return err;
};
Context.prototype.check = function check(value) {
this.chain.forEach(function (rule) {
try {
rule._check(value);
} catch (ex) {
throw new ValidationError(rule, value, ex);
}
});
};
Context.prototype.testAsync = function testAsync(value) {
var this$1$1 = this;
return new Promise(function (resolve, reject) {
executeAsyncRules(value, this$1$1.chain.slice(), resolve, reject);
});
};
function executeAsyncRules(value, rules, resolve, reject) {
if (rules.length) {
var rule = rules.shift();
rule._testAsync(value).then(
function () {
executeAsyncRules(value, rules, resolve, reject);
},
function (cause) {
reject(new ValidationError(rule, value, cause));
}
);
} else {
resolve(value);
}
}
var consideredEmpty = function (value, considerTrimmedEmptyString) {
if (
considerTrimmedEmptyString &&
typeof value === 'string' &&
value.trim().length === 0
) {
return true;
}
return value === void 0 || value === null;
};
function optional(validation, considerTrimmedEmptyString) {
if (considerTrimmedEmptyString === void 0)
considerTrimmedEmptyString = false;
return {
simple: function (value) {
return (
consideredEmpty(value, considerTrimmedEmptyString) ||
validation.check(value) === void 0
);
},
async: function (value) {
return (
consideredEmpty(value, considerTrimmedEmptyString) ||
validation.testAsync(value)
);
}
};
}
function v8n() {
return typeof Proxy !== 'undefined'
? proxyContext(new Context())
: proxylessContext(new Context());
}
var customRules = {};
v8n.extend = function (newRules) {
Object.assign(customRules, newRules);
};
v8n.clearCustomRules = function () {
customRules = {};
};
function proxyContext(context) {
return new Proxy(context, {
get: function get(obj, prop) {
if (prop in obj) {
return obj[prop];
}
var newContext = proxyContext(context._clone());
if (prop in availableModifiers) {
return newContext._applyModifier(
availableModifiers[prop],
prop
);
}
if (prop in customRules) {
return newContext._applyRule(customRules[prop], prop);
}
if (prop in availableRules) {
return newContext._applyRule(availableRules[prop], prop);
}
}
});
}
function proxylessContext(context) {
var addRuleSet = function (ruleSet, targetContext) {
Object.keys(ruleSet).forEach(function (prop) {
targetContext[prop] = function () {
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
var newContext = proxylessContext(targetContext._clone());
var contextWithRuleApplied = newContext
._applyRule(ruleSet[prop], prop)
.apply(void 0, args);
return contextWithRuleApplied;
};
});
return targetContext;
};
var contextWithAvailableRules = addRuleSet(availableRules, context);
var contextWithAllRules = addRuleSet(
customRules,
contextWithAvailableRules
);
Object.keys(availableModifiers).forEach(function (prop) {
Object.defineProperty(contextWithAllRules, prop, {
get: function () {
var newContext = proxylessContext(contextWithAllRules._clone());
return newContext._applyModifier(
availableModifiers[prop],
prop
);
}
});
});
return contextWithAllRules;
}
var availableModifiers = {
not: {
simple: function (fn) {
return function (value) {
return !fn(value);
};
},
async: function (fn) {
return function (value) {
return Promise.resolve(fn(value))
.then(function (result) {
return !result;
})
.catch(function () {
return true;
});
};
}
},
some: {
simple: function (fn) {
return function (value) {
return split(value).some(function (item) {
try {
return fn(item);
} catch (ex) {
return false;
}
});
};
},
async: function (fn) {
return function (value) {
return Promise.all(
split(value).map(function (item) {
try {
return fn(item).catch(function () {
return false;
});
} catch (ex) {
return false;
}
})
).then(function (result) {
return result.some(Boolean);
});
};
}
},
every: {
simple: function (fn) {
return function (value) {
return value !== false && split(value).every(fn);
};
},
async: function (fn) {
return function (value) {
return Promise.all(split(value).map(fn)).then(
function (result) {
return result.every(Boolean);
}
);
};
}
},
strict: {
simple: function (fn, rule) {
return function (value) {
if (isSchemaRule(rule) && value && typeof value === 'object') {
return (
Object.keys(rule.args[0]).length ===
Object.keys(value).length && fn(value)
);
}
return fn(value);
};
},
async: function (fn, rule) {
return function (value) {
return Promise.resolve(fn(value))
.then(function (result) {
if (
isSchemaRule(rule) &&
value &&
typeof value === 'object'
) {
return (
Object.keys(rule.args[0]).length ===
Object.keys(value).length && result
);
}
return result;
})
.catch(function () {
return false;
});
};
}
}
};
function isSchemaRule(rule) {
return (
rule &&
rule.name === 'schema' &&
rule.args.length > 0 &&
typeof rule.args[0] === 'object'
);
}
function split(value) {
if (typeof value === 'string') {
return value.split('');
}
return value;
}
var availableRules = {
equal: function (expected) {
return function (value) {
return value == expected;
};
},
exact: function (expected) {
return function (value) {
return value === expected;
};
},
number: function (allowInfinite) {
if (allowInfinite === void 0) allowInfinite = true;
return function (value) {
return (
typeof value === 'number' && (allowInfinite || isFinite(value))
);
};
},
integer: function () {
return function (value) {
var isInteger = Number.isInteger || isIntegerPolyfill;
return isInteger(value);
};
},
numeric: function () {
return function (value) {
return !isNaN(parseFloat(value)) && isFinite(value);
};
},
string: function () {
return testType('string');
},
boolean: function () {
return testType('boolean');
},
undefined: function () {
return testType('undefined');
},
null: function () {
return testType('null');
},
array: function () {
return testType('array');
},
object: function () {
return testType('object');
},
instanceOf: function (instance) {
return function (value) {
return value instanceof instance;
};
},
pattern: function (expected) {
return function (value) {
return expected.test(value);
};
},
lowercase: function () {
return function (value) {
return (
typeof value === 'boolean' ||
(value === value.toLowerCase() && value.trim() !== '')
);
};
},
uppercase: function () {
return function (value) {
return value === value.toUpperCase() && value.trim() !== '';
};
},
vowel: function () {
return function (value) {
return /^[aeiou]+$/i.test(value);
};
},
consonant: function () {
return function (value) {
return /^(?=[^aeiou])([a-z]+)$/i.test(value);
};
},
first: function (expected) {
return function (value) {
return value[0] == expected;
};
},
last: function (expected) {
return function (value) {
return value[value.length - 1] == expected;
};
},
empty: function () {
return function (value) {
return value.length === 0;
};
},
length: function (min3, max3) {
return function (value) {
return value.length >= min3 && value.length <= (max3 || min3);
};
},
minLength: function (min3) {
return function (value) {
return value.length >= min3;
};
},
maxLength: function (max3) {
return function (value) {
return value.length <= max3;
};
},
negative: function () {
return function (value) {
return value < 0;
};
},
positive: function () {
return function (value) {
return value >= 0;
};
},
between: function (a4, b4) {
return function (value) {
return value >= a4 && value <= b4;
};
},
range: function (a4, b4) {
return function (value) {
return value >= a4 && value <= b4;
};
},
lessThan: function (n4) {
return function (value) {
return value < n4;
};
},
lessThanOrEqual: function (n4) {
return function (value) {
return value <= n4;
};
},
greaterThan: function (n4) {
return function (value) {
return value > n4;
};
},
greaterThanOrEqual: function (n4) {
return function (value) {
return value >= n4;
};
},
even: function () {
return function (value) {
return value % 2 === 0;
};
},
odd: function () {
return function (value) {
return value % 2 !== 0;
};
},
includes: function (expected) {
return function (value) {
return ~value.indexOf(expected);
};
},
schema: function (schema3) {
return testSchema(schema3);
},
passesAnyOf: function () {
var validations = [],
len = arguments.length;
while (len--) validations[len] = arguments[len];
return function (value) {
return validations.some(function (validation) {
return validation.test(value);
});
};
},
optional
};
function testType(expected) {
return function (value) {
return (
(Array.isArray(value) && expected === 'array') ||
(value === null && expected === 'null') ||
typeof value === expected
);
};
}
function isIntegerPolyfill(value) {
return (
typeof value === 'number' &&
isFinite(value) &&
Math.floor(value) === value
);
}
function testSchema(schema3) {
return {
simple: function (value) {
var causes = [];
Object.keys(schema3).forEach(function (key) {
var nestedValidation = schema3[key];
try {
nestedValidation.check((value || {})[key]);
} catch (ex) {
ex.target = key;
causes.push(ex);
}
});
if (causes.length > 0) {
throw causes;
}
return true;
},
async: function (value) {
var causes = [];
var nested = Object.keys(schema3).map(function (key) {
var nestedValidation = schema3[key];
return nestedValidation
.testAsync((value || {})[key])
.catch(function (ex) {
ex.target = key;
causes.push(ex);
});
});
return Promise.all(nested).then(function () {
if (causes.length > 0) {
throw causes;
}
return true;
});
}
};
}
var v8n_esm_default = v8n;
var e = 'colors';
var t = 'sizes';
var r = 'space';
var n = {
gap: r,
gridGap: r,
columnGap: r,
gridColumnGap: r,
rowGap: r,
gridRowGap: r,
inset: r,
insetBlock: r,
insetBlockEnd: r,
insetBlockStart: r,
insetInline: r,
insetInlineEnd: r,
insetInlineStart: r,
margin: r,
marginTop: r,
marginRight: r,
marginBottom: r,
marginLeft: r,
marginBlock: r,
marginBlockEnd: r,
marginBlockStart: r,
marginInline: r,
marginInlineEnd: r,
marginInlineStart: r,
padding: r,
paddingTop: r,
paddingRight: r,
paddingBottom: r,
paddingLeft: r,
paddingBlock: r,
paddingBlockEnd: r,
paddingBlockStart: r,
paddingInline: r,
paddingInlineEnd: r,
paddingInlineStart: r,
top: r,
right: r,
bottom: r,
left: r,
scrollMargin: r,
scrollMarginTop: r,
scrollMarginRight: r,
scrollMarginBottom: r,
scrollMarginLeft: r,
scrollMarginX: r,
scrollMarginY: r,
scrollMarginBlock: r,
scrollMarginBlockEnd: r,
scrollMarginBlockStart: r,
scrollMarginInline: r,
scrollMarginInlineEnd: r,
scrollMarginInlineStart: r,
scrollPadding: r,
scrollPaddingTop: r,
scrollPaddingRight: r,
scrollPaddingBottom: r,
scrollPaddingLeft: r,
scrollPaddingX: r,
scrollPaddingY: r,
scrollPaddingBlock: r,
scrollPaddingBlockEnd: r,
scrollPaddingBlockStart: r,
scrollPaddingInline: r,
scrollPaddingInlineEnd: r,
scrollPaddingInlineStart: r,
fontSize: 'fontSizes',
background: e,
backgroundColor: e,
backgroundImage: e,
borderImage: e,
border: e,
borderBlock: e,
borderBlockEnd: e,
borderBlockStart: e,
borderBottom: e,
borderBottomColor: e,
borderColor: e,
borderInline: e,
borderInlineEnd: e,
borderInlineStart: e,
borderLeft: e,
borderLeftColor: e,
borderRight: e,
borderRightColor: e,
borderTop: e,
borderTopColor: e,
caretColor: e,
color: e,
columnRuleColor: e,
fill: e,
outline: e,
outlineColor: e,
stroke: e,
textDecorationColor: e,
fontFamily: 'fonts',
fontWeight: 'fontWeights',
lineHeight: 'lineHeights',
letterSpacing: 'letterSpacings',
blockSize: t,
minBlockSize: t,
maxBlockSize: t,
inlineSize: t,
minInlineSize: t,
maxInlineSize: t,
width: t,
minWidth: t,
maxWidth: t,
height: t,
minHeight: t,
maxHeight: t,
flexBasis: t,
gridTemplateColumns: t,
gridTemplateRows: t,
borderWidth: 'borderWidths',
borderTopWidth: 'borderWidths',
borderRightWidth: 'borderWidths',
borderBottomWidth: 'borderWidths',
borderLeftWidth: 'borderWidths',
borderStyle: 'borderStyles',
borderTopStyle: 'borderStyles',
borderRightStyle: 'borderStyles',
borderBottomStyle: 'borderStyles',
borderLeftStyle: 'borderStyles',
borderRadius: 'radii',
borderTopLeftRadius: 'radii',
borderTopRightRadius: 'radii',
borderBottomRightRadius: 'radii',
borderBottomLeftRadius: 'radii',
boxShadow: 'shadows',
textShadow: 'shadows',
transition: 'transitions',
zIndex: 'zIndices'
};
var i = (e4, t4) =>
'function' == typeof t4
? { '()': Function.prototype.toString.call(t4) }
: t4;
var o = () => {
const e4 = Object.create(null);
return (t4, r4, ...n4) => {
const o4 = ((e5) => JSON.stringify(e5, i))(t4);
return o4 in e4 ? e4[o4] : (e4[o4] = r4(t4, ...n4));
};
};
var l = Symbol.for('sxs.internal');
var s = (e4, t4) =>
Object.defineProperties(e4, Object.getOwnPropertyDescriptors(t4));
var a = (e4) => {
for (const t4 in e4) return true;
return false;
};
var { hasOwnProperty: c } = Object.prototype;
var d = (e4) =>
e4.includes('-')
? e4
: e4.replace(/[A-Z]/g, (e5) => '-' + e5.toLowerCase());
var g = /\s+(?![^()]*\))/;
var p = (e4) => (t4) =>
e4(...('string' == typeof t4 ? String(t4).split(g) : [t4]));
var u = {
appearance: (e4) => ({ WebkitAppearance: e4, appearance: e4 }),
backfaceVisibility: (e4) => ({
WebkitBackfaceVisibility: e4,
backfaceVisibility: e4
}),
backdropFilter: (e4) => ({ WebkitBackdropFilter: e4, backdropFilter: e4 }),
backgroundClip: (e4) => ({ WebkitBackgroundClip: e4, backgroundClip: e4 }),
boxDecorationBreak: (e4) => ({
WebkitBoxDecorationBreak: e4,
boxDecorationBreak: e4
}),
clipPath: (e4) => ({ WebkitClipPath: e4, clipPath: e4 }),
content: (e4) => ({
content:
e4.includes('"') ||
e4.includes("'") ||
/^([A-Za-z]+\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)$/.test(
e4
)
? e4
: `"${e4}"`
}),
hyphens: (e4) => ({ WebkitHyphens: e4, hyphens: e4 }),
maskImage: (e4) => ({ WebkitMaskImage: e4, maskImage: e4 }),
maskSize: (e4) => ({ WebkitMaskSize: e4, maskSize: e4 }),
tabSize: (e4) => ({ MozTabSize: e4, tabSize: e4 }),
textSizeAdjust: (e4) => ({ WebkitTextSizeAdjust: e4, textSizeAdjust: e4 }),
userSelect: (e4) => ({ WebkitUserSelect: e4, userSelect: e4 }),
marginBlock: p((e4, t4) => ({
marginBlockStart: e4,
marginBlockEnd: t4 || e4
})),
marginInline: p((e4, t4) => ({
marginInlineStart: e4,
marginInlineEnd: t4 || e4
})),
maxSize: p((e4, t4) => ({ maxBlockSize: e4, maxInlineSize: t4 || e4 })),
minSize: p((e4, t4) => ({ minBlockSize: e4, minInlineSize: t4 || e4 })),
paddingBlock: p((e4, t4) => ({
paddingBlockStart: e4,
paddingBlockEnd: t4 || e4
})),
paddingInline: p((e4, t4) => ({
paddingInlineStart: e4,
paddingInlineEnd: t4 || e4
}))
};
var h = /([\d.]+)([^]*)/;
var f = (e4, t4) =>
e4.length
? e4.reduce(
(e5, r4) => (
e5.push(
...t4.map((e6) =>
e6.includes('&')
? e6.replace(
/&/g,
/[ +>|~]/.test(r4) && /&.*&/.test(e6)
? `:is(${r4})`
: r4
)
: r4 + ' ' + e6
)
),
e5
),
[]
)
: t4;
var m = (e4, t4) =>
e4 in b && 'string' == typeof t4
? t4.replace(
/^((?:[^]*[^\w-])?)(fit-content|stretch)((?:[^\w-][^]*)?)$/,
(t5, r4, n4, i4) =>
r4 +
('stretch' === n4
? `-moz-available${i4};${d(e4)}:${r4}-webkit-fill-available`
: `-moz-fit-content${i4};${d(e4)}:${r4}fit-content`) +
i4
)
: String(t4);
var b = {
blockSize: 1,
height: 1,
inlineSize: 1,
maxBlockSize: 1,
maxHeight: 1,
maxInlineSize: 1,
maxWidth: 1,
minBlockSize: 1,
minHeight: 1,
minInlineSize: 1,
minWidth: 1,
width: 1
};
var S = (e4) => (e4 ? e4 + '-' : '');
var k = (e4, t4, r4) =>
e4.replace(
/([+-])?((?:\d+(?:\.\d*)?|\.\d+)(?:[Ee][+-]?\d+)?)?(\$|--)([$\w-]+)/g,
(e5, n4, i4, o4, l4) =>
('$' == o4) == !!i4
? e5
: (n4 || '--' == o4 ? 'calc(' : '') +
'var(--' +
('$' === o4
? S(t4) +
(l4.includes('$') ? '' : S(r4)) +
l4.replace(/\$/g, '-')
: l4) +
')' +
(n4 || '--' == o4 ? '*' + (n4 || '') + (i4 || '1') + ')' : '')
);
var y = /\s*,\s*(?![^()]*\))/;
var B = Object.prototype.toString;
var $ = (e4, t4, r4, n4, i4) => {
let o4, l4, s4;
const a4 = (e5, t5, r5) => {
let c4, g4;
const p4 = (e6) => {
for (c4 in e6) {
const R3 = 64 === c4.charCodeAt(0),
z2 = R3 && Array.isArray(e6[c4]) ? e6[c4] : [e6[c4]];
for (g4 of z2) {
const e7 = /[A-Z]/.test(($4 = c4))
? $4
: $4.replace(/-[^]/g, (e8) => e8[1].toUpperCase()),
z3 =
'object' == typeof g4 &&
g4 &&
g4.toString === B &&
(!n4.utils[e7] || !t5.length);
if (e7 in n4.utils && !z3) {
const t6 = n4.utils[e7];
if (t6 !== l4) {
((l4 = t6), p4(t6(g4)), (l4 = null));
continue;
}
} else if (e7 in u) {
const t6 = u[e7];
if (t6 !== s4) {
((s4 = t6), p4(t6(g4)), (s4 = null));
continue;
}
}
if (
(R3 &&
((b4 =
c4.slice(1) in n4.media
? '@media ' + n4.media[c4.slice(1)]
: c4),
(c4 = b4.replace(
/\(\s*([\w-]+)\s*(=|<|<=|>|>=)\s*([\w-]+)\s*(?:(<|<=|>|>=)\s*([\w-]+)\s*)?\)/g,
(e8, t6, r6, n5, i5, o5) => {
const l5 = h.test(t6),
s5 = 0.0625 * (l5 ? -1 : 1),
[a5, c5] = l5 ? [n5, t6] : [t6, n5];
return (
'(' +
('=' === r6[0]
? ''
: ('>' === r6[0]) === l5
? 'max-'
: 'min-') +
a5 +
':' +
('=' !== r6[0] && 1 === r6.length
? c5.replace(
h,
(e9, t7, n6) =>
Number(t7) +
s5 *
('>' === r6
? 1
: -1) +
n6
)
: c5) +
(i5
? ') and (' +
('>' === i5[0]
? 'min-'
: 'max-') +
a5 +
':' +
(1 === i5.length
? o5.replace(
h,
(e9, t7, r7) =>
Number(t7) +
s5 *
('>' === i5
? -1
: 1) +
r7
)
: o5)
: '') +
')'
);
}
))),
z3)
) {
const e8 = R3 ? r5.concat(c4) : [...r5],
n5 = R3 ? [...t5] : f(t5, c4.split(y));
(void 0 !== o4 && i4(x(...o4)),
(o4 = void 0),
a4(g4, n5, e8));
} else
(void 0 === o4 && (o4 = [[], t5, r5]),
(c4 =
R3 || 36 !== c4.charCodeAt(0)
? c4
: `--${S(n4.prefix)}${c4.slice(1).replace(/\$/g, '-')}`),
(g4 = z3
? g4
: 'number' == typeof g4
? g4 && e7 in I
? String(g4) + 'px'
: String(g4)
: k(
m(e7, null == g4 ? '' : g4),
n4.prefix,
n4.themeMap[e7]
)),
o4[0].push(`${R3 ? `${c4} ` : `${d(c4)}:`}${g4}`));
}
}
var b4, $4;
};
(p4(e5), void 0 !== o4 && i4(x(...o4)), (o4 = void 0));
};
a4(e4, t4, r4);
};
var x = (e4, t4, r4) =>
`${r4.map((e5) => `${e5}{`).join('')}${t4.length ? `${t4.join(',')}{` : ''}${e4.join(';')}${t4.length ? '}' : ''}${Array(r4.length ? r4.length + 1 : 0).join('}')}`;
var I = {
animationDelay: 1,
animationDuration: 1,
backgroundSize: 1,
blockSize: 1,
border: 1,
borderBlock: 1,
borderBlockEnd: 1,
borderBlockEndWidth: 1,
borderBlockStart: 1,
borderBlockStartWidth: 1,
borderBlockWidth: 1,
borderBottom: 1,
borderBottomLeftRadius: 1,
borderBottomRightRadius: 1,
borderBottomWidth: 1,
borderEndEndRadius: 1,
borderEndStartRadius: 1,
borderInlineEnd: 1,
borderInlineEndWidth: 1,
borderInlineStart: 1,
borderInlineStartWidth: 1,
borderInlineWidth: 1,
borderLeft: 1,
borderLeftWidth: 1,
borderRadius: 1,
borderRight: 1,
borderRightWidth: 1,
borderSpacing: 1,
borderStartEndRadius: 1,
borderStartStartRadius: 1,
borderTop: 1,
borderTopLeftRadius: 1,
borderTopRightRadius: 1,
borderTopWidth: 1,
borderWidth: 1,
bottom: 1,
columnGap: 1,
columnRule: 1,
columnRuleWidth: 1,
columnWidth: 1,
containIntrinsicSize: 1,
flexBasis: 1,
fontSize: 1,
gap: 1,
gridAutoColumns: 1,
gridAutoRows: 1,
gridTemplateColumns: 1,
gridTemplateRows: 1,
height: 1,
inlineSize: 1,
inset: 1,
insetBlock: 1,
insetBlockEnd: 1,
insetBlockStart: 1,
insetInline: 1,
insetInlineEnd: 1,
insetInlineStart: 1,
left: 1,
letterSpacing: 1,
margin: 1,
marginBlock: 1,
marginBlockEnd: 1,
marginBlockStart: 1,
marginBottom: 1,
marginInline: 1,
marginInlineEnd: 1,
marginInlineStart: 1,
marginLeft: 1,
marginRight: 1,
marginTop: 1,
maxBlockSize: 1,
maxHeight: 1,
maxInlineSize: 1,
maxWidth: 1,
minBlockSize: 1,
minHeight: 1,
minInlineSize: 1,
minWidth: 1,
offsetDistance: 1,
offsetRotate: 1,
outline: 1,
outlineOffset: 1,
outlineWidth: 1,
overflowClipMargin: 1,
padding: 1,
paddingBlock: 1,
paddingBlockEnd: 1,
paddingBlockStart: 1,
paddingBottom: 1,
paddingInline: 1,
paddingInlineEnd: 1,
paddingInlineStart: 1,
paddingLeft: 1,
paddingRight: 1,
paddingTop: 1,
perspective: 1,
right: 1,
rowGap: 1,
scrollMargin: 1,
scrollMarginBlock: 1,
scrollMarginBlockEnd: 1,
scrollMarginBlockStart: 1,
scrollMarginBottom: 1,
scrollMarginInline: 1,
scrollMarginInlineEnd: 1,
scrollMarginInlineStart: 1,
scrollMarginLeft: 1,
scrollMarginRight: 1,
scrollMarginTop: 1,
scrollPadding: 1,
scrollPaddingBlock: 1,
scrollPaddingBlockEnd: 1,
scrollPaddingBlockStart: 1,
scrollPaddingBottom: 1,
scrollPaddingInline: 1,
scrollPaddingInlineEnd: 1,
scrollPaddingInlineStart: 1,
scrollPaddingLeft: 1,
scrollPaddingRight: 1,
scrollPaddingTop: 1,
shapeMargin: 1,
textDecoration: 1,
textDecorationThickness: 1,
textIndent: 1,
textUnderlineOffset: 1,
top: 1,
transitionDelay: 1,
transitionDuration: 1,
verticalAlign: 1,
width: 1,
wordSpacing: 1
};
var R = (e4) => String.fromCharCode(e4 + (e4 > 25 ? 39 : 97));
var z = (e4) =>
((e5) => {
let t4,
r4 = '';
for (t4 = Math.abs(e5); t4 > 52; t4 = (t4 / 52) | 0)
r4 = R(t4 % 52) + r4;
return R(t4 % 52) + r4;
})(
((e5, t4) => {
let r4 = t4.length;
for (; r4; ) e5 = (33 * e5) ^ t4.charCodeAt(--r4);
return e5;
})(5381, JSON.stringify(e4)) >>> 0
);
var W = [
'themed',
'global',
'styled',
'onevar',
'resonevar',
'allvar',
'inline'
];
var j = (e4) => {
if (e4.href && !e4.href.startsWith(location.origin)) return false;
try {
return !!e4.cssRules;
} catch (e5) {
return false;
}
};
var E = (e4) => {
let t4;
const r4 = () => {
const { cssRules: e5 } = t4.sheet;
return [].map
.call(e5, (r5, n5) => {
const { cssText: i4 } = r5;
let o4 = '';
if (i4.startsWith('--sxs')) return '';
if (
e5[n5 - 1] &&
(o4 = e5[n5 - 1].cssText).startsWith('--sxs')
) {
if (!r5.cssRules.length) return '';
for (const e6 in t4.rules)
if (t4.rules[e6].group === r5)
return `--sxs{--sxs:${[...t4.rules[e6].cache].join(' ')}}${i4}`;
return r5.cssRules.length ? `${o4}${i4}` : '';
}
return i4;
})
.join('');
},
n4 = () => {
if (t4) {
const { rules: e5, sheet: r5 } = t4;
if (!r5.deleteRule) {
for (; 3 === Object(Object(r5.cssRules)[0]).type; )
r5.cssRules.splice(0, 1);
r5.cssRules = [];
}
for (const t5 in e5) delete e5[t5];
}
const i4 = Object(e4).styleSheets || [];
for (const e5 of i4)
if (j(e5)) {
for (let i5 = 0, o5 = e5.cssRules; o5[i5]; ++i5) {
const l5 = Object(o5[i5]);
if (1 !== l5.type) continue;
const s4 = Object(o5[i5 + 1]);
if (4 !== s4.type) continue;
++i5;
const { cssText: a4 } = l5;
if (!a4.startsWith('--sxs')) continue;
const c4 = a4.slice(14, -3).trim().split(/\s+/),
d4 = W[c4[0]];
d4 &&
(t4 ||
(t4 = {
sheet: e5,
reset: n4,
rules: {},
toString: r4
}),
(t4.rules[d4] = {
group: s4,
index: i5,
cache: new Set(c4)
}));
}
if (t4) break;
}
if (!t4) {
const i5 = (e5, t5) => ({
type: t5,
cssRules: [],
insertRule(e6, t6) {
this.cssRules.splice(
t6,
0,
i5(
e6,
{ import: 3, undefined: 1 }[
(e6.toLowerCase().match(/^@([a-z]+)/) ||
[])[1]
] || 4
)
);
},
get cssText() {
return '@media{}' === e5
? `@media{${[].map.call(this.cssRules, (e6) => e6.cssText).join('')}}`
: e5;
}
});
t4 = {
sheet: e4
? (e4.head || e4).appendChild(
document.createElement('style')
).sheet
: i5('', 'text/css'),
rules: {},
reset: n4,
toString: r4
};
}
const { sheet: o4, rules: l4 } = t4;
for (let e5 = W.length - 1; e5 >= 0; --e5) {
const t5 = W[e5];
if (!l4[t5]) {
const r5 = W[e5 + 1],
n5 = l4[r5] ? l4[r5].index : o4.cssRules.length;
(o4.insertRule('@media{}', n5),
o4.insertRule(`--sxs{--sxs:${e5}}`, n5),
(l4[t5] = {
group: o4.cssRules[n5 + 1],
index: n5,
cache: new Set([e5])
}));
}
v(l4[t5]);
}
};
return (n4(), t4);
};
var v = (e4) => {
const t4 = e4.group;
let r4 = t4.cssRules.length;
e4.apply = (e5) => {
try {
(t4.insertRule(e5, r4), ++r4);
} catch (e6) {}
};
};
var T = Symbol();
var w = o();
var M = (e4, t4) =>
w(e4, () => (...r4) => {
let n4 = { type: null, composers: new Set() };
for (const t5 of r4)
if (null != t5)
if (t5[l]) {
null == n4.type && (n4.type = t5[l].type);
for (const e5 of t5[l].composers) n4.composers.add(e5);
} else
t5.constructor !== Object || t5.$$typeof
? null == n4.type && (n4.type = t5)
: n4.composers.add(C(t5, e4));
return (
null == n4.type && (n4.type = 'span'),
n4.composers.size || n4.composers.add(['PJLV', {}, [], [], {}, []]),
P(e4, n4, t4)
);
});
var C = (
{ variants: e4, compoundVariants: t4, defaultVariants: r4, ...n4 },
i4
) => {
const o4 = `${S(i4.prefix)}c-${z(n4)}`,
l4 = [],
s4 = [],
d4 = Object.create(null),
g4 = [];
for (const e5 in r4) d4[e5] = String(r4[e5]);
if ('object' == typeof e4 && e4)
for (const t5 in e4) {
((p4 = d4), (u4 = t5), c.call(p4, u4) || (d4[t5] = 'undefined'));
const r5 = e4[t5];
for (const e5 in r5) {
const n5 = { [t5]: String(e5) };
'undefined' === String(e5) && g4.push(t5);
const i5 = r5[e5],
o5 = [n5, i5, !a(i5)];
l4.push(o5);
}
}
var p4, u4;
if ('object' == typeof t4 && t4)
for (const e5 of t4) {
let { css: t5, ...r5 } = e5;
t5 = ('object' == typeof t5 && t5) || {};
for (const e6 in r5) r5[e6] = String(r5[e6]);
const n5 = [r5, t5, !a(t5)];
s4.push(n5);
}
return [o4, n4, l4, s4, d4, g4];
};
var P = (e4, t4, r4) => {
const [n4, i4, o4, a4] = L(t4.composers),
c4 =
'function' == typeof t4.type || t4.type.$$typeof
? ((e5) => {
function t5() {
for (let r5 = 0; r5 < t5[T].length; r5++) {
const [n5, i5] = t5[T][r5];
e5.rules[n5].apply(i5);
}
return ((t5[T] = []), null);
}
return (
(t5[T] = []),
(t5.rules = {}),
W.forEach(
(e6) =>
(t5.rules[e6] = {
apply: (r5) => t5[T].push([e6, r5])
})
),
t5
);
})(r4)
: null,
d4 = (c4 || r4).rules,
g4 = `.${n4}${i4.length > 1 ? `:where(.${i4.slice(1).join('.')})` : ''}`,
p4 = (l4) => {
l4 = ('object' == typeof l4 && l4) || A;
const { css: s4, ...p5 } = l4,
u4 = {};
for (const e5 in o4)
if ((delete p5[e5], e5 in l4)) {
let t5 = l4[e5];
'object' == typeof t5 && t5
? (u4[e5] = { '@initial': o4[e5], ...t5 })
: ((t5 = String(t5)),
(u4[e5] =
'undefined' !== t5 || a4.has(e5) ? t5 : o4[e5]));
} else u4[e5] = o4[e5];
const h4 = new Set([...i4]);
for (const [n5, i5, o5, l5] of t4.composers) {
r4.rules.styled.cache.has(n5) ||
(r4.rules.styled.cache.add(n5),
$(i5, [`.${n5}`], [], e4, (e5) => {
d4.styled.apply(e5);
}));
const t5 = O(o5, u4, e4.media),
s5 = O(l5, u4, e4.media, true);
for (const i6 of t5)
if (void 0 !== i6)
for (const [t6, o6, l6] of i6) {
const i7 = `${n5}-${z(o6)}-${t6}`;
h4.add(i7);
const s6 = (
l6 ? r4.rules.resonevar : r4.rules.onevar
).cache,
a5 = l6 ? d4.resonevar : d4.onevar;
s6.has(i7) ||
(s6.add(i7),
$(o6, [`.${i7}`], [], e4, (e5) => {
a5.apply(e5);
}));
}
for (const t6 of s5)
if (void 0 !== t6)
for (const [i6, o6] of t6) {
const t7 = `${n5}-${z(o6)}-${i6}`;
(h4.add(t7),
r4.rules.allvar.cache.has(t7) ||
(r4.rules.allvar.cache.add(t7),
$(o6, [`.${t7}`], [], e4, (e5) => {
d4.allvar.apply(e5);
})));
}
}
if ('object' == typeof s4 && s4) {
const t5 = `${n4}-i${z(s4)}-css`;
(h4.add(t5),
r4.rules.inline.cache.has(t5) ||
(r4.rules.inline.cache.add(t5),
$(s4, [`.${t5}`], [], e4, (e5) => {
d4.inline.apply(e5);
})));
}
for (const e5 of String(l4.className || '')
.trim()
.split(/\s+/))
e5 && h4.add(e5);
const f4 = (p5.className = [...h4].join(' '));
return {
type: t4.type,
className: f4,
selector: g4,
props: p5,
toString: () => f4,
deferredInjector: c4
};
};
return s(p4, {
className: n4,
selector: g4,
[l]: t4,
toString: () => (r4.rules.styled.cache.has(n4) || p4(), n4)
});
};
var L = (e4) => {
let t4 = '';
const r4 = [],
n4 = {},
i4 = [];
for (const [o4, , , , l4, s4] of e4) {
('' === t4 && (t4 = o4), r4.push(o4), i4.push(...s4));
for (const e5 in l4) {
const t5 = l4[e5];
(void 0 === n4[e5] || 'undefined' !== t5 || s4.includes(t5)) &&
(n4[e5] = t5);
}
}
return [t4, r4, n4, new Set(i4)];
};
var O = (e4, t4, r4, n4) => {
const i4 = [];
e: for (let [o4, l4, s4] of e4) {
if (s4) continue;
let e5,
a4 = 0,
c4 = false;
for (e5 in o4) {
const n5 = o4[e5];
let i5 = t4[e5];
if (i5 !== n5) {
if ('object' != typeof i5 || !i5) continue e;
{
let e6,
t5,
o5 = 0;
for (const l5 in i5) {
if (n5 === String(i5[l5])) {
if ('@initial' !== l5) {
const e7 = l5.slice(1);
((t5 = t5 || []).push(
e7 in r4
? r4[e7]
: l5.replace(/^@media ?/, '')
),
(c4 = true));
}
((a4 += o5), (e6 = true));
}
++o5;
}
if (
(t5 &&
t5.length &&
(l4 = { ['@media ' + t5.join(', ')]: l4 }),
!e6)
)
continue e;
}
}
}
(i4[a4] = i4[a4] || []).push([n4 ? 'cv' : `${e5}-${o4[e5]}`, l4, c4]);
}
return i4;
};
var A = {};
var N = o();
var D = (e4, t4) =>
N(e4, () => (...r4) => {
const n4 = () => {
for (let n5 of r4) {
n5 = ('object' == typeof n5 && n5) || {};
let r5 = z(n5);
if (!t4.rules.global.cache.has(r5)) {
if ((t4.rules.global.cache.add(r5), '@import' in n5)) {
let e5 =
[].indexOf.call(
t4.sheet.cssRules,
t4.rules.themed.group
) - 1;
for (let r6 of [].concat(n5['@import']))
((r6 =
r6.includes('"') || r6.includes("'")
? r6
: `"${r6}"`),
t4.sheet.insertRule(`@import ${r6};`, e5++));
delete n5['@import'];
}
$(n5, [], [], e4, (e5) => {
t4.rules.global.apply(e5);
});
}
}
return '';
};
return s(n4, { toString: n4 });
});
var H = o();
var V = (e4, t4) =>
H(e4, () => (r4) => {
const n4 = `${S(e4.prefix)}k-${z(r4)}`,
i4 = () => {
if (!t4.rules.global.cache.has(n4)) {
t4.rules.global.cache.add(n4);
const i5 = [];
$(r4, [], [], e4, (e5) => i5.push(e5));
const o4 = `@keyframes ${n4}{${i5.join('')}}`;
t4.rules.global.apply(o4);
}
return n4;
};
return s(i4, {
get name() {
return i4();
},
toString: i4
});
});
var G = class {
constructor(e4, t4, r4, n4) {
((this.token = null == e4 ? '' : String(e4)),
(this.value = null == t4 ? '' : String(t4)),
(this.scale = null == r4 ? '' : String(r4)),
(this.prefix = null == n4 ? '' : String(n4)));
}
get computedValue() {
return 'var(' + this.variable + ')';
}
get variable() {
return '--' + S(this.prefix) + S(this.scale) + this.token;
}
toString() {
return this.computedValue;
}
};
var F = o();
var J = (e4, t4) =>
F(e4, () => (r4, n4) => {
n4 = ('object' == typeof r4 && r4) || Object(n4);
const i4 = `.${(r4 = (r4 = 'string' == typeof r4 ? r4 : '') || `${S(e4.prefix)}t-${z(n4)}`)}`,
o4 = {},
l4 = [];
for (const t5 in n4) {
o4[t5] = {};
for (const r5 in n4[t5]) {
const i5 = `--${S(e4.prefix)}${t5}-${r5}`,
s5 = k(String(n4[t5][r5]), e4.prefix, t5);
((o4[t5][r5] = new G(r5, s5, t5, e4.prefix)),
l4.push(`${i5}:${s5}`));
}
}
const s4 = () => {
if (l4.length && !t4.rules.themed.cache.has(r4)) {
t4.rules.themed.cache.add(r4);
const i5 = `${n4 === e4.theme ? ':root,' : ''}.${r4}{${l4.join(';')}}`;
t4.rules.themed.apply(i5);
}
return r4;
};
return {
...o4,
get className() {
return s4();
},
selector: i4,
toString: s4
};
});
var U = o();
var Y = o();
var q = (e4) => {
const t4 = ((e5) => {
let t5 = false;
const r4 = U(e5, (e6) => {
t5 = true;
const r5 =
'prefix' in (e6 = ('object' == typeof e6 && e6) || {})
? String(e6.prefix)
: '',
i4 = ('object' == typeof e6.media && e6.media) || {},
o4 =
'object' == typeof e6.root
? e6.root || null
: globalThis.document || null,
l4 = ('object' == typeof e6.theme && e6.theme) || {},
s4 = {
prefix: r5,
media: i4,
theme: l4,
themeMap: ('object' == typeof e6.themeMap &&
e6.themeMap) || { ...n },
utils: ('object' == typeof e6.utils && e6.utils) || {}
},
a4 = E(o4),
c4 = {
css: M(s4, a4),
globalCss: D(s4, a4),
keyframes: V(s4, a4),
createTheme: J(s4, a4),
reset() {
(a4.reset(), c4.theme.toString());
},
theme: {},
sheet: a4,
config: s4,
prefix: r5,
getCssText: a4.toString,
toString: a4.toString
};
return (String((c4.theme = c4.createTheme(l4))), c4);
});
return (t5 || r4.reset(), r4);
})(e4);
return (
(t4.styled = (({ config: e5, sheet: t5 }) =>
Y(e5, () => {
const r4 = M(e5, t5);
return (...e6) => {
const t6 = r4(...e6),
n4 = t6[l].type,
i4 = React5.forwardRef((e7, r5) => {
const i5 = (e7 && e7.as) || n4,
{ props: o4, deferredInjector: l4 } = t6(e7);
return (
delete o4.as,
(o4.ref = r5),
l4
? React5.createElement(
React5.Fragment,
null,
React5.createElement(i5, o4),
React5.createElement(l4, null)
)
: React5.createElement(i5, o4)
);
});
return (
(i4.className = t6.className),
(i4.displayName = `Styled.${n4.displayName || n4.name || n4}`),
(i4.selector = t6.selector),
(i4.toString = () => t6.selector),
(i4[l] = t6[l]),
i4
);
};
}))(t4)),
t4
);
};
var use_gesture_react_esm_exports = {};
__export(use_gesture_react_esm_exports, {
createUseGesture: () => createUseGesture,
useDrag: () => useDrag,
useGesture: () => useGesture,
useHover: () => useHover,
useMove: () => useMove,
usePinch: () => usePinch,
useScroll: () => useScroll,
useWheel: () => useWheel
});
var import_actions = __toESM(require_use_gesture_core_actions_cjs());
__reExport(
use_gesture_react_esm_exports,
__toESM(require_use_gesture_core_actions_cjs())
);
var import_core = __toESM(require_use_gesture_core_cjs());
__reExport(
use_gesture_react_esm_exports,
__toESM(require_use_gesture_core_utils_cjs())
);
__reExport(
use_gesture_react_esm_exports,
__toESM(require_use_gesture_core_types_cjs())
);
function useRecognizers(handlers, config = {}, gestureKey, nativeHandlers) {
const ctrl = React5.useMemo(() => new import_core.Controller(handlers), []);
ctrl.applyHandlers(handlers, nativeHandlers);
ctrl.applyConfig(config, gestureKey);
React5.useEffect(ctrl.effect.bind(ctrl));
React5.useEffect(() => {
return ctrl.clean.bind(ctrl);
}, []);
if (config.target === void 0) {
return ctrl.bind.bind(ctrl);
}
return void 0;
}
function useDrag(handler, config) {
(0, import_actions.registerAction)(import_actions.dragAction);
return useRecognizers({ drag: handler }, config || {}, 'drag');
}
function usePinch(handler, config) {
(0, import_actions.registerAction)(import_actions.pinchAction);
return useRecognizers({ pinch: handler }, config || {}, 'pinch');
}
function useWheel(handler, config) {
(0, import_actions.registerAction)(import_actions.wheelAction);
return useRecognizers({ wheel: handler }, config || {}, 'wheel');
}
function useScroll(handler, config) {
(0, import_actions.registerAction)(import_actions.scrollAction);
return useRecognizers({ scroll: handler }, config || {}, 'scroll');
}
function useMove(handler, config) {
(0, import_actions.registerAction)(import_actions.moveAction);
return useRecognizers({ move: handler }, config || {}, 'move');
}
function useHover(handler, config) {
(0, import_actions.registerAction)(import_actions.hoverAction);
return useRecognizers({ hover: handler }, config || {}, 'hover');
}
function createUseGesture(actions) {
actions.forEach(import_actions.registerAction);
return function useGesture2(_handlers, _config) {
const { handlers, nativeHandlers, config } = (0, import_core.parseMergedHandlers)(_handlers, _config || {});
return useRecognizers(handlers, config, void 0, nativeHandlers);
};
}
function useGesture(handlers, config) {
const hook = createUseGesture([
import_actions.dragAction,
import_actions.pinchAction,
import_actions.scrollAction,
import_actions.wheelAction,
import_actions.moveAction,
import_actions.hoverAction
]);
return hook(handlers, config || {});
}
function $e42e1063c40fb3ef$export$b9ecd428b558ff10(
originalEventHandler,
ourEventHandler,
{ checkForDefaultPrevented = true } = {}
) {
return function handleEvent(event) {
originalEventHandler === null ||
originalEventHandler === void 0 ||
originalEventHandler(event);
if (checkForDefaultPrevented === false || !event.defaultPrevented)
return ourEventHandler === null || ourEventHandler === void 0
? void 0
: ourEventHandler(event);
};
}
function $c512c27ab02ef895$export$50c7b4e9d9f19c1(
scopeName,
createContextScopeDeps = []
) {
let defaultContexts = [];
function $c512c27ab02ef895$export$fd42f52fd3ae1109(
rootComponentName,
defaultContext
) {
const BaseContext = React5.createContext(defaultContext);
const index2 = defaultContexts.length;
defaultContexts = [...defaultContexts, defaultContext];
function Provider(props3) {
const { scope, children, ...context } = props3;
const Context3 =
(scope === null || scope === void 0
? void 0
: scope[scopeName][index2]) || BaseContext;
const value = React5.useMemo(() => context, Object.values(context));
return React5.createElement(Context3.Provider, { value }, children);
}
function useContext2(consumerName, scope) {
const Context3 =
(scope === null || scope === void 0
? void 0
: scope[scopeName][index2]) || BaseContext;
const context = React5.useContext(Context3);
if (context) return context;
if (defaultContext !== void 0) return defaultContext;
throw new Error(
`\`${consumerName}\` must be used within \`${rootComponentName}\``
);
}
Provider.displayName = rootComponentName + 'Provider';
return [Provider, useContext2];
}
const createScope = () => {
const scopeContexts = defaultContexts.map((defaultContext) => {
return React5.createContext(defaultContext);
});
return function useScope(scope) {
const contexts =
(scope === null || scope === void 0
? void 0
: scope[scopeName]) || scopeContexts;
return React5.useMemo(
() => ({
[`__scope${scopeName}`]: { ...scope, [scopeName]: contexts }
}),
[scope, contexts]
);
};
};
createScope.scopeName = scopeName;
return [
$c512c27ab02ef895$export$fd42f52fd3ae1109,
$c512c27ab02ef895$var$composeContextScopes(
createScope,
...createContextScopeDeps
)
];
}
function $c512c27ab02ef895$var$composeContextScopes(...scopes) {
const baseScope = scopes[0];
if (scopes.length === 1) return baseScope;
const createScope1 = () => {
const scopeHooks = scopes.map((createScope) => ({
useScope: createScope(),
scopeName: createScope.scopeName
}));
return function useComposedScopes(overrideScopes) {
const nextScopes1 = scopeHooks.reduce(
(nextScopes, { useScope, scopeName }) => {
const scopeProps = useScope(overrideScopes);
const currentScope = scopeProps[`__scope${scopeName}`];
return { ...nextScopes, ...currentScope };
},
{}
);
return React5.useMemo(
() => ({ [`__scope${baseScope.scopeName}`]: nextScopes1 }),
[nextScopes1]
);
};
};
createScope1.scopeName = baseScope.scopeName;
return createScope1;
}
function $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(callback) {
const callbackRef = React5.useRef(callback);
React5.useEffect(() => {
callbackRef.current = callback;
});
return React5.useMemo(
() =>
(...args) => {
var _callbackRef$current;
return (_callbackRef$current = callbackRef.current) === null ||
_callbackRef$current === void 0
? void 0
: _callbackRef$current.call(callbackRef, ...args);
},
[]
);
}
function $addc16e1bbe58fd0$export$3a72a57244d6e765(
onEscapeKeyDownProp,
ownerDocument = globalThis === null || globalThis === void 0
? void 0
: globalThis.document
) {
const onEscapeKeyDown =
$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onEscapeKeyDownProp);
React5.useEffect(() => {
const handleKeyDown = (event) => {
if (event.key === 'Escape') onEscapeKeyDown(event);
};
ownerDocument.addEventListener('keydown', handleKeyDown);
return () =>
ownerDocument.removeEventListener('keydown', handleKeyDown);
}, [onEscapeKeyDown, ownerDocument]);
}
var $5cb92bef7577960e$var$CONTEXT_UPDATE = 'dismissableLayer.update';
var $5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE =
'dismissableLayer.pointerDownOutside';
var $5cb92bef7577960e$var$FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';
var $5cb92bef7577960e$var$originalBodyPointerEvents;
var $5cb92bef7577960e$var$DismissableLayerContext = React5.createContext({
layers: new Set(),
layersWithOutsidePointerEventsDisabled: new Set(),
branches: new Set()
});
var $5cb92bef7577960e$export$177fb62ff3ec1f22 = React5.forwardRef(
(props3, forwardedRef) => {
var _node$ownerDocument;
const {
disableOutsidePointerEvents = false,
onEscapeKeyDown,
onPointerDownOutside,
onFocusOutside,
onInteractOutside,
onDismiss,
...layerProps
} = props3;
const context = React5.useContext(
$5cb92bef7577960e$var$DismissableLayerContext
);
const [node1, setNode] = React5.useState(null);
const ownerDocument =
(_node$ownerDocument =
node1 === null || node1 === void 0
? void 0
: node1.ownerDocument) !== null &&
_node$ownerDocument !== void 0
? _node$ownerDocument
: globalThis === null || globalThis === void 0
? void 0
: globalThis.document;
const [, force] = React5.useState({});
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(
forwardedRef,
(node) => setNode(node)
);
const layers = Array.from(context.layers);
const [highestLayerWithOutsidePointerEventsDisabled] = [
...context.layersWithOutsidePointerEventsDisabled
].slice(-1);
const highestLayerWithOutsidePointerEventsDisabledIndex =
layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
const index2 = node1 ? layers.indexOf(node1) : -1;
const isBodyPointerEventsDisabled =
context.layersWithOutsidePointerEventsDisabled.size > 0;
const isPointerEventsEnabled =
index2 >= highestLayerWithOutsidePointerEventsDisabledIndex;
const pointerDownOutside = $5cb92bef7577960e$var$usePointerDownOutside(
(event) => {
const target = event.target;
const isPointerDownOnBranch = [...context.branches].some(
(branch) => branch.contains(target)
);
if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
onPointerDownOutside === null ||
onPointerDownOutside === void 0 ||
onPointerDownOutside(event);
onInteractOutside === null ||
onInteractOutside === void 0 ||
onInteractOutside(event);
if (!event.defaultPrevented)
onDismiss === null || onDismiss === void 0 || onDismiss();
},
ownerDocument
);
const focusOutside = $5cb92bef7577960e$var$useFocusOutside((event) => {
const target = event.target;
const isFocusInBranch = [...context.branches].some((branch) =>
branch.contains(target)
);
if (isFocusInBranch) return;
onFocusOutside === null ||
onFocusOutside === void 0 ||
onFocusOutside(event);
onInteractOutside === null ||
onInteractOutside === void 0 ||
onInteractOutside(event);
if (!event.defaultPrevented)
onDismiss === null || onDismiss === void 0 || onDismiss();
}, ownerDocument);
$addc16e1bbe58fd0$export$3a72a57244d6e765((event) => {
const isHighestLayer = index2 === context.layers.size - 1;
if (!isHighestLayer) return;
onEscapeKeyDown === null ||
onEscapeKeyDown === void 0 ||
onEscapeKeyDown(event);
if (!event.defaultPrevented && onDismiss) {
event.preventDefault();
onDismiss();
}
}, ownerDocument);
React5.useEffect(() => {
if (!node1) return;
if (disableOutsidePointerEvents) {
if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
$5cb92bef7577960e$var$originalBodyPointerEvents =
ownerDocument.body.style.pointerEvents;
ownerDocument.body.style.pointerEvents = 'none';
}
context.layersWithOutsidePointerEventsDisabled.add(node1);
}
context.layers.add(node1);
$5cb92bef7577960e$var$dispatchUpdate();
return () => {
if (
disableOutsidePointerEvents &&
context.layersWithOutsidePointerEventsDisabled.size === 1
)
ownerDocument.body.style.pointerEvents =
$5cb92bef7577960e$var$originalBodyPointerEvents;
};
}, [node1, ownerDocument, disableOutsidePointerEvents, context]);
React5.useEffect(() => {
return () => {
if (!node1) return;
context.layers.delete(node1);
context.layersWithOutsidePointerEventsDisabled.delete(node1);
$5cb92bef7577960e$var$dispatchUpdate();
};
}, [node1, context]);
React5.useEffect(() => {
const handleUpdate = () => force({});
document.addEventListener(
$5cb92bef7577960e$var$CONTEXT_UPDATE,
handleUpdate
);
return () =>
document.removeEventListener(
$5cb92bef7577960e$var$CONTEXT_UPDATE,
handleUpdate
);
}, []);
return React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.div,
_extends({}, layerProps, {
ref: composedRefs,
style: {
pointerEvents: isBodyPointerEventsDisabled
? isPointerEventsEnabled
? 'auto'
: 'none'
: void 0,
...props3.style
},
onFocusCapture: $e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onFocusCapture,
focusOutside.onFocusCapture
),
onBlurCapture: $e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onBlurCapture,
focusOutside.onBlurCapture
),
onPointerDownCapture: $e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onPointerDownCapture,
pointerDownOutside.onPointerDownCapture
)
})
);
}
);
function $5cb92bef7577960e$var$usePointerDownOutside(
onPointerDownOutside,
ownerDocument = globalThis === null || globalThis === void 0
? void 0
: globalThis.document
) {
const handlePointerDownOutside =
$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onPointerDownOutside);
const isPointerInsideReactTreeRef = React5.useRef(false);
const handleClickRef = React5.useRef(() => {});
React5.useEffect(() => {
const handlePointerDown = (event) => {
if (event.target && !isPointerInsideReactTreeRef.current) {
let handleAndDispatchPointerDownOutsideEvent = function () {
$5cb92bef7577960e$var$handleAndDispatchCustomEvent(
$5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE,
handlePointerDownOutside,
eventDetail,
{ discrete: true }
);
};
const eventDetail = { originalEvent: event };
if (event.pointerType === 'touch') {
ownerDocument.removeEventListener(
'click',
handleClickRef.current
);
handleClickRef.current =
handleAndDispatchPointerDownOutsideEvent;
ownerDocument.addEventListener(
'click',
handleClickRef.current,
{ once: true }
);
} else handleAndDispatchPointerDownOutsideEvent();
}
isPointerInsideReactTreeRef.current = false;
};
const timerId = window.setTimeout(() => {
ownerDocument.addEventListener('pointerdown', handlePointerDown);
}, 0);
return () => {
window.clearTimeout(timerId);
ownerDocument.removeEventListener('pointerdown', handlePointerDown);
ownerDocument.removeEventListener('click', handleClickRef.current);
};
}, [ownerDocument, handlePointerDownOutside]);
return {
onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true)
};
}
function $5cb92bef7577960e$var$useFocusOutside(
onFocusOutside,
ownerDocument = globalThis === null || globalThis === void 0
? void 0
: globalThis.document
) {
const handleFocusOutside =
$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onFocusOutside);
const isFocusInsideReactTreeRef = React5.useRef(false);
React5.useEffect(() => {
const handleFocus = (event) => {
if (event.target && !isFocusInsideReactTreeRef.current) {
const eventDetail = { originalEvent: event };
$5cb92bef7577960e$var$handleAndDispatchCustomEvent(
$5cb92bef7577960e$var$FOCUS_OUTSIDE,
handleFocusOutside,
eventDetail,
{ discrete: false }
);
}
};
ownerDocument.addEventListener('focusin', handleFocus);
return () => ownerDocument.removeEventListener('focusin', handleFocus);
}, [ownerDocument, handleFocusOutside]);
return {
onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),
onBlurCapture: () => (isFocusInsideReactTreeRef.current = false)
};
}
function $5cb92bef7577960e$var$dispatchUpdate() {
const event = new CustomEvent($5cb92bef7577960e$var$CONTEXT_UPDATE);
document.dispatchEvent(event);
}
function $5cb92bef7577960e$var$handleAndDispatchCustomEvent(
name,
handler,
detail,
{ discrete }
) {
const target = detail.originalEvent.target;
const event = new CustomEvent(name, {
bubbles: false,
cancelable: true,
detail
});
if (handler) target.addEventListener(name, handler, { once: true });
if (discrete) $8927f6f2acc4f386$export$6d1a0317bde7de7f(target, event);
else target.dispatchEvent(event);
}
var $9f79659886946c16$export$e5c5a5f917a5871c = Boolean(
globalThis === null || globalThis === void 0 ? void 0 : globalThis.document
)
? React5.useLayoutEffect
: () => {};
var $1746a345f3d73bb7$var$useReactId =
React5__namespace['useId'.toString()] || (() => void 0);
var $1746a345f3d73bb7$var$count = 0;
function $1746a345f3d73bb7$export$f680877a34711e37(deterministicId) {
const [id, setId] = React5__namespace.useState(
$1746a345f3d73bb7$var$useReactId()
);
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
setId((reactId) =>
reactId !== null && reactId !== void 0
? reactId
: String($1746a345f3d73bb7$var$count++)
);
}, [deterministicId]);
return (id ? `radix-${id}` : '');
}
function getSide(placement) {
return placement.split('-')[0];
}
function getAlignment(placement) {
return placement.split('-')[1];
}
function getMainAxisFromPlacement(placement) {
return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';
}
function getLengthFromAxis(axis) {
return axis === 'y' ? 'height' : 'width';
}
function computeCoordsFromPlacement(_ref, placement, rtl) {
let { reference, floating } = _ref;
const commonX = reference.x + reference.width / 2 - floating.width / 2;
const commonY = reference.y + reference.height / 2 - floating.height / 2;
const mainAxis = getMainAxisFromPlacement(placement);
const length = getLengthFromAxis(mainAxis);
const commonAlign = reference[length] / 2 - floating[length] / 2;
const side = getSide(placement);
const isVertical = mainAxis === 'x';
let coords;
switch (side) {
case 'top':
coords = { x: commonX, y: reference.y - floating.height };
break;
case 'bottom':
coords = { x: commonX, y: reference.y + reference.height };
break;
case 'right':
coords = { x: reference.x + reference.width, y: commonY };
break;
case 'left':
coords = { x: reference.x - floating.width, y: commonY };
break;
default:
coords = { x: reference.x, y: reference.y };
}
switch (getAlignment(placement)) {
case 'start':
coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
break;
case 'end':
coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
break;
}
return coords;
}
var computePosition = async (reference, floating, config) => {
const {
placement = 'bottom',
strategy = 'absolute',
middleware = [],
platform: platform2
} = config;
const rtl = await (platform2.isRTL == null
? void 0
: platform2.isRTL(floating));
{
if (platform2 == null) {
console.error(
[
'Floating UI: `platform` property was not passed to config. If you',
'want to use Floating UI on the web, install @floating-ui/dom',
'instead of the /core package. Otherwise, you can create your own',
'`platform`: https://floating-ui.com/docs/platform'
].join(' ')
);
}
if (
middleware.filter((_ref) => {
let { name } = _ref;
return name === 'autoPlacement' || name === 'flip';
}).length > 1
) {
throw new Error(
[
'Floating UI: duplicate `flip` and/or `autoPlacement`',
'middleware detected. This will lead to an infinite loop. Ensure only',
'one of either has been passed to the `middleware` array.'
].join(' ')
);
}
}
let rects = await platform2.getElementRects({
reference,
floating,
strategy
});
let { x: x3, y: y4 } = computeCoordsFromPlacement(rects, placement, rtl);
let statefulPlacement = placement;
let middlewareData = {};
let resetCount = 0;
for (let i4 = 0; i4 < middleware.length; i4++) {
const { name, fn } = middleware[i4];
const {
x: nextX,
y: nextY,
data,
reset
} = await fn({
x: x3,
y: y4,
initialPlacement: placement,
placement: statefulPlacement,
strategy,
middlewareData,
rects,
platform: platform2,
elements: { reference, floating }
});
x3 = nextX != null ? nextX : x3;
y4 = nextY != null ? nextY : y4;
middlewareData = {
...middlewareData,
[name]: { ...middlewareData[name], ...data }
};
{
if (resetCount > 50) {
console.warn(
[
'Floating UI: The middleware lifecycle appears to be running in an',
'infinite loop. This is usually caused by a `reset` continually',
'being returned without a break condition.'
].join(' ')
);
}
}
if (reset && resetCount <= 50) {
resetCount++;
if (typeof reset === 'object') {
if (reset.placement) {
statefulPlacement = reset.placement;
}
if (reset.rects) {
rects =
reset.rects === true
? await platform2.getElementRects({
reference,
floating,
strategy
})
: reset.rects;
}
({ x: x3, y: y4 } = computeCoordsFromPlacement(
rects,
statefulPlacement,
rtl
));
}
i4 = -1;
continue;
}
}
return {
x: x3,
y: y4,
placement: statefulPlacement,
strategy,
middlewareData
};
};
function expandPaddingObject(padding) {
return { top: 0, right: 0, bottom: 0, left: 0, ...padding };
}
function getSideObjectFromPadding(padding) {
return typeof padding !== 'number'
? expandPaddingObject(padding)
: { top: padding, right: padding, bottom: padding, left: padding };
}
function rectToClientRect(rect) {
return {
...rect,
top: rect.y,
left: rect.x,
right: rect.x + rect.width,
bottom: rect.y + rect.height
};
}
async function detectOverflow(middlewareArguments, options) {
var _await$platform$isEle;
if (options === void 0) {
options = {};
}
const {
x: x3,
y: y4,
platform: platform2,
rects,
elements,
strategy
} = middlewareArguments;
const {
boundary = 'clippingAncestors',
rootBoundary = 'viewport',
elementContext = 'floating',
altBoundary = false,
padding = 0
} = options;
const paddingObject = getSideObjectFromPadding(padding);
const altContext = elementContext === 'floating' ? 'reference' : 'floating';
const element = elements[altBoundary ? altContext : elementContext];
const clippingClientRect = rectToClientRect(
await platform2.getClippingRect({
element: (
(_await$platform$isEle = await (platform2.isElement == null
? void 0
: platform2.isElement(element))) != null
? _await$platform$isEle
: true
)
? element
: element.contextElement ||
(await (platform2.getDocumentElement == null
? void 0
: platform2.getDocumentElement(elements.floating))),
boundary,
rootBoundary,
strategy
})
);
const elementClientRect = rectToClientRect(
platform2.convertOffsetParentRelativeRectToViewportRelativeRect
? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect(
{
rect:
elementContext === 'floating'
? { ...rects.floating, x: x3, y: y4 }
: rects.reference,
offsetParent: await (platform2.getOffsetParent == null
? void 0
: platform2.getOffsetParent(elements.floating)),
strategy
}
)
: rects[elementContext]
);
return {
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom:
elementClientRect.bottom -
clippingClientRect.bottom +
paddingObject.bottom,
left:
clippingClientRect.left -
elementClientRect.left +
paddingObject.left,
right:
elementClientRect.right -
clippingClientRect.right +
paddingObject.right
};
}
var min = Math.min;
var max = Math.max;
function within(min$1, value, max$1) {
return max(min$1, min(value, max$1));
}
var arrow = (options) => ({
name: 'arrow',
options,
async fn(middlewareArguments) {
const { element, padding = 0 } = options != null ? options : {};
const {
x: x3,
y: y4,
placement,
rects,
platform: platform2
} = middlewareArguments;
if (element == null) {
{
console.warn(
'Floating UI: No `element` was passed to the `arrow` middleware.'
);
}
return {};
}
const paddingObject = getSideObjectFromPadding(padding);
const coords = { x: x3, y: y4 };
const axis = getMainAxisFromPlacement(placement);
const alignment = getAlignment(placement);
const length = getLengthFromAxis(axis);
const arrowDimensions = await platform2.getDimensions(element);
const minProp = axis === 'y' ? 'top' : 'left';
const maxProp = axis === 'y' ? 'bottom' : 'right';
const endDiff =
rects.reference[length] +
rects.reference[axis] -
coords[axis] -
rects.floating[length];
const startDiff = coords[axis] - rects.reference[axis];
const arrowOffsetParent = await (platform2.getOffsetParent == null
? void 0
: platform2.getOffsetParent(element));
let clientSize = arrowOffsetParent
? axis === 'y'
? arrowOffsetParent.clientHeight || 0
: arrowOffsetParent.clientWidth || 0
: 0;
if (clientSize === 0) {
clientSize = rects.floating[length];
}
const centerToReference = endDiff / 2 - startDiff / 2;
const min3 = paddingObject[minProp];
const max3 =
clientSize - arrowDimensions[length] - paddingObject[maxProp];
const center =
clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
const offset2 = within(min3, center, max3);
const alignmentPadding =
alignment === 'start'
? paddingObject[minProp]
: paddingObject[maxProp];
const shouldAddOffset =
alignmentPadding > 0 &&
center !== offset2 &&
rects.reference[length] <= rects.floating[length];
const alignmentOffset = shouldAddOffset
? center < min3
? min3 - center
: max3 - center
: 0;
return {
[axis]: coords[axis] - alignmentOffset,
data: { [axis]: offset2, centerOffset: center - offset2 }
};
}
});
var hash$1 = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
function getOppositePlacement(placement) {
return placement.replace(
/left|right|bottom|top/g,
(matched) => hash$1[matched]
);
}
function getAlignmentSides(placement, rects, rtl) {
if (rtl === void 0) {
rtl = false;
}
const alignment = getAlignment(placement);
const mainAxis = getMainAxisFromPlacement(placement);
const length = getLengthFromAxis(mainAxis);
let mainAlignmentSide =
mainAxis === 'x'
? alignment === (rtl ? 'end' : 'start')
? 'right'
: 'left'
: alignment === 'start'
? 'bottom'
: 'top';
if (rects.reference[length] > rects.floating[length]) {
mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
}
return {
main: mainAlignmentSide,
cross: getOppositePlacement(mainAlignmentSide)
};
}
var hash = { start: 'end', end: 'start' };
function getOppositeAlignmentPlacement(placement) {
return placement.replace(/start|end/g, (matched) => hash[matched]);
}
var sides = ['top', 'right', 'bottom', 'left'];
function getExpandedPlacements(placement) {
const oppositePlacement = getOppositePlacement(placement);
return [
getOppositeAlignmentPlacement(placement),
oppositePlacement,
getOppositeAlignmentPlacement(oppositePlacement)
];
}
var flip = function (options) {
if (options === void 0) {
options = {};
}
return {
name: 'flip',
options,
async fn(middlewareArguments) {
var _middlewareData$flip;
const {
placement,
middlewareData,
rects,
initialPlacement,
platform: platform2,
elements
} = middlewareArguments;
const {
mainAxis: checkMainAxis = true,
crossAxis: checkCrossAxis = true,
fallbackPlacements: specifiedFallbackPlacements,
fallbackStrategy = 'bestFit',
flipAlignment = true,
...detectOverflowOptions
} = options;
const side = getSide(placement);
const isBasePlacement = side === initialPlacement;
const fallbackPlacements =
specifiedFallbackPlacements ||
(isBasePlacement || !flipAlignment
? [getOppositePlacement(initialPlacement)]
: getExpandedPlacements(initialPlacement));
const placements = [initialPlacement, ...fallbackPlacements];
const overflow = await detectOverflow(
middlewareArguments,
detectOverflowOptions
);
const overflows = [];
let overflowsData =
((_middlewareData$flip = middlewareData.flip) == null
? void 0
: _middlewareData$flip.overflows) || [];
if (checkMainAxis) {
overflows.push(overflow[side]);
}
if (checkCrossAxis) {
const { main, cross } = getAlignmentSides(
placement,
rects,
await (platform2.isRTL == null
? void 0
: platform2.isRTL(elements.floating))
);
overflows.push(overflow[main], overflow[cross]);
}
overflowsData = [...overflowsData, { placement, overflows }];
if (!overflows.every((side2) => side2 <= 0)) {
var _middlewareData$flip$, _middlewareData$flip2;
const nextIndex =
((_middlewareData$flip$ =
(_middlewareData$flip2 = middlewareData.flip) == null
? void 0
: _middlewareData$flip2.index) != null
? _middlewareData$flip$
: 0) + 1;
const nextPlacement = placements[nextIndex];
if (nextPlacement) {
return {
data: { index: nextIndex, overflows: overflowsData },
reset: { placement: nextPlacement }
};
}
let resetPlacement = 'bottom';
switch (fallbackStrategy) {
case 'bestFit': {
var _overflowsData$map$so;
const placement2 =
(_overflowsData$map$so = overflowsData
.map((d4) => [
d4,
d4.overflows
.filter((overflow2) => overflow2 > 0)
.reduce(
(acc, overflow2) => acc + overflow2,
0
)
])
.sort((a4, b4) => a4[1] - b4[1])[0]) == null
? void 0
: _overflowsData$map$so[0].placement;
if (placement2) {
resetPlacement = placement2;
}
break;
}
case 'initialPlacement':
resetPlacement = initialPlacement;
break;
}
if (placement !== resetPlacement) {
return { reset: { placement: resetPlacement } };
}
}
return {};
}
};
};
function getSideOffsets(overflow, rect) {
return {
top: overflow.top - rect.height,
right: overflow.right - rect.width,
bottom: overflow.bottom - rect.height,
left: overflow.left - rect.width
};
}
function isAnySideFullyClipped(overflow) {
return sides.some((side) => overflow[side] >= 0);
}
var hide = function (_temp) {
let { strategy = 'referenceHidden', ...detectOverflowOptions } =
_temp === void 0 ? {} : _temp;
return {
name: 'hide',
async fn(middlewareArguments) {
const { rects } = middlewareArguments;
switch (strategy) {
case 'referenceHidden': {
const overflow = await detectOverflow(middlewareArguments, {
...detectOverflowOptions,
elementContext: 'reference'
});
const offsets = getSideOffsets(overflow, rects.reference);
return {
data: {
referenceHiddenOffsets: offsets,
referenceHidden: isAnySideFullyClipped(offsets)
}
};
}
case 'escaped': {
const overflow = await detectOverflow(middlewareArguments, {
...detectOverflowOptions,
altBoundary: true
});
const offsets = getSideOffsets(overflow, rects.floating);
return {
data: {
escapedOffsets: offsets,
escaped: isAnySideFullyClipped(offsets)
}
};
}
default: {
return {};
}
}
}
};
};
async function convertValueToCoords(middlewareArguments, value) {
const { placement, platform: platform2, elements } = middlewareArguments;
const rtl = await (platform2.isRTL == null
? void 0
: platform2.isRTL(elements.floating));
const side = getSide(placement);
const alignment = getAlignment(placement);
const isVertical = getMainAxisFromPlacement(placement) === 'x';
const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
const crossAxisMulti = rtl && isVertical ? -1 : 1;
const rawValue =
typeof value === 'function' ? value(middlewareArguments) : value;
let { mainAxis, crossAxis, alignmentAxis } =
typeof rawValue === 'number'
? { mainAxis: rawValue, crossAxis: 0, alignmentAxis: null }
: { mainAxis: 0, crossAxis: 0, alignmentAxis: null, ...rawValue };
if (alignment && typeof alignmentAxis === 'number') {
crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
}
return isVertical
? { x: crossAxis * crossAxisMulti, y: mainAxis * mainAxisMulti }
: { x: mainAxis * mainAxisMulti, y: crossAxis * crossAxisMulti };
}
var offset = function (value) {
if (value === void 0) {
value = 0;
}
return {
name: 'offset',
options: value,
async fn(middlewareArguments) {
const { x: x3, y: y4 } = middlewareArguments;
const diffCoords = await convertValueToCoords(
middlewareArguments,
value
);
return {
x: x3 + diffCoords.x,
y: y4 + diffCoords.y,
data: diffCoords
};
}
};
};
function getCrossAxis(axis) {
return axis === 'x' ? 'y' : 'x';
}
var shift = function (options) {
if (options === void 0) {
options = {};
}
return {
name: 'shift',
options,
async fn(middlewareArguments) {
const { x: x3, y: y4, placement } = middlewareArguments;
const {
mainAxis: checkMainAxis = true,
crossAxis: checkCrossAxis = false,
limiter = {
fn: (_ref) => {
let { x: x4, y: y5 } = _ref;
return { x: x4, y: y5 };
}
},
...detectOverflowOptions
} = options;
const coords = { x: x3, y: y4 };
const overflow = await detectOverflow(
middlewareArguments,
detectOverflowOptions
);
const mainAxis = getMainAxisFromPlacement(getSide(placement));
const crossAxis = getCrossAxis(mainAxis);
let mainAxisCoord = coords[mainAxis];
let crossAxisCoord = coords[crossAxis];
if (checkMainAxis) {
const minSide = mainAxis === 'y' ? 'top' : 'left';
const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
const min3 = mainAxisCoord + overflow[minSide];
const max3 = mainAxisCoord - overflow[maxSide];
mainAxisCoord = within(min3, mainAxisCoord, max3);
}
if (checkCrossAxis) {
const minSide = crossAxis === 'y' ? 'top' : 'left';
const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
const min3 = crossAxisCoord + overflow[minSide];
const max3 = crossAxisCoord - overflow[maxSide];
crossAxisCoord = within(min3, crossAxisCoord, max3);
}
const limitedCoords = limiter.fn({
...middlewareArguments,
[mainAxis]: mainAxisCoord,
[crossAxis]: crossAxisCoord
});
return {
...limitedCoords,
data: { x: limitedCoords.x - x3, y: limitedCoords.y - y4 }
};
}
};
};
var limitShift = function (options) {
if (options === void 0) {
options = {};
}
return {
options,
fn(middlewareArguments) {
const {
x: x3,
y: y4,
placement,
rects,
middlewareData
} = middlewareArguments;
const {
offset: offset2 = 0,
mainAxis: checkMainAxis = true,
crossAxis: checkCrossAxis = true
} = options;
const coords = { x: x3, y: y4 };
const mainAxis = getMainAxisFromPlacement(placement);
const crossAxis = getCrossAxis(mainAxis);
let mainAxisCoord = coords[mainAxis];
let crossAxisCoord = coords[crossAxis];
const rawOffset =
typeof offset2 === 'function'
? offset2({ ...rects, placement })
: offset2;
const computedOffset =
typeof rawOffset === 'number'
? { mainAxis: rawOffset, crossAxis: 0 }
: { mainAxis: 0, crossAxis: 0, ...rawOffset };
if (checkMainAxis) {
const len = mainAxis === 'y' ? 'height' : 'width';
const limitMin =
rects.reference[mainAxis] -
rects.floating[len] +
computedOffset.mainAxis;
const limitMax =
rects.reference[mainAxis] +
rects.reference[len] -
computedOffset.mainAxis;
if (mainAxisCoord < limitMin) {
mainAxisCoord = limitMin;
} else if (mainAxisCoord > limitMax) {
mainAxisCoord = limitMax;
}
}
if (checkCrossAxis) {
var _middlewareData$offse,
_middlewareData$offse2,
_middlewareData$offse3,
_middlewareData$offse4;
const len = mainAxis === 'y' ? 'width' : 'height';
const isOriginSide = ['top', 'left'].includes(
getSide(placement)
);
const limitMin =
rects.reference[crossAxis] -
rects.floating[len] +
(isOriginSide
? (_middlewareData$offse =
(_middlewareData$offse2 =
middlewareData.offset) == null
? void 0
: _middlewareData$offse2[crossAxis]) != null
? _middlewareData$offse
: 0
: 0) +
(isOriginSide ? 0 : computedOffset.crossAxis);
const limitMax =
rects.reference[crossAxis] +
rects.reference[len] +
(isOriginSide
? 0
: (_middlewareData$offse3 =
(_middlewareData$offse4 =
middlewareData.offset) == null
? void 0
: _middlewareData$offse4[crossAxis]) != null
? _middlewareData$offse3
: 0) -
(isOriginSide ? computedOffset.crossAxis : 0);
if (crossAxisCoord < limitMin) {
crossAxisCoord = limitMin;
} else if (crossAxisCoord > limitMax) {
crossAxisCoord = limitMax;
}
}
return { [mainAxis]: mainAxisCoord, [crossAxis]: crossAxisCoord };
}
};
};
var size = function (options) {
if (options === void 0) {
options = {};
}
return {
name: 'size',
options,
async fn(middlewareArguments) {
const {
placement,
rects,
platform: platform2,
elements
} = middlewareArguments;
const { apply, ...detectOverflowOptions } = options;
const overflow = await detectOverflow(
middlewareArguments,
detectOverflowOptions
);
const side = getSide(placement);
const alignment = getAlignment(placement);
let heightSide;
let widthSide;
if (side === 'top' || side === 'bottom') {
heightSide = side;
widthSide =
alignment ===
((await (platform2.isRTL == null
? void 0
: platform2.isRTL(elements.floating)))
? 'start'
: 'end')
? 'left'
: 'right';
} else {
widthSide = side;
heightSide = alignment === 'end' ? 'top' : 'bottom';
}
const xMin = max(overflow.left, 0);
const xMax = max(overflow.right, 0);
const yMin = max(overflow.top, 0);
const yMax = max(overflow.bottom, 0);
const dimensions = {
availableHeight:
rects.floating.height -
(['left', 'right'].includes(placement)
? 2 *
(yMin !== 0 || yMax !== 0
? yMin + yMax
: max(overflow.top, overflow.bottom))
: overflow[heightSide]),
availableWidth:
rects.floating.width -
(['top', 'bottom'].includes(placement)
? 2 *
(xMin !== 0 || xMax !== 0
? xMin + xMax
: max(overflow.left, overflow.right))
: overflow[widthSide])
};
const prevDimensions = await platform2.getDimensions(
elements.floating
);
apply == null
? void 0
: apply({ ...middlewareArguments, ...dimensions });
const nextDimensions = await platform2.getDimensions(
elements.floating
);
if (
prevDimensions.width !== nextDimensions.width ||
prevDimensions.height !== nextDimensions.height
) {
return { reset: { rects: true } };
}
return {};
}
};
};
function isWindow(value) {
return (
value &&
value.document &&
value.location &&
value.alert &&
value.setInterval
);
}
function getWindow(node) {
if (node == null) {
return window;
}
if (!isWindow(node)) {
const ownerDocument = node.ownerDocument;
return ownerDocument ? ownerDocument.defaultView || window : window;
}
return node;
}
function getComputedStyle$1(element) {
return getWindow(element).getComputedStyle(element);
}
function getNodeName(node) {
return isWindow(node)
? ''
: node
? (node.nodeName || '').toLowerCase()
: '';
}
function getUAString() {
const uaData = navigator.userAgentData;
if (uaData != null && uaData.brands) {
return uaData.brands
.map((item) => item.brand + '/' + item.version)
.join(' ');
}
return navigator.userAgent;
}
function isHTMLElement(value) {
return value instanceof getWindow(value).HTMLElement;
}
function isElement(value) {
return value instanceof getWindow(value).Element;
}
function isNode(value) {
return value instanceof getWindow(value).Node;
}
function isShadowRoot(node) {
if (typeof ShadowRoot === 'undefined') {
return false;
}
const OwnElement = getWindow(node).ShadowRoot;
return node instanceof OwnElement || node instanceof ShadowRoot;
}
function isOverflowElement(element) {
const { overflow, overflowX, overflowY } = getComputedStyle$1(element);
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function isTableElement(element) {
return ['table', 'td', 'th'].includes(getNodeName(element));
}
function isContainingBlock(element) {
const isFirefox = /firefox/i.test(getUAString());
const css2 = getComputedStyle$1(element);
return (
css2.transform !== 'none' ||
css2.perspective !== 'none' ||
css2.contain === 'paint' ||
['transform', 'perspective'].includes(css2.willChange) ||
(isFirefox && css2.willChange === 'filter') ||
(isFirefox && (css2.filter ? css2.filter !== 'none' : false))
);
}
function isLayoutViewport() {
return !/^((?!chrome|android).)*safari/i.test(getUAString());
}
var min2 = Math.min;
var max2 = Math.max;
var round = Math.round;
function getBoundingClientRect(element, includeScale, isFixedStrategy) {
var _win$visualViewport$o,
_win$visualViewport,
_win$visualViewport$o2,
_win$visualViewport2;
if (includeScale === void 0) {
includeScale = false;
}
if (isFixedStrategy === void 0) {
isFixedStrategy = false;
}
const clientRect = element.getBoundingClientRect();
let scaleX = 1;
let scaleY = 1;
if (includeScale && isHTMLElement(element)) {
scaleX =
element.offsetWidth > 0
? round(clientRect.width) / element.offsetWidth || 1
: 1;
scaleY =
element.offsetHeight > 0
? round(clientRect.height) / element.offsetHeight || 1
: 1;
}
const win = isElement(element) ? getWindow(element) : window;
const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
const x3 =
(clientRect.left +
(addVisualOffsets
? (_win$visualViewport$o =
(_win$visualViewport = win.visualViewport) == null
? void 0
: _win$visualViewport.offsetLeft) != null
? _win$visualViewport$o
: 0
: 0)) /
scaleX;
const y4 =
(clientRect.top +
(addVisualOffsets
? (_win$visualViewport$o2 =
(_win$visualViewport2 = win.visualViewport) == null
? void 0
: _win$visualViewport2.offsetTop) != null
? _win$visualViewport$o2
: 0
: 0)) /
scaleY;
const width = clientRect.width / scaleX;
const height = clientRect.height / scaleY;
return {
width,
height,
top: y4,
right: x3 + width,
bottom: y4 + height,
left: x3,
x: x3,
y: y4
};
}
function getDocumentElement(node) {
return (
(isNode(node) ? node.ownerDocument : node.document) || window.document
).documentElement;
}
function getNodeScroll(element) {
if (isElement(element)) {
return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };
}
return { scrollLeft: element.pageXOffset, scrollTop: element.pageYOffset };
}
function getWindowScrollBarX(element) {
return (
getBoundingClientRect(getDocumentElement(element)).left +
getNodeScroll(element).scrollLeft
);
}
function isScaled(element) {
const rect = getBoundingClientRect(element);
return (
round(rect.width) !== element.offsetWidth ||
round(rect.height) !== element.offsetHeight
);
}
function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
const isOffsetParentAnElement = isHTMLElement(offsetParent);
const documentElement = getDocumentElement(offsetParent);
const rect = getBoundingClientRect(
element,
isOffsetParentAnElement && isScaled(offsetParent),
strategy === 'fixed'
);
let scroll = { scrollLeft: 0, scrollTop: 0 };
const offsets = { x: 0, y: 0 };
if (
isOffsetParentAnElement ||
(!isOffsetParentAnElement && strategy !== 'fixed')
) {
if (
getNodeName(offsetParent) !== 'body' ||
isOverflowElement(documentElement)
) {
scroll = getNodeScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
const offsetRect = getBoundingClientRect(offsetParent, true);
offsets.x = offsetRect.x + offsetParent.clientLeft;
offsets.y = offsetRect.y + offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollBarX(documentElement);
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};
}
function getParentNode(node) {
if (getNodeName(node) === 'html') {
return node;
}
return (
node.assignedSlot ||
node.parentNode ||
(isShadowRoot(node) ? node.host : null) ||
getDocumentElement(node)
);
}
function getTrueOffsetParent(element) {
if (
!isHTMLElement(element) ||
getComputedStyle(element).position === 'fixed'
) {
return null;
}
return element.offsetParent;
}
function getContainingBlock(element) {
let currentNode = getParentNode(element);
if (isShadowRoot(currentNode)) {
currentNode = currentNode.host;
}
while (
isHTMLElement(currentNode) &&
!['html', 'body'].includes(getNodeName(currentNode))
) {
if (isContainingBlock(currentNode)) {
return currentNode;
} else {
currentNode = currentNode.parentNode;
}
}
return null;
}
function getOffsetParent(element) {
const window2 = getWindow(element);
let offsetParent = getTrueOffsetParent(element);
while (
offsetParent &&
isTableElement(offsetParent) &&
getComputedStyle(offsetParent).position === 'static'
) {
offsetParent = getTrueOffsetParent(offsetParent);
}
if (
offsetParent &&
(getNodeName(offsetParent) === 'html' ||
(getNodeName(offsetParent) === 'body' &&
getComputedStyle(offsetParent).position === 'static' &&
!isContainingBlock(offsetParent)))
) {
return window2;
}
return offsetParent || getContainingBlock(element) || window2;
}
function getDimensions(element) {
if (isHTMLElement(element)) {
return { width: element.offsetWidth, height: element.offsetHeight };
}
const rect = getBoundingClientRect(element);
return { width: rect.width, height: rect.height };
}
function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
let { rect, offsetParent, strategy } = _ref;
const isOffsetParentAnElement = isHTMLElement(offsetParent);
const documentElement = getDocumentElement(offsetParent);
if (offsetParent === documentElement) {
return rect;
}
let scroll = { scrollLeft: 0, scrollTop: 0 };
const offsets = { x: 0, y: 0 };
if (
isOffsetParentAnElement ||
(!isOffsetParentAnElement && strategy !== 'fixed')
) {
if (
getNodeName(offsetParent) !== 'body' ||
isOverflowElement(documentElement)
) {
scroll = getNodeScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
const offsetRect = getBoundingClientRect(offsetParent, true);
offsets.x = offsetRect.x + offsetParent.clientLeft;
offsets.y = offsetRect.y + offsetParent.clientTop;
}
}
return {
...rect,
x: rect.x - scroll.scrollLeft + offsets.x,
y: rect.y - scroll.scrollTop + offsets.y
};
}
function getViewportRect(element, strategy) {
const win = getWindow(element);
const html = getDocumentElement(element);
const visualViewport = win.visualViewport;
let width = html.clientWidth;
let height = html.clientHeight;
let x3 = 0;
let y4 = 0;
if (visualViewport) {
width = visualViewport.width;
height = visualViewport.height;
const layoutViewport = isLayoutViewport();
if (layoutViewport || (!layoutViewport && strategy === 'fixed')) {
x3 = visualViewport.offsetLeft;
y4 = visualViewport.offsetTop;
}
}
return { width, height, x: x3, y: y4 };
}
function getDocumentRect(element) {
var _element$ownerDocumen;
const html = getDocumentElement(element);
const scroll = getNodeScroll(element);
const body =
(_element$ownerDocumen = element.ownerDocument) == null
? void 0
: _element$ownerDocumen.body;
const width = max2(
html.scrollWidth,
html.clientWidth,
body ? body.scrollWidth : 0,
body ? body.clientWidth : 0
);
const height = max2(
html.scrollHeight,
html.clientHeight,
body ? body.scrollHeight : 0,
body ? body.clientHeight : 0
);
let x3 = -scroll.scrollLeft + getWindowScrollBarX(element);
const y4 = -scroll.scrollTop;
if (getComputedStyle$1(body || html).direction === 'rtl') {
x3 += max2(html.clientWidth, body ? body.clientWidth : 0) - width;
}
return { width, height, x: x3, y: y4 };
}
function getNearestOverflowAncestor(node) {
const parentNode = getParentNode(node);
if (['html', 'body', '#document'].includes(getNodeName(parentNode))) {
return node.ownerDocument.body;
}
if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
return parentNode;
}
return getNearestOverflowAncestor(parentNode);
}
function getOverflowAncestors(node, list) {
var _node$ownerDocument;
if (list === void 0) {
list = [];
}
const scrollableAncestor = getNearestOverflowAncestor(node);
const isBody =
scrollableAncestor ===
((_node$ownerDocument = node.ownerDocument) == null
? void 0
: _node$ownerDocument.body);
const win = getWindow(scrollableAncestor);
const target = isBody
? [win].concat(
win.visualViewport || [],
isOverflowElement(scrollableAncestor) ? scrollableAncestor : []
)
: scrollableAncestor;
const updatedList = list.concat(target);
return isBody
? updatedList
: updatedList.concat(getOverflowAncestors(target));
}
function contains(parent, child) {
const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();
if (parent.contains(child)) {
return true;
} else if (rootNode && isShadowRoot(rootNode)) {
let next = child;
do {
if (next && parent === next) {
return true;
}
next = next.parentNode || next.host;
} while (next);
}
return false;
}
function getInnerBoundingClientRect(element, strategy) {
const clientRect = getBoundingClientRect(
element,
false,
strategy === 'fixed'
);
const top = clientRect.top + element.clientTop;
const left = clientRect.left + element.clientLeft;
return {
top,
left,
x: left,
y: top,
right: left + element.clientWidth,
bottom: top + element.clientHeight,
width: element.clientWidth,
height: element.clientHeight
};
}
function getClientRectFromClippingAncestor(element, clippingParent, strategy) {
if (clippingParent === 'viewport') {
return rectToClientRect(getViewportRect(element, strategy));
}
if (isElement(clippingParent)) {
return getInnerBoundingClientRect(clippingParent, strategy);
}
return rectToClientRect(getDocumentRect(getDocumentElement(element)));
}
function getClippingAncestors(element) {
const clippingAncestors = getOverflowAncestors(element);
const canEscapeClipping = ['absolute', 'fixed'].includes(
getComputedStyle$1(element).position
);
const clipperElement =
canEscapeClipping && isHTMLElement(element)
? getOffsetParent(element)
: element;
if (!isElement(clipperElement)) {
return [];
}
return clippingAncestors.filter(
(clippingAncestors2) =>
isElement(clippingAncestors2) &&
contains(clippingAncestors2, clipperElement) &&
getNodeName(clippingAncestors2) !== 'body'
);
}
function getClippingRect(_ref) {
let { element, boundary, rootBoundary, strategy } = _ref;
const mainClippingAncestors =
boundary === 'clippingAncestors'
? getClippingAncestors(element)
: [].concat(boundary);
const clippingAncestors = [...mainClippingAncestors, rootBoundary];
const firstClippingAncestor = clippingAncestors[0];
const clippingRect = clippingAncestors.reduce(
(accRect, clippingAncestor) => {
const rect = getClientRectFromClippingAncestor(
element,
clippingAncestor,
strategy
);
accRect.top = max2(rect.top, accRect.top);
accRect.right = min2(rect.right, accRect.right);
accRect.bottom = min2(rect.bottom, accRect.bottom);
accRect.left = max2(rect.left, accRect.left);
return accRect;
},
getClientRectFromClippingAncestor(
element,
firstClippingAncestor,
strategy
)
);
return {
width: clippingRect.right - clippingRect.left,
height: clippingRect.bottom - clippingRect.top,
x: clippingRect.left,
y: clippingRect.top
};
}
var platform = {
getClippingRect,
convertOffsetParentRelativeRectToViewportRelativeRect,
isElement,
getDimensions,
getOffsetParent,
getDocumentElement,
getElementRects: (_ref) => {
let { reference, floating, strategy } = _ref;
return {
reference: getRectRelativeToOffsetParent(
reference,
getOffsetParent(floating),
strategy
),
floating: { ...getDimensions(floating), x: 0, y: 0 }
};
},
getClientRects: (element) => Array.from(element.getClientRects()),
isRTL: (element) => getComputedStyle$1(element).direction === 'rtl'
};
function autoUpdate(reference, floating, update, options) {
if (options === void 0) {
options = {};
}
const {
ancestorScroll: _ancestorScroll = true,
ancestorResize: _ancestorResize = true,
elementResize = true,
animationFrame = false
} = options;
const ancestorScroll = _ancestorScroll && !animationFrame;
const ancestorResize = _ancestorResize && !animationFrame;
const ancestors =
ancestorScroll || ancestorResize
? [
...(isElement(reference)
? getOverflowAncestors(reference)
: []),
...getOverflowAncestors(floating)
]
: [];
ancestors.forEach((ancestor) => {
ancestorScroll &&
ancestor.addEventListener('scroll', update, { passive: true });
ancestorResize && ancestor.addEventListener('resize', update);
});
let observer = null;
if (elementResize) {
let initialUpdate = true;
observer = new ResizeObserver(() => {
if (!initialUpdate) {
update();
}
initialUpdate = false;
});
isElement(reference) && !animationFrame && observer.observe(reference);
observer.observe(floating);
}
let frameId;
let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
if (animationFrame) {
frameLoop();
}
function frameLoop() {
const nextRefRect = getBoundingClientRect(reference);
if (
prevRefRect &&
(nextRefRect.x !== prevRefRect.x ||
nextRefRect.y !== prevRefRect.y ||
nextRefRect.width !== prevRefRect.width ||
nextRefRect.height !== prevRefRect.height)
) {
update();
}
prevRefRect = nextRefRect;
frameId = requestAnimationFrame(frameLoop);
}
update();
return () => {
var _observer;
ancestors.forEach((ancestor) => {
ancestorScroll && ancestor.removeEventListener('scroll', update);
ancestorResize && ancestor.removeEventListener('resize', update);
});
(_observer = observer) == null ? void 0 : _observer.disconnect();
observer = null;
if (animationFrame) {
cancelAnimationFrame(frameId);
}
};
}
var computePosition2 = (reference, floating, options) =>
computePosition(reference, floating, { platform, ...options });
var index = typeof document !== 'undefined' ? React5.useLayoutEffect : React5.useEffect;
function deepEqual(a4, b4) {
if (a4 === b4) {
return true;
}
if (typeof a4 !== typeof b4) {
return false;
}
if (typeof a4 === 'function' && a4.toString() === b4.toString()) {
return true;
}
let length, i4, keys;
if (a4 && b4 && typeof a4 == 'object') {
if (Array.isArray(a4)) {
length = a4.length;
if (length != b4.length) return false;
for (i4 = length; i4-- !== 0; ) {
if (!deepEqual(a4[i4], b4[i4])) {
return false;
}
}
return true;
}
keys = Object.keys(a4);
length = keys.length;
if (length !== Object.keys(b4).length) {
return false;
}
for (i4 = length; i4-- !== 0; ) {
if (!Object.prototype.hasOwnProperty.call(b4, keys[i4])) {
return false;
}
}
for (i4 = length; i4-- !== 0; ) {
const key = keys[i4];
if (key === '_owner' && a4.$$typeof) {
continue;
}
if (!deepEqual(a4[key], b4[key])) {
return false;
}
}
return true;
}
return a4 !== a4 && b4 !== b4;
}
function useLatestRef(value) {
const ref = React5__namespace.useRef(value);
index(() => {
ref.current = value;
});
return ref;
}
function useFloating(_temp) {
let {
middleware,
placement = 'bottom',
strategy = 'absolute',
whileElementsMounted
} = _temp === void 0 ? {} : _temp;
const reference = React5__namespace.useRef(null);
const floating = React5__namespace.useRef(null);
const whileElementsMountedRef = useLatestRef(whileElementsMounted);
const cleanupRef = React5__namespace.useRef(null);
const [data, setData] = React5__namespace.useState({
x: null,
y: null,
strategy,
placement,
middlewareData: {}
});
const [latestMiddleware, setLatestMiddleware] = React5__namespace.useState(middleware);
if (
!deepEqual(
latestMiddleware == null
? void 0
: latestMiddleware.map((_ref) => {
let { options } = _ref;
return options;
}),
middleware == null
? void 0
: middleware.map((_ref2) => {
let { options } = _ref2;
return options;
})
)
) {
setLatestMiddleware(middleware);
}
const update = React5__namespace.useCallback(() => {
if (!reference.current || !floating.current) {
return;
}
computePosition2(reference.current, floating.current, {
middleware: latestMiddleware,
placement,
strategy
}).then((data2) => {
if (isMountedRef.current) {
$7SXl2$reactdom__namespace.flushSync(() => {
setData(data2);
});
}
});
}, [latestMiddleware, placement, strategy]);
index(() => {
if (isMountedRef.current) {
update();
}
}, [update]);
const isMountedRef = React5__namespace.useRef(false);
index(() => {
isMountedRef.current = true;
return () => {
isMountedRef.current = false;
};
}, []);
const runElementMountCallback = React5__namespace.useCallback(() => {
if (typeof cleanupRef.current === 'function') {
cleanupRef.current();
cleanupRef.current = null;
}
if (reference.current && floating.current) {
if (whileElementsMountedRef.current) {
const cleanupFn = whileElementsMountedRef.current(
reference.current,
floating.current,
update
);
cleanupRef.current = cleanupFn;
} else {
update();
}
}
}, [update, whileElementsMountedRef]);
const setReference = React5__namespace.useCallback(
(node) => {
reference.current = node;
runElementMountCallback();
},
[runElementMountCallback]
);
const setFloating = React5__namespace.useCallback(
(node) => {
floating.current = node;
runElementMountCallback();
},
[runElementMountCallback]
);
const refs = React5__namespace.useMemo(() => ({ reference, floating }), []);
return React5__namespace.useMemo(
() => ({
...data,
update,
refs,
reference: setReference,
floating: setFloating
}),
[data, update, refs, setReference, setFloating]
);
}
var arrow2 = (options) => {
const { element, padding } = options;
function isRef(value) {
return Object.prototype.hasOwnProperty.call(value, 'current');
}
return {
name: 'arrow',
options,
fn(args) {
if (isRef(element)) {
if (element.current != null) {
return arrow({ element: element.current, padding }).fn(
args
);
}
return {};
} else if (element) {
return arrow({ element, padding }).fn(args);
}
return {};
}
};
};
var $7e8f5cd07187803e$export$21b07c8f274aebd5 = React5.forwardRef(
(props3, forwardedRef) => {
const { children, width = 10, height = 5, ...arrowProps } = props3;
return React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.svg,
_extends({}, arrowProps, {
ref: forwardedRef,
width,
height,
viewBox: '0 0 30 10',
preserveAspectRatio: 'none'
}),
props3.asChild
? children
: React5.createElement('polygon', { points: '0,0 30,0 15,10' })
);
}
);
var $7e8f5cd07187803e$export$be92b6f5f03c0fe9 =
$7e8f5cd07187803e$export$21b07c8f274aebd5;
function $db6c3485150b8e66$export$1ab7ae714698c4b8(element) {
const [size2, setSize] = React5.useState(void 0);
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
if (element) {
setSize({
width: element.offsetWidth,
height: element.offsetHeight
});
const resizeObserver = new ResizeObserver((entries) => {
if (!Array.isArray(entries)) return;
if (!entries.length) return;
const entry = entries[0];
let width;
let height;
if ('borderBoxSize' in entry) {
const borderSizeEntry = entry['borderBoxSize'];
const borderSize = Array.isArray(borderSizeEntry)
? borderSizeEntry[0]
: borderSizeEntry;
width = borderSize['inlineSize'];
height = borderSize['blockSize'];
} else {
width = element.offsetWidth;
height = element.offsetHeight;
}
setSize({ width, height });
});
resizeObserver.observe(element, { box: 'border-box' });
return () => resizeObserver.unobserve(element);
} else setSize(void 0);
}, [element]);
return size2;
}
var $cf1ac5d9fe0e8206$var$POPPER_NAME = 'Popper';
var [
$cf1ac5d9fe0e8206$var$createPopperContext,
$cf1ac5d9fe0e8206$export$722aac194ae923
] = $c512c27ab02ef895$export$50c7b4e9d9f19c1($cf1ac5d9fe0e8206$var$POPPER_NAME);
var [
$cf1ac5d9fe0e8206$var$PopperProvider,
$cf1ac5d9fe0e8206$var$usePopperContext
] = $cf1ac5d9fe0e8206$var$createPopperContext(
$cf1ac5d9fe0e8206$var$POPPER_NAME
);
var $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9 = (props3) => {
const { __scopePopper, children } = props3;
const [anchor, setAnchor] = React5.useState(null);
return React5.createElement(
$cf1ac5d9fe0e8206$var$PopperProvider,
{ scope: __scopePopper, anchor, onAnchorChange: setAnchor },
children
);
};
var $cf1ac5d9fe0e8206$var$ANCHOR_NAME = 'PopperAnchor';
var $cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d = React5.forwardRef(
(props3, forwardedRef) => {
const { __scopePopper, virtualRef, ...anchorProps } = props3;
const context = $cf1ac5d9fe0e8206$var$usePopperContext(
$cf1ac5d9fe0e8206$var$ANCHOR_NAME,
__scopePopper
);
const ref = React5.useRef(null);
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(
forwardedRef,
ref
);
React5.useEffect(() => {
context.onAnchorChange(
(virtualRef === null || virtualRef === void 0
? void 0
: virtualRef.current) || ref.current
);
});
return virtualRef
? null
: React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.div,
_extends({}, anchorProps, { ref: composedRefs })
);
}
);
var $cf1ac5d9fe0e8206$var$CONTENT_NAME = 'PopperContent';
var [
$cf1ac5d9fe0e8206$var$PopperContentProvider,
$cf1ac5d9fe0e8206$var$useContentContext
] = $cf1ac5d9fe0e8206$var$createPopperContext(
$cf1ac5d9fe0e8206$var$CONTENT_NAME
);
var [
$cf1ac5d9fe0e8206$var$PositionContextProvider,
$cf1ac5d9fe0e8206$var$usePositionContext
] = $cf1ac5d9fe0e8206$var$createPopperContext(
$cf1ac5d9fe0e8206$var$CONTENT_NAME,
{ hasParent: false, positionUpdateFns: new Set() }
);
var $cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc = React5.forwardRef(
(props3, forwardedRef) => {
var _arrowSize$width,
_arrowSize$height,
_middlewareData$arrow,
_middlewareData$arrow2,
_middlewareData$arrow3,
_middlewareData$hide,
_middlewareData$trans,
_middlewareData$trans2;
const {
__scopePopper,
side = 'bottom',
sideOffset = 0,
align = 'center',
alignOffset = 0,
arrowPadding = 0,
collisionBoundary = [],
collisionPadding: collisionPaddingProp = 0,
sticky = 'partial',
hideWhenDetached = false,
avoidCollisions = true,
onPlaced,
...contentProps
} = props3;
const context = $cf1ac5d9fe0e8206$var$usePopperContext(
$cf1ac5d9fe0e8206$var$CONTENT_NAME,
__scopePopper
);
const [content, setContent] = React5.useState(null);
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(
forwardedRef,
(node) => setContent(node)
);
const [arrow3, setArrow] = React5.useState(null);
const arrowSize = $db6c3485150b8e66$export$1ab7ae714698c4b8(arrow3);
const arrowWidth =
(_arrowSize$width =
arrowSize === null || arrowSize === void 0
? void 0
: arrowSize.width) !== null && _arrowSize$width !== void 0
? _arrowSize$width
: 0;
const arrowHeight =
(_arrowSize$height =
arrowSize === null || arrowSize === void 0
? void 0
: arrowSize.height) !== null && _arrowSize$height !== void 0
? _arrowSize$height
: 0;
const desiredPlacement = side + (align !== 'center' ? '-' + align : '');
const collisionPadding =
typeof collisionPaddingProp === 'number'
? collisionPaddingProp
: {
top: 0,
right: 0,
bottom: 0,
left: 0,
...collisionPaddingProp
};
const boundary = Array.isArray(collisionBoundary)
? collisionBoundary
: [collisionBoundary];
const hasExplicitBoundaries = boundary.length > 0;
const detectOverflowOptions = {
padding: collisionPadding,
boundary: boundary.filter($cf1ac5d9fe0e8206$var$isNotNull),
altBoundary: hasExplicitBoundaries
};
const {
reference,
floating,
strategy,
x: x3,
y: y4,
placement,
middlewareData,
update
} = useFloating({
strategy: 'fixed',
placement: desiredPlacement,
whileElementsMounted: autoUpdate,
middleware: [
$cf1ac5d9fe0e8206$var$anchorCssProperties(),
offset({
mainAxis: sideOffset + arrowHeight,
alignmentAxis: alignOffset
}),
avoidCollisions
? shift({
mainAxis: true,
crossAxis: false,
limiter: sticky === 'partial' ? limitShift() : void 0,
...detectOverflowOptions
})
: void 0,
arrow3
? arrow2({ element: arrow3, padding: arrowPadding })
: void 0,
avoidCollisions ? flip({ ...detectOverflowOptions }) : void 0,
size({
...detectOverflowOptions,
apply: ({
elements,
availableWidth: width,
availableHeight: height
}) => {
elements.floating.style.setProperty(
'--radix-popper-available-width',
`${width}px`
);
elements.floating.style.setProperty(
'--radix-popper-available-height',
`${height}px`
);
}
}),
$cf1ac5d9fe0e8206$var$transformOrigin({
arrowWidth,
arrowHeight
}),
hideWhenDetached
? hide({ strategy: 'referenceHidden' })
: void 0
].filter($cf1ac5d9fe0e8206$var$isDefined)
});
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
reference(context.anchor);
}, [reference, context.anchor]);
const isPlaced = x3 !== null && y4 !== null;
const [placedSide, placedAlign] =
$cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement);
const handlePlaced =
$b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onPlaced);
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
if (isPlaced)
handlePlaced === null ||
handlePlaced === void 0 ||
handlePlaced();
}, [isPlaced, handlePlaced]);
const arrowX =
(_middlewareData$arrow = middlewareData.arrow) === null ||
_middlewareData$arrow === void 0
? void 0
: _middlewareData$arrow.x;
const arrowY =
(_middlewareData$arrow2 = middlewareData.arrow) === null ||
_middlewareData$arrow2 === void 0
? void 0
: _middlewareData$arrow2.y;
const cannotCenterArrow =
((_middlewareData$arrow3 = middlewareData.arrow) === null ||
_middlewareData$arrow3 === void 0
? void 0
: _middlewareData$arrow3.centerOffset) !== 0;
const [contentZIndex, setContentZIndex] = React5.useState();
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
if (content)
setContentZIndex(window.getComputedStyle(content).zIndex);
}, [content]);
const { hasParent, positionUpdateFns } =
$cf1ac5d9fe0e8206$var$usePositionContext(
$cf1ac5d9fe0e8206$var$CONTENT_NAME,
__scopePopper
);
const isRoot = !hasParent;
React5.useLayoutEffect(() => {
if (!isRoot) {
positionUpdateFns.add(update);
return () => {
positionUpdateFns.delete(update);
};
}
}, [isRoot, positionUpdateFns, update]);
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
if (isRoot && isPlaced)
Array.from(positionUpdateFns)
.reverse()
.forEach((fn) => requestAnimationFrame(fn));
}, [isRoot, isPlaced, positionUpdateFns]);
const commonProps = {
'data-side': placedSide,
'data-align': placedAlign,
...contentProps,
ref: composedRefs,
style: {
...contentProps.style,
animation: !isPlaced ? 'none' : void 0,
opacity:
(_middlewareData$hide = middlewareData.hide) !== null &&
_middlewareData$hide !== void 0 &&
_middlewareData$hide.referenceHidden
? 0
: void 0
}
};
return React5.createElement(
'div',
{
ref: floating,
'data-radix-popper-content-wrapper': '',
style: {
position: strategy,
left: 0,
top: 0,
transform: isPlaced
? `translate3d(${Math.round(x3)}px, ${Math.round(y4)}px, 0)`
: 'translate3d(0, -200%, 0)',
minWidth: 'max-content',
zIndex: contentZIndex,
['--radix-popper-transform-origin']: [
(_middlewareData$trans =
middlewareData.transformOrigin) === null ||
_middlewareData$trans === void 0
? void 0
: _middlewareData$trans.x,
(_middlewareData$trans2 =
middlewareData.transformOrigin) === null ||
_middlewareData$trans2 === void 0
? void 0
: _middlewareData$trans2.y
].join(' ')
},
dir: props3.dir
},
React5.createElement(
$cf1ac5d9fe0e8206$var$PopperContentProvider,
{
scope: __scopePopper,
placedSide,
onArrowChange: setArrow,
arrowX,
arrowY,
shouldHideArrow: cannotCenterArrow
},
isRoot
? React5.createElement(
$cf1ac5d9fe0e8206$var$PositionContextProvider,
{
scope: __scopePopper,
hasParent: true,
positionUpdateFns
},
React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.div,
commonProps
)
)
: React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.div,
commonProps
)
)
);
}
);
var $cf1ac5d9fe0e8206$var$ARROW_NAME = 'PopperArrow';
var $cf1ac5d9fe0e8206$var$OPPOSITE_SIDE = {
top: 'bottom',
right: 'left',
bottom: 'top',
left: 'right'
};
var $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0 = React5.forwardRef(
function $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd02(props3, forwardedRef) {
const { __scopePopper, ...arrowProps } = props3;
const contentContext = $cf1ac5d9fe0e8206$var$useContentContext(
$cf1ac5d9fe0e8206$var$ARROW_NAME,
__scopePopper
);
const baseSide =
$cf1ac5d9fe0e8206$var$OPPOSITE_SIDE[contentContext.placedSide];
return React5.createElement(
'span',
{
ref: contentContext.onArrowChange,
style: {
position: 'absolute',
left: contentContext.arrowX,
top: contentContext.arrowY,
[baseSide]: 0,
transformOrigin: {
top: '',
right: '0 0',
bottom: 'center 0',
left: '100% 0'
}[contentContext.placedSide],
transform: {
top: 'translateY(100%)',
right: 'translateY(50%) rotate(90deg) translateX(-50%)',
bottom: `rotate(180deg)`,
left: 'translateY(50%) rotate(-90deg) translateX(50%)'
}[contentContext.placedSide],
visibility: contentContext.shouldHideArrow
? 'hidden'
: void 0
}
},
React5.createElement(
$7e8f5cd07187803e$export$be92b6f5f03c0fe9,
_extends({}, arrowProps, {
ref: forwardedRef,
style: { ...arrowProps.style, display: 'block' }
})
)
);
}
);
function $cf1ac5d9fe0e8206$var$isDefined(value) {
return value !== void 0;
}
function $cf1ac5d9fe0e8206$var$isNotNull(value) {
return value !== null;
}
var $cf1ac5d9fe0e8206$var$anchorCssProperties = () => ({
name: 'anchorCssProperties',
fn(data) {
const { rects, elements } = data;
const { width, height } = rects.reference;
elements.floating.style.setProperty(
'--radix-popper-anchor-width',
`${width}px`
);
elements.floating.style.setProperty(
'--radix-popper-anchor-height',
`${height}px`
);
return {};
}
});
var $cf1ac5d9fe0e8206$var$transformOrigin = (options) => ({
name: 'transformOrigin',
options,
fn(data) {
var _middlewareData$arrow4,
_middlewareData$arrow5,
_middlewareData$arrow6,
_middlewareData$arrow7,
_middlewareData$arrow8;
const { placement, rects, middlewareData } = data;
const cannotCenterArrow =
((_middlewareData$arrow4 = middlewareData.arrow) === null ||
_middlewareData$arrow4 === void 0
? void 0
: _middlewareData$arrow4.centerOffset) !== 0;
const isArrowHidden = cannotCenterArrow;
const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;
const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;
const [placedSide, placedAlign] =
$cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement);
const noArrowAlign = { start: '0%', center: '50%', end: '100%' }[
placedAlign
];
const arrowXCenter =
((_middlewareData$arrow5 =
(_middlewareData$arrow6 = middlewareData.arrow) === null ||
_middlewareData$arrow6 === void 0
? void 0
: _middlewareData$arrow6.x) !== null &&
_middlewareData$arrow5 !== void 0
? _middlewareData$arrow5
: 0) +
arrowWidth / 2;
const arrowYCenter =
((_middlewareData$arrow7 =
(_middlewareData$arrow8 = middlewareData.arrow) === null ||
_middlewareData$arrow8 === void 0
? void 0
: _middlewareData$arrow8.y) !== null &&
_middlewareData$arrow7 !== void 0
? _middlewareData$arrow7
: 0) +
arrowHeight / 2;
let x3 = '';
let y4 = '';
if (placedSide === 'bottom') {
x3 = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;
y4 = `${-arrowHeight}px`;
} else if (placedSide === 'top') {
x3 = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;
y4 = `${rects.floating.height + arrowHeight}px`;
} else if (placedSide === 'right') {
x3 = `${-arrowHeight}px`;
y4 = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;
} else if (placedSide === 'left') {
x3 = `${rects.floating.width + arrowHeight}px`;
y4 = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;
}
return { data: { x: x3, y: y4 } };
}
});
function $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement) {
const [side, align = 'center'] = placement.split('-');
return [side, align];
}
var $cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9 =
$cf1ac5d9fe0e8206$export$badac9ada3a0bdf9;
var $cf1ac5d9fe0e8206$export$b688253958b8dfe7 =
$cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d;
var $cf1ac5d9fe0e8206$export$7c6e2c02157bb7d2 =
$cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc;
var $cf1ac5d9fe0e8206$export$21b07c8f274aebd5 =
$cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0;
function $fe963b355347cc68$export$3e6543de14f8614f(initialState2, machine) {
return React5.useReducer((state, event) => {
const nextState = machine[state][event];
return nextState !== null && nextState !== void 0 ? nextState : state;
}, initialState2);
}
var $921a889cee6df7e8$export$99c2b779aa4e8b8b = (props3) => {
const { present, children } = props3;
const presence = $921a889cee6df7e8$var$usePresence(present);
const child =
typeof children === 'function'
? children({ present: presence.isPresent })
: React5.Children.only(children);
const ref = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(
presence.ref,
child.ref
);
const forceMount = typeof children === 'function';
return forceMount || presence.isPresent
? React5.cloneElement(child, { ref })
: null;
};
$921a889cee6df7e8$export$99c2b779aa4e8b8b.displayName = 'Presence';
function $921a889cee6df7e8$var$usePresence(present) {
const [node1, setNode] = React5.useState();
const stylesRef = React5.useRef({});
const prevPresentRef = React5.useRef(present);
const prevAnimationNameRef = React5.useRef('none');
const initialState2 = present ? 'mounted' : 'unmounted';
const [state, send] = $fe963b355347cc68$export$3e6543de14f8614f(
initialState2,
{
mounted: {
UNMOUNT: 'unmounted',
ANIMATION_OUT: 'unmountSuspended'
},
unmountSuspended: { MOUNT: 'mounted', ANIMATION_END: 'unmounted' },
unmounted: { MOUNT: 'mounted' }
}
);
React5.useEffect(() => {
const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(
stylesRef.current
);
prevAnimationNameRef.current =
state === 'mounted' ? currentAnimationName : 'none';
}, [state]);
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
const styles = stylesRef.current;
const wasPresent = prevPresentRef.current;
const hasPresentChanged = wasPresent !== present;
if (hasPresentChanged) {
const prevAnimationName = prevAnimationNameRef.current;
const currentAnimationName =
$921a889cee6df7e8$var$getAnimationName(styles);
if (present) send('MOUNT');
else if (
currentAnimationName === 'none' ||
(styles === null || styles === void 0
? void 0
: styles.display) === 'none'
)
send('UNMOUNT');
else {
const isAnimating = prevAnimationName !== currentAnimationName;
if (wasPresent && isAnimating) send('ANIMATION_OUT');
else send('UNMOUNT');
}
prevPresentRef.current = present;
}
}, [present, send]);
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
if (node1) {
const handleAnimationEnd = (event) => {
const currentAnimationName =
$921a889cee6df7e8$var$getAnimationName(stylesRef.current);
const isCurrentAnimation = currentAnimationName.includes(
event.animationName
);
if (event.target === node1 && isCurrentAnimation)
$7SXl2$reactdom.flushSync(() => send('ANIMATION_END'));
};
const handleAnimationStart = (event) => {
if (event.target === node1)
prevAnimationNameRef.current =
$921a889cee6df7e8$var$getAnimationName(
stylesRef.current
);
};
node1.addEventListener('animationstart', handleAnimationStart);
node1.addEventListener('animationcancel', handleAnimationEnd);
node1.addEventListener('animationend', handleAnimationEnd);
return () => {
node1.removeEventListener(
'animationstart',
handleAnimationStart
);
node1.removeEventListener(
'animationcancel',
handleAnimationEnd
);
node1.removeEventListener('animationend', handleAnimationEnd);
};
} else send('ANIMATION_END');
}, [node1, send]);
return {
isPresent: ['mounted', 'unmountSuspended'].includes(state),
ref: React5.useCallback((node) => {
if (node) stylesRef.current = getComputedStyle(node);
setNode(node);
}, [])
};
}
function $921a889cee6df7e8$var$getAnimationName(styles) {
return (
(styles === null || styles === void 0
? void 0
: styles.animationName) || 'none'
);
}
function $71cd76cc60e0454e$export$6f32135080cb4c3({
prop,
defaultProp,
onChange = () => {}
}) {
const [uncontrolledProp, setUncontrolledProp] =
$71cd76cc60e0454e$var$useUncontrolledState({ defaultProp, onChange });
const isControlled = prop !== void 0;
const value1 = isControlled ? prop : uncontrolledProp;
const handleChange = $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onChange);
const setValue = React5.useCallback(
(nextValue) => {
if (isControlled) {
const setter = nextValue;
const value =
typeof nextValue === 'function' ? setter(prop) : nextValue;
if (value !== prop) handleChange(value);
} else setUncontrolledProp(nextValue);
},
[isControlled, prop, setUncontrolledProp, handleChange]
);
return [value1, setValue];
}
function $71cd76cc60e0454e$var$useUncontrolledState({ defaultProp, onChange }) {
const uncontrolledState = React5.useState(defaultProp);
const [value] = uncontrolledState;
const prevValueRef = React5.useRef(value);
const handleChange = $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onChange);
React5.useEffect(() => {
if (prevValueRef.current !== value) {
handleChange(value);
prevValueRef.current = value;
}
}, [value, prevValueRef, handleChange]);
return uncontrolledState;
}
var $ea1ef594cf570d83$export$439d29a4e110a164 = React5.forwardRef(
(props3, forwardedRef) => {
return React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.span,
_extends({}, props3, {
ref: forwardedRef,
style: {
position: 'absolute',
border: 0,
width: 1,
height: 1,
padding: 0,
margin: -1,
overflow: 'hidden',
clip: 'rect(0, 0, 0, 0)',
whiteSpace: 'nowrap',
wordWrap: 'normal',
...props3.style
}
})
);
}
);
var $ea1ef594cf570d83$export$be92b6f5f03c0fe9 =
$ea1ef594cf570d83$export$439d29a4e110a164;
var [
$a093c7e1ec25a057$var$createTooltipContext,
$a093c7e1ec25a057$export$1c540a2224f0d865
] = $c512c27ab02ef895$export$50c7b4e9d9f19c1('Tooltip', [
$cf1ac5d9fe0e8206$export$722aac194ae923
]);
var $a093c7e1ec25a057$var$usePopperScope =
$cf1ac5d9fe0e8206$export$722aac194ae923();
var $a093c7e1ec25a057$var$PROVIDER_NAME = 'TooltipProvider';
var $a093c7e1ec25a057$var$TOOLTIP_OPEN = 'tooltip.open';
var [
$a093c7e1ec25a057$var$TooltipProviderContextProvider,
$a093c7e1ec25a057$var$useTooltipProviderContext
] = $a093c7e1ec25a057$var$createTooltipContext(
$a093c7e1ec25a057$var$PROVIDER_NAME
);
var $a093c7e1ec25a057$var$TOOLTIP_NAME = 'Tooltip';
var [
$a093c7e1ec25a057$var$TooltipContextProvider,
$a093c7e1ec25a057$var$useTooltipContext
] = $a093c7e1ec25a057$var$createTooltipContext(
$a093c7e1ec25a057$var$TOOLTIP_NAME
);
var $a093c7e1ec25a057$export$28c660c63b792dea = (props3) => {
const {
__scopeTooltip,
children,
open: openProp,
defaultOpen = false,
onOpenChange,
disableHoverableContent: disableHoverableContentProp,
delayDuration: delayDurationProp
} = props3;
const providerContext = $a093c7e1ec25a057$var$useTooltipProviderContext(
$a093c7e1ec25a057$var$TOOLTIP_NAME,
props3.__scopeTooltip
);
const popperScope = $a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
const [trigger, setTrigger] = React5.useState(null);
const contentId = $1746a345f3d73bb7$export$f680877a34711e37();
const openTimerRef = React5.useRef(0);
const disableHoverableContent =
disableHoverableContentProp !== null &&
disableHoverableContentProp !== void 0
? disableHoverableContentProp
: providerContext.disableHoverableContent;
const delayDuration =
delayDurationProp !== null && delayDurationProp !== void 0
? delayDurationProp
: providerContext.delayDuration;
const wasOpenDelayedRef = React5.useRef(false);
const [open1 = false, setOpen] = $71cd76cc60e0454e$export$6f32135080cb4c3({
prop: openProp,
defaultProp: defaultOpen,
onChange: (open) => {
if (open) {
providerContext.onOpen();
document.dispatchEvent(
new CustomEvent($a093c7e1ec25a057$var$TOOLTIP_OPEN)
);
} else providerContext.onClose();
onOpenChange === null ||
onOpenChange === void 0 ||
onOpenChange(open);
}
});
const stateAttribute = React5.useMemo(() => {
return open1
? wasOpenDelayedRef.current
? 'delayed-open'
: 'instant-open'
: 'closed';
}, [open1]);
const handleOpen = React5.useCallback(() => {
window.clearTimeout(openTimerRef.current);
wasOpenDelayedRef.current = false;
setOpen(true);
}, [setOpen]);
const handleClose = React5.useCallback(() => {
window.clearTimeout(openTimerRef.current);
setOpen(false);
}, [setOpen]);
const handleDelayedOpen = React5.useCallback(() => {
window.clearTimeout(openTimerRef.current);
openTimerRef.current = window.setTimeout(() => {
wasOpenDelayedRef.current = true;
setOpen(true);
}, delayDuration);
}, [delayDuration, setOpen]);
React5.useEffect(() => {
return () => window.clearTimeout(openTimerRef.current);
}, []);
return React5.createElement(
$cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9,
popperScope,
React5.createElement(
$a093c7e1ec25a057$var$TooltipContextProvider,
{
scope: __scopeTooltip,
contentId,
open: open1,
stateAttribute,
trigger,
onTriggerChange: setTrigger,
onTriggerEnter: React5.useCallback(() => {
if (providerContext.isOpenDelayed) handleDelayedOpen();
else handleOpen();
}, [
providerContext.isOpenDelayed,
handleDelayedOpen,
handleOpen
]),
onTriggerLeave: React5.useCallback(() => {
if (disableHoverableContent) handleClose();
else window.clearTimeout(openTimerRef.current);
}, [handleClose, disableHoverableContent]),
onOpen: handleOpen,
onClose: handleClose,
disableHoverableContent
},
children
)
);
};
var $a093c7e1ec25a057$var$TRIGGER_NAME = 'TooltipTrigger';
var $a093c7e1ec25a057$export$8c610744efcf8a1d = React5.forwardRef(
(props3, forwardedRef) => {
const { __scopeTooltip, ...triggerProps } = props3;
const context = $a093c7e1ec25a057$var$useTooltipContext(
$a093c7e1ec25a057$var$TRIGGER_NAME,
__scopeTooltip
);
const providerContext = $a093c7e1ec25a057$var$useTooltipProviderContext(
$a093c7e1ec25a057$var$TRIGGER_NAME,
__scopeTooltip
);
const popperScope =
$a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
const ref = React5.useRef(null);
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(
forwardedRef,
ref,
context.onTriggerChange
);
const isPointerDownRef = React5.useRef(false);
const hasPointerMoveOpenedRef = React5.useRef(false);
const handlePointerUp = React5.useCallback(
() => (isPointerDownRef.current = false),
[]
);
React5.useEffect(() => {
return () =>
document.removeEventListener('pointerup', handlePointerUp);
}, [handlePointerUp]);
return React5.createElement(
$cf1ac5d9fe0e8206$export$b688253958b8dfe7,
_extends({ asChild: true }, popperScope),
React5.createElement(
$8927f6f2acc4f386$export$250ffa63cdc0d034.button,
_extends(
{
'aria-describedby': context.open
? context.contentId
: void 0,
'data-state': context.stateAttribute
},
triggerProps,
{
ref: composedRefs,
onPointerMove:
$e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onPointerMove,
(event) => {
if (event.pointerType === 'touch') return;
if (
!hasPointerMoveOpenedRef.current &&
!providerContext.isPointerInTransitRef
.current
) {
context.onTriggerEnter();
hasPointerMoveOpenedRef.current = true;
}
}
),
onPointerLeave:
$e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onPointerLeave,
() => {
context.onTriggerLeave();
hasPointerMoveOpenedRef.current = false;
}
),
onPointerDown:
$e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onPointerDown,
() => {
isPointerDownRef.current = true;
document.addEventListener(
'pointerup',
handlePointerUp,
{ once: true }
);
}
),
onFocus: $e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onFocus,
() => {
if (!isPointerDownRef.current) context.onOpen();
}
),
onBlur: $e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onBlur,
context.onClose
),
onClick: $e42e1063c40fb3ef$export$b9ecd428b558ff10(
props3.onClick,
context.onClose
)
}
)
)
);
}
);
var $a093c7e1ec25a057$var$PORTAL_NAME = 'TooltipPortal';
var [
$a093c7e1ec25a057$var$PortalProvider,
$a093c7e1ec25a057$var$usePortalContext
] = $a093c7e1ec25a057$var$createTooltipContext(
$a093c7e1ec25a057$var$PORTAL_NAME,
{ forceMount: void 0 }
);
var $a093c7e1ec25a057$var$CONTENT_NAME = 'TooltipContent';
var $a093c7e1ec25a057$export$e9003e2be37ec060 = React5.forwardRef(
(props3, forwardedRef) => {
const portalContext = $a093c7e1ec25a057$var$usePortalContext(
$a093c7e1ec25a057$var$CONTENT_NAME,
props3.__scopeTooltip
);
const {
forceMount = portalContext.forceMount,
side = 'top',
...contentProps
} = props3;
const context = $a093c7e1ec25a057$var$useTooltipContext(
$a093c7e1ec25a057$var$CONTENT_NAME,
props3.__scopeTooltip
);
return React5.createElement(
$921a889cee6df7e8$export$99c2b779aa4e8b8b,
{ present: forceMount || context.open },
context.disableHoverableContent
? React5.createElement(
$a093c7e1ec25a057$var$TooltipContentImpl,
_extends({ side }, contentProps, { ref: forwardedRef })
)
: React5.createElement(
$a093c7e1ec25a057$var$TooltipContentHoverable,
_extends({ side }, contentProps, { ref: forwardedRef })
)
);
}
);
var $a093c7e1ec25a057$var$TooltipContentHoverable = React5.forwardRef(
(props3, forwardedRef) => {
const context = $a093c7e1ec25a057$var$useTooltipContext(
$a093c7e1ec25a057$var$CONTENT_NAME,
props3.__scopeTooltip
);
const providerContext = $a093c7e1ec25a057$var$useTooltipProviderContext(
$a093c7e1ec25a057$var$CONTENT_NAME,
props3.__scopeTooltip
);
const ref = React5.useRef(null);
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(
forwardedRef,
ref
);
const [pointerGraceArea, setPointerGraceArea] = React5.useState(null);
const { trigger, onClose } = context;
const content = ref.current;
const { onPointerInTransitChange } = providerContext;
const handleRemoveGraceArea = React5.useCallback(() => {
setPointerGraceArea(null);
onPointerInTransitChange(false);
}, [onPointerInTransitChange]);
const handleCreateGraceArea = React5.useCallback(
(event, hoverTarget) => {
const currentTarget = event.currentTarget;
const exitPoint = { x: event.clientX, y: event.clientY };
const exitSide = $a093c7e1ec25a057$var$getExitSideFromRect(
exitPoint,
currentTarget.getBoundingClientRect()
);
const bleed =
exitSide === 'right' || exitSide === 'bottom' ? -5 : 5;
const isXAxis = exitSide === 'right' || exitSide === 'left';
const startPoint = isXAxis
? { x: event.clientX + bleed, y: event.clientY }
: { x: event.clientX, y: event.clientY + bleed };
const hoverTargetPoints =
$a093c7e1ec25a057$var$getPointsFromRect(
hoverTarget.getBoundingClientRect()
);
const graceArea = $a093c7e1ec25a057$var$getHull([
startPoint,
...hoverTargetPoints
]);
setPointerGraceArea(graceArea);
onPointerInTransitChange(true);
},
[onPointerInTransitChange]
);
React5.useEffect(() => {
return () => handleRemoveGraceArea();
}, [handleRemoveGraceArea]);
React5.useEffect(() => {
if (trigger && content) {
const handleTriggerLeave = (event) =>
handleCreateGraceArea(event, content);
const handleContentLeave = (event) =>
handleCreateGraceArea(event, trigger);
trigger.addEventListener('pointerleave', handleTriggerLeave);
content.addEventListener('pointerleave', handleContentLeave);
return () => {
trigger.removeEventListener(
'pointerleave',
handleTriggerLeave
);
content.removeEventListener(
'pointerleave',
handleContentLeave
);
};
}
}, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);
React5.useEffect(() => {
if (pointerGraceArea) {
const handleTrackPointerGrace = (event) => {
const target = event.target;
const pointerPosition = {
x: event.clientX,
y: event.clientY
};
const hasEnteredTarget =
(trigger === null || trigger === void 0
? void 0
: trigger.contains(target)) ||
(content === null || content === void 0
? void 0
: content.contains(target));
const isPointerOutsideGraceArea =
!$a093c7e1ec25a057$var$isPointInPolygon(
pointerPosition,
pointerGraceArea
);
if (hasEnteredTarget) handleRemoveGraceArea();
else if (isPointerOutsideGraceArea) {
handleRemoveGraceArea();
onClose();
}
};
document.addEventListener(
'pointermove',
handleTrackPointerGrace
);
return () =>
document.removeEventListener(
'pointermove',
handleTrackPointerGrace
);
}
}, [
trigger,
content,
pointerGraceArea,
onClose,
handleRemoveGraceArea
]);
return React5.createElement(
$a093c7e1ec25a057$var$TooltipContentImpl,
_extends({}, props3, { ref: composedRefs })
);
}
);
var [
$a093c7e1ec25a057$var$VisuallyHiddenContentContextProvider,
$a093c7e1ec25a057$var$useVisuallyHiddenContentContext
] = $a093c7e1ec25a057$var$createTooltipContext(
$a093c7e1ec25a057$var$TOOLTIP_NAME,
{ isInside: false }
);
var $a093c7e1ec25a057$var$TooltipContentImpl = React5.forwardRef(
(props3, forwardedRef) => {
const {
__scopeTooltip,
children,
'aria-label': ariaLabel,
onEscapeKeyDown,
onPointerDownOutside,
...contentProps
} = props3;
const context = $a093c7e1ec25a057$var$useTooltipContext(
$a093c7e1ec25a057$var$CONTENT_NAME,
__scopeTooltip
);
const popperScope =
$a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
const { onClose } = context;
React5.useEffect(() => {
document.addEventListener(
$a093c7e1ec25a057$var$TOOLTIP_OPEN,
onClose
);
return () =>
document.removeEventListener(
$a093c7e1ec25a057$var$TOOLTIP_OPEN,
onClose
);
}, [onClose]);
React5.useEffect(() => {
if (context.trigger) {
const handleScroll = (event) => {
const target = event.target;
if (
target !== null &&
target !== void 0 &&
target.contains(context.trigger)
)
onClose();
};
window.addEventListener('scroll', handleScroll, {
capture: true
});
return () =>
window.removeEventListener('scroll', handleScroll, {
capture: true
});
}
}, [context.trigger, onClose]);
return React5.createElement(
$5cb92bef7577960e$export$177fb62ff3ec1f22,
{
asChild: true,
disableOutsidePointerEvents: false,
onEscapeKeyDown,
onPointerDownOutside,
onFocusOutside: (event) => event.preventDefault(),
onDismiss: onClose
},
React5.createElement(
$cf1ac5d9fe0e8206$export$7c6e2c02157bb7d2,
_extends(
{ 'data-state': context.stateAttribute },
popperScope,
contentProps,
{
ref: forwardedRef,
style: {
...contentProps.style,
'--radix-tooltip-content-transform-origin':
'var(--radix-popper-transform-origin)',
'--radix-tooltip-content-available-width':
'var(--radix-popper-available-width)',
'--radix-tooltip-content-available-height':
'var(--radix-popper-available-height)',
'--radix-tooltip-trigger-width':
'var(--radix-popper-anchor-width)',
'--radix-tooltip-trigger-height':
'var(--radix-popper-anchor-height)'
}
}
),
React5.createElement(
$5e63c961fc1ce211$export$d9f1ccf0bdb05d45,
null,
children
),
React5.createElement(
$a093c7e1ec25a057$var$VisuallyHiddenContentContextProvider,
{ scope: __scopeTooltip, isInside: true },
React5.createElement(
$ea1ef594cf570d83$export$be92b6f5f03c0fe9,
{ id: context.contentId, role: 'tooltip' },
ariaLabel || children
)
)
)
);
}
);
var $a093c7e1ec25a057$var$ARROW_NAME = 'TooltipArrow';
var $a093c7e1ec25a057$export$c27ee0ad710f7559 = React5.forwardRef(
(props3, forwardedRef) => {
const { __scopeTooltip, ...arrowProps } = props3;
const popperScope =
$a093c7e1ec25a057$var$usePopperScope(__scopeTooltip);
const visuallyHiddenContentContext =
$a093c7e1ec25a057$var$useVisuallyHiddenContentContext(
$a093c7e1ec25a057$var$ARROW_NAME,
__scopeTooltip
);
return visuallyHiddenContentContext.isInside
? null
: React5.createElement(
$cf1ac5d9fe0e8206$export$21b07c8f274aebd5,
_extends({}, popperScope, arrowProps, { ref: forwardedRef })
);
}
);
function $a093c7e1ec25a057$var$getExitSideFromRect(point, rect) {
const top = Math.abs(rect.top - point.y);
const bottom = Math.abs(rect.bottom - point.y);
const right = Math.abs(rect.right - point.x);
const left = Math.abs(rect.left - point.x);
switch (Math.min(top, bottom, right, left)) {
case left:
return 'left';
case right:
return 'right';
case top:
return 'top';
case bottom:
return 'bottom';
default:
return null;
}
}
function $a093c7e1ec25a057$var$getPointsFromRect(rect) {
const { top, right, bottom, left } = rect;
return [
{ x: left, y: top },
{ x: right, y: top },
{ x: right, y: bottom },
{ x: left, y: bottom }
];
}
function $a093c7e1ec25a057$var$isPointInPolygon(point, polygon) {
const { x: x3, y: y4 } = point;
let inside = false;
for (let i4 = 0, j3 = polygon.length - 1; i4 < polygon.length; j3 = i4++) {
const xi = polygon[i4].x;
const yi = polygon[i4].y;
const xj = polygon[j3].x;
const yj = polygon[j3].y;
const intersect =
yi > y4 !== yj > y4 &&
x3 < ((xj - xi) * (y4 - yi)) / (yj - yi) + xi;
if (intersect) inside = !inside;
}
return inside;
}
function $a093c7e1ec25a057$var$getHull(points) {
const newPoints = points.slice();
newPoints.sort((a4, b4) => {
if (a4.x < b4.x) return -1;
else if (a4.x > b4.x) return 1;
else if (a4.y < b4.y) return -1;
else if (a4.y > b4.y) return 1;
else return 0;
});
return $a093c7e1ec25a057$var$getHullPresorted(newPoints);
}
function $a093c7e1ec25a057$var$getHullPresorted(points) {
if (points.length <= 1) return points.slice();
const upperHull = [];
for (let i4 = 0; i4 < points.length; i4++) {
const p4 = points[i4];
while (upperHull.length >= 2) {
const q3 = upperHull[upperHull.length - 1];
const r4 = upperHull[upperHull.length - 2];
if ((q3.x - r4.x) * (p4.y - r4.y) >= (q3.y - r4.y) * (p4.x - r4.x))
upperHull.pop();
else break;
}
upperHull.push(p4);
}
upperHull.pop();
const lowerHull = [];
for (let i1 = points.length - 1; i1 >= 0; i1--) {
const p4 = points[i1];
while (lowerHull.length >= 2) {
const q3 = lowerHull[lowerHull.length - 1];
const r4 = lowerHull[lowerHull.length - 2];
if ((q3.x - r4.x) * (p4.y - r4.y) >= (q3.y - r4.y) * (p4.x - r4.x))
lowerHull.pop();
else break;
}
lowerHull.push(p4);
}
lowerHull.pop();
if (
upperHull.length === 1 &&
lowerHull.length === 1 &&
upperHull[0].x === lowerHull[0].x &&
upperHull[0].y === lowerHull[0].y
)
return upperHull;
else return upperHull.concat(lowerHull);
}
var $a093c7e1ec25a057$export$be92b6f5f03c0fe9 =
$a093c7e1ec25a057$export$28c660c63b792dea;
var $a093c7e1ec25a057$export$41fb9f06171c75f4 =
$a093c7e1ec25a057$export$8c610744efcf8a1d;
var $a093c7e1ec25a057$export$7c6e2c02157bb7d2 =
$a093c7e1ec25a057$export$e9003e2be37ec060;
var $a093c7e1ec25a057$export$21b07c8f274aebd5 =
$a093c7e1ec25a057$export$c27ee0ad710f7559;
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i4;
for (i4 = 0; i4 < sourceKeys.length; i4++) {
key = sourceKeys[i4];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _objectWithoutProperties(source, excluded) {
if (source == null) return {};
var target = _objectWithoutPropertiesLoose(source, excluded);
var key, i4;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i4 = 0; i4 < sourceSymbolKeys.length; i4++) {
key = sourceSymbolKeys[i4];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key))
continue;
target[key] = source[key];
}
}
return target;
}
var LevaErrors;
(function (LevaErrors2) {
LevaErrors2[(LevaErrors2['UNSUPPORTED_INPUT'] = 0)] = 'UNSUPPORTED_INPUT';
LevaErrors2[(LevaErrors2['NO_COMPONENT_FOR_TYPE'] = 1)] =
'NO_COMPONENT_FOR_TYPE';
LevaErrors2[(LevaErrors2['UNKNOWN_INPUT'] = 2)] = 'UNKNOWN_INPUT';
LevaErrors2[(LevaErrors2['DUPLICATE_KEYS'] = 3)] = 'DUPLICATE_KEYS';
LevaErrors2[(LevaErrors2['ALREADY_REGISTERED_TYPE'] = 4)] =
'ALREADY_REGISTERED_TYPE';
LevaErrors2[(LevaErrors2['CLIPBOARD_ERROR'] = 5)] = 'CLIPBOARD_ERROR';
LevaErrors2[(LevaErrors2['THEME_ERROR'] = 6)] = 'THEME_ERROR';
LevaErrors2[(LevaErrors2['PATH_DOESNT_EXIST'] = 7)] = 'PATH_DOESNT_EXIST';
LevaErrors2[(LevaErrors2['INPUT_TYPE_OVERRIDE'] = 8)] =
'INPUT_TYPE_OVERRIDE';
LevaErrors2[(LevaErrors2['EMPTY_KEY'] = 9)] = 'EMPTY_KEY';
})(LevaErrors || (LevaErrors = {}));
var ErrorList = {
[LevaErrors.UNSUPPORTED_INPUT]: (type, path) => [
`An input with type \`${type}\` input was found at path \`${path}\` but it's not supported yet.`
],
[LevaErrors.NO_COMPONENT_FOR_TYPE]: (type, path) => [
`Type \`${type}\` found at path \`${path}\` can't be displayed in panel because no component supports it yet.`
],
[LevaErrors.UNKNOWN_INPUT]: (path, value) => [
`input at path \`${path}\` is not recognized.`,
value
],
[LevaErrors.DUPLICATE_KEYS]: (key, path, prevPath) => [
`Key \`${key}\` of path \`${path}\` already exists at path \`${prevPath}\`. Even nested keys need to be unique. Rename one of the keys.`
],
[LevaErrors.ALREADY_REGISTERED_TYPE]: (type) => [
`Type ${type} has already been registered. You can't register a component with the same type.`
],
[LevaErrors.CLIPBOARD_ERROR]: (value) => [`Error copying the value`, value],
[LevaErrors.THEME_ERROR]: (category, key) => [
`Error accessing the theme \`${category}.${key}\` value.`
],
[LevaErrors.PATH_DOESNT_EXIST]: (path) => [
`Error getting the value at path \`${path}\`. There is probably an error in your \`render\` function.`
],
[LevaErrors.PATH_DOESNT_EXIST]: (path) => [
`Error accessing the value at path \`${path}\``
],
[LevaErrors.INPUT_TYPE_OVERRIDE]: (path, type, wrongType) => [
`Input at path \`${path}\` already exists with type: \`${type}\`. Its type cannot be overridden with type \`${wrongType}\`.`
],
[LevaErrors.EMPTY_KEY]: () => [
'Keys can not be empty, if you want to hide a label use whitespace.'
]
};
function _log(fn, errorType, ...args) {
const [message, ...rest2] = ErrorList[errorType](...args);
console[fn]('LEVA: ' + message, ...rest2);
}
var warn = _log.bind(null, 'warn');
var log = _log.bind(null, 'log');
var _excluded$a = ['value'];
var _excluded2$4 = ['schema'];
var _excluded3$1 = ['value'];
var Schemas = [];
var Plugins = {};
function getValueType(_ref) {
let { value } = _ref,
settings = _objectWithoutProperties(_ref, _excluded$a);
for (let checker of Schemas) {
const type = checker(value, settings);
if (type) return type;
}
return void 0;
}
function register(type, _ref2) {
let { schema: schema3 } = _ref2,
plugin2 = _objectWithoutProperties(_ref2, _excluded2$4);
if (type in Plugins) {
warn(LevaErrors.ALREADY_REGISTERED_TYPE, type);
return;
}
Schemas.push((value, settings) => schema3(value, settings) && type);
Plugins[type] = plugin2;
}
function createInternalPlugin(plugin2) {
return plugin2;
}
function normalize$3(type, input, path, data) {
const { normalize: _normalize } = Plugins[type];
if (_normalize) return _normalize(input, path, data);
if (typeof input !== 'object' || !('value' in input))
return { value: input };
const { value } = input,
settings = _objectWithoutProperties(input, _excluded3$1);
return { value, settings };
}
function sanitize$4(type, value, settings, prevValue, path, store) {
const { sanitize: sanitize3 } = Plugins[type];
if (sanitize3) return sanitize3(value, settings, prevValue, path, store);
return value;
}
function format$2(type, value, settings) {
const { format: format3 } = Plugins[type];
if (format3) return format3(value, settings);
return value;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
(enumerableOnly &&
(symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})),
keys.push.apply(keys, symbols));
}
return keys;
}
function _objectSpread2(target) {
for (var i4 = 1; i4 < arguments.length; i4++) {
var source = null != arguments[i4] ? arguments[i4] : {};
i4 % 2
? ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
target,
Object.getOwnPropertyDescriptors(source)
)
: ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(
target,
key,
Object.getOwnPropertyDescriptor(source, key)
);
});
}
return target;
}
var clamp = (x3, min3, max3) => (x3 > max3 ? max3 : x3 < min3 ? min3 : x3);
var parseNumber = (v4) => {
if (v4 === '' || typeof v4 === 'number') return v4;
try {
const _v = evaluate(v4);
if (!isNaN(_v)) return _v;
} catch (_unused) {}
return parseFloat(v4);
};
var log10 = Math.log(10);
function getStep(number3) {
let n4 = Math.abs(+String(number3).replace('.', ''));
if (n4 === 0) return 0.01;
while (n4 !== 0 && n4 % 10 === 0) n4 /= 10;
const significantDigits = Math.floor(Math.log(n4) / log10) + 1;
const numberLog = Math.floor(Math.log10(Math.abs(number3)));
const step = Math.pow(10, numberLog - significantDigits);
return Math.max(step, 1e-3);
}
var range = (v4, min3, max3) => {
if (max3 === min3) return 0;
const _v = clamp(v4, min3, max3);
return (_v - min3) / (max3 - min3);
};
var invertedRange = (p4, min3, max3) => p4 * (max3 - min3) + min3;
var getUid = () => '_' + Math.random().toString(36).substr(2, 9);
var parens = /\(([0-9+\-*/^ .]+)\)/;
var exp = /(\d+(?:\.\d+)?) ?\^ ?(\d+(?:\.\d+)?)/;
var mul = /(\d+(?:\.\d+)?) ?\* ?(\d+(?:\.\d+)?)/;
var div = /(\d+(?:\.\d+)?) ?\/ ?(\d+(?:\.\d+)?)/;
var add = /(\d+(?:\.\d+)?) ?\+ ?(\d+(?:\.\d+)?)/;
var sub = /(\d+(?:\.\d+)?) ?- ?(\d+(?:\.\d+)?)/;
function evaluate(expr) {
if (isNaN(Number(expr))) {
if (parens.test(expr)) {
const newExpr = expr.replace(parens, (match, subExpr) =>
String(evaluate(subExpr))
);
return evaluate(newExpr);
} else if (exp.test(expr)) {
const newExpr = expr.replace(exp, (match, base, pow) =>
String(Math.pow(Number(base), Number(pow)))
);
return evaluate(newExpr);
} else if (mul.test(expr)) {
const newExpr = expr.replace(mul, (match, a4, b4) =>
String(Number(a4) * Number(b4))
);
return evaluate(newExpr);
} else if (div.test(expr)) {
const newExpr = expr.replace(div, (match, a4, b4) => {
if (b4 != 0) return String(Number(a4) / Number(b4));
else throw new Error('Division by zero');
});
return evaluate(newExpr);
} else if (add.test(expr)) {
const newExpr = expr.replace(add, (match, a4, b4) =>
String(Number(a4) + Number(b4))
);
return evaluate(newExpr);
} else if (sub.test(expr)) {
const newExpr = expr.replace(sub, (match, a4, b4) =>
String(Number(a4) - Number(b4))
);
return evaluate(newExpr);
} else {
return Number(expr);
}
}
return Number(expr);
}
function pick(object, keys) {
return keys.reduce((obj, key) => {
if (!!object && object.hasOwnProperty(key)) {
obj[key] = object[key];
}
return obj;
}, {});
}
function omit(object, keys) {
const obj = _objectSpread2({}, object);
keys.forEach((k4) => k4 in object && delete obj[k4]);
return obj;
}
function mapArrayToKeys(value, keys) {
return value.reduce(
(acc, v4, i4) => Object.assign(acc, { [keys[i4]]: v4 }),
{}
);
}
function isObject(variable) {
return Object.prototype.toString.call(variable) === '[object Object]';
}
var isEmptyObject = (obj) => isObject(obj) && Object.keys(obj).length === 0;
var SpecialInputs;
(function (SpecialInputs2) {
SpecialInputs2['BUTTON'] = 'BUTTON';
SpecialInputs2['BUTTON_GROUP'] = 'BUTTON_GROUP';
SpecialInputs2['MONITOR'] = 'MONITOR';
SpecialInputs2['FOLDER'] = 'FOLDER';
})(SpecialInputs || (SpecialInputs = {}));
exports.LevaInputs = void 0;
(function (LevaInputs2) {
LevaInputs2['SELECT'] = 'SELECT';
LevaInputs2['IMAGE'] = 'IMAGE';
LevaInputs2['NUMBER'] = 'NUMBER';
LevaInputs2['COLOR'] = 'COLOR';
LevaInputs2['STRING'] = 'STRING';
LevaInputs2['BOOLEAN'] = 'BOOLEAN';
LevaInputs2['INTERVAL'] = 'INTERVAL';
LevaInputs2['VECTOR3D'] = 'VECTOR3D';
LevaInputs2['VECTOR2D'] = 'VECTOR2D';
})(exports.LevaInputs || (exports.LevaInputs = {}));
var _excluded$9 = ['type', '__customInput'];
var _excluded2$3 = [
'render',
'label',
'optional',
'order',
'disabled',
'hint',
'onChange',
'onEditStart',
'onEditEnd',
'transient'
];
var _excluded3 = ['type'];
function parseOptions(_input, key, mergedOptions = {}, customType) {
var _commonOptions$option, _commonOptions$disabl;
if (typeof _input !== 'object' || Array.isArray(_input)) {
return {
type: customType,
input: _input,
options: _objectSpread2(
{ key, label: key, optional: false, disabled: false, order: 0 },
mergedOptions
)
};
}
if ('__customInput' in _input) {
const { type: _type, __customInput } = _input,
options = _objectWithoutProperties(_input, _excluded$9);
return parseOptions(__customInput, key, options, _type);
}
const {
render,
label,
optional: optional2,
order = 0,
disabled,
hint,
onChange,
onEditStart,
onEditEnd,
transient
} = _input,
inputWithType = _objectWithoutProperties(_input, _excluded2$3);
const commonOptions = _objectSpread2(
{
render,
key,
label: label !== null && label !== void 0 ? label : key,
hint,
transient:
transient !== null && transient !== void 0
? transient
: !!onChange,
onEditStart,
onEditEnd,
disabled,
optional: optional2,
order
},
mergedOptions
);
let { type } = inputWithType,
input = _objectWithoutProperties(inputWithType, _excluded3);
type = customType !== null && customType !== void 0 ? customType : type;
if (type in SpecialInputs) {
return { type, input, options: commonOptions };
}
let computedInput;
if (customType && isObject(input) && 'value' in input)
computedInput = input.value;
else computedInput = isEmptyObject(input) ? void 0 : input;
return {
type,
input: computedInput,
options: _objectSpread2(
_objectSpread2({}, commonOptions),
{},
{
onChange,
optional:
(_commonOptions$option = commonOptions.optional) !== null &&
_commonOptions$option !== void 0
? _commonOptions$option
: false,
disabled:
(_commonOptions$disabl = commonOptions.disabled) !== null &&
_commonOptions$disabl !== void 0
? _commonOptions$disabl
: false
}
)
};
}
function normalizeInput(_input, key, path, data) {
const parsedInputAndOptions = parseOptions(_input, key);
const { type, input: parsedInput, options } = parsedInputAndOptions;
if (type) {
if (type in SpecialInputs) return parsedInputAndOptions;
return {
type,
input: normalize$3(type, parsedInput, path, data),
options
};
}
let inputType = getValueType(parsedInput);
if (inputType)
return {
type: inputType,
input: normalize$3(inputType, parsedInput, path, data),
options
};
inputType = getValueType({ value: parsedInput });
if (inputType)
return {
type: inputType,
input: normalize$3(inputType, { value: parsedInput }, path, data),
options
};
return false;
}
function updateInput(input, newValue, path, store, fromPanel) {
const { value, type, settings } = input;
input.value = sanitizeValue(
{ type, value, settings },
newValue,
path,
store
);
input.fromPanel = fromPanel;
}
var ValueError = function ValueError2(message, value, error) {
this.type = 'LEVA_ERROR';
this.message = 'LEVA: ' + message;
this.previousValue = value;
this.error = error;
};
function sanitizeValue({ type, value, settings }, newValue, path, store) {
const _newValue =
type !== 'SELECT' && typeof newValue === 'function'
? newValue(value)
: newValue;
let sanitizedNewValue;
try {
sanitizedNewValue = sanitize$4(
type,
_newValue,
settings,
value,
path,
store
);
} catch (e4) {
throw new ValueError(
`The value \`${newValue}\` did not result in a correct value.`,
value,
e4
);
}
if (dequal(sanitizedNewValue, value)) {
return value;
}
return sanitizedNewValue;
}
var debounce = (callback, wait, immediate = false) => {
let timeout = 0;
return function () {
const args = arguments;
const callNow = immediate && !timeout;
const next = () => callback.apply(this, args);
window.clearTimeout(timeout);
timeout = window.setTimeout(next, wait);
if (callNow) next();
};
};
var multiplyStep = (event) => (event.shiftKey ? 5 : event.altKey ? 1 / 5 : 1);
var _excluded$8 = ['value'];
var _excluded2$2 = ['min', 'max'];
var schema$3 = (v4) => {
if (typeof v4 === 'number') return true;
if (typeof v4 === 'string') {
const _v = parseFloat(v4);
if (isNaN(_v)) return false;
const suffix = v4.substring(('' + _v).length).trim();
return suffix.length < 4;
}
return false;
};
var sanitize$3 = (
v4,
{ min: _min = -Infinity, max: _max = Infinity, suffix }
) => {
const _v = parseFloat(v4);
if (v4 === '' || isNaN(_v)) throw Error('Invalid number');
const f4 = clamp(_v, _min, _max);
return suffix ? f4 + suffix : f4;
};
var format$1 = (v4, { pad: _pad = 0, suffix }) => {
const f4 = parseFloat(v4).toFixed(_pad);
return suffix ? f4 + suffix : f4;
};
var normalize$2 = (_ref) => {
let { value } = _ref,
settings = _objectWithoutProperties(_ref, _excluded$8);
const { min: min3 = -Infinity, max: max3 = Infinity } = settings,
_settings = _objectWithoutProperties(settings, _excluded2$2);
let _value = parseFloat(value);
const suffix =
typeof value === 'string'
? value.substring(('' + _value).length)
: void 0;
_value = clamp(_value, min3, max3);
let step = settings.step;
if (!step) {
if (Number.isFinite(min3)) {
if (Number.isFinite(max3))
step = +(Math.abs(max3 - min3) / 100).toPrecision(1);
else step = +(Math.abs(_value - min3) / 100).toPrecision(1);
} else if (Number.isFinite(max3))
step = +(Math.abs(max3 - _value) / 100).toPrecision(1);
}
const padStep = step ? getStep(step) * 10 : getStep(_value);
step = step || padStep / 10;
const pad = Math.round(clamp(Math.log10(1 / padStep), 0, 2));
return {
value: suffix ? _value + suffix : _value,
settings: _objectSpread2(
{ initialValue: _value, step, pad, min: min3, max: max3, suffix },
_settings
)
};
};
var sanitizeStep$1 = (v4, { step, initialValue }) => {
const steps = Math.round((v4 - initialValue) / step);
return initialValue + steps * step;
};
var props$3 = Object.freeze({
__proto__: null,
schema: schema$3,
sanitize: sanitize$3,
format: format$1,
normalize: normalize$2,
sanitizeStep: sanitizeStep$1
});
function _extends2() {
_extends2 = Object.assign
? Object.assign.bind()
: function (target) {
for (var i4 = 1; i4 < arguments.length; i4++) {
var source = arguments[i4];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends2.apply(this, arguments);
}
var InputContext = React5.createContext({});
function useInputContext() {
return React5.useContext(InputContext);
}
var ThemeContext = React5.createContext(null);
var StoreContext = React5.createContext(null);
var PanelSettingsContext = React5.createContext(null);
function useStoreContext() {
return React5.useContext(StoreContext);
}
function usePanelSettingsContext() {
return React5.useContext(PanelSettingsContext);
}
function LevaStoreProvider({ children, store }) {
return React5.createElement(
StoreContext.Provider,
{ value: store },
children
);
}
var getDefaultTheme = () => ({
colors: {
elevation1: '#292d39',
elevation2: '#181c20',
elevation3: '#373c4b',
accent1: '#0066dc',
accent2: '#007bff',
accent3: '#3c93ff',
highlight1: '#535760',
highlight2: '#8c92a4',
highlight3: '#fefefe',
vivid1: '#ffcc00',
folderWidgetColor: '$highlight2',
folderTextColor: '$highlight3',
toolTipBackground: '$highlight3',
toolTipText: '$elevation2'
},
radii: { xs: '2px', sm: '3px', lg: '10px' },
space: { xs: '3px', sm: '6px', md: '10px', rowGap: '7px', colGap: '7px' },
fonts: {
mono: `ui-monospace, SFMono-Regular, Menlo, 'Roboto Mono', monospace`,
sans: `system-ui, sans-serif`
},
fontSizes: { root: '11px', toolTip: '$root' },
sizes: {
rootWidth: '280px',
controlWidth: '160px',
numberInputMinWidth: '38px',
scrubberWidth: '8px',
scrubberHeight: '16px',
rowHeight: '24px',
folderTitleHeight: '20px',
checkboxSize: '16px',
joystickWidth: '100px',
joystickHeight: '100px',
colorPickerWidth: '$controlWidth',
colorPickerHeight: '100px',
imagePreviewWidth: '$controlWidth',
imagePreviewHeight: '100px',
monitorHeight: '60px',
titleBarHeight: '39px'
},
shadows: { level1: '0 0 9px 0 #00000088', level2: '0 4px 14px #00000033' },
borderWidths: {
root: '0px',
input: '1px',
focus: '1px',
hover: '1px',
active: '1px',
folder: '1px'
},
fontWeights: { label: 'normal', folder: 'normal', button: 'normal' }
});
function createStateClass(value, options) {
const [borderColor, bgColor] = value.split(' ');
const css2 = {};
if (borderColor !== 'none') {
css2.boxShadow = `${options.inset ? 'inset ' : ''}0 0 0 $borderWidths${[options.key]} $colors${(borderColor !== 'default' && borderColor) || options.borderColor}`;
}
if (bgColor) {
css2.backgroundColor = bgColor;
}
return css2;
}
var utils = {
$inputStyle: () => (value) =>
createStateClass(value, {
key: '$input',
borderColor: '$highlight1',
inset: true
}),
$focusStyle: () => (value) =>
createStateClass(value, { key: '$focus', borderColor: '$accent2' }),
$hoverStyle: () => (value) =>
createStateClass(value, {
key: '$hover',
borderColor: '$accent1',
inset: true
}),
$activeStyle: () => (value) =>
createStateClass(value, {
key: '$active',
borderColor: '$accent1',
inset: true
})
};
var { styled, css, createTheme, globalCss, keyframes } = q({
prefix: 'leva',
theme: getDefaultTheme(),
utils: _objectSpread2(
_objectSpread2({}, utils),
{},
{
$flex: () => ({ display: 'flex', alignItems: 'center' }),
$flexCenter: () => ({
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}),
$reset: () => ({
outline: 'none',
fontSize: 'inherit',
fontWeight: 'inherit',
color: 'inherit',
fontFamily: 'inherit',
border: 'none',
backgroundColor: 'transparent',
appearance: 'none'
}),
$draggable: () => ({
touchAction: 'none',
WebkitUserDrag: 'none',
userSelect: 'none'
}),
$focus: (value) => ({ '&:focus': utils.$focusStyle()(value) }),
$focusWithin: (value) => ({
'&:focus-within': utils.$focusStyle()(value)
}),
$hover: (value) => ({ '&:hover': utils.$hoverStyle()(value) }),
$active: (value) => ({ '&:active': utils.$activeStyle()(value) })
}
)
});
var globalStyles = globalCss({
'.leva__panel__dragged': {
WebkitUserDrag: 'none',
userSelect: 'none',
input: { userSelect: 'none' },
'*': { cursor: 'ew-resize !important' }
}
});
function mergeTheme(newTheme) {
const defaultTheme = getDefaultTheme();
if (!newTheme) return { theme: defaultTheme, className: '' };
Object.keys(newTheme).forEach((key) => {
Object.assign(defaultTheme[key], newTheme[key]);
});
const customTheme = createTheme(defaultTheme);
return { theme: defaultTheme, className: customTheme.className };
}
function useTh(category, key) {
const { theme } = React5.useContext(ThemeContext);
if (!(category in theme) || !(key in theme[category])) {
warn(LevaErrors.THEME_ERROR, category, key);
return '';
}
let _key = key;
while (true) {
let value = theme[category][_key];
if (typeof value === 'string' && value.charAt(0) === '$')
_key = value.substr(1);
else return value;
}
}
var StyledInput = styled('input', {
$reset: '',
padding: '0 $sm',
width: 0,
minWidth: 0,
flex: 1,
height: '100%',
variants: {
levaType: { number: { textAlign: 'right' } },
as: { textarea: { padding: '$sm' } }
}
});
var InnerLabel = styled('div', {
$draggable: '',
height: '100%',
$flexCenter: '',
position: 'relative',
padding: '0 $xs',
fontSize: '0.8em',
opacity: 0.8,
cursor: 'default',
touchAction: 'none',
[`& + ${StyledInput}`]: { paddingLeft: 0 }
});
var InnerNumberLabel = styled(InnerLabel, {
cursor: 'ew-resize',
marginRight: '-$xs',
textTransform: 'uppercase',
opacity: 0.3,
'&:hover': { opacity: 1 },
variants: {
dragging: { true: { backgroundColor: '$accent2', opacity: 1 } }
}
});
var InputContainer = styled('div', {
$flex: '',
position: 'relative',
borderRadius: '$sm',
overflow: 'hidden',
color: 'inherit',
height: '$rowHeight',
backgroundColor: '$elevation3',
$inputStyle: '$elevation1',
$hover: '',
$focusWithin: '',
variants: { textArea: { true: { height: 'auto' } } }
});
var _excluded$7 = [
'innerLabel',
'value',
'onUpdate',
'onChange',
'onKeyDown',
'type',
'id',
'inputType',
'rows'
];
var _excluded2$1 = ['onUpdate'];
function ValueInput(_ref) {
let {
innerLabel,
value,
onUpdate,
onChange,
onKeyDown,
type,
id,
inputType = 'text',
rows = 0
} = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$7);
const {
id: _id,
emitOnEditStart,
emitOnEditEnd,
disabled
} = useInputContext();
const inputId = id || _id;
const inputRef = React5.useRef(null);
const isTextArea = rows > 0;
const asType = isTextArea ? 'textarea' : 'input';
const update = React5.useCallback(
(fn) => (event) => {
const _value = event.currentTarget.value;
fn(_value);
},
[]
);
React5.useEffect(() => {
const ref = inputRef.current;
const _onUpdate = update((value2) => {
onUpdate(value2);
emitOnEditEnd();
});
ref === null || ref === void 0
? void 0
: ref.addEventListener('blur', _onUpdate);
return () =>
ref === null || ref === void 0
? void 0
: ref.removeEventListener('blur', _onUpdate);
}, [update, onUpdate, emitOnEditEnd]);
const onKeyPress = React5.useCallback(
(event) => {
if (event.key === 'Enter') {
update(onUpdate)(event);
}
},
[update, onUpdate]
);
const inputProps = Object.assign(
{ as: asType },
isTextArea ? { rows } : {},
props3
);
return React5.createElement(
InputContainer,
{ textArea: isTextArea },
innerLabel && typeof innerLabel === 'string'
? React5.createElement(InnerLabel, null, innerLabel)
: innerLabel,
React5.createElement(
StyledInput,
_extends2(
{
levaType: type,
ref: inputRef,
id: inputId,
type: inputType,
autoComplete: 'off',
spellCheck: 'false',
value,
onChange: update(onChange),
onFocus: () => emitOnEditStart(),
onKeyPress,
onKeyDown,
disabled
},
inputProps
)
)
);
}
function NumberInput(_ref2) {
let { onUpdate } = _ref2,
props3 = _objectWithoutProperties(_ref2, _excluded2$1);
const _onUpdate = React5.useCallback(
(v4) => onUpdate(parseNumber(v4)),
[onUpdate]
);
const onKeyDown = React5.useCallback(
(event) => {
const dir =
event.key === 'ArrowUp'
? 1
: event.key === 'ArrowDown'
? -1
: 0;
if (dir) {
event.preventDefault();
const step = event.altKey ? 0.1 : event.shiftKey ? 10 : 1;
onUpdate((v4) => parseFloat(v4) + dir * step);
}
},
[onUpdate]
);
return React5.createElement(
ValueInput,
_extends2({}, props3, {
onUpdate: _onUpdate,
onKeyDown,
type: 'number'
})
);
}
var StyledFolder = styled('div', {});
var StyledWrapper = styled('div', {
position: 'relative',
background: '$elevation2',
transition: 'height 300ms ease',
variants: {
fill: { true: {}, false: {} },
flat: { false: {}, true: {} },
isRoot: {
true: {},
false: {
paddingLeft: '$md',
'&::after': {
content: '""',
position: 'absolute',
left: 0,
top: 0,
width: '$borderWidths$folder',
height: '100%',
backgroundColor: '$folderWidgetColor',
opacity: 0.4,
transform: 'translateX(-50%)'
}
}
}
},
compoundVariants: [
{
isRoot: true,
fill: false,
css: {
overflowY: 'auto',
maxHeight: 'calc(100vh - 20px - $$titleBarHeight)'
}
},
{ isRoot: true, flat: false, css: { borderRadius: '$lg' } }
]
});
var StyledTitle = styled('div', {
$flex: '',
color: '$folderTextColor',
userSelect: 'none',
cursor: 'pointer',
height: '$folderTitleHeight',
fontWeight: '$folder',
'> svg': {
marginLeft: -4,
marginRight: 4,
cursor: 'pointer',
fill: '$folderWidgetColor',
opacity: 0.6
},
'&:hover > svg': { fill: '$folderWidgetColor' },
[`&:hover + ${StyledWrapper}::after`]: { opacity: 0.6 },
[`${StyledFolder}:hover > & + ${StyledWrapper}::after`]: { opacity: 0.6 },
[`${StyledFolder}:hover > & > svg`]: { opacity: 1 }
});
var StyledContent = styled('div', {
position: 'relative',
display: 'grid',
gridTemplateColumns: '100%',
rowGap: '$rowGap',
transition: 'opacity 250ms ease',
variants: {
toggled: {
true: { opacity: 1, transitionDelay: '250ms' },
false: { opacity: 0, transitionDelay: '0ms', pointerEvents: 'none' }
},
isRoot: {
true: {
'& > div': { paddingLeft: '$md', paddingRight: '$md' },
'& > div:first-of-type': { paddingTop: '$sm' },
'& > div:last-of-type': { paddingBottom: '$sm' },
[`> ${StyledFolder}:not(:first-of-type)`]: {
paddingTop: '$sm',
marginTop: '$md',
borderTop: '$borderWidths$folder solid $colors$elevation1'
}
}
}
}
});
var StyledRow = styled('div', {
position: 'relative',
zIndex: 100,
display: 'grid',
rowGap: '$rowGap',
gridTemplateRows: 'minmax($sizes$rowHeight, max-content)',
alignItems: 'center',
color: '$highlight2',
[`${StyledContent} > &`]: {
'&:first-of-type': { marginTop: '$rowGap' },
'&:last-of-type': { marginBottom: '$rowGap' }
},
variants: {
disabled: {
true: { pointerEvents: 'none' },
false: { '&:hover,&:focus-within': { color: '$highlight3' } }
}
}
});
var StyledInputRow = styled(StyledRow, {
gridTemplateColumns: 'auto $sizes$controlWidth',
columnGap: '$colGap'
});
var CopyLabelContainer = styled('div', {
$flex: '',
height: '100%',
position: 'relative',
overflow: 'hidden',
'& > div': { marginLeft: '$colGap', padding: '0 $xs', opacity: 0.4 },
'& > div:hover': { opacity: 0.8 },
'& > div > svg': {
display: 'none',
cursor: 'pointer',
width: 13,
minWidth: 13,
height: 13,
backgroundColor: '$elevation2'
},
'&:hover > div > svg': { display: 'block' },
variants: {
align: {
top: { height: '100%', alignItems: 'flex-start', paddingTop: '$sm' }
}
}
});
var StyledOptionalToggle = styled('input', {
$reset: '',
height: 0,
width: 0,
opacity: 0,
margin: 0,
'& + label': {
position: 'relative',
$flexCenter: '',
height: '100%',
userSelect: 'none',
cursor: 'pointer',
paddingLeft: 2,
paddingRight: '$sm',
pointerEvents: 'auto'
},
'& + label:after': {
content: '""',
width: 6,
height: 6,
backgroundColor: '$elevation3',
borderRadius: '50%',
$activeStyle: ''
},
'&:focus + label:after': { $focusStyle: '' },
'& + label:active:after': { backgroundColor: '$accent1', $focusStyle: '' },
'&:checked + label:after': { backgroundColor: '$accent1' }
});
var StyledLabel = styled('label', {
fontWeight: '$label',
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
'& > svg': { display: 'block' }
});
var StyledInputWrapper$1 = styled('div', {
opacity: 1,
variants: {
disabled: {
true: {
opacity: 0.6,
pointerEvents: 'none',
[`& ${StyledLabel}`]: { pointerEvents: 'auto' }
}
}
}
});
var Overlay = styled('div', {
position: 'fixed',
top: 0,
bottom: 0,
right: 0,
left: 0,
zIndex: 1e3,
userSelect: 'none'
});
var StyledToolTipContent = styled('div', {
background: '$toolTipBackground',
fontFamily: '$sans',
fontSize: '$toolTip',
padding: '$xs $sm',
color: '$toolTipText',
borderRadius: '$xs',
boxShadow: '$level2',
maxWidth: 260
});
var ToolTipArrow = styled($a093c7e1ec25a057$export$21b07c8f274aebd5, {
fill: '$toolTipBackground'
});
function Portal({ children }) {
const { className } = React5.useContext(ThemeContext);
return React5.createElement(
$f1701beae083dbae$export$be92b6f5f03c0fe9,
{ className },
children
);
}
var _excluded$6 = ['align'];
function OptionalToggle() {
const { id, disable, disabled } = useInputContext();
return React5.createElement(
React5.Fragment,
null,
React5.createElement(StyledOptionalToggle, {
id: id + '__disable',
type: 'checkbox',
checked: !disabled,
onChange: () => disable(!disabled)
}),
React5.createElement('label', { htmlFor: id + '__disable' })
);
}
function RawLabel(props3) {
const { id, optional: optional2, hint } = useInputContext();
const htmlFor = props3.htmlFor || (id ? { htmlFor: id } : null);
const title =
!hint && typeof props3.children === 'string'
? { title: props3.children }
: null;
return React5.createElement(
React5.Fragment,
null,
optional2 && React5.createElement(OptionalToggle, null),
hint !== void 0
? React5.createElement(
$a093c7e1ec25a057$export$be92b6f5f03c0fe9,
null,
React5.createElement(
$a093c7e1ec25a057$export$41fb9f06171c75f4,
{ asChild: true },
React5.createElement(
StyledLabel,
_extends2({}, htmlFor, props3)
)
),
React5.createElement(
$a093c7e1ec25a057$export$7c6e2c02157bb7d2,
{ side: 'top', sideOffset: 2 },
React5.createElement(
StyledToolTipContent,
null,
hint,
React5.createElement(ToolTipArrow, null)
)
)
)
: React5.createElement(
StyledLabel,
_extends2({}, htmlFor, title, props3)
)
);
}
function Label(_ref) {
let { align } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$6);
const { value, label, key, disabled } = useInputContext();
const { hideCopyButton } = usePanelSettingsContext();
const copyEnabled = !hideCopyButton && key !== void 0;
const [copied, setCopied] = React5.useState(false);
const handleClick = async () => {
try {
await navigator.clipboard.writeText(
JSON.stringify({
[key]: value !== null && value !== void 0 ? value : ''
})
);
setCopied(true);
} catch (_unused) {
warn(LevaErrors.CLIPBOARD_ERROR, { [key]: value });
}
};
return React5.createElement(
CopyLabelContainer,
{ align, onPointerLeave: () => setCopied(false) },
React5.createElement(RawLabel, props3),
copyEnabled &&
!disabled &&
React5.createElement(
'div',
{
title: `Click to copy ${typeof label === 'string' ? label : key} value`
},
!copied
? React5.createElement(
'svg',
{
onClick: handleClick,
xmlns: 'http://www.w3.org/2000/svg',
viewBox: '0 0 20 20',
fill: 'currentColor'
},
React5.createElement('path', {
d: 'M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z'
}),
React5.createElement('path', {
d: 'M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z'
})
)
: React5.createElement(
'svg',
{
xmlns: 'http://www.w3.org/2000/svg',
viewBox: '0 0 20 20',
fill: 'currentColor'
},
React5.createElement('path', {
d: 'M9 2a1 1 0 000 2h2a1 1 0 100-2H9z'
}),
React5.createElement('path', {
fillRule: 'evenodd',
d: 'M4 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v11a2 2 0 01-2 2H6a2 2 0 01-2-2V5zm9.707 5.707a1 1 0 00-1.414-1.414L9 12.586l-1.293-1.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z',
clipRule: 'evenodd'
})
)
)
);
}
var _excluded$5 = ['toggled'];
var Svg = styled('svg', {
fill: 'currentColor',
transition: 'transform 350ms ease, fill 250ms ease'
});
function Chevron(_ref) {
let { toggled } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$5);
return React5.createElement(
Svg,
_extends2(
{
width: '9',
height: '5',
viewBox: '0 0 9 5',
xmlns: 'http://www.w3.org/2000/svg',
style: { transform: `rotate(${toggled ? 0 : -90}deg)` }
},
props3
),
React5.createElement('path', {
d: 'M3.8 4.4c.4.3 1 .3 1.4 0L8 1.7A1 1 0 007.4 0H1.6a1 1 0 00-.7 1.7l3 2.7z'
})
);
}
var _excluded$4 = ['input'];
function Row(_ref) {
let { input } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$4);
if (input) return React5.createElement(StyledInputRow, props3);
return React5.createElement(StyledRow, props3);
}
function useInputSetters({ value, type, settings, setValue }) {
const [displayValue, setDisplayValue] = React5.useState(
format$2(type, value, settings)
);
const previousValueRef = React5.useRef(value);
const settingsRef = React5.useRef(settings);
settingsRef.current = settings;
const setFormat = React5.useCallback(
(v4) => setDisplayValue(format$2(type, v4, settingsRef.current)),
[type]
);
const onUpdate = React5.useCallback(
(updatedValue) => {
try {
setValue(updatedValue);
} catch (error) {
const { type: type2, previousValue } = error;
if (type2 !== 'LEVA_ERROR') throw error;
setFormat(previousValue);
}
},
[setFormat, setValue]
);
React5.useEffect(() => {
if (!dequal(value, previousValueRef.current)) {
setFormat(value);
}
previousValueRef.current = value;
}, [value, setFormat]);
return { displayValue, onChange: setDisplayValue, onUpdate };
}
function useDrag2(handler, config) {
const { emitOnEditStart, emitOnEditEnd } = useInputContext();
return useDrag((state) => {
if (state.first) {
document.body.classList.add('leva__panel__dragged');
emitOnEditStart === null || emitOnEditStart === void 0
? void 0
: emitOnEditStart();
}
const result = handler(state);
if (state.last) {
document.body.classList.remove('leva__panel__dragged');
emitOnEditEnd === null || emitOnEditEnd === void 0
? void 0
: emitOnEditEnd();
}
return result;
}, config);
}
function useCanvas2d(fn) {
const canvas = React5.useRef(null);
const ctx = React5.useRef(null);
const hasFired = React5.useRef(false);
React5.useEffect(() => {
const handleCanvas = debounce(() => {
canvas.current.width =
canvas.current.offsetWidth * window.devicePixelRatio;
canvas.current.height =
canvas.current.offsetHeight * window.devicePixelRatio;
fn(canvas.current, ctx.current);
}, 250);
window.addEventListener('resize', handleCanvas);
if (!hasFired.current) {
handleCanvas();
hasFired.current = true;
}
return () => window.removeEventListener('resize', handleCanvas);
}, [fn]);
React5.useEffect(() => {
ctx.current = canvas.current.getContext('2d');
}, []);
return [canvas, ctx];
}
function useTransform() {
const ref = React5.useRef(null);
const local = React5.useRef({ x: 0, y: 0 });
const set = React5.useCallback((point) => {
Object.assign(local.current, point);
if (ref.current)
ref.current.style.transform = `translate3d(${local.current.x}px, ${local.current.y}px, 0)`;
}, []);
return [ref, set];
}
var _excluded$3 = ['__refCount'];
var getInputAtPath = (data, path) => {
if (!data[path]) return null;
const _data$path = data[path],
input = _objectWithoutProperties(_data$path, _excluded$3);
return input;
};
function useInput(path) {
const store = useStoreContext();
const [state, setState] = React5.useState(getInputAtPath(store.getData(), path));
const set = React5.useCallback(
(value) => store.setValueAtPath(path, value, true),
[path, store]
);
const setSettings = React5.useCallback(
(settings) => store.setSettingsAtPath(path, settings),
[path, store]
);
const disable = React5.useCallback(
(flag) => store.disableInputAtPath(path, flag),
[path, store]
);
const emitOnEditStart = React5.useCallback(
() => store.emitOnEditStart(path),
[path, store]
);
const emitOnEditEnd = React5.useCallback(
() => store.emitOnEditEnd(path),
[path, store]
);
React5.useEffect(() => {
setState(getInputAtPath(store.getData(), path));
const unsub = store.useStore.subscribe(
(s4) => getInputAtPath(s4.data, path),
setState,
{ equalityFn: shallow }
);
return () => unsub();
}, [store, path]);
return [
state,
{
set,
setSettings,
disable,
storeId: store.storeId,
emitOnEditStart,
emitOnEditEnd
}
];
}
var RangeGrid = styled('div', {
variants: {
hasRange: {
true: {
position: 'relative',
display: 'grid',
gridTemplateColumns: 'auto $sizes$numberInputMinWidth',
columnGap: '$colGap',
alignItems: 'center'
}
}
}
});
var Range = styled('div', {
position: 'relative',
width: '100%',
height: 2,
borderRadius: '$xs',
backgroundColor: '$elevation1'
});
var Scrubber = styled('div', {
position: 'absolute',
width: '$scrubberWidth',
height: '$scrubberHeight',
borderRadius: '$xs',
boxShadow: '0 0 0 2px $colors$elevation2',
backgroundColor: '$accent2',
cursor: 'pointer',
$active: 'none $accent1',
$hover: 'none $accent3',
variants: {
position: {
left: {
borderTopRightRadius: 0,
borderBottomRightRadius: 0,
transform:
'translateX(calc(-0.5 * ($sizes$scrubberWidth + 4px)))'
},
right: {
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0,
transform:
'translateX(calc(0.5 * ($sizes$scrubberWidth + 4px)))'
}
}
}
});
var RangeWrapper = styled('div', {
position: 'relative',
$flex: '',
height: '100%',
cursor: 'pointer',
touchAction: 'none'
});
var Indicator = styled('div', {
position: 'absolute',
height: '100%',
backgroundColor: '$accent2'
});
function RangeSlider({
value,
min: min3,
max: max3,
onDrag,
step,
initialValue
}) {
const ref = React5.useRef(null);
const scrubberRef = React5.useRef(null);
const rangeWidth = React5.useRef(0);
const scrubberWidth = useTh('sizes', 'scrubberWidth');
const bind = useDrag2(
({ event, first, xy: [x3], movement: [mx], memo }) => {
if (first) {
const { width, left } = ref.current.getBoundingClientRect();
rangeWidth.current = width - parseFloat(scrubberWidth);
const targetIsScrub =
(event === null || event === void 0
? void 0
: event.target) === scrubberRef.current;
memo = targetIsScrub
? value
: invertedRange((x3 - left) / width, min3, max3);
}
const newValue =
memo + invertedRange(mx / rangeWidth.current, 0, max3 - min3);
onDrag(sanitizeStep$1(newValue, { step, initialValue }));
return memo;
}
);
const pos = range(value, min3, max3);
return React5.createElement(
RangeWrapper,
_extends2({ ref }, bind()),
React5.createElement(
Range,
null,
React5.createElement(Indicator, {
style: { left: 0, right: `${(1 - pos) * 100}%` }
})
),
React5.createElement(Scrubber, {
ref: scrubberRef,
style: { left: `calc(${pos} * (100% - ${scrubberWidth}))` }
})
);
}
var DraggableLabel = React5.memo(
({ label, onUpdate, step, innerLabelTrim }) => {
const [dragging, setDragging] = React5.useState(false);
const bind = useDrag2(
({
active,
delta: [dx],
event,
memo: _memo = 0,
first,
last,
target
}) => {
if (first) {
const label2 = target;
label2.requestPointerLock();
}
if (last) {
document.exitPointerLock();
}
setDragging(active);
_memo += dx / 2;
if (Math.abs(_memo) >= 1) {
onUpdate(
(v4) =>
parseFloat(v4) +
Math.floor(_memo) * step * multiplyStep(event)
);
_memo = 0;
}
return _memo;
}
);
return React5.createElement(
InnerNumberLabel,
_extends2(
{ dragging, title: label.length > 1 ? label : '' },
bind()
),
label.slice(0, innerLabelTrim)
);
}
);
function Number$1({
label,
id,
displayValue,
onUpdate,
onChange,
settings,
innerLabelTrim = 1
}) {
const InnerLabel2 =
innerLabelTrim > 0 &&
React5.createElement(DraggableLabel, {
label,
step: settings.step,
onUpdate,
innerLabelTrim
});
return React5.createElement(NumberInput, {
id,
value: String(displayValue),
onUpdate,
onChange,
innerLabel: InnerLabel2
});
}
function NumberComponent() {
const props3 = useInputContext();
const { label, value, onUpdate, settings, id } = props3;
const { min: min3, max: max3 } = settings;
const hasRange = max3 !== Infinity && min3 !== -Infinity;
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(
RangeGrid,
{ hasRange },
hasRange &&
React5.createElement(
RangeSlider,
_extends2(
{ value: parseFloat(value), onDrag: onUpdate },
settings
)
),
React5.createElement(
Number$1,
_extends2({}, props3, {
id,
label: 'value',
innerLabelTrim: hasRange ? 0 : 1
})
)
)
);
}
var { sanitizeStep } = props$3;
var rest = _objectWithoutProperties(props$3, ['sanitizeStep']);
var number = createInternalPlugin(
_objectSpread2({ component: NumberComponent }, rest)
);
var schema$2 = (_o, s4) =>
v8n_esm_default()
.schema({
options: v8n_esm_default().passesAnyOf(
v8n_esm_default().object(),
v8n_esm_default().array()
)
})
.test(s4);
var sanitize$2 = (value, { values }) => {
if (values.indexOf(value) < 0)
throw Error(`Selected value doesn't match Select options`);
return value;
};
var format = (value, { values }) => {
return values.indexOf(value);
};
var normalize$1 = (input) => {
let { value, options } = input;
let keys;
let values;
if (Array.isArray(options)) {
values = options;
keys = options.map((o4) => String(o4));
} else {
values = Object.values(options);
keys = Object.keys(options);
}
if (!('value' in input)) value = values[0];
else if (!values.includes(value)) {
keys.unshift(String(value));
values.unshift(value);
}
if (!Object.values(options).includes(value)) options[String(value)] = value;
return { value, settings: { keys, values } };
};
var props$2 = Object.freeze({
__proto__: null,
schema: schema$2,
sanitize: sanitize$2,
format,
normalize: normalize$1
});
var SelectContainer = styled('div', {
$flexCenter: '',
position: 'relative',
'> svg': { pointerEvents: 'none', position: 'absolute', right: '$md' }
});
var NativeSelect = styled('select', {
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
opacity: 0
});
var PresentationalSelect = styled('div', {
display: 'flex',
alignItems: 'center',
width: '100%',
height: '$rowHeight',
backgroundColor: '$elevation3',
borderRadius: '$sm',
padding: '0 $sm',
cursor: 'pointer',
[`${NativeSelect}:focus + &`]: { $focusStyle: '' },
[`${NativeSelect}:hover + &`]: { $hoverStyle: '' }
});
function Select({ displayValue, value, onUpdate, id, settings, disabled }) {
const { keys, values } = settings;
const lastDisplayedValue = React5.useRef();
if (value === values[displayValue]) {
lastDisplayedValue.current = keys[displayValue];
}
return React5.createElement(
SelectContainer,
null,
React5.createElement(
NativeSelect,
{
id,
value: displayValue,
onChange: (e4) =>
onUpdate(values[Number(e4.currentTarget.value)]),
disabled
},
keys.map((key, index2) =>
React5.createElement('option', { key, value: index2 }, key)
)
),
React5.createElement(
PresentationalSelect,
null,
lastDisplayedValue.current
),
React5.createElement(Chevron, { toggled: true })
);
}
function SelectComponent() {
const { label, value, displayValue, onUpdate, id, disabled, settings } =
useInputContext();
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(Select, {
id,
value,
displayValue,
onUpdate,
settings,
disabled
})
);
}
var select = createInternalPlugin(
_objectSpread2({ component: SelectComponent }, props$2)
);
var schema$1 = (o4) => v8n_esm_default().string().test(o4);
var sanitize$1 = (v4) => {
if (typeof v4 !== 'string') throw Error(`Invalid string`);
return v4;
};
var normalize = ({
value,
editable: _editable = true,
rows: _rows = false
}) => {
return {
value,
settings: {
editable: _editable,
rows: typeof _rows === 'number' ? _rows : _rows ? 5 : 0
}
};
};
var props$1 = Object.freeze({
__proto__: null,
schema: schema$1,
sanitize: sanitize$1,
normalize
});
var _excluded$2 = ['displayValue', 'onUpdate', 'onChange', 'editable'];
var NonEditableString = styled('div', { whiteSpace: 'pre-wrap' });
function String$1(_ref) {
let { displayValue, onUpdate, onChange, editable = true } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$2);
if (editable)
return React5.createElement(
ValueInput,
_extends2({ value: displayValue, onUpdate, onChange }, props3)
);
return React5.createElement(NonEditableString, null, displayValue);
}
function StringComponent() {
const { label, settings, displayValue, onUpdate, onChange } =
useInputContext();
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(
String$1,
_extends2({ displayValue, onUpdate, onChange }, settings)
)
);
}
var string = createInternalPlugin(
_objectSpread2({ component: StringComponent }, props$1)
);
var schema = (o4) => v8n_esm_default().boolean().test(o4);
var sanitize = (v4) => {
if (typeof v4 !== 'boolean') throw Error('Invalid boolean');
return v4;
};
var props = Object.freeze({ __proto__: null, schema, sanitize });
var StyledInputWrapper = styled('div', {
position: 'relative',
$flex: '',
height: '$rowHeight',
input: { $reset: '', height: 0, width: 0, opacity: 0, margin: 0 },
label: {
position: 'relative',
$flexCenter: '',
userSelect: 'none',
cursor: 'pointer',
height: '$checkboxSize',
width: '$checkboxSize',
backgroundColor: '$elevation3',
borderRadius: '$sm',
$hover: ''
},
'input:focus + label': { $focusStyle: '' },
'input:focus:checked + label, input:checked + label:hover': {
$hoverStyle: '$accent3'
},
'input + label:active': { backgroundColor: '$accent1' },
'input:checked + label:active': { backgroundColor: '$accent1' },
'label > svg': {
display: 'none',
width: '90%',
height: '90%',
stroke: '$highlight3'
},
'input:checked + label': { backgroundColor: '$accent2' },
'input:checked + label > svg': { display: 'block' }
});
function Boolean2({ value, onUpdate, id, disabled }) {
return React5.createElement(
StyledInputWrapper,
null,
React5.createElement('input', {
id,
type: 'checkbox',
checked: value,
onChange: (e4) => onUpdate(e4.currentTarget.checked),
disabled
}),
React5.createElement(
'label',
{ htmlFor: id },
React5.createElement(
'svg',
{
xmlns: 'http://www.w3.org/2000/svg',
fill: 'none',
viewBox: '0 0 24 24'
},
React5.createElement('path', {
strokeLinecap: 'round',
strokeLinejoin: 'round',
strokeWidth: 2,
d: 'M5 13l4 4L19 7'
})
)
)
);
}
function BooleanComponent() {
const { label, value, onUpdate, disabled, id } = useInputContext();
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(Boolean2, { value, onUpdate, id, disabled })
);
}
var boolean = createInternalPlugin(
_objectSpread2({ component: BooleanComponent }, props)
);
var _excluded$1 = ['locked'];
function Coordinate({
value,
id,
valueKey,
settings,
onUpdate,
innerLabelTrim
}) {
const valueRef = React5.useRef(value[valueKey]);
valueRef.current = value[valueKey];
const setValue = React5.useCallback(
(newValue) =>
onUpdate({
[valueKey]: sanitizeValue(
{ type: 'NUMBER', value: valueRef.current, settings },
newValue
)
}),
[onUpdate, settings, valueKey]
);
const number3 = useInputSetters({
type: 'NUMBER',
value: value[valueKey],
settings,
setValue
});
return React5.createElement(Number$1, {
id,
label: valueKey,
value: value[valueKey],
displayValue: number3.displayValue,
onUpdate: number3.onUpdate,
onChange: number3.onChange,
settings,
innerLabelTrim
});
}
var Container = styled('div', {
display: 'grid',
columnGap: '$colGap',
gridAutoFlow: 'column dense',
alignItems: 'center',
variants: {
withLock: {
true: {
gridTemplateColumns: '10px auto',
'> svg': { cursor: 'pointer' }
}
}
}
});
function Lock(_ref) {
let { locked } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$1);
return React5.createElement(
'svg',
_extends2(
{
width: '10',
height: '10',
viewBox: '0 0 15 15',
fill: 'none',
xmlns: 'http://www.w3.org/2000/svg'
},
props3
),
locked
? React5.createElement('path', {
d: 'M5 4.63601C5 3.76031 5.24219 3.1054 5.64323 2.67357C6.03934 2.24705 6.64582 1.9783 7.5014 1.9783C8.35745 1.9783 8.96306 2.24652 9.35823 2.67208C9.75838 3.10299 10 3.75708 10 4.63325V5.99999H5V4.63601ZM4 5.99999V4.63601C4 3.58148 4.29339 2.65754 4.91049 1.99307C5.53252 1.32329 6.42675 0.978302 7.5014 0.978302C8.57583 0.978302 9.46952 1.32233 10.091 1.99162C10.7076 2.65557 11 3.57896 11 4.63325V5.99999H12C12.5523 5.99999 13 6.44771 13 6.99999V13C13 13.5523 12.5523 14 12 14H3C2.44772 14 2 13.5523 2 13V6.99999C2 6.44771 2.44772 5.99999 3 5.99999H4ZM3 6.99999H12V13H3V6.99999Z',
fill: 'currentColor',
fillRule: 'evenodd',
clipRule: 'evenodd'
})
: React5.createElement('path', {
d: 'M9 3.63601C9 2.76044 9.24207 2.11211 9.64154 1.68623C10.0366 1.26502 10.6432 1 11.5014 1C12.4485 1 13.0839 1.30552 13.4722 1.80636C13.8031 2.23312 14 2.84313 14 3.63325H15C15 2.68242 14.7626 1.83856 14.2625 1.19361C13.6389 0.38943 12.6743 0 11.5014 0C10.4294 0 9.53523 0.337871 8.91218 1.0021C8.29351 1.66167 8 2.58135 8 3.63601V6H1C0.447715 6 0 6.44772 0 7V13C0 13.5523 0.447715 14 1 14H10C10.5523 14 11 13.5523 11 13V7C11 6.44772 10.5523 6 10 6H9V3.63601ZM1 7H10V13H1V7Z',
fill: 'currentColor',
fillRule: 'evenodd',
clipRule: 'evenodd'
})
);
}
function Vector({ value, onUpdate, settings, innerLabelTrim }) {
const { id, setSettings } = useInputContext();
const { lock, locked } = settings;
return React5.createElement(
Container,
{ withLock: lock },
lock &&
React5.createElement(Lock, {
locked,
onClick: () => setSettings({ locked: !locked })
}),
Object.keys(value).map((key, i4) =>
React5.createElement(Coordinate, {
id: i4 === 0 ? id : `${id}.${key}`,
key,
valueKey: key,
value,
settings: settings[key],
onUpdate,
innerLabelTrim
})
)
);
}
var normalizeKeyedNumberSettings = (value, settings) => {
const _settings = {};
let maxStep = 0;
let minPad = Infinity;
Object.entries(value).forEach(([key, v4]) => {
_settings[key] = normalize$2(
_objectSpread2({ value: v4 }, settings[key])
).settings;
maxStep = Math.max(maxStep, _settings[key].step);
minPad = Math.min(minPad, _settings[key].pad);
});
for (let key in _settings) {
const { step, min: min3, max: max3 } = settings[key] || {};
if (!isFinite(step) && (!isFinite(min3) || !isFinite(max3))) {
_settings[key].step = maxStep;
_settings[key].pad = minPad;
}
}
return _settings;
};
var _excluded = ['lock'];
var _excluded2 = ['value'];
function getVectorSchema(dimension) {
const isVectorArray = v8n_esm_default()
.array()
.length(dimension)
.every.number();
const isVectorObject = (o4) => {
if (!o4 || typeof o4 !== 'object') return false;
const values = Object.values(o4);
return (
values.length === dimension && values.every((v4) => isFinite(v4))
);
};
return (o4) => {
return isVectorArray.test(o4) || isVectorObject(o4);
};
}
function getVectorType(value) {
return Array.isArray(value) ? 'array' : 'object';
}
function convert(value, format3, keys) {
if (getVectorType(value) === format3) return value;
return format3 === 'array'
? Object.values(value)
: mapArrayToKeys(value, keys);
}
var sanitizeVector = (value, settings, previousValue) => {
const _value = convert(value, 'object', settings.keys);
for (let key in _value)
_value[key] = sanitize$3(_value[key], settings[key]);
const _valueKeys = Object.keys(_value);
let newValue = {};
if (_valueKeys.length === settings.keys.length) newValue = _value;
else {
const _previousValue = convert(previousValue, 'object', settings.keys);
if (_valueKeys.length === 1 && settings.locked) {
const lockedKey = _valueKeys[0];
const lockedCoordinate = _value[lockedKey];
const previousLockedCoordinate = _previousValue[lockedKey];
const ratio =
previousLockedCoordinate !== 0
? lockedCoordinate / previousLockedCoordinate
: 1;
for (let key in _previousValue) {
if (key === lockedKey) newValue[lockedKey] = lockedCoordinate;
else newValue[key] = _previousValue[key] * ratio;
}
} else {
newValue = _objectSpread2(
_objectSpread2({}, _previousValue),
_value
);
}
}
return convert(newValue, settings.format, settings.keys);
};
var formatVector = (value, settings) => convert(value, 'object', settings.keys);
var isNumberSettings = (o4) =>
!!o4 && ('step' in o4 || 'min' in o4 || 'max' in o4);
function normalizeVector(value, settings, defaultKeys = []) {
const { lock = false } = settings,
_settings = _objectWithoutProperties(settings, _excluded);
const format3 = Array.isArray(value) ? 'array' : 'object';
const keys = format3 === 'object' ? Object.keys(value) : defaultKeys;
const _value = convert(value, 'object', keys);
const mergedSettings = isNumberSettings(_settings)
? keys.reduce((acc, k4) => Object.assign(acc, { [k4]: _settings }), {})
: _settings;
const numberSettings = normalizeKeyedNumberSettings(_value, mergedSettings);
return {
value: format3 === 'array' ? value : _value,
settings: _objectSpread2(
_objectSpread2({}, numberSettings),
{},
{ format: format3, keys, lock, locked: false }
)
};
}
function getVectorPlugin(defaultKeys) {
return {
schema: getVectorSchema(defaultKeys.length),
normalize: (_ref) => {
let { value } = _ref,
settings = _objectWithoutProperties(_ref, _excluded2);
return normalizeVector(value, settings, defaultKeys);
},
format: (value, settings) => formatVector(value, settings),
sanitize: (value, settings, prevValue) =>
sanitizeVector(value, settings, prevValue)
};
}
var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) };
var t2 = function (r4) {
return 'string' == typeof r4 ? r4.length > 0 : 'number' == typeof r4;
};
var n2 = function (r4, t4, n4) {
return (
void 0 === t4 && (t4 = 0),
void 0 === n4 && (n4 = Math.pow(10, t4)),
Math.round(n4 * r4) / n4 + 0
);
};
var e2 = function (r4, t4, n4) {
return (
void 0 === t4 && (t4 = 0),
void 0 === n4 && (n4 = 1),
r4 > n4 ? n4 : r4 > t4 ? r4 : t4
);
};
var u2 = function (r4) {
return (r4 = isFinite(r4) ? r4 % 360 : 0) > 0 ? r4 : r4 + 360;
};
var a2 = function (r4) {
return {
r: e2(r4.r, 0, 255),
g: e2(r4.g, 0, 255),
b: e2(r4.b, 0, 255),
a: e2(r4.a)
};
};
var o2 = function (r4) {
return { r: n2(r4.r), g: n2(r4.g), b: n2(r4.b), a: n2(r4.a, 3) };
};
var i2 = /^#([0-9a-f]{3,8})$/i;
var s2 = function (r4) {
var t4 = r4.toString(16);
return t4.length < 2 ? '0' + t4 : t4;
};
var h2 = function (r4) {
var t4 = r4.r,
n4 = r4.g,
e4 = r4.b,
u4 = r4.a,
a4 = Math.max(t4, n4, e4),
o4 = a4 - Math.min(t4, n4, e4),
i4 = o4
? a4 === t4
? (n4 - e4) / o4
: a4 === n4
? 2 + (e4 - t4) / o4
: 4 + (t4 - n4) / o4
: 0;
return {
h: 60 * (i4 < 0 ? i4 + 6 : i4),
s: a4 ? (o4 / a4) * 100 : 0,
v: (a4 / 255) * 100,
a: u4
};
};
var b2 = function (r4) {
var t4 = r4.h,
n4 = r4.s,
e4 = r4.v,
u4 = r4.a;
((t4 = (t4 / 360) * 6), (n4 /= 100), (e4 /= 100));
var a4 = Math.floor(t4),
o4 = e4 * (1 - n4),
i4 = e4 * (1 - (t4 - a4) * n4),
s4 = e4 * (1 - (1 - t4 + a4) * n4),
h4 = a4 % 6;
return {
r: 255 * [e4, i4, o4, o4, s4, e4][h4],
g: 255 * [s4, e4, e4, i4, o4, o4][h4],
b: 255 * [o4, o4, s4, e4, e4, i4][h4],
a: u4
};
};
var g2 = function (r4) {
return {
h: u2(r4.h),
s: e2(r4.s, 0, 100),
l: e2(r4.l, 0, 100),
a: e2(r4.a)
};
};
var d2 = function (r4) {
return { h: n2(r4.h), s: n2(r4.s), l: n2(r4.l), a: n2(r4.a, 3) };
};
var f2 = function (r4) {
return b2(
((n4 = (t4 = r4).s),
{
h: t4.h,
s:
(n4 *= ((e4 = t4.l) < 50 ? e4 : 100 - e4) / 100) > 0
? ((2 * n4) / (e4 + n4)) * 100
: 0,
v: e4 + n4,
a: t4.a
})
);
var t4, n4, e4;
};
var c2 = function (r4) {
return {
h: (t4 = h2(r4)).h,
s:
(u4 = ((200 - (n4 = t4.s)) * (e4 = t4.v)) / 100) > 0 && u4 < 200
? ((n4 * e4) / 100 / (u4 <= 100 ? u4 : 200 - u4)) * 100
: 0,
l: u4 / 2,
a: t4.a
};
var t4, n4, e4, u4;
};
var l2 =
/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var p2 =
/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var v2 =
/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var m2 =
/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var y2 = {
string: [
[
function (r4) {
var t4 = i2.exec(r4);
return t4
? (r4 = t4[1]).length <= 4
? {
r: parseInt(r4[0] + r4[0], 16),
g: parseInt(r4[1] + r4[1], 16),
b: parseInt(r4[2] + r4[2], 16),
a:
4 === r4.length
? n2(parseInt(r4[3] + r4[3], 16) / 255, 2)
: 1
}
: 6 === r4.length || 8 === r4.length
? {
r: parseInt(r4.substr(0, 2), 16),
g: parseInt(r4.substr(2, 2), 16),
b: parseInt(r4.substr(4, 2), 16),
a:
8 === r4.length
? n2(
parseInt(r4.substr(6, 2), 16) /
255,
2
)
: 1
}
: null
: null;
},
'hex'
],
[
function (r4) {
var t4 = v2.exec(r4) || m2.exec(r4);
return t4
? t4[2] !== t4[4] || t4[4] !== t4[6]
? null
: a2({
r: Number(t4[1]) / (t4[2] ? 100 / 255 : 1),
g: Number(t4[3]) / (t4[4] ? 100 / 255 : 1),
b: Number(t4[5]) / (t4[6] ? 100 / 255 : 1),
a:
void 0 === t4[7]
? 1
: Number(t4[7]) / (t4[8] ? 100 : 1)
})
: null;
},
'rgb'
],
[
function (t4) {
var n4 = l2.exec(t4) || p2.exec(t4);
if (!n4) return null;
var e4,
u4,
a4 = g2({
h:
((e4 = n4[1]),
(u4 = n4[2]),
void 0 === u4 && (u4 = 'deg'),
Number(e4) * (r2[u4] || 1)),
s: Number(n4[3]),
l: Number(n4[4]),
a:
void 0 === n4[5]
? 1
: Number(n4[5]) / (n4[6] ? 100 : 1)
});
return f2(a4);
},
'hsl'
]
],
object: [
[
function (r4) {
var n4 = r4.r,
e4 = r4.g,
u4 = r4.b,
o4 = r4.a,
i4 = void 0 === o4 ? 1 : o4;
return t2(n4) && t2(e4) && t2(u4)
? a2({
r: Number(n4),
g: Number(e4),
b: Number(u4),
a: Number(i4)
})
: null;
},
'rgb'
],
[
function (r4) {
var n4 = r4.h,
e4 = r4.s,
u4 = r4.l,
a4 = r4.a,
o4 = void 0 === a4 ? 1 : a4;
if (!t2(n4) || !t2(e4) || !t2(u4)) return null;
var i4 = g2({
h: Number(n4),
s: Number(e4),
l: Number(u4),
a: Number(o4)
});
return f2(i4);
},
'hsl'
],
[
function (r4) {
var n4 = r4.h,
a4 = r4.s,
o4 = r4.v,
i4 = r4.a,
s4 = void 0 === i4 ? 1 : i4;
if (!t2(n4) || !t2(a4) || !t2(o4)) return null;
var h4 = (function (r5) {
return {
h: u2(r5.h),
s: e2(r5.s, 0, 100),
v: e2(r5.v, 0, 100),
a: e2(r5.a)
};
})({
h: Number(n4),
s: Number(a4),
v: Number(o4),
a: Number(s4)
});
return b2(h4);
},
'hsv'
]
]
};
var N2 = function (r4, t4) {
for (var n4 = 0; n4 < t4.length; n4++) {
var e4 = t4[n4][0](r4);
if (e4) return [e4, t4[n4][1]];
}
return [null, void 0];
};
var x2 = function (r4) {
return 'string' == typeof r4
? N2(r4.trim(), y2.string)
: 'object' == typeof r4 && null !== r4
? N2(r4, y2.object)
: [null, void 0];
};
var I2 = function (r4) {
return x2(r4)[1];
};
var M2 = function (r4, t4) {
var n4 = c2(r4);
return { h: n4.h, s: e2(n4.s + 100 * t4, 0, 100), l: n4.l, a: n4.a };
};
var H2 = function (r4) {
return (299 * r4.r + 587 * r4.g + 114 * r4.b) / 1e3 / 255;
};
var $2 = function (r4, t4) {
var n4 = c2(r4);
return { h: n4.h, s: n4.s, l: e2(n4.l + 100 * t4, 0, 100), a: n4.a };
};
var j2 = (function () {
function r4(r5) {
((this.parsed = x2(r5)[0]),
(this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }));
}
return (
(r4.prototype.isValid = function () {
return null !== this.parsed;
}),
(r4.prototype.brightness = function () {
return n2(H2(this.rgba), 2);
}),
(r4.prototype.isDark = function () {
return H2(this.rgba) < 0.5;
}),
(r4.prototype.isLight = function () {
return H2(this.rgba) >= 0.5;
}),
(r4.prototype.toHex = function () {
return (
(r5 = o2(this.rgba)),
(t4 = r5.r),
(e4 = r5.g),
(u4 = r5.b),
(i4 = (a4 = r5.a) < 1 ? s2(n2(255 * a4)) : ''),
'#' + s2(t4) + s2(e4) + s2(u4) + i4
);
var r5, t4, e4, u4, a4, i4;
}),
(r4.prototype.toRgb = function () {
return o2(this.rgba);
}),
(r4.prototype.toRgbString = function () {
return (
(r5 = o2(this.rgba)),
(t4 = r5.r),
(n4 = r5.g),
(e4 = r5.b),
(u4 = r5.a) < 1
? 'rgba(' + t4 + ', ' + n4 + ', ' + e4 + ', ' + u4 + ')'
: 'rgb(' + t4 + ', ' + n4 + ', ' + e4 + ')'
);
var r5, t4, n4, e4, u4;
}),
(r4.prototype.toHsl = function () {
return d2(c2(this.rgba));
}),
(r4.prototype.toHslString = function () {
return (
(r5 = d2(c2(this.rgba))),
(t4 = r5.h),
(n4 = r5.s),
(e4 = r5.l),
(u4 = r5.a) < 1
? 'hsla(' + t4 + ', ' + n4 + '%, ' + e4 + '%, ' + u4 + ')'
: 'hsl(' + t4 + ', ' + n4 + '%, ' + e4 + '%)'
);
var r5, t4, n4, e4, u4;
}),
(r4.prototype.toHsv = function () {
return (
(r5 = h2(this.rgba)),
{ h: n2(r5.h), s: n2(r5.s), v: n2(r5.v), a: n2(r5.a, 3) }
);
var r5;
}),
(r4.prototype.invert = function () {
return w2({
r: 255 - (r5 = this.rgba).r,
g: 255 - r5.g,
b: 255 - r5.b,
a: r5.a
});
var r5;
}),
(r4.prototype.saturate = function (r5) {
return (void 0 === r5 && (r5 = 0.1), w2(M2(this.rgba, r5)));
}),
(r4.prototype.desaturate = function (r5) {
return (void 0 === r5 && (r5 = 0.1), w2(M2(this.rgba, -r5)));
}),
(r4.prototype.grayscale = function () {
return w2(M2(this.rgba, -1));
}),
(r4.prototype.lighten = function (r5) {
return (void 0 === r5 && (r5 = 0.1), w2($2(this.rgba, r5)));
}),
(r4.prototype.darken = function (r5) {
return (void 0 === r5 && (r5 = 0.1), w2($2(this.rgba, -r5)));
}),
(r4.prototype.rotate = function (r5) {
return (void 0 === r5 && (r5 = 15), this.hue(this.hue() + r5));
}),
(r4.prototype.alpha = function (r5) {
return 'number' == typeof r5
? w2({ r: (t4 = this.rgba).r, g: t4.g, b: t4.b, a: r5 })
: n2(this.rgba.a, 3);
var t4;
}),
(r4.prototype.hue = function (r5) {
var t4 = c2(this.rgba);
return 'number' == typeof r5
? w2({ h: r5, s: t4.s, l: t4.l, a: t4.a })
: n2(t4.h);
}),
(r4.prototype.isEqual = function (r5) {
return this.toHex() === w2(r5).toHex();
}),
r4
);
})();
var w2 = function (r4) {
return r4 instanceof j2 ? r4 : new j2(r4);
};
var S2 = [];
var k2 = function (r4) {
r4.forEach(function (r5) {
S2.indexOf(r5) < 0 && (r5(j2, y2), S2.push(r5));
});
};
function names_default(e4, f4) {
var a4 = {
white: '#ffffff',
bisque: '#ffe4c4',
blue: '#0000ff',
cadetblue: '#5f9ea0',
chartreuse: '#7fff00',
chocolate: '#d2691e',
coral: '#ff7f50',
antiquewhite: '#faebd7',
aqua: '#00ffff',
azure: '#f0ffff',
whitesmoke: '#f5f5f5',
papayawhip: '#ffefd5',
plum: '#dda0dd',
blanchedalmond: '#ffebcd',
black: '#000000',
gold: '#ffd700',
goldenrod: '#daa520',
gainsboro: '#dcdcdc',
cornsilk: '#fff8dc',
cornflowerblue: '#6495ed',
burlywood: '#deb887',
aquamarine: '#7fffd4',
beige: '#f5f5dc',
crimson: '#dc143c',
cyan: '#00ffff',
darkblue: '#00008b',
darkcyan: '#008b8b',
darkgoldenrod: '#b8860b',
darkkhaki: '#bdb76b',
darkgray: '#a9a9a9',
darkgreen: '#006400',
darkgrey: '#a9a9a9',
peachpuff: '#ffdab9',
darkmagenta: '#8b008b',
darkred: '#8b0000',
darkorchid: '#9932cc',
darkorange: '#ff8c00',
darkslateblue: '#483d8b',
gray: '#808080',
darkslategray: '#2f4f4f',
darkslategrey: '#2f4f4f',
deeppink: '#ff1493',
deepskyblue: '#00bfff',
wheat: '#f5deb3',
firebrick: '#b22222',
floralwhite: '#fffaf0',
ghostwhite: '#f8f8ff',
darkviolet: '#9400d3',
magenta: '#ff00ff',
green: '#008000',
dodgerblue: '#1e90ff',
grey: '#808080',
honeydew: '#f0fff0',
hotpink: '#ff69b4',
blueviolet: '#8a2be2',
forestgreen: '#228b22',
lawngreen: '#7cfc00',
indianred: '#cd5c5c',
indigo: '#4b0082',
fuchsia: '#ff00ff',
brown: '#a52a2a',
maroon: '#800000',
mediumblue: '#0000cd',
lightcoral: '#f08080',
darkturquoise: '#00ced1',
lightcyan: '#e0ffff',
ivory: '#fffff0',
lightyellow: '#ffffe0',
lightsalmon: '#ffa07a',
lightseagreen: '#20b2aa',
linen: '#faf0e6',
mediumaquamarine: '#66cdaa',
lemonchiffon: '#fffacd',
lime: '#00ff00',
khaki: '#f0e68c',
mediumseagreen: '#3cb371',
limegreen: '#32cd32',
mediumspringgreen: '#00fa9a',
lightskyblue: '#87cefa',
lightblue: '#add8e6',
midnightblue: '#191970',
lightpink: '#ffb6c1',
mistyrose: '#ffe4e1',
moccasin: '#ffe4b5',
mintcream: '#f5fffa',
lightslategray: '#778899',
lightslategrey: '#778899',
navajowhite: '#ffdead',
navy: '#000080',
mediumvioletred: '#c71585',
powderblue: '#b0e0e6',
palegoldenrod: '#eee8aa',
oldlace: '#fdf5e6',
paleturquoise: '#afeeee',
mediumturquoise: '#48d1cc',
mediumorchid: '#ba55d3',
rebeccapurple: '#663399',
lightsteelblue: '#b0c4de',
mediumslateblue: '#7b68ee',
thistle: '#d8bfd8',
tan: '#d2b48c',
orchid: '#da70d6',
mediumpurple: '#9370db',
purple: '#800080',
pink: '#ffc0cb',
skyblue: '#87ceeb',
springgreen: '#00ff7f',
palegreen: '#98fb98',
red: '#ff0000',
yellow: '#ffff00',
slateblue: '#6a5acd',
lavenderblush: '#fff0f5',
peru: '#cd853f',
palevioletred: '#db7093',
violet: '#ee82ee',
teal: '#008080',
slategray: '#708090',
slategrey: '#708090',
aliceblue: '#f0f8ff',
darkseagreen: '#8fbc8f',
darkolivegreen: '#556b2f',
greenyellow: '#adff2f',
seagreen: '#2e8b57',
seashell: '#fff5ee',
tomato: '#ff6347',
silver: '#c0c0c0',
sienna: '#a0522d',
lavender: '#e6e6fa',
lightgreen: '#90ee90',
orange: '#ffa500',
orangered: '#ff4500',
steelblue: '#4682b4',
royalblue: '#4169e1',
turquoise: '#40e0d0',
yellowgreen: '#9acd32',
salmon: '#fa8072',
saddlebrown: '#8b4513',
sandybrown: '#f4a460',
rosybrown: '#bc8f8f',
darksalmon: '#e9967a',
lightgoldenrodyellow: '#fafad2',
snow: '#fffafa',
lightgrey: '#d3d3d3',
lightgray: '#d3d3d3',
dimgray: '#696969',
dimgrey: '#696969',
olivedrab: '#6b8e23',
olive: '#808000'
},
r4 = {};
for (var d4 in a4) r4[a4[d4]] = d4;
var l4 = {};
e4.prototype.toName = function (f5) {
if (!(this.rgba.a || this.rgba.r || this.rgba.g || this.rgba.b))
return 'transparent';
var d5,
i4,
n4 = r4[this.toHex()];
if (n4) return n4;
if (null == f5 ? void 0 : f5.closest) {
var o4 = this.toRgb(),
t4 = 1 / 0,
b4 = 'black';
if (!l4.length) for (var c4 in a4) l4[c4] = new e4(a4[c4]).toRgb();
for (var g4 in a4) {
var u4 =
((d5 = o4),
(i4 = l4[g4]),
Math.pow(d5.r - i4.r, 2) +
Math.pow(d5.g - i4.g, 2) +
Math.pow(d5.b - i4.b, 2));
u4 < t4 && ((t4 = u4), (b4 = g4));
}
return b4;
}
};
f4.string.push([
function (f5) {
var r5 = f5.toLowerCase(),
d5 = 'transparent' === r5 ? '#0000' : a4[r5];
return d5 ? new e4(d5).toRgb() : null;
},
'name'
]);
}
function u3() {
return (u3 =
Object.assign ||
function (e4) {
for (var r4 = 1; r4 < arguments.length; r4++) {
var t4 = arguments[r4];
for (var n4 in t4)
Object.prototype.hasOwnProperty.call(t4, n4) &&
(e4[n4] = t4[n4]);
}
return e4;
}).apply(this, arguments);
}
function c3(e4, r4) {
if (null == e4) return {};
var t4,
n4,
o4 = {},
a4 = Object.keys(e4);
for (n4 = 0; n4 < a4.length; n4++)
r4.indexOf((t4 = a4[n4])) >= 0 || (o4[t4] = e4[t4]);
return o4;
}
function i3(e4) {
var t4 = React5.useRef(e4),
n4 = React5.useRef(function (e5) {
t4.current && t4.current(e5);
});
return ((t4.current = e4), n4.current);
}
var s3 = function (e4, r4, t4) {
return (
void 0 === r4 && (r4 = 0),
void 0 === t4 && (t4 = 1),
e4 > t4 ? t4 : e4 < r4 ? r4 : e4
);
};
var f3 = function (e4) {
return 'touches' in e4;
};
var v3 = function (e4) {
return (e4 && e4.ownerDocument.defaultView) || self;
};
var d3 = function (e4, r4, t4) {
var n4 = e4.getBoundingClientRect(),
o4 = f3(r4)
? (function (e5, r5) {
for (var t5 = 0; t5 < e5.length; t5++)
if (e5[t5].identifier === r5) return e5[t5];
return e5[0];
})(r4.touches, t4)
: r4;
return {
left: s3((o4.pageX - (n4.left + v3(e4).pageXOffset)) / n4.width),
top: s3((o4.pageY - (n4.top + v3(e4).pageYOffset)) / n4.height)
};
};
var h3 = function (e4) {
!f3(e4) && e4.preventDefault();
};
var m3 = React5.memo(function (o4) {
var a4 = o4.onMove,
l4 = o4.onKey,
s4 = c3(o4, ['onMove', 'onKey']),
m4 = React5.useRef(null),
g4 = i3(a4),
p4 = i3(l4),
b4 = React5.useRef(null),
_2 = React5.useRef(false),
x3 = React5.useMemo(
function () {
var e4 = function (e5) {
(h3(e5),
(f3(e5) ? e5.touches.length > 0 : e5.buttons > 0) &&
m4.current
? g4(d3(m4.current, e5, b4.current))
: t4(false));
},
r4 = function () {
return t4(false);
};
function t4(t5) {
var n4 = _2.current,
o5 = v3(m4.current),
a5 = t5 ? o5.addEventListener : o5.removeEventListener;
(a5(n4 ? 'touchmove' : 'mousemove', e4),
a5(n4 ? 'touchend' : 'mouseup', r4));
}
return [
function (e5) {
var r5 = e5.nativeEvent,
n4 = m4.current;
if (
n4 &&
(h3(r5),
!(function (e6, r6) {
return r6 && !f3(e6);
})(r5, _2.current) && n4)
) {
if (f3(r5)) {
_2.current = true;
var o5 = r5.changedTouches || [];
o5.length && (b4.current = o5[0].identifier);
}
(n4.focus(), g4(d3(n4, r5, b4.current)), t4(true));
}
},
function (e5) {
var r5 = e5.which || e5.keyCode;
r5 < 37 ||
r5 > 40 ||
(e5.preventDefault(),
p4({
left: 39 === r5 ? 0.05 : 37 === r5 ? -0.05 : 0,
top: 40 === r5 ? 0.05 : 38 === r5 ? -0.05 : 0
}));
},
t4
];
},
[p4, g4]
),
C2 = x3[0],
E2 = x3[1],
H3 = x3[2];
return (
React5.useEffect(
function () {
return H3;
},
[H3]
),
React5.createElement(
'div',
u3({}, s4, {
onTouchStart: C2,
onMouseDown: C2,
className: 'react-colorful__interactive',
ref: m4,
onKeyDown: E2,
tabIndex: 0,
role: 'slider'
})
)
);
});
var g3 = function (e4) {
return e4.filter(Boolean).join(' ');
};
var p3 = function (r4) {
var t4 = r4.color,
n4 = r4.left,
o4 = r4.top,
a4 = void 0 === o4 ? 0.5 : o4,
l4 = g3(['react-colorful__pointer', r4.className]);
return React5.createElement(
'div',
{ className: l4, style: { top: 100 * a4 + '%', left: 100 * n4 + '%' } },
React5.createElement('div', {
className: 'react-colorful__pointer-fill',
style: { backgroundColor: t4 }
})
);
};
var b3 = function (e4, r4, t4) {
return (
void 0 === r4 && (r4 = 0),
void 0 === t4 && (t4 = Math.pow(10, r4)),
Math.round(t4 * e4) / t4
);
};
var y3 = function (e4) {
var r4 = e4.s,
t4 = e4.v,
n4 = e4.a,
o4 = ((200 - r4) * t4) / 100;
return {
h: b3(e4.h),
s: b3(
o4 > 0 && o4 < 200
? ((r4 * t4) / 100 / (o4 <= 100 ? o4 : 200 - o4)) * 100
: 0
),
l: b3(o4 / 2),
a: b3(n4, 2)
};
};
var q2 = function (e4) {
var r4 = y3(e4);
return 'hsl(' + r4.h + ', ' + r4.s + '%, ' + r4.l + '%)';
};
var k3 = function (e4) {
var r4 = y3(e4);
return 'hsla(' + r4.h + ', ' + r4.s + '%, ' + r4.l + '%, ' + r4.a + ')';
};
var I3 = function (e4) {
var r4 = e4.h,
t4 = e4.s,
n4 = e4.v,
o4 = e4.a;
((r4 = (r4 / 360) * 6), (t4 /= 100), (n4 /= 100));
var a4 = Math.floor(r4),
l4 = n4 * (1 - t4),
u4 = n4 * (1 - (r4 - a4) * t4),
c4 = n4 * (1 - (1 - r4 + a4) * t4),
i4 = a4 % 6;
return {
r: b3(255 * [n4, u4, l4, l4, c4, n4][i4]),
g: b3(255 * [c4, n4, n4, u4, l4, l4][i4]),
b: b3(255 * [l4, l4, c4, n4, n4, u4][i4]),
a: b3(o4, 2)
};
};
var L2 = function (e4) {
var r4 = e4.r,
t4 = e4.g,
n4 = e4.b,
o4 = e4.a,
a4 = Math.max(r4, t4, n4),
l4 = a4 - Math.min(r4, t4, n4),
u4 = l4
? a4 === r4
? (t4 - n4) / l4
: a4 === t4
? 2 + (n4 - r4) / l4
: 4 + (r4 - t4) / l4
: 0;
return {
h: b3(60 * (u4 < 0 ? u4 + 6 : u4)),
s: b3(a4 ? (l4 / a4) * 100 : 0),
v: b3((a4 / 255) * 100),
a: o4
};
};
var S3 = React5.memo(function (r4) {
var t4 = r4.hue,
n4 = r4.onChange,
o4 = g3(['react-colorful__hue', r4.className]);
return React5.createElement(
'div',
{ className: o4 },
React5.createElement(
m3,
{
onMove: function (e4) {
n4({ h: 360 * e4.left });
},
onKey: function (e4) {
n4({ h: s3(t4 + 360 * e4.left, 0, 360) });
},
'aria-label': 'Hue',
'aria-valuenow': b3(t4),
'aria-valuemax': '360',
'aria-valuemin': '0'
},
React5.createElement(p3, {
className: 'react-colorful__hue-pointer',
left: t4 / 360,
color: q2({ h: t4, s: 100, v: 100, a: 1 })
})
)
);
});
var T2 = React5.memo(function (r4) {
var t4 = r4.hsva,
n4 = r4.onChange,
o4 = { backgroundColor: q2({ h: t4.h, s: 100, v: 100, a: 1 }) };
return React5.createElement(
'div',
{ className: 'react-colorful__saturation', style: o4 },
React5.createElement(
m3,
{
onMove: function (e4) {
n4({ s: 100 * e4.left, v: 100 - 100 * e4.top });
},
onKey: function (e4) {
n4({
s: s3(t4.s + 100 * e4.left, 0, 100),
v: s3(t4.v - 100 * e4.top, 0, 100)
});
},
'aria-label': 'Color',
'aria-valuetext':
'Saturation ' + b3(t4.s) + '%, Brightness ' + b3(t4.v) + '%'
},
React5.createElement(p3, {
className: 'react-colorful__saturation-pointer',
top: 1 - t4.v / 100,
left: t4.s / 100,
color: q2(t4)
})
)
);
});
var F2 = function (e4, r4) {
if (e4 === r4) return true;
for (var t4 in e4) if (e4[t4] !== r4[t4]) return false;
return true;
};
function Y2(e4, t4, l4) {
var u4 = i3(l4),
c4 = React5.useState(function () {
return e4.toHsva(t4);
}),
s4 = c4[0],
f4 = c4[1],
v4 = React5.useRef({ color: t4, hsva: s4 });
(React5.useEffect(
function () {
if (!e4.equal(t4, v4.current.color)) {
var r4 = e4.toHsva(t4);
((v4.current = { hsva: r4, color: t4 }), f4(r4));
}
},
[t4, e4]
),
React5.useEffect(
function () {
var r4;
F2(s4, v4.current.hsva) ||
e4.equal((r4 = e4.fromHsva(s4)), v4.current.color) ||
((v4.current = { hsva: s4, color: r4 }), u4(r4));
},
[s4, e4, u4]
));
var d4 = React5.useCallback(function (e5) {
f4(function (r4) {
return Object.assign({}, r4, e5);
});
}, []);
return [s4, d4];
}
var V2 = 'undefined' != typeof window ? React5.useLayoutEffect : React5.useEffect;
var $3 = function () {
return (
('undefined' != typeof __webpack_nonce__ ? __webpack_nonce__ : void 0)
);
};
var J2 = new Map();
var Q = function (e4) {
V2(function () {
var r4 = e4.current ? e4.current.ownerDocument : document;
if (void 0 !== r4 && !J2.has(r4)) {
var t4 = r4.createElement('style');
((t4.innerHTML = `.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`),
J2.set(r4, t4));
var n4 = $3();
(n4 && t4.setAttribute('nonce', n4), r4.head.appendChild(t4));
}
}, []);
};
var U2 = function (t4) {
var n4 = t4.className,
o4 = t4.colorModel,
a4 = t4.color,
l4 = void 0 === a4 ? o4.defaultColor : a4,
i4 = t4.onChange,
s4 = c3(t4, ['className', 'colorModel', 'color', 'onChange']),
f4 = React5.useRef(null);
Q(f4);
var v4 = Y2(o4, l4, i4),
d4 = v4[0],
h4 = v4[1],
m4 = g3(['react-colorful', n4]);
return React5.createElement(
'div',
u3({}, s4, { ref: f4, className: m4 }),
React5.createElement(T2, { hsva: d4, onChange: h4 }),
React5.createElement(S3, {
hue: d4.h,
onChange: h4,
className: 'react-colorful__last-control'
})
);
};
var ee = function (r4) {
var t4 = r4.className,
n4 = r4.hsva,
o4 = r4.onChange,
a4 = {
backgroundImage:
'linear-gradient(90deg, ' +
k3(Object.assign({}, n4, { a: 0 })) +
', ' +
k3(Object.assign({}, n4, { a: 1 })) +
')'
},
l4 = g3(['react-colorful__alpha', t4]),
u4 = b3(100 * n4.a);
return React5.createElement(
'div',
{ className: l4 },
React5.createElement('div', {
className: 'react-colorful__alpha-gradient',
style: a4
}),
React5.createElement(
m3,
{
onMove: function (e4) {
o4({ a: e4.left });
},
onKey: function (e4) {
o4({ a: s3(n4.a + e4.left) });
},
'aria-label': 'Alpha',
'aria-valuetext': u4 + '%',
'aria-valuenow': u4,
'aria-valuemin': '0',
'aria-valuemax': '100'
},
React5.createElement(p3, {
className: 'react-colorful__alpha-pointer',
left: n4.a,
color: k3(n4)
})
)
);
};
var re = function (t4) {
var n4 = t4.className,
o4 = t4.colorModel,
a4 = t4.color,
l4 = void 0 === a4 ? o4.defaultColor : a4,
i4 = t4.onChange,
s4 = c3(t4, ['className', 'colorModel', 'color', 'onChange']),
f4 = React5.useRef(null);
Q(f4);
var v4 = Y2(o4, l4, i4),
d4 = v4[0],
h4 = v4[1],
m4 = g3(['react-colorful', n4]);
return React5.createElement(
'div',
u3({}, s4, { ref: f4, className: m4 }),
React5.createElement(T2, { hsva: d4, onChange: h4 }),
React5.createElement(S3, { hue: d4.h, onChange: h4 }),
React5.createElement(ee, {
hsva: d4,
onChange: h4,
className: 'react-colorful__last-control'
})
);
};
var xe = {
defaultColor: { r: 0, g: 0, b: 0, a: 1 },
toHsva: L2,
fromHsva: I3,
equal: F2
};
var Ce = function (r4) {
return React5.createElement(re, u3({}, r4, { colorModel: xe }));
};
var Me = {
defaultColor: { r: 0, g: 0, b: 0 },
toHsva: function (e4) {
return L2({ r: e4.r, g: e4.g, b: e4.b, a: 1 });
},
fromHsva: function (e4) {
return { r: (r4 = I3(e4)).r, g: r4.g, b: r4.b };
var r4;
},
equal: F2
};
var Ne = function (r4) {
return React5.createElement(U2, u3({}, r4, { colorModel: Me }));
};
var import_prop_types = __toESM(require_prop_types());
function __awaiter(thisArg, _arguments, P2, generator) {
function adopt(value) {
return value instanceof P2
? value
: new P2(function (resolve) {
resolve(value);
});
}
return new (P2 || (P2 = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e4) {
reject(e4);
}
}
function rejected(value) {
try {
step(generator['throw'](value));
} catch (e4) {
reject(e4);
}
}
function step(result) {
result.done
? resolve(result.value)
: adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, [])).next());
});
}
function __generator(thisArg, body) {
var _2 = {
label: 0,
sent: function () {
if (t4[0] & 1) throw t4[1];
return t4[1];
},
trys: [],
ops: []
},
f4,
y4,
t4,
g4 = Object.create(
(typeof Iterator === 'function' ? Iterator : Object).prototype
);
return (
(g4.next = verb(0)),
(g4['throw'] = verb(1)),
(g4['return'] = verb(2)),
typeof Symbol === 'function' &&
(g4[Symbol.iterator] = function () {
return this;
}),
g4
);
function verb(n4) {
return function (v4) {
return step([n4, v4]);
};
}
function step(op) {
if (f4) throw new TypeError('Generator is already executing.');
while ((g4 && ((g4 = 0), op[0] && (_2 = 0)), _2))
try {
if (
((f4 = 1),
y4 &&
(t4 =
op[0] & 2
? y4['return']
: op[0]
? y4['throw'] ||
((t4 = y4['return']) && t4.call(y4), 0)
: y4.next) &&
!(t4 = t4.call(y4, op[1])).done)
)
return t4;
if (((y4 = 0), t4)) op = [op[0] & 2, t4.value];
switch (op[0]) {
case 0:
case 1:
t4 = op;
break;
case 4:
_2.label++;
return { value: op[1], done: false };
case 5:
_2.label++;
y4 = op[1];
op = [0];
continue;
case 7:
op = _2.ops.pop();
_2.trys.pop();
continue;
default:
if (
!((t4 = _2.trys),
(t4 = t4.length > 0 && t4[t4.length - 1])) &&
(op[0] === 6 || op[0] === 2)
) {
_2 = 0;
continue;
}
if (
op[0] === 3 &&
(!t4 || (op[1] > t4[0] && op[1] < t4[3]))
) {
_2.label = op[1];
break;
}
if (op[0] === 6 && _2.label < t4[1]) {
_2.label = t4[1];
t4 = op;
break;
}
if (t4 && _2.label < t4[2]) {
_2.label = t4[2];
_2.ops.push(op);
break;
}
if (t4[2]) _2.ops.pop();
_2.trys.pop();
continue;
}
op = body.call(thisArg, _2);
} catch (e4) {
op = [6, e4];
y4 = 0;
} finally {
f4 = t4 = 0;
}
if (op[0] & 5) throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __read(o4, n4) {
var m4 = typeof Symbol === 'function' && o4[Symbol.iterator];
if (!m4) return o4;
var i4 = m4.call(o4),
r4,
ar = [],
e4;
try {
while ((n4 === void 0 || n4-- > 0) && !(r4 = i4.next()).done)
ar.push(r4.value);
} catch (error) {
e4 = { error };
} finally {
try {
if (r4 && !r4.done && (m4 = i4['return'])) m4.call(i4);
} finally {
if (e4) throw e4.error;
}
}
return ar;
}
function __spread() {
for (var ar = [], i4 = 0; i4 < arguments.length; i4++)
ar = ar.concat(__read(arguments[i4]));
return ar;
}
var COMMON_MIME_TYPES = new Map([
['aac', 'audio/aac'],
['abw', 'application/x-abiword'],
['arc', 'application/x-freearc'],
['avif', 'image/avif'],
['avi', 'video/x-msvideo'],
['azw', 'application/vnd.amazon.ebook'],
['bin', 'application/octet-stream'],
['bmp', 'image/bmp'],
['bz', 'application/x-bzip'],
['bz2', 'application/x-bzip2'],
['cda', 'application/x-cdf'],
['csh', 'application/x-csh'],
['css', 'text/css'],
['csv', 'text/csv'],
['doc', 'application/msword'],
[
'docx',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
],
['eot', 'application/vnd.ms-fontobject'],
['epub', 'application/epub+zip'],
['gz', 'application/gzip'],
['gif', 'image/gif'],
['heic', 'image/heic'],
['heif', 'image/heif'],
['htm', 'text/html'],
['html', 'text/html'],
['ico', 'image/vnd.microsoft.icon'],
['ics', 'text/calendar'],
['jar', 'application/java-archive'],
['jpeg', 'image/jpeg'],
['jpg', 'image/jpeg'],
['js', 'text/javascript'],
['json', 'application/json'],
['jsonld', 'application/ld+json'],
['mid', 'audio/midi'],
['midi', 'audio/midi'],
['mjs', 'text/javascript'],
['mp3', 'audio/mpeg'],
['mp4', 'video/mp4'],
['mpeg', 'video/mpeg'],
['mpkg', 'application/vnd.apple.installer+xml'],
['odp', 'application/vnd.oasis.opendocument.presentation'],
['ods', 'application/vnd.oasis.opendocument.spreadsheet'],
['odt', 'application/vnd.oasis.opendocument.text'],
['oga', 'audio/ogg'],
['ogv', 'video/ogg'],
['ogx', 'application/ogg'],
['opus', 'audio/opus'],
['otf', 'font/otf'],
['png', 'image/png'],
['pdf', 'application/pdf'],
['php', 'application/x-httpd-php'],
['ppt', 'application/vnd.ms-powerpoint'],
[
'pptx',
'application/vnd.openxmlformats-officedocument.presentationml.presentation'
],
['rar', 'application/vnd.rar'],
['rtf', 'application/rtf'],
['sh', 'application/x-sh'],
['svg', 'image/svg+xml'],
['swf', 'application/x-shockwave-flash'],
['tar', 'application/x-tar'],
['tif', 'image/tiff'],
['tiff', 'image/tiff'],
['ts', 'video/mp2t'],
['ttf', 'font/ttf'],
['txt', 'text/plain'],
['vsd', 'application/vnd.visio'],
['wav', 'audio/wav'],
['weba', 'audio/webm'],
['webm', 'video/webm'],
['webp', 'image/webp'],
['woff', 'font/woff'],
['woff2', 'font/woff2'],
['xhtml', 'application/xhtml+xml'],
['xls', 'application/vnd.ms-excel'],
[
'xlsx',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
],
['xml', 'application/xml'],
['xul', 'application/vnd.mozilla.xul+xml'],
['zip', 'application/zip'],
['7z', 'application/x-7z-compressed'],
['mkv', 'video/x-matroska'],
['mov', 'video/quicktime'],
['msg', 'application/vnd.ms-outlook']
]);
function toFileWithPath(file, path) {
var f4 = withMimeType(file);
if (typeof f4.path !== 'string') {
var webkitRelativePath = file.webkitRelativePath;
Object.defineProperty(f4, 'path', {
value:
typeof path === 'string'
? path
: typeof webkitRelativePath === 'string' &&
webkitRelativePath.length > 0
? webkitRelativePath
: file.name,
writable: false,
configurable: false,
enumerable: true
});
}
return f4;
}
function withMimeType(file) {
var name = file.name;
var hasExtension = name && name.lastIndexOf('.') !== -1;
if (hasExtension && !file.type) {
var ext = name.split('.').pop().toLowerCase();
var type = COMMON_MIME_TYPES.get(ext);
if (type) {
Object.defineProperty(file, 'type', {
value: type,
writable: false,
configurable: false,
enumerable: true
});
}
}
return file;
}
var FILES_TO_IGNORE = ['.DS_Store', 'Thumbs.db'];
function fromEvent(evt) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
if (isObject2(evt) && isDataTransfer(evt)) {
return [2, getDataTransferFiles(evt.dataTransfer, evt.type)];
} else if (isChangeEvt(evt)) {
return [2, getInputFiles(evt)];
} else if (
Array.isArray(evt) &&
evt.every(function (item) {
return (
'getFile' in item && typeof item.getFile === 'function'
);
})
) {
return [2, getFsHandleFiles(evt)];
}
return [2, []];
});
});
}
function isDataTransfer(value) {
return isObject2(value.dataTransfer);
}
function isChangeEvt(value) {
return isObject2(value) && isObject2(value.target);
}
function isObject2(v4) {
return typeof v4 === 'object' && v4 !== null;
}
function getInputFiles(evt) {
return fromList(evt.target.files).map(function (file) {
return toFileWithPath(file);
});
}
function getFsHandleFiles(handles) {
return __awaiter(this, void 0, void 0, function () {
var files;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
return [
4,
Promise.all(
handles.map(function (h4) {
return h4.getFile();
})
)
];
case 1:
files = _a.sent();
return [
2,
files.map(function (file) {
return toFileWithPath(file);
})
];
}
});
});
}
function getDataTransferFiles(dt, type) {
return __awaiter(this, void 0, void 0, function () {
var items, files;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (dt === null) {
return [2, []];
}
if (!dt.items) return [3, 2];
items = fromList(dt.items).filter(function (item) {
return item.kind === 'file';
});
if (type !== 'drop') {
return [2, items];
}
return [4, Promise.all(items.map(toFilePromises))];
case 1:
files = _a.sent();
return [2, noIgnoredFiles(flatten(files))];
case 2:
return [
2,
noIgnoredFiles(
fromList(dt.files).map(function (file) {
return toFileWithPath(file);
})
)
];
}
});
});
}
function noIgnoredFiles(files) {
return files.filter(function (file) {
return FILES_TO_IGNORE.indexOf(file.name) === -1;
});
}
function fromList(items) {
if (items === null) {
return [];
}
var files = [];
for (var i4 = 0; i4 < items.length; i4++) {
var file = items[i4];
files.push(file);
}
return files;
}
function toFilePromises(item) {
if (typeof item.webkitGetAsEntry !== 'function') {
return fromDataTransferItem(item);
}
var entry = item.webkitGetAsEntry();
if (entry && entry.isDirectory) {
return fromDirEntry(entry);
}
return fromDataTransferItem(item);
}
function flatten(items) {
return items.reduce(function (acc, files) {
return __spread(acc, Array.isArray(files) ? flatten(files) : [files]);
}, []);
}
function fromDataTransferItem(item) {
var file = item.getAsFile();
if (!file) {
return Promise.reject(item + ' is not a File');
}
var fwp = toFileWithPath(file);
return Promise.resolve(fwp);
}
function fromEntry(entry) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [
2,
entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)
];
});
});
}
function fromDirEntry(entry) {
var reader = entry.createReader();
return new Promise(function (resolve, reject) {
var entries = [];
function readEntries() {
var _this = this;
reader.readEntries(
function (batch) {
return __awaiter(_this, void 0, void 0, function () {
var files, err_1, items;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!!batch.length) return [3, 5];
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4, Promise.all(entries)];
case 2:
files = _a.sent();
resolve(files);
return [3, 4];
case 3:
err_1 = _a.sent();
reject(err_1);
return [3, 4];
case 4:
return [3, 6];
case 5:
items = Promise.all(batch.map(fromEntry));
entries.push(items);
readEntries();
_a.label = 6;
case 6:
return [2];
}
});
});
},
function (err) {
reject(err);
}
);
}
readEntries();
});
}
function fromFileEntry(entry) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [
2,
new Promise(function (resolve, reject) {
entry.file(
function (file) {
var fwp = toFileWithPath(file, entry.fullPath);
resolve(fwp);
},
function (err) {
reject(err);
}
);
})
];
});
});
}
var import_attr_accept = __toESM(require_es());
function ownKeys2(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
(enumerableOnly &&
(symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})),
keys.push.apply(keys, symbols));
}
return keys;
}
function _objectSpread(target) {
for (var i4 = 1; i4 < arguments.length; i4++) {
var source = null != arguments[i4] ? arguments[i4] : {};
i4 % 2
? ownKeys2(Object(source), true).forEach(function (key) {
_defineProperty2(target, key, source[key]);
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
target,
Object.getOwnPropertyDescriptors(source)
)
: ownKeys2(Object(source)).forEach(function (key) {
Object.defineProperty(
target,
key,
Object.getOwnPropertyDescriptor(source, key)
);
});
}
return target;
}
function _defineProperty2(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i4) {
return (
_arrayWithHoles(arr) ||
_iterableToArrayLimit(arr, i4) ||
_unsupportedIterableToArray(arr, i4) ||
_nonIterableRest()
);
}
function _nonIterableRest() {
throw new TypeError(
'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
);
}
function _unsupportedIterableToArray(o4, minLen) {
if (!o4) return;
if (typeof o4 === 'string') return _arrayLikeToArray(o4, minLen);
var n4 = Object.prototype.toString.call(o4).slice(8, -1);
if (n4 === 'Object' && o4.constructor) n4 = o4.constructor.name;
if (n4 === 'Map' || n4 === 'Set') return Array.from(o4);
if (
n4 === 'Arguments' ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n4)
)
return _arrayLikeToArray(o4, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i4 = 0, arr2 = new Array(len); i4 < len; i4++) {
arr2[i4] = arr[i4];
}
return arr2;
}
function _iterableToArrayLimit(arr, i4) {
var _i =
arr == null
? null
: (typeof Symbol !== 'undefined' && arr[Symbol.iterator]) ||
arr['@@iterator'];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i4 && _arr.length === i4) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i['return'] != null) _i['return']();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
var FILE_INVALID_TYPE = 'file-invalid-type';
var FILE_TOO_LARGE = 'file-too-large';
var FILE_TOO_SMALL = 'file-too-small';
var TOO_MANY_FILES = 'too-many-files';
var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr2(accept) {
accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;
var messageSuffix = Array.isArray(accept)
? 'one of '.concat(accept.join(', '))
: accept;
return {
code: FILE_INVALID_TYPE,
message: 'File type must be '.concat(messageSuffix)
};
};
var getTooLargeRejectionErr = function getTooLargeRejectionErr2(maxSize) {
return {
code: FILE_TOO_LARGE,
message: 'File is larger than '
.concat(maxSize, ' ')
.concat(maxSize === 1 ? 'byte' : 'bytes')
};
};
var getTooSmallRejectionErr = function getTooSmallRejectionErr2(minSize) {
return {
code: FILE_TOO_SMALL,
message: 'File is smaller than '
.concat(minSize, ' ')
.concat(minSize === 1 ? 'byte' : 'bytes')
};
};
var TOO_MANY_FILES_REJECTION = {
code: TOO_MANY_FILES,
message: 'Too many files'
};
function fileAccepted(file, accept) {
var isAcceptable =
file.type === 'application/x-moz-file' ||
(0, import_attr_accept.default)(file, accept);
return [
isAcceptable,
isAcceptable ? null : getInvalidTypeRejectionErr(accept)
];
}
function fileMatchSize(file, minSize, maxSize) {
if (isDefined(file.size)) {
if (isDefined(minSize) && isDefined(maxSize)) {
if (file.size > maxSize)
return [false, getTooLargeRejectionErr(maxSize)];
if (file.size < minSize)
return [false, getTooSmallRejectionErr(minSize)];
} else if (isDefined(minSize) && file.size < minSize)
return [false, getTooSmallRejectionErr(minSize)];
else if (isDefined(maxSize) && file.size > maxSize)
return [false, getTooLargeRejectionErr(maxSize)];
}
return [true, null];
}
function isDefined(value) {
return value !== void 0 && value !== null;
}
function allFilesAccepted(_ref) {
var files = _ref.files,
accept = _ref.accept,
minSize = _ref.minSize,
maxSize = _ref.maxSize,
multiple = _ref.multiple,
maxFiles = _ref.maxFiles;
if (
(!multiple && files.length > 1) ||
(multiple && maxFiles >= 1 && files.length > maxFiles)
) {
return false;
}
return files.every(function (file) {
var _fileAccepted = fileAccepted(file, accept),
_fileAccepted2 = _slicedToArray(_fileAccepted, 1),
accepted = _fileAccepted2[0];
var _fileMatchSize = fileMatchSize(file, minSize, maxSize),
_fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),
sizeMatch = _fileMatchSize2[0];
return accepted && sizeMatch;
});
}
function isPropagationStopped(event) {
if (typeof event.isPropagationStopped === 'function') {
return event.isPropagationStopped();
} else if (typeof event.cancelBubble !== 'undefined') {
return event.cancelBubble;
}
return false;
}
function isEvtWithFiles(event) {
if (!event.dataTransfer) {
return !!event.target && !!event.target.files;
}
return Array.prototype.some.call(event.dataTransfer.types, function (type) {
return type === 'Files' || type === 'application/x-moz-file';
});
}
function onDocumentDragOver(event) {
event.preventDefault();
}
function isIe(userAgent) {
return (
userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1
);
}
function isEdge(userAgent) {
return userAgent.indexOf('Edge/') !== -1;
}
function isIeOrEdge() {
var userAgent =
arguments.length > 0 && arguments[0] !== void 0
? arguments[0]
: window.navigator.userAgent;
return isIe(userAgent) || isEdge(userAgent);
}
function composeEventHandlers() {
for (
var _len = arguments.length, fns = new Array(_len), _key = 0;
_key < _len;
_key++
) {
fns[_key] = arguments[_key];
}
return function (event) {
for (
var _len2 = arguments.length,
args = new Array(_len2 > 1 ? _len2 - 1 : 0),
_key2 = 1;
_key2 < _len2;
_key2++
) {
args[_key2 - 1] = arguments[_key2];
}
return fns.some(function (fn) {
if (!isPropagationStopped(event) && fn) {
fn.apply(void 0, [event].concat(args));
}
return isPropagationStopped(event);
});
};
}
function canUseFileSystemAccessAPI() {
return 'showOpenFilePicker' in window;
}
function filePickerOptionsTypes(accept) {
accept = typeof accept === 'string' ? accept.split(',') : accept;
return [
{
description: 'everything',
accept: Array.isArray(accept)
? accept
.filter(function (item) {
return (
item === 'audio/*' ||
item === 'video/*' ||
item === 'image/*' ||
item === 'text/*' ||
/\w+\/[-+.\w]+/g.test(item)
);
})
.reduce(function (a4, b4) {
return _objectSpread(
_objectSpread({}, a4),
{},
_defineProperty2({}, b4, [])
);
}, {})
: {}
}
];
}
function isAbort(v4) {
return (
v4 instanceof DOMException &&
(v4.name === 'AbortError' || v4.code === v4.ABORT_ERR)
);
}
function isSecurityError(v4) {
return (
v4 instanceof DOMException &&
(v4.name === 'SecurityError' || v4.code === v4.SECURITY_ERR)
);
}
var _excluded4 = ['children'];
var _excluded22 = ['open'];
var _excluded32 = [
'refKey',
'role',
'onKeyDown',
'onFocus',
'onBlur',
'onClick',
'onDragEnter',
'onDragOver',
'onDragLeave',
'onDrop'
];
var _excluded42 = ['refKey', 'onChange', 'onClick'];
function _toConsumableArray(arr) {
return (
_arrayWithoutHoles(arr) ||
_iterableToArray(arr) ||
_unsupportedIterableToArray2(arr) ||
_nonIterableSpread()
);
}
function _nonIterableSpread() {
throw new TypeError(
'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
);
}
function _iterableToArray(iter) {
if (
(typeof Symbol !== 'undefined' && iter[Symbol.iterator] != null) ||
iter['@@iterator'] != null
)
return Array.from(iter);
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray2(arr);
}
function _slicedToArray2(arr, i4) {
return (
_arrayWithHoles2(arr) ||
_iterableToArrayLimit2(arr, i4) ||
_unsupportedIterableToArray2(arr, i4) ||
_nonIterableRest2()
);
}
function _nonIterableRest2() {
throw new TypeError(
'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
);
}
function _unsupportedIterableToArray2(o4, minLen) {
if (!o4) return;
if (typeof o4 === 'string') return _arrayLikeToArray2(o4, minLen);
var n4 = Object.prototype.toString.call(o4).slice(8, -1);
if (n4 === 'Object' && o4.constructor) n4 = o4.constructor.name;
if (n4 === 'Map' || n4 === 'Set') return Array.from(o4);
if (
n4 === 'Arguments' ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n4)
)
return _arrayLikeToArray2(o4, minLen);
}
function _arrayLikeToArray2(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i4 = 0, arr2 = new Array(len); i4 < len; i4++) {
arr2[i4] = arr[i4];
}
return arr2;
}
function _iterableToArrayLimit2(arr, i4) {
var _i =
arr == null
? null
: (typeof Symbol !== 'undefined' && arr[Symbol.iterator]) ||
arr['@@iterator'];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i4 && _arr.length === i4) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i['return'] != null) _i['return']();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _arrayWithHoles2(arr) {
if (Array.isArray(arr)) return arr;
}
function ownKeys3(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
(enumerableOnly &&
(symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})),
keys.push.apply(keys, symbols));
}
return keys;
}
function _objectSpread3(target) {
for (var i4 = 1; i4 < arguments.length; i4++) {
var source = null != arguments[i4] ? arguments[i4] : {};
i4 % 2
? ownKeys3(Object(source), true).forEach(function (key) {
_defineProperty3(target, key, source[key]);
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
target,
Object.getOwnPropertyDescriptors(source)
)
: ownKeys3(Object(source)).forEach(function (key) {
Object.defineProperty(
target,
key,
Object.getOwnPropertyDescriptor(source, key)
);
});
}
return target;
}
function _defineProperty3(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _objectWithoutProperties2(source, excluded) {
if (source == null) return {};
var target = _objectWithoutPropertiesLoose2(source, excluded);
var key, i4;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i4 = 0; i4 < sourceSymbolKeys.length; i4++) {
key = sourceSymbolKeys[i4];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key))
continue;
target[key] = source[key];
}
}
return target;
}
function _objectWithoutPropertiesLoose2(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i4;
for (i4 = 0; i4 < sourceKeys.length; i4++) {
key = sourceKeys[i4];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
var Dropzone = React5.forwardRef(function (_ref, ref) {
var children = _ref.children,
params = _objectWithoutProperties2(_ref, _excluded4);
var _useDropzone = useDropzone(params),
open = _useDropzone.open,
props3 = _objectWithoutProperties2(_useDropzone, _excluded22);
React5.useImperativeHandle(
ref,
function () {
return { open };
},
[open]
);
return React5.createElement(
React5.Fragment,
null,
children(_objectSpread3(_objectSpread3({}, props3), {}, { open }))
);
});
Dropzone.displayName = 'Dropzone';
var defaultProps = {
disabled: false,
getFilesFromEvent: fromEvent,
maxSize: Infinity,
minSize: 0,
multiple: true,
maxFiles: 0,
preventDropOnDocument: true,
noClick: false,
noKeyboard: false,
noDrag: false,
noDragEventsBubbling: false,
validator: null,
useFsAccessApi: true
};
Dropzone.defaultProps = defaultProps;
Dropzone.propTypes = {
children: import_prop_types.default.func,
accept: import_prop_types.default.oneOfType([
import_prop_types.default.string,
import_prop_types.default.arrayOf(import_prop_types.default.string)
]),
multiple: import_prop_types.default.bool,
preventDropOnDocument: import_prop_types.default.bool,
noClick: import_prop_types.default.bool,
noKeyboard: import_prop_types.default.bool,
noDrag: import_prop_types.default.bool,
noDragEventsBubbling: import_prop_types.default.bool,
minSize: import_prop_types.default.number,
maxSize: import_prop_types.default.number,
maxFiles: import_prop_types.default.number,
disabled: import_prop_types.default.bool,
getFilesFromEvent: import_prop_types.default.func,
onFileDialogCancel: import_prop_types.default.func,
onFileDialogOpen: import_prop_types.default.func,
useFsAccessApi: import_prop_types.default.bool,
onDragEnter: import_prop_types.default.func,
onDragLeave: import_prop_types.default.func,
onDragOver: import_prop_types.default.func,
onDrop: import_prop_types.default.func,
onDropAccepted: import_prop_types.default.func,
onDropRejected: import_prop_types.default.func,
validator: import_prop_types.default.func
};
var initialState = {
isFocused: false,
isFileDialogActive: false,
isDragActive: false,
isDragAccept: false,
isDragReject: false,
draggedFiles: [],
acceptedFiles: [],
fileRejections: []
};
function useDropzone() {
var options =
arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var _defaultProps$options = _objectSpread3(
_objectSpread3({}, defaultProps),
options
),
accept = _defaultProps$options.accept,
disabled = _defaultProps$options.disabled,
getFilesFromEvent = _defaultProps$options.getFilesFromEvent,
maxSize = _defaultProps$options.maxSize,
minSize = _defaultProps$options.minSize,
multiple = _defaultProps$options.multiple,
maxFiles = _defaultProps$options.maxFiles,
onDragEnter = _defaultProps$options.onDragEnter,
onDragLeave = _defaultProps$options.onDragLeave,
onDragOver = _defaultProps$options.onDragOver,
onDrop = _defaultProps$options.onDrop,
onDropAccepted = _defaultProps$options.onDropAccepted,
onDropRejected = _defaultProps$options.onDropRejected,
onFileDialogCancel = _defaultProps$options.onFileDialogCancel,
onFileDialogOpen = _defaultProps$options.onFileDialogOpen,
useFsAccessApi = _defaultProps$options.useFsAccessApi,
preventDropOnDocument = _defaultProps$options.preventDropOnDocument,
noClick = _defaultProps$options.noClick,
noKeyboard = _defaultProps$options.noKeyboard,
noDrag = _defaultProps$options.noDrag,
noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,
validator = _defaultProps$options.validator;
var onFileDialogOpenCb = React5.useMemo(
function () {
return typeof onFileDialogOpen === 'function'
? onFileDialogOpen
: noop;
},
[onFileDialogOpen]
);
var onFileDialogCancelCb = React5.useMemo(
function () {
return typeof onFileDialogCancel === 'function'
? onFileDialogCancel
: noop;
},
[onFileDialogCancel]
);
var rootRef = React5.useRef(null);
var inputRef = React5.useRef(null);
var _useReducer = React5.useReducer(reducer, initialState),
_useReducer2 = _slicedToArray2(_useReducer, 2),
state = _useReducer2[0],
dispatch = _useReducer2[1];
var isFocused = state.isFocused,
isFileDialogActive = state.isFileDialogActive,
draggedFiles = state.draggedFiles;
var fsAccessApiWorksRef = React5.useRef(
typeof window !== 'undefined' &&
window.isSecureContext &&
useFsAccessApi &&
canUseFileSystemAccessAPI()
);
var onWindowFocus = function onWindowFocus2() {
if (!fsAccessApiWorksRef.current && isFileDialogActive) {
setTimeout(function () {
if (inputRef.current) {
var files = inputRef.current.files;
if (!files.length) {
dispatch({ type: 'closeDialog' });
onFileDialogCancelCb();
}
}
}, 300);
}
};
React5.useEffect(
function () {
window.addEventListener('focus', onWindowFocus, false);
return function () {
window.removeEventListener('focus', onWindowFocus, false);
};
},
[
inputRef,
isFileDialogActive,
onFileDialogCancelCb,
fsAccessApiWorksRef
]
);
var dragTargetsRef = React5.useRef([]);
var onDocumentDrop = function onDocumentDrop2(event) {
if (rootRef.current && rootRef.current.contains(event.target)) {
return;
}
event.preventDefault();
dragTargetsRef.current = [];
};
React5.useEffect(
function () {
if (preventDropOnDocument) {
document.addEventListener(
'dragover',
onDocumentDragOver,
false
);
document.addEventListener('drop', onDocumentDrop, false);
}
return function () {
if (preventDropOnDocument) {
document.removeEventListener(
'dragover',
onDocumentDragOver
);
document.removeEventListener('drop', onDocumentDrop);
}
};
},
[rootRef, preventDropOnDocument]
);
var onDragEnterCb = React5.useCallback(
function (event) {
event.preventDefault();
event.persist();
stopPropagation(event);
dragTargetsRef.current = [].concat(
_toConsumableArray(dragTargetsRef.current),
[event.target]
);
if (isEvtWithFiles(event)) {
Promise.resolve(getFilesFromEvent(event)).then(
function (draggedFiles2) {
if (
isPropagationStopped(event) &&
!noDragEventsBubbling
) {
return;
}
dispatch({
draggedFiles: draggedFiles2,
isDragActive: true,
type: 'setDraggedFiles'
});
if (onDragEnter) {
onDragEnter(event);
}
}
);
}
},
[getFilesFromEvent, onDragEnter, noDragEventsBubbling]
);
var onDragOverCb = React5.useCallback(
function (event) {
event.preventDefault();
event.persist();
stopPropagation(event);
var hasFiles = isEvtWithFiles(event);
if (hasFiles && event.dataTransfer) {
try {
event.dataTransfer.dropEffect = 'copy';
} catch (_unused) {}
}
if (hasFiles && onDragOver) {
onDragOver(event);
}
return false;
},
[onDragOver, noDragEventsBubbling]
);
var onDragLeaveCb = React5.useCallback(
function (event) {
event.preventDefault();
event.persist();
stopPropagation(event);
var targets = dragTargetsRef.current.filter(function (target) {
return rootRef.current && rootRef.current.contains(target);
});
var targetIdx = targets.indexOf(event.target);
if (targetIdx !== -1) {
targets.splice(targetIdx, 1);
}
dragTargetsRef.current = targets;
if (targets.length > 0) {
return;
}
dispatch({
isDragActive: false,
type: 'setDraggedFiles',
draggedFiles: []
});
if (isEvtWithFiles(event) && onDragLeave) {
onDragLeave(event);
}
},
[rootRef, onDragLeave, noDragEventsBubbling]
);
var setFiles = React5.useCallback(
function (files, event) {
var acceptedFiles = [];
var fileRejections = [];
files.forEach(function (file) {
var _fileAccepted = fileAccepted(file, accept),
_fileAccepted2 = _slicedToArray2(_fileAccepted, 2),
accepted = _fileAccepted2[0],
acceptError = _fileAccepted2[1];
var _fileMatchSize = fileMatchSize(file, minSize, maxSize),
_fileMatchSize2 = _slicedToArray2(_fileMatchSize, 2),
sizeMatch = _fileMatchSize2[0],
sizeError = _fileMatchSize2[1];
var customErrors = validator ? validator(file) : null;
if (accepted && sizeMatch && !customErrors) {
acceptedFiles.push(file);
} else {
var errors = [acceptError, sizeError];
if (customErrors) {
errors = errors.concat(customErrors);
}
fileRejections.push({
file,
errors: errors.filter(function (e4) {
return e4;
})
});
}
});
if (
(!multiple && acceptedFiles.length > 1) ||
(multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles)
) {
acceptedFiles.forEach(function (file) {
fileRejections.push({
file,
errors: [TOO_MANY_FILES_REJECTION]
});
});
acceptedFiles.splice(0);
}
dispatch({ acceptedFiles, fileRejections, type: 'setFiles' });
if (onDrop) {
onDrop(acceptedFiles, fileRejections, event);
}
if (fileRejections.length > 0 && onDropRejected) {
onDropRejected(fileRejections, event);
}
if (acceptedFiles.length > 0 && onDropAccepted) {
onDropAccepted(acceptedFiles, event);
}
},
[
dispatch,
multiple,
accept,
minSize,
maxSize,
maxFiles,
onDrop,
onDropAccepted,
onDropRejected,
validator
]
);
var onDropCb = React5.useCallback(
function (event) {
event.preventDefault();
event.persist();
stopPropagation(event);
dragTargetsRef.current = [];
if (isEvtWithFiles(event)) {
Promise.resolve(getFilesFromEvent(event)).then(
function (files) {
if (
isPropagationStopped(event) &&
!noDragEventsBubbling
) {
return;
}
setFiles(files, event);
}
);
}
dispatch({ type: 'reset' });
},
[getFilesFromEvent, setFiles, noDragEventsBubbling]
);
var openFileDialog = React5.useCallback(
function () {
if (fsAccessApiWorksRef.current) {
dispatch({ type: 'openDialog' });
onFileDialogOpenCb();
var opts = { multiple, types: filePickerOptionsTypes(accept) };
window
.showOpenFilePicker(opts)
.then(function (handles) {
return getFilesFromEvent(handles);
})
.then(function (files) {
setFiles(files, null);
dispatch({ type: 'closeDialog' });
})
.catch(function (e4) {
if (isAbort(e4)) {
onFileDialogCancelCb(e4);
dispatch({ type: 'closeDialog' });
} else if (isSecurityError(e4)) {
fsAccessApiWorksRef.current = false;
if (inputRef.current) {
inputRef.current.value = null;
inputRef.current.click();
}
}
});
return;
}
if (inputRef.current) {
dispatch({ type: 'openDialog' });
onFileDialogOpenCb();
inputRef.current.value = null;
inputRef.current.click();
}
},
[
dispatch,
onFileDialogOpenCb,
onFileDialogCancelCb,
useFsAccessApi,
setFiles,
accept,
multiple
]
);
var onKeyDownCb = React5.useCallback(
function (event) {
if (
!rootRef.current ||
!rootRef.current.isEqualNode(event.target)
) {
return;
}
if (
event.key === ' ' ||
event.key === 'Enter' ||
event.keyCode === 32 ||
event.keyCode === 13
) {
event.preventDefault();
openFileDialog();
}
},
[rootRef, openFileDialog]
);
var onFocusCb = React5.useCallback(function () {
dispatch({ type: 'focus' });
}, []);
var onBlurCb = React5.useCallback(function () {
dispatch({ type: 'blur' });
}, []);
var onClickCb = React5.useCallback(
function () {
if (noClick) {
return;
}
if (isIeOrEdge()) {
setTimeout(openFileDialog, 0);
} else {
openFileDialog();
}
},
[noClick, openFileDialog]
);
var composeHandler = function composeHandler2(fn) {
return disabled ? null : fn;
};
var composeKeyboardHandler = function composeKeyboardHandler2(fn) {
return noKeyboard ? null : composeHandler(fn);
};
var composeDragHandler = function composeDragHandler2(fn) {
return noDrag ? null : composeHandler(fn);
};
var stopPropagation = function stopPropagation2(event) {
if (noDragEventsBubbling) {
event.stopPropagation();
}
};
var getRootProps = React5.useMemo(
function () {
return function () {
var _ref2 =
arguments.length > 0 && arguments[0] !== void 0
? arguments[0]
: {},
_ref2$refKey = _ref2.refKey,
refKey = _ref2$refKey === void 0 ? 'ref' : _ref2$refKey,
role = _ref2.role,
onKeyDown = _ref2.onKeyDown,
onFocus = _ref2.onFocus,
onBlur = _ref2.onBlur,
onClick = _ref2.onClick,
onDragEnter2 = _ref2.onDragEnter,
onDragOver2 = _ref2.onDragOver,
onDragLeave2 = _ref2.onDragLeave,
onDrop2 = _ref2.onDrop,
rest2 = _objectWithoutProperties2(_ref2, _excluded32);
return _objectSpread3(
_objectSpread3(
_defineProperty3(
{
onKeyDown: composeKeyboardHandler(
composeEventHandlers(onKeyDown, onKeyDownCb)
),
onFocus: composeKeyboardHandler(
composeEventHandlers(onFocus, onFocusCb)
),
onBlur: composeKeyboardHandler(
composeEventHandlers(onBlur, onBlurCb)
),
onClick: composeHandler(
composeEventHandlers(onClick, onClickCb)
),
onDragEnter: composeDragHandler(
composeEventHandlers(
onDragEnter2,
onDragEnterCb
)
),
onDragOver: composeDragHandler(
composeEventHandlers(
onDragOver2,
onDragOverCb
)
),
onDragLeave: composeDragHandler(
composeEventHandlers(
onDragLeave2,
onDragLeaveCb
)
),
onDrop: composeDragHandler(
composeEventHandlers(onDrop2, onDropCb)
),
role:
typeof role === 'string' && role !== ''
? role
: 'button'
},
refKey,
rootRef
),
!disabled && !noKeyboard ? { tabIndex: 0 } : {}
),
rest2
);
};
},
[
rootRef,
onKeyDownCb,
onFocusCb,
onBlurCb,
onClickCb,
onDragEnterCb,
onDragOverCb,
onDragLeaveCb,
onDropCb,
noKeyboard,
noDrag,
disabled
]
);
var onInputElementClick = React5.useCallback(function (event) {
event.stopPropagation();
}, []);
var getInputProps = React5.useMemo(
function () {
return function () {
var _ref3 =
arguments.length > 0 && arguments[0] !== void 0
? arguments[0]
: {},
_ref3$refKey = _ref3.refKey,
refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,
onChange = _ref3.onChange,
onClick = _ref3.onClick,
rest2 = _objectWithoutProperties2(_ref3, _excluded42);
var inputProps = _defineProperty3(
{
accept,
multiple,
type: 'file',
style: { display: 'none' },
onChange: composeHandler(
composeEventHandlers(onChange, onDropCb)
),
onClick: composeHandler(
composeEventHandlers(onClick, onInputElementClick)
),
tabIndex: -1
},
refKey,
inputRef
);
return _objectSpread3(_objectSpread3({}, inputProps), rest2);
};
},
[inputRef, accept, multiple, onDropCb, disabled]
);
var fileCount = draggedFiles.length;
var isDragAccept =
fileCount > 0 &&
allFilesAccepted({
files: draggedFiles,
accept,
minSize,
maxSize,
multiple,
maxFiles
});
var isDragReject = fileCount > 0 && !isDragAccept;
return _objectSpread3(
_objectSpread3({}, state),
{},
{
isDragAccept,
isDragReject,
isFocused: isFocused && !disabled,
getRootProps,
getInputProps,
rootRef,
inputRef,
open: composeHandler(openFileDialog)
}
);
}
function reducer(state, action) {
switch (action.type) {
case 'focus':
return _objectSpread3(
_objectSpread3({}, state),
{},
{ isFocused: true }
);
case 'blur':
return _objectSpread3(
_objectSpread3({}, state),
{},
{ isFocused: false }
);
case 'openDialog':
return _objectSpread3(
_objectSpread3({}, initialState),
{},
{ isFileDialogActive: true }
);
case 'closeDialog':
return _objectSpread3(
_objectSpread3({}, state),
{},
{ isFileDialogActive: false }
);
case 'setDraggedFiles':
var isDragActive = action.isDragActive,
draggedFiles = action.draggedFiles;
return _objectSpread3(
_objectSpread3({}, state),
{},
{ draggedFiles, isDragActive }
);
case 'setFiles':
return _objectSpread3(
_objectSpread3({}, state),
{},
{
acceptedFiles: action.acceptedFiles,
fileRejections: action.fileRejections
}
);
case 'reset':
return _objectSpread3({}, initialState);
default:
return state;
}
}
function noop() {}
function createStore(createState) {
let state;
const listeners = new Set();
const setState = (partial, replace) => {
const nextState =
typeof partial === 'function' ? partial(state) : partial;
if (nextState !== state) {
const previousState = state;
state = replace ? nextState : Object.assign({}, state, nextState);
listeners.forEach((listener) => listener(state, previousState));
}
};
const getState = () => state;
const subscribeWithSelector2 = (
listener,
selector = getState,
equalityFn = Object.is
) => {
console.warn(
'[DEPRECATED] Please use `subscribeWithSelector` middleware'
);
let currentSlice = selector(state);
function listenerToAdd() {
const nextSlice = selector(state);
if (!equalityFn(currentSlice, nextSlice)) {
const previousSlice = currentSlice;
listener((currentSlice = nextSlice), previousSlice);
}
}
listeners.add(listenerToAdd);
return () => listeners.delete(listenerToAdd);
};
const subscribe = (listener, selector, equalityFn) => {
if (selector || equalityFn) {
return subscribeWithSelector2(listener, selector, equalityFn);
}
listeners.add(listener);
return () => listeners.delete(listener);
};
const destroy = () => listeners.clear();
const api = { setState, getState, subscribe, destroy };
state = createState(setState, getState, api);
return api;
}
var isSSR =
typeof window === 'undefined' ||
!window.navigator ||
/ServerSideRendering|^Deno\//.test(window.navigator.userAgent);
var useIsomorphicLayoutEffect = isSSR ? React5.useEffect : React5.useLayoutEffect;
function create(createState) {
const api =
typeof createState === 'function'
? createStore(createState)
: createState;
const useStore = (selector = api.getState, equalityFn = Object.is) => {
const [, forceUpdate] = React5.useReducer((c4) => c4 + 1, 0);
const state = api.getState();
const stateRef = React5.useRef(state);
const selectorRef = React5.useRef(selector);
const equalityFnRef = React5.useRef(equalityFn);
const erroredRef = React5.useRef(false);
const currentSliceRef = React5.useRef();
if (currentSliceRef.current === void 0) {
currentSliceRef.current = selector(state);
}
let newStateSlice;
let hasNewStateSlice = false;
if (
stateRef.current !== state ||
selectorRef.current !== selector ||
equalityFnRef.current !== equalityFn ||
erroredRef.current
) {
newStateSlice = selector(state);
hasNewStateSlice = !equalityFn(
currentSliceRef.current,
newStateSlice
);
}
useIsomorphicLayoutEffect(() => {
if (hasNewStateSlice) {
currentSliceRef.current = newStateSlice;
}
stateRef.current = state;
selectorRef.current = selector;
equalityFnRef.current = equalityFn;
erroredRef.current = false;
});
const stateBeforeSubscriptionRef = React5.useRef(state);
useIsomorphicLayoutEffect(() => {
const listener = () => {
try {
const nextState = api.getState();
const nextStateSlice = selectorRef.current(nextState);
if (
!equalityFnRef.current(
currentSliceRef.current,
nextStateSlice
)
) {
stateRef.current = nextState;
currentSliceRef.current = nextStateSlice;
forceUpdate();
}
} catch (error) {
erroredRef.current = true;
forceUpdate();
}
};
const unsubscribe = api.subscribe(listener);
if (api.getState() !== stateBeforeSubscriptionRef.current) {
listener();
}
return unsubscribe;
}, []);
const sliceToReturn = hasNewStateSlice
? newStateSlice
: currentSliceRef.current;
React5.useDebugValue(sliceToReturn);
return sliceToReturn;
};
Object.assign(useStore, api);
useStore[Symbol.iterator] = function () {
console.warn(
'[useStore, api] = create() is deprecated and will be removed in v4'
);
const items = [useStore, api];
return {
next() {
const done = items.length <= 0;
return { value: items.shift(), done };
}
};
};
return useStore;
}
var subscribeWithSelector = (fn) => (set, get, api) => {
const origSubscribe = api.subscribe;
api.subscribe = (selector, optListener, options) => {
let listener = selector;
if (optListener) {
const equalityFn =
(options == null ? void 0 : options.equalityFn) || Object.is;
let currentSlice = selector(api.getState());
listener = (state) => {
const nextSlice = selector(state);
if (!equalityFn(currentSlice, nextSlice)) {
const previousSlice = currentSlice;
optListener((currentSlice = nextSlice), previousSlice);
}
};
if (options == null ? void 0 : options.fireImmediately) {
optListener(currentSlice, currentSlice);
}
}
return origSubscribe(listener);
};
const initialState2 = fn(set, get, api);
return initialState2;
};
var import_merge_value = __toESM(require_merge_value());
var join = (...args) => args.filter(Boolean).join('.');
function getKeyPath(path) {
const dir = path.split('.');
return [dir.pop(), dir.join('.') || void 0];
}
function getValuesForPaths(data, paths) {
return Object.entries(pick(data, paths)).reduce(
(acc, [, { value, disabled, key }]) => {
acc[key] = disabled ? void 0 : value;
return acc;
},
{}
);
}
function useCompareMemoize(value, deep) {
const ref = React5.useRef();
const compare = dequal ;
if (!compare(value, ref.current)) {
ref.current = value;
}
return ref.current;
}
function useDeepMemo(fn, deps) {
return React5.useMemo(fn, useCompareMemoize(deps));
}
function useToggle(toggled) {
const wrapperRef = React5.useRef(null);
const contentRef = React5.useRef(null);
const firstRender = React5.useRef(true);
React5.useLayoutEffect(() => {
if (!toggled) {
wrapperRef.current.style.height = '0px';
wrapperRef.current.style.overflow = 'hidden';
}
}, []);
React5.useEffect(() => {
if (firstRender.current) {
firstRender.current = false;
return;
}
let timeout;
const ref = wrapperRef.current;
const fixHeight = () => {
if (toggled) {
ref.style.removeProperty('height');
ref.style.removeProperty('overflow');
contentRef.current.scrollIntoView({
behavior: 'smooth',
block: 'nearest'
});
}
};
ref.addEventListener('transitionend', fixHeight, { once: true });
const { height } = contentRef.current.getBoundingClientRect();
ref.style.height = height + 'px';
if (!toggled) {
ref.style.overflow = 'hidden';
timeout = window.setTimeout(() => (ref.style.height = '0px'), 50);
}
return () => {
ref.removeEventListener('transitionend', fixHeight);
clearTimeout(timeout);
};
}, [toggled]);
return { wrapperRef, contentRef };
}
var useVisiblePaths = (store) => {
const [paths, setPaths] = React5.useState(store.getVisiblePaths());
React5.useEffect(() => {
setPaths(store.getVisiblePaths());
const unsub = store.useStore.subscribe(
store.getVisiblePaths,
setPaths,
{ equalityFn: shallow }
);
return () => unsub();
}, [store]);
return paths;
};
function useValuesForPath(store, paths, initialData) {
const valuesForPath = store.useStore((s4) => {
const data = _objectSpread2(_objectSpread2({}, initialData), s4.data);
return getValuesForPaths(data, paths);
}, shallow);
return valuesForPath;
}
function usePopin(margin = 3) {
const popinRef = React5.useRef(null);
const wrapperRef = React5.useRef(null);
const [shown, setShow] = React5.useState(false);
const show = React5.useCallback(() => setShow(true), []);
const hide2 = React5.useCallback(() => setShow(false), []);
React5.useLayoutEffect(() => {
if (shown) {
const { bottom, top, left } =
popinRef.current.getBoundingClientRect();
const { height } = wrapperRef.current.getBoundingClientRect();
const direction =
bottom + height > window.innerHeight - 40 ? 'up' : 'down';
wrapperRef.current.style.position = 'fixed';
wrapperRef.current.style.zIndex = '10000';
wrapperRef.current.style.left = left + 'px';
if (direction === 'down')
wrapperRef.current.style.top = bottom + margin + 'px';
else
wrapperRef.current.style.bottom =
window.innerHeight - top + margin + 'px';
}
}, [margin, shown]);
return { popinRef, wrapperRef, shown, show, hide: hide2 };
}
k2([names_default]);
var convertMap = { rgb: 'toRgb', hsl: 'toHsl', hsv: 'toHsv', hex: 'toHex' };
v8n_esm_default.extend({ color: () => (value) => w2(value).isValid() });
var schema$22 = (o4) => v8n_esm_default().color().test(o4);
function convert2(color2, { format: format3, hasAlpha, isString }) {
const convertFn =
convertMap[format3] + (isString && format3 !== 'hex' ? 'String' : '');
const result = color2[convertFn]();
return typeof result === 'object' && !hasAlpha
? omit(result, ['a'])
: result;
}
var sanitize$22 = (v4, settings) => {
const color2 = w2(v4);
if (!color2.isValid()) throw Error('Invalid color');
return convert2(color2, settings);
};
var format$12 = (v4, settings) => {
return convert2(
w2(v4),
_objectSpread2(
_objectSpread2({}, settings),
{},
{ isString: true, format: 'hex' }
)
);
};
var normalize$32 = ({ value }) => {
const _f = I2(value);
const format3 = _f === 'name' ? 'hex' : _f;
const hasAlpha =
typeof value === 'object'
? 'a' in value
: (_f === 'hex' && value.length === 8) ||
/^(rgba)|(hsla)|(hsva)/.test(value);
const settings = {
format: format3,
hasAlpha,
isString: typeof value === 'string'
};
return { value: sanitize$22(value, settings), settings };
};
var props$22 = Object.freeze({
__proto__: null,
schema: schema$22,
sanitize: sanitize$22,
format: format$12,
normalize: normalize$32
});
var ColorPreview = styled('div', {
position: 'relative',
boxSizing: 'border-box',
borderRadius: '$sm',
overflow: 'hidden',
cursor: 'pointer',
height: '$rowHeight',
width: '$rowHeight',
backgroundColor: '#fff',
backgroundImage: `url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')`,
$inputStyle: '',
$hover: '',
zIndex: 1,
variants: { active: { true: { $inputStyle: '$accent1' } } },
'&::before': {
content: '""',
position: 'absolute',
top: 0,
bottom: 0,
right: 0,
left: 0,
backgroundColor: 'currentColor',
zIndex: 1
}
});
var PickerContainer = styled('div', {
position: 'relative',
display: 'grid',
gridTemplateColumns: '$sizes$rowHeight auto',
columnGap: '$colGap',
alignItems: 'center'
});
var PickerWrapper = styled('div', {
width: '$colorPickerWidth',
height: '$colorPickerHeight',
'.react-colorful': {
width: '100%',
height: '100%',
boxShadow: '$level2',
cursor: 'crosshair'
},
'.react-colorful__saturation': { borderRadius: '$sm $sm 0 0' },
'.react-colorful__alpha, .react-colorful__hue': { height: 10 },
'.react-colorful__last-control': { borderRadius: '0 0 $sm $sm' },
'.react-colorful__pointer': { height: 12, width: 12 }
});
function convertToRgb(value, format3) {
return format3 !== 'rgb' ? w2(value).toRgb() : value;
}
function Color({ value, displayValue, settings, onUpdate }) {
const { emitOnEditStart, emitOnEditEnd } = useInputContext();
const { format: format3, hasAlpha } = settings;
const { popinRef, wrapperRef, shown, show, hide: hide2 } = usePopin();
const timer = React5.useRef(0);
const [initialRgb, setInitialRgb] = React5.useState(() =>
convertToRgb(value, format3)
);
const ColorPicker = hasAlpha ? Ce : Ne;
const showPicker = () => {
setInitialRgb(convertToRgb(value, format3));
show();
emitOnEditStart();
};
const hidePicker = () => {
hide2();
emitOnEditEnd();
window.clearTimeout(timer.current);
};
const hideAfterDelay = () => {
timer.current = window.setTimeout(hidePicker, 500);
};
React5.useEffect(() => {
return () => window.clearTimeout(timer.current);
}, []);
return React5.createElement(
React5.Fragment,
null,
React5.createElement(ColorPreview, {
ref: popinRef,
active: shown,
onClick: () => showPicker(),
style: { color: displayValue }
}),
shown &&
React5.createElement(
Portal,
null,
React5.createElement(Overlay, { onPointerUp: hidePicker }),
React5.createElement(
PickerWrapper,
{
ref: wrapperRef,
onMouseEnter: () => window.clearTimeout(timer.current),
onMouseLeave: (e4) =>
e4.buttons === 0 && hideAfterDelay()
},
React5.createElement(ColorPicker, {
color: initialRgb,
onChange: onUpdate
})
)
)
);
}
function ColorComponent() {
const { value, displayValue, label, onChange, onUpdate, settings } =
useInputContext();
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(
PickerContainer,
null,
React5.createElement(Color, {
value,
displayValue,
onChange,
onUpdate,
settings
}),
React5.createElement(ValueInput, {
value: displayValue,
onChange,
onUpdate
})
)
);
}
var color = createInternalPlugin(
_objectSpread2({ component: ColorComponent }, props$22)
);
function Vector3dComponent() {
const { label, displayValue, onUpdate, settings } = useInputContext();
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(Vector, {
value: displayValue,
settings,
onUpdate
})
);
}
var vector3d = createInternalPlugin(
_objectSpread2(
{ component: Vector3dComponent },
getVectorPlugin(['x', 'y', 'z'])
)
);
var JoystickTrigger = styled('div', {
$flexCenter: '',
position: 'relative',
backgroundColor: '$elevation3',
borderRadius: '$sm',
cursor: 'pointer',
height: '$rowHeight',
width: '$rowHeight',
touchAction: 'none',
$draggable: '',
$hover: '',
'&:active': { cursor: 'none' },
'&::after': {
content: '""',
backgroundColor: '$accent2',
height: 4,
width: 4,
borderRadius: 2
}
});
var JoystickPlayground = styled('div', {
$flexCenter: '',
width: '$joystickWidth',
height: '$joystickHeight',
borderRadius: '$sm',
boxShadow: '$level2',
position: 'fixed',
zIndex: 1e4,
overflow: 'hidden',
$draggable: '',
transform: 'translate(-50%, -50%)',
variants: {
isOutOfBounds: {
true: { backgroundColor: '$elevation1' },
false: { backgroundColor: '$elevation3' }
}
},
'> div': {
position: 'absolute',
$flexCenter: '',
borderStyle: 'solid',
borderWidth: 1,
borderColor: '$highlight1',
backgroundColor: '$elevation3',
width: '80%',
height: '80%',
'&::after,&::before': {
content: '""',
position: 'absolute',
zindex: 10,
backgroundColor: '$highlight1'
},
'&::before': { width: '100%', height: 1 },
'&::after': { height: '100%', width: 1 }
},
'> span': {
position: 'relative',
zindex: 100,
width: 10,
height: 10,
backgroundColor: '$accent2',
borderRadius: '50%'
}
});
function Joystick({ value, settings, onUpdate }) {
const timeout = React5.useRef();
const outOfBoundsX = React5.useRef(0);
const outOfBoundsY = React5.useRef(0);
const stepMultiplier = React5.useRef(1);
const [joystickShown, setShowJoystick] = React5.useState(false);
const [isOutOfBounds, setIsOutOfBounds] = React5.useState(false);
const [spanRef, set] = useTransform();
const joystickeRef = React5.useRef(null);
const playgroundRef = React5.useRef(null);
React5.useLayoutEffect(() => {
if (joystickShown) {
const { top, left, width, height } =
joystickeRef.current.getBoundingClientRect();
playgroundRef.current.style.left = left + width / 2 + 'px';
playgroundRef.current.style.top = top + height / 2 + 'px';
}
}, [joystickShown]);
const {
keys: [v1, v22],
joystick
} = settings;
const yFactor = joystick === 'invertY' ? 1 : -1;
const {
[v1]: { step: stepV1 },
[v22]: { step: stepV2 }
} = settings;
const wpx = useTh('sizes', 'joystickWidth');
const hpx = useTh('sizes', 'joystickHeight');
const w3 = (parseFloat(wpx) * 0.8) / 2;
const h4 = (parseFloat(hpx) * 0.8) / 2;
const startOutOfBounds = React5.useCallback(() => {
if (timeout.current) return;
setIsOutOfBounds(true);
if (outOfBoundsX.current) set({ x: outOfBoundsX.current * w3 });
if (outOfBoundsY.current) set({ y: outOfBoundsY.current * -h4 });
timeout.current = window.setInterval(() => {
onUpdate((v4) => {
const incX =
stepV1 * outOfBoundsX.current * stepMultiplier.current;
const incY =
yFactor *
stepV2 *
outOfBoundsY.current *
stepMultiplier.current;
return Array.isArray(v4)
? { [v1]: v4[0] + incX, [v22]: v4[1] + incY }
: { [v1]: v4[v1] + incX, [v22]: v4[v22] + incY };
});
}, 16);
}, [w3, h4, onUpdate, set, stepV1, stepV2, v1, v22, yFactor]);
const endOutOfBounds = React5.useCallback(() => {
window.clearTimeout(timeout.current);
timeout.current = void 0;
setIsOutOfBounds(false);
}, []);
React5.useEffect(() => {
function setStepMultiplier(event) {
stepMultiplier.current = multiplyStep(event);
}
window.addEventListener('keydown', setStepMultiplier);
window.addEventListener('keyup', setStepMultiplier);
return () => {
window.clearTimeout(timeout.current);
window.removeEventListener('keydown', setStepMultiplier);
window.removeEventListener('keyup', setStepMultiplier);
};
}, []);
const bind = useDrag2(
({ first, active, delta: [dx, dy], movement: [mx, my] }) => {
if (first) setShowJoystick(true);
const _x = clamp(mx, -w3, w3);
const _y = clamp(my, -h4, h4);
outOfBoundsX.current =
Math.abs(mx) > Math.abs(_x) ? Math.sign(mx - _x) : 0;
outOfBoundsY.current =
Math.abs(my) > Math.abs(_y) ? Math.sign(_y - my) : 0;
let newX = value[v1];
let newY = value[v22];
if (active) {
if (!outOfBoundsX.current) {
newX += dx * stepV1 * stepMultiplier.current;
set({ x: _x });
}
if (!outOfBoundsY.current) {
newY -= yFactor * dy * stepV2 * stepMultiplier.current;
set({ y: _y });
}
if (outOfBoundsX.current || outOfBoundsY.current)
startOutOfBounds();
else endOutOfBounds();
onUpdate({ [v1]: newX, [v22]: newY });
} else {
setShowJoystick(false);
outOfBoundsX.current = 0;
outOfBoundsY.current = 0;
set({ x: 0, y: 0 });
endOutOfBounds();
}
}
);
return React5.createElement(
JoystickTrigger,
_extends2({ ref: joystickeRef }, bind()),
joystickShown &&
React5.createElement(
Portal,
null,
React5.createElement(
JoystickPlayground,
{ ref: playgroundRef, isOutOfBounds },
React5.createElement('div', null),
React5.createElement('span', { ref: spanRef })
)
)
);
}
var Container$1 = styled('div', {
display: 'grid',
columnGap: '$colGap',
variants: {
withJoystick: {
true: { gridTemplateColumns: '$sizes$rowHeight auto' },
false: { gridTemplateColumns: 'auto' }
}
}
});
function Vector2dComponent() {
const { label, displayValue, onUpdate, settings } = useInputContext();
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(
Container$1,
{ withJoystick: !!settings.joystick },
settings.joystick &&
React5.createElement(Joystick, {
value: displayValue,
settings,
onUpdate
}),
React5.createElement(Vector, {
value: displayValue,
settings,
onUpdate
})
)
);
}
var _excluded$72 = ['joystick'];
var plugin = getVectorPlugin(['x', 'y']);
var normalize$22 = (_ref) => {
let { joystick = true } = _ref,
input = _objectWithoutProperties(_ref, _excluded$72);
const { value, settings } = plugin.normalize(input);
return {
value,
settings: _objectSpread2(_objectSpread2({}, settings), {}, { joystick })
};
};
var vector2d = createInternalPlugin(
_objectSpread2(
_objectSpread2({ component: Vector2dComponent }, plugin),
{},
{ normalize: normalize$22 }
)
);
var sanitize$12 = (v4) => {
if (v4 === void 0) return void 0;
if (v4 instanceof File) {
try {
return URL.createObjectURL(v4);
} catch (e4) {
return void 0;
}
}
if (typeof v4 === 'string' && v4.indexOf('blob:') === 0) return v4;
throw Error(`Invalid image format [undefined | blob |\xA0File].`);
};
var schema$12 = (_o, s4) => typeof s4 === 'object' && 'image' in s4;
var normalize$12 = ({ image: image2 }) => {
return { value: image2 };
};
var props$12 = Object.freeze({
__proto__: null,
sanitize: sanitize$12,
schema: schema$12,
normalize: normalize$12
});
var ImageContainer = styled('div', {
position: 'relative',
display: 'grid',
gridTemplateColumns: '$sizes$rowHeight auto 20px',
columnGap: '$colGap',
alignItems: 'center'
});
var DropZone = styled('div', {
$flexCenter: '',
overflow: 'hidden',
height: '$rowHeight',
background: '$elevation3',
textAlign: 'center',
color: 'inherit',
borderRadius: '$sm',
outline: 'none',
userSelect: 'none',
cursor: 'pointer',
$inputStyle: '',
$hover: '',
$focusWithin: '',
$active: '$accent1 $elevation1',
variants: {
isDragAccept: {
true: { $inputStyle: '$accent1', backgroundColor: '$elevation1' }
}
}
});
var ImagePreview = styled('div', {
boxSizing: 'border-box',
borderRadius: '$sm',
height: '$rowHeight',
width: '$rowHeight',
$inputStyle: '',
backgroundSize: 'cover',
backgroundPosition: 'center',
variants: {
hasImage: { true: { cursor: 'pointer', $hover: '', $active: '' } }
}
});
var ImageLargePreview = styled('div', {
$flexCenter: '',
width: '$imagePreviewWidth',
height: '$imagePreviewHeight',
borderRadius: '$sm',
boxShadow: '$level2',
pointerEvents: 'none',
$inputStyle: '',
backgroundSize: 'cover',
backgroundPosition: 'center'
});
var Instructions = styled('div', {
fontSize: '0.8em',
height: '100%',
padding: '$rowGap $md'
});
var Remove = styled('div', {
$flexCenter: '',
top: '0',
right: '0',
marginRight: '$sm',
height: '100%',
cursor: 'pointer',
variants: {
disabled: { true: { color: '$elevation3', cursor: 'default' } }
},
'&::after,&::before': {
content: '""',
position: 'absolute',
height: 2,
width: 10,
borderRadius: 1,
backgroundColor: 'currentColor'
},
'&::after': { transform: 'rotate(45deg)' },
'&::before': { transform: 'rotate(-45deg)' }
});
function ImageComponent() {
const { label, value, onUpdate, disabled } = useInputContext();
const { popinRef, wrapperRef, shown, show, hide: hide2 } = usePopin();
const onDrop = React5.useCallback(
(acceptedFiles) => {
if (acceptedFiles.length) onUpdate(acceptedFiles[0]);
},
[onUpdate]
);
const clear = React5.useCallback(
(e4) => {
e4.stopPropagation();
onUpdate(void 0);
},
[onUpdate]
);
const { getRootProps, getInputProps, isDragAccept } = useDropzone({
maxFiles: 1,
accept: 'image/*',
onDrop,
disabled
});
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(
ImageContainer,
null,
React5.createElement(ImagePreview, {
ref: popinRef,
hasImage: !!value,
onPointerDown: () => !!value && show(),
onPointerUp: hide2,
style: { backgroundImage: value ? `url(${value})` : 'none' }
}),
shown &&
!!value &&
React5.createElement(
Portal,
null,
React5.createElement(Overlay, {
onPointerUp: hide2,
style: { cursor: 'pointer' }
}),
React5.createElement(ImageLargePreview, {
ref: wrapperRef,
style: { backgroundImage: `url(${value})` }
})
),
React5.createElement(
DropZone,
getRootProps({ isDragAccept }),
React5.createElement('input', getInputProps()),
React5.createElement(
Instructions,
null,
isDragAccept ? 'drop image' : 'click or drop'
)
),
React5.createElement(Remove, { onClick: clear, disabled: !value })
)
);
}
var image = createInternalPlugin(
_objectSpread2({ component: ImageComponent }, props$12)
);
var number2 = v8n_esm_default().number();
var schema2 = (o4, s4) =>
v8n_esm_default().array().length(2).every.number().test(o4) &&
v8n_esm_default().schema({ min: number2, max: number2 }).test(s4);
var format2 = (v4) => ({ min: v4[0], max: v4[1] });
var sanitize2 = (value, { bounds: [MIN, MAX] }, prevValue) => {
const _value = Array.isArray(value) ? format2(value) : value;
const _newValue = { min: prevValue[0], max: prevValue[1] };
const { min: min3, max: max3 } = _objectSpread2(
_objectSpread2({}, _newValue),
_value
);
return [
clamp(Number(min3), MIN, Math.max(MIN, max3)),
clamp(Number(max3), Math.min(MAX, min3), MAX)
];
};
var normalize2 = ({ value, min: min3, max: max3 }) => {
const boundsSettings = { min: min3, max: max3 };
const _settings = normalizeKeyedNumberSettings(format2(value), {
min: boundsSettings,
max: boundsSettings
});
const bounds = [min3, max3];
const settings = _objectSpread2(
_objectSpread2({}, _settings),
{},
{ bounds }
);
const _value = sanitize2(format2(value), settings, value);
return { value: _value, settings };
};
var props2 = Object.freeze({
__proto__: null,
schema: schema2,
format: format2,
sanitize: sanitize2,
normalize: normalize2
});
var _excluded$62 = ['value', 'bounds', 'onDrag'];
var _excluded2$12 = ['bounds'];
var Container2 = styled('div', {
display: 'grid',
columnGap: '$colGap',
gridTemplateColumns:
'auto calc($sizes$numberInputMinWidth * 2 + $space$rowGap)'
});
function IntervalSlider(_ref) {
let {
value,
bounds: [min3, max3],
onDrag
} = _ref,
settings = _objectWithoutProperties(_ref, _excluded$62);
const ref = React5.useRef(null);
const minScrubberRef = React5.useRef(null);
const maxScrubberRef = React5.useRef(null);
const rangeWidth = React5.useRef(0);
const scrubberWidth = useTh('sizes', 'scrubberWidth');
const bind = useDrag2(
({ event, first, xy: [x3], movement: [mx], memo: _memo = {} }) => {
if (first) {
const { width, left } = ref.current.getBoundingClientRect();
rangeWidth.current = width - parseFloat(scrubberWidth);
const targetIsScrub =
(event === null || event === void 0
? void 0
: event.target) === minScrubberRef.current ||
(event === null || event === void 0
? void 0
: event.target) === maxScrubberRef.current;
_memo.pos = invertedRange((x3 - left) / width, min3, max3);
const delta =
Math.abs(_memo.pos - value.min) -
Math.abs(_memo.pos - value.max);
_memo.key =
delta < 0 || (delta === 0 && _memo.pos <= value.min)
? 'min'
: 'max';
if (targetIsScrub) _memo.pos = value[_memo.key];
}
const newValue =
_memo.pos +
invertedRange(mx / rangeWidth.current, 0, max3 - min3);
onDrag({
[_memo.key]: sanitizeStep(newValue, settings[_memo.key])
});
return _memo;
}
);
const minStyle = `calc(${range(value.min, min3, max3)} * (100% - ${scrubberWidth} - 8px) + 4px)`;
const maxStyle = `calc(${1 - range(value.max, min3, max3)} * (100% - ${scrubberWidth} - 8px) + 4px)`;
return React5.createElement(
RangeWrapper,
_extends2({ ref }, bind()),
React5.createElement(
Range,
null,
React5.createElement(Indicator, {
style: { left: minStyle, right: maxStyle }
})
),
React5.createElement(Scrubber, {
position: 'left',
ref: minScrubberRef,
style: { left: minStyle }
}),
React5.createElement(Scrubber, {
position: 'right',
ref: maxScrubberRef,
style: { right: maxStyle }
})
);
}
function IntervalComponent() {
const { label, displayValue, onUpdate, settings } = useInputContext();
const _settings = _objectWithoutProperties(settings, _excluded2$12);
return React5.createElement(
React5.Fragment,
null,
React5.createElement(
Row,
{ input: true },
React5.createElement(Label, null, label),
React5.createElement(
Container2,
null,
React5.createElement(
IntervalSlider,
_extends2({ value: displayValue }, settings, {
onDrag: onUpdate
})
),
React5.createElement(Vector, {
value: displayValue,
settings: _settings,
onUpdate,
innerLabelTrim: 0
})
)
)
);
}
var interval = createInternalPlugin(
_objectSpread2({ component: IntervalComponent }, props2)
);
var createEventEmitter = () => {
const listenerMapping = new Map();
return {
on: (topic, listener) => {
let listeners = listenerMapping.get(topic);
if (listeners === void 0) {
listeners = new Set();
listenerMapping.set(topic, listeners);
}
listeners.add(listener);
},
off: (topic, listener) => {
const listeners = listenerMapping.get(topic);
if (listeners === void 0) {
return;
}
listeners.delete(listener);
if (listeners.size === 0) {
listenerMapping.delete(topic);
}
},
emit: (topic, ...args) => {
const listeners = listenerMapping.get(topic);
if (listeners === void 0) {
return;
}
for (const listener of listeners) {
listener(...args);
}
}
};
};
var _excluded$52 = ['type', 'value'];
var _excluded23 = ['onChange', 'transient', 'onEditStart', 'onEditEnd'];
var Store = function Store2() {
const store = create(subscribeWithSelector(() => ({ data: {} })));
const eventEmitter = createEventEmitter();
this.storeId = getUid();
this.useStore = store;
const folders = {};
const orderedPaths = new Set();
this.getVisiblePaths = () => {
const data = this.getData();
const paths = Object.keys(data);
const hiddenFolders = [];
Object.entries(folders).forEach(([path, settings]) => {
if (
settings.render &&
paths.some((p4) => p4.indexOf(path) === 0) &&
!settings.render(this.get)
)
hiddenFolders.push(path + '.');
});
const visiblePaths = [];
orderedPaths.forEach((path) => {
if (
path in data &&
data[path].__refCount > 0 &&
hiddenFolders.every((p4) => path.indexOf(p4) === -1) &&
(!data[path].render || data[path].render(this.get))
) {
visiblePaths.push(path);
}
});
return visiblePaths;
};
this.setOrderedPaths = (newPaths) => {
newPaths.forEach((p4) => orderedPaths.add(p4));
};
this.orderPaths = (paths) => {
this.setOrderedPaths(paths);
return paths;
};
this.disposePaths = (paths) => {
store.setState((s4) => {
const data = s4.data;
paths.forEach((path) => {
if (path in data) {
const input = data[path];
input.__refCount--;
if (input.__refCount === 0 && input.type in SpecialInputs) {
delete data[path];
}
}
});
return { data };
});
};
this.dispose = () => {
store.setState(() => {
return { data: {} };
});
};
this.getFolderSettings = (path) => {
return folders[path] || {};
};
this.getData = () => {
return store.getState().data;
};
this.addData = (newData, override) => {
store.setState((s4) => {
const data = s4.data;
Object.entries(newData).forEach(([path, newInputData]) => {
let input = data[path];
if (!!input) {
const { type, value } = newInputData,
rest2 = _objectWithoutProperties(
newInputData,
_excluded$52
);
if (type !== input.type) {
warn(LevaErrors.INPUT_TYPE_OVERRIDE, type);
} else {
if (input.__refCount === 0 || override) {
Object.assign(input, rest2);
}
input.__refCount++;
}
} else {
data[path] = _objectSpread2(
_objectSpread2({}, newInputData),
{},
{ __refCount: 1 }
);
}
});
return { data };
});
};
this.setValueAtPath = (path, value, fromPanel) => {
store.setState((s4) => {
const data = s4.data;
updateInput(data[path], value, path, this, fromPanel);
return { data };
});
};
this.setSettingsAtPath = (path, settings) => {
store.setState((s4) => {
const data = s4.data;
data[path].settings = _objectSpread2(
_objectSpread2({}, data[path].settings),
settings
);
return { data };
});
};
this.disableInputAtPath = (path, flag) => {
store.setState((s4) => {
const data = s4.data;
data[path].disabled = flag;
return { data };
});
};
this.set = (values, fromPanel) => {
store.setState((s4) => {
const data = s4.data;
Object.entries(values).forEach(([path, value]) => {
try {
updateInput(data[path], value, void 0, void 0, fromPanel);
} catch (e4) {
{
console.warn(
`[This message will only show in development]: \`set\` for path ${path} has failed.`,
e4
);
}
}
});
return { data };
});
};
this.getInput = (path) => {
try {
return this.getData()[path];
} catch (e4) {
warn(LevaErrors.PATH_DOESNT_EXIST, path);
}
};
this.get = (path) => {
var _this$getInput;
return (_this$getInput = this.getInput(path)) === null ||
_this$getInput === void 0
? void 0
: _this$getInput.value;
};
this.emitOnEditStart = (path) => {
eventEmitter.emit(
`onEditStart:${path}`,
this.get(path),
path,
_objectSpread2(
_objectSpread2({}, this.getInput(path)),
{},
{ get: this.get }
)
);
};
this.emitOnEditEnd = (path) => {
eventEmitter.emit(
`onEditEnd:${path}`,
this.get(path),
path,
_objectSpread2(
_objectSpread2({}, this.getInput(path)),
{},
{ get: this.get }
)
);
};
this.subscribeToEditStart = (path, listener) => {
const _path = `onEditStart:${path}`;
eventEmitter.on(_path, listener);
return () => eventEmitter.off(_path, listener);
};
this.subscribeToEditEnd = (path, listener) => {
const _path = `onEditEnd:${path}`;
eventEmitter.on(_path, listener);
return () => eventEmitter.off(_path, listener);
};
const _getDataFromSchema = (schema3, rootPath, mappedPaths) => {
const data = {};
Object.entries(schema3).forEach(([key, rawInput]) => {
if (key === '') return warn(LevaErrors.EMPTY_KEY);
let newPath = join(rootPath, key);
if (rawInput.type === SpecialInputs.FOLDER) {
const newData = _getDataFromSchema(
rawInput.schema,
newPath,
mappedPaths
);
Object.assign(data, newData);
if (!(newPath in folders)) folders[newPath] = rawInput.settings;
} else if (key in mappedPaths) {
warn(
LevaErrors.DUPLICATE_KEYS,
key,
newPath,
mappedPaths[key].path
);
} else {
const normalizedInput = normalizeInput(
rawInput,
key,
newPath,
data
);
if (normalizedInput) {
const { type, options, input } = normalizedInput;
const { onChange, transient, onEditStart, onEditEnd } =
options,
_options = _objectWithoutProperties(
options,
_excluded23
);
data[newPath] = _objectSpread2(
_objectSpread2(
_objectSpread2({ type }, _options),
input
),
{},
{ fromPanel: true }
);
mappedPaths[key] = {
path: newPath,
onChange,
transient,
onEditStart,
onEditEnd
};
} else {
warn(LevaErrors.UNKNOWN_INPUT, newPath, rawInput);
}
}
});
return data;
};
this.getDataFromSchema = (schema3) => {
const mappedPaths = {};
const data = _getDataFromSchema(schema3, '', mappedPaths);
return [data, mappedPaths];
};
};
var levaStore = new Store();
function useCreateStore() {
return React5.useMemo(() => new Store(), []);
}
if (typeof window !== 'undefined') {
window.__STORE = levaStore;
}
var defaultSettings$2 = { collapsed: false };
function folder(schema3, settings) {
return {
type: SpecialInputs.FOLDER,
schema: schema3,
settings: _objectSpread2(
_objectSpread2({}, defaultSettings$2),
settings
)
};
}
var defaultSettings$1 = { disabled: false };
function button(onClick, settings) {
return {
type: SpecialInputs.BUTTON,
onClick,
settings: _objectSpread2(
_objectSpread2({}, defaultSettings$1),
settings
)
};
}
function buttonGroup(opts) {
return { type: SpecialInputs.BUTTON_GROUP, opts };
}
var defaultSettings = { graph: false, interval: 100 };
function monitor(objectOrFn, settings) {
return {
type: SpecialInputs.MONITOR,
objectOrFn,
settings: _objectSpread2(_objectSpread2({}, defaultSettings), settings)
};
}
var isInput = (v4) => '__levaInput' in v4;
var buildTree = (paths, filter) => {
const tree = {};
const _filter = filter ? filter.toLowerCase() : null;
paths.forEach((path) => {
const [valueKey, folderPath] = getKeyPath(path);
if (!_filter || valueKey.toLowerCase().indexOf(_filter) > -1) {
(0, import_merge_value.default)(tree, folderPath, {
[valueKey]: { __levaInput: true, path }
});
}
});
return tree;
};
var _excluded$42 = [
'type',
'label',
'path',
'valueKey',
'value',
'settings',
'setValue',
'disabled'
];
function ControlInput(_ref) {
let { type, label, path, valueKey, value, settings, setValue, disabled } =
_ref,
rest2 = _objectWithoutProperties(_ref, _excluded$42);
const { displayValue, onChange, onUpdate } = useInputSetters({
type,
value,
settings,
setValue
});
const Input = Plugins[type].component;
if (!Input) {
warn(LevaErrors.NO_COMPONENT_FOR_TYPE, type, path);
return null;
}
return React5.createElement(
InputContext.Provider,
{
value: _objectSpread2(
{
key: valueKey,
path,
id: '' + path,
label,
displayValue,
value,
onChange,
onUpdate,
settings,
setValue,
disabled
},
rest2
)
},
React5.createElement(
StyledInputWrapper$1,
{ disabled },
React5.createElement(Input, null)
)
);
}
var StyledButton = styled('button', {
display: 'block',
$reset: '',
fontWeight: '$button',
height: '$rowHeight',
borderStyle: 'none',
borderRadius: '$sm',
backgroundColor: '$elevation1',
color: '$highlight1',
'&:not(:disabled)': {
color: '$highlight3',
backgroundColor: '$accent2',
cursor: 'pointer',
$hover: '$accent3',
$active: '$accent3 $accent1',
$focus: ''
}
});
function Button({ onClick, settings, label }) {
const store = useStoreContext();
return React5.createElement(
Row,
null,
React5.createElement(
StyledButton,
{ disabled: settings.disabled, onClick: () => onClick(store.get) },
label
)
);
}
var StyledButtonGroup = styled('div', {
$flex: '',
justifyContent: 'flex-end',
gap: '$colGap'
});
var StyledButtonGroupButton = styled('button', {
$reset: '',
cursor: 'pointer',
borderRadius: '$xs',
'&:hover': { backgroundColor: '$elevation3' }
});
var getOpts = ({ label: _label, opts: _opts }) => {
let label =
typeof _label === 'string'
? _label.trim() === ''
? null
: _label
: _label;
let opts = _opts;
if (typeof _opts.opts === 'object') {
if (opts.label !== void 0) {
label = _opts.label;
}
opts = _opts.opts;
}
return { label, opts };
};
function ButtonGroup(props3) {
const { label, opts } = getOpts(props3);
const store = useStoreContext();
return React5.createElement(
Row,
{ input: !!label },
label && React5.createElement(Label, null, label),
React5.createElement(
StyledButtonGroup,
null,
Object.entries(opts).map(([label2, onClick]) =>
React5.createElement(
StyledButtonGroupButton,
{ key: label2, onClick: () => onClick(store.get) },
label2
)
)
)
);
}
var Canvas = styled('canvas', {
height: '$monitorHeight',
width: '100%',
display: 'block',
borderRadius: '$sm'
});
var POINTS = 100;
function push(arr, val) {
arr.push(val);
if (arr.length > POINTS) arr.shift();
}
var MonitorCanvas = React5.forwardRef(function ({ initialValue }, ref) {
const accentColor = useTh('colors', 'highlight3');
const backgroundColor = useTh('colors', 'elevation2');
const fillColor = useTh('colors', 'highlight1');
const [gradientTop, gradientBottom] = React5.useMemo(() => {
return [
w2(fillColor).alpha(0.4).toRgbString(),
w2(fillColor).alpha(0.1).toRgbString()
];
}, [fillColor]);
const points = React5.useRef([initialValue]);
const min3 = React5.useRef(initialValue);
const max3 = React5.useRef(initialValue);
const raf = React5.useRef();
const drawPlot = React5.useCallback(
(_canvas, _ctx) => {
if (!_canvas) return;
const { width, height } = _canvas;
const path = new Path2D();
const interval2 = width / POINTS;
const verticalPadding = height * 0.05;
for (let i4 = 0; i4 < points.current.length; i4++) {
const p4 = range(
points.current[i4],
min3.current,
max3.current
);
const x3 = interval2 * i4;
const y4 =
height -
p4 * (height - verticalPadding * 2) -
verticalPadding;
path.lineTo(x3, y4);
}
_ctx.clearRect(0, 0, width, height);
const gradientPath = new Path2D(path);
gradientPath.lineTo(
interval2 * (points.current.length + 1),
height
);
gradientPath.lineTo(0, height);
gradientPath.lineTo(0, 0);
const gradient = _ctx.createLinearGradient(0, 0, 0, height);
gradient.addColorStop(0, gradientTop);
gradient.addColorStop(1, gradientBottom);
_ctx.fillStyle = gradient;
_ctx.fill(gradientPath);
_ctx.strokeStyle = backgroundColor;
_ctx.lineJoin = 'round';
_ctx.lineWidth = 14;
_ctx.stroke(path);
_ctx.strokeStyle = accentColor;
_ctx.lineWidth = 2;
_ctx.stroke(path);
},
[accentColor, backgroundColor, gradientTop, gradientBottom]
);
const [canvas, ctx] = useCanvas2d(drawPlot);
React5.useImperativeHandle(
ref,
() => ({
frame: (val) => {
if (min3.current === void 0 || val < min3.current)
min3.current = val;
if (max3.current === void 0 || val > max3.current)
max3.current = val;
push(points.current, val);
raf.current = requestAnimationFrame(() =>
drawPlot(canvas.current, ctx.current)
);
}
}),
[canvas, ctx, drawPlot]
);
React5.useEffect(() => () => cancelAnimationFrame(raf.current), []);
return React5.createElement(Canvas, { ref: canvas });
});
var parse = (val) =>
Number.isFinite(val) ? val.toPrecision(2) : val.toString();
var MonitorLog = React5.forwardRef(function ({ initialValue }, ref) {
const [val, set] = React5.useState(parse(initialValue));
React5.useImperativeHandle(ref, () => ({ frame: (v4) => set(parse(v4)) }), []);
return React5.createElement('div', null, val);
});
function getValue(o4) {
return typeof o4 === 'function' ? o4() : o4.current;
}
function Monitor({ label, objectOrFn, settings }) {
const ref = React5.useRef();
const initialValue = React5.useRef(getValue(objectOrFn));
React5.useEffect(() => {
const timeout = window.setInterval(() => {
var _ref$current;
if (document.hidden) return;
(_ref$current = ref.current) === null || _ref$current === void 0
? void 0
: _ref$current.frame(getValue(objectOrFn));
}, settings.interval);
return () => window.clearInterval(timeout);
}, [objectOrFn, settings.interval]);
return React5.createElement(
Row,
{ input: true },
React5.createElement(Label, { align: 'top' }, label),
settings.graph
? React5.createElement(MonitorCanvas, {
ref,
initialValue: initialValue.current
})
: React5.createElement(MonitorLog, {
ref,
initialValue: initialValue.current
})
);
}
var _excluded$32 = ['type', 'label', 'key'];
var specialComponents = {
[SpecialInputs.BUTTON]: Button,
[SpecialInputs.BUTTON_GROUP]: ButtonGroup,
[SpecialInputs.MONITOR]: Monitor
};
var Control = React5.memo(({ path }) => {
const [
input,
{ set, setSettings, disable, storeId, emitOnEditStart, emitOnEditEnd }
] = useInput(path);
if (!input) return null;
const { type, label, key } = input,
inputProps = _objectWithoutProperties(input, _excluded$32);
if (type in SpecialInputs) {
const SpecialInputForType = specialComponents[type];
return React5.createElement(
SpecialInputForType,
_extends2({ label, path }, inputProps)
);
}
if (!(type in Plugins)) {
log(LevaErrors.UNSUPPORTED_INPUT, type, path);
return null;
}
return React5.createElement(
ControlInput,
_extends2(
{
key: storeId + path,
type,
label,
storeId,
path,
valueKey: key,
setValue: set,
setSettings,
disable,
emitOnEditStart,
emitOnEditEnd
},
inputProps
)
);
});
function FolderTitle({ toggle, toggled, name }) {
return React5.createElement(
StyledTitle,
{ onClick: () => toggle() },
React5.createElement(Chevron, { toggled }),
React5.createElement('div', null, name)
);
}
var Folder = ({ name, path, tree }) => {
const store = useStoreContext();
const newPath = join(path, name);
const { collapsed, color: color2 } = store.getFolderSettings(newPath);
const [toggled, setToggle] = React5.useState(!collapsed);
const folderRef = React5.useRef(null);
const widgetColor = useTh('colors', 'folderWidgetColor');
const textColor = useTh('colors', 'folderTextColor');
React5.useLayoutEffect(() => {
folderRef.current.style.setProperty(
'--leva-colors-folderWidgetColor',
color2 || widgetColor
);
folderRef.current.style.setProperty(
'--leva-colors-folderTextColor',
color2 || textColor
);
}, [color2, widgetColor, textColor]);
return React5.createElement(
StyledFolder,
{ ref: folderRef },
React5.createElement(FolderTitle, {
name,
toggled,
toggle: () => setToggle((t4) => !t4)
}),
React5.createElement(TreeWrapper, { parent: newPath, tree, toggled })
);
};
var TreeWrapper = React5.memo(
({
isRoot: _isRoot = false,
fill: _fill = false,
flat: _flat = false,
parent,
tree,
toggled
}) => {
const { wrapperRef, contentRef } = useToggle(toggled);
const store = useStoreContext();
const getOrder = ([key, o4]) => {
var _store$getInput;
const order = isInput(o4)
? (_store$getInput = store.getInput(o4.path)) === null ||
_store$getInput === void 0
? void 0
: _store$getInput.order
: store.getFolderSettings(join(parent, key)).order;
return order || 0;
};
const entries = Object.entries(tree).sort(
(a4, b4) => getOrder(a4) - getOrder(b4)
);
return React5.createElement(
StyledWrapper,
{ ref: wrapperRef, isRoot: _isRoot, fill: _fill, flat: _flat },
React5.createElement(
StyledContent,
{ ref: contentRef, isRoot: _isRoot, toggled },
entries.map(([key, value]) =>
isInput(value)
? React5.createElement(Control, {
key: value.path,
valueKey: value.valueKey,
path: value.path
})
: React5.createElement(Folder, {
key,
name: key,
path: parent,
tree: value
})
)
)
);
}
);
var StyledRoot = styled('div', {
position: 'relative',
fontFamily: '$mono',
fontSize: '$root',
color: '$rootText',
backgroundColor: '$elevation1',
variants: {
fill: {
false: {
position: 'fixed',
top: '10px',
right: '10px',
zIndex: 1e3,
width: '$rootWidth'
},
true: { position: 'relative', width: '100%' }
},
flat: { false: { borderRadius: '$lg', boxShadow: '$level1' } },
oneLineLabels: {
true: {
[`${StyledInputRow}`]: {
gridTemplateColumns: 'auto',
gridAutoColumns: 'minmax(max-content, 1fr)',
gridAutoRows: 'minmax($sizes$rowHeight), auto)',
rowGap: 0,
columnGap: 0,
marginTop: '$rowGap'
}
}
},
hideTitleBar: {
true: { $$titleBarHeight: '0px' },
false: { $$titleBarHeight: '$sizes$titleBarHeight' }
}
},
'&,*,*:after,*:before': { boxSizing: 'border-box' },
'*::selection': { backgroundColor: '$accent2' }
});
var iconWidth = 40;
var Icon = styled('i', {
$flexCenter: '',
width: iconWidth,
userSelect: 'none',
cursor: 'pointer',
'> svg': {
fill: '$highlight1',
transition: 'transform 350ms ease, fill 250ms ease'
},
'&:hover > svg': { fill: '$highlight3' },
variants: { active: { true: { '> svg': { fill: '$highlight2' } } } }
});
var StyledTitleWithFilter = styled('div', {
display: 'flex',
alignItems: 'stretch',
justifyContent: 'space-between',
height: '$titleBarHeight',
variants: { mode: { drag: { cursor: 'grab' } } }
});
var FilterWrapper = styled('div', {
$flex: '',
position: 'relative',
width: '100%',
overflow: 'hidden',
transition: 'height 250ms ease',
color: '$highlight3',
paddingLeft: '$md',
[`> ${Icon}`]: { height: 30 },
variants: { toggled: { true: { height: 30 }, false: { height: 0 } } }
});
var StyledFilterInput = styled('input', {
$reset: '',
flex: 1,
position: 'relative',
height: 30,
width: '100%',
backgroundColor: 'transparent',
fontSize: '10px',
borderRadius: '$root',
'&:focus': {},
'&::placeholder': { color: '$highlight2' }
});
var TitleContainer = styled('div', {
touchAction: 'none',
$flexCenter: '',
flex: 1,
'> svg': { fill: '$highlight1' },
color: '$highlight1',
variants: {
drag: {
true: {
$draggable: '',
'> svg': { transition: 'fill 250ms ease' },
'&:hover': { color: '$highlight3' },
'&:hover > svg': { fill: '$highlight3' }
}
},
filterEnabled: { false: { paddingRight: iconWidth } }
}
});
var FilterInput = React5.forwardRef(({ setFilter, toggle }, ref) => {
const [value, set] = React5.useState('');
const debouncedOnChange = React5.useMemo(
() => debounce(setFilter, 250),
[setFilter]
);
const clear = () => {
setFilter('');
set('');
};
const _onChange = (e4) => {
const v4 = e4.currentTarget.value;
toggle(true);
set(v4);
};
React5.useEffect(() => {
debouncedOnChange(value);
}, [value, debouncedOnChange]);
return React5.createElement(
React5.Fragment,
null,
React5.createElement(StyledFilterInput, {
ref,
value,
placeholder: '[Open filter with CMD+SHIFT+L]',
onPointerDown: (e4) => e4.stopPropagation(),
onChange: _onChange
}),
React5.createElement(
Icon,
{
onClick: () => clear(),
style: { visibility: value ? 'visible' : 'hidden' }
},
React5.createElement(
'svg',
{
xmlns: 'http://www.w3.org/2000/svg',
height: '14',
width: '14',
viewBox: '0 0 20 20',
fill: 'currentColor'
},
React5.createElement('path', {
fillRule: 'evenodd',
d: 'M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z',
clipRule: 'evenodd'
})
)
)
);
});
function TitleWithFilter({
setFilter,
onDrag,
onDragStart,
onDragEnd,
toggle,
toggled,
title,
drag,
filterEnabled,
from
}) {
const [filterShown, setShowFilter] = React5.useState(false);
const inputRef = React5.useRef(null);
React5.useEffect(() => {
var _inputRef$current, _inputRef$current2;
if (filterShown)
(_inputRef$current = inputRef.current) === null ||
_inputRef$current === void 0
? void 0
: _inputRef$current.focus();
else
(_inputRef$current2 = inputRef.current) === null ||
_inputRef$current2 === void 0
? void 0
: _inputRef$current2.blur();
}, [filterShown]);
const bind = useDrag2(
({ offset: [x3, y4], first, last }) => {
onDrag({ x: x3, y: y4 });
if (first) {
onDragStart({ x: x3, y: y4 });
}
if (last) {
onDragEnd({ x: x3, y: y4 });
}
},
{
filterTaps: true,
from: ({ offset: [x3, y4] }) => [
(from === null || from === void 0 ? void 0 : from.x) || x3,
(from === null || from === void 0 ? void 0 : from.y) || y4
]
}
);
React5.useEffect(() => {
const handleShortcut = (event) => {
if (event.key === 'L' && event.shiftKey && event.metaKey) {
setShowFilter((f4) => !f4);
}
};
window.addEventListener('keydown', handleShortcut);
return () => window.removeEventListener('keydown', handleShortcut);
}, []);
return React5.createElement(
React5.Fragment,
null,
React5.createElement(
StyledTitleWithFilter,
{ mode: drag ? 'drag' : void 0 },
React5.createElement(
Icon,
{ active: !toggled, onClick: () => toggle() },
React5.createElement(Chevron, { toggled, width: 12, height: 8 })
),
React5.createElement(
TitleContainer,
_extends2({}, drag ? bind() : {}, { drag, filterEnabled }),
title === void 0 && drag
? React5.createElement(
'svg',
{
width: '20',
height: '10',
viewBox: '0 0 28 14',
xmlns: 'http://www.w3.org/2000/svg'
},
React5.createElement('circle', {
cx: '2',
cy: '2',
r: '2'
}),
React5.createElement('circle', {
cx: '14',
cy: '2',
r: '2'
}),
React5.createElement('circle', {
cx: '26',
cy: '2',
r: '2'
}),
React5.createElement('circle', {
cx: '2',
cy: '12',
r: '2'
}),
React5.createElement('circle', {
cx: '14',
cy: '12',
r: '2'
}),
React5.createElement('circle', {
cx: '26',
cy: '12',
r: '2'
})
)
: title
),
filterEnabled &&
React5.createElement(
Icon,
{
active: filterShown,
onClick: () => setShowFilter((f4) => !f4)
},
React5.createElement(
'svg',
{
xmlns: 'http://www.w3.org/2000/svg',
height: '20',
viewBox: '0 0 20 20'
},
React5.createElement('path', {
d: 'M9 9a2 2 0 114 0 2 2 0 01-4 0z'
}),
React5.createElement('path', {
fillRule: 'evenodd',
d: 'M10 18a8 8 0 100-16 8 8 0 000 16zm1-13a4 4 0 00-3.446 6.032l-2.261 2.26a1 1 0 101.414 1.415l2.261-2.261A4 4 0 1011 5z',
clipRule: 'evenodd'
})
)
)
),
React5.createElement(
FilterWrapper,
{ toggled: filterShown },
React5.createElement(FilterInput, {
ref: inputRef,
setFilter,
toggle
})
)
);
}
var _excluded$22 = ['store', 'hidden', 'theme', 'collapsed'];
function LevaRoot(_ref) {
let { store, hidden = false, theme, collapsed = false } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$22);
const themeContext = useDeepMemo(() => mergeTheme(theme), [theme]);
const [toggled, setToggle] = React5.useState(!collapsed);
const computedToggled =
typeof collapsed === 'object' ? !collapsed.collapsed : toggled;
const computedSetToggle = React5.useMemo(() => {
if (typeof collapsed === 'object') {
return (value) => {
if (typeof value === 'function') {
collapsed.onChange(!value(!collapsed.collapsed));
} else {
collapsed.onChange(!value);
}
};
}
return setToggle;
}, [collapsed]);
if (!store || hidden) return null;
return React5.createElement(
ThemeContext.Provider,
{ value: themeContext },
React5.createElement(
LevaCore,
_extends2({ store }, props3, {
toggled: computedToggled,
setToggle: computedSetToggle,
rootClass: themeContext.className
})
)
);
}
var LevaCore = React5.memo(
({
store,
rootClass,
fill: _fill = false,
flat: _flat = false,
neverHide: _neverHide = false,
oneLineLabels: _oneLineLabels = false,
titleBar: _titleBar = {
title: void 0,
drag: true,
filter: true,
position: void 0,
onDrag: void 0,
onDragStart: void 0,
onDragEnd: void 0
},
hideCopyButton: _hideCopyButton = false,
toggled,
setToggle
}) => {
var _titleBar$drag, _titleBar$filter;
const paths = useVisiblePaths(store);
const [filter, setFilter] = React5.useState('');
const tree = React5.useMemo(() => buildTree(paths, filter), [paths, filter]);
const [rootRef, set] = useTransform();
const shouldShow = _neverHide || paths.length > 0;
const title =
typeof _titleBar === 'object' ? _titleBar.title || void 0 : void 0;
const drag =
typeof _titleBar === 'object'
? (_titleBar$drag = _titleBar.drag) !== null &&
_titleBar$drag !== void 0
? _titleBar$drag
: true
: true;
const filterEnabled =
typeof _titleBar === 'object'
? (_titleBar$filter = _titleBar.filter) !== null &&
_titleBar$filter !== void 0
? _titleBar$filter
: true
: true;
const position =
typeof _titleBar === 'object'
? _titleBar.position || void 0
: void 0;
const onDrag =
typeof _titleBar === 'object' ? _titleBar.onDrag || void 0 : void 0;
const onDragStart =
typeof _titleBar === 'object'
? _titleBar.onDragStart || void 0
: void 0;
const onDragEnd =
typeof _titleBar === 'object'
? _titleBar.onDragEnd || void 0
: void 0;
React5.useEffect(() => {
set({
x:
position === null || position === void 0
? void 0
: position.x,
y:
position === null || position === void 0
? void 0
: position.y
});
}, [position, set]);
globalStyles();
return React5.createElement(
PanelSettingsContext.Provider,
{ value: { hideCopyButton: _hideCopyButton } },
React5.createElement(
StyledRoot,
{
ref: rootRef,
className: rootClass,
fill: _fill,
flat: _flat,
oneLineLabels: _oneLineLabels,
hideTitleBar: !_titleBar,
style: { display: shouldShow ? 'block' : 'none' }
},
_titleBar &&
React5.createElement(TitleWithFilter, {
onDrag: (point) => {
set(point);
onDrag === null || onDrag === void 0
? void 0
: onDrag(point);
},
onDragStart: (point) =>
onDragStart === null || onDragStart === void 0
? void 0
: onDragStart(point),
onDragEnd: (point) =>
onDragEnd === null || onDragEnd === void 0
? void 0
: onDragEnd(point),
setFilter,
toggle: (flag) =>
setToggle((t4) =>
flag !== null && flag !== void 0 ? flag : !t4
),
toggled,
title,
drag,
filterEnabled,
from: position
}),
shouldShow &&
React5.createElement(
StoreContext.Provider,
{ value: store },
React5.createElement(TreeWrapper, {
isRoot: true,
fill: _fill,
flat: _flat,
tree,
toggled
})
)
)
);
}
);
var _excluded$12 = ['isRoot'];
var rootInitialized = false;
var rootEl = null;
function Leva(_ref) {
let { isRoot = false } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded$12);
React5.useEffect(() => {
rootInitialized = true;
if (!isRoot && rootEl) {
rootEl.remove();
rootEl = null;
}
return () => {
if (!isRoot) rootInitialized = false;
};
}, [isRoot]);
return React5.createElement(
LevaRoot,
_extends2({ store: levaStore }, props3)
);
}
function useRenderRoot(isGlobalPanel) {
React5.useEffect(() => {
if (isGlobalPanel && !rootInitialized) {
if (!rootEl) {
rootEl =
document.getElementById('leva__root') ||
Object.assign(document.createElement('div'), {
id: 'leva__root'
});
if (document.body) {
document.body.appendChild(rootEl);
client.createRoot(rootEl).render(
React5.createElement(Leva, { isRoot: true })
);
}
}
rootInitialized = true;
}
}, [isGlobalPanel]);
}
var _excluded5 = ['store'];
function LevaPanel(_ref) {
let { store } = _ref,
props3 = _objectWithoutProperties(_ref, _excluded5);
const parentStore = useStoreContext();
const _store = store === void 0 ? parentStore : store;
return React5.createElement(LevaRoot, _extends2({ store: _store }, props3));
}
function parseArgs(
schemaOrFolderName,
settingsOrDepsOrSchema,
depsOrSettingsOrFolderSettings,
depsOrSettings,
depsOrUndefined
) {
let schema3;
let folderName = void 0;
let folderSettings;
let hookSettings;
let deps;
if (typeof schemaOrFolderName === 'string') {
folderName = schemaOrFolderName;
schema3 = settingsOrDepsOrSchema;
if (Array.isArray(depsOrSettingsOrFolderSettings)) {
deps = depsOrSettingsOrFolderSettings;
} else {
if (depsOrSettingsOrFolderSettings) {
if ('store' in depsOrSettingsOrFolderSettings) {
hookSettings = depsOrSettingsOrFolderSettings;
deps = depsOrSettings;
} else {
folderSettings = depsOrSettingsOrFolderSettings;
if (Array.isArray(depsOrSettings)) {
deps = depsOrSettings;
} else {
hookSettings = depsOrSettings;
deps = depsOrUndefined;
}
}
}
}
} else {
schema3 = schemaOrFolderName;
if (Array.isArray(settingsOrDepsOrSchema)) {
deps = settingsOrDepsOrSchema;
} else {
hookSettings = settingsOrDepsOrSchema;
deps = depsOrSettingsOrFolderSettings;
}
}
return {
schema: schema3,
folderName,
folderSettings,
hookSettings,
deps: deps || []
};
}
function useControls(
schemaOrFolderName,
settingsOrDepsOrSchema,
depsOrSettingsOrFolderSettings,
depsOrSettings,
depsOrUndefined
) {
const {
folderName,
schema: schema3,
folderSettings,
hookSettings,
deps
} = parseArgs(
schemaOrFolderName,
settingsOrDepsOrSchema,
depsOrSettingsOrFolderSettings,
depsOrSettings,
depsOrUndefined
);
const schemaIsFunction = typeof schema3 === 'function';
const depsChanged = React5.useRef(false);
const firstRender = React5.useRef(true);
const _schema = useDeepMemo(() => {
depsChanged.current = true;
const s4 = typeof schema3 === 'function' ? schema3() : schema3;
return folderName ? { [folderName]: folder(s4, folderSettings) } : s4;
}, deps);
const isGlobalPanel = !(
hookSettings !== null &&
hookSettings !== void 0 &&
hookSettings.store
);
useRenderRoot(isGlobalPanel);
const [store] = React5.useState(
() =>
(hookSettings === null || hookSettings === void 0
? void 0
: hookSettings.store) || levaStore
);
const [initialData, mappedPaths] = React5.useMemo(
() => store.getDataFromSchema(_schema),
[store, _schema]
);
const [
allPaths,
renderPaths,
onChangePaths,
onEditStartPaths,
onEditEndPaths
] = React5.useMemo(() => {
const allPaths2 = [];
const renderPaths2 = [];
const onChangePaths2 = {};
const onEditStartPaths2 = {};
const onEditEndPaths2 = {};
Object.values(mappedPaths).forEach(
({ path, onChange, onEditStart, onEditEnd, transient }) => {
allPaths2.push(path);
if (!!onChange) {
onChangePaths2[path] = onChange;
if (!transient) {
renderPaths2.push(path);
}
} else {
renderPaths2.push(path);
}
if (onEditStart) {
onEditStartPaths2[path] = onEditStart;
}
if (onEditEnd) {
onEditEndPaths2[path] = onEditEnd;
}
}
);
return [
allPaths2,
renderPaths2,
onChangePaths2,
onEditStartPaths2,
onEditEndPaths2
];
}, [mappedPaths]);
const paths = React5.useMemo(() => store.orderPaths(allPaths), [allPaths, store]);
const values = useValuesForPath(store, renderPaths, initialData);
const set = React5.useCallback(
(values2) => {
const _values = Object.entries(values2).reduce(
(acc, [p4, v4]) =>
Object.assign(acc, { [mappedPaths[p4].path]: v4 }),
{}
);
store.set(_values, false);
},
[store, mappedPaths]
);
const get = React5.useCallback(
(path) => store.get(mappedPaths[path].path),
[store, mappedPaths]
);
React5.useEffect(() => {
const shouldOverrideSettings =
!firstRender.current && depsChanged.current;
store.addData(initialData, shouldOverrideSettings);
firstRender.current = false;
depsChanged.current = false;
return () => store.disposePaths(paths);
}, [store, paths, initialData]);
React5.useEffect(() => {
const unsubscriptions = [];
Object.entries(onChangePaths).forEach(([path, onChange]) => {
onChange(
store.get(path),
path,
_objectSpread2(
{ initial: true, get: store.get },
store.getInput(path)
)
);
const unsub = store.useStore.subscribe(
(s4) => {
const input = s4.data[path];
const value = input.disabled ? void 0 : input.value;
return [value, input];
},
([value, input]) =>
onChange(
value,
path,
_objectSpread2(
{ initial: false, get: store.get },
input
)
),
{ equalityFn: shallow }
);
unsubscriptions.push(unsub);
});
return () => unsubscriptions.forEach((unsub) => unsub());
}, [store, onChangePaths]);
React5.useEffect(() => {
const unsubscriptions = [];
Object.entries(onEditStartPaths).forEach(([path, onEditStart]) =>
unsubscriptions.push(store.subscribeToEditStart(path, onEditStart))
);
Object.entries(onEditEndPaths).forEach(([path, onEditEnd]) =>
unsubscriptions.push(store.subscribeToEditEnd(path, onEditEnd))
);
return () => unsubscriptions.forEach((unsub) => unsub());
}, [onEditStartPaths, onEditEndPaths, store]);
if (schemaIsFunction) return [values, set, get];
return values;
}
register(exports.LevaInputs.SELECT, select);
register(exports.LevaInputs.IMAGE, image);
register(exports.LevaInputs.NUMBER, number);
register(exports.LevaInputs.COLOR, color);
register(exports.LevaInputs.STRING, string);
register(exports.LevaInputs.BOOLEAN, boolean);
register(exports.LevaInputs.INTERVAL, interval);
register(exports.LevaInputs.VECTOR3D, vector3d);
register(exports.LevaInputs.VECTOR2D, vector2d);
exports.Leva = Leva;
exports.LevaPanel = LevaPanel;
exports.LevaStoreProvider = LevaStoreProvider;
exports.button = button;
exports.buttonGroup = buttonGroup;
exports.folder = folder;
exports.levaStore = levaStore;
exports.monitor = monitor;
exports.useControls = useControls;
exports.useCreateStore = useCreateStore;
exports.useStoreContext = useStoreContext;
}));