@sanity/hierarchical-document-list 2.1.3 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +30 -28
- package/dist/index.d.ts +170 -195
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +835 -6031
- package/dist/index.js.map +1 -1
- package/package.json +38 -77
- package/dist/index.d.mts +0 -240
- package/dist/index.mjs +0 -6433
- package/dist/index.mjs.map +0 -1
- package/sanity.json +0 -8
- package/src/TreeDeskStructure.tsx +0 -80
- package/src/TreeInputComponent.tsx +0 -41
- package/src/components/DeskWarning.tsx +0 -40
- package/src/components/DocumentInNode.tsx +0 -133
- package/src/components/DocumentPreviewStatus.tsx +0 -70
- package/src/components/NodeActions.tsx +0 -85
- package/src/components/NodeContentRenderer.tsx +0 -141
- package/src/components/PlaceholderDropzone.tsx +0 -45
- package/src/components/TreeEditor.tsx +0 -184
- package/src/components/TreeEditorErrorBoundary.tsx +0 -14
- package/src/components/TreeNodeRenderer.tsx +0 -37
- package/src/components/TreeNodeRendererScaffold.tsx +0 -193
- package/src/createDeskHierarchy.tsx +0 -110
- package/src/createHierarchicalSchemas.tsx +0 -151
- package/src/hooks/useAllItems.ts +0 -119
- package/src/hooks/useLocalTree.ts +0 -40
- package/src/hooks/useTreeOperations.ts +0 -25
- package/src/hooks/useTreeOperationsProvider.ts +0 -86
- package/src/index.ts +0 -25
- package/src/schemas/hierarchy.tree.ts +0 -19
- package/src/types.ts +0 -148
- package/src/utils/flatDataToTree.ts +0 -20
- package/src/utils/getAdjescentNodes.ts +0 -30
- package/src/utils/getCommonTreeProps.tsx +0 -28
- package/src/utils/getTreeHeight.ts +0 -8
- package/src/utils/gradientPatchAdapter.ts +0 -43
- package/src/utils/idUtils.ts +0 -7
- package/src/utils/injectNodeTypeInPatches.ts +0 -60
- package/src/utils/moveItemInArray.ts +0 -26
- package/src/utils/throwError.ts +0 -9
- package/src/utils/treeData.tsx +0 -119
- package/src/utils/treePatches.ts +0 -171
- package/v2-incompatible.js +0 -11
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/DeskWarning.tsx","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/lodash.throttle/index.js","../node_modules/@nosferatu500/react-sortable-tree/node_modules/@nosferatu500/react-dnd-scrollzone/esm/index.js","../node_modules/lodash.isequal/index.js","../node_modules/react-virtuoso/dist/index.mjs","../node_modules/@nosferatu500/react-sortable-tree/esm/index.js","../src/utils/idUtils.ts","../src/hooks/useAllItems.ts","../src/hooks/useTreeOperations.ts","../src/components/DocumentPreviewStatus.tsx","../src/components/DocumentInNode.tsx","../src/components/NodeActions.tsx","../src/utils/flatDataToTree.ts","../src/utils/injectNodeTypeInPatches.ts","../src/utils/treeData.tsx","../src/hooks/useLocalTree.ts","../src/utils/getAdjescentNodes.ts","../src/utils/moveItemInArray.ts","../src/utils/treePatches.ts","../src/hooks/useTreeOperationsProvider.ts","../node_modules/@sanity/color/dist/index.js","../src/components/NodeContentRenderer.tsx","../src/components/PlaceholderDropzone.tsx","../src/components/TreeNodeRendererScaffold.tsx","../src/components/TreeNodeRenderer.tsx","../src/utils/getCommonTreeProps.tsx","../src/utils/getTreeHeight.ts","../src/components/TreeEditorErrorBoundary.tsx","../src/components/TreeEditor.tsx","../src/utils/gradientPatchAdapter.ts","../src/TreeDeskStructure.tsx","../src/utils/throwError.ts","../src/createDeskHierarchy.tsx","../src/TreeInputComponent.tsx","../src/createHierarchicalSchemas.tsx","../src/schemas/hierarchy.tree.ts","../src/index.ts"],"sourcesContent":["import {Box, Card, Container, Heading, Stack, Text} from '@sanity/ui'\nimport * as React from 'react'\n\n// React component that wraps text between two delimiters in a <pre> tag\n\nconst WrapCodeBlocks: React.FC<{text: string}> = ({text}) => {\n return (\n <>\n {text.split('`').map((part, i) => (\n <React.Fragment key={i}>{i % 2 === 0 ? part : <code>{part}</code>}</React.Fragment>\n ))}\n </>\n )\n}\n\nconst DeskWarning: React.FC<\n React.PropsWithChildren<{\n title: string\n subtitle?: string\n }>\n> = (props) => {\n return (\n <Container padding={5} style={{maxWidth: '25rem'}} sizing={'content'}>\n <Card padding={4} border radius={2} width={0} tone=\"caution\">\n <Stack space={3}>\n <Heading size={1}>{props.title}</Heading>\n {props.subtitle &&\n props.subtitle.split('\\\\n').map((line: string) => (\n <Text size={1}>\n <WrapCodeBlocks text={line} />\n </Text>\n ))}\n {props.children && <Box marginTop={2}>{props.children}</Box>}\n </Stack>\n </Card>\n </Container>\n )\n}\n\nexport default DeskWarning\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","import React, { createRef, useEffect } from 'react';\nimport hoist from 'hoist-non-react-statics';\nimport throttle from 'lodash.throttle';\nimport { DndContext } from 'react-dnd';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst noop = () => {\n};\nconst intBetween = (min, max, val) => Math.floor(Math.min(max, Math.max(min, val)));\nconst getCoords = (evt) => {\n if (evt.type === \"touchmove\") {\n return {\n x: evt.changedTouches[0].clientX,\n y: evt.changedTouches[0].clientY\n };\n }\n return { x: evt.clientX, y: evt.clientY };\n};\nconst DEFAULT_BUFFER = 150;\nconst createHorizontalStrength = (_buffer) => ({ x, w, y, h }, point) => {\n const buffer = Math.min(w / 2, _buffer);\n const inRange = point.x >= x && point.x <= x + w;\n const inBox = inRange && point.y >= y && point.y <= y + h;\n if (inBox) {\n if (point.x < x + buffer) {\n return (point.x - x - buffer) / buffer;\n }\n if (point.x > x + w - buffer) {\n return -(x + w - point.x - buffer) / buffer;\n }\n }\n return 0;\n};\nconst createVerticalStrength = (_buffer) => ({ y, h, x, w }, point) => {\n const buffer = Math.min(h / 2, _buffer);\n const inRange = point.y >= y && point.y <= y + h;\n const inBox = inRange && point.x >= x && point.x <= x + w;\n if (inBox) {\n if (point.y < y + buffer) {\n return (point.y - y - buffer) / buffer;\n }\n if (point.y > y + h - buffer) {\n return -(y + h - point.y - buffer) / buffer;\n }\n }\n return 0;\n};\nconst defaultHorizontalStrength = createHorizontalStrength(DEFAULT_BUFFER);\nconst defaultVerticalStrength = createVerticalStrength(DEFAULT_BUFFER);\nconst defaultProps = {\n onScrollChange: noop,\n verticalStrength: defaultVerticalStrength,\n horizontalStrength: defaultHorizontalStrength,\n strengthMultiplier: 30\n};\nconst createScrollingComponent = (WrappedComponent) => {\n const ScrollingComponent = (props) => {\n props = __spreadValues(__spreadValues({}, defaultProps), props);\n let container;\n const wrappedInstance = createRef();\n let frame;\n let scaleX = 0;\n let scaleY = 0;\n let attached = false;\n let dragging = false;\n const updateScrolling = throttle((evt) => {\n const {\n left: x,\n top: y,\n width: w,\n height: h\n } = container.getBoundingClientRect();\n const box = {\n x,\n y,\n w,\n h\n };\n const coords = getCoords(evt);\n scaleX = props.horizontalStrength(box, coords);\n scaleY = props.verticalStrength(box, coords);\n if (!frame && (scaleX || scaleY)) {\n startScrolling();\n }\n }, 100, { trailing: false });\n useEffect(() => {\n container = wrappedInstance.current;\n if (container && typeof container.addEventListener === \"function\") {\n container.addEventListener(\"dragover\", handleEvent);\n }\n window.document.body.addEventListener(\"touchmove\", handleEvent);\n const clearMonitorSubscription = props.dragDropManager.getMonitor().subscribeToStateChange(() => handleMonitorChange());\n return () => {\n if (container && typeof container.removeEventListener === \"function\") {\n container.removeEventListener(\"dragover\", handleEvent);\n }\n window.document.body.removeEventListener(\"touchmove\", handleEvent);\n clearMonitorSubscription();\n stopScrolling();\n };\n }, []);\n const handleEvent = (evt) => {\n if (dragging && !attached) {\n attach();\n updateScrolling(evt);\n }\n };\n const handleMonitorChange = () => {\n const isDragging = props.dragDropManager.getMonitor().isDragging();\n if (!dragging && isDragging) {\n dragging = true;\n } else if (dragging && !isDragging) {\n dragging = false;\n stopScrolling();\n }\n };\n const attach = () => {\n attached = true;\n window.document.body.addEventListener(\"dragover\", updateScrolling);\n window.document.body.addEventListener(\"touchmove\", updateScrolling);\n };\n const detach = () => {\n attached = false;\n window.document.body.removeEventListener(\"dragover\", updateScrolling);\n window.document.body.removeEventListener(\"touchmove\", updateScrolling);\n };\n const startScrolling = () => {\n let i = 0;\n const tick = () => {\n if (props.strengthMultiplier === 0 || scaleX + scaleY === 0) {\n stopScrolling();\n return;\n }\n i += 1;\n if (i % 2) {\n const {\n scrollLeft,\n scrollTop,\n scrollWidth,\n scrollHeight,\n clientWidth,\n clientHeight\n } = container;\n const newLeft = scaleX ? container.scrollLeft = intBetween(0, scrollWidth - clientWidth, scrollLeft + scaleX * props.strengthMultiplier) : scrollLeft;\n const newTop = scaleY ? container.scrollTop = intBetween(0, scrollHeight - clientHeight, scrollTop + scaleY * props.strengthMultiplier) : scrollTop;\n props.onScrollChange(newLeft, newTop);\n }\n frame = requestAnimationFrame(tick);\n };\n tick();\n };\n const stopScrolling = () => {\n detach();\n scaleX = 0;\n scaleY = 0;\n if (frame) {\n cancelAnimationFrame(frame);\n frame = void 0;\n }\n };\n const _a = props, other = __objRest(_a, [\n \"strengthMultiplier\",\n \"verticalStrength\",\n \"horizontalStrength\",\n \"onScrollChange\"\n ]);\n return /* @__PURE__ */ React.createElement(WrappedComponent, __spreadValues({\n ref: wrappedInstance\n }, other));\n };\n return hoist(ScrollingComponent, WrappedComponent);\n};\nconst createScrollingComponentWithConsumer = (WrappedComponent) => {\n const ScrollingComponent = createScrollingComponent(WrappedComponent);\n return (props) => {\n return /* @__PURE__ */ React.createElement(DndContext.Consumer, null, ({ dragDropManager }) => dragDropManager === void 0 ? void 0 : /* @__PURE__ */ React.createElement(ScrollingComponent, __spreadProps(__spreadValues({}, props), {\n dragDropManager\n })));\n };\n};\n\nexport { createHorizontalStrength, createScrollingComponent, createVerticalStrength, createScrollingComponentWithConsumer as default, defaultHorizontalStrength, defaultVerticalStrength };\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","import { jsx as L, jsxs as jt, Fragment as so } from \"react/jsx-runtime\";\nimport E, { createElement as Ut } from \"react\";\nimport io from \"react-dom\";\nconst Ce = 0, Lt = 1, Yt = 2, En = 4;\nfunction sn(t) {\n return () => t;\n}\nfunction lo(t) {\n t();\n}\nfunction ne(t, e) {\n return (n) => t(e(n));\n}\nfunction ln(t, e) {\n return () => t(e);\n}\nfunction Hn(t, e) {\n return (n) => t(e, n);\n}\nfunction Ae(t) {\n return t !== void 0;\n}\nfunction co(...t) {\n return () => {\n t.map(lo);\n };\n}\nfunction Gt() {\n}\nfunction ye(t, e) {\n return e(t), t;\n}\nfunction uo(t, e) {\n return e(t);\n}\nfunction X(...t) {\n return t;\n}\nfunction K(t, e) {\n return t(Lt, e);\n}\nfunction M(t, e) {\n t(Ce, e);\n}\nfunction We(t) {\n t(Yt);\n}\nfunction lt(t) {\n return t(En);\n}\nfunction F(t, e) {\n return K(t, Hn(e, Ce));\n}\nfunction Rt(t, e) {\n const n = t(Lt, (o) => {\n n(), e(o);\n });\n return n;\n}\nfunction cn(t) {\n let e, n;\n return (o) => (r) => {\n e = r, n && clearTimeout(n), n = setTimeout(() => {\n o(e);\n }, t);\n };\n}\nfunction Bn(t, e) {\n return t === e;\n}\nfunction Y(t = Bn) {\n let e;\n return (n) => (o) => {\n t(e, o) || (e = o, n(o));\n };\n}\nfunction V(t) {\n return (e) => (n) => {\n t(n) && e(n);\n };\n}\nfunction H(t) {\n return (e) => ne(e, t);\n}\nfunction vt(t) {\n return (e) => () => {\n e(t);\n };\n}\nfunction x(t, ...e) {\n const n = ao(...e);\n return (o, r) => {\n switch (o) {\n case Yt:\n We(t);\n return;\n case Lt:\n return K(t, n(r));\n }\n };\n}\nfunction bt(t, e) {\n return (n) => (o) => {\n n(e = t(e, o));\n };\n}\nfunction qt(t) {\n return (e) => (n) => {\n t > 0 ? t-- : e(n);\n };\n}\nfunction zt(t) {\n let e = null, n;\n return (o) => (r) => {\n e = r, !n && (n = setTimeout(() => {\n n = void 0, o(e);\n }, t));\n };\n}\nfunction G(...t) {\n const e = new Array(t.length);\n let n = 0, o = null;\n const r = Math.pow(2, t.length) - 1;\n return t.forEach((s, i) => {\n const l = Math.pow(2, i);\n K(s, (c) => {\n const d = n;\n n = n | l, e[i] = c, d !== r && n === r && o && (o(), o = null);\n });\n }), (s) => (i) => {\n const l = () => {\n s([i].concat(e));\n };\n n === r ? l() : o = l;\n };\n}\nfunction ao(...t) {\n return (e) => t.reduceRight(uo, e);\n}\nfunction fo(t) {\n let e, n;\n const o = () => e == null ? void 0 : e();\n return function(r, s) {\n switch (r) {\n case Lt:\n return s ? n === s ? void 0 : (o(), n = s, e = K(t, s), e) : (o(), Gt);\n case Yt:\n o(), n = null;\n return;\n }\n };\n}\nfunction w(t) {\n let e = t;\n const n = $();\n return (o, r) => {\n switch (o) {\n case Ce:\n e = r;\n break;\n case Lt: {\n r(e);\n break;\n }\n case En:\n return e;\n }\n return n(o, r);\n };\n}\nfunction ct(t, e) {\n return ye(w(e), (n) => F(t, n));\n}\nfunction $() {\n const t = [];\n return (e, n) => {\n switch (e) {\n case Ce:\n t.slice().forEach((o) => {\n o(n);\n });\n return;\n case Yt:\n t.splice(0, t.length);\n return;\n case Lt:\n return t.push(n), () => {\n const o = t.indexOf(n);\n o > -1 && t.splice(o, 1);\n };\n }\n };\n}\nfunction pt(t) {\n return ye($(), (e) => F(t, e));\n}\nfunction U(t, e = [], { singleton: n } = { singleton: !0 }) {\n return {\n constructor: t,\n dependencies: e,\n id: mo(),\n singleton: n\n };\n}\nconst mo = () => Symbol();\nfunction po(t) {\n const e = /* @__PURE__ */ new Map(), n = ({ constructor: o, dependencies: r, id: s, singleton: i }) => {\n if (i && e.has(s))\n return e.get(s);\n const l = o(r.map((c) => n(c)));\n return i && e.set(s, l), l;\n };\n return n(t);\n}\nfunction rt(...t) {\n const e = $(), n = new Array(t.length);\n let o = 0;\n const r = Math.pow(2, t.length) - 1;\n return t.forEach((s, i) => {\n const l = Math.pow(2, i);\n K(s, (c) => {\n n[i] = c, o = o | l, o === r && M(e, n);\n });\n }), function(s, i) {\n switch (s) {\n case Yt: {\n We(e);\n return;\n }\n case Lt:\n return o === r && i(n), K(e, i);\n }\n };\n}\nfunction A(t, e = Bn) {\n return x(t, Y(e));\n}\nfunction un(...t) {\n return function(e, n) {\n switch (e) {\n case Yt:\n return;\n case Lt:\n return co(...t.map((o) => K(o, n)));\n }\n };\n}\nvar ht = /* @__PURE__ */ ((t) => (t[t.DEBUG = 0] = \"DEBUG\", t[t.INFO = 1] = \"INFO\", t[t.WARN = 2] = \"WARN\", t[t.ERROR = 3] = \"ERROR\", t))(ht || {});\nconst ho = {\n 0: \"debug\",\n 3: \"error\",\n 1: \"log\",\n 2: \"warn\"\n}, go = () => typeof globalThis > \"u\" ? window : globalThis, Pt = U(\n () => {\n const t = w(\n 3\n /* ERROR */\n );\n return {\n log: w((n, o, r = 1) => {\n var i;\n const s = (i = go().VIRTUOSO_LOG_LEVEL) != null ? i : lt(t);\n r >= s && console[ho[r]](\n \"%creact-virtuoso: %c%s %o\",\n \"color: #0253b3; font-weight: bold\",\n \"color: initial\",\n n,\n o\n );\n }),\n logLevel: t\n };\n },\n [],\n { singleton: !0 }\n);\nfunction Et(t, e, n) {\n return Me(t, e, n).callbackRef;\n}\nfunction Me(t, e, n) {\n const o = E.useRef(null);\n let r = (s) => {\n };\n if (typeof ResizeObserver < \"u\") {\n const s = E.useMemo(() => new ResizeObserver((i) => {\n const l = () => {\n const c = i[0].target;\n c.offsetParent !== null && t(c);\n };\n n ? l() : requestAnimationFrame(l);\n }), [t]);\n r = (i) => {\n i && e ? (s.observe(i), o.current = i) : (o.current && s.unobserve(o.current), o.current = null);\n };\n }\n return { callbackRef: r, ref: o };\n}\nfunction kn(t, e, n, o, r, s, i, l, c) {\n const d = E.useCallback(\n (f) => {\n const S = Io(f.children, e, l ? \"offsetWidth\" : \"offsetHeight\", r);\n let p = f.parentElement;\n for (; !p.dataset.virtuosoScroller; )\n p = p.parentElement;\n const m = p.lastElementChild.dataset.viewportType === \"window\", C = i ? l ? i.scrollLeft : i.scrollTop : m ? l ? window.pageXOffset || document.documentElement.scrollLeft : window.pageYOffset || document.documentElement.scrollTop : l ? p.scrollLeft : p.scrollTop, I = i ? l ? i.scrollWidth : i.scrollHeight : m ? l ? document.documentElement.scrollWidth : document.documentElement.scrollHeight : l ? p.scrollWidth : p.scrollHeight, y = i ? l ? i.offsetWidth : i.offsetHeight : m ? l ? window.innerWidth : window.innerHeight : l ? p.offsetWidth : p.offsetHeight;\n o({\n scrollHeight: I,\n scrollTop: Math.max(C, 0),\n viewportHeight: y\n }), s == null || s(\n l ? an(\"column-gap\", getComputedStyle(f).columnGap, r) : an(\"row-gap\", getComputedStyle(f).rowGap, r)\n ), S !== null && t(S);\n },\n [t, e, r, s, i, o]\n );\n return Me(d, n, c);\n}\nfunction Io(t, e, n, o) {\n const r = t.length;\n if (r === 0)\n return null;\n const s = [];\n for (let i = 0; i < r; i++) {\n const l = t.item(i);\n if (l.dataset.index === void 0)\n continue;\n const c = parseInt(l.dataset.index), d = parseFloat(l.dataset.knownSize), f = e(l, n);\n if (f === 0 && o(\"Zero-sized element, this should not happen\", { child: l }, ht.ERROR), f === d)\n continue;\n const S = s[s.length - 1];\n s.length === 0 || S.size !== f || S.endIndex !== c - 1 ? s.push({ endIndex: c, size: f, startIndex: c }) : s[s.length - 1].endIndex++;\n }\n return s;\n}\nfunction an(t, e, n) {\n return e !== \"normal\" && !(e != null && e.endsWith(\"px\")) && n(`${t} was not resolved to pixel value correctly`, e, ht.WARN), e === \"normal\" ? 0 : parseInt(e != null ? e : \"0\", 10);\n}\nfunction _e(t, e, n) {\n const o = E.useRef(null), r = E.useCallback(\n (c) => {\n if (!(c != null && c.offsetParent))\n return;\n const d = c.getBoundingClientRect(), f = d.width;\n let S, p;\n if (e) {\n const m = e.getBoundingClientRect(), C = d.top - m.top;\n p = m.height - Math.max(0, C), S = C + e.scrollTop;\n } else\n p = window.innerHeight - Math.max(0, d.top), S = d.top + window.pageYOffset;\n o.current = {\n offsetTop: S,\n visibleHeight: p,\n visibleWidth: f\n }, t(o.current);\n },\n [t, e]\n ), { callbackRef: s, ref: i } = Me(r, !0, n), l = E.useCallback(() => {\n r(i.current);\n }, [r, i]);\n return E.useEffect(() => {\n if (e) {\n e.addEventListener(\"scroll\", l);\n const c = new ResizeObserver(() => {\n requestAnimationFrame(l);\n });\n return c.observe(e), () => {\n e.removeEventListener(\"scroll\", l), c.unobserve(e);\n };\n } else\n return window.addEventListener(\"scroll\", l), window.addEventListener(\"resize\", l), () => {\n window.removeEventListener(\"scroll\", l), window.removeEventListener(\"resize\", l);\n };\n }, [l, e]), s;\n}\nconst at = U(\n () => {\n const t = $(), e = $(), n = w(0), o = $(), r = w(0), s = $(), i = $(), l = w(0), c = w(0), d = w(0), f = w(0), S = $(), p = $(), m = w(!1), C = w(!1), I = w(!1);\n return F(\n x(\n t,\n H(({ scrollTop: y }) => y)\n ),\n e\n ), F(\n x(\n t,\n H(({ scrollHeight: y }) => y)\n ),\n i\n ), F(e, r), {\n deviation: n,\n fixedFooterHeight: d,\n fixedHeaderHeight: c,\n footerHeight: f,\n headerHeight: l,\n horizontalDirection: C,\n scrollBy: p,\n // input\n scrollContainerState: t,\n scrollHeight: i,\n scrollingInProgress: m,\n // signals\n scrollTo: S,\n scrollTop: e,\n skipAnimationFrameInResizeObserver: I,\n smoothScrollTargetReached: o,\n // state\n statefulScrollTop: r,\n viewportHeight: s\n };\n },\n [],\n { singleton: !0 }\n), oe = { lvl: 0 };\nfunction On(t, e) {\n const n = t.length;\n if (n === 0)\n return [];\n let { index: o, value: r } = e(t[0]);\n const s = [];\n for (let i = 1; i < n; i++) {\n const { index: l, value: c } = e(t[i]);\n s.push({ end: l - 1, start: o, value: r }), o = l, r = c;\n }\n return s.push({ end: 1 / 0, start: o, value: r }), s;\n}\nfunction j(t) {\n return t === oe;\n}\nfunction re(t, e) {\n if (!j(t))\n return e === t.k ? t.v : e < t.k ? re(t.l, e) : re(t.r, e);\n}\nfunction wt(t, e, n = \"k\") {\n if (j(t))\n return [-1 / 0, void 0];\n if (Number(t[n]) === e)\n return [t.k, t.v];\n if (Number(t[n]) < e) {\n const o = wt(t.r, e, n);\n return o[0] === -1 / 0 ? [t.k, t.v] : o;\n }\n return wt(t.l, e, n);\n}\nfunction mt(t, e, n) {\n return j(t) ? Ln(e, n, 1) : e === t.k ? ot(t, { k: e, v: n }) : e < t.k ? dn(ot(t, { l: mt(t.l, e, n) })) : dn(ot(t, { r: mt(t.r, e, n) }));\n}\nfunction Kt() {\n return oe;\n}\nfunction ve(t, e, n) {\n if (j(t))\n return [];\n const o = wt(t, e)[0];\n return So(ze(t, o, n));\n}\nfunction Fe(t, e) {\n if (j(t)) return oe;\n const { k: n, l: o, r } = t;\n if (e === n) {\n if (j(o))\n return r;\n if (j(r))\n return o;\n {\n const [s, i] = zn(o);\n return ge(ot(t, { k: s, l: Fn(o), v: i }));\n }\n } else return e < n ? ge(ot(t, { l: Fe(o, e) })) : ge(ot(t, { r: Fe(r, e) }));\n}\nfunction _t(t) {\n return j(t) ? [] : [..._t(t.l), { k: t.k, v: t.v }, ..._t(t.r)];\n}\nfunction ze(t, e, n) {\n if (j(t))\n return [];\n const { k: o, l: r, r: s, v: i } = t;\n let l = [];\n return o > e && (l = l.concat(ze(r, e, n))), o >= e && o <= n && l.push({ k: o, v: i }), o <= n && (l = l.concat(ze(s, e, n))), l;\n}\nfunction ge(t) {\n const { l: e, lvl: n, r: o } = t;\n if (o.lvl >= n - 1 && e.lvl >= n - 1)\n return t;\n if (n > o.lvl + 1) {\n if (He(e))\n return Pn(ot(t, { lvl: n - 1 }));\n if (!j(e) && !j(e.r))\n return ot(e.r, {\n l: ot(e, { r: e.r.l }),\n lvl: n,\n r: ot(t, {\n l: e.r.r,\n lvl: n - 1\n })\n });\n throw new Error(\"Unexpected empty nodes\");\n } else {\n if (He(t))\n return Le(ot(t, { lvl: n - 1 }));\n if (!j(o) && !j(o.l)) {\n const r = o.l, s = He(r) ? o.lvl - 1 : o.lvl;\n return ot(r, {\n l: ot(t, {\n lvl: n - 1,\n r: r.l\n }),\n lvl: r.lvl + 1,\n r: Le(ot(o, { l: r.r, lvl: s }))\n });\n } else\n throw new Error(\"Unexpected empty nodes\");\n }\n}\nfunction ot(t, e) {\n return Ln(\n e.k !== void 0 ? e.k : t.k,\n e.v !== void 0 ? e.v : t.v,\n e.lvl !== void 0 ? e.lvl : t.lvl,\n e.l !== void 0 ? e.l : t.l,\n e.r !== void 0 ? e.r : t.r\n );\n}\nfunction Fn(t) {\n return j(t.r) ? t.l : ge(ot(t, { r: Fn(t.r) }));\n}\nfunction He(t) {\n return j(t) || t.lvl > t.r.lvl;\n}\nfunction zn(t) {\n return j(t.r) ? [t.k, t.v] : zn(t.r);\n}\nfunction Ln(t, e, n, o = oe, r = oe) {\n return { k: t, l: o, lvl: n, r, v: e };\n}\nfunction dn(t) {\n return Le(Pn(t));\n}\nfunction Pn(t) {\n const { l: e } = t;\n return !j(e) && e.lvl === t.lvl ? ot(e, { r: ot(t, { l: e.r }) }) : t;\n}\nfunction Le(t) {\n const { lvl: e, r: n } = t;\n return !j(n) && !j(n.r) && n.lvl === e && n.r.lvl === e ? ot(n, { l: ot(t, { r: n.l }), lvl: e + 1 }) : t;\n}\nfunction So(t) {\n return On(t, ({ k: e, v: n }) => ({ index: e, value: n }));\n}\nfunction Vn(t, e) {\n return !!(t && t.startIndex === e.startIndex && t.endIndex === e.endIndex);\n}\nfunction se(t, e) {\n return !!(t && t[0] === e[0] && t[1] === e[1]);\n}\nconst Ge = U(\n () => ({ recalcInProgress: w(!1) }),\n [],\n { singleton: !0 }\n);\nfunction An(t, e, n) {\n return t[Se(t, e, n)];\n}\nfunction Se(t, e, n, o = 0) {\n let r = t.length - 1;\n for (; o <= r; ) {\n const s = Math.floor((o + r) / 2), i = t[s], l = n(i, e);\n if (l === 0)\n return s;\n if (l === -1) {\n if (r - o < 2)\n return s - 1;\n r = s - 1;\n } else {\n if (r === o)\n return s;\n o = s + 1;\n }\n }\n throw new Error(`Failed binary finding record in array - ${t.join(\",\")}, searched for ${e}`);\n}\nfunction xo(t, e, n, o) {\n const r = Se(t, e, o), s = Se(t, n, o, r);\n return t.slice(r, s + 1);\n}\nfunction Ct(t, e) {\n return Math.round(t.getBoundingClientRect()[e]);\n}\nfunction be(t) {\n return !j(t.groupOffsetTree);\n}\nfunction Ne({ index: t }, e) {\n return e === t ? 0 : e < t ? -1 : 1;\n}\nfunction To() {\n return {\n groupIndices: [],\n groupOffsetTree: Kt(),\n lastIndex: 0,\n lastOffset: 0,\n lastSize: 0,\n offsetTree: [],\n sizeTree: Kt()\n };\n}\nfunction wo(t, e) {\n let n = j(t) ? 0 : 1 / 0;\n for (const o of e) {\n const { endIndex: r, size: s, startIndex: i } = o;\n if (n = Math.min(n, i), j(t)) {\n t = mt(t, 0, s);\n continue;\n }\n const l = ve(t, i - 1, r + 1);\n if (l.some(Ho(o)))\n continue;\n let c = !1, d = !1;\n for (const { end: f, start: S, value: p } of l)\n c ? (r >= S || s === p) && (t = Fe(t, S)) : (d = p !== s, c = !0), f > r && r >= S && p !== s && (t = mt(t, r + 1, p));\n d && (t = mt(t, i, s));\n }\n return [t, n];\n}\nfunction Co(t) {\n return typeof t.groupIndex < \"u\";\n}\nfunction yo({ offset: t }, e) {\n return e === t ? 0 : e < t ? -1 : 1;\n}\nfunction ie(t, e, n) {\n if (e.length === 0)\n return 0;\n const { index: o, offset: r, size: s } = An(e, t, Ne), i = t - o, l = s * i + (i - 1) * n + r;\n return l > 0 ? l + n : l;\n}\nfunction Wn(t, e) {\n if (!be(e))\n return t;\n let n = 0;\n for (; e.groupIndices[n] <= t + n; )\n n++;\n return t + n;\n}\nfunction Mn(t, e, n) {\n if (Co(t))\n return e.groupIndices[t.groupIndex] + 1;\n {\n const o = t.index === \"LAST\" ? n : t.index;\n let r = Wn(o, e);\n return r = Math.max(0, r, Math.min(n, r)), r;\n }\n}\nfunction vo(t, e, n, o = 0) {\n return o > 0 && (e = Math.max(e, An(t, o, Ne).offset)), On(xo(t, e, n, yo), Eo);\n}\nfunction bo(t, [e, n, o, r]) {\n e.length > 0 && o(\"received item sizes\", e, ht.DEBUG);\n const s = t.sizeTree;\n let i = s, l = 0;\n if (n.length > 0 && j(s) && e.length === 2) {\n const p = e[0].size, m = e[1].size;\n i = n.reduce((C, I) => mt(mt(C, I, p), I + 1, m), i);\n } else\n [i, l] = wo(i, e);\n if (i === s)\n return t;\n const { lastIndex: c, lastOffset: d, lastSize: f, offsetTree: S } = Pe(t.offsetTree, l, i, r);\n return {\n groupIndices: n,\n groupOffsetTree: n.reduce((p, m) => mt(p, m, ie(m, S, r)), Kt()),\n lastIndex: c,\n lastOffset: d,\n lastSize: f,\n offsetTree: S,\n sizeTree: i\n };\n}\nfunction Ro(t) {\n return _t(t).map(({ k: e, v: n }, o, r) => {\n const s = r[o + 1];\n return { endIndex: s ? s.k - 1 : 1 / 0, size: n, startIndex: e };\n });\n}\nfunction fn(t, e) {\n let n = 0, o = 0;\n for (; n < t; )\n n += e[o + 1] - e[o] - 1, o++;\n return o - (n === t ? 0 : 1);\n}\nfunction Pe(t, e, n, o) {\n let r = t, s = 0, i = 0, l = 0, c = 0;\n if (e !== 0) {\n c = Se(r, e - 1, Ne), l = r[c].offset;\n const f = wt(n, e - 1);\n s = f[0], i = f[1], r.length && r[c].size === wt(n, e)[1] && (c -= 1), r = r.slice(0, c + 1);\n } else\n r = [];\n for (const { start: d, value: f } of ve(n, e, 1 / 0)) {\n const S = d - s, p = S * i + l + S * o;\n r.push({\n index: d,\n offset: p,\n size: f\n }), s = d, l = p, i = f;\n }\n return {\n lastIndex: s,\n lastOffset: l,\n lastSize: i,\n offsetTree: r\n };\n}\nfunction Eo(t) {\n return { index: t.index, value: t };\n}\nfunction Ho(t) {\n const { endIndex: e, size: n, startIndex: o } = t;\n return (r) => r.start === o && (r.end === e || r.end === 1 / 0) && r.value === n;\n}\nconst Bo = {\n offsetHeight: \"height\",\n offsetWidth: \"width\"\n}, Ht = U(\n ([{ log: t }, { recalcInProgress: e }]) => {\n const n = $(), o = $(), r = ct(o, 0), s = $(), i = $(), l = w(0), c = w([]), d = w(void 0), f = w(void 0), S = w((h, a) => Ct(h, Bo[a])), p = w(void 0), m = w(0), C = To(), I = ct(\n x(n, G(c, t, m), bt(bo, C), Y()),\n C\n ), y = ct(\n x(\n c,\n Y(),\n bt((h, a) => ({ current: a, prev: h.current }), {\n current: [],\n prev: []\n }),\n H(({ prev: h }) => h)\n ),\n []\n );\n F(\n x(\n c,\n V((h) => h.length > 0),\n G(I, m),\n H(([h, a, R]) => {\n const k = h.reduce((O, z, P) => mt(O, z, ie(z, a.offsetTree, R) || P), Kt());\n return {\n ...a,\n groupIndices: h,\n groupOffsetTree: k\n };\n })\n ),\n I\n ), F(\n x(\n o,\n G(I),\n V(([h, { lastIndex: a }]) => h < a),\n H(([h, { lastIndex: a, lastSize: R }]) => [\n {\n endIndex: a,\n size: R,\n startIndex: h\n }\n ])\n ),\n n\n ), F(d, f);\n const g = ct(\n x(\n d,\n H((h) => h === void 0)\n ),\n !0\n );\n F(\n x(\n f,\n V((h) => h !== void 0 && j(lt(I).sizeTree)),\n H((h) => [{ endIndex: 0, size: h, startIndex: 0 }])\n ),\n n\n );\n const u = pt(\n x(\n n,\n G(I),\n bt(\n ({ sizes: h }, [a, R]) => ({\n changed: R !== h,\n sizes: R\n }),\n { changed: !1, sizes: C }\n ),\n H((h) => h.changed)\n )\n );\n K(\n x(\n l,\n bt(\n (h, a) => ({ diff: h.prev - a, prev: a }),\n { diff: 0, prev: 0 }\n ),\n H((h) => h.diff)\n ),\n (h) => {\n const { groupIndices: a } = lt(I);\n if (h > 0)\n M(e, !0), M(s, h + fn(h, a));\n else if (h < 0) {\n const R = lt(y);\n R.length > 0 && (h -= fn(-h, R)), M(i, h);\n }\n }\n ), K(x(l, G(t)), ([h, a]) => {\n h < 0 && a(\n \"`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value\",\n { firstItemIndex: l },\n ht.ERROR\n );\n });\n const T = pt(s);\n F(\n x(\n s,\n G(I),\n H(([h, a]) => {\n const R = a.groupIndices.length > 0, k = [], O = a.lastSize;\n if (R) {\n const z = re(a.sizeTree, 0);\n let P = 0, D = 0;\n for (; P < h; ) {\n const B = a.groupIndices[D], q = a.groupIndices.length === D + 1 ? 1 / 0 : a.groupIndices[D + 1] - B - 1;\n k.push({\n endIndex: B,\n size: z,\n startIndex: B\n }), k.push({\n endIndex: B + 1 + q - 1,\n size: O,\n startIndex: B + 1\n }), D++, P += q + 1;\n }\n const J = _t(a.sizeTree);\n return P !== h && J.shift(), J.reduce(\n (B, { k: q, v: st }) => {\n let dt = B.ranges;\n return B.prevSize !== 0 && (dt = [\n ...B.ranges,\n {\n endIndex: q + h - 1,\n size: B.prevSize,\n startIndex: B.prevIndex\n }\n ]), {\n prevIndex: q + h,\n prevSize: st,\n ranges: dt\n };\n },\n {\n prevIndex: h,\n prevSize: 0,\n ranges: k\n }\n ).ranges;\n }\n return _t(a.sizeTree).reduce(\n (z, { k: P, v: D }) => ({\n prevIndex: P + h,\n prevSize: D,\n ranges: [...z.ranges, { endIndex: P + h - 1, size: z.prevSize, startIndex: z.prevIndex }]\n }),\n {\n prevIndex: 0,\n prevSize: O,\n ranges: []\n }\n ).ranges;\n })\n ),\n n\n );\n const b = pt(\n x(\n i,\n G(I, m),\n H(([h, { offsetTree: a }, R]) => {\n const k = -h;\n return ie(k, a, R);\n })\n )\n );\n return F(\n x(\n i,\n G(I, m),\n H(([h, a, R]) => {\n if (a.groupIndices.length > 0) {\n if (j(a.sizeTree))\n return a;\n let O = Kt();\n const z = lt(y);\n let P = 0, D = 0, J = 0;\n for (; P < -h; ) {\n J = z[D];\n const B = z[D + 1] - J - 1;\n D++, P += B + 1;\n }\n if (O = _t(a.sizeTree).reduce((B, { k: q, v: st }) => mt(B, Math.max(0, q + h), st), O), P !== -h) {\n const B = re(a.sizeTree, J);\n O = mt(O, 0, B);\n const q = wt(a.sizeTree, -h + 1)[1];\n O = mt(O, 1, q);\n }\n return {\n ...a,\n sizeTree: O,\n ...Pe(a.offsetTree, 0, O, R)\n };\n } else {\n const O = _t(a.sizeTree).reduce((z, { k: P, v: D }) => mt(z, Math.max(0, P + h), D), Kt());\n return {\n ...a,\n sizeTree: O,\n ...Pe(a.offsetTree, 0, O, R)\n };\n }\n })\n ),\n I\n ), {\n beforeUnshiftWith: T,\n // input\n data: p,\n defaultItemSize: f,\n firstItemIndex: l,\n fixedItemSize: d,\n gap: m,\n groupIndices: c,\n itemSize: S,\n listRefresh: u,\n shiftWith: i,\n shiftWithOffset: b,\n sizeRanges: n,\n // output\n sizes: I,\n statefulTotalCount: r,\n totalCount: o,\n trackItemSizes: g,\n unshiftWith: s\n };\n },\n X(Pt, Ge),\n { singleton: !0 }\n);\nfunction ko(t) {\n return t.reduce(\n (e, n) => (e.groupIndices.push(e.totalCount), e.totalCount += n + 1, e),\n {\n groupIndices: [],\n totalCount: 0\n }\n );\n}\nconst _n = U(\n ([{ groupIndices: t, sizes: e, totalCount: n }, { headerHeight: o, scrollTop: r }]) => {\n const s = $(), i = $(), l = pt(x(s, H(ko)));\n return F(\n x(\n l,\n H((c) => c.totalCount)\n ),\n n\n ), F(\n x(\n l,\n H((c) => c.groupIndices)\n ),\n t\n ), F(\n x(\n rt(r, e, o),\n V(([c, d]) => be(d)),\n H(([c, d, f]) => wt(d.groupOffsetTree, Math.max(c - f, 0), \"v\")[0]),\n Y(),\n H((c) => [c])\n ),\n i\n ), { groupCounts: s, topItemsIndexes: i };\n },\n X(Ht, at)\n), Vt = U(\n ([{ log: t }]) => {\n const e = w(!1), n = pt(\n x(\n e,\n V((o) => o),\n Y()\n )\n );\n return K(e, (o) => {\n o && lt(t)(\"props updated\", {}, ht.DEBUG);\n }), { didMount: n, propsReady: e };\n },\n X(Pt),\n { singleton: !0 }\n), Oo = typeof document < \"u\" && \"scrollBehavior\" in document.documentElement.style;\nfunction Gn(t) {\n const e = typeof t == \"number\" ? { index: t } : t;\n return e.align || (e.align = \"start\"), (!e.behavior || !Oo) && (e.behavior = \"auto\"), e.offset || (e.offset = 0), e;\n}\nconst ce = U(\n ([\n { gap: t, listRefresh: e, sizes: n, totalCount: o },\n {\n fixedFooterHeight: r,\n fixedHeaderHeight: s,\n footerHeight: i,\n headerHeight: l,\n scrollingInProgress: c,\n scrollTo: d,\n smoothScrollTargetReached: f,\n viewportHeight: S\n },\n { log: p }\n ]) => {\n const m = $(), C = $(), I = w(0);\n let y = null, g = null, u = null;\n function T() {\n y && (y(), y = null), u && (u(), u = null), g && (clearTimeout(g), g = null), M(c, !1);\n }\n return F(\n x(\n m,\n G(n, S, o, I, l, i, p),\n G(t, s, r),\n H(\n ([\n [b, h, a, R, k, O, z, P],\n D,\n J,\n nt\n ]) => {\n const B = Gn(b), { align: q, behavior: st, offset: dt } = B, St = R - 1, ft = Mn(B, h, St);\n let ut = ie(ft, h.offsetTree, D) + O;\n q === \"end\" ? (ut += J + wt(h.sizeTree, ft)[1] - a + nt, ft === St && (ut += z)) : q === \"center\" ? ut += (J + wt(h.sizeTree, ft)[1] - a + nt) / 2 : ut -= k, dt && (ut += dt);\n const At = (xt) => {\n T(), xt ? (P(\"retrying to scroll to\", { location: b }, ht.DEBUG), M(m, b)) : (M(C, !0), P(\"list did not change, scroll successful\", {}, ht.DEBUG));\n };\n if (T(), st === \"smooth\") {\n let xt = !1;\n u = K(e, (Xt) => {\n xt = xt || Xt;\n }), y = Rt(f, () => {\n At(xt);\n });\n } else\n y = Rt(x(e, Fo(150)), At);\n return g = setTimeout(() => {\n T();\n }, 1200), M(c, !0), P(\"scrolling from index to\", { behavior: st, index: ft, top: ut }, ht.DEBUG), { behavior: st, top: ut };\n }\n )\n ),\n d\n ), {\n scrollTargetReached: C,\n scrollToIndex: m,\n topListHeight: I\n };\n },\n X(Ht, at, Pt),\n { singleton: !0 }\n);\nfunction Fo(t) {\n return (e) => {\n const n = setTimeout(() => {\n e(!1);\n }, t);\n return (o) => {\n o && (e(!0), clearTimeout(n));\n };\n };\n}\nfunction De(t, e) {\n t == 0 ? e() : requestAnimationFrame(() => {\n De(t - 1, e);\n });\n}\nfunction $e(t, e) {\n const n = e - 1;\n return typeof t == \"number\" ? t : t.index === \"LAST\" ? n : t.index;\n}\nconst ue = U(\n ([{ defaultItemSize: t, listRefresh: e, sizes: n }, { scrollTop: o }, { scrollTargetReached: r, scrollToIndex: s }, { didMount: i }]) => {\n const l = w(!0), c = w(0), d = w(!0);\n return F(\n x(\n i,\n G(c),\n V(([f, S]) => !!S),\n vt(!1)\n ),\n l\n ), F(\n x(\n i,\n G(c),\n V(([f, S]) => !!S),\n vt(!1)\n ),\n d\n ), K(\n x(\n rt(e, i),\n G(l, n, t, d),\n V(([[, f], S, { sizeTree: p }, m, C]) => f && (!j(p) || Ae(m)) && !S && !C),\n G(c)\n ),\n ([, f]) => {\n Rt(r, () => {\n M(d, !0);\n }), De(4, () => {\n Rt(o, () => {\n M(l, !0);\n }), M(s, f);\n });\n }\n ), {\n initialItemFinalLocationReached: d,\n initialTopMostItemIndex: c,\n scrolledToInitialItem: l\n };\n },\n X(Ht, at, ce, Vt),\n { singleton: !0 }\n);\nfunction Nn(t, e) {\n return Math.abs(t - e) < 1.01;\n}\nconst le = \"up\", te = \"down\", zo = \"none\", Lo = {\n atBottom: !1,\n notAtBottomBecause: \"NOT_SHOWING_LAST_ITEM\",\n state: {\n offsetBottom: 0,\n scrollHeight: 0,\n scrollTop: 0,\n viewportHeight: 0\n }\n}, Po = 0, ae = U(([{ footerHeight: t, headerHeight: e, scrollBy: n, scrollContainerState: o, scrollTop: r, viewportHeight: s }]) => {\n const i = w(!1), l = w(!0), c = $(), d = $(), f = w(4), S = w(Po), p = ct(\n x(\n un(x(A(r), qt(1), vt(!0)), x(A(r), qt(1), vt(!1), cn(100))),\n Y()\n ),\n !1\n ), m = ct(\n x(un(x(n, vt(!0)), x(n, vt(!1), cn(200))), Y()),\n !1\n );\n F(\n x(\n rt(A(r), A(S)),\n H(([u, T]) => u <= T),\n Y()\n ),\n l\n ), F(x(l, zt(50)), d);\n const C = pt(\n x(\n rt(o, A(s), A(e), A(t), A(f)),\n bt((u, [{ scrollHeight: T, scrollTop: b }, h, a, R, k]) => {\n const O = b + h - T > -k, z = {\n scrollHeight: T,\n scrollTop: b,\n viewportHeight: h\n };\n if (O) {\n let D, J;\n return b > u.state.scrollTop ? (D = \"SCROLLED_DOWN\", J = u.state.scrollTop - b) : (D = \"SIZE_DECREASED\", J = u.state.scrollTop - b || u.scrollTopDelta), {\n atBottom: !0,\n atBottomBecause: D,\n scrollTopDelta: J,\n state: z\n };\n }\n let P;\n return z.scrollHeight > u.state.scrollHeight ? P = \"SIZE_INCREASED\" : h < u.state.viewportHeight ? P = \"VIEWPORT_HEIGHT_DECREASING\" : b < u.state.scrollTop ? P = \"SCROLLING_UPWARDS\" : P = \"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM\", {\n atBottom: !1,\n notAtBottomBecause: P,\n state: z\n };\n }, Lo),\n Y((u, T) => u && u.atBottom === T.atBottom)\n )\n ), I = ct(\n x(\n o,\n bt(\n (u, { scrollHeight: T, scrollTop: b, viewportHeight: h }) => {\n if (Nn(u.scrollHeight, T))\n return {\n changed: !1,\n jump: 0,\n scrollHeight: T,\n scrollTop: b\n };\n {\n const a = T - (b + h) < 1;\n return u.scrollTop !== b && a ? {\n changed: !0,\n jump: u.scrollTop - b,\n scrollHeight: T,\n scrollTop: b\n } : {\n changed: !0,\n jump: 0,\n scrollHeight: T,\n scrollTop: b\n };\n }\n },\n { changed: !1, jump: 0, scrollHeight: 0, scrollTop: 0 }\n ),\n V((u) => u.changed),\n H((u) => u.jump)\n ),\n 0\n );\n F(\n x(\n C,\n H((u) => u.atBottom)\n ),\n i\n ), F(x(i, zt(50)), c);\n const y = w(te);\n F(\n x(\n o,\n H(({ scrollTop: u }) => u),\n Y(),\n bt(\n (u, T) => lt(m) ? { direction: u.direction, prevScrollTop: T } : { direction: T < u.prevScrollTop ? le : te, prevScrollTop: T },\n { direction: te, prevScrollTop: 0 }\n ),\n H((u) => u.direction)\n ),\n y\n ), F(x(o, zt(50), vt(zo)), y);\n const g = w(0);\n return F(\n x(\n p,\n V((u) => !u),\n vt(0)\n ),\n g\n ), F(\n x(\n r,\n zt(100),\n G(p),\n V(([u, T]) => !!T),\n bt(([u, T], [b]) => [T, b], [0, 0]),\n H(([u, T]) => T - u)\n ),\n g\n ), {\n atBottomState: C,\n atBottomStateChange: c,\n atBottomThreshold: f,\n atTopStateChange: d,\n atTopThreshold: S,\n isAtBottom: i,\n isAtTop: l,\n isScrolling: p,\n lastJumpDueToItemResize: I,\n scrollDirection: y,\n scrollVelocity: g\n };\n}, X(at)), xe = \"top\", Te = \"bottom\", mn = \"none\";\nfunction pn(t, e, n) {\n return typeof t == \"number\" ? n === le && e === xe || n === te && e === Te ? t : 0 : n === le ? e === xe ? t.main : t.reverse : e === Te ? t.main : t.reverse;\n}\nfunction hn(t, e) {\n var n;\n return typeof t == \"number\" ? t : (n = t[e]) != null ? n : 0;\n}\nconst Ue = U(\n ([{ deviation: t, fixedHeaderHeight: e, headerHeight: n, scrollTop: o, viewportHeight: r }]) => {\n const s = $(), i = w(0), l = w(0), c = w(0), d = ct(\n x(\n rt(\n A(o),\n A(r),\n A(n),\n A(s, se),\n A(c),\n A(i),\n A(e),\n A(t),\n A(l)\n ),\n H(\n ([\n f,\n S,\n p,\n [m, C],\n I,\n y,\n g,\n u,\n T\n ]) => {\n const b = f - u, h = y + g, a = Math.max(p - b, 0);\n let R = mn;\n const k = hn(T, xe), O = hn(T, Te);\n return m -= u, m += p + g, C += p + g, C -= u, m > f + h - k && (R = le), C < f - a + S + O && (R = te), R !== mn ? [\n Math.max(b - p - pn(I, xe, R) - k, 0),\n b - a - g + S + pn(I, Te, R) + O\n ] : null;\n }\n ),\n V((f) => f != null),\n Y(se)\n ),\n [0, 0]\n );\n return {\n increaseViewportBy: l,\n // input\n listBoundary: s,\n overscan: c,\n topListHeight: i,\n // output\n visibleRange: d\n };\n },\n X(at),\n { singleton: !0 }\n);\nfunction Vo(t, e, n) {\n if (be(e)) {\n const o = Wn(t, e);\n return [\n { index: wt(e.groupOffsetTree, o)[0], offset: 0, size: 0 },\n { data: n == null ? void 0 : n[0], index: o, offset: 0, size: 0 }\n ];\n }\n return [{ data: n == null ? void 0 : n[0], index: t, offset: 0, size: 0 }];\n}\nconst Be = {\n bottom: 0,\n firstItemIndex: 0,\n items: [],\n offsetBottom: 0,\n offsetTop: 0,\n top: 0,\n topItems: [],\n topListHeight: 0,\n totalCount: 0\n};\nfunction Ie(t, e, n, o, r, s) {\n const { lastIndex: i, lastOffset: l, lastSize: c } = r;\n let d = 0, f = 0;\n if (t.length > 0) {\n d = t[0].offset;\n const I = t[t.length - 1];\n f = I.offset + I.size;\n }\n const S = n - i, p = l + S * c + (S - 1) * o, m = d, C = p - f;\n return {\n bottom: f,\n firstItemIndex: s,\n items: gn(t, r, s),\n offsetBottom: C,\n offsetTop: d,\n top: m,\n topItems: gn(e, r, s),\n topListHeight: e.reduce((I, y) => y.size + I, 0),\n totalCount: n\n };\n}\nfunction Dn(t, e, n, o, r, s) {\n let i = 0;\n if (n.groupIndices.length > 0)\n for (const f of n.groupIndices) {\n if (f - i >= t)\n break;\n i++;\n }\n const l = t + i, c = $e(e, l), d = Array.from({ length: l }).map((f, S) => ({\n data: s[S + c],\n index: S + c,\n offset: 0,\n size: 0\n }));\n return Ie(d, [], l, r, n, o);\n}\nfunction gn(t, e, n) {\n if (t.length === 0)\n return [];\n if (!be(e))\n return t.map((d) => ({ ...d, index: d.index + n, originalIndex: d.index }));\n const o = t[0].index, r = t[t.length - 1].index, s = [], i = ve(e.groupOffsetTree, o, r);\n let l, c = 0;\n for (const d of t) {\n (!l || l.end < d.index) && (l = i.shift(), c = e.groupIndices.indexOf(l.start));\n let f;\n d.index === l.start ? f = {\n index: c,\n type: \"group\"\n } : f = {\n groupIndex: c,\n index: d.index - (c + 1) + n\n }, s.push({\n ...f,\n data: d.data,\n offset: d.offset,\n originalIndex: d.index,\n size: d.size\n });\n }\n return s;\n}\nconst Nt = U(\n ([\n { data: t, firstItemIndex: e, gap: n, sizes: o, totalCount: r },\n s,\n { listBoundary: i, topListHeight: l, visibleRange: c },\n { initialTopMostItemIndex: d, scrolledToInitialItem: f },\n { topListHeight: S },\n p,\n { didMount: m },\n { recalcInProgress: C }\n ]) => {\n const I = w([]), y = w(0), g = $();\n F(s.topItemsIndexes, I);\n const u = ct(\n x(\n rt(\n m,\n C,\n A(c, se),\n A(r),\n A(o),\n A(d),\n f,\n A(I),\n A(e),\n A(n),\n t\n ),\n V(([a, R, , k, , , , , , , O]) => {\n const z = O && O.length !== k;\n return a && !R && !z;\n }),\n H(\n ([\n ,\n ,\n [a, R],\n k,\n O,\n z,\n P,\n D,\n J,\n nt,\n B\n ]) => {\n const q = O, { offsetTree: st, sizeTree: dt } = q, St = lt(y);\n if (k === 0)\n return { ...Be, totalCount: k };\n if (a === 0 && R === 0)\n return St === 0 ? { ...Be, totalCount: k } : Dn(St, z, O, J, nt, B || []);\n if (j(dt))\n return St > 0 ? null : Ie(\n Vo($e(z, k), q, B),\n [],\n k,\n nt,\n q,\n J\n );\n const ft = [];\n if (D.length > 0) {\n const Wt = D[0], yt = D[D.length - 1];\n let Bt = 0;\n for (const v of ve(dt, Wt, yt)) {\n const N = v.value, Q = Math.max(v.start, Wt), it = Math.min(v.end, yt);\n for (let tt = Q; tt <= it; tt++)\n ft.push({ data: B == null ? void 0 : B[tt], index: tt, offset: Bt, size: N }), Bt += N;\n }\n }\n if (!P)\n return Ie([], ft, k, nt, q, J);\n const ut = D.length > 0 ? D[D.length - 1] + 1 : 0, At = vo(st, a, R, ut);\n if (At.length === 0)\n return null;\n const xt = k - 1, Xt = ye([], (Wt) => {\n for (const yt of At) {\n const Bt = yt.value;\n let v = Bt.offset, N = yt.start;\n const Q = Bt.size;\n if (Bt.offset < a) {\n N += Math.floor((a - Bt.offset + nt) / (Q + nt));\n const tt = N - yt.start;\n v += tt * Q + tt * nt;\n }\n N < ut && (v += (ut - N) * Q, N = ut);\n const it = Math.min(yt.end, xt);\n for (let tt = N; tt <= it && !(v >= R); tt++)\n Wt.push({ data: B == null ? void 0 : B[tt], index: tt, offset: v, size: Q }), v += Q + nt;\n }\n });\n return Ie(Xt, ft, k, nt, q, J);\n }\n ),\n //@ts-expect-error filter needs to be fixed\n V((a) => a !== null),\n Y()\n ),\n Be\n );\n F(\n x(\n t,\n V(Ae),\n H((a) => a == null ? void 0 : a.length)\n ),\n r\n ), F(\n x(\n u,\n H((a) => a.topListHeight)\n ),\n S\n ), F(S, l), F(\n x(\n u,\n H((a) => [a.top, a.bottom])\n ),\n i\n ), F(\n x(\n u,\n H((a) => a.items)\n ),\n g\n );\n const T = pt(\n x(\n u,\n V(({ items: a }) => a.length > 0),\n G(r, t),\n V(([{ items: a }, R]) => a[a.length - 1].originalIndex === R - 1),\n H(([, a, R]) => [a - 1, R]),\n Y(se),\n H(([a]) => a)\n )\n ), b = pt(\n x(\n u,\n zt(200),\n V(({ items: a, topItems: R }) => a.length > 0 && a[0].originalIndex === R.length),\n H(({ items: a }) => a[0].index),\n Y()\n )\n ), h = pt(\n x(\n u,\n V(({ items: a }) => a.length > 0),\n H(({ items: a }) => {\n let R = 0, k = a.length - 1;\n for (; a[R].type === \"group\" && R < k; )\n R++;\n for (; a[k].type === \"group\" && k > R; )\n k--;\n return {\n endIndex: a[k].index,\n startIndex: a[R].index\n };\n }),\n Y(Vn)\n )\n );\n return { endReached: T, initialItemCount: y, itemsRendered: g, listState: u, rangeChanged: h, startReached: b, topItemsIndexes: I, ...p };\n },\n X(\n Ht,\n _n,\n Ue,\n ue,\n ce,\n ae,\n Vt,\n Ge\n ),\n { singleton: !0 }\n), $n = U(\n ([{ fixedFooterHeight: t, fixedHeaderHeight: e, footerHeight: n, headerHeight: o }, { listState: r }]) => {\n const s = $(), i = ct(\n x(\n rt(n, t, o, e, r),\n H(([l, c, d, f, S]) => l + c + d + f + S.offsetBottom + S.bottom)\n ),\n 0\n );\n return F(A(i), s), { totalListHeight: i, totalListHeightChanged: s };\n },\n X(at, Nt),\n { singleton: !0 }\n), Ao = U(\n ([{ viewportHeight: t }, { totalListHeight: e }]) => {\n const n = w(!1), o = ct(\n x(\n rt(n, t, e),\n V(([r]) => r),\n H(([, r, s]) => Math.max(0, r - s)),\n zt(0),\n Y()\n ),\n 0\n );\n return { alignToBottom: n, paddingTopAddition: o };\n },\n X(at, $n),\n { singleton: !0 }\n);\nfunction In(t) {\n return t ? t === \"smooth\" ? \"smooth\" : \"auto\" : !1;\n}\nconst Wo = (t, e) => typeof t == \"function\" ? In(t(e)) : e && In(t), Mo = U(\n ([\n { listRefresh: t, totalCount: e },\n { atBottomState: n, isAtBottom: o },\n { scrollToIndex: r },\n { scrolledToInitialItem: s },\n { didMount: i, propsReady: l },\n { log: c },\n { scrollingInProgress: d }\n ]) => {\n const f = w(!1), S = $();\n let p = null;\n function m(I) {\n M(r, {\n align: \"end\",\n behavior: I,\n index: \"LAST\"\n });\n }\n K(\n x(\n rt(x(A(e), qt(1)), i),\n G(A(f), o, s, d),\n H(([[I, y], g, u, T, b]) => {\n let h = y && T, a = \"auto\";\n return h && (a = Wo(g, u || b), h = h && !!a), { followOutputBehavior: a, shouldFollow: h, totalCount: I };\n }),\n V(({ shouldFollow: I }) => I)\n ),\n ({ followOutputBehavior: I, totalCount: y }) => {\n p && (p(), p = null), p = Rt(t, () => {\n lt(c)(\"following output to \", { totalCount: y }, ht.DEBUG), m(I), p = null;\n });\n }\n );\n function C(I) {\n const y = Rt(n, (g) => {\n I && !g.atBottom && g.notAtBottomBecause === \"SIZE_INCREASED\" && !p && (lt(c)(\"scrolling to bottom due to increased size\", {}, ht.DEBUG), m(\"auto\"));\n });\n setTimeout(y, 100);\n }\n return K(\n x(\n rt(A(f), e, l),\n V(([I, , y]) => I && y),\n bt(\n ({ value: I }, [, y]) => ({ refreshed: I === y, value: y }),\n { refreshed: !1, value: 0 }\n ),\n V(({ refreshed: I }) => I),\n G(f, e)\n ),\n ([, I]) => {\n lt(s) && C(I !== !1);\n }\n ), K(S, () => {\n C(lt(f) !== !1);\n }), K(rt(A(f), n), ([I, y]) => {\n I && !y.atBottom && y.notAtBottomBecause === \"VIEWPORT_HEIGHT_DECREASING\" && m(\"auto\");\n }), { autoscrollToBottom: S, followOutput: f };\n },\n X(Ht, ae, ce, ue, Vt, Pt, at)\n), _o = U(\n ([{ data: t, firstItemIndex: e, gap: n, sizes: o }, { initialTopMostItemIndex: r }, { initialItemCount: s, listState: i }, { didMount: l }]) => (F(\n x(\n l,\n G(s),\n V(([, c]) => c !== 0),\n G(r, o, e, n, t),\n H(([[, c], d, f, S, p, m = []]) => Dn(c, d, f, S, p, m))\n ),\n i\n ), {}),\n X(Ht, ue, Nt, Vt),\n { singleton: !0 }\n), Go = U(\n ([{ didMount: t }, { scrollTo: e }, { listState: n }]) => {\n const o = w(0);\n return K(\n x(\n t,\n G(o),\n V(([, r]) => r !== 0),\n H(([, r]) => ({ top: r }))\n ),\n (r) => {\n Rt(\n x(\n n,\n qt(1),\n V((s) => s.items.length > 1)\n ),\n () => {\n requestAnimationFrame(() => {\n M(e, r);\n });\n }\n );\n }\n ), {\n initialScrollTop: o\n };\n },\n X(Vt, at, Nt),\n { singleton: !0 }\n), No = ({\n itemBottom: t,\n itemTop: e,\n locationParams: { align: n, behavior: o, ...r },\n viewportBottom: s,\n viewportTop: i\n}) => e < i ? { ...r, align: n != null ? n : \"start\", behavior: o } : t > s ? { ...r, align: n != null ? n : \"end\", behavior: o } : null, Do = U(\n ([\n { gap: t, sizes: e, totalCount: n },\n { fixedFooterHeight: o, fixedHeaderHeight: r, headerHeight: s, scrollingInProgress: i, scrollTop: l, viewportHeight: c },\n { scrollToIndex: d }\n ]) => {\n const f = $();\n return F(\n x(\n f,\n G(e, c, n, s, r, o, l),\n G(t),\n H(([[S, p, m, C, I, y, g, u], T]) => {\n const { align: b, behavior: h, calculateViewLocation: a = No, done: R, ...k } = S, O = Mn(S, p, C - 1), z = ie(O, p.offsetTree, T) + I + y, P = z + wt(p.sizeTree, O)[1], D = u + y, J = u + m - g, nt = a({\n itemBottom: P,\n itemTop: z,\n locationParams: { align: b, behavior: h, ...k },\n viewportBottom: J,\n viewportTop: D\n });\n return nt ? R && Rt(\n x(\n i,\n V((B) => !B),\n // skips the initial publish of false, and the cleanup call.\n // but if scrollingInProgress is true, we skip the initial publish.\n qt(lt(i) ? 1 : 2)\n ),\n R\n ) : R && R(), nt;\n }),\n V((S) => S !== null)\n ),\n d\n ), {\n scrollIntoView: f\n };\n },\n X(Ht, at, ce, Nt, Pt),\n { singleton: !0 }\n), Un = U(\n ([{ scrollVelocity: t }]) => {\n const e = w(!1), n = $(), o = w(!1);\n return F(\n x(\n t,\n G(o, e, n),\n V(([r, s]) => !!s),\n H(([r, s, i, l]) => {\n const { enter: c, exit: d } = s;\n if (i) {\n if (d(r, l))\n return !1;\n } else if (c(r, l))\n return !0;\n return i;\n }),\n Y()\n ),\n e\n ), K(\n x(rt(e, t, n), G(o)),\n ([[r, s, i], l]) => {\n r && l && l.change && l.change(s, i);\n }\n ), { isSeeking: e, scrollSeekConfiguration: o, scrollSeekRangeChanged: n, scrollVelocity: t };\n },\n X(ae),\n { singleton: !0 }\n), Ke = U(([{ scrollContainerState: t, scrollTo: e }]) => {\n const n = $(), o = $(), r = $(), s = w(!1), i = w(void 0);\n return F(\n x(\n rt(n, o),\n H(([{ scrollHeight: l, scrollTop: c, viewportHeight: d }, { offsetTop: f }]) => ({\n scrollHeight: l,\n scrollTop: Math.max(0, c - f),\n viewportHeight: d\n }))\n ),\n t\n ), F(\n x(\n e,\n G(o),\n H(([l, { offsetTop: c }]) => ({\n ...l,\n top: l.top + c\n }))\n ),\n r\n ), {\n customScrollParent: i,\n // config\n useWindowScroll: s,\n // input\n windowScrollContainerState: n,\n // signals\n windowScrollTo: r,\n windowViewportRect: o\n };\n}, X(at)), $o = U(\n ([\n { sizeRanges: t, sizes: e },\n { headerHeight: n, scrollTop: o },\n { initialTopMostItemIndex: r },\n { didMount: s },\n { useWindowScroll: i, windowScrollContainerState: l, windowViewportRect: c }\n ]) => {\n const d = $(), f = w(void 0), S = w(null), p = w(null);\n return F(l, S), F(c, p), K(\n x(\n d,\n G(e, o, i, S, p, n)\n ),\n ([m, C, I, y, g, u, T]) => {\n const b = Ro(C.sizeTree);\n y && g !== null && u !== null && (I = g.scrollTop - u.offsetTop), I -= T, m({ ranges: b, scrollTop: I });\n }\n ), F(x(f, V(Ae), H(Uo)), r), F(\n x(\n s,\n G(f),\n V(([, m]) => m !== void 0),\n Y(),\n H(([, m]) => m.ranges)\n ),\n t\n ), {\n getState: d,\n restoreStateFrom: f\n };\n },\n X(Ht, at, ue, Vt, Ke)\n);\nfunction Uo(t) {\n return { align: \"start\", index: 0, offset: t.scrollTop };\n}\nconst Ko = U(([{ topItemsIndexes: t }]) => {\n const e = w(0);\n return F(\n x(\n e,\n V((n) => n >= 0),\n H((n) => Array.from({ length: n }).map((o, r) => r))\n ),\n t\n ), { topItemCount: e };\n}, X(Nt));\nfunction Kn(t) {\n let e = !1, n;\n return () => (e || (e = !0, n = t()), n);\n}\nconst jo = Kn(() => /iP(ad|od|hone)/i.test(navigator.userAgent) && /WebKit/i.test(navigator.userAgent)), qo = U(\n ([\n { deviation: t, scrollBy: e, scrollingInProgress: n, scrollTop: o },\n { isAtBottom: r, isScrolling: s, lastJumpDueToItemResize: i, scrollDirection: l },\n { listState: c },\n { beforeUnshiftWith: d, gap: f, shiftWithOffset: S, sizes: p },\n { log: m },\n { recalcInProgress: C }\n ]) => {\n const I = pt(\n x(\n c,\n G(i),\n bt(\n ([, g, u, T], [{ bottom: b, items: h, offsetBottom: a, totalCount: R }, k]) => {\n const O = b + a;\n let z = 0;\n return u === R && g.length > 0 && h.length > 0 && (h[0].originalIndex === 0 && g[0].originalIndex === 0 || (z = O - T, z !== 0 && (z += k))), [z, h, R, O];\n },\n [0, [], 0, 0]\n ),\n V(([g]) => g !== 0),\n G(o, l, n, r, m, C),\n V(([, g, u, T, , , b]) => !b && !T && g !== 0 && u === le),\n H(([[g], , , , , u]) => (u(\"Upward scrolling compensation\", { amount: g }, ht.DEBUG), g))\n )\n );\n function y(g) {\n g > 0 ? (M(e, { behavior: \"auto\", top: -g }), M(t, 0)) : (M(t, 0), M(e, { behavior: \"auto\", top: -g }));\n }\n return K(x(I, G(t, s)), ([g, u, T]) => {\n T && jo() ? M(t, u - g) : y(-g);\n }), K(\n x(\n rt(ct(s, !1), t, C),\n V(([g, u, T]) => !g && !T && u !== 0),\n H(([g, u]) => u),\n zt(1)\n ),\n y\n ), F(\n x(\n S,\n H((g) => ({ top: -g }))\n ),\n e\n ), K(\n x(\n d,\n G(p, f),\n H(([g, { groupIndices: u, lastSize: T, sizeTree: b }, h]) => {\n function a(R) {\n return R * (T + h);\n }\n if (u.length === 0)\n return a(g);\n {\n let R = 0;\n const k = re(b, 0);\n let O = 0, z = 0;\n for (; O < g; ) {\n O++, R += k;\n let P = u.length === z + 1 ? 1 / 0 : u[z + 1] - u[z] - 1;\n O + P > g && (R -= k, P = g - O + 1), O += P, R += a(P), z++;\n }\n return R;\n }\n })\n ),\n (g) => {\n M(t, g), requestAnimationFrame(() => {\n M(e, { top: g }), requestAnimationFrame(() => {\n M(t, 0), M(C, !1);\n });\n });\n }\n ), { deviation: t };\n },\n X(at, ae, Nt, Ht, Pt, Ge)\n), Yo = U(\n ([\n t,\n e,\n n,\n o,\n r,\n s,\n i,\n l,\n c,\n d\n ]) => ({\n ...t,\n ...e,\n ...n,\n ...o,\n ...r,\n ...s,\n ...i,\n ...l,\n ...c,\n ...d\n }),\n X(\n Ue,\n _o,\n Vt,\n Un,\n $n,\n Go,\n Ao,\n Ke,\n Do,\n Pt\n )\n), jn = U(\n ([\n {\n data: t,\n defaultItemSize: e,\n firstItemIndex: n,\n fixedItemSize: o,\n gap: r,\n groupIndices: s,\n itemSize: i,\n sizeRanges: l,\n sizes: c,\n statefulTotalCount: d,\n totalCount: f,\n trackItemSizes: S\n },\n { initialItemFinalLocationReached: p, initialTopMostItemIndex: m, scrolledToInitialItem: C },\n I,\n y,\n g,\n { listState: u, topItemsIndexes: T, ...b },\n { scrollToIndex: h },\n a,\n { topItemCount: R },\n { groupCounts: k },\n O\n ]) => (F(b.rangeChanged, O.scrollSeekRangeChanged), F(\n x(\n O.windowViewportRect,\n H((z) => z.visibleHeight)\n ),\n I.viewportHeight\n ), {\n data: t,\n defaultItemHeight: e,\n firstItemIndex: n,\n fixedItemHeight: o,\n gap: r,\n groupCounts: k,\n initialItemFinalLocationReached: p,\n initialTopMostItemIndex: m,\n scrolledToInitialItem: C,\n sizeRanges: l,\n topItemCount: R,\n topItemsIndexes: T,\n // input\n totalCount: f,\n ...g,\n groupIndices: s,\n itemSize: i,\n listState: u,\n scrollToIndex: h,\n // output\n statefulTotalCount: d,\n trackItemSizes: S,\n // exported from stateFlagsSystem\n ...b,\n // the bag of IO from featureGroup1System\n ...O,\n ...I,\n sizes: c,\n ...y\n }),\n X(\n Ht,\n ue,\n at,\n $o,\n Mo,\n Nt,\n ce,\n qo,\n Ko,\n _n,\n Yo\n )\n);\nfunction Zo(t, e) {\n const n = {}, o = {};\n let r = 0;\n const s = t.length;\n for (; r < s; )\n o[t[r]] = 1, r += 1;\n for (const i in e)\n Object.hasOwn(o, i) || (n[i] = e[i]);\n return n;\n}\nconst pe = typeof document < \"u\" ? E.useLayoutEffect : E.useEffect;\nfunction je(t, e, n) {\n const o = Object.keys(e.required || {}), r = Object.keys(e.optional || {}), s = Object.keys(e.methods || {}), i = Object.keys(e.events || {}), l = E.createContext({});\n function c(g, u) {\n g.propsReady && M(g.propsReady, !1);\n for (const T of o) {\n const b = g[e.required[T]];\n M(b, u[T]);\n }\n for (const T of r)\n if (T in u) {\n const b = g[e.optional[T]];\n M(b, u[T]);\n }\n g.propsReady && M(g.propsReady, !0);\n }\n function d(g) {\n return s.reduce((u, T) => (u[T] = (b) => {\n const h = g[e.methods[T]];\n M(h, b);\n }, u), {});\n }\n function f(g) {\n return i.reduce((u, T) => (u[T] = fo(g[e.events[T]]), u), {});\n }\n const S = E.forwardRef((g, u) => {\n const { children: T, ...b } = g, [h] = E.useState(() => ye(po(t), (k) => {\n c(k, b);\n })), [a] = E.useState(ln(f, h));\n pe(() => {\n for (const k of i)\n k in b && K(a[k], b[k]);\n return () => {\n Object.values(a).map(We);\n };\n }, [b, a, h]), pe(() => {\n c(h, b);\n }), E.useImperativeHandle(u, sn(d(h)));\n const R = n;\n return /* @__PURE__ */ L(l.Provider, { value: h, children: n ? /* @__PURE__ */ L(R, { ...Zo([...o, ...r, ...i], b), children: T }) : T });\n }), p = (g) => E.useCallback(Hn(M, E.useContext(l)[g]), [g]), m = (g) => {\n const T = E.useContext(l)[g], b = E.useCallback(\n (h) => K(T, h),\n [T]\n );\n return E.useSyncExternalStore(\n b,\n () => lt(T),\n () => lt(T)\n );\n }, C = (g) => {\n const T = E.useContext(l)[g], [b, h] = E.useState(ln(lt, T));\n return pe(\n () => K(T, (a) => {\n a !== b && h(sn(a));\n }),\n [T, b]\n ), b;\n }, I = E.version.startsWith(\"18\") ? m : C;\n return {\n Component: S,\n useEmitter: (g, u) => {\n const b = E.useContext(l)[g];\n pe(() => K(b, u), [u, b]);\n },\n useEmitterValue: I,\n usePublisher: p\n };\n}\nconst Re = E.createContext(void 0), qn = E.createContext(void 0), Yn = typeof document < \"u\" ? E.useLayoutEffect : E.useEffect;\nfunction Zn(t, e, n, o = Gt, r, s) {\n const i = E.useRef(null), l = E.useRef(null), c = E.useRef(null), d = E.useCallback(\n (p) => {\n const m = p.target, C = m === window || m === document, I = s ? C ? window.pageXOffset || document.documentElement.scrollLeft : m.scrollLeft : C ? window.pageYOffset || document.documentElement.scrollTop : m.scrollTop, y = s ? C ? document.documentElement.scrollWidth : m.scrollWidth : C ? document.documentElement.scrollHeight : m.scrollHeight, g = s ? C ? window.innerWidth : m.offsetWidth : C ? window.innerHeight : m.offsetHeight, u = () => {\n t({\n scrollHeight: y,\n scrollTop: Math.max(I, 0),\n viewportHeight: g\n });\n };\n p.suppressFlushSync ? u() : io.flushSync(u), l.current !== null && (I === l.current || I <= 0 || I === y - g) && (l.current = null, e(!0), c.current && (clearTimeout(c.current), c.current = null));\n },\n [t, e]\n );\n E.useEffect(() => {\n const p = r || i.current;\n return o(r || i.current), d({ suppressFlushSync: !0, target: p }), p.addEventListener(\"scroll\", d, { passive: !0 }), () => {\n o(null), p.removeEventListener(\"scroll\", d);\n };\n }, [i, d, n, o, r]);\n function f(p) {\n const m = i.current;\n if (!m || (s ? \"offsetWidth\" in m && m.offsetWidth === 0 : \"offsetHeight\" in m && m.offsetHeight === 0))\n return;\n const C = p.behavior === \"smooth\";\n let I, y, g;\n m === window ? (y = Math.max(\n Ct(document.documentElement, s ? \"width\" : \"height\"),\n s ? document.documentElement.scrollWidth : document.documentElement.scrollHeight\n ), I = s ? window.innerWidth : window.innerHeight, g = s ? document.documentElement.scrollLeft : document.documentElement.scrollTop) : (y = m[s ? \"scrollWidth\" : \"scrollHeight\"], I = Ct(m, s ? \"width\" : \"height\"), g = m[s ? \"scrollLeft\" : \"scrollTop\"]);\n const u = y - I;\n if (p.top = Math.ceil(Math.max(Math.min(u, p.top), 0)), Nn(I, y) || p.top === g) {\n t({ scrollHeight: y, scrollTop: g, viewportHeight: I }), C && e(!0);\n return;\n }\n C ? (l.current = p.top, c.current && clearTimeout(c.current), c.current = setTimeout(() => {\n c.current = null, l.current = null, e(!0);\n }, 1e3)) : l.current = null, s && (p = { behavior: p.behavior, left: p.top }), m.scrollTo(p);\n }\n function S(p) {\n s && (p = { behavior: p.behavior, left: p.top }), i.current.scrollBy(p);\n }\n return { scrollByCallback: S, scrollerRef: i, scrollToCallback: f };\n}\nconst ke = \"-webkit-sticky\", Sn = \"sticky\", Xn = Kn(() => {\n if (typeof document > \"u\")\n return Sn;\n const t = document.createElement(\"div\");\n return t.style.position = ke, t.style.position === ke ? ke : Sn;\n});\nfunction qe(t) {\n return t;\n}\nconst Xo = /* @__PURE__ */ U(() => {\n const t = w((c) => `Item ${c}`), e = w(null), n = w((c) => `Group ${c}`), o = w({}), r = w(qe), s = w(\"div\"), i = w(Gt), l = (c, d = null) => ct(\n x(\n o,\n H((f) => f[c]),\n Y()\n ),\n d\n );\n return {\n components: o,\n computeItemKey: r,\n context: e,\n EmptyPlaceholder: l(\"EmptyPlaceholder\"),\n FooterComponent: l(\"Footer\"),\n GroupComponent: l(\"Group\", \"div\"),\n groupContent: n,\n HeaderComponent: l(\"Header\"),\n HeaderFooterTag: s,\n ItemComponent: l(\"Item\", \"div\"),\n itemContent: t,\n ListComponent: l(\"List\", \"div\"),\n ScrollerComponent: l(\"Scroller\", \"div\"),\n scrollerRef: i,\n ScrollSeekPlaceholder: l(\"ScrollSeekPlaceholder\"),\n TopItemListComponent: l(\"TopItemList\")\n };\n}), Jo = /* @__PURE__ */ U(\n ([t, e]) => ({ ...t, ...e }),\n X(jn, Xo)\n), Qo = ({ height: t }) => /* @__PURE__ */ L(\"div\", { style: { height: t } }), tr = { overflowAnchor: \"none\", position: Xn(), zIndex: 1 }, Jn = { overflowAnchor: \"none\" }, er = { ...Jn, display: \"inline-block\", height: \"100%\" }, xn = /* @__PURE__ */ E.memo(function({ showTopList: e = !1 }) {\n const n = W(\"listState\"), o = gt(\"sizeRanges\"), r = W(\"useWindowScroll\"), s = W(\"customScrollParent\"), i = gt(\"windowScrollContainerState\"), l = gt(\"scrollContainerState\"), c = s || r ? i : l, d = W(\"itemContent\"), f = W(\"context\"), S = W(\"groupContent\"), p = W(\"trackItemSizes\"), m = W(\"itemSize\"), C = W(\"log\"), I = gt(\"gap\"), y = W(\"horizontalDirection\"), { callbackRef: g } = kn(\n o,\n m,\n p,\n e ? Gt : c,\n C,\n I,\n s,\n y,\n W(\"skipAnimationFrameInResizeObserver\")\n ), [u, T] = E.useState(0);\n Xe(\"deviation\", (B) => {\n u !== B && T(B);\n });\n const b = W(\"EmptyPlaceholder\"), h = W(\"ScrollSeekPlaceholder\") || Qo, a = W(\"ListComponent\"), R = W(\"ItemComponent\"), k = W(\"GroupComponent\"), O = W(\"computeItemKey\"), z = W(\"isSeeking\"), P = W(\"groupIndices\").length > 0, D = W(\"alignToBottom\"), J = W(\"initialItemFinalLocationReached\"), nt = e ? {} : {\n boxSizing: \"border-box\",\n ...y ? {\n display: \"inline-block\",\n height: \"100%\",\n marginLeft: u !== 0 ? u : D ? \"auto\" : 0,\n paddingLeft: n.offsetTop,\n paddingRight: n.offsetBottom,\n whiteSpace: \"nowrap\"\n } : {\n marginTop: u !== 0 ? u : D ? \"auto\" : 0,\n paddingBottom: n.offsetBottom,\n paddingTop: n.offsetTop\n },\n ...J ? {} : { visibility: \"hidden\" }\n };\n return !e && n.totalCount === 0 && b ? /* @__PURE__ */ L(b, { ...Z(b, f) }) : /* @__PURE__ */ L(\n a,\n {\n ...Z(a, f),\n \"data-testid\": e ? \"virtuoso-top-item-list\" : \"virtuoso-item-list\",\n ref: g,\n style: nt,\n children: (e ? n.topItems : n.items).map((B) => {\n const q = B.originalIndex, st = O(q + n.firstItemIndex, B.data, f);\n return z ? /* @__PURE__ */ Ut(\n h,\n {\n ...Z(h, f),\n height: B.size,\n index: B.index,\n key: st,\n type: B.type || \"item\",\n ...B.type === \"group\" ? {} : { groupIndex: B.groupIndex }\n }\n ) : B.type === \"group\" ? /* @__PURE__ */ Ut(\n k,\n {\n ...Z(k, f),\n \"data-index\": q,\n \"data-item-index\": B.index,\n \"data-known-size\": B.size,\n key: st,\n style: tr\n },\n S(B.index, f)\n ) : /* @__PURE__ */ Ut(\n R,\n {\n ...Z(R, f),\n ...Qn(R, B.data),\n \"data-index\": q,\n \"data-item-group-index\": B.groupIndex,\n \"data-item-index\": B.index,\n \"data-known-size\": B.size,\n key: st,\n style: y ? er : Jn\n },\n P ? d(B.index, B.groupIndex, B.data, f) : d(B.index, B.data, f)\n );\n })\n }\n );\n}), nr = {\n height: \"100%\",\n outline: \"none\",\n overflowY: \"auto\",\n position: \"relative\",\n WebkitOverflowScrolling: \"touch\"\n}, or = {\n outline: \"none\",\n overflowX: \"auto\",\n position: \"relative\"\n}, Zt = (t) => ({\n height: \"100%\",\n position: \"absolute\",\n top: 0,\n width: \"100%\",\n ...t ? { display: \"flex\", flexDirection: \"column\" } : {}\n}), rr = {\n position: Xn(),\n top: 0,\n width: \"100%\",\n zIndex: 1\n};\nfunction Z(t, e) {\n if (typeof t != \"string\")\n return { context: e };\n}\nfunction Qn(t, e) {\n return { item: typeof t == \"string\" ? void 0 : e };\n}\nconst sr = /* @__PURE__ */ E.memo(function() {\n const e = W(\"HeaderComponent\"), n = gt(\"headerHeight\"), o = W(\"HeaderFooterTag\"), r = Et(\n E.useMemo(\n () => (i) => {\n n(Ct(i, \"height\"));\n },\n [n]\n ),\n !0,\n W(\"skipAnimationFrameInResizeObserver\")\n ), s = W(\"context\");\n return e ? /* @__PURE__ */ L(o, { ref: r, children: /* @__PURE__ */ L(e, { ...Z(e, s) }) }) : null;\n}), ir = /* @__PURE__ */ E.memo(function() {\n const e = W(\"FooterComponent\"), n = gt(\"footerHeight\"), o = W(\"HeaderFooterTag\"), r = Et(\n E.useMemo(\n () => (i) => {\n n(Ct(i, \"height\"));\n },\n [n]\n ),\n !0,\n W(\"skipAnimationFrameInResizeObserver\")\n ), s = W(\"context\");\n return e ? /* @__PURE__ */ L(o, { ref: r, children: /* @__PURE__ */ L(e, { ...Z(e, s) }) }) : null;\n});\nfunction Ye({ useEmitter: t, useEmitterValue: e, usePublisher: n }) {\n return E.memo(function({ children: s, style: i, ...l }) {\n const c = n(\"scrollContainerState\"), d = e(\"ScrollerComponent\"), f = n(\"smoothScrollTargetReached\"), S = e(\"scrollerRef\"), p = e(\"context\"), m = e(\"horizontalDirection\") || !1, { scrollByCallback: C, scrollerRef: I, scrollToCallback: y } = Zn(\n c,\n f,\n d,\n S,\n void 0,\n m\n );\n return t(\"scrollTo\", y), t(\"scrollBy\", C), /* @__PURE__ */ L(\n d,\n {\n \"data-testid\": \"virtuoso-scroller\",\n \"data-virtuoso-scroller\": !0,\n ref: I,\n style: { ...m ? or : nr, ...i },\n tabIndex: 0,\n ...l,\n ...Z(d, p),\n children: s\n }\n );\n });\n}\nfunction Ze({ useEmitter: t, useEmitterValue: e, usePublisher: n }) {\n return E.memo(function({ children: s, style: i, ...l }) {\n const c = n(\"windowScrollContainerState\"), d = e(\"ScrollerComponent\"), f = n(\"smoothScrollTargetReached\"), S = e(\"totalListHeight\"), p = e(\"deviation\"), m = e(\"customScrollParent\"), C = e(\"context\"), { scrollByCallback: I, scrollerRef: y, scrollToCallback: g } = Zn(\n c,\n f,\n d,\n Gt,\n m\n );\n return Yn(() => (y.current = m || window, () => {\n y.current = null;\n }), [y, m]), t(\"windowScrollTo\", g), t(\"scrollBy\", I), /* @__PURE__ */ L(\n d,\n {\n \"data-virtuoso-scroller\": !0,\n style: { position: \"relative\", ...i, ...S !== 0 ? { height: S + p } : {} },\n ...l,\n ...Z(d, C),\n children: s\n }\n );\n });\n}\nconst lr = ({ children: t }) => {\n const e = E.useContext(Re), n = gt(\"viewportHeight\"), o = gt(\"fixedItemHeight\"), r = W(\"alignToBottom\"), s = W(\"horizontalDirection\"), i = E.useMemo(\n () => ne(n, (c) => Ct(c, s ? \"width\" : \"height\")),\n [n, s]\n ), l = Et(i, !0, W(\"skipAnimationFrameInResizeObserver\"));\n return E.useEffect(() => {\n e && (n(e.viewportHeight), o(e.itemHeight));\n }, [e, n, o]), /* @__PURE__ */ L(\"div\", { \"data-viewport-type\": \"element\", ref: l, style: Zt(r), children: t });\n}, cr = ({ children: t }) => {\n const e = E.useContext(Re), n = gt(\"windowViewportRect\"), o = gt(\"fixedItemHeight\"), r = W(\"customScrollParent\"), s = _e(\n n,\n r,\n W(\"skipAnimationFrameInResizeObserver\")\n ), i = W(\"alignToBottom\");\n return E.useEffect(() => {\n e && (o(e.itemHeight), n({ offsetTop: 0, visibleHeight: e.viewportHeight, visibleWidth: 100 }));\n }, [e, n, o]), /* @__PURE__ */ L(\"div\", { \"data-viewport-type\": \"window\", ref: s, style: Zt(i), children: t });\n}, ur = ({ children: t }) => {\n const e = W(\"TopItemListComponent\") || \"div\", n = W(\"headerHeight\"), o = { ...rr, marginTop: `${n}px` }, r = W(\"context\");\n return /* @__PURE__ */ L(e, { style: o, ...Z(e, r), children: t });\n}, ar = /* @__PURE__ */ E.memo(function(e) {\n const n = W(\"useWindowScroll\"), o = W(\"topItemsIndexes\").length > 0, r = W(\"customScrollParent\"), s = W(\"context\"), i = r || n ? fr : dr, l = r || n ? cr : lr;\n return /* @__PURE__ */ jt(i, { ...e, ...Z(i, s), children: [\n o && /* @__PURE__ */ L(ur, { children: /* @__PURE__ */ L(xn, { showTopList: !0 }) }),\n /* @__PURE__ */ jt(l, { children: [\n /* @__PURE__ */ L(sr, {}),\n /* @__PURE__ */ L(xn, {}),\n /* @__PURE__ */ L(ir, {})\n ] })\n ] });\n}), {\n Component: to,\n useEmitter: Xe,\n useEmitterValue: W,\n usePublisher: gt\n} = /* @__PURE__ */ je(\n Jo,\n {\n events: {\n atBottomStateChange: \"atBottomStateChange\",\n atTopStateChange: \"atTopStateChange\",\n endReached: \"endReached\",\n groupIndices: \"groupIndices\",\n isScrolling: \"isScrolling\",\n itemsRendered: \"itemsRendered\",\n rangeChanged: \"rangeChanged\",\n startReached: \"startReached\",\n totalListHeightChanged: \"totalListHeightChanged\"\n },\n methods: {\n autoscrollToBottom: \"autoscrollToBottom\",\n getState: \"getState\",\n scrollBy: \"scrollBy\",\n scrollIntoView: \"scrollIntoView\",\n scrollTo: \"scrollTo\",\n scrollToIndex: \"scrollToIndex\"\n },\n optional: {\n alignToBottom: \"alignToBottom\",\n atBottomThreshold: \"atBottomThreshold\",\n atTopThreshold: \"atTopThreshold\",\n components: \"components\",\n computeItemKey: \"computeItemKey\",\n context: \"context\",\n customScrollParent: \"customScrollParent\",\n data: \"data\",\n defaultItemHeight: \"defaultItemHeight\",\n firstItemIndex: \"firstItemIndex\",\n fixedItemHeight: \"fixedItemHeight\",\n followOutput: \"followOutput\",\n groupContent: \"groupContent\",\n groupCounts: \"groupCounts\",\n headerFooterTag: \"HeaderFooterTag\",\n horizontalDirection: \"horizontalDirection\",\n increaseViewportBy: \"increaseViewportBy\",\n initialItemCount: \"initialItemCount\",\n initialScrollTop: \"initialScrollTop\",\n initialTopMostItemIndex: \"initialTopMostItemIndex\",\n itemContent: \"itemContent\",\n itemSize: \"itemSize\",\n logLevel: \"logLevel\",\n overscan: \"overscan\",\n restoreStateFrom: \"restoreStateFrom\",\n scrollerRef: \"scrollerRef\",\n scrollSeekConfiguration: \"scrollSeekConfiguration\",\n skipAnimationFrameInResizeObserver: \"skipAnimationFrameInResizeObserver\",\n topItemCount: \"topItemCount\",\n totalCount: \"totalCount\",\n useWindowScroll: \"useWindowScroll\"\n },\n required: {}\n },\n ar\n), dr = /* @__PURE__ */ Ye({ useEmitter: Xe, useEmitterValue: W, usePublisher: gt }), fr = /* @__PURE__ */ Ze({ useEmitter: Xe, useEmitterValue: W, usePublisher: gt }), $r = to, Ur = to, mr = /* @__PURE__ */ U(() => {\n const t = w((c) => /* @__PURE__ */ jt(\"td\", { children: [\n \"Item $\",\n c\n ] })), e = w(null), n = w(null), o = w(null), r = w({}), s = w(qe), i = w(Gt), l = (c, d = null) => ct(\n x(\n r,\n H((f) => f[c]),\n Y()\n ),\n d\n );\n return {\n components: r,\n computeItemKey: s,\n context: e,\n EmptyPlaceholder: l(\"EmptyPlaceholder\"),\n FillerRow: l(\"FillerRow\"),\n fixedFooterContent: o,\n fixedHeaderContent: n,\n itemContent: t,\n ScrollerComponent: l(\"Scroller\", \"div\"),\n scrollerRef: i,\n ScrollSeekPlaceholder: l(\"ScrollSeekPlaceholder\"),\n TableBodyComponent: l(\"TableBody\", \"tbody\"),\n TableComponent: l(\"Table\", \"table\"),\n TableFooterComponent: l(\"TableFoot\", \"tfoot\"),\n TableHeadComponent: l(\"TableHead\", \"thead\"),\n TableRowComponent: l(\"TableRow\", \"tr\")\n };\n}), pr = /* @__PURE__ */ U(\n ([t, e]) => ({ ...t, ...e }),\n X(jn, mr)\n), hr = ({ height: t }) => /* @__PURE__ */ L(\"tr\", { children: /* @__PURE__ */ L(\"td\", { style: { height: t } }) }), gr = ({ height: t }) => /* @__PURE__ */ L(\"tr\", { children: /* @__PURE__ */ L(\"td\", { style: { border: 0, height: t, padding: 0 } }) }), Ir = { overflowAnchor: \"none\" }, Tn = /* @__PURE__ */ E.memo(function({ showTopList: e = !1 }) {\n const n = _(\"listState\"), o = _(\"computeItemKey\"), r = _(\"firstItemIndex\"), s = _(\"isSeeking\"), i = _(\"ScrollSeekPlaceholder\") || hr, l = _(\"context\"), c = _(\"TableRowComponent\"), d = _(\"fixedHeaderHeight\"), f = _(\"itemContent\"), S = (e ? n.topItems : []).reduce((m, C, I) => (I === 0 ? m.push(C.size) : m.push(m[I - 1] + C.size), m), []), p = (e ? n.topItems : n.items).map((m) => {\n const C = m.originalIndex, I = o(C + r, m.data, l), y = e ? C === 0 ? 0 : S[C - 1] : 0;\n return s ? /* @__PURE__ */ Ut(\n i,\n {\n ...Z(i, l),\n height: m.size,\n index: m.index,\n key: I,\n type: m.type || \"item\"\n }\n ) : /* @__PURE__ */ Ut(\n c,\n {\n ...Z(c, l),\n ...Qn(c, m.data),\n \"data-index\": C,\n \"data-item-index\": m.index,\n \"data-known-size\": m.size,\n key: I,\n style: e ? { overflowAnchor: \"none\", position: \"sticky\", top: d + y, zIndex: 2 } : Ir\n },\n f(m.index, m.data, l)\n );\n });\n return /* @__PURE__ */ L(so, { children: p });\n}), Sr = /* @__PURE__ */ E.memo(function() {\n const e = _(\"listState\"), n = _(\"topItemsIndexes\").length > 0, o = Tt(\"sizeRanges\"), r = _(\"useWindowScroll\"), s = _(\"customScrollParent\"), i = Tt(\"windowScrollContainerState\"), l = Tt(\"scrollContainerState\"), c = s || r ? i : l, d = _(\"trackItemSizes\"), f = _(\"itemSize\"), S = _(\"log\"), { callbackRef: p, ref: m } = kn(\n o,\n f,\n d,\n c,\n S,\n void 0,\n s,\n !1,\n _(\"skipAnimationFrameInResizeObserver\")\n ), [C, I] = E.useState(0);\n Je(\"deviation\", (P) => {\n C !== P && (m.current.style.marginTop = `${P}px`, I(P));\n });\n const y = _(\"EmptyPlaceholder\"), g = _(\"FillerRow\") || gr, u = _(\"TableBodyComponent\"), T = _(\"paddingTopAddition\"), b = _(\"statefulTotalCount\"), h = _(\"context\");\n if (b === 0 && y)\n return /* @__PURE__ */ L(y, { ...Z(y, h) });\n const a = (n ? e.topItems : []).reduce((P, D) => P + D.size, 0), R = e.offsetTop + T + C - a, k = e.offsetBottom, O = R > 0 ? /* @__PURE__ */ L(g, { context: h, height: R }, \"padding-top\") : null, z = k > 0 ? /* @__PURE__ */ L(g, { context: h, height: k }, \"padding-bottom\") : null;\n return /* @__PURE__ */ jt(u, { \"data-testid\": \"virtuoso-item-list\", ref: p, ...Z(u, h), children: [\n O,\n n && /* @__PURE__ */ L(Tn, { showTopList: !0 }),\n /* @__PURE__ */ L(Tn, {}),\n z\n ] });\n}), xr = ({ children: t }) => {\n const e = E.useContext(Re), n = Tt(\"viewportHeight\"), o = Tt(\"fixedItemHeight\"), r = Et(\n E.useMemo(() => ne(n, (s) => Ct(s, \"height\")), [n]),\n !0,\n _(\"skipAnimationFrameInResizeObserver\")\n );\n return E.useEffect(() => {\n e && (n(e.viewportHeight), o(e.itemHeight));\n }, [e, n, o]), /* @__PURE__ */ L(\"div\", { \"data-viewport-type\": \"element\", ref: r, style: Zt(!1), children: t });\n}, Tr = ({ children: t }) => {\n const e = E.useContext(Re), n = Tt(\"windowViewportRect\"), o = Tt(\"fixedItemHeight\"), r = _(\"customScrollParent\"), s = _e(\n n,\n r,\n _(\"skipAnimationFrameInResizeObserver\")\n );\n return E.useEffect(() => {\n e && (o(e.itemHeight), n({ offsetTop: 0, visibleHeight: e.viewportHeight, visibleWidth: 100 }));\n }, [e, n, o]), /* @__PURE__ */ L(\"div\", { \"data-viewport-type\": \"window\", ref: s, style: Zt(!1), children: t });\n}, wr = /* @__PURE__ */ E.memo(function(e) {\n const n = _(\"useWindowScroll\"), o = _(\"customScrollParent\"), r = Tt(\"fixedHeaderHeight\"), s = Tt(\"fixedFooterHeight\"), i = _(\"fixedHeaderContent\"), l = _(\"fixedFooterContent\"), c = _(\"context\"), d = Et(\n E.useMemo(() => ne(r, (u) => Ct(u, \"height\")), [r]),\n !0,\n _(\"skipAnimationFrameInResizeObserver\")\n ), f = Et(\n E.useMemo(() => ne(s, (u) => Ct(u, \"height\")), [s]),\n !0,\n _(\"skipAnimationFrameInResizeObserver\")\n ), S = o || n ? vr : yr, p = o || n ? Tr : xr, m = _(\"TableComponent\"), C = _(\"TableHeadComponent\"), I = _(\"TableFooterComponent\"), y = i ? /* @__PURE__ */ L(\n C,\n {\n ref: d,\n style: { position: \"sticky\", top: 0, zIndex: 2 },\n ...Z(C, c),\n children: i()\n },\n \"TableHead\"\n ) : null, g = l ? /* @__PURE__ */ L(\n I,\n {\n ref: f,\n style: { bottom: 0, position: \"sticky\", zIndex: 1 },\n ...Z(I, c),\n children: l()\n },\n \"TableFoot\"\n ) : null;\n return /* @__PURE__ */ L(S, { ...e, ...Z(S, c), children: /* @__PURE__ */ L(p, { children: /* @__PURE__ */ jt(m, { style: { borderSpacing: 0, overflowAnchor: \"none\" }, ...Z(m, c), children: [\n y,\n /* @__PURE__ */ L(Sr, {}, \"TableBody\"),\n g\n ] }) }) });\n}), {\n Component: Cr,\n useEmitter: Je,\n useEmitterValue: _,\n usePublisher: Tt\n} = /* @__PURE__ */ je(\n pr,\n {\n events: {\n atBottomStateChange: \"atBottomStateChange\",\n atTopStateChange: \"atTopStateChange\",\n endReached: \"endReached\",\n groupIndices: \"groupIndices\",\n isScrolling: \"isScrolling\",\n itemsRendered: \"itemsRendered\",\n rangeChanged: \"rangeChanged\",\n startReached: \"startReached\",\n totalListHeightChanged: \"totalListHeightChanged\"\n },\n methods: {\n getState: \"getState\",\n scrollBy: \"scrollBy\",\n scrollIntoView: \"scrollIntoView\",\n scrollTo: \"scrollTo\",\n scrollToIndex: \"scrollToIndex\"\n },\n optional: {\n alignToBottom: \"alignToBottom\",\n atBottomThreshold: \"atBottomThreshold\",\n atTopThreshold: \"atTopThreshold\",\n components: \"components\",\n computeItemKey: \"computeItemKey\",\n context: \"context\",\n customScrollParent: \"customScrollParent\",\n data: \"data\",\n defaultItemHeight: \"defaultItemHeight\",\n firstItemIndex: \"firstItemIndex\",\n fixedFooterContent: \"fixedFooterContent\",\n fixedHeaderContent: \"fixedHeaderContent\",\n fixedItemHeight: \"fixedItemHeight\",\n followOutput: \"followOutput\",\n groupCounts: \"groupCounts\",\n increaseViewportBy: \"increaseViewportBy\",\n initialItemCount: \"initialItemCount\",\n initialScrollTop: \"initialScrollTop\",\n initialTopMostItemIndex: \"initialTopMostItemIndex\",\n itemContent: \"itemContent\",\n itemSize: \"itemSize\",\n logLevel: \"logLevel\",\n overscan: \"overscan\",\n restoreStateFrom: \"restoreStateFrom\",\n scrollerRef: \"scrollerRef\",\n scrollSeekConfiguration: \"scrollSeekConfiguration\",\n topItemCount: \"topItemCount\",\n totalCount: \"totalCount\",\n useWindowScroll: \"useWindowScroll\"\n },\n required: {}\n },\n wr\n), yr = /* @__PURE__ */ Ye({ useEmitter: Je, useEmitterValue: _, usePublisher: Tt }), vr = /* @__PURE__ */ Ze({ useEmitter: Je, useEmitterValue: _, usePublisher: Tt }), Kr = Cr, wn = {\n bottom: 0,\n itemHeight: 0,\n items: [],\n itemWidth: 0,\n offsetBottom: 0,\n offsetTop: 0,\n top: 0\n}, br = {\n bottom: 0,\n itemHeight: 0,\n items: [{ index: 0 }],\n itemWidth: 0,\n offsetBottom: 0,\n offsetTop: 0,\n top: 0\n}, { ceil: Cn, floor: we, max: ee, min: Oe, round: yn } = Math;\nfunction vn(t, e, n) {\n return Array.from({ length: e - t + 1 }).map((o, r) => ({ data: n === null ? null : n[r + t], index: r + t }));\n}\nfunction Rr(t) {\n return {\n ...br,\n items: t\n };\n}\nfunction he(t, e) {\n return t && t.width === e.width && t.height === e.height;\n}\nfunction Er(t, e) {\n return t && t.column === e.column && t.row === e.row;\n}\nconst Hr = /* @__PURE__ */ U(\n ([\n { increaseViewportBy: t, listBoundary: e, overscan: n, visibleRange: o },\n { footerHeight: r, headerHeight: s, scrollBy: i, scrollContainerState: l, scrollTo: c, scrollTop: d, smoothScrollTargetReached: f, viewportHeight: S },\n p,\n m,\n { didMount: C, propsReady: I },\n { customScrollParent: y, useWindowScroll: g, windowScrollContainerState: u, windowScrollTo: T, windowViewportRect: b },\n h\n ]) => {\n const a = w(0), R = w(0), k = w(wn), O = w({ height: 0, width: 0 }), z = w({ height: 0, width: 0 }), P = $(), D = $(), J = w(0), nt = w(null), B = w({ column: 0, row: 0 }), q = $(), st = $(), dt = w(!1), St = w(0), ft = w(!0), ut = w(!1), At = w(!1);\n K(\n x(\n C,\n G(St),\n V(([v, N]) => !!N)\n ),\n () => {\n M(ft, !1);\n }\n ), K(\n x(\n rt(C, ft, z, O, St, ut),\n V(([v, N, Q, it, , tt]) => v && !N && Q.height !== 0 && it.height !== 0 && !tt)\n ),\n ([, , , , v]) => {\n M(ut, !0), De(1, () => {\n M(P, v);\n }), Rt(x(d), () => {\n M(e, [0, 0]), M(ft, !0);\n });\n }\n ), F(\n x(\n st,\n V((v) => v != null && v.scrollTop > 0),\n vt(0)\n ),\n R\n ), K(\n x(\n C,\n G(st),\n V(([, v]) => v != null)\n ),\n ([, v]) => {\n v && (M(O, v.viewport), M(z, v.item), M(B, v.gap), v.scrollTop > 0 && (M(dt, !0), Rt(x(d, qt(1)), (N) => {\n M(dt, !1);\n }), M(c, { top: v.scrollTop })));\n }\n ), F(\n x(\n O,\n H(({ height: v }) => v)\n ),\n S\n ), F(\n x(\n rt(\n A(O, he),\n A(z, he),\n A(B, (v, N) => v && v.column === N.column && v.row === N.row),\n A(d)\n ),\n H(([v, N, Q, it]) => ({\n gap: Q,\n item: N,\n scrollTop: it,\n viewport: v\n }))\n ),\n q\n ), F(\n x(\n rt(\n A(a),\n o,\n A(B, Er),\n A(z, he),\n A(O, he),\n A(nt),\n A(R),\n A(dt),\n A(ft),\n A(St)\n ),\n V(([, , , , , , , v]) => !v),\n H(\n ([\n v,\n [N, Q],\n it,\n tt,\n kt,\n Jt,\n Dt,\n ,\n de,\n Ot\n ]) => {\n const { column: Ft, row: Qt } = it, { height: fe, width: Ee } = tt, { width: Qe } = kt;\n if (Dt === 0 && (v === 0 || Qe === 0))\n return wn;\n if (Ee === 0) {\n const rn = $e(Ot, v), ro = rn + Math.max(Dt - 1, 0);\n return Rr(vn(rn, ro, Jt));\n }\n const me = eo(Qe, Ee, Ft);\n let $t, Mt;\n de ? N === 0 && Q === 0 && Dt > 0 ? ($t = 0, Mt = Dt - 1) : ($t = me * we((N + Qt) / (fe + Qt)), Mt = me * Cn((Q + Qt) / (fe + Qt)) - 1, Mt = Oe(v - 1, ee(Mt, me - 1)), $t = Oe(Mt, ee(0, $t))) : ($t = 0, Mt = -1);\n const tn = vn($t, Mt, Jt), { bottom: en, top: nn } = bn(kt, it, tt, tn), on = Cn(v / me), oo = on * fe + (on - 1) * Qt - en;\n return { bottom: en, itemHeight: fe, items: tn, itemWidth: Ee, offsetBottom: oo, offsetTop: nn, top: nn };\n }\n )\n ),\n k\n ), F(\n x(\n nt,\n V((v) => v !== null),\n H((v) => v.length)\n ),\n a\n ), F(\n x(\n rt(O, z, k, B),\n V(([v, N, { items: Q }]) => Q.length > 0 && N.height !== 0 && v.height !== 0),\n H(([v, N, { items: Q }, it]) => {\n const { bottom: tt, top: kt } = bn(v, it, N, Q);\n return [kt, tt];\n }),\n Y(se)\n ),\n e\n );\n const xt = w(!1);\n F(\n x(\n d,\n G(xt),\n H(([v, N]) => N || v !== 0)\n ),\n xt\n );\n const Xt = pt(\n x(\n rt(k, a),\n V(([{ items: v }]) => v.length > 0),\n G(xt),\n V(([[v, N], Q]) => {\n const tt = v.items[v.items.length - 1].index === N - 1;\n return (Q || v.bottom > 0 && v.itemHeight > 0 && v.offsetBottom === 0 && v.items.length === N) && tt;\n }),\n H(([[, v]]) => v - 1),\n Y()\n )\n ), Wt = pt(\n x(\n A(k),\n V(({ items: v }) => v.length > 0 && v[0].index === 0),\n vt(0),\n Y()\n )\n ), yt = pt(\n x(\n A(k),\n G(dt),\n V(([{ items: v }, N]) => v.length > 0 && !N),\n H(([{ items: v }]) => ({\n endIndex: v[v.length - 1].index,\n startIndex: v[0].index\n })),\n Y(Vn),\n zt(0)\n )\n );\n F(yt, m.scrollSeekRangeChanged), F(\n x(\n P,\n G(O, z, a, B),\n H(([v, N, Q, it, tt]) => {\n const kt = Gn(v), { align: Jt, behavior: Dt, offset: de } = kt;\n let Ot = kt.index;\n Ot === \"LAST\" && (Ot = it - 1), Ot = ee(0, Ot, Oe(it - 1, Ot));\n let Ft = Ve(N, tt, Q, Ot);\n return Jt === \"end\" ? Ft = yn(Ft - N.height + Q.height) : Jt === \"center\" && (Ft = yn(Ft - N.height / 2 + Q.height / 2)), de && (Ft += de), { behavior: Dt, top: Ft };\n })\n ),\n c\n );\n const Bt = ct(\n x(\n k,\n H((v) => v.offsetBottom + v.bottom)\n ),\n 0\n );\n return F(\n x(\n b,\n H((v) => ({ height: v.visibleHeight, width: v.visibleWidth }))\n ),\n O\n ), {\n customScrollParent: y,\n // input\n data: nt,\n deviation: J,\n footerHeight: r,\n gap: B,\n headerHeight: s,\n increaseViewportBy: t,\n initialItemCount: R,\n itemDimensions: z,\n overscan: n,\n restoreStateFrom: st,\n scrollBy: i,\n scrollContainerState: l,\n scrollHeight: D,\n scrollTo: c,\n scrollToIndex: P,\n scrollTop: d,\n smoothScrollTargetReached: f,\n totalCount: a,\n useWindowScroll: g,\n viewportDimensions: O,\n windowScrollContainerState: u,\n windowScrollTo: T,\n windowViewportRect: b,\n ...m,\n // output\n gridState: k,\n horizontalDirection: At,\n initialTopMostItemIndex: St,\n totalListHeight: Bt,\n ...p,\n endReached: Xt,\n propsReady: I,\n rangeChanged: yt,\n startReached: Wt,\n stateChanged: q,\n stateRestoreInProgress: dt,\n ...h\n };\n },\n X(Ue, at, ae, Un, Vt, Ke, Pt)\n);\nfunction eo(t, e, n) {\n return ee(1, we((t + n) / (we(e) + n)));\n}\nfunction bn(t, e, n, o) {\n const { height: r } = n;\n if (r === void 0 || o.length === 0)\n return { bottom: 0, top: 0 };\n const s = Ve(t, e, n, o[0].index);\n return { bottom: Ve(t, e, n, o[o.length - 1].index) + r, top: s };\n}\nfunction Ve(t, e, n, o) {\n const r = eo(t.width, n.width, e.column), s = we(o / r), i = s * n.height + ee(0, s - 1) * e.row;\n return i > 0 ? i + e.row : i;\n}\nconst Br = /* @__PURE__ */ U(() => {\n const t = w((S) => `Item ${S}`), e = w({}), n = w(null), o = w(\"virtuoso-grid-item\"), r = w(\"virtuoso-grid-list\"), s = w(qe), i = w(\"div\"), l = w(Gt), c = (S, p = null) => ct(\n x(\n e,\n H((m) => m[S]),\n Y()\n ),\n p\n ), d = w(!1), f = w(!1);\n return F(A(f), d), {\n components: e,\n computeItemKey: s,\n context: n,\n FooterComponent: c(\"Footer\"),\n HeaderComponent: c(\"Header\"),\n headerFooterTag: i,\n itemClassName: o,\n ItemComponent: c(\"Item\", \"div\"),\n itemContent: t,\n listClassName: r,\n ListComponent: c(\"List\", \"div\"),\n readyStateChanged: d,\n reportReadyState: f,\n ScrollerComponent: c(\"Scroller\", \"div\"),\n scrollerRef: l,\n ScrollSeekPlaceholder: c(\"ScrollSeekPlaceholder\", \"div\")\n };\n}), kr = /* @__PURE__ */ U(\n ([t, e]) => ({ ...t, ...e }),\n X(Hr, Br)\n), Or = /* @__PURE__ */ E.memo(function() {\n const e = et(\"gridState\"), n = et(\"listClassName\"), o = et(\"itemClassName\"), r = et(\"itemContent\"), s = et(\"computeItemKey\"), i = et(\"isSeeking\"), l = It(\"scrollHeight\"), c = et(\"ItemComponent\"), d = et(\"ListComponent\"), f = et(\"ScrollSeekPlaceholder\"), S = et(\"context\"), p = It(\"itemDimensions\"), m = It(\"gap\"), C = et(\"log\"), I = et(\"stateRestoreInProgress\"), y = It(\"reportReadyState\"), g = Et(\n E.useMemo(\n () => (u) => {\n const T = u.parentElement.parentElement.scrollHeight;\n l(T);\n const b = u.firstChild;\n if (b) {\n const { height: h, width: a } = b.getBoundingClientRect();\n p({ height: h, width: a });\n }\n m({\n column: Rn(\"column-gap\", getComputedStyle(u).columnGap, C),\n row: Rn(\"row-gap\", getComputedStyle(u).rowGap, C)\n });\n },\n [l, p, m, C]\n ),\n !0,\n !1\n );\n return Yn(() => {\n e.itemHeight > 0 && e.itemWidth > 0 && y(!0);\n }, [e]), I ? null : /* @__PURE__ */ L(\n d,\n {\n className: n,\n ref: g,\n ...Z(d, S),\n \"data-testid\": \"virtuoso-item-list\",\n style: { paddingBottom: e.offsetBottom, paddingTop: e.offsetTop },\n children: e.items.map((u) => {\n const T = s(u.index, u.data, S);\n return i ? /* @__PURE__ */ L(\n f,\n {\n ...Z(f, S),\n height: e.itemHeight,\n index: u.index,\n width: e.itemWidth\n },\n T\n ) : /* @__PURE__ */ Ut(\n c,\n {\n ...Z(c, S),\n className: o,\n \"data-index\": u.index,\n key: T\n },\n r(u.index, u.data, S)\n );\n })\n }\n );\n}), Fr = E.memo(function() {\n const e = et(\"HeaderComponent\"), n = It(\"headerHeight\"), o = et(\"headerFooterTag\"), r = Et(\n E.useMemo(\n () => (i) => {\n n(Ct(i, \"height\"));\n },\n [n]\n ),\n !0,\n !1\n ), s = et(\"context\");\n return e ? /* @__PURE__ */ L(o, { ref: r, children: /* @__PURE__ */ L(e, { ...Z(e, s) }) }) : null;\n}), zr = E.memo(function() {\n const e = et(\"FooterComponent\"), n = It(\"footerHeight\"), o = et(\"headerFooterTag\"), r = Et(\n E.useMemo(\n () => (i) => {\n n(Ct(i, \"height\"));\n },\n [n]\n ),\n !0,\n !1\n ), s = et(\"context\");\n return e ? /* @__PURE__ */ L(o, { ref: r, children: /* @__PURE__ */ L(e, { ...Z(e, s) }) }) : null;\n}), Lr = ({ children: t }) => {\n const e = E.useContext(qn), n = It(\"itemDimensions\"), o = It(\"viewportDimensions\"), r = Et(\n E.useMemo(\n () => (s) => {\n o(s.getBoundingClientRect());\n },\n [o]\n ),\n !0,\n !1\n );\n return E.useEffect(() => {\n e && (o({ height: e.viewportHeight, width: e.viewportWidth }), n({ height: e.itemHeight, width: e.itemWidth }));\n }, [e, o, n]), /* @__PURE__ */ L(\"div\", { ref: r, style: Zt(!1), children: t });\n}, Pr = ({ children: t }) => {\n const e = E.useContext(qn), n = It(\"windowViewportRect\"), o = It(\"itemDimensions\"), r = et(\"customScrollParent\"), s = _e(n, r, !1);\n return E.useEffect(() => {\n e && (o({ height: e.itemHeight, width: e.itemWidth }), n({ offsetTop: 0, visibleHeight: e.viewportHeight, visibleWidth: e.viewportWidth }));\n }, [e, n, o]), /* @__PURE__ */ L(\"div\", { ref: s, style: Zt(!1), children: t });\n}, Vr = /* @__PURE__ */ E.memo(function({ ...e }) {\n const n = et(\"useWindowScroll\"), o = et(\"customScrollParent\"), r = o || n ? Mr : Wr, s = o || n ? Pr : Lr, i = et(\"context\");\n return /* @__PURE__ */ L(r, { ...e, ...Z(r, i), children: /* @__PURE__ */ jt(s, { children: [\n /* @__PURE__ */ L(Fr, {}),\n /* @__PURE__ */ L(Or, {}),\n /* @__PURE__ */ L(zr, {})\n ] }) });\n}), {\n Component: Ar,\n useEmitter: no,\n useEmitterValue: et,\n usePublisher: It\n} = /* @__PURE__ */ je(\n kr,\n {\n events: {\n atBottomStateChange: \"atBottomStateChange\",\n atTopStateChange: \"atTopStateChange\",\n endReached: \"endReached\",\n isScrolling: \"isScrolling\",\n rangeChanged: \"rangeChanged\",\n readyStateChanged: \"readyStateChanged\",\n startReached: \"startReached\",\n stateChanged: \"stateChanged\"\n },\n methods: {\n scrollBy: \"scrollBy\",\n scrollTo: \"scrollTo\",\n scrollToIndex: \"scrollToIndex\"\n },\n optional: {\n components: \"components\",\n computeItemKey: \"computeItemKey\",\n context: \"context\",\n customScrollParent: \"customScrollParent\",\n data: \"data\",\n headerFooterTag: \"headerFooterTag\",\n increaseViewportBy: \"increaseViewportBy\",\n initialItemCount: \"initialItemCount\",\n initialTopMostItemIndex: \"initialTopMostItemIndex\",\n itemClassName: \"itemClassName\",\n itemContent: \"itemContent\",\n listClassName: \"listClassName\",\n logLevel: \"logLevel\",\n overscan: \"overscan\",\n restoreStateFrom: \"restoreStateFrom\",\n scrollerRef: \"scrollerRef\",\n scrollSeekConfiguration: \"scrollSeekConfiguration\",\n totalCount: \"totalCount\",\n useWindowScroll: \"useWindowScroll\"\n }\n },\n Vr\n), Wr = /* @__PURE__ */ Ye({ useEmitter: no, useEmitterValue: et, usePublisher: It }), Mr = /* @__PURE__ */ Ze({ useEmitter: no, useEmitterValue: et, usePublisher: It });\nfunction Rn(t, e, n) {\n return e !== \"normal\" && !(e != null && e.endsWith(\"px\")) && n(`${t} was not resolved to pixel value correctly`, e, ht.WARN), e === \"normal\" ? 0 : parseInt(e != null ? e : \"0\", 10);\n}\nconst jr = Ar;\nexport {\n Ur as GroupedVirtuoso,\n ht as LogLevel,\n Kr as TableVirtuoso,\n $r as Virtuoso,\n jr as VirtuosoGrid,\n qn as VirtuosoGridMockContext,\n Re as VirtuosoMockContext\n};\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport React, { Component, Children, cloneElement } from 'react';\nimport withScrolling, { createScrollingComponent, createVerticalStrength, createHorizontalStrength } from '@nosferatu500/react-dnd-scrollzone';\nimport isEqual from 'lodash.isequal';\nimport { DragSource, DropTarget, DndContext, DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { Virtuoso } from 'react-virtuoso';\n\nconst defaultGetNodeKey = ({ treeIndex }) => treeIndex;\nconst getReactElementText = (parent) => {\n if (typeof parent === \"string\") {\n return parent;\n }\n if (parent === void 0 || typeof parent !== \"object\" || !parent.props || !parent.props.children || typeof parent.props.children !== \"string\" && typeof parent.props.children !== \"object\") {\n return \"\";\n }\n if (typeof parent.props.children === \"string\") {\n return parent.props.children;\n }\n return parent.props.children.map((child) => getReactElementText(child)).join(\"\");\n};\nconst stringSearch = (key, searchQuery, node, path, treeIndex) => {\n if (typeof node[key] === \"function\") {\n return String(node[key]({ node, path, treeIndex })).includes(searchQuery);\n }\n if (typeof node[key] === \"object\") {\n return getReactElementText(node[key]).includes(searchQuery);\n }\n return node[key] && String(node[key]).includes(searchQuery);\n};\nconst defaultSearchMethod = ({\n node,\n path,\n treeIndex,\n searchQuery\n}) => {\n return stringSearch(\"title\", searchQuery, node, path, treeIndex) || stringSearch(\"subtitle\", searchQuery, node, path, treeIndex);\n};\n\nconst getNodeDataAtTreeIndexOrNextIndex = ({\n targetIndex,\n node,\n currentIndex,\n getNodeKey,\n path = [],\n lowerSiblingCounts = [],\n ignoreCollapsed = true,\n isPseudoRoot = false\n}) => {\n const selfPath = isPseudoRoot ? [] : [...path, getNodeKey({ node, treeIndex: currentIndex })];\n if (currentIndex === targetIndex) {\n return {\n node,\n lowerSiblingCounts,\n path: selfPath\n };\n }\n if (!(node == null ? void 0 : node.children) || ignoreCollapsed && (node == null ? void 0 : node.expanded) !== true) {\n return { nextIndex: currentIndex + 1 };\n }\n let childIndex = currentIndex + 1;\n const childCount = node.children.length;\n for (let i = 0; i < childCount; i += 1) {\n const result = getNodeDataAtTreeIndexOrNextIndex({\n ignoreCollapsed,\n getNodeKey,\n targetIndex,\n node: node.children[i],\n currentIndex: childIndex,\n lowerSiblingCounts: [...lowerSiblingCounts, childCount - i - 1],\n path: selfPath\n });\n if (result.node) {\n return result;\n }\n childIndex = result.nextIndex;\n }\n return { nextIndex: childIndex };\n};\nconst getDescendantCount = ({\n node,\n ignoreCollapsed = true\n}) => {\n return getNodeDataAtTreeIndexOrNextIndex({\n getNodeKey: () => {\n },\n ignoreCollapsed,\n node,\n currentIndex: 0,\n targetIndex: -1\n }).nextIndex - 1;\n};\nconst walkDescendants = ({\n callback,\n getNodeKey,\n ignoreCollapsed,\n isPseudoRoot = false,\n node,\n parentNode = void 0,\n currentIndex,\n path = [],\n lowerSiblingCounts = []\n}) => {\n const selfPath = isPseudoRoot ? [] : [...path, getNodeKey({ node, treeIndex: currentIndex })];\n const selfInfo = isPseudoRoot ? void 0 : {\n node,\n parentNode,\n path: selfPath,\n lowerSiblingCounts,\n treeIndex: currentIndex\n };\n if (!isPseudoRoot) {\n const callbackResult = callback(selfInfo);\n if (callbackResult === false) {\n return false;\n }\n }\n if (!node.children || node.expanded !== true && ignoreCollapsed && !isPseudoRoot) {\n return currentIndex;\n }\n let childIndex = currentIndex;\n const childCount = node.children.length;\n if (typeof node.children !== \"function\") {\n for (let i = 0; i < childCount; i += 1) {\n childIndex = walkDescendants({\n callback,\n getNodeKey,\n ignoreCollapsed,\n node: node.children[i],\n parentNode: isPseudoRoot ? void 0 : node,\n currentIndex: childIndex + 1,\n lowerSiblingCounts: [...lowerSiblingCounts, childCount - i - 1],\n path: selfPath\n });\n if (childIndex === false) {\n return false;\n }\n }\n }\n return childIndex;\n};\nconst mapDescendants = ({\n callback,\n getNodeKey,\n ignoreCollapsed,\n isPseudoRoot = false,\n node,\n parentNode = void 0,\n currentIndex,\n path = [],\n lowerSiblingCounts = []\n}) => {\n const nextNode = { ...node };\n const selfPath = isPseudoRoot ? [] : [...path, getNodeKey({ node: nextNode, treeIndex: currentIndex })];\n const selfInfo = {\n node: nextNode,\n parentNode,\n path: selfPath,\n lowerSiblingCounts,\n treeIndex: currentIndex\n };\n if (!nextNode.children || nextNode.expanded !== true && ignoreCollapsed && !isPseudoRoot) {\n return {\n treeIndex: currentIndex,\n node: callback(selfInfo)\n };\n }\n let childIndex = currentIndex;\n const childCount = nextNode.children.length;\n if (typeof nextNode.children !== \"function\") {\n nextNode.children = nextNode.children.map((child, i) => {\n const mapResult = mapDescendants({\n callback,\n getNodeKey,\n ignoreCollapsed,\n node: child,\n parentNode: isPseudoRoot ? void 0 : nextNode,\n currentIndex: childIndex + 1,\n lowerSiblingCounts: [...lowerSiblingCounts, childCount - i - 1],\n path: selfPath\n });\n childIndex = mapResult.treeIndex;\n return mapResult.node;\n });\n }\n return {\n node: callback(selfInfo),\n treeIndex: childIndex\n };\n};\nconst getVisibleNodeCount = ({ treeData }) => {\n const traverse = (node) => {\n if (!node.children || node.expanded !== true || typeof node.children === \"function\") {\n return 1;\n }\n return 1 + node.children.reduce(\n (total, currentNode) => total + traverse(currentNode),\n 0\n );\n };\n return treeData.reduce(\n (total, currentNode) => total + traverse(currentNode),\n 0\n );\n};\nconst getVisibleNodeInfoAtIndex = ({\n treeData,\n index: targetIndex,\n getNodeKey\n}) => {\n if (!treeData || treeData.length === 0) {\n return void 0;\n }\n const result = getNodeDataAtTreeIndexOrNextIndex({\n targetIndex,\n getNodeKey,\n node: {\n children: treeData,\n expanded: true\n },\n currentIndex: -1,\n path: [],\n lowerSiblingCounts: [],\n isPseudoRoot: true\n });\n if (result.node) {\n return result;\n }\n return void 0;\n};\nconst walk = ({\n treeData,\n getNodeKey,\n callback,\n ignoreCollapsed = true\n}) => {\n if (!treeData || treeData.length === 0) {\n return;\n }\n walkDescendants({\n callback,\n getNodeKey,\n ignoreCollapsed,\n isPseudoRoot: true,\n node: { children: treeData },\n currentIndex: -1,\n path: [],\n lowerSiblingCounts: []\n });\n};\nconst map = ({\n treeData,\n getNodeKey,\n callback,\n ignoreCollapsed = true\n}) => {\n if (!treeData || treeData.length === 0) {\n return [];\n }\n return mapDescendants({\n callback,\n getNodeKey,\n ignoreCollapsed,\n isPseudoRoot: true,\n node: { children: treeData },\n currentIndex: -1,\n path: [],\n lowerSiblingCounts: []\n }).node.children;\n};\nconst toggleExpandedForAll = ({\n treeData,\n expanded = true\n}) => {\n return map({\n treeData,\n callback: ({ node }) => ({ ...node, expanded }),\n getNodeKey: ({ treeIndex }) => treeIndex,\n ignoreCollapsed: false\n });\n};\nconst changeNodeAtPath = ({\n treeData,\n path,\n newNode,\n getNodeKey,\n ignoreCollapsed = true\n}) => {\n const RESULT_MISS = \"RESULT_MISS\";\n const traverse = ({\n isPseudoRoot = false,\n node,\n currentTreeIndex,\n pathIndex\n }) => {\n if (!isPseudoRoot && getNodeKey({ node, treeIndex: currentTreeIndex }) !== path[pathIndex]) {\n return RESULT_MISS;\n }\n if (pathIndex >= path.length - 1) {\n return typeof newNode === \"function\" ? newNode({ node, treeIndex: currentTreeIndex }) : newNode;\n }\n if (!node.children) {\n throw new Error(\"Path referenced children of node with no children.\");\n }\n let nextTreeIndex = currentTreeIndex + 1;\n for (let i = 0; i < node.children.length; i += 1) {\n const result2 = traverse({\n node: node.children[i],\n currentTreeIndex: nextTreeIndex,\n pathIndex: pathIndex + 1\n });\n if (result2 !== RESULT_MISS) {\n if (result2) {\n return {\n ...node,\n children: [\n ...node.children.slice(0, i),\n result2,\n ...node.children.slice(i + 1)\n ]\n };\n }\n return {\n ...node,\n children: [\n ...node.children.slice(0, i),\n ...node.children.slice(i + 1)\n ]\n };\n }\n nextTreeIndex += 1 + getDescendantCount({ node: node.children[i], ignoreCollapsed });\n }\n return RESULT_MISS;\n };\n const result = traverse({\n node: { children: treeData },\n currentTreeIndex: -1,\n pathIndex: -1,\n isPseudoRoot: true\n });\n if (result === RESULT_MISS) {\n throw new Error(\"No node found at the given path.\");\n }\n return result.children;\n};\nconst removeNodeAtPath = ({\n treeData,\n path,\n getNodeKey,\n ignoreCollapsed = true\n}) => {\n return changeNodeAtPath({\n treeData,\n path,\n getNodeKey,\n ignoreCollapsed,\n newNode: void 0\n // Delete the node\n });\n};\nconst removeNode = ({\n treeData,\n path,\n getNodeKey,\n ignoreCollapsed = true\n}) => {\n let removedNode;\n let removedTreeIndex;\n const nextTreeData = changeNodeAtPath({\n treeData,\n path,\n getNodeKey,\n ignoreCollapsed,\n newNode: ({ node, treeIndex }) => {\n removedNode = node;\n removedTreeIndex = treeIndex;\n return void 0;\n }\n });\n return {\n treeData: nextTreeData,\n node: removedNode,\n treeIndex: removedTreeIndex\n };\n};\nconst getNodeAtPath = ({\n treeData,\n path,\n getNodeKey,\n ignoreCollapsed = true\n}) => {\n let foundNodeInfo;\n try {\n changeNodeAtPath({\n treeData,\n path,\n getNodeKey,\n ignoreCollapsed,\n newNode: ({ node, treeIndex }) => {\n foundNodeInfo = { node, treeIndex };\n return node;\n }\n });\n } catch {\n }\n return foundNodeInfo;\n};\nconst addNodeUnderParent = ({\n treeData,\n newNode,\n parentKey = void 0,\n getNodeKey,\n ignoreCollapsed = true,\n expandParent = false,\n addAsFirstChild = false\n}) => {\n if (parentKey === null || parentKey === void 0) {\n return addAsFirstChild ? {\n treeData: [newNode, ...treeData || []],\n treeIndex: 0\n } : {\n treeData: [...treeData || [], newNode],\n treeIndex: (treeData || []).length\n };\n }\n let insertedTreeIndex;\n let hasBeenAdded = false;\n const changedTreeData = map({\n treeData,\n getNodeKey,\n ignoreCollapsed,\n callback: ({ node, treeIndex, path }) => {\n const key = path ? path[path.length - 1] : void 0;\n if (hasBeenAdded || key !== parentKey) {\n return node;\n }\n hasBeenAdded = true;\n const parentNode = {\n ...node\n };\n if (expandParent) {\n parentNode.expanded = true;\n }\n if (!parentNode.children) {\n insertedTreeIndex = treeIndex + 1;\n return {\n ...parentNode,\n children: [newNode]\n };\n }\n if (typeof parentNode.children === \"function\") {\n throw new TypeError(\"Cannot add to children defined by a function\");\n }\n let nextTreeIndex = treeIndex + 1;\n for (let i = 0; i < parentNode.children.length; i += 1) {\n nextTreeIndex += 1 + getDescendantCount({ node: parentNode.children[i], ignoreCollapsed });\n }\n insertedTreeIndex = nextTreeIndex;\n const children = addAsFirstChild ? [newNode, ...parentNode.children] : [...parentNode.children, newNode];\n return {\n ...parentNode,\n children\n };\n }\n });\n if (!hasBeenAdded) {\n throw new Error(\"No node found with the given key.\");\n }\n return {\n treeData: changedTreeData,\n treeIndex: insertedTreeIndex\n };\n};\nconst addNodeAtDepthAndIndex = ({\n targetDepth,\n minimumTreeIndex,\n newNode,\n ignoreCollapsed,\n expandParent,\n isPseudoRoot = false,\n isLastChild,\n node,\n currentIndex,\n currentDepth,\n getNodeKey,\n path = []\n}) => {\n const selfPath = (n) => isPseudoRoot ? [] : [...path, getNodeKey({ node: n, treeIndex: currentIndex })];\n if (currentIndex >= minimumTreeIndex - 1 || isLastChild && !(node.children && node.children.length > 0)) {\n if (typeof node.children === \"function\") {\n throw new TypeError(\"Cannot add to children defined by a function\");\n } else {\n const extraNodeProps = expandParent ? { expanded: true } : {};\n const nextNode2 = {\n ...node,\n ...extraNodeProps,\n children: node.children ? [newNode, ...node.children] : [newNode]\n };\n return {\n node: nextNode2,\n nextIndex: currentIndex + 2,\n insertedTreeIndex: currentIndex + 1,\n parentPath: selfPath(nextNode2),\n parentNode: isPseudoRoot ? void 0 : nextNode2\n };\n }\n }\n if (currentDepth >= targetDepth - 1) {\n if (!node.children || typeof node.children === \"function\" || node.expanded !== true && ignoreCollapsed && !isPseudoRoot) {\n return { node, nextIndex: currentIndex + 1 };\n }\n let childIndex2 = currentIndex + 1;\n let insertedTreeIndex2;\n let insertIndex;\n for (let i = 0; i < node.children.length; i += 1) {\n if (childIndex2 >= minimumTreeIndex) {\n insertedTreeIndex2 = childIndex2;\n insertIndex = i;\n break;\n }\n childIndex2 += 1 + getDescendantCount({ node: node.children[i], ignoreCollapsed });\n }\n if (insertIndex === null || insertIndex === void 0) {\n if (childIndex2 < minimumTreeIndex && !isLastChild) {\n return { node, nextIndex: childIndex2 };\n }\n insertedTreeIndex2 = childIndex2;\n insertIndex = node.children.length;\n }\n const nextNode2 = {\n ...node,\n children: [\n ...node.children.slice(0, insertIndex),\n newNode,\n ...node.children.slice(insertIndex)\n ]\n };\n return {\n node: nextNode2,\n nextIndex: childIndex2,\n insertedTreeIndex: insertedTreeIndex2,\n parentPath: selfPath(nextNode2),\n parentNode: isPseudoRoot ? void 0 : nextNode2\n };\n }\n if (!node.children || typeof node.children === \"function\" || node.expanded !== true && ignoreCollapsed && !isPseudoRoot) {\n return { node, nextIndex: currentIndex + 1 };\n }\n let insertedTreeIndex;\n let pathFragment;\n let parentNode;\n let childIndex = currentIndex + 1;\n let newChildren = node.children;\n if (typeof newChildren !== \"function\") {\n newChildren = newChildren.map((child, i) => {\n if (insertedTreeIndex !== null && insertedTreeIndex !== void 0) {\n return child;\n }\n const mapResult = addNodeAtDepthAndIndex({\n targetDepth,\n minimumTreeIndex,\n newNode,\n ignoreCollapsed,\n expandParent,\n isLastChild: isLastChild && i === newChildren.length - 1,\n node: child,\n currentIndex: childIndex,\n currentDepth: currentDepth + 1,\n getNodeKey,\n path: []\n // Cannot determine the parent path until the children have been processed\n });\n if (\"insertedTreeIndex\" in mapResult) {\n ({\n insertedTreeIndex,\n parentNode,\n parentPath: pathFragment\n } = mapResult);\n }\n childIndex = mapResult.nextIndex;\n return mapResult.node;\n });\n }\n const nextNode = { ...node, children: newChildren };\n const result = {\n node: nextNode,\n nextIndex: childIndex\n };\n if (insertedTreeIndex !== null && insertedTreeIndex !== void 0) {\n result.insertedTreeIndex = insertedTreeIndex;\n result.parentPath = [...selfPath(nextNode), ...pathFragment];\n result.parentNode = parentNode;\n }\n return result;\n};\nconst insertNode = ({\n treeData,\n depth: targetDepth,\n minimumTreeIndex,\n newNode,\n getNodeKey,\n ignoreCollapsed = true,\n expandParent = false\n}) => {\n if (!treeData && targetDepth === 0) {\n return {\n treeData: [newNode],\n treeIndex: 0,\n path: [getNodeKey({ node: newNode, treeIndex: 0 })],\n parentNode: void 0\n };\n }\n const insertResult = addNodeAtDepthAndIndex({\n targetDepth,\n minimumTreeIndex,\n newNode,\n ignoreCollapsed,\n expandParent,\n getNodeKey,\n isPseudoRoot: true,\n isLastChild: true,\n node: { children: treeData },\n currentIndex: -1,\n currentDepth: -1\n });\n if (!(\"insertedTreeIndex\" in insertResult)) {\n throw new Error(\"No suitable position found to insert.\");\n }\n const treeIndex = insertResult.insertedTreeIndex;\n return {\n treeData: insertResult.node.children,\n treeIndex,\n path: [\n ...insertResult.parentPath,\n getNodeKey({ node: newNode, treeIndex })\n ],\n parentNode: insertResult.parentNode\n };\n};\nconst getFlatDataFromTree = ({\n treeData,\n getNodeKey,\n ignoreCollapsed = true\n}) => {\n if (!treeData || treeData.length === 0) {\n return [];\n }\n const flattened = [];\n walk({\n treeData,\n getNodeKey,\n ignoreCollapsed,\n callback: (nodeInfo) => {\n flattened.push(nodeInfo);\n }\n });\n return flattened;\n};\nconst getTreeFromFlatData = ({\n flatData,\n getKey = (node) => node.id,\n getParentKey = (node) => node.parentId,\n rootKey = \"0\"\n}) => {\n if (!flatData) {\n return [];\n }\n const childrenToParents = {};\n for (const child of flatData) {\n const parentKey = getParentKey(child);\n if (parentKey in childrenToParents) {\n childrenToParents[parentKey].push(child);\n } else {\n childrenToParents[parentKey] = [child];\n }\n }\n if (!(rootKey in childrenToParents)) {\n return [];\n }\n const trav = (parent) => {\n const parentKey = getKey(parent);\n if (parentKey in childrenToParents) {\n return {\n ...parent,\n children: childrenToParents[parentKey].map((child) => trav(child))\n };\n }\n return { ...parent };\n };\n return childrenToParents[rootKey].map((child) => trav(child));\n};\nconst isDescendant = (older, younger) => {\n return !!older.children && typeof older.children !== \"function\" && older.children.some(\n (child) => child === younger || isDescendant(child, younger)\n );\n};\nconst getDepth = (node, depth = 0) => {\n if (!node.children) {\n return depth;\n }\n if (typeof node.children === \"function\") {\n return depth + 1;\n }\n return node.children.reduce(\n (deepest, child) => Math.max(deepest, getDepth(child, depth + 1)),\n depth\n );\n};\nconst find = ({\n getNodeKey,\n treeData,\n searchQuery,\n searchMethod,\n searchFocusOffset,\n expandAllMatchPaths = false,\n expandFocusMatchPaths = true\n}) => {\n let matchCount = 0;\n const trav = ({ isPseudoRoot = false, node, currentIndex, path = [] }) => {\n let matches = [];\n let isSelfMatch = false;\n let hasFocusMatch = false;\n const selfPath = isPseudoRoot ? [] : [...path, getNodeKey({ node, treeIndex: currentIndex })];\n const extraInfo = isPseudoRoot ? void 0 : {\n path: selfPath,\n treeIndex: currentIndex\n };\n const hasChildren = node.children && typeof node.children !== \"function\" && node.children.length > 0;\n if (!isPseudoRoot && searchMethod({ ...extraInfo, node, searchQuery })) {\n if (matchCount === searchFocusOffset) {\n hasFocusMatch = true;\n }\n matchCount += 1;\n isSelfMatch = true;\n }\n let childIndex = currentIndex;\n const newNode = { ...node };\n if (hasChildren) {\n newNode.children = newNode.children.map((child) => {\n const mapResult = trav({\n node: child,\n currentIndex: childIndex + 1,\n path: selfPath\n });\n if (mapResult.node.expanded) {\n childIndex = mapResult.treeIndex;\n } else {\n childIndex += 1;\n }\n if (mapResult.matches.length > 0 || mapResult.hasFocusMatch) {\n matches = [...matches, ...mapResult.matches];\n if (mapResult.hasFocusMatch) {\n hasFocusMatch = true;\n }\n if (expandAllMatchPaths && mapResult.matches.length > 0 || (expandAllMatchPaths || expandFocusMatchPaths) && mapResult.hasFocusMatch) {\n newNode.expanded = true;\n }\n }\n return mapResult.node;\n });\n }\n if (!isPseudoRoot && !newNode.expanded) {\n matches = matches.map((match) => ({\n ...match,\n treeIndex: void 0\n }));\n }\n if (isSelfMatch) {\n matches = [{ ...extraInfo, node: newNode }, ...matches];\n }\n return {\n node: matches.length > 0 ? newNode : node,\n matches,\n hasFocusMatch,\n treeIndex: childIndex\n };\n };\n const result = trav({\n node: { children: treeData },\n isPseudoRoot: true,\n currentIndex: -1\n });\n return {\n matches: result.matches,\n treeData: result.node.children\n };\n};\n\nconst classnames = (...classes) => classes.filter(Boolean).join(\" \");\n\nconst defaultProps$3 = {\n isSearchMatch: false,\n isSearchFocus: false,\n canDrag: false,\n toggleChildrenVisibility: void 0,\n buttons: [],\n className: \"\",\n style: {},\n parentNode: void 0,\n draggedNode: void 0,\n canDrop: false,\n title: void 0,\n subtitle: void 0,\n rowDirection: \"ltr\"\n};\nconst NodeRendererDefault = function(props) {\n props = { ...defaultProps$3, ...props };\n const {\n scaffoldBlockPxWidth,\n toggleChildrenVisibility,\n connectDragPreview,\n connectDragSource,\n isDragging,\n canDrop,\n canDrag,\n node,\n title,\n subtitle,\n draggedNode,\n path,\n treeIndex,\n isSearchMatch,\n isSearchFocus,\n buttons,\n className,\n style,\n didDrop,\n treeId: _treeId,\n isOver: _isOver,\n // Not needed, but preserved for other renderers\n parentNode: _parentNode,\n // Needed for dndManager\n rowDirection,\n ...otherProps\n } = props;\n const nodeTitle = title || node.title;\n const nodeSubtitle = subtitle || node.subtitle;\n const rowDirectionClass = rowDirection === \"rtl\" ? \"rst__rtl\" : void 0;\n let handle;\n if (canDrag) {\n handle = typeof node.children === \"function\" && node.expanded ? /* @__PURE__ */ jsx(\"div\", { className: \"rst__loadingHandle\", children: /* @__PURE__ */ jsx(\"div\", { className: \"rst__loadingCircle\", children: Array.from({ length: 12 }).map((_, index) => /* @__PURE__ */ jsx(\n \"div\",\n {\n className: classnames(\n \"rst__loadingCirclePoint\",\n rowDirectionClass ?? \"\"\n )\n },\n index\n )) }) }) : connectDragSource(/* @__PURE__ */ jsx(\"div\", { className: \"rst__moveHandle\" }), {\n dropEffect: \"copy\"\n });\n }\n const isDraggedDescendant = draggedNode && isDescendant(draggedNode, node);\n const isLandingPadActive = !didDrop && isDragging;\n let buttonStyle = { left: -0.5 * scaffoldBlockPxWidth, right: 0 };\n if (rowDirection === \"rtl\") {\n buttonStyle = { right: -0.5 * scaffoldBlockPxWidth, left: 0 };\n }\n return /* @__PURE__ */ jsxs(\"div\", { style: { height: \"100%\" }, ...otherProps, children: [\n toggleChildrenVisibility && node.children && (node.children.length > 0 || typeof node.children === \"function\") && /* @__PURE__ */ jsxs(\"div\", { children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n type: \"button\",\n \"aria-label\": node.expanded ? \"Collapse\" : \"Expand\",\n className: classnames(\n node.expanded ? \"rst__collapseButton\" : \"rst__expandButton\",\n rowDirectionClass ?? \"\"\n ),\n style: buttonStyle,\n onClick: () => toggleChildrenVisibility({\n node,\n path,\n treeIndex\n })\n }\n ),\n node.expanded && !isDragging && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: { width: scaffoldBlockPxWidth },\n className: classnames(\n \"rst__lineChildren\",\n rowDirectionClass ?? \"\"\n )\n }\n )\n ] }),\n /* @__PURE__ */ jsx(\"div\", { className: classnames(\"rst__rowWrapper\", rowDirectionClass ?? \"\"), children: connectDragPreview(\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: classnames(\n \"rst__row\",\n isLandingPadActive ? \"rst__rowLandingPad\" : \"\",\n isLandingPadActive && !canDrop ? \"rst__rowCancelPad\" : \"\",\n isSearchMatch ? \"rst__rowSearchMatch\" : \"\",\n isSearchFocus ? \"rst__rowSearchFocus\" : \"\",\n rowDirectionClass ?? \"\",\n className ?? \"\"\n ),\n style: {\n opacity: isDraggedDescendant ? 0.5 : 1,\n ...style\n },\n children: [\n handle,\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: classnames(\n \"rst__rowContents\",\n canDrag ? \"\" : \"rst__rowContentsDragDisabled\",\n rowDirectionClass ?? \"\"\n ),\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: classnames(\n \"rst__rowLabel\",\n rowDirectionClass ?? \"\"\n ),\n children: [\n /* @__PURE__ */ jsx(\n \"span\",\n {\n className: classnames(\n \"rst__rowTitle\",\n node.subtitle ? \"rst__rowTitleWithSubtitle\" : \"\"\n ),\n children: typeof nodeTitle === \"function\" ? nodeTitle({\n node,\n path,\n treeIndex\n }) : nodeTitle\n }\n ),\n nodeSubtitle && /* @__PURE__ */ jsx(\"span\", { className: \"rst__rowSubtitle\", children: typeof nodeSubtitle === \"function\" ? nodeSubtitle({\n node,\n path,\n treeIndex\n }) : nodeSubtitle })\n ]\n }\n ),\n /* @__PURE__ */ jsx(\"div\", { className: \"rst__rowToolbar\", children: buttons == null ? void 0 : buttons.map((btn, index) => /* @__PURE__ */ jsx(\"div\", { className: \"rst__toolbarButton\", children: btn }, index)) })\n ]\n }\n )\n ]\n }\n )\n ) })\n ] });\n};\n\nconst defaultProps$2 = {\n isOver: false,\n canDrop: false\n};\nconst PlaceholderRendererDefault = function(props) {\n props = { ...defaultProps$2, ...props };\n const { canDrop, isOver } = props;\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n className: classnames(\n \"rst__placeholder\",\n canDrop ? \"rst__placeholderLandingPad\" : \"\",\n canDrop && !isOver ? \"rst__placeholderCancelPad\" : \"\"\n )\n }\n );\n};\n\nconst defaultProps$1 = {\n swapFrom: void 0,\n swapDepth: void 0,\n swapLength: void 0,\n canDrop: false,\n draggedNode: void 0,\n rowDirection: \"ltr\"\n};\nclass TreeNodeComponent extends Component {\n render() {\n const props = { ...defaultProps$1, ...this.props };\n const {\n children,\n listIndex,\n swapFrom,\n swapLength,\n swapDepth,\n scaffoldBlockPxWidth,\n lowerSiblingCounts,\n connectDropTarget,\n isOver,\n draggedNode,\n canDrop,\n treeIndex,\n rowHeight,\n treeId: _treeId,\n // Delete from otherProps\n getPrevRow: _getPrevRow,\n // Delete from otherProps\n node: _node,\n // Delete from otherProps\n path: _path,\n // Delete from otherProps\n rowDirection,\n ...otherProps\n } = props;\n const rowDirectionClass = rowDirection === \"rtl\" ? \"rst__rtl\" : void 0;\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n for (const [i, lowerSiblingCount] of lowerSiblingCounts.entries()) {\n let lineClass = \"\";\n if (lowerSiblingCount > 0) {\n if (listIndex === 0) {\n lineClass = \"rst__lineHalfHorizontalRight rst__lineHalfVerticalBottom\";\n } else if (i === scaffoldBlockCount - 1) {\n lineClass = \"rst__lineHalfHorizontalRight rst__lineFullVertical\";\n } else {\n lineClass = \"rst__lineFullVertical\";\n }\n } else if (listIndex === 0) {\n lineClass = \"rst__lineHalfHorizontalRight\";\n } else if (i === scaffoldBlockCount - 1) {\n lineClass = \"rst__lineHalfVerticalTop rst__lineHalfHorizontalRight\";\n }\n scaffold.push(\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: { width: scaffoldBlockPxWidth },\n className: classnames(\n \"rst__lineBlock\",\n lineClass,\n rowDirectionClass ?? \"\"\n )\n },\n `pre_${1 + i}`\n )\n );\n if (treeIndex !== listIndex && i === swapDepth) {\n let highlightLineClass = \"\";\n if (listIndex === swapFrom + swapLength - 1) {\n highlightLineClass = \"rst__highlightBottomLeftCorner\";\n } else if (treeIndex === swapFrom) {\n highlightLineClass = \"rst__highlightTopLeftCorner\";\n } else {\n highlightLineClass = \"rst__highlightLineVertical\";\n }\n const style2 = rowDirection === \"rtl\" ? {\n width: scaffoldBlockPxWidth,\n right: scaffoldBlockPxWidth * i\n } : {\n width: scaffoldBlockPxWidth,\n left: scaffoldBlockPxWidth * i\n };\n scaffold.push(\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: style2,\n className: classnames(\n \"rst__absoluteLineBlock\",\n highlightLineClass,\n rowDirectionClass ?? \"\"\n )\n },\n i\n )\n );\n }\n }\n const style = rowDirection === \"rtl\" ? { right: scaffoldBlockPxWidth * scaffoldBlockCount } : { left: scaffoldBlockPxWidth * scaffoldBlockCount };\n let calculatedRowHeight = rowHeight;\n if (typeof rowHeight === \"function\") {\n calculatedRowHeight = rowHeight(treeIndex, _node, _path);\n }\n return connectDropTarget(\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ...otherProps,\n style: { height: `${calculatedRowHeight}px` },\n className: classnames(\"rst__node\", rowDirectionClass ?? \"\"),\n ref: (node) => this.node = node,\n children: [\n scaffold,\n /* @__PURE__ */ jsx(\"div\", { className: \"rst__nodeContent\", style, children: Children.map(\n children,\n (child) => cloneElement(child, {\n isOver,\n canDrop,\n draggedNode\n })\n ) })\n ]\n }\n )\n );\n }\n}\n\nconst defaultProps = {\n canDrop: false,\n draggedNode: void 0\n};\nconst TreePlaceholder = (props) => {\n props = { ...defaultProps, ...props };\n const { children, connectDropTarget, treeId, drop, ...otherProps } = props;\n return connectDropTarget(\n /* @__PURE__ */ jsx(\"div\", { children: Children.map(\n children,\n (child) => cloneElement(child, {\n ...otherProps\n })\n ) })\n );\n};\n\nlet rafId = 0;\nconst nodeDragSourcePropInjection = (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n didDrop: monitor.didDrop()\n});\nconst wrapSource = (el, startDrag, endDrag, dndType) => {\n const nodeDragSource = {\n beginDrag: (props) => {\n startDrag(props);\n return {\n node: props.node,\n parentNode: props.parentNode,\n path: props.path,\n treeIndex: props.treeIndex,\n treeId: props.treeId\n };\n },\n endDrag: (props, monitor) => {\n endDrag(monitor.getDropResult());\n },\n isDragging: (props, monitor) => {\n const dropTargetNode = monitor.getItem().node;\n const draggedNode = props.node;\n return draggedNode === dropTargetNode;\n }\n };\n return DragSource(dndType, nodeDragSource, nodeDragSourcePropInjection)(el);\n};\nconst propInjection = (connect, monitor) => {\n const dragged = monitor.getItem();\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n draggedNode: dragged ? dragged.node : void 0\n };\n};\nconst wrapPlaceholder = (el, treeId, drop, dndType) => {\n const placeholderDropTarget = {\n drop: (dropTargetProps, monitor) => {\n const { node, path, treeIndex } = monitor.getItem();\n const result = {\n node,\n path,\n treeIndex,\n treeId,\n minimumTreeIndex: 0,\n depth: 0\n };\n drop(result);\n return result;\n }\n };\n return DropTarget(dndType, placeholderDropTarget, propInjection)(el);\n};\nconst getTargetDepth = (dropTargetProps, monitor, component, canNodeHaveChildren, treeId, maxDepth) => {\n let dropTargetDepth = 0;\n const rowAbove = dropTargetProps.getPrevRow();\n if (rowAbove) {\n const { node } = rowAbove;\n let { path } = rowAbove;\n const aboveNodeCannotHaveChildren = !canNodeHaveChildren(node);\n if (aboveNodeCannotHaveChildren) {\n path = path.slice(0, -1);\n }\n dropTargetDepth = Math.min(path.length, dropTargetProps.path.length);\n }\n let blocksOffset;\n let dragSourceInitialDepth = (monitor.getItem().path || []).length;\n if (monitor.getItem().treeId === treeId) {\n const direction = dropTargetProps.rowDirection === \"rtl\" ? -1 : 1;\n blocksOffset = Math.round(\n direction * monitor.getDifferenceFromInitialOffset().x / dropTargetProps.scaffoldBlockPxWidth\n );\n } else {\n dragSourceInitialDepth = 0;\n if (component) {\n const relativePosition = component.node.getBoundingClientRect();\n const leftShift = monitor.getSourceClientOffset().x - relativePosition.left;\n blocksOffset = Math.round(\n leftShift / dropTargetProps.scaffoldBlockPxWidth\n );\n } else {\n blocksOffset = dropTargetProps.path.length;\n }\n }\n let targetDepth = Math.min(\n dropTargetDepth,\n Math.max(0, dragSourceInitialDepth + blocksOffset - 1)\n );\n if (maxDepth !== void 0 && maxDepth !== void 0) {\n const draggedNode = monitor.getItem().node;\n const draggedChildDepth = getDepth(draggedNode);\n targetDepth = Math.max(\n 0,\n Math.min(targetDepth, maxDepth - draggedChildDepth - 1)\n );\n }\n return targetDepth;\n};\nconst canDrop = (dropTargetProps, monitor, canNodeHaveChildren, treeId, maxDepth, treeRefcanDrop, draggingTreeData, treeReftreeData, getNodeKey) => {\n if (!monitor.isOver()) {\n return false;\n }\n const rowAbove = dropTargetProps.getPrevRow();\n const abovePath = rowAbove ? rowAbove.path : [];\n const aboveNode = rowAbove ? rowAbove.node : {};\n const targetDepth = getTargetDepth(\n dropTargetProps,\n monitor,\n void 0,\n canNodeHaveChildren,\n treeId,\n maxDepth\n );\n if (targetDepth >= abovePath.length && typeof aboveNode.children === \"function\") {\n return false;\n }\n if (typeof treeRefcanDrop === \"function\") {\n const { node } = monitor.getItem();\n return treeRefcanDrop({\n node,\n prevPath: monitor.getItem().path,\n prevParent: monitor.getItem().parentNode,\n prevTreeIndex: monitor.getItem().treeIndex,\n // Equals -1 when dragged from external tree\n nextPath: dropTargetProps.children.props.path,\n nextParent: dropTargetProps.children.props.parentNode,\n nextTreeIndex: dropTargetProps.children.props.treeIndex\n });\n }\n return true;\n};\nconst wrapTarget = (el, canNodeHaveChildren, treeId, maxDepth, treeRefcanDrop, drop, dragHover, dndType, draggingTreeData, treeReftreeData, getNodeKey) => {\n const nodeDropTarget = {\n drop: (dropTargetProps, monitor, component) => {\n const result = {\n node: monitor.getItem().node,\n path: monitor.getItem().path,\n treeIndex: monitor.getItem().treeIndex,\n treeId,\n minimumTreeIndex: dropTargetProps.treeIndex,\n depth: getTargetDepth(\n dropTargetProps,\n monitor,\n component,\n canNodeHaveChildren,\n treeId,\n maxDepth\n )\n };\n drop(result);\n return result;\n },\n hover: (dropTargetProps, monitor, component) => {\n const targetDepth = getTargetDepth(\n dropTargetProps,\n monitor,\n component,\n canNodeHaveChildren,\n treeId,\n maxDepth\n );\n const draggedNode = monitor.getItem().node;\n const needsRedraw = (\n // Redraw if hovered above different nodes\n dropTargetProps.node !== draggedNode || // Or hovered above the same node but at a different depth\n targetDepth !== dropTargetProps.path.length - 1\n );\n if (!needsRedraw) {\n return;\n }\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(() => {\n const item = monitor.getItem();\n if (!item || !monitor.isOver()) {\n return;\n }\n dragHover({\n node: draggedNode,\n path: item.path,\n minimumTreeIndex: dropTargetProps.listIndex,\n depth: targetDepth\n });\n });\n },\n canDrop: (dropTargetProps, monitor) => canDrop(\n dropTargetProps,\n monitor,\n canNodeHaveChildren,\n treeId,\n maxDepth,\n treeRefcanDrop)\n };\n return DropTarget(dndType, nodeDropTarget, propInjection)(el);\n};\n\nconst slideRows = (rows, fromIndex, toIndex, count = 1) => {\n const rowsWithoutMoved = [\n ...rows.slice(0, fromIndex),\n ...rows.slice(fromIndex + count)\n ];\n return [\n ...rowsWithoutMoved.slice(0, toIndex),\n ...rows.slice(fromIndex, fromIndex + count),\n ...rowsWithoutMoved.slice(toIndex)\n ];\n};\n\nconst memoize = (f) => {\n let savedArgsArray = [];\n let savedKeysArray = [];\n let savedResult;\n return (args) => {\n const keysArray = Object.keys(args).sort();\n const argsArray = keysArray.map((key) => args[key]);\n if (argsArray.length !== savedArgsArray.length || argsArray.some((arg, index) => arg !== savedArgsArray[index]) || keysArray.some((key, index) => key !== savedKeysArray[index])) {\n savedArgsArray = argsArray;\n savedKeysArray = keysArray;\n savedResult = f(args);\n }\n return savedResult;\n };\n};\nconst memoizedInsertNode = memoize(insertNode);\nconst memoizedGetFlatDataFromTree = memoize(getFlatDataFromTree);\nconst memoizedGetDescendantCount = memoize(getDescendantCount);\n\nlet treeIdCounter = 1;\nconst mergeTheme = (props) => {\n const merged = {\n ...props,\n style: { ...props.theme.style, ...props.style },\n innerStyle: { ...props.theme.innerStyle, ...props.innerStyle }\n };\n const overridableDefaults = {\n nodeContentRenderer: NodeRendererDefault,\n placeholderRenderer: PlaceholderRendererDefault,\n scaffoldBlockPxWidth: 44,\n slideRegionSize: 100,\n rowHeight: 62,\n treeNodeRenderer: TreeNodeComponent\n };\n for (const propKey of Object.keys(overridableDefaults)) {\n if (props[propKey] === void 0) {\n merged[propKey] = props.theme[propKey] === void 0 ? overridableDefaults[propKey] : props.theme[propKey];\n }\n }\n return merged;\n};\nclass ReactSortableTree extends Component {\n constructor(props) {\n super(props);\n this.startDrag = ({ path }) => {\n this.setState((prevState) => {\n const {\n treeData: draggingTreeData,\n node: draggedNode,\n treeIndex: draggedMinimumTreeIndex\n } = removeNode({\n treeData: prevState.instanceProps.treeData,\n path,\n getNodeKey: this.props.getNodeKey\n });\n return {\n draggingTreeData,\n draggedNode,\n draggedDepth: path.length - 1,\n draggedMinimumTreeIndex,\n dragging: true\n };\n });\n };\n this.dragHover = ({\n node: draggedNode,\n depth: draggedDepth,\n minimumTreeIndex: draggedMinimumTreeIndex\n }) => {\n if (this.state.draggedDepth === draggedDepth && this.state.draggedMinimumTreeIndex === draggedMinimumTreeIndex) {\n return;\n }\n this.setState(({ draggingTreeData, instanceProps }) => {\n const newDraggingTreeData = draggingTreeData || instanceProps.treeData;\n const addedResult = memoizedInsertNode({\n treeData: newDraggingTreeData,\n newNode: draggedNode,\n depth: draggedDepth,\n minimumTreeIndex: draggedMinimumTreeIndex,\n expandParent: true,\n getNodeKey: this.props.getNodeKey\n });\n const rows = this.getRows(addedResult.treeData);\n const expandedParentPath = rows[addedResult.treeIndex].path;\n return {\n draggedNode,\n draggedDepth,\n draggedMinimumTreeIndex,\n draggingTreeData: changeNodeAtPath({\n treeData: newDraggingTreeData,\n path: expandedParentPath.slice(0, -1),\n newNode: ({ node }) => ({ ...node, expanded: true }),\n getNodeKey: this.props.getNodeKey\n }),\n // reset the scroll focus so it doesn't jump back\n // to a search result while dragging\n searchFocusTreeIndex: void 0,\n dragging: true\n };\n });\n };\n this.endDrag = (dropResult) => {\n const { instanceProps } = this.state;\n if (!dropResult) {\n this.setState({\n draggingTreeData: void 0,\n draggedNode: void 0,\n draggedMinimumTreeIndex: void 0,\n draggedDepth: void 0,\n dragging: false\n });\n } else if (dropResult.treeId !== this.treeId) {\n const { node, path, treeIndex } = dropResult;\n let shouldCopy = this.props.shouldCopyOnOutsideDrop;\n if (typeof shouldCopy === \"function\") {\n shouldCopy = shouldCopy({\n node,\n prevTreeIndex: treeIndex,\n prevPath: path\n });\n }\n let treeData = this.state.draggingTreeData || instanceProps.treeData;\n if (shouldCopy) {\n treeData = changeNodeAtPath({\n treeData: instanceProps.treeData,\n // use treeData unaltered by the drag operation\n path,\n newNode: ({ node: copyNode }) => ({ ...copyNode }),\n // create a shallow copy of the node\n getNodeKey: this.props.getNodeKey\n });\n }\n this.props.onChange(treeData);\n this.props.onMoveNode({\n treeData,\n node,\n treeIndex: void 0,\n path: void 0,\n nextPath: void 0,\n nextTreeIndex: void 0,\n prevPath: path,\n prevTreeIndex: treeIndex\n });\n }\n };\n this.drop = (dropResult) => {\n this.moveNode(dropResult);\n };\n this.canNodeHaveChildren = (node) => {\n const { canNodeHaveChildren } = this.props;\n if (canNodeHaveChildren) {\n return canNodeHaveChildren(node);\n }\n return true;\n };\n this.listRef = props.virtuosoRef || React.createRef();\n this.listProps = props.virtuosoProps || {};\n const { dndType, nodeContentRenderer, treeNodeRenderer, slideRegionSize } = mergeTheme(props);\n this.treeId = `rst__${treeIdCounter}`;\n treeIdCounter += 1;\n this.dndType = dndType || this.treeId;\n this.nodeContentRenderer = wrapSource(\n nodeContentRenderer,\n this.startDrag,\n this.endDrag,\n this.dndType\n );\n this.treePlaceholderRenderer = wrapPlaceholder(\n TreePlaceholder,\n this.treeId,\n this.drop,\n this.dndType\n );\n this.scrollZoneVirtualList = (createScrollingComponent || withScrolling)(\n React.forwardRef((props2, ref) => {\n const { dragDropManager, rowHeight, ...otherProps } = props2;\n return /* @__PURE__ */ jsx(\n Virtuoso,\n {\n ref: this.listRef,\n scrollerRef: (scrollContainer) => ref.current = scrollContainer,\n ...otherProps\n }\n );\n })\n );\n this.vStrength = createVerticalStrength(slideRegionSize);\n this.hStrength = createHorizontalStrength(slideRegionSize);\n this.state = {\n draggingTreeData: void 0,\n draggedNode: void 0,\n draggedMinimumTreeIndex: void 0,\n draggedDepth: void 0,\n searchMatches: [],\n searchFocusTreeIndex: void 0,\n dragging: false,\n // props that need to be used in gDSFP or static functions will be stored here\n instanceProps: {\n treeData: [],\n ignoreOneTreeUpdate: false,\n searchQuery: void 0,\n searchFocusOffset: void 0\n }\n };\n this.treeNodeRenderer = wrapTarget(\n treeNodeRenderer,\n this.canNodeHaveChildren,\n this.treeId,\n this.props.maxDepth,\n this.props.canDrop,\n this.drop,\n this.dragHover,\n this.dndType,\n this.state.draggingTreeData,\n this.props.treeData,\n this.props.getNodeKey\n );\n this.toggleChildrenVisibility = this.toggleChildrenVisibility.bind(this);\n this.moveNode = this.moveNode.bind(this);\n this.startDrag = this.startDrag.bind(this);\n this.dragHover = this.dragHover.bind(this);\n this.endDrag = this.endDrag.bind(this);\n this.drop = this.drop.bind(this);\n this.handleDndMonitorChange = this.handleDndMonitorChange.bind(this);\n }\n // returns the new state after search\n static search(props, state, seekIndex, expand, singleSearch) {\n const {\n onChange,\n getNodeKey,\n searchFinishCallback,\n searchQuery,\n searchMethod,\n searchFocusOffset,\n onlyExpandSearchedNodes\n } = props;\n const { instanceProps } = state;\n if (!searchQuery && !searchMethod) {\n if (searchFinishCallback) {\n searchFinishCallback([]);\n }\n return { searchMatches: [] };\n }\n const newState = { instanceProps: {} };\n const { treeData: expandedTreeData, matches: searchMatches } = find({\n getNodeKey,\n treeData: onlyExpandSearchedNodes ? toggleExpandedForAll({\n treeData: instanceProps.treeData,\n expanded: false\n }) : instanceProps.treeData,\n searchQuery,\n searchMethod: searchMethod || defaultSearchMethod,\n searchFocusOffset,\n expandAllMatchPaths: expand && !singleSearch,\n expandFocusMatchPaths: !!expand\n });\n if (expand) {\n newState.instanceProps.ignoreOneTreeUpdate = true;\n onChange(expandedTreeData);\n }\n if (searchFinishCallback) {\n searchFinishCallback(searchMatches);\n }\n let searchFocusTreeIndex;\n if (seekIndex && searchFocusOffset !== void 0 && searchFocusOffset < searchMatches.length) {\n searchFocusTreeIndex = searchMatches[searchFocusOffset].treeIndex;\n }\n newState.searchMatches = searchMatches;\n newState.searchFocusTreeIndex = searchFocusTreeIndex;\n return newState;\n }\n // Load any children in the tree that are given by a function\n // calls the onChange callback on the new treeData\n static loadLazyChildren(props, state) {\n const { instanceProps } = state;\n walk({\n treeData: instanceProps.treeData,\n getNodeKey: props.getNodeKey,\n callback: ({ node, path, lowerSiblingCounts, treeIndex }) => {\n if (node.children && typeof node.children === \"function\" && (node.expanded || props.loadCollapsedLazyChildren)) {\n node.children({\n node,\n path,\n lowerSiblingCounts,\n treeIndex,\n // Provide a helper to append the new data when it is received\n done: (childrenArray) => props.onChange(\n changeNodeAtPath({\n treeData: instanceProps.treeData,\n path,\n newNode: ({ node: oldNode }) => (\n // Only replace the old node if it's the one we set off to find children\n // for in the first place\n oldNode === node ? {\n ...oldNode,\n children: childrenArray\n } : oldNode\n ),\n getNodeKey: props.getNodeKey\n })\n )\n });\n }\n }\n });\n }\n componentDidMount() {\n ReactSortableTree.loadLazyChildren(this.props, this.state);\n const stateUpdate = ReactSortableTree.search(\n this.props,\n this.state,\n true,\n true,\n false\n );\n this.setState(stateUpdate);\n this.clearMonitorSubscription = this.props.dragDropManager.getMonitor().subscribeToStateChange(this.handleDndMonitorChange);\n }\n static getDerivedStateFromProps(nextProps, prevState) {\n const { instanceProps } = prevState;\n const newState = {};\n const newInstanceProps = { ...instanceProps };\n const isTreeDataEqual = isEqual(instanceProps.treeData, nextProps.treeData);\n newInstanceProps.treeData = nextProps.treeData;\n if (!isTreeDataEqual) {\n if (instanceProps.ignoreOneTreeUpdate) {\n newInstanceProps.ignoreOneTreeUpdate = false;\n } else {\n newState.searchFocusTreeIndex = void 0;\n ReactSortableTree.loadLazyChildren(nextProps, prevState);\n Object.assign(\n newState,\n ReactSortableTree.search(nextProps, prevState, false, false, false)\n );\n }\n newState.draggingTreeData = void 0;\n newState.draggedNode = void 0;\n newState.draggedMinimumTreeIndex = void 0;\n newState.draggedDepth = void 0;\n newState.dragging = false;\n } else if (!isEqual(instanceProps.searchQuery, nextProps.searchQuery)) {\n Object.assign(\n newState,\n ReactSortableTree.search(nextProps, prevState, true, true, false)\n );\n } else if (instanceProps.searchFocusOffset !== nextProps.searchFocusOffset) {\n Object.assign(\n newState,\n ReactSortableTree.search(nextProps, prevState, true, true, true)\n );\n }\n newInstanceProps.searchQuery = nextProps.searchQuery;\n newInstanceProps.searchFocusOffset = nextProps.searchFocusOffset;\n newState.instanceProps = { ...newInstanceProps, ...newState.instanceProps };\n return newState;\n }\n // listen to dragging\n componentDidUpdate(prevProps, prevState) {\n if (this.state.dragging !== prevState.dragging && this.props.onDragStateChanged) {\n this.props.onDragStateChanged({\n isDragging: this.state.dragging,\n draggedNode: this.state.draggedNode\n });\n }\n }\n componentWillUnmount() {\n this.clearMonitorSubscription();\n }\n handleDndMonitorChange() {\n const monitor = this.props.dragDropManager.getMonitor();\n if (!monitor.isDragging() && this.state.draggingTreeData) {\n setTimeout(() => {\n this.endDrag();\n });\n }\n }\n getRows(treeData) {\n return memoizedGetFlatDataFromTree({\n ignoreCollapsed: true,\n getNodeKey: this.props.getNodeKey,\n treeData\n });\n }\n toggleChildrenVisibility({ node: targetNode, path }) {\n const { instanceProps } = this.state;\n const treeData = changeNodeAtPath({\n treeData: instanceProps.treeData,\n path,\n newNode: ({ node }) => ({ ...node, expanded: !node.expanded }),\n getNodeKey: this.props.getNodeKey\n });\n this.props.onChange(treeData);\n this.props.onVisibilityToggle({\n treeData,\n node: targetNode,\n expanded: !targetNode.expanded,\n path\n });\n }\n moveNode({\n node,\n path: prevPath,\n treeIndex: prevTreeIndex,\n depth,\n minimumTreeIndex\n }) {\n const {\n treeData,\n treeIndex,\n path,\n parentNode: nextParentNode\n } = insertNode({\n treeData: this.state.draggingTreeData,\n newNode: node,\n depth,\n minimumTreeIndex,\n expandParent: true,\n getNodeKey: this.props.getNodeKey\n });\n this.props.onChange(treeData);\n this.props.onMoveNode({\n treeData,\n node,\n treeIndex,\n path,\n nextPath: path,\n nextTreeIndex: treeIndex,\n prevPath,\n prevTreeIndex,\n nextParentNode\n });\n }\n renderRow(row, { listIndex, style, getPrevRow, matchKeys, swapFrom, swapDepth, swapLength }) {\n const { node, parentNode, path, lowerSiblingCounts, treeIndex } = row;\n const {\n canDrag,\n generateNodeProps,\n scaffoldBlockPxWidth,\n searchFocusOffset,\n rowDirection,\n rowHeight\n } = mergeTheme(this.props);\n const TreeNodeRenderer = this.treeNodeRenderer;\n const NodeContentRenderer = this.nodeContentRenderer;\n const nodeKey = path[path.length - 1];\n const isSearchMatch = nodeKey in matchKeys;\n const isSearchFocus = isSearchMatch && matchKeys[nodeKey] === searchFocusOffset;\n const callbackParams = {\n node,\n parentNode,\n path,\n lowerSiblingCounts,\n treeIndex,\n isSearchMatch,\n isSearchFocus\n };\n const nodeProps = generateNodeProps ? generateNodeProps(callbackParams) : {};\n const rowCanDrag = typeof canDrag === \"function\" ? canDrag(callbackParams) : canDrag;\n const sharedProps = {\n treeIndex,\n scaffoldBlockPxWidth,\n node,\n path,\n treeId: this.treeId,\n rowDirection\n };\n return /* @__PURE__ */ jsx(\n TreeNodeRenderer,\n {\n style,\n rowHeight,\n listIndex,\n getPrevRow,\n lowerSiblingCounts,\n swapFrom,\n swapLength,\n swapDepth,\n ...sharedProps,\n children: /* @__PURE__ */ jsx(\n NodeContentRenderer,\n {\n parentNode,\n isSearchMatch,\n isSearchFocus,\n canDrag: rowCanDrag,\n toggleChildrenVisibility: this.toggleChildrenVisibility,\n ...sharedProps,\n ...nodeProps\n }\n )\n },\n nodeKey\n );\n }\n render() {\n const {\n dragDropManager,\n style,\n className,\n innerStyle,\n placeholderRenderer,\n getNodeKey,\n rowDirection\n } = mergeTheme(this.props);\n const {\n searchMatches,\n searchFocusTreeIndex,\n draggedNode,\n draggedDepth,\n draggedMinimumTreeIndex,\n instanceProps\n } = this.state;\n const treeData = this.state.draggingTreeData || instanceProps.treeData;\n const rowDirectionClass = rowDirection === \"rtl\" ? \"rst__rtl\" : void 0;\n let rows;\n let swapFrom;\n let swapLength;\n if (draggedNode && draggedMinimumTreeIndex !== void 0) {\n const addedResult = memoizedInsertNode({\n treeData,\n newNode: draggedNode,\n depth: draggedDepth,\n minimumTreeIndex: draggedMinimumTreeIndex,\n expandParent: true,\n getNodeKey\n });\n const swapTo = draggedMinimumTreeIndex;\n swapFrom = addedResult.treeIndex;\n swapLength = 1 + memoizedGetDescendantCount({ node: draggedNode });\n rows = slideRows(\n this.getRows(addedResult.treeData),\n swapFrom,\n swapTo,\n swapLength\n );\n } else {\n rows = this.getRows(treeData);\n }\n const matchKeys = {};\n for (const [i, { path }] of searchMatches.entries()) {\n matchKeys[path[path.length - 1]] = i;\n }\n if (searchFocusTreeIndex !== void 0) {\n this.listRef.current.scrollToIndex({\n index: searchFocusTreeIndex,\n align: \"center\"\n });\n }\n let containerStyle = style;\n let list;\n if (rows.length === 0) {\n const Placeholder = this.treePlaceholderRenderer;\n const PlaceholderContent = placeholderRenderer;\n list = /* @__PURE__ */ jsx(Placeholder, { treeId: this.treeId, drop: this.drop, children: /* @__PURE__ */ jsx(PlaceholderContent, {}) });\n } else {\n containerStyle = { height: \"100%\", ...containerStyle };\n const ScrollZoneVirtualList = this.scrollZoneVirtualList;\n list = /* @__PURE__ */ jsx(\n ScrollZoneVirtualList,\n {\n data: rows,\n dragDropManager,\n verticalStrength: this.vStrength,\n horizontalStrength: this.hStrength,\n className: \"rst__virtualScrollOverride\",\n style: innerStyle,\n itemContent: (index) => this.renderRow(rows[index], {\n listIndex: index,\n getPrevRow: () => rows[index - 1] || void 0,\n matchKeys,\n swapFrom,\n swapDepth: draggedDepth,\n swapLength\n }),\n ...this.listProps\n }\n );\n }\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n className: classnames(\"rst__tree\", className, rowDirectionClass),\n style: containerStyle,\n children: list\n }\n );\n }\n}\nReactSortableTree.defaultProps = {\n canDrag: true,\n canDrop: void 0,\n canNodeHaveChildren: () => true,\n className: \"\",\n dndType: void 0,\n generateNodeProps: void 0,\n getNodeKey: defaultGetNodeKey,\n innerStyle: {},\n maxDepth: void 0,\n treeNodeRenderer: void 0,\n nodeContentRenderer: void 0,\n onMoveNode: () => {\n },\n onVisibilityToggle: () => {\n },\n placeholderRenderer: void 0,\n scaffoldBlockPxWidth: void 0,\n searchFinishCallback: void 0,\n searchFocusOffset: void 0,\n searchMethod: void 0,\n searchQuery: void 0,\n shouldCopyOnOutsideDrop: false,\n slideRegionSize: void 0,\n style: {},\n theme: {},\n onDragStateChanged: () => {\n },\n onlyExpandSearchedNodes: false,\n rowDirection: \"ltr\",\n debugMode: false,\n overscan: 0\n};\nconst SortableTreeWithoutDndContext = function(props) {\n return /* @__PURE__ */ jsx(DndContext.Consumer, { children: ({ dragDropManager }) => dragDropManager === void 0 ? void 0 : /* @__PURE__ */ jsx(ReactSortableTree, { ...props, dragDropManager }) });\n};\nconst SortableTree = function(props) {\n return /* @__PURE__ */ jsx(DndProvider, { debugMode: props.debugMode, backend: HTML5Backend, children: /* @__PURE__ */ jsx(SortableTreeWithoutDndContext, { ...props }) });\n};\n\nexport { SortableTreeWithoutDndContext, addNodeUnderParent, changeNodeAtPath, SortableTree as default, defaultGetNodeKey, defaultSearchMethod, find, getDepth, getDescendantCount, getFlatDataFromTree, getNodeAtPath, getTreeFromFlatData, getVisibleNodeCount, getVisibleNodeInfoAtIndex, insertNode, isDescendant, map, removeNode, removeNodeAtPath, toggleExpandedForAll, walk };\n","export function unprefixId(_id = ''): string {\n return _id.replace('drafts.', '')\n}\n\nexport function isDraft(_id = ''): boolean {\n return _id.startsWith('drafts.')\n}\n","import * as React from 'react'\nimport {SanityDocument, useClient} from 'sanity'\nimport {AllItems, TreeInputOptions} from '../types'\nimport {isDraft, unprefixId} from '../utils/idUtils'\n\nfunction getDeskFilter({referenceTo, referenceOptions}: TreeInputOptions): {\n filter: string\n params: Record<string, unknown>\n} {\n const filterParts: string[] = ['_type in $docTypes']\n\n if (referenceOptions?.filter) {\n filterParts.push(referenceOptions.filter)\n }\n\n return {\n filter: filterParts.join(' && '),\n params: {\n ...(referenceOptions?.filterParams || {}),\n docTypes: referenceTo.map((schemaType) => schemaType)\n }\n }\n}\n\ntype Status = 'loading' | 'success' | 'error'\n\ntype ACTIONTYPE =\n | {type: 'addOrEditItem'; item: SanityDocument}\n | {type: 'removeItem'; itemId: string}\n | {type: 'setInitialData'; items: SanityDocument[]}\n\nfunction updateItemInState(state: AllItems, item: SanityDocument): AllItems {\n const newState = {...state}\n const publishedId = unprefixId(item._id)\n newState[publishedId] = {\n ...(newState[publishedId] || {}),\n [isDraft(item._id) ? 'draft' : 'published']: item\n }\n return newState\n}\n\nfunction allItemsReducer(state: AllItems, action: ACTIONTYPE): AllItems {\n if (action.type === 'addOrEditItem' && action.item?._id) {\n return updateItemInState(state, action.item)\n }\n\n if (action.type === 'removeItem') {\n const publishedId = unprefixId(action.itemId)\n return {\n ...state,\n [publishedId]: isDraft(action.itemId)\n ? // If a draft, keep only published\n {\n published: state[publishedId]?.published\n }\n : {\n draft: state[publishedId]?.draft\n }\n }\n }\n\n if (action.type === 'setInitialData') {\n return action.items.reduce(updateItemInState, {} as AllItems)\n }\n return state\n}\n\nexport default function useAllItems(options: TreeInputOptions): {\n status: Status\n allItems: AllItems\n} {\n const client = useClient({\n apiVersion: '2021-09-01'\n })\n const [status, setStatus] = React.useState<Status>('loading')\n const [allItems, dispatch] = React.useReducer(allItemsReducer, {})\n\n function handleListener(event: any) {\n if (event.type !== 'mutation') {\n return\n }\n\n if (event.result) {\n dispatch({type: 'addOrEditItem', item: event.result})\n } else {\n dispatch({type: 'removeItem', itemId: event.documentId})\n }\n }\n\n function handleFirstLoad(items: SanityDocument[]) {\n dispatch({type: 'setInitialData', items})\n setStatus('success')\n }\n\n React.useEffect(() => {\n const {filter, params} = getDeskFilter(options)\n const query = `*[${filter}] {\n _id,\n _type,\n _updatedAt,\n }`\n client\n .fetch<SanityDocument[]>(query, params)\n .then(handleFirstLoad)\n .catch(() => {\n setStatus('error')\n })\n\n const listener = client.listen(query, params).subscribe(handleListener)\n return () => {\n listener.unsubscribe()\n }\n }, [])\n\n return {\n status,\n allItems\n }\n}\n","import * as React from 'react'\nimport useAllItems from './useAllItems'\nimport useTreeOperationsProvider from './useTreeOperationsProvider'\n\ntype ContextValue = ReturnType<typeof useTreeOperationsProvider> & {\n allItemsStatus: ReturnType<typeof useAllItems>['status']\n}\n\nfunction placeholder() {\n // no-op\n}\n\nexport const TreeOperationsContext = React.createContext<ContextValue>({\n addItem: placeholder,\n duplicateItem: placeholder,\n removeItem: placeholder,\n handleMovedNode: placeholder,\n moveItemDown: placeholder,\n moveItemUp: placeholder,\n allItemsStatus: 'loading',\n})\n\nexport default function useTreeOperations(): ContextValue {\n return React.useContext(TreeOperationsContext)\n}\n","import {EditIcon, PublishIcon} from '@sanity/icons'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport * as React from 'react'\nimport {SanityDocument, TextWithTone, useTimeAgo} from 'sanity'\nimport {DocumentPair} from '../types'\n\nexport function TimeAgo({time}: {time: string | Date}) {\n const timeAgo = useTimeAgo(time)\n\n return (\n <span title={timeAgo}>\n {timeAgo}\n {timeAgo.toLowerCase().trim().startsWith('just now') ? '' : ' ago'}\n </span>\n )\n}\n\nconst PublishedStatus = ({document}: {document?: SanityDocument | null}) => (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Published {document._updatedAt && <TimeAgo time={document._updatedAt} />}</>\n ) : (\n <>Not published</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"positive\" dimmed={!document} muted={!document} size={1}>\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n)\n\nconst DraftStatus = ({document}: {document?: SanityDocument | null}) => (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Edited {document?._updatedAt && <TimeAgo time={document?._updatedAt} />}</>\n ) : (\n <>No unpublished edits</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"caution\" dimmed={!document} muted={!document} size={1}>\n <EditIcon />\n </TextWithTone>\n </Tooltip>\n)\n\n// Adapted from @sanity\\desk-tool\\src\\components\\paneItem\\helpers.tsx\nconst DocumentPreviewStatus: React.FC<DocumentPair> = ({draft, published}) => {\n return (\n <Inline space={4}>\n <PublishedStatus document={published} />\n <DraftStatus document={draft} />\n </Inline>\n )\n}\n\nexport default DocumentPreviewStatus\n","import {HelpCircleIcon} from '@sanity/icons'\nimport {Box, Card, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport * as React from 'react'\nimport {Preview, SanityDocument, SchemaType, TextWithTone, useSchema} from 'sanity'\nimport {RouterPaneGroup, usePaneRouter} from 'sanity/desk'\nimport useTreeOperations from '../hooks/useTreeOperations'\nimport {LocalTreeItem} from '../types'\nimport DocumentPreviewStatus from './DocumentPreviewStatus'\n\n/**\n * Renders a preview for each referenced document.\n * Nested inside TreeNode.tsx\n */\nconst DocumentInNode: React.FC<{\n item: LocalTreeItem\n action?: React.ReactNode\n}> = (props) => {\n const {value: {reference, docType} = {}, draftId, publishedId} = props.item\n const {routerPanesState, ChildLink} = usePaneRouter()\n const {allItemsStatus} = useTreeOperations()\n const schema = useSchema()\n const isActive = React.useMemo(() => {\n // If some pane is active with the current document `_id`, it's active\n return routerPanesState.some((pane: RouterPaneGroup) =>\n pane.some((group) => group.id === reference?._ref)\n )\n }, [routerPanesState])\n\n const type = React.useMemo(() => {\n return docType ? schema.get(docType) : undefined\n }, [docType])\n\n const LinkComponent = React.useMemo(\n () =>\n React.forwardRef((linkProps: any, ref: any) => (\n <ChildLink\n {...linkProps}\n childId={reference?._ref}\n ref={ref}\n childParameters={{\n type: docType\n }}\n />\n )),\n [ChildLink, reference?._ref]\n )\n\n if (!reference?._ref) {\n return null\n }\n\n return (\n <Flex gap={2} align=\"center\" style={{flex: 1}}>\n {/* Show loading preview while allItems aren't ready */}\n {publishedId || allItemsStatus !== 'success' ? (\n /* Card loosely copied from @sanity/desk-tool's PaneItem.tsx */\n <Card\n __unstable_focusRing\n as={LinkComponent}\n tone={isActive ? 'primary' : 'default'}\n padding={1}\n radius={2}\n flex={1}\n data-as=\"a\"\n data-ui=\"PaneItem\"\n >\n <Preview\n layout=\"default\"\n schemaType={type as SchemaType}\n value={{_ref: draftId || reference?._ref}}\n status={\n <DocumentPreviewStatus\n draft={\n draftId\n ? ({\n _id: draftId,\n _type: docType,\n _updatedAt: props.item.draftUpdatedAt\n } as SanityDocument)\n : undefined\n }\n published={\n {\n _id: reference?._ref,\n _type: docType,\n _updatedAt: props.item.publishedUpdatedAt\n } as SanityDocument\n }\n />\n }\n />\n </Card>\n ) : (\n <Card padding={3} radius={1} flex={1}>\n <Flex align=\"center\">\n <Text size={2} muted style={{flex: 1}}>\n Invalid document\n </Text>\n <Tooltip\n placement=\"left\"\n portal\n content={\n <Box padding={3}>\n <Flex align=\"flex-start\" gap={3}>\n <TextWithTone tone=\"default\" size={3}>\n <HelpCircleIcon />\n </TextWithTone>\n <Stack space={3}>\n <Text as=\"h2\" size={1} weight=\"semibold\">\n This document is not valid\n </Text>\n {/* <Text size={1}>\n It was deleted or it doesn't match the filters set by this hierarchy.\n </Text> */}\n <Text size={1}>ID: {reference?._ref}</Text>\n </Stack>\n </Flex>\n </Box>\n }\n >\n <TextWithTone tone=\"default\" size={2}>\n <HelpCircleIcon />\n </TextWithTone>\n </Tooltip>\n </Flex>\n </Card>\n )}\n {props.action}\n </Flex>\n )\n}\n\nexport default DocumentInNode\n","import {CopyIcon, EllipsisVerticalIcon, LaunchIcon, RemoveCircleIcon} from '@sanity/icons'\nimport {Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport * as React from 'react'\nimport {IntentButton as IntentLink} from 'sanity'\nimport useTreeOperations from '../hooks/useTreeOperations'\nimport {NodeProps} from '../types'\n\n/**\n * Applicable only to nodes inside the main tree.\n * Unadded items have their actions defined in TreeEditor.\n */\nconst NodeActions: React.FC<{nodeProps: NodeProps}> = ({nodeProps}) => {\n const operations = useTreeOperations()\n const {node} = nodeProps\n const {reference, docType} = node?.value || {}\n\n // Adapted from @sanity\\form-builder\\src\\inputs\\ReferenceInput\\ArrayItemReferenceInput.tsx\n const OpenLink = React.useMemo(\n () =>\n // eslint-disable-next-line @typescript-eslint/no-shadow\n React.forwardRef(function OpenLinkInner(\n restProps: React.ComponentProps<typeof IntentLink>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _ref: React.ForwardedRef<HTMLAnchorElement>\n ) {\n return (\n <IntentLink\n {...restProps}\n intent=\"edit\"\n params={{id: reference?._ref, type: docType}}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n />\n )\n }),\n [reference?._ref, docType]\n )\n\n const isValid = !!node.publishedId\n return (\n <MenuButton\n button={<Button padding={2} mode=\"bleed\" icon={EllipsisVerticalIcon} />}\n id={`hiearchical-doc-list--${node._key}-menuButton`}\n menu={\n <Menu>\n <MenuItem\n text=\"Remove from list\"\n tone=\"critical\"\n icon={RemoveCircleIcon}\n onClick={() => operations.removeItem(nodeProps)}\n />\n <MenuItem\n text=\"Duplicate item\"\n icon={CopyIcon}\n disabled={!isValid}\n onClick={() => operations.duplicateItem(nodeProps)}\n />\n {/* <MenuItem\n text=\"Move up\"\n icon={ArrowUpIcon}\n disabled={!isValid}\n onClick={() => operations.moveItemUp(nodeProps)}\n />\n <MenuItem\n text=\"Move down\"\n icon={ArrowDownIcon}\n disabled={!isValid}\n onClick={() => operations.moveItemDown(nodeProps)}\n /> */}\n <MenuDivider />\n <MenuItem\n text=\"Open in new tab\"\n icon={LaunchIcon}\n disabled={!isValid}\n as={OpenLink}\n data-as=\"a\"\n />\n </Menu>\n }\n popover={{portal: true, tone: 'default', placement: 'right'}}\n />\n )\n}\n\nexport default NodeActions\n","import {getTreeFromFlatData} from '@nosferatu500/react-sortable-tree'\nimport {StoredTreeItem} from '../types'\n\ninterface TreeItemWithChildren extends StoredTreeItem {\n children?: TreeItemWithChildren[]\n}\n\nexport default function flatDataToTree(data: StoredTreeItem[]): TreeItemWithChildren[] {\n return getTreeFromFlatData({\n flatData: data.map((item) => ({\n ...item,\n // if parent: undefined, the tree won't be constructed\n parent: item.parent || null,\n })),\n getKey: (item) => item._key,\n getParentKey: (item) => item.parent,\n // without rootKey, the tree won't be constructed\n rootKey: null as any,\n }) as TreeItemWithChildren[]\n}\n","export function getSchemaTypeName(\n documentType: string,\n type: 'document' | 'node' | 'nodeValue' | 'array'\n): string {\n switch (type) {\n case 'document':\n return documentType\n case 'array':\n return `${documentType}.array`\n case 'node':\n return `${documentType}.node`\n case 'nodeValue':\n return `${documentType}.nodeValue`\n default:\n return documentType\n }\n}\n\n/**\n * Temporary value of nodes' `_type` before they are normalized and persisted as the user-defined choice.\n */\nexport const DEFAULT_DOC_TYPE = 'hierarchy.tree'\nexport const INTERNAL_NODE_TYPE = getSchemaTypeName(DEFAULT_DOC_TYPE, 'node')\nexport const INTERNAL_NODE_VALUE_TYPE = getSchemaTypeName(DEFAULT_DOC_TYPE, 'nodeValue')\nexport const INTERNAL_NODE_ARRAY_TYPE = getSchemaTypeName(DEFAULT_DOC_TYPE, 'array')\n\n/**\n * Barebones recursive utility to inject the desired nodeObjectType in patches generated in deeply nested components and utilities.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport default function injectNodeTypeInPatches(patchData: any, documentType: string): any {\n if (Array.isArray(patchData)) {\n return patchData.map((child) => injectNodeTypeInPatches(child, documentType))\n }\n if (typeof patchData === 'object' && patchData !== null) {\n return Object.keys(patchData).reduce((newObject, key) => {\n const value = patchData[key as keyof typeof patchData]\n\n if (\n key === '_type' &&\n typeof value === 'string' &&\n [INTERNAL_NODE_TYPE, INTERNAL_NODE_VALUE_TYPE].includes(value)\n ) {\n return {\n ...newObject,\n [key]: getSchemaTypeName(\n documentType,\n value === INTERNAL_NODE_TYPE ? 'node' : 'nodeValue'\n ),\n }\n }\n\n return {\n ...newObject,\n [key]: injectNodeTypeInPatches(value, documentType),\n }\n }, {})\n }\n return patchData\n}\n","import {TreeItem} from '@nosferatu500/react-sortable-tree'\nimport {randomKey} from '@sanity/util/content'\nimport {SanityDocument} from 'sanity'\nimport DocumentInNode from '../components/DocumentInNode'\nimport NodeActions from '../components/NodeActions'\nimport {\n AllItems,\n DocumentPair,\n EnhancedTreeItem,\n LocalTreeItem,\n NodeProps,\n StoredTreeItem,\n VisibilityMap\n} from '../types'\nimport flatDataToTree from './flatDataToTree'\nimport {INTERNAL_NODE_TYPE, INTERNAL_NODE_VALUE_TYPE} from './injectNodeTypeInPatches'\n\nexport const dataToEditorTree = ({\n tree,\n allItems,\n visibilityMap\n}: {\n tree: StoredTreeItem[]\n allItems: AllItems\n visibilityMap: VisibilityMap\n}): LocalTreeItem[] => {\n const itemsWithTitle = tree\n .filter((item) => item?.value?.reference?._ref)\n .map((item) => {\n const refId = item.value?.reference?._ref\n const docPair = refId ? allItems[refId] : undefined\n const draftDoc = docPair?.draft\n const publishedDoc = docPair?.published\n\n const enhancedItem: LocalTreeItem = {\n ...item,\n expanded: visibilityMap[item._key] !== false,\n draftId: draftDoc?._id,\n publishedId: publishedDoc?._id,\n draftUpdatedAt: draftDoc?._updatedAt,\n publishedUpdatedAt: publishedDoc?._updatedAt\n }\n\n return {\n ...enhancedItem,\n title: (nodeProps: NodeProps) => (\n <DocumentInNode item={enhancedItem} action={<NodeActions nodeProps={nodeProps} />} />\n ),\n children: []\n }\n })\n return flatDataToTree(itemsWithTitle)\n}\n\nconst documentPairToNode = (doc?: DocumentPair): EnhancedTreeItem | undefined => {\n if (!doc?.published?._id) {\n return undefined\n }\n\n return {\n _key: randomKey(12),\n _type: INTERNAL_NODE_TYPE,\n draftId: doc.draft?._id,\n draftUpdatedAt: doc.draft?._updatedAt,\n publishedId: doc.published._id,\n publishedUpdatedAt: doc.published?._updatedAt,\n value: {\n _type: INTERNAL_NODE_VALUE_TYPE,\n reference: {\n _ref: doc.published._id,\n _type: 'reference',\n _weak: true\n },\n docType: doc.published._type\n }\n }\n}\n\nexport const flatTree = (tree: TreeItem[]): TreeItem[] => {\n return tree.reduce((flattened, item) => {\n const {children, ...node} = item\n return [...flattened, node, ...(Array.isArray(children) ? flatTree(children) : [])]\n }, [] as TreeItem[])\n}\n\nexport interface FetchData {\n mainTree?: LocalTreeItem[]\n allItems?: SanityDocument[]\n}\n\nexport const getUnaddedItems = (data: {\n allItems: AllItems\n tree: StoredTreeItem[]\n}): EnhancedTreeItem[] => {\n if (!data.tree) {\n return Object.entries(data.allItems)\n .map((value) => documentPairToNode(value[1]))\n .filter(Boolean) as EnhancedTreeItem[]\n }\n\n return Object.entries(data.allItems)\n .filter(\n ([publishedId]) =>\n publishedId &&\n // unadded items shouldn't be in the tree\n !data.tree.some((treeItem) => treeItem?.value?.reference?._ref === publishedId)\n )\n .map(([, documentPair]) => documentPairToNode(documentPair))\n .filter(Boolean) as EnhancedTreeItem[]\n}\n\nexport function normalizeNodeForStorage(item: LocalTreeItem): StoredTreeItem {\n return {\n _key: item._key,\n _type: item._type || INTERNAL_NODE_TYPE,\n value: item.value,\n parent: item.parent\n }\n}\n","import * as React from 'react'\nimport {AllItems, LocalTreeItem, StoredTreeItem, VisibilityMap} from '../types'\nimport {dataToEditorTree} from '../utils/treeData'\n\n/**\n * Enhances tree data with information on:\n * - `expanded` - native property of react-sortable-tree to determine collapsing & expanding of a node's children\n * - `draftId` & `publishedId` - refer to LocalTreeItem's type annotations\n *\n * Doesn't modify the main tree or has side-effects on data.\n * Has the added benefit of being local to the user, so external changes won't affect local visibility.\n */\nexport default function useLocalTree({\n tree,\n allItems,\n}: {\n tree: StoredTreeItem[]\n allItems: AllItems\n}): {\n handleVisibilityToggle: (data: any) => void\n localTree: LocalTreeItem[]\n} {\n const [visibilityMap, setVisibilityMap] = React.useState<VisibilityMap>({})\n\n function handleVisibilityToggle(data: any) {\n setVisibilityMap({\n ...visibilityMap,\n [data.node._key]: data.expanded,\n })\n }\n\n return {\n localTree: dataToEditorTree({\n tree,\n allItems,\n visibilityMap,\n }),\n handleVisibilityToggle,\n }\n}\n","import {FlatDataItem, TreeItem} from '@nosferatu500/react-sortable-tree'\n\n/**\n * Gets adjescent non-children nodes of a given treeIndex.\n */\nexport default function getAdjescentNodes({\n flatTree,\n node,\n treeIndex,\n}: {\n flatTree: FlatDataItem[]\n node: TreeItem\n treeIndex: number\n}): {\n leadingNode?: FlatDataItem\n followingNode?: FlatDataItem\n} {\n const leadingNode = flatTree\n .slice(0, treeIndex)\n .reverse()\n // Disregard children nodes - these include the current node's key in their `path` array\n .find((item) => !item.path.includes(node._key))\n\n const followingNode = flatTree.slice(treeIndex + 1).find((item) => !item.path.includes(node._key))\n\n return {\n leadingNode,\n followingNode,\n }\n}\n","export default function moveItemInArray<ItemType = unknown>({\n array,\n fromIndex,\n toIndex,\n}: {\n array: ItemType[]\n fromIndex: number\n toIndex: number\n}): ItemType[] {\n if (fromIndex === toIndex) {\n return array\n }\n\n const newArray = [...array]\n\n const target = newArray[fromIndex]\n const inc = toIndex < fromIndex ? -1 : 1\n\n for (let i = fromIndex; i !== toIndex; i += inc) {\n newArray[i] = newArray[i + inc]\n }\n\n newArray[toIndex] = target\n\n return newArray\n}\n","import {\n FlatDataItem,\n FullTree,\n getFlatDataFromTree,\n NodeData,\n TreeItem\n} from '@nosferatu500/react-sortable-tree'\nimport {randomKey} from '@sanity/util/content'\nimport * as Patch from 'sanity'\nimport {LocalTreeItem, NodeProps} from '../types'\nimport getAdjescentNodes from './getAdjescentNodes'\nimport moveItemInArray from './moveItemInArray'\nimport {normalizeNodeForStorage} from './treeData'\n\nexport type HandleMovedNodeData = Omit<\n NodeData & FullTree & any,\n 'prevPath' | 'prevTreeIndex' | 'path' | 'treeIndex' | 'node'\n> & {node: LocalTreeItem}\n\nexport type HandleMovedNode = (moveData: HandleMovedNodeData) => void\n\nexport function getAddItemPatch(item: LocalTreeItem): unknown[] {\n const normalizedNode = normalizeNodeForStorage(item)\n\n return [\n // Add the node to the end of the tree\n Patch.insert([normalizedNode], 'after', [-1])\n ]\n}\n\nexport function getDuplicateItemPatch(nodeProps: NodeProps): unknown[] {\n const newItem = {\n ...nodeProps.node,\n _key: randomKey(12)\n }\n const normalizedNode = normalizeNodeForStorage(newItem)\n\n return [\n // Add duplicated node before the existing one\n Patch.insert([normalizedNode], 'before', [{_key: nodeProps.node._key}])\n ]\n}\n\nexport function getRemoveItemPatch({node}: Pick<NodeProps, 'node'>): unknown[] {\n const keyPath = {_key: node._key}\n const children = getChildrenPaths(node)\n\n return [\n // 1. Unset the removed node\n Patch.unset([keyPath]),\n\n // 2. Unset its children\n ...children.map((path) => Patch.unset([{_key: path}]))\n ]\n}\n\nexport function getMovedNodePatch(data: HandleMovedNodeData): unknown[] {\n const {nextParentNode} = data\n const keyPath = {_key: data.node._key}\n\n // === REMOVING NODE FROM TREE ===\n // `nextPath` will be null if the item is removed from tree\n if (!Array.isArray(data.nextPath)) {\n return getRemoveItemPatch({node: data.node})\n }\n\n const nextFlatTree = getFlatDataFromTree({\n treeData: data.treeData,\n getNodeKey: (t) => t.node._key\n })\n const normalizedNode = normalizeNodeForStorage(data.node)\n\n const {leadingNode, followingNode} = getAdjescentNodes({\n flatTree: nextFlatTree,\n node: data.node,\n treeIndex: data.nextTreeIndex\n })\n\n return [\n // 1. Unset the moved node\n // (will be ignored by Content Lake on new nodes with _key not yet in tree)\n Patch.unset([keyPath]),\n\n // 2. SIBLING-BASED PLACEMENT\n // If we were to place solely based on nextTreeIndex, concurrent changes from other editors could put the new node in an unexpected position.\n // Let's instead anchor it to the _key of the sibling coming before or after it.\n leadingNode?.node?._key\n ? // After the sibling before it\n Patch.insert([normalizedNode], 'after', [{_key: leadingNode.node._key}])\n : // Or before the sibling right after it, in case there's no leading sibling node\n // prettier-ignore\n Patch.insert([normalizedNode], 'before', [followingNode?.node?._key ? {_key: followingNode.node._key} : data.nextTreeIndex]),\n\n // 3. Patch the new node with its new `parent`\n nextParentNode\n ? // If it has a parent node, set that parent's _key\n Patch.set(nextParentNode._key, [keyPath, 'parent'])\n : // Else remove the parent key entirely\n Patch.unset([keyPath, 'parent'])\n ]\n}\n\nfunction getChildrenPaths(node: TreeItem): string[] {\n if (!Array.isArray(node.children)) {\n return []\n }\n\n return node.children\n .reduce(\n (keyPaths, child) => [...keyPaths, child._key, ...getChildrenPaths(child)],\n [] as string[]\n )\n .filter(Boolean)\n}\n\nexport function getMoveItemPatch({\n nodeProps: {node, treeIndex},\n localTree,\n direction = 'up'\n}: {\n nodeProps: any\n localTree: TreeItem[]\n direction: 'up' | 'down'\n}): unknown[] {\n const keyPath = {_key: node._key}\n\n const nextTreeIndex = treeIndex + (direction === 'up' ? -1 : 1)\n\n const flatTree = getFlatDataFromTree({\n treeData: localTree,\n getNodeKey: (t) => t.node._key\n })\n const nextFlatTree = moveItemInArray<FlatDataItem>({\n array: flatTree,\n fromIndex: treeIndex,\n toIndex: nextTreeIndex\n })\n const {leadingNode, followingNode} = getAdjescentNodes({\n flatTree: nextFlatTree,\n node,\n treeIndex: nextTreeIndex\n })\n\n const normalizedNode = normalizeNodeForStorage(node)\n\n // When moving up, look at following node to figure out what is the next parent.\n const nodeToInheritParent = direction === 'up' ? followingNode : leadingNode\n const nextParentNode = nodeToInheritParent?.parentNode\n\n return [\n // 1. Unset the moved node\n // (will be ignored by Content Lake on new nodes with _key not yet in tree)\n Patch.unset([keyPath]),\n\n // 2. SIBLING-BASED PLACEMENT\n leadingNode?.node?._key\n ? // After the sibling before it\n Patch.insert([normalizedNode], 'after', [{_key: leadingNode.node._key}])\n : // Or before the sibling right after it, in case there's no leading sibling node\n Patch.insert([normalizedNode], 'before', [\n followingNode?.node?._key ? {_key: followingNode.node._key} : nextTreeIndex\n ]),\n\n // 3. Patch the new node with its new `parent`\n nextParentNode\n ? // If it has a parent node, set that parent's _key\n Patch.set(nextParentNode._key, [keyPath, 'parent'])\n : // Else remove the parent key entirely\n Patch.unset([keyPath, 'parent'])\n ]\n}\n","import {PatchEvent, PathSegment, prefixPath, setIfMissing} from 'sanity'\nimport {LocalTreeItem, NodeProps} from '../types'\nimport {\n HandleMovedNode,\n HandleMovedNodeData,\n getAddItemPatch,\n getDuplicateItemPatch,\n getMoveItemPatch,\n getMovedNodePatch,\n getRemoveItemPatch\n} from '../utils/treePatches'\n\nexport default function useTreeOperationsProvider(props: {\n patchPrefix?: PathSegment\n onChange: (patch: PatchEvent) => void\n localTree: LocalTreeItem[]\n}): {\n handleMovedNode: HandleMovedNode\n addItem: (item: LocalTreeItem) => void\n duplicateItem: (nodeProps: NodeProps) => void\n removeItem: (nodeProps: NodeProps) => void\n moveItemUp: (nodeProps: NodeProps) => void\n moveItemDown: (nodeProps: NodeProps) => void\n} {\n const {localTree} = props\n\n function runPatches(patches: any) {\n const finalPatches = [\n // Ensure tree array exists before any operation\n setIfMissing([]),\n ...(patches || [])\n ]\n let patchEvent = PatchEvent.from(finalPatches)\n if (props.patchPrefix) {\n patchEvent = PatchEvent.from(\n finalPatches.map((patch) => prefixPath(patch, props.patchPrefix as PathSegment))\n )\n }\n props.onChange(patchEvent)\n }\n\n function handleMovedNode(data: HandleMovedNodeData & {node: LocalTreeItem}) {\n runPatches(getMovedNodePatch(data))\n }\n\n function addItem(item: LocalTreeItem) {\n runPatches(getAddItemPatch(item))\n }\n\n function duplicateItem(nodeProps: NodeProps & {node: LocalTreeItem}) {\n runPatches(getDuplicateItemPatch(nodeProps))\n }\n\n function removeItem(nodeProps: NodeProps) {\n runPatches(getRemoveItemPatch(nodeProps))\n }\n\n function moveItemUp(nodeProps: NodeProps) {\n runPatches(\n getMoveItemPatch({\n nodeProps,\n localTree,\n direction: 'up'\n })\n )\n }\n\n function moveItemDown(nodeProps: NodeProps) {\n runPatches(\n getMoveItemPatch({\n nodeProps,\n localTree,\n direction: 'down'\n })\n )\n }\n\n return {\n handleMovedNode,\n addItem,\n removeItem,\n moveItemUp,\n moveItemDown,\n duplicateItem\n }\n}\n","const COLOR_HUES = [\n \"gray\",\n \"blue\",\n \"purple\",\n \"magenta\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"cyan\"\n], COLOR_TINTS = [\n \"50\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"950\"\n];\nfunction hslToRgb(hsl) {\n const h = hsl[0], s = hsl[1] / 100, l = hsl[2] / 100, k = (n) => (n + h / 30) % 12, a = s * Math.min(l, 1 - l), f = (n) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n return [255 * f(0), 255 * f(8), 255 * f(4)];\n}\nfunction rgbToHex([r, g, b]) {\n const _r = Math.round(r), _g = Math.round(g), _b = Math.round(b);\n return \"#\" + ((1 << 24) + (_r << 16) + (_g << 8) + _b).toString(16).slice(1);\n}\nfunction buildTints(options) {\n const { hueKey, color: color2 } = options;\n return COLOR_TINTS.reduce((acc, tintKey) => {\n const tint = Number(tintKey), rgb = hslToRgb(color2.tints[tintKey].hsl), hex = rgbToHex([Math.round(rgb[0]), Math.round(rgb[1]), Math.round(rgb[2])]);\n return acc[tintKey] = {\n title: `${hueKey.slice(0, 1).toUpperCase()}${hueKey.slice(1)} ${tint}`,\n hex\n }, acc;\n }, {});\n}\nconst black = {\n title: \"Black\",\n hex: \"#0d0e12\"\n}, white = {\n title: \"White\",\n hex: \"#ffffff\"\n}, gray = {\n 50: {\n title: \"Gray 50\",\n hex: \"#f6f6f8\"\n },\n 100: {\n title: \"Gray 100\",\n hex: \"#eeeef1\"\n },\n 200: {\n title: \"Gray 200\",\n hex: \"#e3e4e8\"\n },\n 300: {\n title: \"Gray 300\",\n hex: \"#bbbdc9\"\n },\n 400: {\n title: \"Gray 400\",\n hex: \"#9499ad\"\n },\n 500: {\n title: \"Gray 500\",\n hex: \"#727892\"\n },\n 600: {\n title: \"Gray 600\",\n hex: \"#515870\"\n },\n 700: {\n title: \"Gray 700\",\n hex: \"#383d51\"\n },\n 800: {\n title: \"Gray 800\",\n hex: \"#252837\"\n },\n 900: {\n title: \"Gray 900\",\n hex: \"#1b1d27\"\n },\n 950: {\n title: \"Gray 950\",\n hex: \"#13141b\"\n }\n}, blue = {\n 50: {\n title: \"Blue 50\",\n hex: \"#f5f8ff\"\n },\n 100: {\n title: \"Blue 100\",\n hex: \"#e5edff\"\n },\n 200: {\n title: \"Blue 200\",\n hex: \"#dbe5ff\"\n },\n 300: {\n title: \"Blue 300\",\n hex: \"#a8bfff\"\n },\n 400: {\n title: \"Blue 400\",\n hex: \"#7595ff\"\n },\n 500: {\n title: \"Blue 500\",\n hex: \"#556bfc\"\n },\n 600: {\n title: \"Blue 600\",\n hex: \"#4043e7\"\n },\n 700: {\n title: \"Blue 700\",\n hex: \"#2927aa\"\n },\n 800: {\n title: \"Blue 800\",\n hex: \"#192457\"\n },\n 900: {\n title: \"Blue 900\",\n hex: \"#161a41\"\n },\n 950: {\n title: \"Blue 950\",\n hex: \"#101228\"\n }\n}, purple = {\n 50: {\n title: \"Purple 50\",\n hex: \"#f8f5ff\"\n },\n 100: {\n title: \"Purple 100\",\n hex: \"#f1ebff\"\n },\n 200: {\n title: \"Purple 200\",\n hex: \"#ece1fe\"\n },\n 300: {\n title: \"Purple 300\",\n hex: \"#ccb1fc\"\n },\n 400: {\n title: \"Purple 400\",\n hex: \"#b087f7\"\n },\n 500: {\n title: \"Purple 500\",\n hex: \"#8f57ef\"\n },\n 600: {\n title: \"Purple 600\",\n hex: \"#721fe5\"\n },\n 700: {\n title: \"Purple 700\",\n hex: \"#4c1a9e\"\n },\n 800: {\n title: \"Purple 800\",\n hex: \"#2f1862\"\n },\n 900: {\n title: \"Purple 900\",\n hex: \"#23173f\"\n },\n 950: {\n title: \"Purple 950\",\n hex: \"#181128\"\n }\n}, magenta = {\n 50: {\n title: \"Magenta 50\",\n hex: \"#fef6f9\"\n },\n 100: {\n title: \"Magenta 100\",\n hex: \"#fde8ef\"\n },\n 200: {\n title: \"Magenta 200\",\n hex: \"#fcdee9\"\n },\n 300: {\n title: \"Magenta 300\",\n hex: \"#f7abc5\"\n },\n 400: {\n title: \"Magenta 400\",\n hex: \"#f0709b\"\n },\n 500: {\n title: \"Magenta 500\",\n hex: \"#e72767\"\n },\n 600: {\n title: \"Magenta 600\",\n hex: \"#b11651\"\n },\n 700: {\n title: \"Magenta 700\",\n hex: \"#7c1342\"\n },\n 800: {\n title: \"Magenta 800\",\n hex: \"#4b1130\"\n },\n 900: {\n title: \"Magenta 900\",\n hex: \"#341325\"\n },\n 950: {\n title: \"Magenta 950\",\n hex: \"#1f0f14\"\n }\n}, red = {\n 50: {\n title: \"Red 50\",\n hex: \"#fff6f5\"\n },\n 100: {\n title: \"Red 100\",\n hex: \"#ffe7e5\"\n },\n 200: {\n title: \"Red 200\",\n hex: \"#ffdedc\"\n },\n 300: {\n title: \"Red 300\",\n hex: \"#fdada5\"\n },\n 400: {\n title: \"Red 400\",\n hex: \"#f77769\"\n },\n 500: {\n title: \"Red 500\",\n hex: \"#ef4434\"\n },\n 600: {\n title: \"Red 600\",\n hex: \"#cc2819\"\n },\n 700: {\n title: \"Red 700\",\n hex: \"#8b2018\"\n },\n 800: {\n title: \"Red 800\",\n hex: \"#4d1714\"\n },\n 900: {\n title: \"Red 900\",\n hex: \"#321615\"\n },\n 950: {\n title: \"Red 950\",\n hex: \"#1e1011\"\n }\n}, orange = {\n 50: {\n title: \"Orange 50\",\n hex: \"#fff7f0\"\n },\n 100: {\n title: \"Orange 100\",\n hex: \"#ffeadb\"\n },\n 200: {\n title: \"Orange 200\",\n hex: \"#ffddc7\"\n },\n 300: {\n title: \"Orange 300\",\n hex: \"#ffb685\"\n },\n 400: {\n title: \"Orange 400\",\n hex: \"#ff8e42\"\n },\n 500: {\n title: \"Orange 500\",\n hex: \"#fa6400\"\n },\n 600: {\n title: \"Orange 600\",\n hex: \"#b14802\"\n },\n 700: {\n title: \"Orange 700\",\n hex: \"#7c3404\"\n },\n 800: {\n title: \"Orange 800\",\n hex: \"#461e07\"\n },\n 900: {\n title: \"Orange 900\",\n hex: \"#32160b\"\n },\n 950: {\n title: \"Orange 950\",\n hex: \"#21120d\"\n }\n}, yellow = {\n 50: {\n title: \"Yellow 50\",\n hex: \"#fefae1\"\n },\n 100: {\n title: \"Yellow 100\",\n hex: \"#fcf3bb\"\n },\n 200: {\n title: \"Yellow 200\",\n hex: \"#f9e994\"\n },\n 300: {\n title: \"Yellow 300\",\n hex: \"#f7d455\"\n },\n 400: {\n title: \"Yellow 400\",\n hex: \"#f9bc15\"\n },\n 500: {\n title: \"Yellow 500\",\n hex: \"#d28a04\"\n },\n 600: {\n title: \"Yellow 600\",\n hex: \"#965908\"\n },\n 700: {\n title: \"Yellow 700\",\n hex: \"#653a0b\"\n },\n 800: {\n title: \"Yellow 800\",\n hex: \"#3b220c\"\n },\n 900: {\n title: \"Yellow 900\",\n hex: \"#271a11\"\n },\n 950: {\n title: \"Yellow 950\",\n hex: \"#181410\"\n }\n}, green = {\n 50: {\n title: \"Green 50\",\n hex: \"#e7fef5\"\n },\n 100: {\n title: \"Green 100\",\n hex: \"#c5fce8\"\n },\n 200: {\n title: \"Green 200\",\n hex: \"#a9f9dc\"\n },\n 300: {\n title: \"Green 300\",\n hex: \"#59f3ba\"\n },\n 400: {\n title: \"Green 400\",\n hex: \"#0ff0a1\"\n },\n 500: {\n title: \"Green 500\",\n hex: \"#04b97a\"\n },\n 600: {\n title: \"Green 600\",\n hex: \"#01794f\"\n },\n 700: {\n title: \"Green 700\",\n hex: \"#015133\"\n },\n 800: {\n title: \"Green 800\",\n hex: \"#023120\"\n },\n 900: {\n title: \"Green 900\",\n hex: \"#06231a\"\n },\n 950: {\n title: \"Green 950\",\n hex: \"#071715\"\n }\n}, cyan = {\n 50: {\n title: \"Cyan 50\",\n hex: \"#e7fefe\"\n },\n 100: {\n title: \"Cyan 100\",\n hex: \"#c5fcfc\"\n },\n 200: {\n title: \"Cyan 200\",\n hex: \"#96f8f8\"\n },\n 300: {\n title: \"Cyan 300\",\n hex: \"#62efef\"\n },\n 400: {\n title: \"Cyan 400\",\n hex: \"#18e2e2\"\n },\n 500: {\n title: \"Cyan 500\",\n hex: \"#04b8be\"\n },\n 600: {\n title: \"Cyan 600\",\n hex: \"#037782\"\n },\n 700: {\n title: \"Cyan 700\",\n hex: \"#024950\"\n },\n 800: {\n title: \"Cyan 800\",\n hex: \"#042f34\"\n },\n 900: {\n title: \"Cyan 900\",\n hex: \"#072227\"\n },\n 950: {\n title: \"Cyan 950\",\n hex: \"#0d181c\"\n }\n}, hues = { gray, blue, purple, magenta, red, orange, yellow, green, cyan }, color = { black, white, ...hues }, config = {\n black: {\n title: \"Black\",\n hsl: [225, 16, 6]\n },\n white: {\n title: \"White\",\n hsl: [0, 0, 100]\n },\n gray: {\n title: \"Gray\",\n tints: {\n 50: {\n title: \"Gray 50\",\n hsl: [240, 12, 97]\n },\n 100: {\n title: \"Gray 100\",\n hsl: [240, 10, 94]\n },\n 200: {\n title: \"Gray 200\",\n hsl: [231, 10, 90]\n },\n 300: {\n title: \"Gray 300\",\n hsl: [232, 11, 76]\n },\n 400: {\n title: \"Gray 400\",\n hsl: [228, 13, 63]\n },\n 500: {\n title: \"Gray 500\",\n hsl: [229, 13, 51]\n },\n 600: {\n title: \"Gray 600\",\n hsl: [228, 16, 38]\n },\n 700: {\n title: \"Gray 700\",\n hsl: [229, 18, 27]\n },\n 800: {\n title: \"Gray 800\",\n hsl: [229, 19, 18]\n },\n 900: {\n title: \"Gray 900\",\n hsl: [228, 19, 13]\n },\n 950: {\n title: \"Gray 950\",\n hsl: [233, 17, 9]\n }\n }\n },\n blue: {\n title: \"Blue\",\n tints: {\n 50: {\n title: \"Blue 50\",\n hsl: [222, 100, 98]\n },\n 100: {\n title: \"Blue 100\",\n hsl: [222, 100, 95]\n },\n 200: {\n title: \"Blue 200\",\n hsl: [223, 100, 93]\n },\n 300: {\n title: \"Blue 300\",\n hsl: [224, 100, 83]\n },\n 400: {\n title: \"Blue 400\",\n hsl: [226, 100, 73]\n },\n 500: {\n title: \"Blue 500\",\n hsl: [232, 96, 66]\n },\n 600: {\n title: \"Blue 600\",\n hsl: [239, 78, 58]\n },\n 700: {\n title: \"Blue 700\",\n hsl: [241, 63, 41]\n },\n 800: {\n title: \"Blue 800\",\n hsl: [230, 55, 22]\n },\n 900: {\n title: \"Blue 900\",\n hsl: [234, 49, 17]\n },\n 950: {\n title: \"Blue 950\",\n hsl: [235, 43, 11]\n }\n }\n },\n purple: {\n title: \"Purple\",\n tints: {\n 50: {\n title: \"Purple 50\",\n hsl: [260, 95, 98]\n },\n 100: {\n title: \"Purple 100\",\n hsl: [260, 98, 96]\n },\n 200: {\n title: \"Purple 200\",\n hsl: [263, 96, 94]\n },\n 300: {\n title: \"Purple 300\",\n hsl: [262, 92, 84]\n },\n 400: {\n title: \"Purple 400\",\n hsl: [262, 88, 75]\n },\n 500: {\n title: \"Purple 500\",\n hsl: [262, 83, 64]\n },\n 600: {\n title: \"Purple 600\",\n hsl: [265, 79, 51]\n },\n 700: {\n title: \"Purple 700\",\n hsl: [263, 72, 36]\n },\n 800: {\n title: \"Purple 800\",\n hsl: [258, 60, 24]\n },\n 900: {\n title: \"Purple 900\",\n hsl: [257, 46, 17]\n },\n 950: {\n title: \"Purple 950\",\n hsl: [260, 41, 11]\n }\n }\n },\n magenta: {\n title: \"Magenta\",\n tints: {\n 50: {\n title: \"Magenta 50\",\n hsl: [340, 82, 98]\n },\n 100: {\n title: \"Magenta 100\",\n hsl: [339, 83, 95]\n },\n 200: {\n title: \"Magenta 200\",\n hsl: [339, 83, 93]\n },\n 300: {\n title: \"Magenta 300\",\n hsl: [340, 82, 82]\n },\n 400: {\n title: \"Magenta 400\",\n hsl: [340, 81, 69]\n },\n 500: {\n title: \"Magenta 500\",\n hsl: [340, 80, 53]\n },\n 600: {\n title: \"Magenta 600\",\n hsl: [337, 78, 39]\n },\n 700: {\n title: \"Magenta 700\",\n hsl: [333, 73, 28]\n },\n 800: {\n title: \"Magenta 800\",\n hsl: [328, 63, 18]\n },\n 900: {\n title: \"Magenta 900\",\n hsl: [327, 46, 14]\n },\n 950: {\n title: \"Magenta 950\",\n hsl: [341, 35, 9]\n }\n }\n },\n red: {\n title: \"Red\",\n tints: {\n 50: {\n title: \"Red 50\",\n hsl: [5, 100, 98]\n },\n 100: {\n title: \"Red 100\",\n hsl: [4, 100, 95]\n },\n 200: {\n title: \"Red 200\",\n hsl: [4, 98, 93]\n },\n 300: {\n title: \"Red 300\",\n hsl: [5, 95, 82]\n },\n 400: {\n title: \"Red 400\",\n hsl: [6, 90, 69]\n },\n 500: {\n title: \"Red 500\",\n hsl: [5, 85, 57]\n },\n 600: {\n title: \"Red 600\",\n hsl: [5, 78, 45]\n },\n 700: {\n title: \"Red 700\",\n hsl: [4, 70, 32]\n },\n 800: {\n title: \"Red 800\",\n hsl: [3, 58, 19]\n },\n 900: {\n title: \"Red 900\",\n hsl: [2, 41, 14]\n },\n 950: {\n title: \"Red 950\",\n hsl: [356, 30, 9]\n }\n }\n },\n orange: {\n title: \"Orange\",\n tints: {\n 50: {\n title: \"Orange 50\",\n hsl: [28, 100, 97]\n },\n 100: {\n title: \"Orange 100\",\n hsl: [25, 100, 93]\n },\n 200: {\n title: \"Orange 200\",\n hsl: [24, 100, 89]\n },\n 300: {\n title: \"Orange 300\",\n hsl: [24, 100, 76]\n },\n 400: {\n title: \"Orange 400\",\n hsl: [24, 100, 63]\n },\n 500: {\n title: \"Orange 500\",\n hsl: [24, 100, 49]\n },\n 600: {\n title: \"Orange 600\",\n hsl: [24, 98, 35]\n },\n 700: {\n title: \"Orange 700\",\n hsl: [24, 94, 25]\n },\n 800: {\n title: \"Orange 800\",\n hsl: [22, 82, 15]\n },\n 900: {\n title: \"Orange 900\",\n hsl: [17, 65, 12]\n },\n 950: {\n title: \"Orange 950\",\n hsl: [14, 43, 9]\n }\n }\n },\n yellow: {\n title: \"Yellow\",\n tints: {\n 50: {\n title: \"Yellow 50\",\n hsl: [51, 94, 94]\n },\n 100: {\n title: \"Yellow 100\",\n hsl: [52, 91, 86]\n },\n 200: {\n title: \"Yellow 200\",\n hsl: [50, 90, 78]\n },\n 300: {\n title: \"Yellow 300\",\n hsl: [47, 91, 65]\n },\n 400: {\n title: \"Yellow 400\",\n hsl: [44, 95, 53]\n },\n 500: {\n title: \"Yellow 500\",\n hsl: [39, 96, 42]\n },\n 600: {\n title: \"Yellow 600\",\n hsl: [34, 90, 31]\n },\n 700: {\n title: \"Yellow 700\",\n hsl: [31, 80, 22]\n },\n 800: {\n title: \"Yellow 800\",\n hsl: [28, 66, 14]\n },\n 900: {\n title: \"Yellow 900\",\n hsl: [24, 40, 11]\n },\n 950: {\n title: \"Yellow 950\",\n hsl: [24, 20, 8]\n }\n }\n },\n green: {\n title: \"Green\",\n tints: {\n 50: {\n title: \"Green 50\",\n hsl: [157, 89, 95]\n },\n 100: {\n title: \"Green 100\",\n hsl: [158, 89, 88]\n },\n 200: {\n title: \"Green 200\",\n hsl: [158, 87, 82]\n },\n 300: {\n title: \"Green 300\",\n hsl: [158, 86, 65]\n },\n 400: {\n title: \"Green 400\",\n hsl: [159, 88, 50]\n },\n 500: {\n title: \"Green 500\",\n hsl: [159, 96, 37]\n },\n 600: {\n title: \"Green 600\",\n hsl: [159, 98, 24]\n },\n 700: {\n title: \"Green 700\",\n hsl: [158, 98, 16]\n },\n 800: {\n title: \"Green 800\",\n hsl: [158, 91, 10]\n },\n 900: {\n title: \"Green 900\",\n hsl: [162, 72, 8]\n },\n 950: {\n title: \"Green 950\",\n hsl: [172, 51, 6]\n }\n }\n },\n cyan: {\n title: \"Cyan\",\n tints: {\n 50: {\n title: \"Cyan 50\",\n hsl: [180, 92, 95]\n },\n 100: {\n title: \"Cyan 100\",\n hsl: [180, 91, 88]\n },\n 200: {\n title: \"Cyan 200\",\n hsl: [180, 87, 78]\n },\n 300: {\n title: \"Cyan 300\",\n hsl: [180, 81, 66]\n },\n 400: {\n title: \"Cyan 400\",\n hsl: [180, 81, 49]\n },\n 500: {\n title: \"Cyan 500\",\n hsl: [182, 96, 38]\n },\n 600: {\n title: \"Cyan 600\",\n hsl: [185, 96, 26]\n },\n 700: {\n title: \"Cyan 700\",\n hsl: [185, 95, 16]\n },\n 800: {\n title: \"Cyan 800\",\n hsl: [187, 86, 11]\n },\n 900: {\n title: \"Cyan 900\",\n hsl: [188, 68, 9]\n },\n 950: {\n title: \"Cyan 950\",\n hsl: [196, 37, 8]\n }\n }\n }\n};\nfunction hexToRgb(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result)\n throw new Error(\"input is not valid hex\");\n return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)];\n}\nfunction rgbToHsl([r, g, b]) {\n r /= 255, g /= 255, b /= 255;\n const cmin = Math.min(r, g, b), cmax = Math.max(r, g, b), delta = cmax - cmin;\n let h = 0, s = 0, l = 0;\n return delta == 0 ? h = 0 : cmax == r ? h = (g - b) / delta % 6 : cmax == g ? h = (b - r) / delta + 2 : h = (r - g) / delta + 4, h = Math.round(h * 60), h < 0 && (h += 360), l = (cmax + cmin) / 2, s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1)), s = +(s * 100).toFixed(0), l = +(l * 100).toFixed(0), [h, s, l];\n}\nfunction clamp(num) {\n return Math.max(Math.min(num, 255), 0);\n}\nfunction darkenChannel(backdrop, source) {\n return Math.min(backdrop, source);\n}\nfunction darken(b, s) {\n return [\n Math.round(clamp(darkenChannel(b[0] / 255, s[0] / 255) * 255)),\n Math.round(clamp(darkenChannel(b[1] / 255, s[1] / 255) * 255)),\n Math.round(clamp(darkenChannel(b[2] / 255, s[2] / 255) * 255))\n ];\n}\nfunction interpolate(min, max, val) {\n const size = max - min;\n return min + size * val;\n}\nfunction limit(darkest, lightest, source) {\n const r = Math.round(interpolate(darkest[0], lightest[0], source[0] / 255)), g = Math.round(interpolate(darkest[1], lightest[1], source[1] / 255)), b = Math.round(interpolate(darkest[2], lightest[2], source[2] / 255));\n return [r, g, b];\n}\nfunction screenChannel(backdrop, source) {\n return backdrop + source - backdrop * source;\n}\nfunction screen(b, s) {\n return [\n Math.round(clamp(screenChannel(b[0] / 255, s[0] / 255) * 255)),\n Math.round(clamp(screenChannel(b[1] / 255, s[1] / 255) * 255)),\n Math.round(clamp(screenChannel(b[2] / 255, s[2] / 255) * 255))\n ];\n}\nexport {\n COLOR_HUES,\n COLOR_TINTS,\n black,\n blue,\n buildTints,\n color,\n config,\n cyan,\n darken,\n gray,\n green,\n hexToRgb,\n hslToRgb,\n hues,\n limit,\n magenta,\n orange,\n purple,\n red,\n rgbToHex,\n rgbToHsl,\n screen,\n white,\n yellow\n};\n//# sourceMappingURL=index.js.map\n","import {isDescendant} from '@nosferatu500/react-sortable-tree'\nimport {cyan, gray, red} from '@sanity/color'\nimport {ChevronDownIcon, ChevronRightIcon, DragHandleIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Spinner} from '@sanity/ui'\nimport * as React from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n // Adapted from react-sortable-tree/style.css\n &[data-landing='true'] > *,\n &[data-cancel='true'] > * {\n opacity: 0 !important;\n }\n &[data-landing='true']::before,\n &[data-cancel='true']::before {\n background-color: ${cyan[50].hex};\n border: 2px dashed ${gray[400].hex};\n border-radius: 3px;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n }\n\n &[data-cancel='true']::before {\n background-color: ${red[50].hex};\n }\n`\n\n/**\n * Customization of react-sortable-tree's default node.\n * Created in order to use Sanity UI for styles.\n * Reference: https://github.com/frontend-collective/react-sortable-tree/blob/master/src/node-renderer-default.js\n */\nconst NodeContentRenderer: any = (props: any) => {\n const {node, path, treeIndex, canDrag = false} = props\n const nodeTitle = node.title\n const Handle = React.useMemo(() => {\n if (!canDrag) {\n return null\n }\n if (typeof node.children === 'function' && node.expanded) {\n // Show a loading symbol on the handle when the children are expanded\n // and yet still defined by a function (a callback to fetch the children)\n return <Spinner />\n }\n\n const BtnElement = (\n <div>\n <Button\n mode=\"bleed\"\n paddingX={0}\n paddingY={1}\n style={{\n cursor: node.publishedId ? 'grab' : 'default',\n fontSize: '1.5625rem'\n }}\n data-ui=\"DragHandleButton\"\n data-drag-handle={canDrag}\n disabled={!node.publishedId}\n >\n <DragHandleIcon style={{marginBottom: '-0.1em'}} />\n </Button>\n </div>\n )\n\n // Don't allow editors to drag invalid documents\n if (!node.publishedId) {\n return BtnElement\n }\n\n // Show the handle used to initiate a drag-and-drop\n return props.connectDragSource(BtnElement, {\n dropEffect: 'copy'\n })\n }, [canDrag, node, typeof node.children === 'function'])\n\n const isDraggedDescendant = props.draggedNode && isDescendant(props.draggedNode, node)\n const isLandingPadActive = !props.didDrop && props.isDragging\n\n return (\n <Box style={{position: 'relative'}}>\n {props.toggleChildrenVisibility &&\n node.children &&\n (node.children.length > 0 || typeof node.children === 'function') && (\n <div\n style={{\n position: 'absolute',\n left: '-2px',\n top: '40%',\n transform: 'translate(-100%, -50%)'\n }}\n >\n <Button\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n icon={\n node.expanded ? (\n <ChevronDownIcon color={gray[200].hex} />\n ) : (\n <ChevronRightIcon color={gray[200].hex} />\n )\n }\n mode=\"bleed\"\n fontSize={2}\n padding={1}\n type=\"button\"\n onClick={() =>\n props.toggleChildrenVisibility?.({\n node,\n path,\n treeIndex\n })\n }\n />\n </div>\n )}\n\n {props.connectDragPreview(\n <div>\n <Root\n data-landing={isLandingPadActive}\n data-cancel={isLandingPadActive && !props.canDrop}\n style={{\n opacity: isDraggedDescendant ? 0.5 : 1\n }}\n >\n <Flex align=\"center\">\n {Handle}\n {typeof nodeTitle === 'function' ? nodeTitle(props) : nodeTitle}\n </Flex>\n </Root>\n </div>\n )}\n </Box>\n )\n}\n\nexport default NodeContentRenderer\n","import {Box, Card, CardTone, Stack, Text} from '@sanity/ui'\nimport * as React from 'react'\n\nconst PlaceholderDropzone: React.FC<\n {\n tone?: CardTone\n title: string\n subtitle?: string\n } & any\n> = (props) => {\n const isValid = props.isOver && props.canDrop\n const isInvalid = props.isOver && !props.canDrop\n let tone: CardTone = 'transparent'\n if (isValid) {\n tone = 'positive'\n }\n if (isInvalid) {\n tone = 'caution'\n }\n return (\n <Box padding={3}>\n <Card\n padding={5}\n radius={2}\n border\n tone={tone}\n style={{\n borderStyle: props.isOver ? undefined : 'dashed',\n }}\n >\n <Stack space={2} style={{textAlign: 'center'}}>\n <Text size={2} as=\"h2\" muted>\n {!props.isOver && props.title}\n {isValid && 'Drop here'}\n {isInvalid && 'Invalid location or element'}\n </Text>\n {props.subtitle && <Text size={1}>{props.subtitle}</Text>}\n {props.children}\n </Stack>\n </Card>\n </Box>\n )\n}\n\nexport default PlaceholderDropzone\n","import {blue} from '@sanity/color'\nimport * as React from 'react'\nimport {createGlobalStyle} from 'styled-components'\n\n// Adapted from react-sortable-tree/src/tree-node.js\nconst ScaffoldStyles = createGlobalStyle`\n .rst__lineBlock,\n .rst__absoluteLineBlock {\n height: 100%;\n position: relative;\n display: inline-block;\n --stroke-width: 3px;\n }\n\n .rst__absoluteLineBlock {\n position: absolute;\n top: 0;\n }\n\n /* Highlight line for pointing to dragged row destination\n ========================================================================== */\n /**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n .rst__highlightLineVertical {\n z-index: 3;\n }\n .rst__highlightLineVertical::before {\n position: absolute;\n content: '';\n background-color: ${blue[400].hex};\n width: calc(var(--stroke-width) * 2);\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n height: 100%;\n }\n\n @keyframes arrow-pulse {\n 0% {\n transform: translate(0, 0);\n opacity: 0;\n }\n 30% {\n transform: translate(0, 300%);\n opacity: 1;\n }\n 70% {\n transform: translate(0, 700%);\n opacity: 1;\n }\n 100% {\n transform: translate(0, 1000%);\n opacity: 0;\n }\n }\n .rst__highlightLineVertical::after {\n content: '';\n position: absolute;\n height: 0;\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n border-left: var(--stroke-width) solid transparent;\n border-right: var(--stroke-width) solid transparent;\n border-top: var(--stroke-width) solid white;\n animation: arrow-pulse 1s infinite linear both;\n }\n\n /**\n * +-----+\n * | |\n * | +--+\n * | | |\n * +--+--+\n */\n .rst__highlightTopLeftCorner::before {\n z-index: 3;\n content: '';\n position: absolute;\n border-top: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n border-left: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n box-sizing: border-box;\n height: calc(50% + var(--stroke-width));\n top: 50%;\n margin-top: calc(var(--stroke-width) * -1);\n right: 0;\n width: calc(50% + var(--stroke-width));\n }\n\n /**\n * +--+--+\n * | | |\n * | | |\n * | +->|\n * +-----+\n */\n .rst__highlightBottomLeftCorner {\n z-index: 3;\n }\n .rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n border-left: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n box-sizing: border-box;\n height: calc(100% + var(--stroke-width));\n top: 0;\n right: calc(var(--stroke-width) * 3);\n width: calc(50% - calc(var(--stroke-width) * 2));\n }\n\n .rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: calc(var(--stroke-width) * -3);\n border-top: calc(var(--stroke-width) * 3) solid transparent;\n border-bottom: calc(var(--stroke-width) * 3) solid transparent;\n border-left: calc(var(--stroke-width) * 3) solid ${blue[400].hex};\n }\n\n .rst__unclickable {\n pointer-events: none;\n margin-top: -calc(var(--stroke-width) * 3);\n }\n`\n\nconst TreeNodeRendererScaffold: React.FC<any> = (props) => {\n const {\n lowerSiblingCounts,\n scaffoldBlockPxWidth,\n listIndex,\n swapDepth,\n swapFrom,\n swapLength,\n treeIndex,\n } = props\n\n // Construct the scaffold representing the structure of the tree\n const scaffold: React.ReactNode[] = lowerSiblingCounts.map(\n (lowerSiblingCount: number, i: any) => {\n if (lowerSiblingCount < 0 || treeIndex === listIndex || i !== swapDepth) {\n return null\n }\n\n // This row has been shifted, and is at the depth of\n // the line pointing to the new destination\n let highlightLineClass = ''\n\n if (listIndex === (swapFrom || 0) + (swapLength || 0) - 1) {\n // This block is on the bottom (target) line\n // This block points at the target block (where the row will go when released)\n highlightLineClass = 'rst__highlightBottomLeftCorner'\n } else if (treeIndex === swapFrom) {\n // This block is on the top (source) line\n highlightLineClass = 'rst__highlightTopLeftCorner'\n } else {\n // This block is between the bottom and top\n highlightLineClass = 'rst__highlightLineVertical'\n }\n\n const style = {\n width: scaffoldBlockPxWidth,\n left: scaffoldBlockPxWidth * i,\n }\n\n return (\n <div\n key={i}\n style={style}\n className={`rst__unclickable rst__absoluteLineBlock ${highlightLineClass || ''}`}\n tabIndex={-1}\n />\n )\n }\n )\n\n return (\n <>\n {scaffold}\n <ScaffoldStyles />\n </>\n )\n}\n\nexport default TreeNodeRendererScaffold\n","import * as React from 'react'\nimport TreeNodeRendererScaffold from './TreeNodeRendererScaffold'\n\n/**\n * To prevent expand buttons from overflowing on the left, we add a minimum left padding to all entries\n */\nconst BASE_LEFT_PADDING = 10\nconst NESTING_PADDING = 14\n\nconst TreeNodeRenderer: any = (props: any) => {\n const {children, lowerSiblingCounts, connectDropTarget, isOver, draggedNode, canDrop} = props\n\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length\n\n return connectDropTarget(\n <div style={props.style}>\n <div\n style={{\n // prettier-ignore\n paddingLeft: `${BASE_LEFT_PADDING + (NESTING_PADDING * scaffoldBlockCount)}px`\n }}\n >\n {React.Children.map(children, (child) =>\n React.cloneElement(child as React.ReactElement<any>, {\n isOver,\n canDrop,\n draggedNode\n })\n )}\n </div>\n <TreeNodeRendererScaffold {...props} />\n </div>\n )\n}\n\nexport default TreeNodeRenderer\n","import {ReactSortableTreeProps} from '@nosferatu500/react-sortable-tree/react-sortable-tree'\nimport React from 'react'\nimport NodeContentRenderer from '../components/NodeContentRenderer'\nimport PlaceholderDropzone from '../components/PlaceholderDropzone'\nimport TreeNodeRenderer from '../components/TreeNodeRenderer'\n// import {ROW_HEIGHT} from './getTreeHeight'\n\nexport default function getCommonTreeProps({\n placeholder\n}: {\n placeholder: {\n title: string\n subtitle?: string\n }\n}): Partial<ReactSortableTreeProps> {\n return {\n theme: {\n nodeContentRenderer: NodeContentRenderer,\n placeholderRenderer: (props: any) => <PlaceholderDropzone {...placeholder} {...props} />,\n treeNodeRenderer: TreeNodeRenderer,\n style: {height: '100%'},\n innerStyle: undefined,\n scaffoldBlockPxWidth: 44,\n slideRegionSize: 100\n // rowHeight: ROW_HEIGHT,\n }\n }\n}\n","import {getVisibleNodeCount, TreeItem} from '@nosferatu500/react-sortable-tree'\n\nexport default function getTreeHeight(treeData: TreeItem[], rowHeight: number): string {\n const visibleNodeCount = getVisibleNodeCount({treeData})\n\n // prettier-ignore\n return `${50 + (rowHeight * visibleNodeCount)}px`\n}\n","/**\n * react-sortable-tree emits a lot of random errors when dragging to invalid states,\n * even when drag-targets are disabled.\n *\n * This boundary is a workaround so users are not pestered with error-toasts for things\n * that have no functional impact.\n *\n * This boundry does NOT handle errors that happen in the React dnd\n * event handlers, so there is addtional workarounds in the\n * DnDManager.\n * */\nexport const TreeEditorErrorBoundary = (props: any) => {\n return props.children\n}\n","import SortableTree, {FullTree, NodeData} from '@nosferatu500/react-sortable-tree'\nimport {AddCircleIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text, Tooltip} from '@sanity/ui'\nimport * as React from 'react'\nimport {useCallback, useMemo} from 'react'\nimport {DndProvider} from 'react-dnd'\nimport {HTML5Backend} from 'react-dnd-html5-backend'\nimport {PatchEvent} from 'sanity'\nimport useAllItems from '../hooks/useAllItems'\nimport useLocalTree from '../hooks/useLocalTree'\nimport {TreeOperationsContext} from '../hooks/useTreeOperations'\nimport useTreeOperationsProvider from '../hooks/useTreeOperationsProvider'\nimport {Optional, StoredTreeItem, TreeDeskStructureProps} from '../types'\nimport getCommonTreeProps from '../utils/getCommonTreeProps'\nimport getTreeHeight from '../utils/getTreeHeight'\nimport {getUnaddedItems} from '../utils/treeData'\nimport {HandleMovedNodeData} from '../utils/treePatches'\nimport DocumentInNode from './DocumentInNode'\nimport {TreeEditorErrorBoundary} from './TreeEditorErrorBoundary'\n\n/**\n * The loaded tree users interact with\n */\nconst TreeEditor: React.FC<{\n tree: StoredTreeItem[]\n onChange: (patch: PatchEvent) => void\n options: Optional<TreeDeskStructureProps, 'documentId'>\n patchPrefix?: string\n}> = (props) => {\n const {status: allItemsStatus, allItems} = useAllItems(props.options)\n const unAddedItems = getUnaddedItems({tree: props.tree, allItems})\n\n const {localTree, handleVisibilityToggle} = useLocalTree({\n tree: props.tree,\n allItems\n })\n\n const operations = useTreeOperationsProvider({\n patchPrefix: props.patchPrefix,\n onChange: props.onChange,\n localTree\n })\n\n const [context, setContext] = React.useState<HTMLElement | null>(null)\n const [treeViewHeight, setTreeViewHeight] = React.useState<string>('')\n\n const updateTreeViewHeight = () => {\n const el = document.querySelector(`#${props.options.documentId} [data-known-size]`) as HTMLElement | null\n const rowHeight = Number(el?.dataset.knownSize || 51)\n setTreeViewHeight(getTreeHeight(localTree, rowHeight))\n }\n\n React.useEffect(() => {\n if (props.options.documentId) {\n setContext(document.getElementById(props.options.documentId))\n }\n }, [props.options.documentId])\n\n React.useEffect(() => {\n // Wait for dom to load before initial execution.\n setTimeout(updateTreeViewHeight)\n }, [])\n\n React.useEffect(() => {\n // Immediately update when changes are detected.\n updateTreeViewHeight()\n }, [props.options.documentId, localTree])\n\n const onMoveNode = useCallback(\n (data: NodeData & FullTree & any) =>\n operations.handleMovedNode(data as unknown as HandleMovedNodeData),\n [operations]\n )\n\n const treeProps = useMemo(\n () =>\n getCommonTreeProps({\n placeholder: {\n title: 'Add items from the list below'\n }\n }),\n []\n )\n\n const operationContext = useMemo(\n () => ({...operations, allItemsStatus}),\n [operations, allItemsStatus]\n )\n\n return (\n <TreeEditorErrorBoundary>\n {/*Use this Box-wrapper to get a context Element to prevent DndProvider to have to HTML% backend at the same time https://github.com/react-dnd/react-dnd/issues/186#issuecomment-978206387 */}\n <Box id={props.options.documentId}>\n {context ? (\n <DndProvider backend={HTML5Backend} options={{rootElement: context}}>\n <TreeOperationsContext.Provider value={operationContext}>\n <Stack space={4} paddingTop={4}>\n <Card\n style={{minHeight: treeViewHeight}}\n // Only include borderBottom if there's something to show in unadded items\n borderBottom={allItemsStatus !== 'success' || unAddedItems?.length > 0}\n >\n <SortableTree\n maxDepth={props.options.maxDepth}\n onChange={doNothingOnChange}\n onVisibilityToggle={handleVisibilityToggle}\n canDrop={canDrop}\n onMoveNode={onMoveNode}\n treeData={localTree}\n {...treeProps}\n />\n </Card>\n\n {allItemsStatus === 'success' && unAddedItems?.length > 0 && (\n <Stack space={1} paddingX={2} paddingTop={3}>\n <Stack space={2} paddingX={2} paddingBottom={3}>\n <Text size={2} as=\"h2\" weight=\"semibold\">\n Add more items\n </Text>\n <Text size={1} muted>\n Only published documents are shown.\n </Text>\n </Stack>\n {unAddedItems.map((item) => (\n <DocumentInNode\n key={item.publishedId || item.draftId}\n item={item}\n action={\n <Tooltip\n portal\n placement=\"left\"\n content={\n <Box padding={2}>\n <Text size={1}>Add to list</Text>\n </Box>\n }\n >\n <Button\n onClick={() => {\n operations.addItem(item)\n }}\n mode=\"bleed\"\n icon={AddCircleIcon}\n style={{cursor: 'pointer'}}\n />\n </Tooltip>\n }\n />\n ))}\n </Stack>\n )}\n {allItemsStatus === 'loading' && (\n <Flex padding={4} align={'center'} justify={'center'}>\n <Spinner size={3} muted />\n </Flex>\n )}\n {allItemsStatus === 'error' && (\n <Flex padding={4} align={'center'} justify={'center'}>\n <Text size={2} weight=\"semibold\">\n Something went wrong when loading documents\n </Text>\n </Flex>\n )}\n </Stack>\n </TreeOperationsContext.Provider>\n </DndProvider>\n ) : null}\n </Box>\n </TreeEditorErrorBoundary>\n )\n}\n\nfunction canDrop({nextPath, prevPath}: any & NodeData) {\n const insideItself =\n nextPath.length >= prevPath.length &&\n prevPath.every((pathIndex: any, index: string | number) => nextPath[index] === pathIndex)\n return !insideItself\n}\n\nconst doNothingOnChange = () => {\n // Do nothing. onMoveNode will do all the work\n}\n\nexport default TreeEditor\n","// Adapted from @sanity/form-builder/src/sanity/utils/gradientPatchAdapter.ts\nimport {arrayToJSONMatchPath} from '@sanity/mutator'\n\ntype Patch = Record<string, any>\n\ntype GradientPatch = Record<string, any>\n\nexport function toGradient(patches: Patch[]): GradientPatch[] {\n return patches.map(toGradientPatch)\n}\n\nfunction toGradientPatch(patch: Patch): GradientPatch {\n const matchPath = arrayToJSONMatchPath(patch.path || [])\n if (patch.type === 'insert') {\n const {position, items} = patch\n return {\n insert: {\n [position]: matchPath,\n items: items,\n },\n }\n }\n\n if (patch.type === 'unset') {\n return {\n unset: [matchPath],\n }\n }\n\n if (!patch.type) {\n throw new Error(`Missing patch type in patch ${JSON.stringify(patch)}`)\n }\n if (matchPath) {\n return {\n [patch.type]: {\n [matchPath]: patch.value,\n },\n }\n }\n return {\n [patch.type]: patch.value,\n }\n}\n","import {Box, Flex, Spinner} from '@sanity/ui'\nimport * as React from 'react'\nimport {PatchEvent, useDocumentOperation, useEditState} from 'sanity'\nimport DeskWarning from './components/DeskWarning'\nimport TreeEditor from './components/TreeEditor'\nimport {DocumentOperations, StoredTreeItem, TreeDeskStructureProps} from './types'\nimport {toGradient} from './utils/gradientPatchAdapter'\nimport injectNodeTypeInPatches, {DEFAULT_DOC_TYPE} from './utils/injectNodeTypeInPatches'\n\ninterface ComponentProps {\n options: TreeDeskStructureProps\n}\n\nexport const DEFAULT_FIELD_KEY = 'tree'\n\nconst TreeDeskStructure: React.FC<ComponentProps> = (props) => {\n const treeDocType = props.options.documentType || DEFAULT_DOC_TYPE\n const treeFieldKey = props.options.fieldKeyInDocument || DEFAULT_FIELD_KEY\n const {published, draft, liveEdit} = useEditState(props.options.documentId, treeDocType)\n const {patch} = useDocumentOperation(props.options.documentId, treeDocType) as DocumentOperations\n\n const treeValue = (published?.[treeFieldKey] || []) as StoredTreeItem[]\n\n const handleChange = React.useCallback(\n (patchEvent: PatchEvent) => {\n if (!patch?.execute) {\n return\n }\n patch.execute(toGradient(injectNodeTypeInPatches(patchEvent.patches, treeDocType)))\n },\n [patch]\n )\n\n React.useEffect(() => {\n if (!published?._id && patch?.execute && !patch?.disabled) {\n // If no published document, create it\n patch.execute([{setIfMissing: {[treeFieldKey]: []}}])\n }\n }, [published?._id, patch])\n\n if (!liveEdit) {\n return (\n <DeskWarning\n title=\"Invalid configuration\"\n subtitle=\"The `documentType` passed to `createDeskHiearchy` isn't live editable. \\nTo continue using this plugin, add `liveEdit: true` to your custom schema type or unset `documentType` in your hierarchy configuration.\"\n />\n )\n }\n\n if (draft?._id) {\n return (\n <DeskWarning\n title=\"This hierarchy tree contains a draft\"\n subtitle=\"Click on the button below to publish your draft in order to continue editing the live\n published document.\"\n />\n )\n }\n\n if (!published?._id) {\n return (\n <Flex padding={5} align={'center'} justify={'center'} height={'fill'}>\n <Spinner width={4} muted />\n </Flex>\n )\n }\n\n return (\n <Box paddingBottom={5} paddingRight={2}>\n <TreeEditor\n options={props.options}\n tree={treeValue}\n onChange={handleChange}\n patchPrefix={treeFieldKey}\n />\n </Box>\n )\n}\n\nexport default TreeDeskStructure\n","const ERROR_MESSAGES = {\n invalidDocumentId: 'Please add a documentId to your tree',\n invalidDocumentType: 'Please add a valid documentType to createHierarchicalSchemas',\n invalidReferenceTo: \"Missing valid 'referenceTo' value\",\n}\n\nexport default function throwError(message: keyof typeof ERROR_MESSAGES, extraContext = ''): void {\n throw new Error(`[hierarchical input] ${ERROR_MESSAGES[message]} ${extraContext}`)\n}\n","import {AddIcon} from '@sanity/icons'\nimport * as React from 'react'\nimport type {ConfigContext} from 'sanity'\nimport {StructureBuilder} from 'sanity/desk'\n\nimport TreeDeskStructure from './TreeDeskStructure'\nimport {TreeDeskStructureProps} from './types'\nimport throwError from './utils/throwError'\n\nexport interface TreeProps extends TreeDeskStructureProps {\n /**\n * Visible title above the tree.\n * Also used as the label in the desk list item.\n */\n title: string\n\n /**\n * Optional icon for rendering the item in the desk structure.\n */\n icon?: any\n\n context?: ConfigContext | any\n S?: StructureBuilder | any\n /**\n * Restrict document types that can be created.\n */\n creatableTypes?: string[]\n}\n\nconst deskTreeValidator = (props: TreeProps): React.FC => {\n const {documentId, referenceTo} = props\n if (typeof documentId !== 'string' && !documentId) {\n throwError('invalidDocumentId')\n }\n if (!Array.isArray(referenceTo)) {\n throwError('invalidReferenceTo', `(documentId \"${documentId}\")`)\n }\n\n return (deskProps) => <TreeDeskStructure {...deskProps} options={props} />\n}\n\nexport default function createDeskHierarchy(props: TreeProps) {\n const {documentId, referenceTo, referenceOptions, context, S, creatableTypes} = props\n if (!S || !context) {\n throw new Error('Invalid configuration. S or context props are undefined. ' +\n 'These props are available as function parameters when configuring structure, and must be passed along to createDeskHierarchy. ' +\n 'Confer the plugin README for example usage.')\n }\n\n const {schema} = context\n\n const safelyCreatableTypes =\n creatableTypes && !creatableTypes.some((type) => referenceTo.indexOf(type))\n ? creatableTypes\n : referenceTo\n\n let mainList = (\n referenceTo?.length === 1\n ? S.documentTypeList(referenceTo[0]).schemaType(referenceTo[0])\n : S.documentList().filter('_type in $types').params({types: referenceTo})\n )\n .id(documentId)\n .menuItems(\n (safelyCreatableTypes || []).map((schemaType) =>\n S.menuItem()\n .intent({\n type: 'create',\n params: {type: schemaType}\n })\n .title(`Create ${schema.get(schemaType)?.title}`)\n .icon(schema.get(schemaType)?.icon || AddIcon)\n )\n )\n .canHandleIntent((intent: string, c: Record<string, unknown>) => {\n // Can edit itself\n if (intent === 'edit' && c.id === props.documentId) {\n return true\n }\n // Can create & edit referenced document types\n if (safelyCreatableTypes.includes(c.type as string)) {\n return true\n }\n return false\n })\n\n if (referenceOptions?.filter) {\n mainList = mainList.filter(referenceOptions.filter)\n }\n\n if (referenceOptions?.filterParams) {\n mainList = mainList.params(referenceOptions.filterParams)\n }\n\n return S.listItem()\n .id(documentId)\n .title(props.title || documentId)\n .icon(props.icon)\n .child(\n Object.assign(\n mainList.serialize(),\n {\n type: 'component',\n component: deskTreeValidator(props),\n options: props,\n __preserveInstance: true\n },\n props.title ? {title: props.title} : {}\n )\n )\n}\n","import * as React from 'react'\nimport {FormField, FormNodePresence, PatchEvent, Path} from 'sanity'\nimport TreeEditor from './components/TreeEditor'\nimport {StoredTreeItem, TreeFieldSchema} from './types'\nimport injectNodeTypeInPatches, {DEFAULT_DOC_TYPE} from './utils/injectNodeTypeInPatches'\n\nexport interface TreeInputComponentProps {\n type: TreeFieldSchema\n value: StoredTreeItem[]\n level: number\n onChange: (event: unknown) => void\n onFocus: (path: Path) => void\n onBlur: () => void\n focusPath: Path\n readOnly: boolean\n presence: FormNodePresence[]\n}\n\nconst TreeInputComponent: React.FC<TreeInputComponentProps> = (props) => {\n const documentType = props.type.options.documentType || DEFAULT_DOC_TYPE\n\n const onChange = React.useCallback(\n (patch: any) => {\n const patches = injectNodeTypeInPatches(patch?.patches, documentType)\n props.onChange(new PatchEvent(patches))\n },\n [props.onChange]\n )\n\n return (\n <FormField\n description={props.type.description} // Creates description from schema\n title={props.type.title} // Creates label from schema title\n __unstable_presence={props.presence} // Handles presence avatars\n >\n <TreeEditor options={props.type.options} tree={props.value || []} onChange={onChange} />\n </FormField>\n )\n}\n\nexport default TreeInputComponent\n","import * as React from 'react'\nimport {ArraySchemaType} from 'sanity'\nimport {DEFAULT_FIELD_KEY} from './TreeDeskStructure'\nimport TreeInputComponent from './TreeInputComponent'\nimport {TreeDeskStructureProps, TreeFieldSchema} from './types'\nimport {\n INTERNAL_NODE_ARRAY_TYPE,\n INTERNAL_NODE_TYPE,\n INTERNAL_NODE_VALUE_TYPE,\n getSchemaTypeName\n} from './utils/injectNodeTypeInPatches'\nimport throwError from './utils/throwError'\n\ntype SchemaOptions = Omit<TreeDeskStructureProps, 'documentId' | 'maxDepth'>\n\nfunction createHierarchicalNodeValueType({\n referenceTo,\n referenceOptions,\n documentType\n}: SchemaOptions) {\n return {\n // when used inside the field, name & type are overwritten by createHierarchicalNodeType\n name: documentType ? getSchemaTypeName(documentType, 'nodeValue') : INTERNAL_NODE_VALUE_TYPE,\n type: 'object',\n title: `Hierarchical node value (${documentType})`,\n\n fields: [\n {name: 'docType', type: 'string'},\n {\n name: 'reference',\n type: 'reference',\n weak: true,\n to: referenceTo.map((type) => ({type})),\n options: referenceOptions\n }\n ]\n }\n}\n\nfunction createHierarchicalNodeType(options: SchemaOptions) {\n return {\n // name & type are overwritten by createHierarchicalField\n name: options.documentType\n ? getSchemaTypeName(options.documentType, 'node')\n : INTERNAL_NODE_TYPE,\n title: `Hierarchical node (${options.documentType})`,\n type: 'object',\n fields: [\n {name: 'parent', type: 'string'},\n\n options.documentType\n ? {name: 'value', type: getSchemaTypeName(options.documentType, 'nodeValue')}\n : // If no documentType is defined, use an anonymized inline object to avoid\n // having to define another custom schema type through the plugin\n {\n ...createHierarchicalNodeValueType(options),\n name: 'value',\n type: 'object'\n }\n ]\n }\n}\n\nfunction createHierarchicalArrayType(options: SchemaOptions) {\n return {\n // name & type are overwritten by createHierarchicalField\n name: options.documentType\n ? getSchemaTypeName(options.documentType, 'array')\n : INTERNAL_NODE_ARRAY_TYPE,\n title: `Hierarchical array of nodes (${options.documentType})`,\n type: 'array',\n of: [\n options.documentType\n ? {type: getSchemaTypeName(options.documentType, 'node')}\n : createHierarchicalNodeType(options)\n ]\n }\n}\n\nexport function createHierarchicalField({name, title, options, ...rest}: TreeFieldSchema): Omit<\n ArraySchemaType,\n 'type' | 'jsonType' | 'of'\n> & {\n type: string\n inputComponent: React.FC<any>\n of?: any[]\n} {\n if (!Array.isArray(options?.referenceTo)) {\n throwError('invalidReferenceTo', `(field of name \"${name}\")`)\n }\n\n return {\n ...rest,\n name,\n title,\n inputComponent: TreeInputComponent,\n options,\n ...(options.documentType\n ? {type: getSchemaTypeName(options.documentType, 'array')}\n : {\n ...createHierarchicalArrayType(options),\n name\n })\n }\n}\n\nfunction createHierarchicalDocType(options: SchemaOptions) {\n return {\n name: options.documentType,\n title: 'Hierarchical tree',\n type: 'document',\n // The plugin needs to define a `schemaType` with liveEdit enabled so that\n // `useDocumentOperation` in TreeDeskStructure.tsx doesn't create drafts at every patch.\n liveEdit: true,\n fields: [\n createHierarchicalField({\n name: options.fieldKeyInDocument || DEFAULT_FIELD_KEY,\n title: 'Hierarchical Tree',\n options\n })\n ],\n preview: {\n select: {\n id: '_id',\n tree: 'tree'\n },\n prepare({id, tree}: {id: string; tree: unknown[]}): Record<string, string> {\n return {\n title: `Hierarchical documents (ID: ${id})`,\n subtitle: `${tree?.length || 0} document(s) in its list.`\n }\n }\n }\n }\n}\n\nexport default function createHierarchicalSchemas(options: SchemaOptions) {\n if (!Array.isArray(options.referenceTo) || options.referenceTo.length <= 0) {\n throwError('invalidReferenceTo')\n }\n if (!options.documentType) {\n throwError('invalidDocumentType')\n }\n\n return [\n createHierarchicalDocType(options),\n createHierarchicalArrayType(options),\n createHierarchicalNodeType(options),\n createHierarchicalNodeValueType(options)\n ]\n}\n","import {defineType} from 'sanity'\n\nexport default defineType({\n name: 'hierarchy.tree',\n title: 'Hierarchical tree',\n type: 'document',\n // The plugin needs to define a `schemaType` with liveEdit enabled so that\n // `useDocumentOperation` in TreeDeskStructure.tsx doesn't create drafts at every patch.\n liveEdit: true,\n // Let's avoid defining the actual hierarchical field, else GraphQL users won't be able to deploy schemas\n fields: [\n {\n name: 'unusedField',\n title: 'Unused field',\n type: 'string',\n hidden: true,\n },\n ],\n})\n","import {definePlugin} from 'sanity'\nimport {default as createDeskHierarchy, type TreeProps} from './createDeskHierarchy'\nimport {default as createHierarchicalSchemas} from './createHierarchicalSchemas'\nimport {default as hierarchyTree} from './schemas/hierarchy.tree'\nimport {default as flatDataToTree} from './utils/flatDataToTree'\n\nexport {createDeskHierarchy, createHierarchicalSchemas, flatDataToTree, hierarchyTree, TreeProps}\n\n/**\n * Usage in `sanity.config.ts` (or .js)\n *\n * ```ts\n * import {defineConfig} from 'sanity'\n * import {hierarchicalDocumentList} from '@sanity/hierarchical-document-list'\n *\n * export default defineConfig({\n * // ...\n * plugins: [hierarchicalDocumentList()],\n * })\n * ```\n */\n\nexport const hierarchicalDocumentList = definePlugin({\n name: 'sanity-plugin-hierarchical-document-list'\n})\n"],"names":["jsx","Fragment","React","Container","Card","jsxs","Stack","Heading","Text","Box","require$$0","global","result","throttle","x","w","defaultProps","createRef","useEffect","DndContext","exports","module","map","Symbol","Map","Promise","othValue","isEqual","E","L","io","Ut","jt","canDrop","Component","Children","cloneElement","DragSource","DropTarget","withScrolling","Virtuoso","TreeNodeRenderer","NodeContentRenderer","DndProvider","HTML5Backend","useClient","useTimeAgo","document","Tooltip","TextWithTone","PublishIcon","EditIcon","Inline","usePaneRouter","useSchema","Flex","Preview","HelpCircleIcon","IntentLink","MenuButton","Button","EllipsisVerticalIcon","Menu","MenuItem","RemoveCircleIcon","CopyIcon","MenuDivider","LaunchIcon","randomKey","Patch","setIfMissing","PatchEvent","prefixPath","styled","Spinner","DragHandleIcon","ChevronDownIcon","ChevronRightIcon","createGlobalStyle","placeholder","useCallback","useMemo","AddCircleIcon","arrayToJSONMatchPath","useEditState","useDocumentOperation","AddIcon","FormField","defineType","definePlugin"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,21]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/DeskWarning.tsx","../src/utils/idUtils.ts","../src/hooks/useAllItems.ts","../src/hooks/useTreeOperations.ts","../src/components/DocumentPreviewStatus.tsx","../src/components/DocumentInNode.tsx","../src/components/NodeActions.tsx","../src/utils/flatDataToTree.ts","../src/utils/injectNodeTypeInPatches.ts","../src/utils/treeData.tsx","../src/hooks/useLocalTree.ts","../src/utils/getAdjescentNodes.ts","../src/utils/moveItemInArray.ts","../src/utils/treePatches.ts","../src/hooks/useTreeOperationsProvider.ts","../src/components/NodeContentRenderer.tsx","../src/components/PlaceholderDropzone.tsx","../src/components/TreeNodeRendererScaffold.tsx","../src/components/TreeNodeRenderer.tsx","../src/utils/getCommonTreeProps.tsx","../src/utils/getTreeHeight.ts","../src/components/TreeEditorErrorBoundary.tsx","../src/components/TreeEditor.tsx","../src/utils/gradientPatchAdapter.ts","../src/TreeDeskStructure.tsx","../src/utils/throwError.ts","../src/createDeskHierarchy.tsx","../src/TreeInputComponent.tsx","../src/createHierarchicalSchemas.tsx","../src/schemas/hierarchy.tree.ts","../src/index.ts"],"sourcesContent":["import {Box, Card, Container, Heading, Stack, Text} from '@sanity/ui'\nimport {Fragment, type PropsWithChildren} from 'react'\n\n// React component that wraps text between two delimiters in a <code> tag\n\nconst WrapCodeBlocks = ({text}: {text: string}) => {\n return (\n <>\n {text.split('`').map((part, i) => (\n <Fragment key={i}>{i % 2 === 0 ? part : <code>{part}</code>}</Fragment>\n ))}\n </>\n )\n}\n\nconst DeskWarning = (\n props: PropsWithChildren<{\n title: string\n subtitle?: string\n }>,\n) => {\n return (\n <Container padding={5} style={{maxWidth: '25rem'}} sizing={'content'}>\n <Card padding={4} border radius={2} width={0} tone=\"caution\">\n <Stack gap={3}>\n <Heading size={1}>{props.title}</Heading>\n {props.subtitle &&\n props.subtitle.split('\\\\n').map((line: string) => (\n <Text size={1} key={line}>\n <WrapCodeBlocks text={line} />\n </Text>\n ))}\n {props.children && <Box marginTop={2}>{props.children}</Box>}\n </Stack>\n </Card>\n </Container>\n )\n}\n\nexport default DeskWarning\n","export function unprefixId(_id = ''): string {\n return _id.replace('drafts.', '')\n}\n\nexport function isDraft(_id = ''): boolean {\n return _id.startsWith('drafts.')\n}\n","import {useEffect, useReducer, useState} from 'react'\nimport {type SanityDocument, useClient} from 'sanity'\n\nimport type {AllItems, TreeInputOptions} from '../types'\nimport {isDraft, unprefixId} from '../utils/idUtils'\n\nfunction getDeskFilter({referenceTo, referenceOptions}: TreeInputOptions): {\n filter: string\n params: Record<string, unknown>\n} {\n const filterParts: string[] = ['_type in $docTypes']\n\n if (referenceOptions?.filter) {\n filterParts.push(referenceOptions.filter)\n }\n\n return {\n filter: filterParts.join(' && '),\n params: {\n ...referenceOptions?.filterParams,\n docTypes: referenceTo.map((schemaType) => schemaType),\n },\n }\n}\n\ntype Status = 'loading' | 'success' | 'error'\n\ntype ACTIONTYPE =\n | {type: 'addOrEditItem'; item: SanityDocument}\n | {type: 'removeItem'; itemId: string}\n | {type: 'setInitialData'; items: SanityDocument[]}\n\nfunction updateItemInState(state: AllItems, item: SanityDocument): AllItems {\n const newState = {...state}\n const publishedId = unprefixId(item._id)\n newState[publishedId] = {\n ...newState[publishedId],\n [isDraft(item._id) ? 'draft' : 'published']: item,\n }\n return newState\n}\n\nfunction allItemsReducer(state: AllItems, action: ACTIONTYPE): AllItems {\n if (action.type === 'addOrEditItem' && action.item?._id) {\n return updateItemInState(state, action.item)\n }\n\n if (action.type === 'removeItem') {\n const publishedId = unprefixId(action.itemId)\n return {\n ...state,\n [publishedId]: isDraft(action.itemId)\n ? // If a draft, keep only published\n {\n published: state[publishedId]?.published,\n }\n : {\n draft: state[publishedId]?.draft,\n },\n }\n }\n\n if (action.type === 'setInitialData') {\n return action.items.reduce(updateItemInState, {})\n }\n return state\n}\n\nexport default function useAllItems(options: TreeInputOptions): {\n status: Status\n allItems: AllItems\n} {\n const client = useClient({\n apiVersion: '2021-09-01',\n })\n const [status, setStatus] = useState<Status>('loading')\n const [allItems, dispatch] = useReducer(allItemsReducer, {})\n\n useEffect(() => {\n function handleListener(event: {type?: string; result?: SanityDocument; documentId?: string}) {\n if (event.type !== 'mutation') {\n return\n }\n\n if (event.result) {\n dispatch({type: 'addOrEditItem', item: event.result})\n } else if (event.documentId) {\n dispatch({type: 'removeItem', itemId: event.documentId})\n }\n }\n\n const {filter, params} = getDeskFilter(options)\n const query = `*[${filter}] {\n _id,\n _type,\n _updatedAt,\n }`\n\n async function fetchInitialData() {\n try {\n const items = await client.fetch<SanityDocument[]>(query, params)\n dispatch({type: 'setInitialData', items})\n setStatus('success')\n } catch {\n setStatus('error')\n }\n }\n void fetchInitialData()\n\n const listener = client.listen(query, params).subscribe(handleListener)\n return () => {\n listener.unsubscribe()\n }\n }, [client, options])\n\n return {\n status,\n allItems,\n }\n}\n","import {createContext, useContext} from 'react'\n\nimport type useAllItems from './useAllItems'\nimport type useTreeOperationsProvider from './useTreeOperationsProvider'\n\ntype ContextValue = ReturnType<typeof useTreeOperationsProvider> & {\n allItemsStatus: ReturnType<typeof useAllItems>['status']\n}\n\nfunction placeholder() {\n // no-op\n}\n\nexport const TreeOperationsContext = createContext<ContextValue>({\n addItem: placeholder,\n duplicateItem: placeholder,\n removeItem: placeholder,\n handleMovedNode: placeholder,\n moveItemDown: placeholder,\n moveItemUp: placeholder,\n allItemsStatus: 'loading',\n})\n\nexport default function useTreeOperations(): ContextValue {\n return useContext(TreeOperationsContext)\n}\n","import {EditIcon, PublishIcon} from '@sanity/icons'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport {type SanityDocument, TextWithTone, useRelativeTime} from 'sanity'\n\nimport type {DocumentPair} from '../types'\n\nfunction TimeAgo({time}: {time: string | Date}) {\n const timeAgo = useRelativeTime(time)\n\n return (\n <span title={timeAgo}>\n {timeAgo}\n {timeAgo.toLowerCase().trim().startsWith('just now') ? '' : ' ago'}\n </span>\n )\n}\n\nconst PublishedStatus = ({document}: {document?: SanityDocument | null}) => (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Published {document._updatedAt && <TimeAgo time={document._updatedAt} />}</>\n ) : (\n <>Not published</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"positive\" dimmed={!document} muted={!document} size={1}>\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n)\n\nconst DraftStatus = ({document}: {document?: SanityDocument | null}) => (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Edited {document?._updatedAt && <TimeAgo time={document?._updatedAt} />}</>\n ) : (\n <>No unpublished edits</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"caution\" dimmed={!document} muted={!document} size={1}>\n <EditIcon />\n </TextWithTone>\n </Tooltip>\n)\n\n// Adapted from @sanity\\desk-tool\\src\\components\\paneItem\\helpers.tsx\nconst DocumentPreviewStatus = ({draft, published}: DocumentPair) => {\n return (\n <Inline gap={4}>\n <PublishedStatus document={published} />\n <DraftStatus document={draft} />\n </Inline>\n )\n}\n\nexport default DocumentPreviewStatus\n","import {HelpCircleIcon} from '@sanity/icons'\nimport {Box, Card, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport {type ReactNode, forwardRef, useMemo} from 'react'\nimport {Preview, type SanityDocument, type SchemaType, TextWithTone, useSchema} from 'sanity'\nimport {type RouterPaneGroup, usePaneRouter} from 'sanity/structure'\n\nimport useTreeOperations from '../hooks/useTreeOperations'\nimport type {LocalTreeItem} from '../types'\nimport DocumentPreviewStatus from './DocumentPreviewStatus'\n\n/**\n * Renders a preview for each referenced document.\n * Nested inside TreeNode.tsx\n */\nconst DocumentInNode = (props: {item: LocalTreeItem; action?: ReactNode}) => {\n const {value: {reference, docType} = {}, draftId, publishedId} = props.item\n const referenceId = reference?._ref\n const {routerPanesState, ChildLink} = usePaneRouter()\n const {allItemsStatus} = useTreeOperations()\n const schema = useSchema()\n const isActive = useMemo(() => {\n // If some pane is active with the current document `_id`, it's active\n return routerPanesState.some((pane: RouterPaneGroup) =>\n pane.some((group) => group.id === referenceId),\n )\n }, [referenceId, routerPanesState])\n\n const type = useMemo(() => {\n return docType ? schema.get(docType) : undefined\n }, [docType, schema])\n\n const LinkComponent = useMemo(\n () =>\n forwardRef((linkProps: any, ref: any) => (\n <ChildLink\n {...linkProps}\n childId={referenceId}\n ref={ref}\n childParameters={{\n type: docType,\n }}\n />\n )),\n [ChildLink, docType, referenceId],\n )\n\n if (!reference?._ref) {\n return null\n }\n\n return (\n <Flex gap={2} align=\"center\" style={{flex: 1}}>\n {/* Show loading preview while allItems aren't ready */}\n {publishedId || allItemsStatus !== 'success' ? (\n /* Card loosely copied from @sanity/desk-tool's PaneItem.tsx */\n <Card\n __unstable_focusRing\n as={LinkComponent}\n tone={isActive ? 'primary' : 'default'}\n padding={1}\n radius={2}\n flex={1}\n data-as=\"a\"\n data-ui=\"PaneItem\"\n >\n <Preview\n layout=\"default\"\n schemaType={type as SchemaType}\n value={{_ref: draftId || reference?._ref}}\n status={\n <DocumentPreviewStatus\n draft={\n draftId\n ? ({\n _id: draftId,\n _type: docType,\n _updatedAt: props.item.draftUpdatedAt,\n } as SanityDocument)\n : undefined\n }\n published={\n {\n _id: reference?._ref,\n _type: docType,\n _updatedAt: props.item.publishedUpdatedAt,\n } as SanityDocument\n }\n />\n }\n />\n </Card>\n ) : (\n <Card padding={3} radius={1} flex={1}>\n <Flex align=\"center\">\n <Text size={2} muted style={{flex: 1}}>\n Invalid document\n </Text>\n <Tooltip\n placement=\"left\"\n portal\n content={\n <Box padding={3}>\n <Flex align=\"flex-start\" gap={3}>\n <TextWithTone tone=\"default\" size={3}>\n <HelpCircleIcon />\n </TextWithTone>\n <Stack gap={3}>\n <Text as=\"h2\" size={1} weight=\"semibold\">\n This document is not valid\n </Text>\n {/* <Text size={1}>\n It was deleted or it doesn't match the filters set by this hierarchy.\n </Text> */}\n <Text size={1}>ID: {reference?._ref}</Text>\n </Stack>\n </Flex>\n </Box>\n }\n >\n <TextWithTone tone=\"default\" size={2}>\n <HelpCircleIcon />\n </TextWithTone>\n </Tooltip>\n </Flex>\n </Card>\n )}\n {props.action}\n </Flex>\n )\n}\n\nexport default DocumentInNode\n","import {CopyIcon, EllipsisVerticalIcon, LaunchIcon, RemoveCircleIcon} from '@sanity/icons'\nimport {Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {type ComponentProps, type ForwardedRef, forwardRef, useMemo} from 'react'\nimport {IntentButton as IntentLink} from 'sanity'\n\nimport useTreeOperations from '../hooks/useTreeOperations'\nimport type {NodeProps} from '../types'\n\n/**\n * Applicable only to nodes inside the main tree.\n * Unadded items have their actions defined in TreeEditor.\n */\nconst NodeActions = ({nodeProps}: {nodeProps: NodeProps}) => {\n const operations = useTreeOperations()\n const {node} = nodeProps\n const {reference, docType} = node?.value || {}\n const referenceId = reference?._ref\n\n // Adapted from @sanity\\form-builder\\src\\inputs\\ReferenceInput\\ArrayItemReferenceInput.tsx\n const OpenLink = useMemo(\n () =>\n forwardRef(function OpenLinkInner(\n restProps: ComponentProps<typeof IntentLink>,\n _ref: ForwardedRef<HTMLAnchorElement>,\n ) {\n return (\n <IntentLink\n {...restProps}\n intent=\"edit\"\n params={{id: referenceId, type: docType}}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n />\n )\n }),\n [referenceId, docType],\n )\n\n const isValid = !!node.publishedId\n return (\n <MenuButton\n button={<Button padding={2} mode=\"bleed\" icon={EllipsisVerticalIcon} />}\n id={`hiearchical-doc-list--${node._key}-menuButton`}\n menu={\n <Menu>\n <MenuItem\n text=\"Remove from list\"\n tone=\"critical\"\n icon={RemoveCircleIcon}\n onClick={() => operations.removeItem(nodeProps)}\n />\n <MenuItem\n text=\"Duplicate item\"\n icon={CopyIcon}\n disabled={!isValid}\n onClick={() => operations.duplicateItem(nodeProps)}\n />\n {/* <MenuItem\n text=\"Move up\"\n icon={ArrowUpIcon}\n disabled={!isValid}\n onClick={() => operations.moveItemUp(nodeProps)}\n />\n <MenuItem\n text=\"Move down\"\n icon={ArrowDownIcon}\n disabled={!isValid}\n onClick={() => operations.moveItemDown(nodeProps)}\n /> */}\n <MenuDivider />\n <MenuItem\n text=\"Open in new tab\"\n icon={LaunchIcon}\n disabled={!isValid}\n as={OpenLink}\n data-as=\"a\"\n />\n </Menu>\n }\n popover={{portal: true, tone: 'default', placement: 'right'}}\n />\n )\n}\n\nexport default NodeActions\n","import type {StoredTreeItem} from '../types'\n\ninterface TreeItemWithChildren extends StoredTreeItem {\n // Index signature for structural compatibility with react-sortable-tree's TreeItem\n [key: string]: unknown\n children?: TreeItemWithChildren[]\n}\n\n/**\n * Converts the flat array stored in the Sanity document into a nested tree,\n * nesting items under their `parent` _key. Items without a `parent` are roots.\n */\nexport default function flatDataToTree(data: StoredTreeItem[]): TreeItemWithChildren[] {\n const childrenByParent = new Map<string | null, StoredTreeItem[]>()\n for (const item of data) {\n const parentKey = item.parent || null\n const siblings = childrenByParent.get(parentKey)\n if (siblings) {\n siblings.push(item)\n } else {\n childrenByParent.set(parentKey, [item])\n }\n }\n\n const buildNode = (item: StoredTreeItem): TreeItemWithChildren => {\n const children = childrenByParent.get(item._key)\n return children ? {...item, children: children.map(buildNode)} : {...item}\n }\n\n return (childrenByParent.get(null) || []).map(buildNode)\n}\n","export function getSchemaTypeName(\n documentType: string,\n type: 'document' | 'node' | 'nodeValue' | 'array',\n): string {\n switch (type) {\n case 'document':\n return documentType\n case 'array':\n return `${documentType}.array`\n case 'node':\n return `${documentType}.node`\n case 'nodeValue':\n return `${documentType}.nodeValue`\n default:\n return documentType\n }\n}\n\n/**\n * Temporary value of nodes' `_type` before they are normalized and persisted as the user-defined choice.\n */\nexport const DEFAULT_DOC_TYPE = 'hierarchy.tree'\nexport const INTERNAL_NODE_TYPE = getSchemaTypeName(DEFAULT_DOC_TYPE, 'node')\nexport const INTERNAL_NODE_VALUE_TYPE = getSchemaTypeName(DEFAULT_DOC_TYPE, 'nodeValue')\nexport const INTERNAL_NODE_ARRAY_TYPE = getSchemaTypeName(DEFAULT_DOC_TYPE, 'array')\n\n/**\n * Barebones recursive utility to inject the desired nodeObjectType in patches generated in deeply nested components and utilities.\n */\nexport default function injectNodeTypeInPatches(patchData: any, documentType: string): any {\n if (Array.isArray(patchData)) {\n return patchData.map((child) => injectNodeTypeInPatches(child, documentType))\n }\n if (typeof patchData === 'object' && patchData !== null) {\n const newObject: Record<string, unknown> = {}\n for (const key of Object.keys(patchData)) {\n const value = patchData[key as keyof typeof patchData]\n\n if (\n key === '_type' &&\n typeof value === 'string' &&\n [INTERNAL_NODE_TYPE, INTERNAL_NODE_VALUE_TYPE].includes(value)\n ) {\n newObject[key] = getSchemaTypeName(\n documentType,\n value === INTERNAL_NODE_TYPE ? 'node' : 'nodeValue',\n )\n } else {\n newObject[key] = injectNodeTypeInPatches(value, documentType)\n }\n }\n return newObject\n }\n return patchData\n}\n","import {randomKey} from '@sanity/util/content'\n\nimport DocumentInNode from '../components/DocumentInNode'\nimport NodeActions from '../components/NodeActions'\nimport type {\n AllItems,\n DocumentPair,\n EnhancedTreeItem,\n LocalTreeItem,\n NodeProps,\n StoredTreeItem,\n VisibilityMap,\n} from '../types'\nimport flatDataToTree from './flatDataToTree'\nimport {INTERNAL_NODE_TYPE, INTERNAL_NODE_VALUE_TYPE} from './injectNodeTypeInPatches'\n\nexport const dataToEditorTree = ({\n tree,\n allItems,\n visibilityMap,\n}: {\n tree: StoredTreeItem[]\n allItems: AllItems\n visibilityMap: VisibilityMap\n}): LocalTreeItem[] => {\n const itemsWithTitle = tree\n .filter((item) => item?.value?.reference?._ref)\n .map((item) => {\n const refId = item.value?.reference?._ref\n const docPair = refId ? allItems[refId] : undefined\n const draftDoc = docPair?.draft\n const publishedDoc = docPair?.published\n\n const enhancedItem: LocalTreeItem = {\n _key: item._key,\n _type: item._type,\n value: item.value,\n parent: item.parent,\n expanded: visibilityMap[item._key] !== false,\n draftId: draftDoc?._id,\n publishedId: publishedDoc?._id,\n draftUpdatedAt: draftDoc?._updatedAt,\n publishedUpdatedAt: publishedDoc?._updatedAt,\n }\n\n return Object.assign(enhancedItem, {\n title: (nodeProps: NodeProps) => (\n <DocumentInNode item={enhancedItem} action={<NodeActions nodeProps={nodeProps} />} />\n ),\n children: [],\n })\n })\n return flatDataToTree(itemsWithTitle)\n}\n\nconst documentPairToNode = (doc?: DocumentPair): EnhancedTreeItem | undefined => {\n if (!doc?.published?._id) {\n return undefined\n }\n\n return {\n _key: randomKey(12),\n _type: INTERNAL_NODE_TYPE,\n draftId: doc.draft?._id,\n draftUpdatedAt: doc.draft?._updatedAt,\n publishedId: doc.published._id,\n publishedUpdatedAt: doc.published?._updatedAt,\n value: {\n _type: INTERNAL_NODE_VALUE_TYPE,\n reference: {\n _ref: doc.published._id,\n _type: 'reference',\n _weak: true,\n },\n docType: doc.published._type,\n },\n }\n}\n\nexport const getUnaddedItems = (data: {\n allItems: AllItems\n tree: StoredTreeItem[]\n}): EnhancedTreeItem[] => {\n if (!data.tree) {\n return Object.values(data.allItems).flatMap((documentPair) => {\n const node = documentPairToNode(documentPair)\n return node ? [node] : []\n })\n }\n\n return Object.entries(data.allItems)\n .filter(\n ([publishedId]) =>\n publishedId &&\n // unadded items shouldn't be in the tree\n !data.tree.some((treeItem) => treeItem?.value?.reference?._ref === publishedId),\n )\n .flatMap(([, documentPair]) => {\n const node = documentPairToNode(documentPair)\n return node ? [node] : []\n })\n}\n\nexport function normalizeNodeForStorage(item: LocalTreeItem): StoredTreeItem {\n return {\n _key: item._key,\n _type: item._type || INTERNAL_NODE_TYPE,\n value: item.value,\n parent: item.parent,\n }\n}\n","import {useState} from 'react'\n\nimport type {AllItems, LocalTreeItem, StoredTreeItem, VisibilityMap} from '../types'\nimport {dataToEditorTree} from '../utils/treeData'\n\n/**\n * Enhances tree data with information on:\n * - `expanded` - native property of react-sortable-tree to determine collapsing & expanding of a node's children\n * - `draftId` & `publishedId` - refer to LocalTreeItem's type annotations\n *\n * Doesn't modify the main tree or has side-effects on data.\n * Has the added benefit of being local to the user, so external changes won't affect local visibility.\n */\nexport default function useLocalTree({\n tree,\n allItems,\n}: {\n tree: StoredTreeItem[]\n allItems: AllItems\n}): {\n handleVisibilityToggle: (data: any) => void\n localTree: LocalTreeItem[]\n} {\n const [visibilityMap, setVisibilityMap] = useState<VisibilityMap>({})\n\n function handleVisibilityToggle(data: any) {\n setVisibilityMap((currentMap) => ({\n ...currentMap,\n [data.node._key]: data.expanded,\n }))\n }\n\n return {\n localTree: dataToEditorTree({\n tree,\n allItems,\n visibilityMap,\n }),\n handleVisibilityToggle,\n }\n}\n","import type {LocalTreeItem} from '../types'\nimport type {LocalFlatDataItem} from './treePatches'\n\n/**\n * Gets adjescent non-children nodes of a given treeIndex.\n */\nexport default function getAdjescentNodes({\n flatTree,\n node,\n treeIndex,\n}: {\n flatTree: LocalFlatDataItem[]\n node: LocalTreeItem\n treeIndex: number\n}): {\n leadingNode?: LocalFlatDataItem\n followingNode?: LocalFlatDataItem\n} {\n // Disregard children nodes - these include the current node's key in their `path` array.\n // `path` is typed as number[] but contains the string keys returned by our `getNodeKey`.\n const isOutsideOfNode = (item: LocalFlatDataItem) => !(item.path as unknown[]).includes(node._key)\n\n const leadingNode = flatTree.slice(0, treeIndex).reverse().find(isOutsideOfNode)\n\n const followingNode = flatTree.slice(treeIndex + 1).find(isOutsideOfNode)\n\n return {\n leadingNode,\n followingNode,\n }\n}\n","export default function moveItemInArray<ItemType = unknown>({\n array,\n fromIndex,\n toIndex,\n}: {\n array: ItemType[]\n fromIndex: number\n toIndex: number\n}): ItemType[] {\n if (fromIndex === toIndex) {\n return array\n }\n\n const newArray = [...array]\n const [target] = newArray.splice(fromIndex, 1)\n\n if (target === undefined) {\n return array\n }\n\n newArray.splice(toIndex, 0, target)\n\n return newArray\n}\n","import {\n type FlatDataItem,\n type TreeItem,\n getFlatDataFromTree,\n} from '@nosferatu500/react-sortable-tree'\nimport {randomKey} from '@sanity/util/content'\nimport * as Patch from 'sanity'\n\nimport type {LocalTreeItem, NodeProps} from '../types'\nimport getAdjescentNodes from './getAdjescentNodes'\nimport moveItemInArray from './moveItemInArray'\nimport {normalizeNodeForStorage} from './treeData'\n\n/**\n * A {@link FlatDataItem} whose nodes are known to be the plugin's own tree items.\n */\nexport interface LocalFlatDataItem extends Omit<FlatDataItem, 'node' | 'parentNode'> {\n node: LocalTreeItem\n parentNode?: LocalTreeItem | null\n}\n\n/**\n * Data received from react-sortable-tree's `onMoveNode` callback.\n * `nextPath` is undefined / null when the node is removed from the tree.\n */\nexport interface HandleMovedNodeData {\n treeData: TreeItem[]\n node: LocalTreeItem\n nextParentNode?: LocalTreeItem | null\n nextPath?: number[] | null\n nextTreeIndex: number\n}\n\nexport type HandleMovedNode = (moveData: HandleMovedNodeData) => void\n\nfunction getLocalFlatDataFromTree(treeData: TreeItem[]): LocalFlatDataItem[] {\n return getFlatDataFromTree({\n treeData,\n getNodeKey: (t) => t.node['_key'] as string,\n }) as LocalFlatDataItem[]\n}\n\nexport function getAddItemPatch(item: LocalTreeItem): unknown[] {\n const normalizedNode = normalizeNodeForStorage(item)\n\n return [\n // Add the node to the end of the tree\n Patch.insert([normalizedNode], 'after', [-1]),\n ]\n}\n\nexport function getDuplicateItemPatch(nodeProps: NodeProps): unknown[] {\n const newItem = {\n ...nodeProps.node,\n _key: randomKey(12),\n }\n const normalizedNode = normalizeNodeForStorage(newItem)\n\n return [\n // Add duplicated node before the existing one\n Patch.insert([normalizedNode], 'before', [{_key: nodeProps.node._key}]),\n ]\n}\n\nexport function getRemoveItemPatch({node}: Pick<NodeProps, 'node'>): unknown[] {\n const keyPath = {_key: node._key}\n const children = getChildrenPaths(node)\n\n return [\n // 1. Unset the removed node\n Patch.unset([keyPath]),\n\n // 2. Unset its children\n ...children.map((path) => Patch.unset([{_key: path}])),\n ]\n}\n\nexport function getMovedNodePatch(data: HandleMovedNodeData): unknown[] {\n const {nextParentNode} = data\n const keyPath = {_key: data.node._key}\n\n // === REMOVING NODE FROM TREE ===\n // `nextPath` will be undefined / null if the item is removed from tree\n if (!Array.isArray(data.nextPath)) {\n return getRemoveItemPatch({node: data.node})\n }\n\n const nextFlatTree = getLocalFlatDataFromTree(data.treeData)\n const normalizedNode = normalizeNodeForStorage(data.node)\n\n const {leadingNode, followingNode} = getAdjescentNodes({\n flatTree: nextFlatTree,\n node: data.node,\n treeIndex: data.nextTreeIndex,\n })\n\n return [\n // 1. Unset the moved node\n // (will be ignored by Content Lake on new nodes with _key not yet in tree)\n Patch.unset([keyPath]),\n\n // 2. SIBLING-BASED PLACEMENT\n // If we were to place solely based on nextTreeIndex, concurrent changes from other editors could put the new node in an unexpected position.\n // Let's instead anchor it to the _key of the sibling coming before or after it.\n leadingNode?.node?._key\n ? // After the sibling before it\n Patch.insert([normalizedNode], 'after', [{_key: leadingNode.node._key}])\n : // Or before the sibling right after it, in case there's no leading sibling node\n // prettier-ignore\n Patch.insert([normalizedNode], 'before', [followingNode?.node?._key ? {_key: followingNode.node._key} : data.nextTreeIndex]),\n\n // 3. Patch the new node with its new `parent`\n nextParentNode\n ? // If it has a parent node, set that parent's _key\n Patch.set(nextParentNode._key, [keyPath, 'parent'])\n : // Else remove the parent key entirely\n Patch.unset([keyPath, 'parent']),\n ]\n}\n\nfunction getChildrenPaths(node: LocalTreeItem): string[] {\n if (!Array.isArray(node.children)) {\n return []\n }\n\n const keyPaths: string[] = []\n for (const child of node.children) {\n const childKey: unknown = child['_key']\n if (typeof childKey === 'string' && childKey) {\n keyPaths.push(childKey)\n }\n keyPaths.push(...getChildrenPaths(child as LocalTreeItem))\n }\n return keyPaths\n}\n\nexport function getMoveItemPatch({\n nodeProps: {node, treeIndex},\n localTree,\n direction,\n}: {\n nodeProps: NodeProps\n localTree: LocalTreeItem[]\n direction: 'up' | 'down'\n}): unknown[] {\n const keyPath = {_key: node._key}\n\n const nextTreeIndex = treeIndex + (direction === 'up' ? -1 : 1)\n\n const flatTree = getLocalFlatDataFromTree(localTree)\n const nextFlatTree = moveItemInArray<LocalFlatDataItem>({\n array: flatTree,\n fromIndex: treeIndex,\n toIndex: nextTreeIndex,\n })\n const {leadingNode, followingNode} = getAdjescentNodes({\n flatTree: nextFlatTree,\n node,\n treeIndex: nextTreeIndex,\n })\n\n const normalizedNode = normalizeNodeForStorage(node)\n\n // When moving up, look at following node to figure out what is the next parent.\n const nodeToInheritParent = direction === 'up' ? followingNode : leadingNode\n const nextParentNode = nodeToInheritParent?.parentNode\n\n return [\n // 1. Unset the moved node\n // (will be ignored by Content Lake on new nodes with _key not yet in tree)\n Patch.unset([keyPath]),\n\n // 2. SIBLING-BASED PLACEMENT\n leadingNode?.node?._key\n ? // After the sibling before it\n Patch.insert([normalizedNode], 'after', [{_key: leadingNode.node._key}])\n : // Or before the sibling right after it, in case there's no leading sibling node\n Patch.insert([normalizedNode], 'before', [\n followingNode?.node?._key ? {_key: followingNode.node._key} : nextTreeIndex,\n ]),\n\n // 3. Patch the new node with its new `parent`\n nextParentNode\n ? // If it has a parent node, set that parent's _key\n Patch.set(nextParentNode._key, [keyPath, 'parent'])\n : // Else remove the parent key entirely\n Patch.unset([keyPath, 'parent']),\n ]\n}\n","import {PatchEvent, type PathSegment, prefixPath, setIfMissing} from 'sanity'\n\nimport type {LocalTreeItem, NodeProps} from '../types'\nimport {\n type HandleMovedNode,\n type HandleMovedNodeData,\n getAddItemPatch,\n getDuplicateItemPatch,\n getMoveItemPatch,\n getMovedNodePatch,\n getRemoveItemPatch,\n} from '../utils/treePatches'\n\nexport default function useTreeOperationsProvider(props: {\n patchPrefix?: PathSegment\n onChange: (patch: PatchEvent) => void\n localTree: LocalTreeItem[]\n}): {\n handleMovedNode: HandleMovedNode\n addItem: (item: LocalTreeItem) => void\n duplicateItem: (nodeProps: NodeProps) => void\n removeItem: (nodeProps: NodeProps) => void\n moveItemUp: (nodeProps: NodeProps) => void\n moveItemDown: (nodeProps: NodeProps) => void\n} {\n const {localTree} = props\n\n function runPatches(patches: any) {\n const finalPatches = [\n // Ensure tree array exists before any operation\n setIfMissing([]),\n ...(patches || []),\n ]\n const prefix: PathSegment | undefined = props.patchPrefix\n let patchEvent = PatchEvent.from(finalPatches)\n if (prefix) {\n patchEvent = PatchEvent.from(finalPatches.map((patch) => prefixPath(patch, prefix)))\n }\n props.onChange(patchEvent)\n }\n\n function handleMovedNode(data: HandleMovedNodeData) {\n runPatches(getMovedNodePatch(data))\n }\n\n function addItem(item: LocalTreeItem) {\n runPatches(getAddItemPatch(item))\n }\n\n function duplicateItem(nodeProps: NodeProps) {\n runPatches(getDuplicateItemPatch(nodeProps))\n }\n\n function removeItem(nodeProps: NodeProps) {\n runPatches(getRemoveItemPatch(nodeProps))\n }\n\n function moveItemUp(nodeProps: NodeProps) {\n runPatches(\n getMoveItemPatch({\n nodeProps,\n localTree,\n direction: 'up',\n }),\n )\n }\n\n function moveItemDown(nodeProps: NodeProps) {\n runPatches(\n getMoveItemPatch({\n nodeProps,\n localTree,\n direction: 'down',\n }),\n )\n }\n\n return {\n handleMovedNode,\n addItem,\n removeItem,\n moveItemUp,\n moveItemDown,\n duplicateItem,\n }\n}\n","import {isDescendant} from '@nosferatu500/react-sortable-tree'\nimport {cyan, gray, red} from '@sanity/color'\nimport {ChevronDownIcon, ChevronRightIcon, DragHandleIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Spinner} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nconst Root = styled.div`\n // Adapted from react-sortable-tree/style.css\n &[data-landing='true'] > *,\n &[data-cancel='true'] > * {\n opacity: 0 !important;\n }\n &[data-landing='true']::before,\n &[data-cancel='true']::before {\n background-color: ${cyan[50].hex};\n border: 2px dashed ${gray[400].hex};\n border-radius: 3px;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n }\n\n &[data-cancel='true']::before {\n background-color: ${red[50].hex};\n }\n`\n\n/**\n * Customization of react-sortable-tree's default node.\n * Created in order to use Sanity UI for styles.\n * Reference: https://github.com/frontend-collective/react-sortable-tree/blob/master/src/node-renderer-default.js\n */\nconst NodeContentRenderer: any = (props: any) => {\n const {\n node,\n path,\n treeIndex,\n canDrag = false,\n canDrop,\n connectDragSource,\n connectDragPreview,\n toggleChildrenVisibility,\n draggedNode,\n didDrop,\n isDragging,\n } = props\n const nodeTitle = node.title\n const Handle = useMemo(() => {\n if (!canDrag) {\n return null\n }\n if (typeof node.children === 'function' && node.expanded) {\n // Show a loading symbol on the handle when the children are expanded\n // and yet still defined by a function (a callback to fetch the children)\n return <Spinner />\n }\n\n const button = (\n <Button\n mode=\"bleed\"\n paddingX={0}\n paddingY={1}\n style={{\n cursor: node.publishedId ? 'grab' : 'default',\n fontSize: '1.5625rem',\n }}\n data-ui=\"DragHandleButton\"\n data-drag-handle={canDrag}\n disabled={!node.publishedId}\n >\n <DragHandleIcon style={{marginBottom: '-0.1em'}} />\n </Button>\n )\n\n // Don't allow editors to drag invalid documents\n if (!node.publishedId) {\n return <div>{button}</div>\n }\n\n // Show the handle used to initiate a drag-and-drop\n return <div ref={connectDragSource}>{button}</div>\n }, [canDrag, node, connectDragSource])\n\n const isDraggedDescendant = draggedNode && isDescendant(draggedNode, node)\n const isLandingPadActive = !didDrop && isDragging\n\n return (\n <Box style={{position: 'relative'}}>\n {toggleChildrenVisibility &&\n node.children &&\n (node.children.length > 0 || typeof node.children === 'function') && (\n <div\n style={{\n position: 'absolute',\n left: '-2px',\n top: '40%',\n transform: 'translate(-100%, -50%)',\n }}\n >\n <Button\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n icon={\n node.expanded ? (\n <ChevronDownIcon color={gray[200].hex} />\n ) : (\n <ChevronRightIcon color={gray[200].hex} />\n )\n }\n mode=\"bleed\"\n fontSize={2}\n padding={1}\n type=\"button\"\n onClick={() =>\n toggleChildrenVisibility?.({\n node,\n path,\n treeIndex,\n })\n }\n />\n </div>\n )}\n\n <div ref={connectDragPreview}>\n <Root\n data-landing={isLandingPadActive}\n data-cancel={isLandingPadActive && !canDrop}\n style={{\n opacity: isDraggedDescendant ? 0.5 : 1,\n }}\n >\n <Flex align=\"center\">\n {Handle}\n {typeof nodeTitle === 'function' ? nodeTitle({node, path, treeIndex}) : nodeTitle}\n </Flex>\n </Root>\n </div>\n </Box>\n )\n}\n\nexport default NodeContentRenderer\n","import {Box, Card, type CardTone, Stack, Text} from '@sanity/ui'\nimport type {ReactNode} from 'react'\n\ninterface PlaceholderDropzoneProps {\n title: string\n subtitle?: string\n isOver?: boolean\n canDrop?: boolean\n children?: ReactNode\n}\n\nconst PlaceholderDropzone = (props: PlaceholderDropzoneProps) => {\n const isValid = props.isOver && props.canDrop\n const isInvalid = props.isOver && !props.canDrop\n let tone: CardTone = 'transparent'\n if (isValid) {\n tone = 'positive'\n }\n if (isInvalid) {\n tone = 'caution'\n }\n return (\n <Box padding={3}>\n <Card\n padding={5}\n radius={2}\n border\n tone={tone}\n style={{\n borderStyle: props.isOver ? undefined : 'dashed',\n }}\n >\n <Stack gap={2} style={{textAlign: 'center'}}>\n <Text size={2} as=\"h2\" muted>\n {!props.isOver && props.title}\n {isValid && 'Drop here'}\n {isInvalid && 'Invalid location or element'}\n </Text>\n {props.subtitle && <Text size={1}>{props.subtitle}</Text>}\n {props.children}\n </Stack>\n </Card>\n </Box>\n )\n}\n\nexport default PlaceholderDropzone\n","import {blue} from '@sanity/color'\nimport type {ReactNode} from 'react'\nimport {createGlobalStyle} from 'styled-components'\n\n// Adapted from react-sortable-tree/src/tree-node.js\nconst ScaffoldStyles = createGlobalStyle`\n .rst__lineBlock,\n .rst__absoluteLineBlock {\n height: 100%;\n position: relative;\n display: inline-block;\n --stroke-width: 3px;\n }\n\n .rst__absoluteLineBlock {\n position: absolute;\n top: 0;\n }\n\n /* Highlight line for pointing to dragged row destination\n ========================================================================== */\n /**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n .rst__highlightLineVertical {\n z-index: 3;\n }\n .rst__highlightLineVertical::before {\n position: absolute;\n content: '';\n background-color: ${blue[400].hex};\n width: calc(var(--stroke-width) * 2);\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n height: 100%;\n }\n\n @keyframes arrow-pulse {\n 0% {\n transform: translate(0, 0);\n opacity: 0;\n }\n 30% {\n transform: translate(0, 300%);\n opacity: 1;\n }\n 70% {\n transform: translate(0, 700%);\n opacity: 1;\n }\n 100% {\n transform: translate(0, 1000%);\n opacity: 0;\n }\n }\n .rst__highlightLineVertical::after {\n content: '';\n position: absolute;\n height: 0;\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n border-left: var(--stroke-width) solid transparent;\n border-right: var(--stroke-width) solid transparent;\n border-top: var(--stroke-width) solid white;\n animation: arrow-pulse 1s infinite linear both;\n }\n\n /**\n * +-----+\n * | |\n * | +--+\n * | | |\n * +--+--+\n */\n .rst__highlightTopLeftCorner::before {\n z-index: 3;\n content: '';\n position: absolute;\n border-top: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n border-left: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n box-sizing: border-box;\n height: calc(50% + var(--stroke-width));\n top: 50%;\n margin-top: calc(var(--stroke-width) * -1);\n right: 0;\n width: calc(50% + var(--stroke-width));\n }\n\n /**\n * +--+--+\n * | | |\n * | | |\n * | +->|\n * +-----+\n */\n .rst__highlightBottomLeftCorner {\n z-index: 3;\n }\n .rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n border-left: solid calc(var(--stroke-width) * 2) ${blue[400].hex};\n box-sizing: border-box;\n height: calc(100% + var(--stroke-width));\n top: 0;\n right: calc(var(--stroke-width) * 3);\n width: calc(50% - calc(var(--stroke-width) * 2));\n }\n\n .rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: calc(var(--stroke-width) * -3);\n border-top: calc(var(--stroke-width) * 3) solid transparent;\n border-bottom: calc(var(--stroke-width) * 3) solid transparent;\n border-left: calc(var(--stroke-width) * 3) solid ${blue[400].hex};\n }\n\n .rst__unclickable {\n pointer-events: none;\n margin-top: -calc(var(--stroke-width) * 3);\n }\n`\n\nconst TreeNodeRendererScaffold = (props: any) => {\n const {\n lowerSiblingCounts,\n scaffoldBlockPxWidth,\n listIndex,\n swapDepth,\n swapFrom,\n swapLength,\n treeIndex,\n } = props\n\n // Construct the scaffold representing the structure of the tree\n const scaffold: ReactNode[] = lowerSiblingCounts.map((lowerSiblingCount: number, i: number) => {\n if (lowerSiblingCount < 0 || treeIndex === listIndex || i !== swapDepth) {\n return null\n }\n\n // This row has been shifted, and is at the depth of\n // the line pointing to the new destination\n let highlightLineClass = ''\n\n if (listIndex === (swapFrom || 0) + (swapLength || 0) - 1) {\n // This block is on the bottom (target) line\n // This block points at the target block (where the row will go when released)\n highlightLineClass = 'rst__highlightBottomLeftCorner'\n } else if (treeIndex === swapFrom) {\n // This block is on the top (source) line\n highlightLineClass = 'rst__highlightTopLeftCorner'\n } else {\n // This block is between the bottom and top\n highlightLineClass = 'rst__highlightLineVertical'\n }\n\n const style = {\n width: scaffoldBlockPxWidth,\n left: scaffoldBlockPxWidth * i,\n }\n\n return (\n <div\n key={i}\n style={style}\n className={`rst__unclickable rst__absoluteLineBlock ${highlightLineClass || ''}`}\n tabIndex={-1}\n />\n )\n })\n\n return (\n <>\n {scaffold}\n <ScaffoldStyles />\n </>\n )\n}\n\nexport default TreeNodeRendererScaffold\n","import {Children, type ReactElement, cloneElement} from 'react'\n\nimport TreeNodeRendererScaffold from './TreeNodeRendererScaffold'\n\n/**\n * To prevent expand buttons from overflowing on the left, we add a minimum left padding to all entries\n */\nconst BASE_LEFT_PADDING = 10\nconst NESTING_PADDING = 14\n\nconst TreeNodeRenderer: any = (props: any) => {\n const {children, lowerSiblingCounts, connectDropTarget, isOver, draggedNode, canDrop} = props\n\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length\n\n return (\n <div ref={connectDropTarget} style={props.style} data-tree-row=\"\">\n <div\n style={{\n // prettier-ignore\n paddingLeft: `${BASE_LEFT_PADDING + (NESTING_PADDING * scaffoldBlockCount)}px`,\n }}\n >\n {Children.map(children, (child) =>\n cloneElement(child as ReactElement<any>, {\n isOver,\n canDrop,\n draggedNode,\n }),\n )}\n </div>\n <TreeNodeRendererScaffold {...props} />\n </div>\n )\n}\n\nexport default TreeNodeRenderer\n","import type {SortableTree} from '@nosferatu500/react-sortable-tree'\nimport type {ComponentProps} from 'react'\n\nimport NodeContentRenderer from '../components/NodeContentRenderer'\nimport PlaceholderDropzone from '../components/PlaceholderDropzone'\nimport TreeNodeRenderer from '../components/TreeNodeRenderer'\n\ntype ReactSortableTreeProps = ComponentProps<typeof SortableTree>\n\nexport default function getCommonTreeProps({\n placeholder,\n}: {\n placeholder: {\n title: string\n subtitle?: string\n }\n}): Partial<ReactSortableTreeProps> {\n return {\n theme: {\n nodeContentRenderer: NodeContentRenderer,\n placeholderRenderer: (props: any) => <PlaceholderDropzone {...placeholder} {...props} />,\n treeNodeRenderer: TreeNodeRenderer,\n style: {height: '100%'},\n innerStyle: undefined,\n scaffoldBlockPxWidth: 44,\n slideRegionSize: 100,\n },\n }\n}\n","import {type TreeItem, getVisibleNodeCount} from '@nosferatu500/react-sortable-tree'\n\nexport default function getTreeHeight(treeData: TreeItem[], rowHeight: number): string {\n const visibleNodeCount = getVisibleNodeCount({treeData})\n\n // prettier-ignore\n return `${50 + (rowHeight * visibleNodeCount)}px`\n}\n","/**\n * react-sortable-tree emits a lot of random errors when dragging to invalid states,\n * even when drag-targets are disabled.\n *\n * This boundary is a workaround so users are not pestered with error-toasts for things\n * that have no functional impact.\n *\n * This boundry does NOT handle errors that happen in the React dnd\n * event handlers, so there is addtional workarounds in the\n * DnDManager.\n * */\nexport const TreeEditorErrorBoundary = (props: any) => {\n return props.children\n}\n","import {\n SortableTreeWithoutDndContext as SortableTree,\n type TreeItem,\n} from '@nosferatu500/react-sortable-tree'\nimport {AddCircleIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text, Tooltip} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {DndProvider} from 'react-dnd'\nimport {HTML5Backend} from 'react-dnd-html5-backend'\nimport type {PatchEvent} from 'sanity'\n\nimport useAllItems from '../hooks/useAllItems'\nimport useLocalTree from '../hooks/useLocalTree'\nimport {TreeOperationsContext} from '../hooks/useTreeOperations'\nimport useTreeOperationsProvider from '../hooks/useTreeOperationsProvider'\nimport type {Optional, StoredTreeItem, TreeDeskStructureProps} from '../types'\nimport getCommonTreeProps from '../utils/getCommonTreeProps'\nimport getTreeHeight from '../utils/getTreeHeight'\nimport {getUnaddedItems} from '../utils/treeData'\nimport type {HandleMovedNodeData} from '../utils/treePatches'\nimport DocumentInNode from './DocumentInNode'\nimport {TreeEditorErrorBoundary} from './TreeEditorErrorBoundary'\n\ninterface TreeEditorProps {\n tree: StoredTreeItem[]\n onChange: (patch: PatchEvent) => void\n options: Optional<TreeDeskStructureProps, 'documentId'>\n patchPrefix?: string\n}\n\n/**\n * The loaded tree users interact with\n */\nfunction TreeEditor(props: TreeEditorProps) {\n const {status: allItemsStatus, allItems} = useAllItems(props.options)\n const unAddedItems = getUnaddedItems({tree: props.tree, allItems})\n\n const {localTree, handleVisibilityToggle} = useLocalTree({\n tree: props.tree,\n allItems,\n })\n\n const operations = useTreeOperationsProvider({\n patchPrefix: props.patchPrefix,\n onChange: props.onChange,\n localTree,\n })\n\n const [context, setContext] = useState<HTMLElement | null>(null)\n const [treeViewHeight, setTreeViewHeight] = useState<string>('')\n\n const documentId = props.options.documentId\n\n const updateTreeViewHeight = useCallback(() => {\n const el = document.querySelector<HTMLElement>(`#${documentId} [data-tree-row]`)\n const rowHeight = el?.offsetHeight || 51\n setTreeViewHeight(getTreeHeight(localTree, rowHeight))\n }, [documentId, localTree])\n\n useEffect(() => {\n // Wait for dom to load before (re)calculating the tree height.\n const timeout = setTimeout(updateTreeViewHeight)\n return () => clearTimeout(timeout)\n }, [updateTreeViewHeight])\n\n const onMoveNode = useCallback(\n // The tree nodes are always our own LocalTreeItem objects\n (data: unknown) => operations.handleMovedNode(data as HandleMovedNodeData),\n [operations],\n )\n\n const treeProps = useMemo(\n () =>\n getCommonTreeProps({\n placeholder: {\n title: 'Add items from the list below',\n },\n }),\n [],\n )\n\n const operationContext = useMemo(\n () => ({...operations, allItemsStatus}),\n [operations, allItemsStatus],\n )\n\n return (\n <TreeEditorErrorBoundary>\n {/*Use this Box-wrapper to get a context Element to prevent DndProvider to have to HTML% backend at the same time https://github.com/react-dnd/react-dnd/issues/186#issuecomment-978206387 */}\n <Box id={documentId} ref={setContext}>\n {context ? (\n <DndProvider backend={HTML5Backend} options={{rootElement: context}}>\n <TreeOperationsContext.Provider value={operationContext}>\n <Stack gap={4} paddingTop={4}>\n <Card\n style={{minHeight: treeViewHeight}}\n // Only include borderBottom if there's something to show in unadded items\n borderBottom={allItemsStatus !== 'success' || unAddedItems?.length > 0}\n >\n <SortableTree\n maxDepth={props.options.maxDepth}\n onChange={doNothingOnChange}\n onVisibilityToggle={handleVisibilityToggle}\n canDrop={canDrop}\n onMoveNode={onMoveNode}\n // Stable keys keep row identity (and their DOM nodes) intact while\n // rows are repositioned during a drag\n getNodeKey={getNodeKey}\n treeData={localTree}\n // The tree renders inside a virtualized list which requires\n // a definite height (percentages would resolve to 0)\n style={treeViewHeight ? {height: treeViewHeight} : undefined}\n {...treeProps}\n />\n </Card>\n\n {allItemsStatus === 'success' && unAddedItems?.length > 0 && (\n <Stack gap={1} paddingX={2} paddingTop={3}>\n <Stack gap={2} paddingX={2} paddingBottom={3}>\n <Text size={2} as=\"h2\" weight=\"semibold\">\n Add more items\n </Text>\n <Text size={1} muted>\n Only published documents are shown.\n </Text>\n </Stack>\n {unAddedItems.map((item) => (\n <DocumentInNode\n key={item.publishedId || item.draftId}\n item={item}\n action={\n <Tooltip\n portal\n placement=\"left\"\n content={\n <Box padding={2}>\n <Text size={1}>Add to list</Text>\n </Box>\n }\n >\n <Button\n onClick={() => {\n operations.addItem(item)\n }}\n mode=\"bleed\"\n icon={AddCircleIcon}\n style={{cursor: 'pointer'}}\n />\n </Tooltip>\n }\n />\n ))}\n </Stack>\n )}\n {allItemsStatus === 'loading' && (\n <Flex padding={4} align={'center'} justify={'center'}>\n <Spinner size={3} muted />\n </Flex>\n )}\n {allItemsStatus === 'error' && (\n <Flex padding={4} align={'center'} justify={'center'}>\n <Text size={2} weight=\"semibold\">\n Something went wrong when loading documents\n </Text>\n </Flex>\n )}\n </Stack>\n </TreeOperationsContext.Provider>\n </DndProvider>\n ) : null}\n </Box>\n </TreeEditorErrorBoundary>\n )\n}\n\nfunction canDrop({nextPath, prevPath}: {nextPath: number[]; prevPath: number[]}) {\n const insideItself =\n nextPath.length >= prevPath.length &&\n prevPath.every((pathIndex, index) => nextPath[index] === pathIndex)\n return !insideItself\n}\n\nconst doNothingOnChange = () => {\n // Do nothing. onMoveNode will do all the work\n}\n\nconst getNodeKey = (data: {node: TreeItem}) => data.node['_key'] as string\n\nexport default TreeEditor\n","// Adapted from @sanity/form-builder/src/sanity/utils/gradientPatchAdapter.ts\nimport {arrayToJSONMatchPath} from '@sanity/mutator'\n\ninterface Patch {\n type?: string\n path?: any[]\n position?: string\n items?: unknown[]\n value?: unknown\n}\n\ntype GradientPatch = Record<string, any>\n\nexport function toGradient(patches: Patch[]): GradientPatch[] {\n return patches.map(toGradientPatch)\n}\n\nfunction toGradientPatch(patch: Patch): GradientPatch {\n const matchPath = arrayToJSONMatchPath(patch.path || [])\n if (patch.type === 'insert') {\n const {position, items} = patch\n return {\n insert: {\n [position as string]: matchPath,\n items: items,\n },\n }\n }\n\n if (patch.type === 'unset') {\n return {\n unset: [matchPath],\n }\n }\n\n if (!patch.type) {\n throw new Error(`Missing patch type in patch ${JSON.stringify(patch)}`)\n }\n if (matchPath) {\n return {\n [patch.type]: {\n [matchPath]: patch.value,\n },\n }\n }\n return {\n [patch.type]: patch.value,\n }\n}\n","import {Box, Flex, Spinner} from '@sanity/ui'\nimport {useCallback, useEffect} from 'react'\nimport {type PatchEvent, useDocumentOperation, useEditState} from 'sanity'\n\nimport DeskWarning from './components/DeskWarning'\nimport TreeEditor from './components/TreeEditor'\nimport type {DocumentOperations, StoredTreeItem, TreeDeskStructureProps} from './types'\nimport {toGradient} from './utils/gradientPatchAdapter'\nimport injectNodeTypeInPatches, {DEFAULT_DOC_TYPE} from './utils/injectNodeTypeInPatches'\n\ninterface ComponentProps {\n options: TreeDeskStructureProps\n}\n\nexport const DEFAULT_FIELD_KEY = 'tree'\n\nconst TreeDeskStructure = (props: ComponentProps) => {\n const treeDocType = props.options.documentType || DEFAULT_DOC_TYPE\n const treeFieldKey = props.options.fieldKeyInDocument || DEFAULT_FIELD_KEY\n const {published, draft, liveEdit} = useEditState(props.options.documentId, treeDocType)\n const {patch} = useDocumentOperation(props.options.documentId, treeDocType) as DocumentOperations\n\n const treeValue = (published?.[treeFieldKey] || []) as StoredTreeItem[]\n\n const handleChange = useCallback(\n (patchEvent: PatchEvent) => {\n if (!patch?.execute) {\n return\n }\n patch.execute(toGradient(injectNodeTypeInPatches(patchEvent.patches, treeDocType)))\n },\n [patch, treeDocType],\n )\n\n const publishedId = published?._id\n\n useEffect(() => {\n if (!publishedId && patch?.execute && !patch?.disabled) {\n // If no published document, create it\n patch.execute([{setIfMissing: {[treeFieldKey]: []}}])\n }\n }, [publishedId, patch, treeFieldKey])\n\n if (!liveEdit) {\n return (\n <DeskWarning\n title=\"Invalid configuration\"\n subtitle=\"The `documentType` passed to `createDeskHiearchy` isn't live editable. \\nTo continue using this plugin, add `liveEdit: true` to your custom schema type or unset `documentType` in your hierarchy configuration.\"\n />\n )\n }\n\n if (draft?._id) {\n return (\n <DeskWarning\n title=\"This hierarchy tree contains a draft\"\n subtitle=\"Click on the button below to publish your draft in order to continue editing the live\n published document.\"\n />\n )\n }\n\n if (!published?._id) {\n return (\n <Flex padding={5} align={'center'} justify={'center'} height={'fill'}>\n <Spinner width={4} muted />\n </Flex>\n )\n }\n\n return (\n <Box paddingBottom={5} paddingRight={2}>\n <TreeEditor\n options={props.options}\n tree={treeValue}\n onChange={handleChange}\n patchPrefix={treeFieldKey}\n />\n </Box>\n )\n}\n\nexport default TreeDeskStructure\n","const ERROR_MESSAGES = {\n invalidDocumentId: 'Please add a documentId to your tree',\n invalidDocumentType: 'Please add a valid documentType to createHierarchicalSchemas',\n invalidReferenceTo: \"Missing valid 'referenceTo' value\",\n}\n\nexport default function throwError(message: keyof typeof ERROR_MESSAGES, extraContext = ''): void {\n throw new Error(`[hierarchical input] ${ERROR_MESSAGES[message]} ${extraContext}`)\n}\n","import {AddIcon} from '@sanity/icons'\nimport type {FC} from 'react'\n\nimport TreeDeskStructure from './TreeDeskStructure'\nimport type {TreeDeskStructureProps} from './types'\nimport throwError from './utils/throwError'\n\nexport interface TreeProps extends TreeDeskStructureProps {\n /**\n * Visible title above the tree.\n * Also used as the label in the desk list item.\n */\n title: string\n\n /**\n * Optional icon for rendering the item in the desk structure.\n */\n icon?: any\n\n /**\n * The `ConfigContext` available as the second parameter of the structure resolver.\n */\n context?: any\n /**\n * The `StructureBuilder` (`S`) available as the first parameter of the structure resolver.\n */\n S?: any\n /**\n * Restrict document types that can be created.\n */\n creatableTypes?: string[]\n}\n\nconst deskTreeValidator = (props: TreeProps): FC => {\n const {documentId, referenceTo} = props\n if (typeof documentId !== 'string' && !documentId) {\n throwError('invalidDocumentId')\n }\n if (!Array.isArray(referenceTo)) {\n throwError('invalidReferenceTo', `(documentId \"${documentId}\")`)\n }\n\n return (deskProps) => <TreeDeskStructure {...deskProps} options={props} />\n}\n\nexport default function createDeskHierarchy(props: TreeProps) {\n const {documentId, referenceTo, referenceOptions, context, S, creatableTypes} = props\n if (!S || !context) {\n throw new Error(\n 'Invalid configuration. S or context props are undefined. ' +\n 'These props are available as function parameters when configuring structure, and must be passed along to createDeskHierarchy. ' +\n 'Confer the plugin README for example usage.',\n )\n }\n\n const {schema} = context\n\n const safelyCreatableTypes =\n creatableTypes && !creatableTypes.some((type) => referenceTo.indexOf(type))\n ? creatableTypes\n : referenceTo\n\n let mainList = (\n referenceTo?.length === 1\n ? S.documentTypeList(referenceTo[0]).schemaType(referenceTo[0])\n : S.documentList().filter('_type in $types').params({types: referenceTo})\n )\n .id(documentId)\n .menuItems(\n (safelyCreatableTypes || []).map((schemaType) =>\n S.menuItem()\n .intent({\n type: 'create',\n params: {type: schemaType},\n })\n .title(`Create ${schema.get(schemaType)?.title}`)\n .icon(schema.get(schemaType)?.icon || AddIcon),\n ),\n )\n .canHandleIntent((intent: string, c: Record<string, unknown>) => {\n // Can edit itself\n if (intent === 'edit' && c['id'] === props.documentId) {\n return true\n }\n // Can create & edit referenced document types\n const intentType = c['type']\n if (typeof intentType === 'string' && safelyCreatableTypes.includes(intentType)) {\n return true\n }\n return false\n })\n\n if (referenceOptions?.filter) {\n mainList = mainList.filter(referenceOptions.filter)\n }\n\n if (referenceOptions?.filterParams) {\n mainList = mainList.params(referenceOptions.filterParams)\n }\n\n return S.listItem()\n .id(documentId)\n .title(props.title || documentId)\n .icon(props.icon)\n .child(\n Object.assign(\n mainList.serialize(),\n {\n type: 'component',\n component: deskTreeValidator(props),\n options: props,\n __preserveInstance: true,\n },\n props.title ? {title: props.title} : {},\n ),\n )\n}\n","import {useCallback} from 'react'\nimport {FormField, type FormNodePresence, PatchEvent, type Path} from 'sanity'\n\nimport TreeEditor from './components/TreeEditor'\nimport type {StoredTreeItem, TreeFieldSchema} from './types'\nimport injectNodeTypeInPatches, {DEFAULT_DOC_TYPE} from './utils/injectNodeTypeInPatches'\n\nexport interface TreeInputComponentProps {\n type: TreeFieldSchema\n value: StoredTreeItem[]\n level: number\n onChange: (event: unknown) => void\n onFocus: (path: Path) => void\n onBlur: () => void\n focusPath: Path\n readOnly: boolean\n presence: FormNodePresence[]\n}\n\nconst EMPTY_PATH: Path = []\n\nconst TreeInputComponent = (props: TreeInputComponentProps) => {\n const documentType = props.type.options.documentType || DEFAULT_DOC_TYPE\n const {onChange: onFieldChange} = props\n\n const onChange = useCallback(\n (patch: any) => {\n const patches = injectNodeTypeInPatches(patch?.patches, documentType)\n onFieldChange(new PatchEvent(patches))\n },\n [documentType, onFieldChange],\n )\n\n return (\n <FormField\n description={props.type.description} // Creates description from schema\n title={props.type.title} // Creates label from schema title\n __unstable_presence={props.presence} // Handles presence avatars\n path={EMPTY_PATH}\n >\n <TreeEditor options={props.type.options} tree={props.value || []} onChange={onChange} />\n </FormField>\n )\n}\n\nexport default TreeInputComponent\n","import type {FC} from 'react'\nimport type {ArraySchemaType} from 'sanity'\n\nimport {DEFAULT_FIELD_KEY} from './TreeDeskStructure'\nimport TreeInputComponent from './TreeInputComponent'\nimport type {TreeDeskStructureProps, TreeFieldSchema} from './types'\nimport {\n INTERNAL_NODE_ARRAY_TYPE,\n INTERNAL_NODE_TYPE,\n INTERNAL_NODE_VALUE_TYPE,\n getSchemaTypeName,\n} from './utils/injectNodeTypeInPatches'\nimport throwError from './utils/throwError'\n\ntype SchemaOptions = Omit<TreeDeskStructureProps, 'documentId' | 'maxDepth'>\n\nfunction createHierarchicalNodeValueType({\n referenceTo,\n referenceOptions,\n documentType,\n}: SchemaOptions) {\n return {\n // when used inside the field, name & type are overwritten by createHierarchicalNodeType\n name: documentType ? getSchemaTypeName(documentType, 'nodeValue') : INTERNAL_NODE_VALUE_TYPE,\n type: 'object',\n title: `Hierarchical node value (${documentType})`,\n\n fields: [\n {name: 'docType', type: 'string'},\n {\n name: 'reference',\n type: 'reference',\n weak: true,\n to: referenceTo.map((type) => ({type})),\n options: referenceOptions,\n },\n ],\n }\n}\n\nfunction createHierarchicalNodeType(options: SchemaOptions) {\n return {\n // name & type are overwritten by createHierarchicalField\n name: options.documentType\n ? getSchemaTypeName(options.documentType, 'node')\n : INTERNAL_NODE_TYPE,\n title: `Hierarchical node (${options.documentType})`,\n type: 'object',\n fields: [\n {name: 'parent', type: 'string'},\n\n options.documentType\n ? {name: 'value', type: getSchemaTypeName(options.documentType, 'nodeValue')}\n : // If no documentType is defined, use an anonymized inline object to avoid\n // having to define another custom schema type through the plugin\n {\n ...createHierarchicalNodeValueType(options),\n name: 'value',\n type: 'object',\n },\n ],\n }\n}\n\nfunction createHierarchicalArrayType(options: SchemaOptions) {\n return {\n // name & type are overwritten by createHierarchicalField\n name: options.documentType\n ? getSchemaTypeName(options.documentType, 'array')\n : INTERNAL_NODE_ARRAY_TYPE,\n title: `Hierarchical array of nodes (${options.documentType})`,\n type: 'array',\n of: [\n options.documentType\n ? {type: getSchemaTypeName(options.documentType, 'node')}\n : createHierarchicalNodeType(options),\n ],\n }\n}\n\nfunction createHierarchicalField({name, title, options, ...rest}: TreeFieldSchema): Omit<\n ArraySchemaType,\n 'type' | 'jsonType' | 'of'\n> & {\n type: string\n inputComponent: FC<any>\n of?: any[]\n} {\n if (!Array.isArray(options?.referenceTo)) {\n throwError('invalidReferenceTo', `(field of name \"${name}\")`)\n }\n\n return {\n ...rest,\n name,\n title,\n inputComponent: TreeInputComponent,\n options,\n ...(options.documentType\n ? {type: getSchemaTypeName(options.documentType, 'array')}\n : {\n ...createHierarchicalArrayType(options),\n name,\n }),\n }\n}\n\nfunction createHierarchicalDocType(options: SchemaOptions) {\n return {\n name: options.documentType,\n title: 'Hierarchical tree',\n type: 'document',\n // The plugin needs to define a `schemaType` with liveEdit enabled so that\n // `useDocumentOperation` in TreeDeskStructure.tsx doesn't create drafts at every patch.\n liveEdit: true,\n fields: [\n createHierarchicalField({\n name: options.fieldKeyInDocument || DEFAULT_FIELD_KEY,\n title: 'Hierarchical Tree',\n options,\n }),\n ],\n preview: {\n select: {\n id: '_id',\n tree: 'tree',\n },\n prepare({id, tree}: {id: string; tree: unknown[]}): Record<string, string> {\n return {\n title: `Hierarchical documents (ID: ${id})`,\n subtitle: `${tree?.length || 0} document(s) in its list.`,\n }\n },\n },\n }\n}\n\nexport default function createHierarchicalSchemas(options: SchemaOptions) {\n if (!Array.isArray(options.referenceTo) || options.referenceTo.length <= 0) {\n throwError('invalidReferenceTo')\n }\n if (!options.documentType) {\n throwError('invalidDocumentType')\n }\n\n return [\n createHierarchicalDocType(options),\n createHierarchicalArrayType(options),\n createHierarchicalNodeType(options),\n createHierarchicalNodeValueType(options),\n ]\n}\n","import {defineType} from 'sanity'\n\nexport default defineType({\n name: 'hierarchy.tree',\n title: 'Hierarchical tree',\n type: 'document',\n // The plugin needs to define a `schemaType` with liveEdit enabled so that\n // `useDocumentOperation` in TreeDeskStructure.tsx doesn't create drafts at every patch.\n liveEdit: true,\n // Let's avoid defining the actual hierarchical field, else GraphQL users won't be able to deploy schemas\n fields: [\n {\n name: 'unusedField',\n title: 'Unused field',\n type: 'string',\n hidden: true,\n },\n ],\n})\n","import {definePlugin} from 'sanity'\n\nimport {default as createDeskHierarchy, type TreeProps} from './createDeskHierarchy'\nimport {default as createHierarchicalSchemas} from './createHierarchicalSchemas'\nimport {default as hierarchyTree} from './schemas/hierarchy.tree'\nimport {default as flatDataToTree} from './utils/flatDataToTree'\n\nexport {createDeskHierarchy, createHierarchicalSchemas, flatDataToTree, hierarchyTree}\nexport type {TreeProps}\n\n/**\n * Usage in `sanity.config.ts` (or .js)\n *\n * ```ts\n * import {defineConfig} from 'sanity'\n * import {hierarchicalDocumentList} from '@sanity/hierarchical-document-list'\n *\n * export default defineConfig({\n * // ...\n * plugins: [hierarchicalDocumentList()],\n * })\n * ```\n */\n\nexport const hierarchicalDocumentList = definePlugin({\n name: 'sanity-plugin-hierarchical-document-list',\n})\n"],"names":["WrapCodeBlocks","t0","$","_c","text","t1","split","map","_temp","t2","DeskWarning","props","for","maxWidth","title","subtitle","_temp2","t3","children","t4","part","i","Fragment","line","unprefixId","_id","replace","isDraft","startsWith","getDeskFilter","referenceTo","referenceOptions","filterParts","filter","push","join","params","filterParams","docTypes","schemaType","updateItemInState","state","item","newState","publishedId","allItemsReducer","action","type","itemId","published","draft","items","reduce","useAllItems","options","apiVersion","client","useClient","status","setStatus","useState","Symbol","allItems","dispatch","useReducer","handleListener","event","result","documentId","query","fetchInitialData","fetch","listener","listen","subscribe","unsubscribe","useEffect","placeholder","TreeOperationsContext","createContext","addItem","duplicateItem","removeItem","handleMovedNode","moveItemDown","moveItemUp","allItemsStatus","useTreeOperations","useContext","TimeAgo","time","timeAgo","useRelativeTime","toLowerCase","trim","PublishedStatus","document","_updatedAt","t5","t6","DraftStatus","DocumentPreviewStatus","DocumentInNode","value","draftId","undefined","reference","docType","referenceId","_ref","routerPanesState","ChildLink","usePaneRouter","schema","useSchema","pane","some","group","id","isActive","get","forwardRef","linkProps","ref","LinkComponent","flex","draftUpdatedAt","publishedUpdatedAt","_type","t7","NodeActions","nodeProps","operations","node","restProps","IntentLink","OpenLink","isValid","EllipsisVerticalIcon","_key","RemoveCircleIcon","t8","CopyIcon","t9","t10","t11","LaunchIcon","t12","t13","portal","tone","placement","t14","flatDataToTree","data","childrenByParent","Map","parentKey","parent","siblings","set","buildNode","getSchemaTypeName","documentType","DEFAULT_DOC_TYPE","INTERNAL_NODE_TYPE","INTERNAL_NODE_VALUE_TYPE","INTERNAL_NODE_ARRAY_TYPE","injectNodeTypeInPatches","patchData","Array","isArray","child","newObject","key","Object","keys","includes","dataToEditorTree","tree","visibilityMap","itemsWithTitle","refId","docPair","draftDoc","publishedDoc","enhancedItem","expanded","assign","documentPairToNode","doc","randomKey","_weak","getUnaddedItems","entries","treeItem","flatMap","documentPair","values","normalizeNodeForStorage","useLocalTree","setVisibilityMap","currentMap","handleVisibilityToggle","localTree","getAdjescentNodes","flatTree","treeIndex","isOutsideOfNode","path","leadingNode","slice","reverse","find","followingNode","moveItemInArray","array","fromIndex","toIndex","newArray","target","splice","getLocalFlatDataFromTree","treeData","getFlatDataFromTree","getNodeKey","t","getAddItemPatch","normalizedNode","Patch","insert","getDuplicateItemPatch","newItem","getRemoveItemPatch","keyPath","getChildrenPaths","unset","getMovedNodePatch","nextParentNode","nextPath","nextFlatTree","nextTreeIndex","keyPaths","childKey","getMoveItemPatch","direction","parentNode","useTreeOperationsProvider","runPatches","patches","finalPatches","setIfMissing","prefix","patchPrefix","patchEvent","PatchEvent","from","patch","prefixPath","onChange","Root","styled","div","withConfig","displayName","componentId","cyan","hex","gray","red","NodeContentRenderer","canDrag","canDrop","connectDragSource","connectDragPreview","toggleChildrenVisibility","draggedNode","didDrop","isDragging","nodeTitle","bb0","cursor","fontSize","marginBottom","button","Handle","isDraggedDescendant","isDescendant","isLandingPadActive","position","length","left","top","transform","opacity","PlaceholderDropzone","isOver","isInvalid","borderStyle","textAlign","ScaffoldStyles","createGlobalStyle","blue","TreeNodeRendererScaffold","lowerSiblingCounts","scaffoldBlockPxWidth","listIndex","swapDepth","swapFrom","swapLength","lowerSiblingCount","highlightLineClass","style","width","scaffold","BASE_LEFT_PADDING","NESTING_PADDING","TreeNodeRenderer","connectDropTarget","scaffoldBlockCount","paddingLeft","cloneElement","Children","getCommonTreeProps","theme","nodeContentRenderer","placeholderRenderer","treeNodeRenderer","height","innerStyle","slideRegionSize","getTreeHeight","rowHeight","visibleNodeCount","getVisibleNodeCount","TreeEditorErrorBoundary","TreeEditor","unAddedItems","context","setContext","treeViewHeight","setTreeViewHeight","querySelector","offsetHeight","updateTreeViewHeight","timeout","setTimeout","clearTimeout","onMoveNode","treeProps","operationContext","T0","T1","Box","HTML5Backend","rootElement","minHeight","SortableTree","maxDepth","doNothingOnChange","AddCircleIcon","prevPath","every","pathIndex","index","toGradient","toGradientPatch","matchPath","arrayToJSONMatchPath","Error","JSON","stringify","DEFAULT_FIELD_KEY","TreeDeskStructure","treeDocType","treeFieldKey","fieldKeyInDocument","liveEdit","useEditState","useDocumentOperation","treeValue","execute","handleChange","disabled","ERROR_MESSAGES","invalidDocumentId","invalidDocumentType","invalidReferenceTo","throwError","message","extraContext","deskTreeValidator","deskProps","createDeskHierarchy","S","creatableTypes","safelyCreatableTypes","indexOf","mainList","documentTypeList","documentList","types","menuItems","menuItem","intent","icon","AddIcon","canHandleIntent","c","intentType","listItem","serialize","component","__preserveInstance","EMPTY_PATH","TreeInputComponent","onFieldChange","presence","description","createHierarchicalNodeValueType","name","fields","weak","to","createHierarchicalNodeType","createHierarchicalArrayType","of","createHierarchicalField","rest","inputComponent","createHierarchicalDocType","preview","select","prepare","createHierarchicalSchemas","defineType","hidden","hierarchicalDocumentList","definePlugin"],"mappings":"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"}
|