maze-blockly-wrapper 0.5.1 → 0.5.3
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/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../node_modules/i18next/dist/esm/i18next.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/withTranslation.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../src/i18n/index.ts","../src/utils/blocklySetup.ts","../src/utils/index.ts","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/utils/PropTypes.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/AlertHeading.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/AlertLink.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/Alert.js","../node_modules/react-bootstrap/esm/Badge.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/CardBody.js","../node_modules/react-bootstrap/esm/CardFooter.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/CardHeader.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/CardImgOverlay.js","../node_modules/react-bootstrap/esm/CardLink.js","../node_modules/react-bootstrap/esm/CardSubtitle.js","../node_modules/react-bootstrap/esm/CardText.js","../node_modules/react-bootstrap/esm/CardTitle.js","../node_modules/react-bootstrap/esm/Card.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/@restart/ui/node_modules/uncontrollable/lib/esm/index.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/warning/warning.js","../node_modules/@react-aria/ssr/dist/SSRProvider.mjs","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/@restart/ui/esm/Nav.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/@restart/ui/esm/TabPanel.js","../node_modules/@restart/ui/esm/Tabs.js","../node_modules/react-bootstrap/esm/getTabTransitionComponent.js","../node_modules/react-bootstrap/esm/TabContainer.js","../node_modules/react-bootstrap/esm/TabContent.js","../node_modules/react-bootstrap/esm/TabPane.js","../node_modules/react-bootstrap/esm/Tab.js","../node_modules/react-bootstrap/esm/Tabs.js","../src/components/maze/GraphicsImage.tsx","../src/components/maze/validation.ts","../src/components/maze/EditableMazeGrid.tsx","../src/components/maze/MazeGrid.tsx","../src/components/maze/Spider.tsx","../src/components/maze/blocks.ts","../src/components/maze/MazeBlocklyContainer.tsx","../src/components/maze/MazeTabs.tsx","../src/components/maze/GameControls.tsx","../src/components/LanguageSelector.tsx","../src/components/maze/graphicsConfig.tsx","../src/components/maze/MazeGame.tsx","../src/components/maze/graphicsDTOs.ts"],"sourcesContent":["const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return '' + object;\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = function (obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false,\n skipCopy: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key == null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved?.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys == null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = options.count !== undefined && !isString(options.count);\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0;\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...options,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && !isString(options.replace) ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language || resolved.usedLng, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && resolved && resolved.res) options.lng = this.language || resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey?.[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && !isString(options.count);\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0;\n const needsContextHandling = options.context !== undefined && (isString(options.context) || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.indexOf('-') > -1) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (!Intl) {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = function (data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (val, lng, options) => {\n let optForCache = options;\n if (options && options.interpolationkey && options.formatParams && options.formatParams[options.interpolationkey] && options[options.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [options.interpolationkey]: undefined\n };\n }\n const key = lng + JSON.stringify(optForCache);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n};\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = isString(lngs) ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n if (options.keyPrefix !== '') options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.translator?.translate(...args);\n }\n exists() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n return Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, {});\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport const withTranslation = (ns, options = {}) => function Extend(WrappedComponent) {\n function I18nextWithTranslation({\n forwardedRef,\n ...rest\n }) {\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n};","const {\n slice,\n forEach\n} = [];\nfunction defaults(obj) {\n forEach.call(slice.call(arguments, 1), source => {\n if (source) {\n for (const prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nfunction hasXSS(input) {\n if (typeof input !== 'string') return false;\n\n // Common XSS attack patterns\n const xssPatterns = [/<\\s*script.*?>/i, /<\\s*\\/\\s*script\\s*>/i, /<\\s*img.*?on\\w+\\s*=/i, /<\\s*\\w+\\s*on\\w+\\s*=.*?>/i, /javascript\\s*:/i, /vbscript\\s*:/i, /expression\\s*\\(/i, /eval\\s*\\(/i, /alert\\s*\\(/i, /document\\.cookie/i, /document\\.write\\s*\\(/i, /window\\.location/i, /innerHTML/i];\n return xssPatterns.some(pattern => pattern.test(input));\n}\n\n// eslint-disable-next-line no-control-regex\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nconst serializeCookie = function (name, val) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n path: '/'\n };\n const opt = options;\n const value = encodeURIComponent(val);\n let str = `${name}=${value}`;\n if (opt.maxAge > 0) {\n const maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += `; Max-Age=${Math.floor(maxAge)}`;\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n str += `; Domain=${opt.domain}`;\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n str += `; Path=${opt.path}`;\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n str += `; Expires=${opt.expires.toUTCString()}`;\n }\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n if (opt.sameSite) {\n const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n if (opt.partitioned) str += '; Partitioned';\n return str;\n};\nconst cookie = {\n create(name, value, minutes, domain) {\n let cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, value, cookieOptions);\n },\n read(name) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove(name, domain) {\n this.create(name, '', -1, domain);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n // Deconstruct the options object and extract the lookupCookie property\n lookup(_ref) {\n let {\n lookupCookie\n } = _ref;\n if (lookupCookie && typeof document !== 'undefined') {\n return cookie.read(lookupCookie) || undefined;\n }\n return undefined;\n },\n // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupCookie,\n cookieMinutes,\n cookieDomain,\n cookieOptions\n } = _ref2;\n if (lookupCookie && typeof document !== 'undefined') {\n cookie.create(lookupCookie, lng, cookieMinutes, cookieDomain, cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n // Deconstruct the options object and extract the lookupQuerystring property\n lookup(_ref) {\n let {\n lookupQuerystring\n } = _ref;\n let found;\n if (typeof window !== 'undefined') {\n let {\n search\n } = window.location;\n if (!window.location.search && window.location.hash?.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n const query = search.substring(1);\n const params = query.split('&');\n for (let i = 0; i < params.length; i++) {\n const pos = params[i].indexOf('=');\n if (pos > 0) {\n const key = params[i].substring(0, pos);\n if (key === lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\n\nvar hash = {\n name: 'hash',\n // Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property\n lookup(_ref) {\n let {\n lookupHash,\n lookupFromHashIndex\n } = _ref;\n let found;\n if (typeof window !== 'undefined') {\n const {\n hash\n } = window.location;\n if (hash && hash.length > 2) {\n const query = hash.substring(1);\n if (lookupHash) {\n const params = query.split('&');\n for (let i = 0; i < params.length; i++) {\n const pos = params[i].indexOf('=');\n if (pos > 0) {\n const key = params[i].substring(0, pos);\n if (key === lookupHash) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n if (found) return found;\n if (!found && lookupFromHashIndex > -1) {\n const language = hash.match(/\\/([a-zA-Z-]*)/g);\n if (!Array.isArray(language)) return undefined;\n const index = typeof lookupFromHashIndex === 'number' ? lookupFromHashIndex : 0;\n return language[index]?.replace('/', '');\n }\n }\n }\n return found;\n }\n};\n\nlet hasLocalStorageSupport = null;\nconst localStorageAvailable = () => {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = typeof window !== 'undefined' && window.localStorage !== null;\n if (!hasLocalStorageSupport) {\n return false;\n }\n const testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: 'localStorage',\n // Deconstruct the options object and extract the lookupLocalStorage property\n lookup(_ref) {\n let {\n lookupLocalStorage\n } = _ref;\n if (lookupLocalStorage && localStorageAvailable()) {\n return window.localStorage.getItem(lookupLocalStorage) || undefined; // Undefined ensures type consistency with the previous version of this function\n }\n return undefined;\n },\n // Deconstruct the options object and extract the lookupLocalStorage property\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupLocalStorage\n } = _ref2;\n if (lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(lookupLocalStorage, lng);\n }\n }\n};\n\nlet hasSessionStorageSupport = null;\nconst sessionStorageAvailable = () => {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = typeof window !== 'undefined' && window.sessionStorage !== null;\n if (!hasSessionStorageSupport) {\n return false;\n }\n const testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup(_ref) {\n let {\n lookupSessionStorage\n } = _ref;\n if (lookupSessionStorage && sessionStorageAvailable()) {\n return window.sessionStorage.getItem(lookupSessionStorage) || undefined;\n }\n return undefined;\n },\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupSessionStorage\n } = _ref2;\n if (lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup(options) {\n const found = [];\n if (typeof navigator !== 'undefined') {\n const {\n languages,\n userLanguage,\n language\n } = navigator;\n if (languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (let i = 0; i < languages.length; i++) {\n found.push(languages[i]);\n }\n }\n if (userLanguage) {\n found.push(userLanguage);\n }\n if (language) {\n found.push(language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n // Deconstruct the options object and extract the htmlTag property\n lookup(_ref) {\n let {\n htmlTag\n } = _ref;\n let found;\n const internalHtmlTag = htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n if (internalHtmlTag && typeof internalHtmlTag.getAttribute === 'function') {\n found = internalHtmlTag.getAttribute('lang');\n }\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n // Deconstruct the options object and extract the lookupFromPathIndex property\n lookup(_ref) {\n let {\n lookupFromPathIndex\n } = _ref;\n if (typeof window === 'undefined') return undefined;\n const language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (!Array.isArray(language)) return undefined;\n const index = typeof lookupFromPathIndex === 'number' ? lookupFromPathIndex : 0;\n return language[index]?.replace('/', '');\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup(_ref) {\n let {\n lookupFromSubdomainIndex\n } = _ref;\n // If given get the subdomain index else 1\n const internalLookupFromSubdomainIndex = typeof lookupFromSubdomainIndex === 'number' ? lookupFromSubdomainIndex + 1 : 1;\n // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group match which should be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n const language = typeof window !== 'undefined' && window.location?.hostname?.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n // if there is no match (null) return undefined\n if (!language) return undefined;\n // return the given group match\n return language[internalLookupFromSubdomainIndex];\n }\n};\n\n// some environments, throws when accessing document.cookie\nlet canCookies = false;\ntry {\n // eslint-disable-next-line no-unused-expressions\n document.cookie;\n canCookies = true;\n // eslint-disable-next-line no-empty\n} catch (e) {}\nconst order = ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'];\nif (!canCookies) order.splice(1, 1);\nconst getDefaults = () => ({\n order,\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'],\n // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n\n convertDetectedLanguage: l => l\n});\nclass Browser {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n init() {\n let services = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n languageUtils: {}\n };\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n this.options.convertDetectedLanguage = l => l.replace('-', '_');\n }\n\n // backwards compatibility\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n this.addDetector(hash);\n }\n addDetector(detector) {\n this.detectors[detector.name] = detector;\n return this;\n }\n detect() {\n let detectionOrder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.order;\n let detected = [];\n detectionOrder.forEach(detectorName => {\n if (this.detectors[detectorName]) {\n let lookup = this.detectors[detectorName].lookup(this.options);\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n detected = detected.filter(d => d !== undefined && d !== null && !hasXSS(d)).map(d => this.options.convertDetectedLanguage(d));\n if (this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n cacheUserLanguage(lng) {\n let caches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(cacheName => {\n if (this.detectors[cacheName]) this.detectors[cacheName].cacheUserLanguage(lng, this.options);\n });\n }\n}\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\n// Import translation files\nimport sk from './locales/sk.json';\nimport cs from './locales/cs.json';\nimport hu from './locales/hu.json';\n\nconst resources = {\n sk: {\n translation: sk\n },\n cs: {\n translation: cs\n },\n hu: {\n translation: hu\n }\n};\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources,\n fallbackLng: 'sk', // Slovak as default language\n debug: process.env.NODE_ENV === 'development',\n \n interpolation: {\n escapeValue: false, // React already does escaping\n },\n \n detection: {\n order: ['localStorage', 'navigator', 'htmlTag'],\n caches: ['localStorage'],\n }\n });\n\nexport default i18n;\n","// Blockly modules will be imported dynamically to handle external dependency scenarios\nlet Blockly: any;\nlet javascriptGenerator: any;\n\n// Flag to track if Blockly has been initialized\nlet isBlocklyInitialized = false;\nlet initializationPromise: Promise<void> | null = null;\n\n// Track initialization calls for debugging\nlet initializationCallStack: string[] = [];\nlet initializationCount = 0;\n\n// Track active workspaces to prevent duplicates\nconst activeWorkspaces: Set<any> = new Set();\n\n// Track DOM elements that have been injected to prevent double injection\nconst injectedElements: Set<HTMLElement> = new Set();\n\n/**\n * Initialize Blockly with proper setup for package usage\n * This ensures Blockly is properly configured when used as an external package\n * Returns a Promise that resolves when initialization is complete\n */\nexport function initializeBlockly(): Promise<void> {\n initializationCount++;\n const callStack = new Error().stack || 'Unknown call stack';\n const callerInfo = callStack.split('\\n')[2]?.trim() || 'Unknown caller';\n initializationCallStack.push(`Call #${initializationCount}: ${callerInfo}`);\n \n console.log(`[Blockly Setup] 🚀 initializeBlockly() called #${initializationCount}`);\n console.log(`[Blockly Setup] 📍 Caller: ${callerInfo}`);\n console.log(`[Blockly Setup] 📊 Current state: isInitialized=${isBlocklyInitialized}, hasPromise=${!!initializationPromise}`);\n console.log(`[Blockly Setup] 📋 All calls so far:`, initializationCallStack);\n \n if (isBlocklyInitialized) {\n console.log('[Blockly Setup] ✅ Already initialized, returning resolved promise');\n return Promise.resolve();\n }\n\n if (initializationPromise) {\n console.log('[Blockly Setup] ⏳ Initialization already in progress, returning existing promise');\n return initializationPromise;\n }\n\n console.log('[Blockly Setup] 🎯 Starting fresh Blockly initialization...');\n \n initializationPromise = new Promise((resolve, reject) => {\n const initialize = async () => {\n try {\n console.log('[Blockly Setup] 🔍 Checking Blockly core availability...');\n console.log('[Blockly Setup] 📦 Current Blockly state:', {\n BlocklyType: typeof Blockly,\n BlocklyValue: Blockly ? 'defined' : 'undefined',\n javascriptGeneratorType: typeof javascriptGenerator,\n javascriptGeneratorValue: javascriptGenerator ? 'defined' : 'undefined'\n });\n \n // Dynamically import Blockly modules\n if (typeof Blockly === 'undefined') {\n console.log('[Blockly Setup] 📥 Blockly not loaded, attempting dynamic import...');\n try {\n // Try to import Blockly modules dynamically\n console.log('[Blockly Setup] 📥 Importing blockly/core...');\n const blocklyCore = await import('blockly/core');\n console.log('[Blockly Setup] 📥 Importing blockly/blocks...');\n await import('blockly/blocks');\n console.log('[Blockly Setup] 📥 Importing blockly/javascript...');\n const blocklyJs = await import('blockly/javascript');\n \n Blockly = blocklyCore;\n javascriptGenerator = blocklyJs.javascriptGenerator;\n \n console.log('[Blockly Setup] ✅ Blockly modules imported successfully');\n console.log('[Blockly Setup] 📦 Post-import state:', {\n BlocklyType: typeof Blockly,\n BlocklyKeys: Blockly ? Object.keys(Blockly).slice(0, 10) : 'none',\n javascriptGeneratorType: typeof javascriptGenerator,\n javascriptGeneratorKeys: javascriptGenerator ? Object.keys(javascriptGenerator).slice(0, 10) : 'none'\n });\n } catch (importError) {\n console.error('[Blockly Setup] ❌ Failed to import Blockly modules:', importError);\n console.error('[Blockly Setup] 📋 Import error details:', {\n message: (importError as Error).message,\n stack: (importError as Error).stack,\n name: (importError as Error).name\n });\n const error = new Error('Blockly core is not available. Make sure Blockly is properly installed and imported in your project.');\n reject(error);\n return;\n }\n } else {\n console.log('[Blockly Setup] ✅ Blockly already loaded, skipping import');\n }\n\n console.log('[Blockly Setup] ✅ Blockly core is available');\n\n // Initialize Blockly's internal state management\n // This is crucial for preventing the recentlyCreatedOwnerStacks error\n console.log('[Blockly Setup] 🌍 Setting up locale...');\n if (typeof (Blockly as any).setLocale === 'function') {\n try {\n (Blockly as any).setLocale('en');\n console.log('[Blockly Setup] ✅ Locale set to English');\n } catch (e) {\n console.warn('[Blockly Setup] ⚠️ Locale setup failed, using default:', e);\n }\n } else {\n console.log('[Blockly Setup] ⚠️ setLocale function not available');\n }\n\n // Initialize Blockly's internal state objects that are needed for proper operation\n // This ensures that recentlyCreatedOwnerStacks and other internal state is properly initialized\n console.log('[Blockly Setup] 🏗️ Initializing main workspace access...');\n if (typeof (Blockly as any).getMainWorkspace === 'function') {\n try {\n // Force initialization of internal state by accessing main workspace\n const mainWorkspace = (Blockly as any).getMainWorkspace();\n console.log('[Blockly Setup] ✅ Main workspace access initialized:', !!mainWorkspace);\n } catch (e) {\n console.log('[Blockly Setup] ℹ️ Main workspace access failed (expected if no workspace exists):', (e as Error).message);\n }\n } else {\n console.log('[Blockly Setup] ⚠️ getMainWorkspace function not available');\n }\n\n // Ensure Blockly's internal state management is initialized\n // This is the key fix for the recentlyCreatedOwnerStacks error\n console.log('[Blockly Setup] 🎯 Initializing event system...');\n console.log('[Blockly Setup] 🔍 Checking Events object:', {\n EventsType: typeof (Blockly as any).Events,\n EventsKeys: (Blockly as any).Events ? Object.keys((Blockly as any).Events).slice(0, 10) : 'none',\n hasGetGroup: typeof (Blockly as any).Events?.getGroup === 'function'\n });\n \n if (typeof (Blockly as any).Events === 'object' && (Blockly as any).Events.getGroup) {\n try {\n // Initialize event system\n const group = (Blockly as any).Events.getGroup();\n console.log('[Blockly Setup] ✅ Event system initialized, group:', group);\n } catch (e) {\n console.log('[Blockly Setup] ⚠️ Event system initialization failed (may already be initialized):', (e as Error).message);\n }\n } else {\n console.log('[Blockly Setup] ⚠️ Events.getGroup not available');\n }\n\n // Additional internal state initialization\n console.log('[Blockly Setup] 🔧 Checking for recentlyCreatedOwnerStacks...');\n try {\n // Check if the problematic property exists and initialize it if needed\n if ((Blockly as any).Events && typeof (Blockly as any).Events.getGroup === 'function') {\n // Force initialization by calling getGroup\n (Blockly as any).Events.getGroup();\n console.log('[Blockly Setup] ✅ Events.getGroup() called successfully');\n }\n \n // Check for other internal state that might need initialization\n if ((Blockly as any).utils && (Blockly as any).utils.xml) {\n console.log('[Blockly Setup] ✅ Blockly.utils.xml is available');\n }\n \n if ((Blockly as any).inject) {\n console.log('[Blockly Setup] ✅ Blockly.inject is available');\n }\n \n } catch (e) {\n console.error('[Blockly Setup] ❌ Error during internal state check:', e);\n }\n\n // Ensure JavaScript generator is available\n console.log('[Blockly Setup] 🔧 Checking JavaScript generator...');\n if (typeof javascriptGenerator === 'undefined') {\n const error = new Error('Blockly JavaScript generator is not available. Make sure blockly/javascript is imported.');\n console.error('[Blockly Setup] ❌ Error:', error.message);\n reject(error);\n return;\n }\n\n console.log('[Blockly Setup] ✅ JavaScript generator is available');\n console.log('[Blockly Setup] 📦 JavaScript generator details:', {\n type: typeof javascriptGenerator,\n hasWorkspaceToCode: typeof javascriptGenerator.workspaceToCode === 'function',\n hasForBlock: typeof javascriptGenerator.forBlock === 'object',\n keys: Object.keys(javascriptGenerator).slice(0, 10)\n });\n\n // Mark as initialized\n isBlocklyInitialized = true;\n \n console.log('[Blockly Setup] 🎉 ✅ Blockly initialized successfully for package usage');\n console.log('[Blockly Setup] 📊 Final state:', {\n isBlocklyInitialized,\n hasBlockly: !!Blockly,\n hasJavaScriptGenerator: !!javascriptGenerator,\n initializationCount,\n callStack: initializationCallStack\n });\n resolve();\n } catch (error) {\n console.error('[Blockly Setup] ❌ Failed to initialize Blockly:', error);\n console.error('[Blockly Setup] 📋 Error details:', {\n message: (error as Error).message,\n stack: (error as Error).stack,\n name: (error as Error).name\n });\n initializationPromise = null; // Reset so we can try again\n reject(error);\n }\n };\n \n initialize();\n });\n\n return initializationPromise;\n}\n\n/**\n * Check if Blockly is properly initialized\n */\nexport function isBlocklyReady(): boolean {\n return isBlocklyInitialized && typeof Blockly !== 'undefined';\n}\n\n/**\n * Get a properly initialized Blockly instance\n */\nexport function getBlockly(): any {\n if (!isBlocklyReady()) {\n throw new Error('Blockly is not initialized. Call initializeBlockly() first.');\n }\n return Blockly;\n}\n\n/**\n * Get the JavaScript generator with proper initialization\n */\nexport function getJavaScriptGenerator(): any {\n if (!isBlocklyReady()) {\n throw new Error('Blockly is not initialized. Call initializeBlockly() first.');\n }\n return javascriptGenerator;\n}\n\n/**\n * Reset Blockly initialization state (useful for testing)\n */\nexport function resetBlocklyInitialization(): void {\n console.log('[Blockly Setup] 🔄 Resetting initialization state');\n console.log('[Blockly Setup] 📊 State before reset:', {\n isBlocklyInitialized,\n hasInitializationPromise: !!initializationPromise,\n initializationCount,\n callStack: initializationCallStack\n });\n isBlocklyInitialized = false;\n initializationPromise = null;\n initializationCallStack = [];\n initializationCount = 0;\n console.log('[Blockly Setup] ✅ Reset completed');\n}\n\n/**\n * Get debugging information about Blockly initialization\n */\nexport function getBlocklyDebugInfo(): any {\n return {\n isBlocklyInitialized,\n hasInitializationPromise: !!initializationPromise,\n initializationCount,\n callStack: [...initializationCallStack],\n blocklyState: {\n hasBlockly: !!Blockly,\n blocklyType: typeof Blockly,\n blocklyKeys: Blockly ? Object.keys(Blockly).slice(0, 20) : 'none'\n },\n generatorState: {\n hasGenerator: !!javascriptGenerator,\n generatorType: typeof javascriptGenerator,\n generatorKeys: javascriptGenerator ? Object.keys(javascriptGenerator).slice(0, 20) : 'none'\n }\n };\n}\n\n/**\n * Register a workspace to track active workspaces\n */\nexport function registerWorkspace(workspace: any): void {\n console.log(`[Blockly Setup] 📝 Registering workspace. Current active workspaces: ${activeWorkspaces.size}`);\n activeWorkspaces.add(workspace);\n console.log(`[Blockly Setup] 📝 Workspace registered. Total active workspaces: ${activeWorkspaces.size}`);\n}\n\n/**\n * Unregister a workspace when it's disposed\n */\nexport function unregisterWorkspace(workspace: any): void {\n console.log(`[Blockly Setup] 🗑️ Unregistering workspace. Current active workspaces: ${activeWorkspaces.size}`);\n activeWorkspaces.delete(workspace);\n console.log(`[Blockly Setup] 🗑️ Workspace unregistered. Total active workspaces: ${activeWorkspaces.size}`);\n}\n\n/**\n * Get the number of active workspaces\n */\nexport function getActiveWorkspaceCount(): number {\n return activeWorkspaces.size;\n}\n\n/**\n * Get all active workspaces (for debugging)\n */\nexport function getActiveWorkspaces(): any[] {\n return Array.from(activeWorkspaces);\n}\n\n/**\n * Check if a DOM element has already been injected with Blockly\n */\nexport function isElementInjected(element: HTMLElement): boolean {\n return injectedElements.has(element);\n}\n\n/**\n * Mark a DOM element as injected\n */\nexport function markElementAsInjected(element: HTMLElement): void {\n console.log(`[Blockly Setup] 📝 Marking element as injected. Current injected elements: ${injectedElements.size}`);\n injectedElements.add(element);\n console.log(`[Blockly Setup] 📝 Element marked as injected. Total injected elements: ${injectedElements.size}`);\n}\n\n/**\n * Unmark a DOM element as injected (when workspace is disposed)\n */\nexport function unmarkElementAsInjected(element: HTMLElement): void {\n console.log(`[Blockly Setup] 🗑️ Unmarking element as injected. Current injected elements: ${injectedElements.size}`);\n injectedElements.delete(element);\n console.log(`[Blockly Setup] 🗑️ Element unmarked as injected. Total injected elements: ${injectedElements.size}`);\n}\n\n/**\n * Get all injected elements (for debugging)\n */\nexport function getInjectedElements(): HTMLElement[] {\n return Array.from(injectedElements);\n}\n","// Utility functions for the project\n\n// Export Blockly setup utilities\nexport * from './blocklySetup';\n\n/**\n * Debounce function to limit the rate at which a function can fire\n * @param func - The function to debounce\n * @param wait - The number of milliseconds to delay\n * @returns A debounced version of the function\n */\nexport function debounce<T extends (...args: unknown[]) => unknown>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout>;\n \n return (...args: Parameters<T>) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func(...args), wait);\n };\n}\n\n/**\n * Throttle function to limit the rate at which a function can fire\n * @param func - The function to throttle\n * @param limit - The number of milliseconds to limit\n * @returns A throttled version of the function\n */\nexport function throttle<T extends (...args: unknown[]) => unknown>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n let inThrottle: boolean;\n \n return (...args: Parameters<T>) => {\n if (!inThrottle) {\n func(...args);\n inThrottle = true;\n setTimeout(() => (inThrottle = false), limit);\n }\n };\n}\n\n/**\n * Generate a random ID string\n * @param length - The length of the ID (default: 8)\n * @returns A random ID string\n */\nexport function generateId(length: number = 8): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n \n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n \n return result;\n}\n\n/**\n * Format a number with commas as thousands separators\n * @param num - The number to format\n * @returns The formatted number string\n */\nexport function formatNumber(num: number): string {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n\n/**\n * Format a date to a readable string\n * @param date - The date to format\n * @param options - Intl.DateTimeFormatOptions for customization\n * @returns The formatted date string\n */\nexport function formatDate(\n date: Date | string | number,\n options: Intl.DateTimeFormatOptions = {}\n): string {\n const dateObj = new Date(date);\n const defaultOptions: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n ...options,\n };\n \n return new Intl.DateTimeFormat('en-US', defaultOptions).format(dateObj);\n}\n\n/**\n * Format a relative time (e.g., \"2 hours ago\")\n * @param date - The date to format\n * @returns The relative time string\n */\nexport function formatRelativeTime(date: Date | string | number): string {\n const now = new Date();\n const targetDate = new Date(date);\n const diffInSeconds = Math.floor((now.getTime() - targetDate.getTime()) / 1000);\n \n if (diffInSeconds < 60) {\n return 'just now';\n }\n \n const diffInMinutes = Math.floor(diffInSeconds / 60);\n if (diffInMinutes < 60) {\n return `${diffInMinutes} minute${diffInMinutes === 1 ? '' : 's'} ago`;\n }\n \n const diffInHours = Math.floor(diffInMinutes / 60);\n if (diffInHours < 24) {\n return `${diffInHours} hour${diffInHours === 1 ? '' : 's'} ago`;\n }\n \n const diffInDays = Math.floor(diffInHours / 24);\n if (diffInDays < 7) {\n return `${diffInDays} day${diffInDays === 1 ? '' : 's'} ago`;\n }\n \n const diffInWeeks = Math.floor(diffInDays / 7);\n if (diffInWeeks < 4) {\n return `${diffInWeeks} week${diffInWeeks === 1 ? '' : 's'} ago`;\n }\n \n const diffInMonths = Math.floor(diffInDays / 30);\n if (diffInMonths < 12) {\n return `${diffInMonths} month${diffInMonths === 1 ? '' : 's'} ago`;\n }\n \n const diffInYears = Math.floor(diffInDays / 365);\n return `${diffInYears} year${diffInYears === 1 ? '' : 's'} ago`;\n}\n\n/**\n * Capitalize the first letter of a string\n * @param str - The string to capitalize\n * @returns The capitalized string\n */\nexport function capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n}\n\n/**\n * Convert a string to title case\n * @param str - The string to convert\n * @returns The title case string\n */\nexport function toTitleCase(str: string): string {\n return str\n .toLowerCase()\n .split(' ')\n .map(word => capitalize(word))\n .join(' ');\n}\n\n/**\n * Truncate a string to a specified length\n * @param str - The string to truncate\n * @param length - The maximum length\n * @param suffix - The suffix to add (default: '...')\n * @returns The truncated string\n */\nexport function truncate(str: string, length: number, suffix: string = '...'): string {\n if (str.length <= length) {\n return str;\n }\n \n return str.substring(0, length - suffix.length) + suffix;\n}\n\n/**\n * Check if a string is a valid email\n * @param email - The email to validate\n * @returns True if valid, false otherwise\n */\nexport function isValidEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}\n\n/**\n * Check if a string is a valid URL\n * @param url - The URL to validate\n * @returns True if valid, false otherwise\n */\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Deep clone an object\n * @param obj - The object to clone\n * @returns A deep clone of the object\n */\nexport function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n \n if (obj instanceof Date) {\n return new Date(obj.getTime()) as T;\n }\n \n if (obj instanceof Array) {\n return obj.map(item => deepClone(item)) as T;\n }\n \n if (typeof obj === 'object') {\n const clonedObj = {} as T;\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clonedObj[key] = deepClone(obj[key]);\n }\n }\n return clonedObj;\n }\n \n return obj;\n}\n\n/**\n * Merge multiple objects\n * @param objects - The objects to merge\n * @returns The merged object\n */\nexport function mergeObjects<T extends Record<string, any>>(...objects: T[]): T {\n return objects.reduce((merged, obj) => {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {\n (merged as any)[key] = mergeObjects((merged as any)[key] || {}, obj[key] as Record<string, any>);\n } else {\n (merged as any)[key] = obj[key];\n }\n }\n }\n return merged;\n }, {} as T);\n}\n\n/**\n * Remove undefined and null values from an object\n * @param obj - The object to clean\n * @returns The cleaned object\n */\nexport function removeEmptyValues<T extends Record<string, any>>(obj: T): Partial<T> {\n const cleaned: Partial<T> = {};\n \n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && obj[key] !== undefined && obj[key] !== null) {\n cleaned[key] = obj[key];\n }\n }\n \n return cleaned;\n}\n\n/**\n * Get a nested property value from an object using a path string\n * @param obj - The object to search in\n * @param path - The path to the property (e.g., 'user.profile.name')\n * @param defaultValue - The default value if property not found\n * @returns The property value or default value\n */\nexport function getNestedValue<T>(\n obj: any,\n path: string,\n defaultValue?: T\n): T | undefined {\n const keys = path.split('.');\n let result = obj;\n \n for (const key of keys) {\n if (result && typeof result === 'object' && key in result) {\n result = result[key];\n } else {\n return defaultValue;\n }\n }\n \n return result;\n}\n\n/**\n * Set a nested property value in an object using a path string\n * @param obj - The object to modify\n * @param path - The path to the property (e.g., 'user.profile.name')\n * @param value - The value to set\n * @returns The modified object\n */\nexport function setNestedValue<T extends Record<string, any>>(\n obj: T,\n path: string,\n value: any\n): T {\n const keys = path.split('.');\n const result = { ...obj };\n let current: any = result;\n \n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (!(key in current) || typeof current[key] !== 'object') {\n current[key] = {};\n }\n current = current[key];\n }\n \n current[keys[keys.length - 1]] = value;\n return result;\n}\n\n/**\n * Check if two objects are deeply equal\n * @param obj1 - First object\n * @param obj2 - Second object\n * @returns True if objects are deeply equal\n */\nexport function isDeepEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n \n if (\n typeof obj1 !== 'object' ||\n typeof obj2 !== 'object' ||\n obj1 === null ||\n obj2 === null\n ) {\n return false;\n }\n \n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n \n if (keys1.length !== keys2.length) {\n return false;\n }\n \n for (const key of keys1) {\n if (!keys2.includes(key) || !isDeepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n \n return true;\n}\n\n/**\n * Sleep for a specified number of milliseconds\n * @param ms - Milliseconds to sleep\n * @returns A promise that resolves after the specified time\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Retry a function with exponential backoff\n * @param fn - The function to retry\n * @param maxRetries - Maximum number of retries\n * @param baseDelay - Base delay in milliseconds\n * @returns The result of the function or throws an error\n */\nexport async function retryWithBackoff<T>(\n fn: () => Promise<T>,\n maxRetries: number = 3,\n baseDelay: number = 1000\n): Promise<T> {\n let lastError: Error;\n \n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error as Error;\n \n if (attempt === maxRetries) {\n throw lastError;\n }\n \n const delay = baseDelay * Math.pow(2, attempt);\n await sleep(delay);\n }\n }\n \n throw lastError!;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","\"use client\";\n\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {},\n breakpoints: DEFAULT_BREAKPOINTS,\n minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\nfunction ThemeProvider({\n prefixes = {},\n breakpoints = DEFAULT_BREAKPOINTS,\n minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: {\n ...prefixes\n },\n breakpoints,\n minBreakpoint,\n dir\n }), [prefixes, breakpoints, minBreakpoint, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n const {\n breakpoints\n } = useContext(ThemeContext);\n return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n const {\n minBreakpoint\n } = useContext(ThemeContext);\n return minBreakpoint;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent;\n // If it's a functional component make sure we don't break it with a ref\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({\n ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default {\n disabled: false\n};","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number,\n appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string,\n active: PropTypes.string\n}), PropTypes.shape({\n enter: PropTypes.string,\n enterDone: PropTypes.string,\n enterActive: PropTypes.string,\n exit: PropTypes.string,\n exitDone: PropTypes.string,\n exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import * as React from 'react';\nexport function isEscKey(e) {\n return e.code === 'Escape' || e.keyCode === 27;\n}\nexport function getReactVersion() {\n const parts = React.version.split('.');\n return {\n major: +parts[0],\n minor: +parts[1],\n patch: +parts[2]\n };\n}\nexport function getChildRef(element) {\n if (!element || typeof element === 'function') {\n return null;\n }\n const {\n major\n } = getReactVersion();\n const childRef = major >= 19 ? element.props.ref : element.ref;\n return childRef;\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nfunction parseDuration(node, property) {\n const str = css(node, property) || '';\n const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\nexport default function transitionEndListener(element, handler) {\n const duration = parseDuration(element, 'transitionDuration');\n const delay = parseDuration(element, 'transitionDelay');\n const remove = transitionEnd(element, e => {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n // TODO: Remove in next major.\n // eslint-disable-next-line react/no-find-dom-node\n return ReactDOM.findDOMNode(componentOrElement);\n }\n return componentOrElement != null ? componentOrElement : null;\n}","\"use client\";\n\nimport React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n addEndListener,\n children,\n childRef,\n ...props\n}, ref) => {\n const nodeRef = useRef(null);\n const mergedRef = useMergedRefs(nodeRef, childRef);\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n const normalize = callback => param => {\n if (callback && nodeRef.current) {\n callback(nodeRef.current, param);\n }\n };\n const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n const handleExit = useCallback(normalize(onExit), [onExit]);\n const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n const handleExited = useCallback(normalize(onExited), [onExited]);\n const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n return /*#__PURE__*/_jsx(Transition, {\n ref: ref,\n ...props,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n children: typeof children === 'function' ? (status, innerProps) =>\n // TODO: Types for RTG missing innerProps, so need to cast.\n children(status, {\n ...innerProps,\n ref: attachRef\n }) : /*#__PURE__*/React.cloneElement(children, {\n ref: attachRef\n })\n });\n});\nTransitionWrapper.displayName = 'TransitionWrapper';\nexport default TransitionWrapper;","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className =>\n/*#__PURE__*/\n// eslint-disable-next-line react/display-name\nReact.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", {\n ...p,\n ref: ref,\n className: classNames(p.className, className)\n})));","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","const _excluded = [\"as\", \"disabled\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n tagName,\n disabled,\n href,\n target,\n rel,\n role,\n onClick,\n tabIndex = 0,\n type\n}) {\n if (!tagName) {\n if (href != null || target != null || rel != null) {\n tagName = 'a';\n } else {\n tagName = 'button';\n }\n }\n const meta = {\n tagName\n };\n if (tagName === 'button') {\n return [{\n type: type || 'button',\n disabled\n }, meta];\n }\n const handleClick = event => {\n if (disabled || tagName === 'a' && isTrivialHref(href)) {\n event.preventDefault();\n }\n if (disabled) {\n event.stopPropagation();\n return;\n }\n onClick == null ? void 0 : onClick(event);\n };\n const handleKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n if (tagName === 'a') {\n // Ensure there's a href so Enter can trigger anchor button.\n href || (href = '#');\n if (disabled) {\n href = undefined;\n }\n }\n return [{\n role: role != null ? role : 'button',\n // explicitly undefined so that it overrides the props disabled in a spread\n // e.g. <Tag {...props} {...hookProps} />\n disabled: undefined,\n tabIndex: disabled ? undefined : tabIndex,\n href,\n target: tagName === 'a' ? target : undefined,\n 'aria-disabled': !disabled ? undefined : disabled,\n rel: tagName === 'a' ? rel : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: asProp,\n disabled\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [buttonProps, {\n tagName: Component\n }] = useButtonProps(Object.assign({\n tagName: asProp,\n disabled\n }, props));\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n ref: ref\n }));\n});\nButton.displayName = 'Button';\nexport default Button;","const _excluded = [\"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/anchor-has-content */\n\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * An generic `<a>` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [buttonProps] = useButtonProps(Object.assign({\n tagName: 'a'\n }, props));\n const handleKeyDown = useEventCallback(e => {\n buttonProps.onKeyDown(e);\n onKeyDown == null ? void 0 : onKeyDown(e);\n });\n if (isTrivialHref(props.href) || props.role === 'button') {\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, buttonProps, {\n onKeyDown: handleKeyDown\n }));\n }\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, {\n onKeyDown: onKeyDown\n }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport { getChildRef } from '@restart/ui/utils';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst fadeStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n className,\n children,\n transitionClasses = {},\n onEnter,\n ...rest\n}, ref) => {\n const props = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n ...rest\n };\n const handleEnter = useCallback((node, isAppearing) => {\n triggerBrowserReflow(node);\n onEnter == null || onEnter(node, isAppearing);\n }, [onEnter]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n onEnter: handleEnter,\n childRef: getChildRef(children),\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames('fade', className, children.props.className, fadeStyles[status], transitionClasses[status])\n })\n });\n});\nFade.displayName = 'Fade';\nexport default Fade;","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /** An accessible label indicating the relevant information about the Close Button. */\n 'aria-label': PropTypes.string,\n /** A callback fired after the Close Button is clicked. */\n onClick: PropTypes.func,\n /**\n * Render different color variant for the button.\n *\n * Omitting this will render the default dark color.\n */\n variant: PropTypes.oneOf(['white'])\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n className,\n variant,\n 'aria-label': ariaLabel = 'Close',\n ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n \"aria-label\": ariaLabel,\n ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nexport default CloseButton;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Badge = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n bg = 'primary',\n pill = false,\n text,\n className,\n as: Component = 'span',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'badge');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, pill && `rounded-pill`, text && `text-${text}`, bg && `bg-${bg}`)\n });\n});\nBadge.displayName = 'Badge';\nexport default Badge;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Button = /*#__PURE__*/React.forwardRef(({\n as,\n bsPrefix,\n variant = 'primary',\n size,\n active = false,\n disabled = false,\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n const [buttonProps, {\n tagName\n }] = useButtonProps({\n tagName: as,\n disabled,\n ...props\n });\n const Component = tagName;\n return /*#__PURE__*/_jsx(Component, {\n ...buttonProps,\n ...props,\n ref: ref,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && disabled && 'disabled')\n });\n});\nButton.displayName = 'Button';\nexport default Button;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardBody.displayName = 'CardBody';\nexport default CardBody;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardFooter = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-footer');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardFooter.displayName = 'CardFooter';\nexport default CardFooter;","\"use client\";\n\nimport * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardHeaderContext from './CardHeaderContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-header');\n const contextValue = useMemo(() => ({\n cardHeaderBsPrefix: prefix\n }), [prefix]);\n return /*#__PURE__*/_jsx(CardHeaderContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix)\n })\n });\n});\nCardHeader.displayName = 'CardHeader';\nexport default CardHeader;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImg = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n variant,\n as: Component = 'img',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(variant ? `${prefix}-${variant}` : prefix, className),\n ...props\n });\n});\nCardImg.displayName = 'CardImg';\nexport default CardImg;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImgOverlay = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-img-overlay');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardImgOverlay.displayName = 'CardImgOverlay';\nexport default CardImgOverlay;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'a',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardLink.displayName = 'CardLink';\nexport default CardLink;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH6 = divWithClassName('h6');\nconst CardSubtitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH6,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-subtitle');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardSubtitle.displayName = 'CardSubtitle';\nexport default CardSubtitle;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'p',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardText.displayName = 'CardText';\nexport default CardText;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst CardTitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH5,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-title');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardTitle.displayName = 'CardTitle';\nexport default CardTitle;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardBody from './CardBody';\nimport CardFooter from './CardFooter';\nimport CardHeader from './CardHeader';\nimport CardImg from './CardImg';\nimport CardImgOverlay from './CardImgOverlay';\nimport CardLink from './CardLink';\nimport CardSubtitle from './CardSubtitle';\nimport CardText from './CardText';\nimport CardTitle from './CardTitle';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Card = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n bg,\n text,\n border,\n body = false,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, bg && `bg-${bg}`, text && `text-${text}`, border && `border-${border}`),\n children: body ? /*#__PURE__*/_jsx(CardBody, {\n children: children\n }) : children\n });\n});\nCard.displayName = 'Card';\nexport default Object.assign(Card, {\n Img: CardImg,\n Title: CardTitle,\n Subtitle: CardSubtitle,\n Body: CardBody,\n Link: CardLink,\n Text: CardText,\n Header: CardHeader,\n Footer: CardFooter,\n ImgOverlay: CardImgOverlay\n});","import * as React from 'react';\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\nfunction map(children, func) {\n let index = 0;\n return React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child);\n}\n\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\nfunction forEach(children, func) {\n let index = 0;\n React.Children.forEach(children, child => {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n\n/**\n * Finds whether a component's `children` prop includes a React element of the\n * specified type.\n */\nfunction hasChildOfType(children, type) {\n return React.Children.toArray(children).some(child => /*#__PURE__*/React.isValidElement(child) && child.type === type);\n}\nexport { map, forEach, hasChildOfType };","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n as,\n bsPrefix,\n className,\n ...props\n}) {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const spans = [];\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n return [{\n ...props,\n className: classNames(className, ...spans, ...classes)\n }, {\n as,\n bsPrefix,\n spans\n }];\n}\nconst Col = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n const [{\n className,\n ...colProps\n }, {\n as: Component = 'div',\n bsPrefix,\n spans\n }] = useCol(props);\n return /*#__PURE__*/_jsx(Component, {\n ...colProps,\n ref: ref,\n className: classNames(className, !spans.length && bsPrefix)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nexport default Container;","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { useCallback, useRef, useState } from 'react';\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n const wasPropRef = useRef(propValue !== undefined);\n const [stateValue, setState] = useState(defaultValue);\n const isProp = propValue !== undefined;\n const wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n return [isProp ? propValue : stateValue, useCallback((...args) => {\n const [value, ...rest] = args;\n let returnValue = handler == null ? void 0 : handler(value, ...rest);\n setState(value);\n return returnValue;\n }, [handler])];\n}\nexport { useUncontrolledProp };\nexport function useUncontrolled(props, config) {\n return Object.keys(config).reduce((result, fieldName) => {\n const _ref = result,\n _defaultKey = defaultKey(fieldName),\n {\n [_defaultKey]: defaultValue,\n [fieldName]: propsValue\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, [_defaultKey, fieldName].map(_toPropertyKey));\n const handlerName = config[fieldName];\n const [value, handler] = useUncontrolledProp(propsValue, defaultValue, props[handlerName]);\n return Object.assign({}, rest, {\n [fieldName]: value,\n [handlerName]: handler\n });\n }, props);\n}","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are strictly equal to the last state value\n const [, dispatch] = useReducer(revision => revision + 1, 0);\n return dispatch;\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","import $670gB$react, {useContext as $670gB$useContext, useState as $670gB$useState, useMemo as $670gB$useMemo, useLayoutEffect as $670gB$useLayoutEffect, useRef as $670gB$useRef} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst $b5e257d569688ac6$var$defaultContext = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\nconst $b5e257d569688ac6$var$SSRContext = /*#__PURE__*/ (0, $670gB$react).createContext($b5e257d569688ac6$var$defaultContext);\nconst $b5e257d569688ac6$var$IsSSRContext = /*#__PURE__*/ (0, $670gB$react).createContext(false);\n// This is only used in React < 18.\nfunction $b5e257d569688ac6$var$LegacySSRProvider(props) {\n let cur = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n let counter = $b5e257d569688ac6$var$useCounter(cur === $b5e257d569688ac6$var$defaultContext);\n let [isSSR, setIsSSR] = (0, $670gB$useState)(true);\n let value = (0, $670gB$useMemo)(()=>({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === $b5e257d569688ac6$var$defaultContext ? '' : `${cur.prefix}-${counter}`,\n current: 0\n }), [\n cur,\n counter\n ]);\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof document !== 'undefined') // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, $670gB$useLayoutEffect)(()=>{\n setIsSSR(false);\n }, []);\n return /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$SSRContext.Provider, {\n value: value\n }, /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$IsSSRContext.Provider, {\n value: isSSR\n }, props.children));\n}\nlet $b5e257d569688ac6$var$warnedAboutSSRProvider = false;\nfunction $b5e257d569688ac6$export$9f8ac96af4b1b2ae(props) {\n if (typeof (0, $670gB$react)['useId'] === 'function') {\n if (process.env.NODE_ENV !== 'test' && process.env.NODE_ENV !== 'production' && !$b5e257d569688ac6$var$warnedAboutSSRProvider) {\n console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n $b5e257d569688ac6$var$warnedAboutSSRProvider = true;\n }\n return /*#__PURE__*/ (0, $670gB$react).createElement((0, $670gB$react).Fragment, null, props.children);\n }\n return /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$LegacySSRProvider, props);\n}\nlet $b5e257d569688ac6$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $b5e257d569688ac6$var$componentIds = new WeakMap();\nfunction $b5e257d569688ac6$var$useCounter(isDisabled = false) {\n let ctx = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n let ref = (0, $670gB$useRef)(null);\n // eslint-disable-next-line rulesdir/pure-render\n if (ref.current === null && !isDisabled) {\n var _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner, _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n // This means our id counter will be incremented twice instead of once. This is a problem because on the\n // server, components are only rendered once and so ids generated on the server won't match the client.\n // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n // To ensure that we only increment the global counter once, we store the starting id for this component in\n // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n // Since React runs the second render immediately after the first, this is safe.\n // @ts-ignore\n let currentOwner = (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = (0, $670gB$react).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === void 0 ? void 0 : (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner = _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner === void 0 ? void 0 : _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner.current;\n if (currentOwner) {\n let prevComponentValue = $b5e257d569688ac6$var$componentIds.get(currentOwner);\n if (prevComponentValue == null) // On the first render, and first call to useId, store the id and state in our weak map.\n $b5e257d569688ac6$var$componentIds.set(currentOwner, {\n id: ctx.current,\n state: currentOwner.memoizedState\n });\n else if (currentOwner.memoizedState !== prevComponentValue.state) {\n // On the second render, the memoizedState gets reset by React.\n // Reset the counter, and remove from the weak map so we don't\n // do this for subsequent useId calls.\n ctx.current = prevComponentValue.id;\n $b5e257d569688ac6$var$componentIds.delete(currentOwner);\n }\n }\n // eslint-disable-next-line rulesdir/pure-render\n ref.current = ++ctx.current;\n }\n // eslint-disable-next-line rulesdir/pure-render\n return ref.current;\n}\nfunction $b5e257d569688ac6$var$useLegacySSRSafeId(defaultId) {\n let ctx = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === $b5e257d569688ac6$var$defaultContext && !$b5e257d569688ac6$var$canUseDOM && process.env.NODE_ENV !== 'production') console.warn('When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.');\n let counter = $b5e257d569688ac6$var$useCounter(!!defaultId);\n let prefix = ctx === $b5e257d569688ac6$var$defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;\n return defaultId || `${prefix}-${counter}`;\n}\nfunction $b5e257d569688ac6$var$useModernSSRSafeId(defaultId) {\n let id = (0, $670gB$react).useId();\n let [didSSR] = (0, $670gB$useState)($b5e257d569688ac6$export$535bd6ca7f90a273());\n let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${$b5e257d569688ac6$var$defaultContext.prefix}`;\n return defaultId || `${prefix}-${id}`;\n}\nconst $b5e257d569688ac6$export$619500959fc48b26 = typeof (0, $670gB$react)['useId'] === 'function' ? $b5e257d569688ac6$var$useModernSSRSafeId : $b5e257d569688ac6$var$useLegacySSRSafeId;\nfunction $b5e257d569688ac6$var$getSnapshot() {\n return false;\n}\nfunction $b5e257d569688ac6$var$getServerSnapshot() {\n return true;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction $b5e257d569688ac6$var$subscribe(onStoreChange) {\n // noop\n return ()=>{};\n}\nfunction $b5e257d569688ac6$export$535bd6ca7f90a273() {\n // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n if (typeof (0, $670gB$react)['useSyncExternalStore'] === 'function') return (0, $670gB$react)['useSyncExternalStore']($b5e257d569688ac6$var$subscribe, $b5e257d569688ac6$var$getSnapshot, $b5e257d569688ac6$var$getServerSnapshot);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return (0, $670gB$useContext)($b5e257d569688ac6$var$IsSSRContext);\n}\n\n\nexport {$b5e257d569688ac6$export$9f8ac96af4b1b2ae as SSRProvider, $b5e257d569688ac6$export$535bd6ca7f90a273 as useIsSSR, $b5e257d569688ac6$export$619500959fc48b26 as useSSRSafeId};\n//# sourceMappingURL=SSRProvider.module.js.map\n","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\nexport const PROPERTY_PREFIX = `rrUi`;\nexport function dataAttr(property) {\n return `${ATTRIBUTE_PREFIX}${property}`;\n}\nexport function dataProp(property) {\n return `${PROPERTY_PREFIX}${property}`;\n}","\"use client\";\n\nimport * as React from 'react';\n\n// TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Feedback = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n as: Component = 'div',\n className,\n type = 'valid',\n tooltip = false,\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, `${type}-${tooltip ? 'tooltip' : 'feedback'}`)\n}));\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","\"use client\";\n\nimport * as React from 'react';\n\n// TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckInput = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n className,\n type = 'checkbox',\n isValid = false,\n isInvalid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n return /*#__PURE__*/_jsx(\"label\", {\n ...props,\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n });\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { hasChildOfType } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FormCheck = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n bsSwitchPrefix,\n inline = false,\n reverse = false,\n disabled = false,\n isValid = false,\n isInvalid = false,\n feedbackTooltip = false,\n feedback,\n feedbackType,\n className,\n style,\n title = '',\n type = 'checkbox',\n label,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as = 'input',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n bsSwitchPrefix = useBootstrapPrefix(bsSwitchPrefix, 'form-switch');\n const {\n controlId\n } = useContext(FormContext);\n const innerFormContext = useMemo(() => ({\n controlId: id || controlId\n }), [controlId, id]);\n const hasLabel = !children && label != null && label !== false || hasChildOfType(children, FormCheckLabel);\n const input = /*#__PURE__*/_jsx(FormCheckInput, {\n ...props,\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: as\n });\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: innerFormContext,\n children: /*#__PURE__*/_jsx(\"div\", {\n style: style,\n className: classNames(className, hasLabel && bsPrefix, inline && `${bsPrefix}-inline`, reverse && `${bsPrefix}-reverse`, type === 'switch' && bsSwitchPrefix),\n children: children || /*#__PURE__*/_jsxs(_Fragment, {\n children: [input, hasLabel && /*#__PURE__*/_jsx(FormCheckLabel, {\n title: title,\n children: label\n }), feedback && /*#__PURE__*/_jsx(Feedback, {\n type: feedbackType,\n tooltip: feedbackTooltip,\n children: feedback\n })]\n })\n })\n });\n});\nFormCheck.displayName = 'FormCheck';\nexport default Object.assign(FormCheck, {\n Input: FormCheckInput,\n Label: FormCheckLabel\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormControl = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n type,\n size,\n htmlSize,\n id,\n className,\n isValid = false,\n isInvalid = false,\n plaintext,\n readOnly,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, plaintext ? `${bsPrefix}-plaintext` : bsPrefix, size && `${bsPrefix}-${size}`, type === 'color' && `${bsPrefix}-color`, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormFloating = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nFormFloating.displayName = 'FormFloating';\nexport default FormFloating;","import * as React from 'react';\nimport { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormGroup = /*#__PURE__*/React.forwardRef(({\n controlId,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const context = useMemo(() => ({\n controlId\n }), [controlId]);\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref\n })\n });\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormLabel = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'label',\n bsPrefix,\n column = false,\n visuallyHidden = false,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n let columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = `${columnClass} ${columnClass}-${column}`;\n const classes = classNames(className, bsPrefix, visuallyHidden && 'visually-hidden', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/_jsx(Col, {\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classes,\n htmlFor: htmlFor,\n ...props\n });\n});\nFormLabel.displayName = 'FormLabel';\nexport default FormLabel;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormRange = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-range');\n return /*#__PURE__*/_jsx(\"input\", {\n ...props,\n type: \"range\",\n ref: ref,\n className: classNames(className, bsPrefix),\n id: id || controlId\n });\n});\nFormRange.displayName = 'FormRange';\nexport default FormRange;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormSelect = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n htmlSize,\n className,\n isValid = false,\n isInvalid = false,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-select');\n return /*#__PURE__*/_jsx(\"select\", {\n ...props,\n size: htmlSize,\n ref: ref,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, isValid && `is-valid`, isInvalid && `is-invalid`),\n id: id || controlId\n });\n});\nFormSelect.displayName = 'FormSelect';\nexport default FormSelect;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormText = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n as: Component = 'small',\n muted,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n });\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import * as React from 'react';\nimport FormCheck from './FormCheck';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Switch = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(FormCheck, {\n ...props,\n ref: ref,\n type: \"switch\"\n}));\nSwitch.displayName = 'Switch';\nexport default Object.assign(Switch, {\n Input: FormCheck.Input,\n Label: FormCheck.Label\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport FormGroup from './FormGroup';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FloatingLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n controlId,\n label,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsxs(FormGroup, {\n ref: ref,\n className: classNames(className, bsPrefix),\n controlId: controlId,\n ...props,\n children: [children, /*#__PURE__*/_jsx(\"label\", {\n htmlFor: controlId,\n children: label\n })]\n });\n});\nFloatingLabel.displayName = 'FloatingLabel';\nexport default FloatingLabel;","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport FormCheck from './FormCheck';\nimport FormControl from './FormControl';\nimport FormFloating from './FormFloating';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormRange from './FormRange';\nimport FormSelect from './FormSelect';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport FloatingLabel from './FloatingLabel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * The Form `ref` will be forwarded to the underlying element,\n * which means, unless it's rendered `as` a composite component,\n * it will be a DOM node, when resolved.\n *\n * @type {ReactRef}\n * @alias ref\n */\n _ref: PropTypes.any,\n /**\n * Mark a form as having been validated. Setting it to `true` will\n * toggle any validation styles on the forms elements.\n */\n validated: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Form = /*#__PURE__*/React.forwardRef(({\n className,\n validated,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'form',\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, validated && 'was-validated')\n}));\nForm.displayName = 'Form';\nForm.propTypes = propTypes;\nexport default Object.assign(Form, {\n Group: FormGroup,\n Control: FormControl,\n Floating: FormFloating,\n Check: FormCheck,\n Switch,\n Label: FormLabel,\n Text: FormText,\n Range: FormRange,\n Select: FormSelect,\n FloatingLabel\n});","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import * as React from 'react';\nconst TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","const _excluded = [\"as\", \"active\", \"eventKey\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport TabContext from './TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useNavItem({\n key,\n onClick,\n active,\n id,\n role,\n disabled\n}) {\n const parentOnSelect = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const tabContext = useContext(TabContext);\n let isActive = active;\n const props = {\n role\n };\n if (navContext) {\n if (!role && navContext.role === 'tablist') props.role = 'tab';\n const contextControllerId = navContext.getControllerId(key != null ? key : null);\n const contextControlledId = navContext.getControlledId(key != null ? key : null);\n\n // @ts-ignore\n props[dataAttr('event-key')] = key;\n props.id = contextControllerId || id;\n isActive = active == null && key != null ? navContext.activeKey === key : active;\n\n /**\n * Simplified scenario for `mountOnEnter`.\n *\n * While it would make sense to keep 'aria-controls' for tabs that have been mounted at least\n * once, it would also complicate the code quite a bit, for very little gain.\n * The following implementation is probably good enough.\n *\n * @see https://github.com/react-restart/ui/pull/40#issuecomment-1009971561\n */\n if (isActive || !(tabContext != null && tabContext.unmountOnExit) && !(tabContext != null && tabContext.mountOnEnter)) props['aria-controls'] = contextControlledId;\n }\n if (props.role === 'tab') {\n props['aria-selected'] = isActive;\n if (!isActive) {\n props.tabIndex = -1;\n }\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n }\n props.onClick = useEventCallback(e => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(e);\n if (key == null) {\n return;\n }\n if (parentOnSelect && !e.isPropagationStopped()) {\n parentOnSelect(key, e);\n }\n });\n return [props, {\n isActive\n }];\n}\nconst NavItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: Component = Button,\n active,\n eventKey\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [props, meta] = useNavItem(Object.assign({\n key: makeEventKey(eventKey, options.href),\n active\n }, options));\n\n // @ts-ignore\n props[dataAttr('active')] = meta.isActive;\n return /*#__PURE__*/_jsx(Component, Object.assign({}, options, props, {\n ref: ref\n }));\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","const _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport qsa from 'dom-helpers/querySelectorAll';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\nimport { dataAttr, dataProp } from './DataKey';\nimport NavItem from './NavItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\nconst EVENT_KEY_ATTR = dataAttr('event-key');\nconst Nav = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n onSelect,\n activeKey,\n role,\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n const forceUpdate = useForceUpdate();\n const needsRefocusRef = useRef(false);\n const parentOnSelect = useContext(SelectableContext);\n const tabContext = useContext(TabContext);\n let getControlledId, getControllerId;\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n // TODO: do we need to duplicate these?\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n const listNode = useRef(null);\n const getNextActiveTab = offset => {\n const currentListNode = listNode.current;\n if (!currentListNode) return null;\n const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\n const activeChild = currentListNode.querySelector('[aria-selected=true]');\n if (!activeChild || activeChild !== document.activeElement) return null;\n const index = items.indexOf(activeChild);\n if (index === -1) return null;\n let nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n const handleSelect = (key, event) => {\n if (key == null) return;\n onSelect == null ? void 0 : onSelect(key, event);\n parentOnSelect == null ? void 0 : parentOnSelect(key, event);\n };\n const handleKeyDown = event => {\n onKeyDown == null ? void 0 : onKeyDown(event);\n if (!tabContext) {\n return;\n }\n let nextActiveChild;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveTab(-1);\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveTab(1);\n break;\n default:\n return;\n }\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset[dataProp('EventKey')] || null, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n useEffect(() => {\n if (listNode.current && needsRefocusRef.current) {\n const activeChild = listNode.current.querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\n activeChild == null ? void 0 : activeChild.focus();\n }\n needsRefocusRef.current = false;\n });\n const mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(NavContext.Provider, {\n value: {\n role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n },\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))\n })\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem\n});","import useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { cloneElement, useEffect, useRef } from 'react';\nimport { getChildRef } from './utils';\nfunction NoopTransition({\n children,\n in: inProp,\n onExited,\n mountOnEnter,\n unmountOnExit\n}) {\n const ref = useRef(null);\n const hasEnteredRef = useRef(inProp);\n const handleExited = useEventCallback(onExited);\n useEffect(() => {\n if (inProp) hasEnteredRef.current = true;else {\n handleExited(ref.current);\n }\n }, [inProp, handleExited]);\n const combinedRef = useMergedRefs(ref, getChildRef(children));\n const child = /*#__PURE__*/cloneElement(children, {\n ref: combinedRef\n });\n if (inProp) return child;\n if (unmountOnExit) {\n return null;\n }\n if (!hasEnteredRef.current && mountOnEnter) {\n return null;\n }\n return child;\n}\nexport default NoopTransition;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavItem = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavLink = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as: Component = Anchor,\n active,\n eventKey,\n disabled = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n const [navItemProps, meta] = useNavItem({\n key: makeEventKey(eventKey, props.href),\n active,\n disabled,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ...navItemProps,\n ref: ref,\n disabled: disabled,\n className: classNames(className, bsPrefix, disabled && 'disabled', meta.isActive && 'active')\n });\n});\nNavLink.displayName = 'NavLink';\nexport default NavLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardHeaderContext from './CardHeaderContext';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n as = 'div',\n bsPrefix: initialBsPrefix,\n variant,\n fill = false,\n justify = false,\n navbar,\n navbarScroll,\n className,\n activeKey,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n let navbarBsPrefix;\n let cardHeaderBsPrefix;\n let isNavbar = false;\n const navbarContext = useContext(NavbarContext);\n const cardHeaderContext = useContext(CardHeaderContext);\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardHeaderContext) {\n ({\n cardHeaderBsPrefix\n } = cardHeaderContext);\n }\n return /*#__PURE__*/_jsx(BaseNav, {\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, {\n [bsPrefix]: !isNavbar,\n [`${navbarBsPrefix}-nav`]: isNavbar,\n [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,\n [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,\n [`${bsPrefix}-${variant}`]: !!variant,\n [`${bsPrefix}-fill`]: fill,\n [`${bsPrefix}-justified`]: justify\n }),\n ...props\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem,\n Link: NavLink\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","const _excluded = [\"active\", \"eventKey\", \"mountOnEnter\", \"transition\", \"unmountOnExit\", \"role\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\"],\n _excluded2 = [\"activeKey\", \"getControlledId\", \"getControllerId\"],\n _excluded3 = [\"as\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport TabContext from './TabContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NoopTransition from './NoopTransition';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useTabPanel(_ref) {\n let {\n active,\n eventKey,\n mountOnEnter,\n transition,\n unmountOnExit,\n role = 'tabpanel',\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const context = useContext(TabContext);\n if (!context) return [Object.assign({}, props, {\n role\n }), {\n eventKey,\n isActive: active,\n mountOnEnter,\n transition,\n unmountOnExit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n }];\n const {\n activeKey,\n getControlledId,\n getControllerId\n } = context,\n rest = _objectWithoutPropertiesLoose(context, _excluded2);\n const key = makeEventKey(eventKey);\n return [Object.assign({}, props, {\n role,\n id: getControlledId(eventKey),\n 'aria-labelledby': getControllerId(eventKey)\n }), {\n eventKey,\n isActive: active == null && key != null ? makeEventKey(activeKey) === key : active,\n transition: transition || rest.transition,\n mountOnEnter: mountOnEnter != null ? mountOnEnter : rest.mountOnEnter,\n unmountOnExit: unmountOnExit != null ? unmountOnExit : rest.unmountOnExit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n }];\n}\nconst TabPanel = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(_ref2, ref) => {\n let {\n as: Component = 'div'\n } = _ref2,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded3);\n const [tabPanelProps, {\n isActive,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n mountOnEnter,\n unmountOnExit,\n transition: Transition = NoopTransition\n }] = useTabPanel(props);\n // We provide an empty the TabContext so `<Nav>`s in `<TabPanel>`s don't\n // conflict with the top level one.\n return /*#__PURE__*/_jsx(TabContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(Transition, {\n in: isActive,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, tabPanelProps, {\n ref: ref,\n hidden: !isActive,\n \"aria-hidden\": !isActive\n }))\n })\n })\n });\n});\nTabPanel.displayName = 'TabPanel';\nexport default TabPanel;","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport { useSSRSafeId } from './ssr';\nimport TabContext from './TabContext';\nimport SelectableContext from './SelectableContext';\nimport TabPanel from './TabPanel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Tabs = props => {\n const {\n id: userId,\n generateChildId: generateCustomChildId,\n onSelect: propsOnSelect,\n activeKey: propsActiveKey,\n defaultActiveKey,\n transition,\n mountOnEnter,\n unmountOnExit,\n children\n } = props;\n const [activeKey, onSelect] = useUncontrolledProp(propsActiveKey, defaultActiveKey, propsOnSelect);\n const id = useSSRSafeId(userId);\n const generateChildId = useMemo(() => generateCustomChildId || ((key, type) => id ? `${id}-${type}-${key}` : null), [id, generateCustomChildId]);\n const tabContext = useMemo(() => ({\n onSelect,\n activeKey,\n transition,\n mountOnEnter: mountOnEnter || false,\n unmountOnExit: unmountOnExit || false,\n getControlledId: key => generateChildId(key, 'tabpane'),\n getControllerId: key => generateChildId(key, 'tab')\n }), [onSelect, activeKey, transition, mountOnEnter, unmountOnExit, generateChildId]);\n return /*#__PURE__*/_jsx(TabContext.Provider, {\n value: tabContext,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: onSelect || null,\n children: children\n })\n });\n};\nTabs.Panel = TabPanel;\nexport default Tabs;","import NoopTransition from '@restart/ui/NoopTransition';\nimport Fade from './Fade';\nexport default function getTabTransitionComponent(transition) {\n if (typeof transition === 'boolean') {\n return transition ? Fade : NoopTransition;\n }\n return transition;\n}","import Tabs from '@restart/ui/Tabs';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabContainer = ({\n transition,\n ...props\n}) => /*#__PURE__*/_jsx(Tabs, {\n ...props,\n transition: getTabTransitionComponent(transition)\n});\nTabContainer.displayName = 'TabContainer';\nexport default TabContainer;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabContent = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'tab-content');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nTabContent.displayName = 'TabContent';\nexport default TabContent;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SelectableContext from '@restart/ui/SelectableContext';\nimport TabContext from '@restart/ui/TabContext';\nimport { useTabPanel } from '@restart/ui/TabPanel';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Fade from './Fade';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabPane = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n transition,\n ...props\n}, ref) => {\n const [{\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...rest\n }, {\n isActive,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n mountOnEnter,\n unmountOnExit,\n transition: Transition = Fade\n }] = useTabPanel({\n ...props,\n transition: getTabTransitionComponent(transition)\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'tab-pane');\n\n // We provide an empty the TabContext so `<Nav>`s in `<TabPanel>`s don't\n // conflict with the top level one.\n return /*#__PURE__*/_jsx(TabContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(Transition, {\n in: isActive,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n children: /*#__PURE__*/_jsx(Component, {\n ...rest,\n ref: ref,\n className: classNames(className, prefix, isActive && 'active')\n })\n })\n })\n });\n});\nTabPane.displayName = 'TabPane';\nexport default TabPane;","import PropTypes from 'prop-types';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nconst propTypes = {\n eventKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * Content for the tab title.\n */\n title: PropTypes.node.isRequired,\n /**\n * The disabled state of the tab.\n */\n disabled: PropTypes.bool,\n /**\n * Class to pass to the underlying nav link.\n */\n tabClassName: PropTypes.string,\n /**\n * Object containing attributes to pass to underlying nav link.\n */\n tabAttrs: PropTypes.object\n};\nconst Tab = () => {\n throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly');\n};\nTab.propTypes = propTypes;\nexport default Object.assign(Tab, {\n Container: TabContainer,\n Content: TabContent,\n Pane: TabPane\n});","import * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseTabs from '@restart/ui/Tabs';\nimport Nav from './Nav';\nimport NavLink from './NavLink';\nimport NavItem from './NavItem';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nimport { forEach, map } from './ElementChildren';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getDefaultActiveKey(children) {\n let defaultActiveKey;\n forEach(children, child => {\n if (defaultActiveKey == null) {\n defaultActiveKey = child.props.eventKey;\n }\n });\n return defaultActiveKey;\n}\nfunction renderTab(child) {\n const {\n title,\n eventKey,\n disabled,\n tabClassName,\n tabAttrs,\n id\n } = child.props;\n if (title == null) {\n return null;\n }\n return /*#__PURE__*/_jsx(NavItem, {\n as: \"li\",\n role: \"presentation\",\n children: /*#__PURE__*/_jsx(NavLink, {\n as: \"button\",\n type: \"button\",\n eventKey: eventKey,\n disabled: disabled,\n id: id,\n className: tabClassName,\n ...tabAttrs,\n children: title\n })\n });\n}\nconst Tabs = props => {\n const {\n id,\n onSelect,\n transition,\n mountOnEnter = false,\n unmountOnExit = false,\n variant = 'tabs',\n children,\n activeKey = getDefaultActiveKey(children),\n ...controlledProps\n } = useUncontrolled(props, {\n activeKey: 'onSelect'\n });\n return /*#__PURE__*/_jsxs(BaseTabs, {\n id: id,\n activeKey: activeKey,\n onSelect: onSelect,\n transition: getTabTransitionComponent(transition),\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n children: [/*#__PURE__*/_jsx(Nav, {\n id: id,\n ...controlledProps,\n role: \"tablist\",\n as: \"ul\",\n variant: variant,\n children: map(children, renderTab)\n }), /*#__PURE__*/_jsx(TabContent, {\n children: map(children, child => {\n const childProps = {\n ...child.props\n };\n delete childProps.title;\n delete childProps.disabled;\n delete childProps.tabClassName;\n delete childProps.tabAttrs;\n return /*#__PURE__*/_jsx(TabPane, {\n ...childProps\n });\n })\n })]\n });\n};\nTabs.displayName = 'Tabs';\nexport default Tabs;","import React, { useState, useEffect } from 'react';\n\ninterface GraphicsImageProps {\n src?: string;\n alt: string;\n fallback: string;\n style?: React.CSSProperties;\n className?: string;\n size?: number;\n onLoadError?: () => void;\n onLoadSuccess?: () => void;\n}\n\n/**\n * Component for rendering graphics images with fallback support\n * Handles image loading failures gracefully and provides visual feedback\n */\nconst GraphicsImage: React.FC<GraphicsImageProps> = ({\n src,\n alt,\n fallback,\n style,\n className,\n size = 20,\n onLoadError,\n onLoadSuccess\n}) => {\n const [imageError, setImageError] = useState(false);\n const [imageLoading, setImageLoading] = useState(!!src);\n\n // Reset loading and error states when src changes\n useEffect(() => {\n console.log(`[GraphicsImage] src changed to: ${src}`, {\n hasSrc: !!src,\n willShowLoading: !!src,\n previousError: imageError,\n previousLoading: imageLoading\n });\n setImageError(false);\n setImageLoading(!!src);\n }, [src]);\n\n const handleImageError = () => {\n console.warn(`[GraphicsImage] Failed to load image: ${src}`);\n setImageError(true);\n setImageLoading(false);\n onLoadError?.();\n };\n\n const handleImageLoad = () => {\n console.log(`[GraphicsImage] Successfully loaded image: ${src}`);\n setImageLoading(false);\n onLoadSuccess?.();\n };\n\n // Log current state for debugging\n console.log(`[GraphicsImage] Render state:`, {\n src,\n imageError,\n imageLoading,\n willShowFallback: !src || imageError,\n willShowLoading: imageLoading,\n willShowImage: src && !imageError && !imageLoading\n });\n\n // If no src or image failed to load, show fallback\n if (!src || imageError) {\n console.log(`[GraphicsImage] Showing fallback for src: ${src}, error: ${imageError}`);\n return (\n <span \n style={{ \n fontSize: `${size}px`, \n ...style \n }} \n className={className}\n title={imageError ? `Failed to load: ${src}` : 'No image URL provided'}\n >\n {fallback}\n </span>\n );\n }\n\n // Show loading state\n if (imageLoading) {\n console.log(`[GraphicsImage] Showing loading state for src: ${src}`);\n return (\n <span \n style={{ \n fontSize: `${size}px`, \n opacity: 0.5,\n ...style \n }} \n className={className}\n title=\"Loading image...\"\n >\n ⏳\n </span>\n );\n }\n\n // Show actual image\n console.log(`[GraphicsImage] Rendering img element for src: ${src}`);\n return (\n <img\n src={src}\n alt={alt}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n objectFit: 'contain',\n ...style\n }}\n className={className}\n onError={handleImageError}\n onLoad={handleImageLoad}\n title={`Image: ${src}`}\n />\n );\n};\n\nexport default GraphicsImage;\n","import type { MazeConfig, ValidationResult } from './types';\n\n/**\n * Validates a maze configuration for door-key requirements and target string completeness\n */\nexport const validateMaze = (config: MazeConfig): ValidationResult => {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Validate door-key requirements\n const doorKeyResult = validateDoorKeyRequirement(config);\n errors.push(...doorKeyResult.errors);\n warnings.push(...doorKeyResult.warnings);\n\n // Validate target string if provided\n if (config.targetString) {\n const targetResult = validateTargetString(config);\n errors.push(...targetResult.errors);\n warnings.push(...targetResult.warnings);\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n};\n\n/**\n * Validates that doors have corresponding keys\n */\nexport const validateDoorKeyRequirement = (config: MazeConfig): ValidationResult => {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n const hasDoors = config.doors.length > 0;\n const hasKeys = config.keys.length > 0;\n\n if (hasDoors && !hasKeys) {\n errors.push('Maze has doors but no keys. Doors cannot be passed without keys.');\n }\n\n if (hasKeys && !hasDoors) {\n warnings.push('Maze has keys but no doors. Keys are not needed if there are no doors.');\n }\n\n if (hasDoors && hasKeys && config.keys.length < config.doors.length) {\n warnings.push(`Maze has ${config.doors.length} doors but only ${config.keys.length} keys. Some doors may be unreachable.`);\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n};\n\n/**\n * Validates that all letters in the target string are present in the maze\n */\nexport const validateTargetString = (config: MazeConfig): ValidationResult => {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (!config.targetString) {\n return { isValid: true, errors: [], warnings: [] };\n }\n\n const targetLetters = config.targetString.toUpperCase().split('').filter(char => /[A-Z]/.test(char));\n const mazeLetters = config.letters.map(l => l.letter.toUpperCase());\n\n // Count occurrences of each letter\n const targetCounts: Record<string, number> = {};\n const mazeCounts: Record<string, number> = {};\n\n targetLetters.forEach(letter => {\n targetCounts[letter] = (targetCounts[letter] || 0) + 1;\n });\n\n mazeLetters.forEach(letter => {\n mazeCounts[letter] = (mazeCounts[letter] || 0) + 1;\n });\n\n // Check for missing letters\n const missingLetters: string[] = [];\n Object.entries(targetCounts).forEach(([letter, count]) => {\n const mazeCount = mazeCounts[letter] || 0;\n if (mazeCount < count) {\n missingLetters.push(`${letter} (need ${count}, have ${mazeCount})`);\n }\n });\n\n if (missingLetters.length > 0) {\n errors.push(`Target string \"${config.targetString}\" requires letters that are missing from the maze: ${missingLetters.join(', ')}`);\n }\n\n // Check for extra letters\n const extraLetters = Object.keys(mazeCounts).filter(letter => !targetCounts[letter]);\n if (extraLetters.length > 0) {\n warnings.push(`Maze contains letters not needed for target string: ${extraLetters.join(', ')}`);\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n};\n\n/**\n * Checks if a position is a door that can be passed (has key in inventory)\n */\nexport const canPassDoor = (position: { x: number; y: number }, config: MazeConfig, inventory: string[]): boolean => {\n const isDoor = config.doors.some(door => door.x === position.x && door.y === position.y);\n if (!isDoor) return true; // Not a door, can pass\n \n const hasKey = inventory.includes('KEY');\n return hasKey;\n};\n\n/**\n * Checks if a position has a key that can be collected\n */\nexport const hasKeyAt = (position: { x: number; y: number }, config: MazeConfig): boolean => {\n return config.keys.some(key => key.x === position.x && key.y === position.y);\n};\n\n/**\n * Checks if a position has a door\n */\nexport const hasDoorAt = (position: { x: number; y: number }, config: MazeConfig): boolean => {\n return config.doors.some(door => door.x === position.x && door.y === position.y);\n};\n","import React, { useState } from 'react';\nimport { Alert, Button, Card, Col, Form, Row } from 'react-bootstrap';\nimport type { GraphicsConfig, MazeConfig } from './types';\nimport GraphicsImage from './GraphicsImage';\nimport { validateMaze } from './validation';\n\ninterface EditableMazeGridProps {\n config: MazeConfig;\n onConfigChange: (config: MazeConfig) => void;\n graphicsConfig: GraphicsConfig;\n className?: string;\n}\n\nconst EditableMazeGrid: React.FC<EditableMazeGridProps> = ({ \n config, \n onConfigChange, \n graphicsConfig,\n className \n}) => {\n const [selectedTool, setSelectedTool] = useState<'empty' | 'wall' | 'start' | 'finish' | 'coin' | 'letter' | 'key' | 'door'>('wall');\n const [isDrawing, setIsDrawing] = useState(false);\n const [selectedLetter, setSelectedLetter] = useState<string>('A');\n const [targetString, setTargetString] = useState<string>(config.targetString || '');\n\n // Get graphics configuration for tool labels\n const blocksConfig = graphicsConfig.blocks;\n \n const toolOptions = [\n { \n value: 'wall', \n label: 'Wall',\n icon: (\n <GraphicsImage\n src={blocksConfig?.wall?.imageUrl}\n alt=\"Wall\"\n fallback={blocksConfig?.wall?.character || '🧱'}\n size={16}\n />\n )\n },\n { value: 'empty', label: 'Clear', icon: '⬜' },\n { value: 'start', label: 'Start', icon: '🚀' },\n { \n value: 'finish', \n label: 'Finish',\n icon: (\n <GraphicsImage\n src={blocksConfig?.finish?.imageUrl}\n alt=\"Finish\"\n fallback={blocksConfig?.finish?.character || '🎯'}\n size={16}\n />\n )\n },\n { \n value: 'coin', \n label: 'Coin',\n icon: (\n <GraphicsImage\n src={blocksConfig?.coin?.imageUrl}\n alt=\"Coin\"\n fallback={blocksConfig?.coin?.character || '🪙'}\n size={16}\n />\n )\n },\n { value: 'letter', label: 'Letter', icon: '📝' },\n { \n value: 'key', \n label: 'Key',\n icon: (\n <GraphicsImage\n src={blocksConfig?.key?.imageUrl}\n alt=\"Key\"\n fallback={blocksConfig?.key?.character || '🗝️'}\n size={16}\n />\n )\n },\n { \n value: 'door', \n label: 'Door',\n icon: (\n <GraphicsImage\n src={blocksConfig?.door?.imageUrl}\n alt=\"Door\"\n fallback={blocksConfig?.door?.character || '🚪'}\n size={16}\n />\n )\n }\n ];\n\n const handleCellClick = (x: number, y: number) => {\n const newConfig = { ...config };\n \n switch (selectedTool) {\n case 'start': {\n newConfig.spiderStart = { x, y };\n break;\n }\n case 'finish': {\n newConfig.finishPosition = { x, y };\n break;\n }\n case 'wall': {\n const wallIndex = newConfig.walls.findIndex(wall => wall.x === x && wall.y === y);\n if (wallIndex === -1) {\n newConfig.walls.push({ x, y });\n }\n break;\n }\n case 'coin': {\n const coinIndex = newConfig.coins.findIndex(coin => coin.x === x && coin.y === y);\n if (coinIndex === -1) {\n newConfig.coins.push({ x, y });\n }\n break;\n }\n case 'letter': {\n const letterIndex = newConfig.letters.findIndex(letter => letter.position.x === x && letter.position.y === y);\n if (letterIndex === -1) {\n newConfig.letters.push({ position: { x, y }, letter: selectedLetter });\n } else {\n // Update existing letter\n newConfig.letters[letterIndex].letter = selectedLetter;\n }\n break;\n }\n case 'key': {\n const keyIndex = newConfig.keys.findIndex(key => key.x === x && key.y === y);\n if (keyIndex === -1) {\n newConfig.keys.push({ x, y });\n }\n break;\n }\n case 'door': {\n const doorIndex = newConfig.doors.findIndex(door => door.x === x && door.y === y);\n if (doorIndex === -1) {\n newConfig.doors.push({ x, y });\n }\n break;\n }\n case 'empty': {\n newConfig.walls = newConfig.walls.filter(wall => !(wall.x === x && wall.y === y));\n newConfig.coins = newConfig.coins.filter(coin => !(coin.x === x && coin.y === y));\n newConfig.letters = newConfig.letters.filter(letter => !(letter.position.x === x && letter.position.y === y));\n newConfig.keys = newConfig.keys.filter(key => !(key.x === x && key.y === y));\n newConfig.doors = newConfig.doors.filter(door => !(door.x === x && door.y === y));\n break;\n }\n }\n \n onConfigChange(newConfig);\n };\n\n const handleCellMouseEnter = (x: number, y: number) => {\n if (isDrawing && selectedTool === 'wall') {\n handleCellClick(x, y);\n }\n };\n\n const isWall = (x: number, y: number) => {\n return config.walls.some(wall => wall.x === x && wall.y === y);\n };\n\n const isStart = (x: number, y: number) => {\n return config.spiderStart.x === x && config.spiderStart.y === y;\n };\n\n const isFinish = (x: number, y: number) => {\n return config.finishPosition.x === x && config.finishPosition.y === y;\n };\n\n const isCoin = (x: number, y: number) => {\n return config.coins.some(coin => coin.x === x && coin.y === y);\n };\n\n const isLetter = (x: number, y: number) => {\n return config.letters.some(letter => letter.position.x === x && letter.position.y === y);\n };\n\n const isKey = (x: number, y: number) => {\n return config.keys.some(key => key.x === x && key.y === y);\n };\n\n const isDoor = (x: number, y: number) => {\n return config.doors.some(door => door.x === x && door.y === y);\n };\n\n const getLetterAt = (x: number, y: number) => {\n const letter = config.letters.find(letter => letter.position.x === x && letter.position.y === y);\n return letter ? letter.letter : '';\n };\n\n const getCellType = (x: number, y: number): 'empty' | 'wall' | 'start' | 'finish' | 'coin' | 'letter' | 'key' | 'door' => {\n if (isStart(x, y)) return 'start';\n if (isFinish(x, y)) return 'finish';\n if (isWall(x, y)) return 'wall';\n if (isCoin(x, y)) return 'coin';\n if (isLetter(x, y)) return 'letter';\n if (isKey(x, y)) return 'key';\n if (isDoor(x, y)) return 'door';\n return 'empty';\n };\n\n const regenerateMaze = () => {\n const newConfig: MazeConfig = {\n width: config.width,\n height: config.height,\n spiderStart: { x: 1, y: 1 },\n finishPosition: { x: config.width - 2, y: config.height - 2 },\n walls: [],\n coins: [],\n letters: [],\n keys: [],\n doors: [],\n targetString: config.targetString\n };\n\n // Generate random walls (20% of cells)\n const totalCells = config.width * config.height;\n const wallCount = Math.floor(totalCells * 0.2);\n \n for (let i = 0; i < wallCount; i++) {\n const x = Math.floor(Math.random() * config.width);\n const y = Math.floor(Math.random() * config.height);\n \n // Don't place walls on start or finish\n if ((x === newConfig.spiderStart.x && y === newConfig.spiderStart.y) ||\n (x === newConfig.finishPosition.x && y === newConfig.finishPosition.y)) {\n continue;\n }\n \n newConfig.walls.push({ x, y });\n }\n \n onConfigChange(newConfig);\n };\n\n const clearMaze = () => {\n const newConfig: MazeConfig = {\n ...config,\n walls: [],\n coins: [],\n letters: [],\n keys: [],\n doors: []\n };\n onConfigChange(newConfig);\n };\n\n const handleTargetStringChange = (value: string) => {\n setTargetString(value);\n const newConfig = { ...config, targetString: value || undefined };\n onConfigChange(newConfig);\n };\n\n // Validate the current maze configuration\n const validation = validateMaze(config);\n\n return (\n <Card className={className}>\n <Card.Header className=\"bg-light border-0\">\n <Row className=\"align-items-center\">\n <Col xs=\"auto\">\n <div className=\"btn-group\" role=\"group\">\n {toolOptions.map(option => (\n <Button\n key={option.value}\n variant={selectedTool === option.value ? 'primary' : 'outline-secondary'}\n size=\"sm\"\n onClick={() => setSelectedTool(option.value as 'empty' | 'wall' | 'start' | 'finish' | 'coin' | 'letter' | 'key' | 'door')}\n title={option.label}\n style={{ \n minWidth: '40px',\n height: '32px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '4px'\n }}\n >\n {typeof option.icon === 'string' ? (\n <span style={{ fontSize: '16px' }}>{option.icon}</span>\n ) : (\n option.icon\n )}\n </Button>\n ))}\n </div>\n </Col>\n {selectedTool === 'letter' && (\n <Col xs=\"auto\">\n <Form.Select\n size=\"sm\"\n value={selectedLetter}\n onChange={(e) => setSelectedLetter(e.target.value)}\n style={{ minWidth: '60px' }}\n >\n {Array.from({ length: 26 }, (_, i) => String.fromCharCode(65 + i)).map(letter => (\n <option key={letter} value={letter}>\n {letter}\n </option>\n ))}\n </Form.Select>\n </Col>\n )}\n <Col xs=\"auto\">\n <Form.Control\n size=\"sm\"\n type=\"text\"\n placeholder=\"Target string (optional)\"\n value={targetString}\n onChange={(e) => handleTargetStringChange(e.target.value)}\n style={{ minWidth: '150px' }}\n />\n </Col>\n <Col xs=\"auto\">\n <Button variant=\"outline-secondary\" size=\"sm\" onClick={regenerateMaze} className=\"me-2\">\n Regenerate\n </Button>\n <Button variant=\"outline-secondary\" size=\"sm\" onClick={clearMaze}>\n Clear All\n </Button>\n </Col>\n </Row>\n </Card.Header>\n <Card.Body>\n {/* Validation Alerts */}\n {validation.errors.length > 0 && (\n <Alert variant=\"danger\" className=\"mb-3\">\n <strong>Validation Errors:</strong>\n <ul className=\"mb-0\">\n {validation.errors.map((error, index) => (\n <li key={index}>{error}</li>\n ))}\n </ul>\n </Alert>\n )}\n {validation.warnings.length > 0 && (\n <Alert variant=\"warning\" className=\"mb-3\">\n <strong>Warnings:</strong>\n <ul className=\"mb-0\">\n {validation.warnings.map((warning, index) => (\n <li key={index}>{warning}</li>\n ))}\n </ul>\n </Alert>\n )}\n \n <div \n className=\"maze-grid\"\n style={{ \n display: 'grid', \n gridTemplateColumns: `repeat(${config.width}, 30px)`,\n gap: '1px',\n backgroundColor: graphicsConfig.maze?.grid?.backgroundColor || '#ccc',\n border: `${graphicsConfig.maze?.grid?.borderWidth || 2}px solid ${graphicsConfig.maze?.grid?.borderColor || '#333'}`,\n borderRadius: '8px',\n padding: '1px',\n ...graphicsConfig.maze?.grid?.customStyles\n }}\n onMouseDown={() => setIsDrawing(true)}\n onMouseUp={() => setIsDrawing(false)}\n onMouseLeave={() => setIsDrawing(false)}\n >\n {Array.from({ length: config.height }, (_, y) =>\n Array.from({ length: config.width }, (_, x) => {\n const cellType = getCellType(x, y);\n return (\n <div\n key={`${x}-${y}`}\n className={`maze-cell ${cellType}`}\n style={{\n width: '30px',\n height: '30px',\n backgroundColor: \n cellType === 'wall' ? (blocksConfig?.wall?.backgroundColor || '#333') :\n cellType === 'start' ? '#28a745' :\n cellType === 'finish' ? (blocksConfig?.finish?.backgroundColor || '#dc3545') :\n cellType === 'coin' ? (blocksConfig?.empty?.backgroundColor || '#fff') :\n cellType === 'key' ? (blocksConfig?.key?.backgroundColor || '#fff') :\n cellType === 'door' ? (blocksConfig?.door?.backgroundColor || '#8B4513') :\n (blocksConfig?.empty?.backgroundColor || '#fff'),\n border: `${graphicsConfig.maze?.cell?.borderWidth || 1}px solid ${graphicsConfig.maze?.cell?.borderColor || '#ccc'}`,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n color: cellType === 'start' || cellType === 'finish' ? 'white' : 'black',\n position: 'relative',\n ...(cellType === 'wall' ? blocksConfig?.wall?.customStyles : \n cellType === 'finish' ? blocksConfig?.finish?.customStyles :\n cellType === 'coin' ? blocksConfig?.coin?.customStyles :\n cellType === 'empty' ? blocksConfig?.empty?.customStyles : {}),\n ...graphicsConfig.maze?.cell?.customStyles\n }}\n onClick={() => handleCellClick(x, y)}\n onMouseEnter={() => handleCellMouseEnter(x, y)}\n title={`${cellType} at (${x}, ${y})`}\n >\n {cellType === 'start' && 'S'}\n {cellType === 'wall' && (\n <GraphicsImage\n src={blocksConfig?.wall?.imageUrl}\n alt=\"Wall\"\n fallback={blocksConfig?.wall?.character || '🧱'}\n size={20}\n />\n )}\n {cellType === 'finish' && (\n <GraphicsImage\n src={blocksConfig?.finish?.imageUrl}\n alt=\"Finish\"\n fallback={blocksConfig?.finish?.character || 'F'}\n size={20}\n />\n )}\n {cellType === 'coin' && (\n <GraphicsImage\n src={blocksConfig?.coin?.imageUrl}\n alt=\"Coin\"\n fallback={blocksConfig?.coin?.character || '🪙'}\n size={16}\n />\n )}\n {cellType === 'letter' && getLetterAt(x, y)}\n {cellType === 'key' && (\n <GraphicsImage\n src={blocksConfig?.key?.imageUrl}\n alt=\"Key\"\n fallback={blocksConfig?.key?.character || '🗝️'}\n size={16}\n />\n )}\n {cellType === 'door' && (\n <GraphicsImage\n src={blocksConfig?.door?.imageUrl}\n alt=\"Door\"\n fallback={blocksConfig?.door?.character || '🚪'}\n size={20}\n />\n )}\n </div>\n );\n })\n )}\n </div>\n </Card.Body>\n </Card>\n );\n};\n\nexport default EditableMazeGrid;\n\n","import { Component } from 'react';\nimport type { GraphicsConfig, MazeCell, MazeConfig } from './types';\n\ninterface MazeGridProps {\n config: MazeConfig;\n cellSize: number;\n graphicsConfig: GraphicsConfig;\n}\n\nexport default class MazeGrid extends Component<MazeGridProps> {\n private createMazeGrid(): MazeCell[][] {\n const { width, height, walls, finishPosition, coins, letters, keys, doors } = this.props.config;\n const grid: MazeCell[][] = [];\n \n for (let y = 0; y < height; y++) {\n grid[y] = [];\n for (let x = 0; x < width; x++) {\n const isWall = walls.some(wall => wall.x === x && wall.y === y);\n const isFinish = finishPosition.x === x && finishPosition.y === y;\n const hasCoin = coins.some(coin => coin.x === x && coin.y === y);\n const hasKey = keys.some(key => key.x === x && key.y === y);\n const hasDoor = doors.some(door => door.x === x && door.y === y);\n const letter = letters.find(l => l.position.x === x && l.position.y === y);\n \n grid[y][x] = {\n isWall,\n isFinish,\n isSpider: false,\n isPath: !isWall,\n hasCoin,\n hasKey,\n hasDoor,\n letter: letter ? letter.letter : undefined\n };\n }\n }\n \n return grid;\n }\n \n render() {\n const { config, cellSize, graphicsConfig } = this.props;\n const { width, height } = config;\n const grid = this.createMazeGrid();\n \n // Get graphics configuration\n const mazeConfig = graphicsConfig.maze;\n const blocksConfig = graphicsConfig.blocks;\n \n // Log graphics configuration usage\n console.log('[MazeGrid] Rendering grid with graphics config:', {\n hasBlocksConfig: !!blocksConfig,\n hasMazeConfig: !!mazeConfig,\n blockTypes: blocksConfig ? Object.keys(blocksConfig) : [],\n finishImageUrl: blocksConfig?.finish?.imageUrl,\n coinImageUrl: blocksConfig?.coin?.imageUrl,\n wallImageUrl: blocksConfig?.wall?.imageUrl\n });\n \n // Grid styling\n const gridBackgroundColor = mazeConfig?.grid?.backgroundColor || '#f0f0f0';\n const gridBorderColor = mazeConfig?.grid?.borderColor || '#333';\n const gridBorderWidth = mazeConfig?.grid?.borderWidth || 2;\n \n // Cell styling\n const cellBorderColor = mazeConfig?.cell?.borderColor || '#ccc';\n const cellBorderWidth = mazeConfig?.cell?.borderWidth || 1;\n \n return (\n <div\n style={{\n position: 'relative',\n width: width * cellSize,\n height: height * cellSize,\n border: `${gridBorderWidth}px solid ${gridBorderColor}`,\n backgroundColor: gridBackgroundColor,\n ...mazeConfig?.grid?.customStyles\n }}\n >\n {grid.map((row, y) =>\n row.map((cell, x) => {\n // Determine cell styling based on type\n let cellStyle: React.CSSProperties = {\n position: 'absolute',\n left: x * cellSize,\n top: y * cellSize,\n width: cellSize,\n height: cellSize,\n border: `${cellBorderWidth}px solid ${cellBorderColor}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n fontWeight: 'bold',\n ...mazeConfig?.cell?.customStyles\n };\n\n // Apply specific styling based on cell type\n if (cell.isWall) {\n const wallConfig = blocksConfig?.wall;\n cellStyle.backgroundColor = wallConfig?.backgroundColor || '#333';\n cellStyle = { ...cellStyle, ...wallConfig?.customStyles };\n } else if (cell.isFinish) {\n const finishConfig = blocksConfig?.finish;\n cellStyle.backgroundColor = finishConfig?.backgroundColor || '#90EE90';\n cellStyle = { ...cellStyle, ...finishConfig?.customStyles };\n } else {\n const emptyConfig = blocksConfig?.empty;\n cellStyle.backgroundColor = emptyConfig?.backgroundColor || '#f0f0f0';\n cellStyle = { ...cellStyle, ...emptyConfig?.customStyles };\n }\n\n return (\n <div key={`${x}-${y}`} style={cellStyle}>\n {cell.isFinish && (\n <div\n style={{\n width: '80%',\n height: '80%',\n backgroundColor: blocksConfig?.finish?.backgroundColor || '#32CD32',\n borderRadius: '50%',\n border: `3px solid ${blocksConfig?.finish?.borderColor || '#228B22'}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'white',\n fontSize: '14px',\n fontWeight: 'bold',\n ...blocksConfig?.finish?.customStyles\n }}\n >\n {blocksConfig?.finish?.imageUrl ? (\n <img\n src={blocksConfig.finish.imageUrl}\n alt=\"Finish\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load finish image:', blocksConfig.finish?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.finish?.character || '🎯'\n )}\n </div>\n )}\n {cell.isWall && (\n <div\n style={{\n width: '100%',\n height: '100%',\n backgroundColor: blocksConfig?.wall?.backgroundColor || '#333',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'white',\n fontSize: '12px',\n ...blocksConfig?.wall?.customStyles\n }}\n >\n {blocksConfig?.wall?.imageUrl ? (\n <img\n src={blocksConfig.wall.imageUrl}\n alt=\"Wall\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load wall image:', blocksConfig.wall?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.wall?.character || '🧱'\n )}\n </div>\n )}\n {cell.hasCoin && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '2px',\n right: '2px',\n fontSize: `${blocksConfig?.coin?.size || 16}px`,\n color: blocksConfig?.coin?.color || '#FFD700',\n zIndex: 2,\n ...blocksConfig?.coin?.customStyles\n }}\n >\n {blocksConfig?.coin?.imageUrl ? (\n <img\n src={blocksConfig.coin.imageUrl}\n alt=\"Coin\"\n style={{\n width: `${blocksConfig?.coin?.size || 16}px`,\n height: `${blocksConfig?.coin?.size || 16}px`,\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load coin image:', blocksConfig.coin?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.coin?.character || '🪙'\n )}\n </div>\n )}\n {cell.letter && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n fontSize: `${blocksConfig?.letter?.fontSize || 18}px`,\n fontFamily: blocksConfig?.letter?.fontFamily || 'Arial, sans-serif',\n fontWeight: blocksConfig?.letter?.fontWeight || 'bold',\n color: blocksConfig?.letter?.color || '#FF6B6B',\n textShadow: blocksConfig?.letter?.textShadow || '1px 1px 2px rgba(0,0,0,0.5)',\n zIndex: 2,\n ...blocksConfig?.letter?.customStyles\n }}\n >\n {cell.letter}\n </div>\n )}\n {cell.hasKey && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '2px',\n left: '2px',\n fontSize: `${blocksConfig?.key?.size || 16}px`,\n color: blocksConfig?.key?.color || '#FFD700',\n zIndex: 2,\n ...blocksConfig?.key?.customStyles\n }}\n >\n {blocksConfig?.key?.imageUrl ? (\n <img\n src={blocksConfig.key.imageUrl}\n alt=\"Key\"\n style={{\n width: `${blocksConfig?.key?.size || 16}px`,\n height: `${blocksConfig?.key?.size || 16}px`,\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load key image:', blocksConfig.key?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.key?.character || '🗝️'\n )}\n </div>\n )}\n {cell.hasDoor && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n fontSize: '20px',\n zIndex: 2,\n ...blocksConfig?.door?.customStyles\n }}\n >\n {blocksConfig?.door?.imageUrl ? (\n <img\n src={blocksConfig.door.imageUrl}\n alt=\"Door\"\n style={{\n width: '80%',\n height: '80%',\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load door image:', blocksConfig.door?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.door?.character || '🚪'\n )}\n </div>\n )}\n </div>\n );\n })\n )}\n </div>\n );\n }\n}\n","import { Component } from 'react';\nimport type { GraphicsConfig, Position } from './types';\n\ninterface SpiderProps {\n position: Position;\n direction: 'north' | 'south' | 'east' | 'west';\n size: number;\n graphicsConfig: GraphicsConfig;\n isExecuting?: boolean;\n}\n\nexport default class Spider extends Component<SpiderProps> {\n componentDidUpdate(prevProps: SpiderProps) {\n // Force re-render when graphics configuration changes\n if (prevProps.graphicsConfig !== this.props.graphicsConfig) {\n console.log('[Spider] Graphics configuration changed, forcing re-render');\n this.forceUpdate();\n }\n }\n\n private renderImagePlayer(\n playerConfig: any,\n position: any,\n direction: string,\n cellSize: number,\n isExecuting: boolean\n ) {\n // Calculate rotation based on direction\n const rotationMap = {\n north: 0,\n east: 90,\n south: 180,\n west: 270\n };\n\n const rotation = rotationMap[direction as keyof typeof rotationMap];\n const playerSize = cellSize * (playerConfig?.size || 0.8);\n\n return (\n <div\n style={{\n position: 'absolute',\n left: position.x * cellSize + cellSize / 2,\n top: position.y * cellSize + cellSize / 2,\n width: playerSize,\n height: playerSize,\n transform: `translate(-50%, -50%) rotate(${rotation}deg)`,\n transition: playerConfig?.transitionDuration || '0.3s ease-in-out',\n zIndex: 10,\n opacity: isExecuting ? 0.8 : 1,\n ...playerConfig?.customStyles\n }}\n >\n <img\n src={playerConfig.imageUrl}\n alt=\"Player character\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n backgroundColor: playerConfig?.backgroundColor || 'transparent',\n border: playerConfig?.borderColor ? `2px solid ${playerConfig.borderColor}` : 'none',\n borderRadius: '50%'\n }}\n onLoad={() => {\n console.log('[Spider] Player image loaded successfully:', playerConfig.imageUrl);\n }}\n onError={(e) => {\n // Fallback to default character if image fails to load\n console.warn('[Spider] Failed to load player image:', playerConfig.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n </div>\n );\n }\n\n render() {\n const { position, direction, size, graphicsConfig, isExecuting = false } = this.props;\n const cellSize = size;\n const playerConfig = graphicsConfig.player;\n\n // Log graphics configuration usage\n console.log('[Spider] Rendering player with config:', {\n hasImageUrl: !!playerConfig?.imageUrl,\n hasCharacter: !!playerConfig?.character,\n characterType: typeof playerConfig?.character,\n imageUrl: playerConfig?.imageUrl,\n position,\n direction\n });\n\n // If a custom character component is provided, use it\n if (playerConfig?.character && typeof playerConfig.character !== 'string') {\n console.log('[Spider] Using custom character component');\n const CustomCharacter = playerConfig.character;\n return (\n <CustomCharacter\n position={position}\n direction={direction}\n size={cellSize}\n isExecuting={isExecuting}\n />\n );\n }\n\n // If an image URL is provided, use it\n if (playerConfig?.imageUrl) {\n console.log('[Spider] Using image URL for player:', playerConfig.imageUrl);\n return this.renderImagePlayer(playerConfig, position, direction, cellSize, isExecuting);\n }\n\n // Calculate rotation based on direction\n const rotationMap = {\n north: 0,\n east: 90,\n south: 180,\n west: 270\n };\n\n const rotation = rotationMap[direction];\n\n // Use configured values or defaults\n const playerSize = cellSize * (playerConfig?.size || 0.8);\n const backgroundColor = playerConfig?.backgroundColor || '#8B4513';\n const borderColor = playerConfig?.borderColor || '#654321';\n const eyeColor = playerConfig?.eyeColor || '#FF0000';\n const eyeSize = playerConfig?.eyeSize || 0.3;\n const transitionDuration = playerConfig?.transitionDuration || '0.3s ease-in-out';\n\n return (\n <div\n style={{\n position: 'absolute',\n left: position.x * cellSize + cellSize / 2,\n top: position.y * cellSize + cellSize / 2,\n width: playerSize,\n height: playerSize,\n transform: `translate(-50%, -50%) rotate(${rotation}deg)`,\n transition: transitionDuration,\n zIndex: 10,\n opacity: isExecuting ? 0.8 : 1,\n ...playerConfig?.customStyles\n }}\n >\n {/* Player body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n backgroundColor,\n borderRadius: '50%',\n border: `2px solid ${borderColor}`,\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {/* Player eyes */}\n <div\n style={{\n width: `${eyeSize * 100}%`,\n height: `${eyeSize * 100}%`,\n backgroundColor: eyeColor,\n borderRadius: '50%',\n position: 'absolute',\n left: '20%',\n top: '20%',\n boxShadow: `0 0 5px ${eyeColor}`\n }}\n />\n <div\n style={{\n width: `${eyeSize * 100}%`,\n height: `${eyeSize * 100}%`,\n backgroundColor: eyeColor,\n borderRadius: '50%',\n position: 'absolute',\n right: '20%',\n top: '20%',\n boxShadow: `0 0 5px ${eyeColor}`\n }}\n />\n </div>\n </div>\n );\n }\n}\n","import { getBlockly, getBlocklyDebugInfo } from '../../utils/blocklySetup';\n\n/**\n * Register maze blocks with Blockly\n * This function should be called after Blockly has been initialized\n */\nexport function registerMazeBlocks(): void {\n console.log('[MazeBlocks] 🧩 Starting maze blocks registration...');\n console.log('[MazeBlocks] 📊 Debug info before registration:', getBlocklyDebugInfo());\n \n try {\n const Blockly = getBlockly();\n console.log('[MazeBlocks] ✅ Blockly instance obtained:', !!Blockly);\n console.log('[MazeBlocks] 🔍 Blockly.Blocks state:', {\n hasBlocks: !!Blockly.Blocks,\n blocksType: typeof Blockly.Blocks,\n existingBlocks: Blockly.Blocks ? Object.keys(Blockly.Blocks).slice(0, 10) : 'none'\n });\n \n // Register blocks using the legacy method for compatibility\n console.log('[MazeBlocks] 📝 Registering maze_move_forward block...');\n Blockly.Blocks['maze_move_forward'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"Move Forward\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Move the spider forward one step\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_turn_left block...');\n Blockly.Blocks['maze_turn_left'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🔄 Turn Left\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Turn the spider 90 degrees to the left\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_turn_right block...');\n Blockly.Blocks['maze_turn_right'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🔄 Turn Right\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Turn the spider 90 degrees to the right\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_turn_around block...');\n Blockly.Blocks['maze_turn_around'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🔄 Turn Around\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Turn the spider 180 degrees around\");\n this.setHelpUrl(\"\");\n }\n };\n\n // Control blocks\n console.log('[MazeBlocks] 📝 Registering controls_repeat block...');\n Blockly.Blocks['controls_repeat'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"Repeat\")\n .appendField(new Blockly.FieldNumber(3, 1, 20), \"TIMES\")\n .appendField(\"times\");\n this.appendStatementInput(\"DO\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"Repeat the blocks inside a specified number of times\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering controls_if block...');\n Blockly.Blocks['controls_if'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"if\");\n this.appendValueInput(\"IF0\")\n .setCheck(\"Boolean\");\n this.appendDummyInput()\n .appendField(\"then\");\n this.appendStatementInput(\"DO0\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"If a condition is true, then do some statements\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering controls_ifelse block...');\n Blockly.Blocks['controls_ifelse'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"if\");\n this.appendValueInput(\"IF0\")\n .setCheck(\"Boolean\");\n this.appendDummyInput()\n .appendField(\"then\");\n this.appendStatementInput(\"DO0\")\n .setCheck(null);\n this.appendDummyInput()\n .appendField(\"else\");\n this.appendStatementInput(\"ELSE0\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"If a condition is true, then do some statements, otherwise do other statements\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering controls_while block...');\n Blockly.Blocks['controls_while'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"while\");\n this.appendValueInput(\"IF0\")\n .setCheck(\"Boolean\");\n this.appendDummyInput()\n .appendField(\"do\");\n this.appendStatementInput(\"DO0\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"Repeat the blocks inside while a condition is true\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering logic_compare block...');\n Blockly.Blocks['logic_compare'] = {\n init() {\n this.appendValueInput(\"A\")\n .setCheck(\"Number\");\n this.appendDummyInput()\n .appendField(new Blockly.FieldDropdown([\n [\"=\", \"EQ\"],\n [\"≠\", \"NEQ\"],\n [\"<\", \"LT\"],\n [\"≤\", \"LTE\"],\n [\">\", \"GT\"],\n [\"≥\", \"GTE\"]\n ]), \"OP\");\n this.appendValueInput(\"B\")\n .setCheck(\"Number\");\n this.setInputsInline(true);\n this.setOutput(true, \"Boolean\");\n this.setColour(210);\n this.setTooltip(\"Compare two numbers and return true or false\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering math_number block...');\n Blockly.Blocks['math_number'] = {\n init() {\n this.appendDummyInput()\n .appendField(new Blockly.FieldNumber(0), \"NUM\");\n this.setOutput(true, \"Number\");\n this.setColour(230);\n this.setTooltip(\"A number\");\n this.setHelpUrl(\"\");\n }\n };\n\n // Coin-related blocks\n console.log('[MazeBlocks] 📝 Registering maze_collect_coin block...');\n Blockly.Blocks['maze_collect_coin'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🪙 Collect Coin\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(200);\n this.setTooltip(\"Collect a coin if there is one at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_coin_count block...');\n Blockly.Blocks['maze_coin_count'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🪙 Coins Collected\");\n this.setOutput(true, \"Number\");\n this.setColour(200);\n this.setTooltip(\"Returns the number of coins collected so far\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_collect_letter block...');\n Blockly.Blocks['maze_collect_letter'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"📝 Collect Letter\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(160);\n this.setTooltip(\"Collect a letter if there is one at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_has_coin block...');\n Blockly.Blocks['maze_has_coin'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🪙 Has Coin?\");\n this.setOutput(true, \"Boolean\");\n this.setColour(200);\n this.setTooltip(\"Returns true if there is a coin at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_has_letter block...');\n Blockly.Blocks['maze_has_letter'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"📝 Has Letter?\");\n this.setOutput(true, \"Boolean\");\n this.setColour(160);\n this.setTooltip(\"Returns true if there is a letter at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] ✅ All maze blocks registered successfully');\n console.log('[MazeBlocks] 📊 Final blocks state:', {\n hasBlocks: !!Blockly.Blocks,\n registeredBlocks: Object.keys(Blockly.Blocks).filter(key => key.startsWith('maze_'))\n });\n } catch (error) {\n console.error('[MazeBlocks] ❌ Failed to register maze blocks:', error);\n console.error('[MazeBlocks] 📋 Error details:', {\n message: (error as Error).message,\n stack: (error as Error).stack,\n name: (error as Error).name\n });\n console.log('[MazeBlocks] 📊 Debug info at error:', getBlocklyDebugInfo());\n throw error;\n }\n}\n","import React, { Component } from \"react\";\nimport { getActiveWorkspaceCount, getBlockly, getJavaScriptGenerator, initializeBlockly, isElementInjected, markElementAsInjected, registerWorkspace, unmarkElementAsInjected, unregisterWorkspace } from '../../utils/blocklySetup';\nimport type { MazeBlocklyConfig, MovementCommand } from './types';\nimport { registerMazeBlocks } from './blocks'; // Import custom maze blocks registration function\n\n// Import Blockly for type definitions\n// declare const Blockly: any;\n\n// Blockly.setLocale(sk);\n\ninterface MazeBlocklyContainerProps {\n onCodeChange?: (code: string) => void;\n onWorkspaceChange?: (workspace: any) => void;\n onExecuteCode?: (commands: MovementCommand[]) => void;\n className?: string;\n style?: React.CSSProperties;\n config: MazeBlocklyConfig;\n}\n\ninterface MazeBlocklyContainerState {\n workspace: any | null;\n isInitialized: boolean;\n}\n\nexport default class MazeBlocklyContainer extends Component<\n MazeBlocklyContainerProps,\n MazeBlocklyContainerState\n> {\n constructor(props: MazeBlocklyContainerProps) {\n super(props);\n this.state = { workspace: null, isInitialized: false };\n this.instanceId = `maze-blockly-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\n this.onAnyChange = this.onAnyChange.bind(this);\n }\n\n componentDidMount() {\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Component mounted, initializing Blockly...`);\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Strict Mode check - isInitialized: ${this.state.isInitialized}, workspace: ${!!this.workspace}`);\n this.initializeBlockly();\n }\n\n componentDidUpdate(prevProps: MazeBlocklyContainerProps) {\n if (prevProps.config.toolbox !== this.props.config.toolbox) {\n this.disposeWorkspace();\n this.initializeBlockly();\n }\n if (prevProps.config.initialXml !== this.props.config.initialXml && this.workspace) {\n this.loadXml(this.props.config.initialXml);\n }\n \n // Trigger resize when component updates (e.g., tab becomes visible)\n setTimeout(() => {\n if (this.workspace && this.state.isInitialized) {\n this.workspace.resize();\n }\n }, 50);\n }\n\n componentWillUnmount() {\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Component unmounting, disposing workspace...`);\n this.disposeWorkspace();\n }\n\n // Static flag to prevent double initialization in Strict Mode\n private static isInitializing = false;\n\n private readonly instanceId: string;\n private workspace: any | null = null;\n private blocklyDivRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n private async initializeBlockly(): Promise<void> {\n if (!this.blocklyDivRef.current) {\n console.error('[MazeBlocklyContainer] Blockly div ref is not available');\n return;\n }\n\n // Prevent double initialization (including Strict Mode)\n if (MazeBlocklyContainer.isInitializing || this.workspace || this.state.isInitialized) {\n console.warn(`[MazeBlocklyContainer-${this.instanceId}] Blockly already initialized or initializing, skipping...`);\n return;\n }\n\n // Set flag to prevent concurrent initialization\n MazeBlocklyContainer.isInitializing = true;\n\n // Check if this DOM element already has Blockly injected\n const blocklyDiv = this.blocklyDivRef.current;\n if (isElementInjected(blocklyDiv) || blocklyDiv.querySelector('.injectionDiv')) {\n console.error(`[MazeBlocklyContainer-${this.instanceId}] Blockly already injected into this DOM element! Preventing double injection.`);\n MazeBlocklyContainer.isInitializing = false;\n return;\n }\n\n // Check for existing workspaces\n const activeCount = getActiveWorkspaceCount();\n if (activeCount > 0) {\n console.warn(`[MazeBlocklyContainer-${this.instanceId}] Found ${activeCount} existing workspace(s), this might cause conflicts`);\n }\n\n try {\n // Initialize Blockly properly for package usage\n await initializeBlockly();\n \n // Register maze blocks after Blockly is initialized\n registerMazeBlocks();\n \n // Register generators before creating the workspace\n this.registerMazeGenerators();\n \n const Blockly = getBlockly();\n const toolboxXml = this.props.config.toolbox;\n const toolboxDom = Blockly.utils.xml.textToDom(toolboxXml);\n\n this.workspace = Blockly.inject(this.blocklyDivRef.current, {\n toolbox: toolboxDom,\n scrollbars: true,\n trashcan: true,\n grid: { spacing: 20, length: 3, colour: \"#ccc\", snap: true },\n zoom: {\n controls: true,\n wheel: true,\n startScale: 1.0,\n maxScale: 3,\n minScale: 0.3,\n scaleSpeed: 1.2\n },\n });\n\n // Mark this element as injected to prevent double injection\n markElementAsInjected(blocklyDiv);\n\n // Load initial XML\n this.loadXml(this.props.config.initialXml);\n\n // Add change listener\n this.workspace.addChangeListener(this.onAnyChange);\n\n this.setState({ workspace: this.workspace, isInitialized: true });\n this.props.onWorkspaceChange?.(this.workspace);\n \n // Register this workspace for tracking\n registerWorkspace(this.workspace);\n \n console.log(`[MazeBlocklyContainer-${this.instanceId}] Blockly workspace initialized successfully`);\n \n // Generate initial code\n setTimeout(() => {\n this.generateCode();\n }, 100);\n \n } catch (error) {\n console.error(`[MazeBlocklyContainer-${this.instanceId}] Failed to initialize Blockly:`, error);\n } finally {\n // Clear the initialization flag\n MazeBlocklyContainer.isInitializing = false;\n }\n }\n\n private registerMazeGenerators(): void {\n try {\n const javascriptGenerator = getJavaScriptGenerator();\n \n // Method 1: Direct assignment\n (javascriptGenerator as any)['maze_move_forward'] = function() {\n return 'moveForward();\\n';\n };\n (javascriptGenerator as any)['maze_turn_left'] = function() {\n return 'turnLeft();\\n';\n };\n (javascriptGenerator as any)['maze_turn_right'] = function() {\n return 'turnRight();\\n';\n };\n (javascriptGenerator as any)['maze_turn_around'] = function() {\n return 'turnAround();\\n';\n };\n\n // Control blocks generators\n (javascriptGenerator as any)['controls_repeat'] = function(block: any) {\n const times = block.getFieldValue('TIMES') || '3';\n const branch = javascriptGenerator.statementToCode(block, 'DO');\n return `for (let i = 0; i < ${times}; i++) {\\n${branch}}\\n`;\n };\n\n (javascriptGenerator as any)['controls_if'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `if (${condition}) {\\n${branch}}\\n`;\n };\n\n (javascriptGenerator as any)['controls_ifelse'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const thenBranch = javascriptGenerator.statementToCode(block, 'DO0');\n const elseBranch = javascriptGenerator.statementToCode(block, 'ELSE0');\n return `if (${condition}) {\\n${thenBranch}} else {\\n${elseBranch}}\\n`;\n };\n\n (javascriptGenerator as any)['controls_while'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `while (${condition}) {\\n${branch}}\\n`;\n };\n\n (javascriptGenerator as any)['logic_compare'] = function(block: any) {\n const operator = block.getFieldValue('OP');\n const order = (operator === 'EQ' || operator === 'NEQ') ? javascriptGenerator.ORDER_EQUALITY : javascriptGenerator.ORDER_RELATIONAL;\n const argument0 = javascriptGenerator.valueToCode(block, 'A', order) || '0';\n const argument1 = javascriptGenerator.valueToCode(block, 'B', order) || '0';\n \n const operators = {\n 'EQ': '==',\n 'NEQ': '!=',\n 'LT': '<',\n 'LTE': '<=',\n 'GT': '>',\n 'GTE': '>='\n };\n \n const op = operators[operator as keyof typeof operators] || '==';\n return [`${argument0} ${op} ${argument1}`, order];\n };\n\n (javascriptGenerator as any)['math_number'] = function(block: any) {\n const code = block.getFieldValue('NUM');\n return [code, javascriptGenerator.ORDER_ATOMIC];\n };\n\n // Method 2: Using forBlock property\n const generator = javascriptGenerator as any;\n if (generator.forBlock) {\n generator.forBlock['maze_move_forward'] = function() {\n return 'moveForward();\\n';\n };\n generator.forBlock['maze_turn_left'] = function() {\n return 'turnLeft();\\n';\n };\n generator.forBlock['maze_turn_right'] = function() {\n return 'turnRight();\\n';\n };\n generator.forBlock['maze_turn_around'] = function() {\n return 'turnAround();\\n';\n };\n generator.forBlock['controls_repeat'] = function(block: any) {\n const times = block.getFieldValue('TIMES') || '3';\n const branch = javascriptGenerator.statementToCode(block, 'DO');\n return `for (let i = 0; i < ${times}; i++) {\\n${branch}}\\n`;\n };\n generator.forBlock['controls_if'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `if (${condition}) {\\n${branch}}\\n`;\n };\n generator.forBlock['controls_ifelse'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const thenBranch = javascriptGenerator.statementToCode(block, 'DO0');\n const elseBranch = javascriptGenerator.statementToCode(block, 'ELSE0');\n return `if (${condition}) {\\n${thenBranch}} else {\\n${elseBranch}}\\n`;\n };\n generator.forBlock['controls_while'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `while (${condition}) {\\n${branch}}\\n`;\n };\n generator.forBlock['logic_compare'] = function(block: any) {\n const operator = block.getFieldValue('OP');\n const order = (operator === 'EQ' || operator === 'NEQ') ? javascriptGenerator.ORDER_EQUALITY : javascriptGenerator.ORDER_RELATIONAL;\n const argument0 = javascriptGenerator.valueToCode(block, 'A', order) || '0';\n const argument1 = javascriptGenerator.valueToCode(block, 'B', order) || '0';\n \n const operators = {\n 'EQ': '==',\n 'NEQ': '!=',\n 'LT': '<',\n 'LTE': '<=',\n 'GT': '>',\n 'GTE': '>='\n };\n \n const op = operators[operator as keyof typeof operators] || '==';\n return [`${argument0} ${op} ${argument1}`, order];\n };\n generator.forBlock['math_number'] = function(block: any) {\n const code = block.getFieldValue('NUM');\n return [code, javascriptGenerator.ORDER_ATOMIC];\n };\n \n // Coin and letter block generators\n generator.forBlock['maze_collect_coin'] = function() {\n return 'collectCoin();\\n';\n };\n generator.forBlock['maze_coin_count'] = function() {\n return ['getCoinCount()', javascriptGenerator.ORDER_FUNCTION_CALL];\n };\n generator.forBlock['maze_collect_letter'] = function() {\n return 'collectLetter();\\n';\n };\n generator.forBlock['maze_has_coin'] = function() {\n return ['hasCoin()', javascriptGenerator.ORDER_FUNCTION_CALL];\n };\n generator.forBlock['maze_has_letter'] = function() {\n return ['hasLetter()', javascriptGenerator.ORDER_FUNCTION_CALL];\n };\n }\n } catch (error) {\n console.error('[MazeBlocklyContainer] Failed to register maze generators:', error);\n }\n }\n\n private disposeWorkspace(): void {\n if (this.workspace) {\n try {\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Disposing workspace...`);\n // Remove all change listeners\n this.workspace.removeChangeListener(this.onAnyChange);\n // Unregister from tracking\n unregisterWorkspace(this.workspace);\n // Unmark element as injected\n if (this.blocklyDivRef.current) {\n unmarkElementAsInjected(this.blocklyDivRef.current);\n }\n // Dispose the workspace\n this.workspace.dispose();\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Workspace disposed successfully`);\n } catch (error) {\n console.warn(`[MazeBlocklyContainer-${this.instanceId}] Error disposing workspace:`, error);\n } finally {\n this.workspace = null;\n this.setState({ workspace: null, isInitialized: false });\n }\n }\n }\n\n private onAnyChange(event: any) {\n if (!this.workspace) return;\n\n const t = event?.type || \"\";\n if (\n t === \"block_create\" ||\n t === \"block_move\" ||\n t === \"block_delete\" ||\n t === \"block_change\"\n ) {\n this.props.onWorkspaceChange?.(this.workspace);\n this.generateCode();\n }\n }\n\n private generateCode(): void {\n if (!this.workspace || !this.props.onCodeChange) return;\n try {\n const javascriptGenerator = getJavaScriptGenerator();\n const code = javascriptGenerator.workspaceToCode(this.workspace);\n this.props.onCodeChange(code);\n } catch (error) {\n console.error(\"Failed to generate code:\", error);\n }\n }\n\n private loadXml(xmlString?: string): void {\n if (!this.workspace || !xmlString) return;\n try {\n const Blockly = getBlockly();\n const xml = Blockly.utils.xml.textToDom(xmlString);\n Blockly.Xml.domToWorkspace(xml, this.workspace);\n } catch (error) {\n console.error(\"Failed to load XML:\", error);\n }\n }\n\n public executeCode(): MovementCommand[] {\n if (!this.workspace) return [];\n\n try {\n const javascriptGenerator = getJavaScriptGenerator();\n const code = javascriptGenerator.workspaceToCode(this.workspace);\n \n // Parse the generated code to extract movement commands\n const commands: MovementCommand[] = this.parseMovementCode(code);\n \n if (this.props.onExecuteCode) {\n this.props.onExecuteCode(commands);\n }\n \n return commands;\n } catch (error) {\n console.error(\"Failed to execute code:\", error);\n return [];\n }\n }\n\n private parseMovementCode(code: string): MovementCommand[] {\n const commands: MovementCommand[] = [];\n \n // Parse the code to extract movement commands, handling control structures\n this.parseCodeRecursively(code, commands);\n \n return commands;\n }\n\n private parseCodeRecursively(code: string, commands: MovementCommand[]): void {\n const lines = code.split('\\n');\n let i = 0;\n \n while (i < lines.length) {\n const line = lines[i].trim();\n \n if (line.includes('moveForward()')) {\n commands.push({ type: 'move_forward', direction: 'north' });\n } else if (line.includes('turnLeft()')) {\n commands.push({ type: 'turn_left', direction: 'north' });\n } else if (line.includes('turnRight()')) {\n commands.push({ type: 'turn_right', direction: 'north' });\n } else if (line.includes('turnAround()')) {\n commands.push({ type: 'turn_around', direction: 'north' });\n } else if (line.includes('collectCoin()')) {\n commands.push({ type: 'collect_coin', direction: 'north' });\n } else if (line.includes('collectLetter()')) {\n commands.push({ type: 'collect_letter', direction: 'north' });\n } else if (line.includes('for (let i = 0; i <')) {\n // Handle for loop\n const match = line.match(/for \\(let i = 0; i < (\\d+); i\\+\\+\\)/);\n if (match) {\n const times = parseInt(match[1]);\n const loopBody = this.extractLoopBody(lines, i);\n for (let j = 0; j < times; j++) {\n this.parseCodeRecursively(loopBody, commands);\n }\n i = this.findLoopEnd(lines, i);\n }\n } else if (line.includes('while (')) {\n // Handle while loop - for now, we'll limit it to prevent infinite loops\n const whileBody = this.extractLoopBody(lines, i);\n // Limit while loops to 10 iterations to prevent infinite loops\n for (let j = 0; j < 10; j++) {\n this.parseCodeRecursively(whileBody, commands);\n }\n i = this.findLoopEnd(lines, i);\n } else if (line.includes('if (')) {\n // Handle if statement - for now, we'll always execute the if branch\n // In a real implementation, you'd evaluate the condition\n const ifBody = this.extractIfBody(lines, i);\n this.parseCodeRecursively(ifBody, commands);\n i = this.findIfEnd(lines, i);\n } else if (line.includes('} else {')) {\n // Skip else branch for now\n i = this.findElseEnd(lines, i);\n }\n \n i++;\n }\n }\n\n private extractLoopBody(lines: string[], startIndex: number): string {\n const body: string[] = [];\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n break;\n }\n } else if (foundOpeningBrace && braceCount > 0) {\n body.push(line);\n }\n }\n \n return body.join('\\n');\n }\n\n private extractIfBody(lines: string[], startIndex: number): string {\n const body: string[] = [];\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n break;\n }\n } else if (foundOpeningBrace && braceCount > 0) {\n body.push(line);\n }\n }\n \n return body.join('\\n');\n }\n\n private findLoopEnd(lines: string[], startIndex: number): number {\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n return i;\n }\n }\n }\n \n return lines.length - 1;\n }\n\n private findIfEnd(lines: string[], startIndex: number): number {\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n return i;\n }\n }\n }\n \n return lines.length - 1;\n }\n\n private findElseEnd(lines: string[], startIndex: number): number {\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n return i;\n }\n }\n }\n \n return lines.length - 1;\n }\n\n public getWorkspace(): any | null { \n return this.workspace; \n }\n\n public clearWorkspace(): void { \n this.workspace?.clear(); \n }\n\n render(): React.JSX.Element {\n const { className = \"\", style = {} } = this.props;\n const { isInitialized } = this.state;\n\n return (\n <div\n className={`maze-blockly-container ${className}`}\n style={{\n width: \"100%\",\n height: \"400px\",\n position: \"relative\",\n ...style\n }}\n >\n <div\n ref={this.blocklyDivRef}\n style={{\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n top: 0,\n left: 0\n }}\n />\n {!isInitialized && (\n <div\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n color: \"#666\",\n fontSize: 16\n }}\n >\n Loading Blockly...\n </div>\n )}\n </div>\n );\n }\n}\n","import React, { useState } from 'react';\nimport { Alert, Badge, Card, Tab, Tabs } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport type { GameState, GraphicsConfig, MazeBlocklyConfig, MazeConfig, MovementCommand } from './types';\nimport EditableMazeGrid from './EditableMazeGrid';\nimport MazeGrid from './MazeGrid';\nimport Spider from './Spider';\nimport MazeBlocklyContainer from './MazeBlocklyContainer';\n\ninterface MazeTabsProps {\n mazeConfig: MazeConfig;\n gameState: GameState;\n currentDirection: 'north' | 'south' | 'east' | 'west';\n generatedCode: string;\n blocklyConfig: MazeBlocklyConfig;\n onConfigChange: (config: MazeConfig) => void;\n onCodeChange: (code: string) => void;\n onExecuteCode: (commands: MovementCommand[]) => void;\n blocklyRef: React.RefObject<MazeBlocklyContainer>;\n graphicsConfig: GraphicsConfig;\n className?: string;\n}\n\nconst MazeTabs: React.FC<MazeTabsProps> = ({\n mazeConfig,\n gameState,\n currentDirection,\n generatedCode,\n blocklyConfig,\n onConfigChange,\n onCodeChange,\n onExecuteCode,\n blocklyRef,\n graphicsConfig,\n className\n}) => {\n const { t } = useTranslation();\n const [activeTab, setActiveTab] = useState('editor');\n\n const cellSize = 50;\n\n // Handle tab change with proper cleanup\n const handleTabSelect = (key: string | null) => {\n const newTab = key || 'editor';\n \n // If switching to game tab, trigger Blockly resize after a short delay\n if (newTab === 'game' && blocklyRef.current) {\n setTimeout(() => {\n const workspace = blocklyRef.current?.getWorkspace();\n if (workspace) {\n workspace.resize();\n }\n }, 100);\n }\n \n setActiveTab(newTab);\n };\n\n return (\n <Card className={className}>\n <Tabs\n activeKey={activeTab}\n onSelect={handleTabSelect}\n className=\"mb-3\"\n fill\n >\n <Tab eventKey=\"editor\" title={t('common.editor')}>\n <div className=\"p-3\">\n <EditableMazeGrid\n key={`editablemazegrid-${JSON.stringify(graphicsConfig.blocks)}`}\n config={mazeConfig}\n onConfigChange={onConfigChange}\n graphicsConfig={graphicsConfig}\n />\n </div>\n </Tab>\n \n <Tab eventKey=\"game\" title={t('common.game')}>\n <div className=\"p-3\">\n {/* Game Status */}\n <div className=\"row mb-3\">\n <div className=\"col-md-6\">\n <Alert variant=\"info\" className=\"mb-2\">\n <div className=\"d-flex justify-content-between align-items-center\">\n <span>🪙 Coins: <Badge bg=\"warning\" text=\"dark\">{gameState.coinsCollected}/{gameState.totalCoins}</Badge></span>\n <span>🗝️ Keys: <Badge bg=\"success\">{gameState.keysCollected}/{gameState.totalKeys}</Badge></span>\n <span>Moves: <Badge bg=\"secondary\">{gameState.moveCount}/{gameState.maxMoves}</Badge></span>\n </div>\n </Alert>\n </div>\n <div className=\"col-md-6\">\n <Alert variant=\"info\" className=\"mb-2\">\n <div className=\"d-flex justify-content-between align-items-center\">\n <span>📦 Inventory ({gameState.inventory.length})</span>\n <span>Items Collected</span>\n </div>\n {gameState.inventory.length > 0 && (\n <div className=\"mt-2\">\n <div className=\"d-flex flex-wrap gap-1\">\n {gameState.inventory.map((item, index) => (\n <Badge \n key={index} \n bg={item === 'COIN' ? 'warning' : item === 'KEY' ? 'success' : 'info'} \n text={item === 'COIN' ? 'dark' : 'white'}\n className=\"me-1\"\n >\n {item === 'COIN' ? '🪙' : item === 'KEY' ? '🗝️' : item}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </Alert>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-6 mb-4\">\n <h6 className=\"mb-3\">{t('common.gameView')}</h6>\n <div style={{ position: 'relative', marginBottom: '20px' }}>\n <MazeGrid\n key={`mazegrid-${JSON.stringify(graphicsConfig.blocks)}`}\n config={mazeConfig}\n cellSize={cellSize}\n graphicsConfig={graphicsConfig}\n />\n <Spider\n key={`spider-${graphicsConfig.player?.imageUrl || 'default'}-${graphicsConfig.player?.character || 'spider'}`}\n position={gameState.spiderPosition}\n direction={currentDirection}\n size={cellSize}\n graphicsConfig={graphicsConfig}\n isExecuting={false}\n />\n </div>\n </div>\n \n <div className=\"col-md-6\">\n <h6 className=\"mb-3\">{t('common.programmingBlocks')}</h6>\n <MazeBlocklyContainer\n key={`blockly-${activeTab}`}\n ref={blocklyRef}\n config={blocklyConfig}\n onCodeChange={onCodeChange}\n onExecuteCode={onExecuteCode}\n style={{ height: '300px' }}\n />\n \n <div className=\"mt-3\">\n <h6>{t('common.generatedCode')}</h6>\n <pre\n className=\"bg-light p-2 rounded\"\n style={{ fontSize: '12px', maxHeight: '150px', overflow: 'auto' }}\n >\n {generatedCode || t('common.noCodeGenerated')}\n </pre>\n </div>\n </div>\n </div>\n </div>\n </Tab>\n </Tabs>\n </Card>\n );\n};\n\nexport default MazeTabs;\n","import React from 'react';\nimport { Alert, Badge, Button, Card, Form } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport type { GameState, MazeConfig } from './types';\n\ninterface GameControlsProps {\n gameState: GameState;\n currentDirection: 'north' | 'south' | 'east' | 'west';\n isExecuting: boolean;\n isGenerating: boolean;\n mazeConfig: MazeConfig;\n onRunCode: () => void;\n onResetGame: () => void;\n onGenerateNewMaze: () => void;\n isEditable?: boolean;\n className?: string;\n}\n\nconst GameControls: React.FC<GameControlsProps> = ({\n gameState,\n currentDirection,\n isExecuting,\n isGenerating,\n mazeConfig,\n onRunCode,\n onResetGame,\n onGenerateNewMaze,\n isEditable = false,\n className\n}) => {\n const { t } = useTranslation();\n return (\n <Card className={className}>\n <Card.Body>\n <div className=\"d-flex justify-content-between align-items-center\">\n <div>\n <Badge bg=\"primary\" className=\"me-2\">\n {t('common.moves')}: {gameState.moveCount}/{gameState.maxMoves}\n </Badge>\n <Badge bg={currentDirection === 'north' ? 'success' : 'secondary'} className=\"me-1\">↑</Badge>\n <Badge bg={currentDirection === 'east' ? 'success' : 'secondary'} className=\"me-1\">→</Badge>\n <Badge bg={currentDirection === 'south' ? 'success' : 'secondary'} className=\"me-1\">↓</Badge>\n <Badge bg={currentDirection === 'west' ? 'success' : 'secondary'} className=\"me-1\">←</Badge>\n </div>\n <div>\n <Button\n variant=\"success\"\n onClick={onRunCode}\n disabled={isExecuting || gameState.isGameOver}\n className=\"me-2\"\n >\n {isExecuting ? t('common.running') : t('common.runCode')}\n </Button>\n <Button\n variant=\"outline-secondary\"\n onClick={onResetGame}\n disabled={isExecuting}\n className=\"me-2\"\n >\n {t('common.reset')}\n </Button>\n </div>\n </div>\n\n {/* Maze Generation Controls - Only show in editable mode */}\n {isEditable && (\n <div className=\"d-flex align-items-center mt-3 p-3 bg-light rounded\">\n <div className=\"me-3\">\n <Form.Label className=\"mb-1 fw-bold\">\n {t('common.steps')}:\n </Form.Label>\n <div className=\"text-muted\">\n {mazeConfig.estimatedSteps || t('common.calculating')}\n </div>\n </div>\n <div className=\"me-3\">\n <Form.Label className=\"mb-1 fw-bold\">\n {t('common.walls')}:\n </Form.Label>\n <div className=\"text-muted\">\n {mazeConfig.walls.length}\n </div>\n </div>\n <Button\n variant=\"primary\"\n onClick={onGenerateNewMaze}\n disabled={isExecuting || isGenerating}\n className=\"ms-auto\"\n >\n {isGenerating ? t('common.generating') : t('common.generateNewMaze')}\n </Button>\n </div>\n )}\n\n {/* Game Status */}\n {gameState.isGameWon && (\n <Alert variant=\"success\" className=\"mt-3 mb-0\">\n {t('game.congratulations')}\n </Alert>\n )}\n {gameState.isGameOver && !gameState.isGameWon && (\n <Alert variant=\"danger\" className=\"mt-3 mb-0\">\n {t('game.gameOver')}\n </Alert>\n )}\n </Card.Body>\n </Card>\n );\n};\n\nexport default GameControls;\n","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\ninterface LanguageSelectorProps {\n className?: string;\n}\n\nconst LanguageSelector: React.FC<LanguageSelectorProps> = ({ className }) => {\n const { i18n, t } = useTranslation();\n\n const handleLanguageChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selectedLanguage = event.target.value;\n i18n.changeLanguage(selectedLanguage);\n };\n\n return (\n <Form.Group className={className}>\n <Form.Label className=\"mb-1 fw-bold\">\n {t('language.select')}:\n </Form.Label>\n <Form.Select\n value={i18n.language}\n onChange={handleLanguageChange}\n size=\"sm\"\n style={{ maxWidth: '200px' }}\n >\n <option value=\"sk\">{t('language.slovak')}</option>\n <option value=\"cs\">{t('language.czech')}</option>\n <option value=\"hu\">{t('language.hungarian')}</option>\n </Form.Select>\n </Form.Group>\n );\n};\n\nexport default LanguageSelector;\n","import React from 'react';\nimport type { GraphicsConfig, PlayerGraphicsProps } from './types';\n\n/**\n * Default graphics configuration for the maze game\n * This provides fallback values when no custom graphics are provided\n * \n * URL Support:\n * - player.imageUrl: URL to player character image (SVG, PNG, JPG, etc.)\n * - blocks.*.imageUrl: URL to block element images\n * - All imageUrl properties are optional and fall back to character/text rendering\n */\nexport const defaultGraphicsConfig: GraphicsConfig = {\n player: {\n character: undefined, // Will use default spider component\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/player.png')\n backgroundColor: '#8B4513',\n borderColor: '#654321',\n size: 0.8, // Relative to cell size\n eyeColor: '#FF0000',\n eyeSize: 0.3, // Relative to player size\n transitionDuration: '0.3s ease-in-out',\n customStyles: {}\n },\n blocks: {\n wall: {\n character: '🧱',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/wall.png')\n backgroundColor: '#333',\n borderColor: '#000',\n customStyles: {}\n },\n finish: {\n character: '🎯',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/finish.png')\n backgroundColor: '#32CD32',\n borderColor: '#228B22',\n customStyles: {}\n },\n coin: {\n character: '🪙',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/coin.png')\n color: '#FFD700',\n size: 16,\n customStyles: {}\n },\n letter: {\n fontFamily: 'Arial, sans-serif',\n fontSize: 18,\n color: '#FF6B6B',\n fontWeight: 'bold',\n textShadow: '1px 1px 2px rgba(0,0,0,0.5)',\n customStyles: {}\n },\n key: {\n character: '🗝️',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/key.png')\n backgroundColor: '#fff',\n borderColor: '#FFD700',\n color: '#FFD700',\n size: 16,\n customStyles: {}\n },\n door: {\n character: '🚪',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/door.png')\n backgroundColor: '#8B4513',\n borderColor: '#654321',\n customStyles: {}\n },\n empty: {\n backgroundColor: '#f0f0f0',\n borderColor: '#ccc',\n customStyles: {}\n }\n },\n maze: {\n grid: {\n backgroundColor: '#f0f0f0',\n borderColor: '#333',\n borderWidth: 2,\n customStyles: {}\n },\n cell: {\n borderColor: '#ccc',\n borderWidth: 1,\n customStyles: {}\n }\n }\n};\n\n/**\n * Default spider component for the player character\n * This is used when no custom character is provided\n */\nexport const DefaultSpider: React.FC<PlayerGraphicsProps> = ({ \n position, \n direction, \n size, \n isExecuting = false \n}) => {\n const cellSize = size;\n \n // Calculate rotation based on direction\n const rotationMap = {\n north: 0,\n east: 90,\n south: 180,\n west: 270\n };\n\n const rotation = rotationMap[direction];\n\n return (\n <div\n style={{\n position: 'absolute',\n left: position.x * cellSize + cellSize / 2,\n top: position.y * cellSize + cellSize / 2,\n width: cellSize * 0.8,\n height: cellSize * 0.8,\n transform: `translate(-50%, -50%) rotate(${rotation}deg)`,\n transition: 'all 0.3s ease-in-out',\n zIndex: 10,\n opacity: isExecuting ? 0.8 : 1\n }}\n >\n {/* Spider body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n backgroundColor: '#8B4513',\n borderRadius: '50%',\n border: '2px solid #654321',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {/* Spider eyes */}\n <div\n style={{\n width: '30%',\n height: '30%',\n backgroundColor: '#FF0000',\n borderRadius: '50%',\n position: 'absolute',\n left: '20%',\n top: '20%',\n boxShadow: '0 0 5px #FF0000'\n }}\n />\n <div\n style={{\n width: '30%',\n height: '30%',\n backgroundColor: '#FF0000',\n borderRadius: '50%',\n position: 'absolute',\n right: '20%',\n top: '20%',\n boxShadow: '0 0 5px #FF0000'\n }}\n />\n </div>\n </div>\n );\n};\n\n\n/**\n * Merge custom graphics configuration with defaults\n * This ensures all required properties are present\n */\nexport function mergeGraphicsConfig(customConfig?: Partial<GraphicsConfig>): GraphicsConfig {\n console.log('[mergeGraphicsConfig] Starting graphics configuration merge');\n console.log('[mergeGraphicsConfig] Custom config provided:', !!customConfig);\n \n if (!customConfig) {\n console.log('[mergeGraphicsConfig] No custom config, returning defaults');\n return defaultGraphicsConfig;\n }\n\n // Log configuration details\n if (customConfig.player) {\n console.log('[mergeGraphicsConfig] Player config:', {\n hasImageUrl: !!customConfig.player.imageUrl,\n hasCharacter: !!customConfig.player.character,\n imageUrl: customConfig.player.imageUrl,\n size: customConfig.player.size\n });\n }\n\n if (customConfig.blocks) {\n Object.entries(customConfig.blocks).forEach(([blockType, blockConfig]) => {\n if (blockConfig) {\n console.log(`[mergeGraphicsConfig] ${blockType} config:`, {\n hasImageUrl: !!(blockConfig as any).imageUrl,\n hasCharacter: !!(blockConfig as any).character,\n imageUrl: (blockConfig as any).imageUrl,\n backgroundColor: (blockConfig as any).backgroundColor\n });\n }\n });\n }\n\n const mergedConfig = {\n player: {\n ...defaultGraphicsConfig.player,\n ...customConfig.player\n },\n blocks: {\n wall: {\n ...defaultGraphicsConfig.blocks?.wall,\n ...customConfig.blocks?.wall\n },\n finish: {\n ...defaultGraphicsConfig.blocks?.finish,\n ...customConfig.blocks?.finish\n },\n coin: {\n ...defaultGraphicsConfig.blocks?.coin,\n ...customConfig.blocks?.coin\n },\n letter: {\n ...defaultGraphicsConfig.blocks?.letter,\n ...customConfig.blocks?.letter\n },\n key: {\n ...defaultGraphicsConfig.blocks?.key,\n ...customConfig.blocks?.key\n },\n door: {\n ...defaultGraphicsConfig.blocks?.door,\n ...customConfig.blocks?.door\n },\n empty: {\n ...defaultGraphicsConfig.blocks?.empty,\n ...customConfig.blocks?.empty\n }\n },\n maze: {\n grid: {\n ...defaultGraphicsConfig.maze?.grid,\n ...customConfig.maze?.grid\n },\n cell: {\n ...defaultGraphicsConfig.maze?.cell,\n ...customConfig.maze?.cell\n }\n }\n };\n\n console.log('[mergeGraphicsConfig] Merged configuration completed');\n console.log('[mergeGraphicsConfig] Final player config:', {\n hasImageUrl: !!mergedConfig.player.imageUrl,\n hasCharacter: !!mergedConfig.player.character,\n imageUrl: mergedConfig.player.imageUrl\n });\n\n return mergedConfig;\n}\n","import React, { Component } from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport { type WithTranslation, withTranslation } from 'react-i18next';\nimport MazeTabs from './MazeTabs';\nimport GameControls from './GameControls';\nimport MazeBlocklyContainer from './MazeBlocklyContainer';\nimport LanguageSelector from '../LanguageSelector';\nimport type {\n GameState,\n GraphicsConfig,\n MazeBlocklyConfig,\n MazeConfig,\n MovementCommand,\n Position,\n RunResult\n} from './types';\nimport { canPassDoor } from './validation';\nimport { mergeGraphicsConfig } from './graphicsConfig';\n\ninterface MazeGameProps {\n className?: string;\n isEditable?: boolean;\n configuration?: MazeConfig;\n onChange?: (config: MazeConfig) => void;\n onRunFinish?: (result: RunResult) => void;\n maxMoves?: number;\n showControls?: boolean;\n graphicsConfig?: Partial<GraphicsConfig>;\n}\n\ninterface MazeGameState {\n gameState: GameState;\n currentDirection: 'north' | 'south' | 'east' | 'west';\n isExecuting: boolean;\n currentCommandIndex: number;\n generatedCode: string;\n minSteps: number;\n isGenerating: boolean;\n}\n\nclass MazeGame extends Component<MazeGameProps & WithTranslation, MazeGameState> {\n\n constructor(props: MazeGameProps & WithTranslation) {\n super(props);\n \n // Use provided configuration or default\n if (props.configuration) {\n this.mazeConfig = { ...props.configuration };\n }\n \n // Merge graphics configuration with defaults\n this.graphicsConfig = mergeGraphicsConfig(props.graphicsConfig);\n \n this.state = {\n gameState: {\n spiderPosition: { ...this.mazeConfig.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n maxMoves: props.maxMoves || 50,\n coinsCollected: 0,\n totalCoins: this.mazeConfig.coins.length,\n keysCollected: 0,\n totalKeys: this.mazeConfig.keys.length,\n inventory: []\n },\n currentDirection: 'east',\n isExecuting: false,\n currentCommandIndex: 0,\n generatedCode: '',\n minSteps: 8,\n isGenerating: false\n };\n\n // Generate initial maze only if no configuration provided\n if (!props.configuration) {\n this.generateMaze();\n }\n }\n\n componentDidMount() {\n // Component mounted\n }\n\n componentDidUpdate(prevProps: MazeGameProps & WithTranslation) {\n // Update graphics configuration if it changed\n if (prevProps.graphicsConfig !== this.props.graphicsConfig) {\n console.log('[MazeGame] Graphics configuration changed, updating...');\n this.graphicsConfig = mergeGraphicsConfig(this.props.graphicsConfig);\n console.log('[MazeGame] Graphics configuration updated:', this.graphicsConfig);\n // Force re-render by updating state\n this.forceUpdate();\n }\n }\n\n componentWillUnmount() {\n if (this.executionInterval) {\n clearInterval(this.executionInterval);\n }\n }\n\n // Maze configuration - will be auto-generated\n private mazeConfig: MazeConfig = {\n width: 10,\n height: 8,\n spiderStart: { x: 1, y: 1 },\n finishPosition: { x: 8, y: 6 },\n walls: [],\n coins: [],\n letters: [],\n keys: [],\n doors: []\n };\n\n // Graphics configuration - merged with defaults\n private graphicsConfig: GraphicsConfig;\n\n // Blockly configuration for maze game - will be updated with translations\n private getBlocklyConfig(): MazeBlocklyConfig {\n const { t } = this.props;\n return {\n allowedTypes: new Set([\n \"maze_move_forward\",\n \"maze_turn_left\",\n \"maze_turn_right\",\n \"maze_turn_around\",\n \"maze_collect_coin\",\n \"maze_coin_count\",\n \"maze_collect_letter\",\n \"maze_collect_key\",\n \"maze_has_coin\",\n \"maze_has_letter\",\n \"maze_has_key\",\n \"controls_repeat\",\n \"controls_if\",\n \"controls_ifelse\",\n \"controls_while\",\n \"logic_compare\",\n \"math_number\"\n ]),\n limits: {\n maze_move_forward: 20,\n maze_turn_left: 10,\n maze_turn_right: 10,\n maze_turn_around: 5,\n maze_collect_coin: 10,\n maze_coin_count: 5,\n maze_collect_letter: 10,\n maze_collect_key: 5,\n maze_has_coin: 10,\n maze_has_letter: 10,\n maze_has_key: 10,\n controls_repeat: 5,\n controls_if: 3,\n controls_ifelse: 3,\n controls_while: 3,\n logic_compare: 10,\n math_number: 20\n },\n toolbox: `\n <xml xmlns=\"https://developers.google.com/blockly/xml\" id=\"toolbox\" style=\"display:none\">\n <category name=\"${t('game.movement')}\" colour=\"#5CA65C\">\n <block type=\"maze_move_forward\"></block>\n <block type=\"maze_turn_left\"></block>\n <block type=\"maze_turn_right\"></block>\n <block type=\"maze_turn_around\"></block>\n </category>\n <category name=\"${t('game.coins')}\" colour=\"#FFD700\">\n <block type=\"maze_collect_coin\"></block>\n <block type=\"maze_coin_count\"></block>\n <block type=\"maze_has_coin\"></block>\n </category>\n <category name=\"${t('game.letters')}\" colour=\"#FF6B6B\">\n <block type=\"maze_collect_letter\"></block>\n <block type=\"maze_has_letter\"></block>\n </category>\n <category name=\"${t('game.keys')}\" colour=\"#8B4513\">\n <block type=\"maze_collect_key\"></block>\n <block type=\"maze_has_key\"></block>\n </category>\n <category name=\"${t('game.control')}\" colour=\"#A65C81\">\n <block type=\"controls_repeat\"></block>\n <block type=\"controls_if\"></block>\n <block type=\"controls_ifelse\"></block>\n <block type=\"controls_while\"></block>\n </category>\n <category name=\"${t('game.logic')}\" colour=\"#D4A65C\">\n <block type=\"logic_compare\"></block>\n </category>\n <category name=\"${t('game.math')}\" colour=\"#5C81A6\">\n <block type=\"math_number\"></block>\n </category>\n </xml>\n `,\n initialXml: `\n <xml xmlns=\"https://developers.google.com/blockly/xml\">\n <block type=\"controls_repeat\" x=\"20\" y=\"20\">\n <field name=\"TIMES\">3</field>\n <statement name=\"DO\">\n <block type=\"maze_move_forward\"></block>\n </statement>\n </block>\n </xml>\n `\n };\n }\n\n private executionInterval: NodeJS.Timeout | null = null;\n private blocklyRef: React.RefObject<MazeBlocklyContainer> = React.createRef<MazeBlocklyContainer>();\n\n private generateMaze = () => {\n this.setState({ isGenerating: true });\n \n // Use setTimeout to avoid blocking the UI during generation\n setTimeout(() => {\n const newMaze = this.createMazeWithMinSteps(this.state.minSteps);\n this.mazeConfig = newMaze;\n \n this.setState({\n gameState: {\n spiderPosition: { ...newMaze.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n maxMoves: Math.max(50, (newMaze.estimatedSteps || 8) + 10),\n coinsCollected: 0,\n totalCoins: newMaze.coins.length,\n keysCollected: 0,\n totalKeys: newMaze.keys.length,\n inventory: []\n },\n currentDirection: 'east',\n isExecuting: false,\n currentCommandIndex: 0,\n isGenerating: false\n });\n\n if (this.blocklyRef.current) {\n this.blocklyRef.current.clearWorkspace();\n }\n }, 100);\n };\n\n private createMazeWithMinSteps(minSteps: number): MazeConfig & { estimatedSteps: number } {\n const width = 10;\n const height = 8;\n const maxAttempts = 50;\n \n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const maze = this.generateRandomMaze(width, height);\n const estimatedSteps = this.estimateOptimalSteps(maze);\n \n if (estimatedSteps >= minSteps && this.isMazeSolvable(maze)) {\n return { ...maze, estimatedSteps };\n }\n }\n \n // Fallback: return a simple maze with guaranteed minimum steps\n return this.generateFallbackMaze(width, height, minSteps);\n }\n\n private generateRandomMaze(width: number, height: number): MazeConfig {\n const walls: Position[] = [];\n const coins: Position[] = [];\n const letters: Array<{ position: Position; letter: string }> = [];\n const keys: Position[] = [];\n const doors: Position[] = [];\n const spiderStart = { x: 1, y: 1 };\n const finishPosition = { x: width - 2, y: height - 2 };\n \n // Generate random walls (30-40% of cells)\n const wallCount = Math.floor((width * height) * (0.3 + Math.random() * 0.1));\n \n for (let i = 0; i < wallCount; i++) {\n const x = Math.floor(Math.random() * width);\n const y = Math.floor(Math.random() * height);\n \n // Don't place walls on start, finish, or adjacent to start\n if ((x === spiderStart.x && y === spiderStart.y) ||\n (x === finishPosition.x && y === finishPosition.y) ||\n (Math.abs(x - spiderStart.x) <= 1 && Math.abs(y - spiderStart.y) <= 1) ||\n (Math.abs(x - finishPosition.x) <= 1 && Math.abs(y - finishPosition.y) <= 1)) {\n continue;\n }\n \n // Avoid duplicate walls\n if (!walls.some(wall => wall.x === x && wall.y === y)) {\n walls.push({ x, y });\n }\n }\n \n // Generate random coins (5-10% of cells)\n const coinCount = Math.floor((width * height) * (0.05 + Math.random() * 0.05));\n for (let i = 0; i < coinCount; i++) {\n const x = Math.floor(Math.random() * width);\n const y = Math.floor(Math.random() * height);\n \n // Don't place coins on walls, start, or finish\n if (!walls.some(wall => wall.x === x && wall.y === y) &&\n !(x === spiderStart.x && y === spiderStart.y) &&\n !(x === finishPosition.x && y === finishPosition.y) &&\n !coins.some(coin => coin.x === x && coin.y === y)) {\n coins.push({ x, y });\n }\n }\n \n return { width, height, spiderStart, finishPosition, walls, coins, letters, keys, doors };\n }\n\n private generateFallbackMaze(width: number, height: number, minSteps: number): MazeConfig & { estimatedSteps: number } {\n const walls: Position[] = [];\n const coins: Position[] = [];\n const letters: Array<{ position: Position; letter: string }> = [];\n const keys: Position[] = [];\n const doors: Position[] = [];\n const spiderStart = { x: 1, y: 1 };\n const finishPosition = { x: width - 2, y: height - 2 };\n \n // Create a winding path that ensures minimum steps\n const path: Position[] = [];\n const current = { ...spiderStart };\n \n // Create a zigzag path to the finish\n while (current.x < finishPosition.x || current.y < finishPosition.y) {\n if (current.x < finishPosition.x) {\n current.x++;\n path.push({ ...current });\n }\n if (current.y < finishPosition.y) {\n current.y++;\n path.push({ ...current });\n }\n }\n \n // Add some random walls that don't block the path\n for (let i = 0; i < Math.floor(minSteps / 2); i++) {\n const x = Math.floor(Math.random() * (width - 2)) + 1;\n const y = Math.floor(Math.random() * (height - 2)) + 1;\n \n if (!path.some(pos => pos.x === x && pos.y === y) &&\n !walls.some(wall => wall.x === x && wall.y === y)) {\n walls.push({ x, y });\n }\n }\n \n // Add some coins along the path\n for (let i = 0; i < Math.min(3, path.length); i++) {\n const pathPos = path[Math.floor(Math.random() * path.length)];\n if (!coins.some(coin => coin.x === pathPos.x && coin.y === pathPos.y)) {\n coins.push(pathPos);\n }\n }\n \n return { width, height, spiderStart, finishPosition, walls, coins, letters, keys, doors, estimatedSteps: minSteps };\n }\n\n private estimateOptimalSteps(maze: MazeConfig): number {\n // Simple estimation: Manhattan distance + some penalty for walls\n const manhattanDistance = Math.abs(maze.finishPosition.x - maze.spiderStart.x) + \n Math.abs(maze.finishPosition.y - maze.spiderStart.y);\n \n // Add penalty for walls that might force detours\n const wallPenalty = Math.min(maze.walls.length * 0.5, 10);\n \n return Math.ceil(manhattanDistance + wallPenalty);\n }\n\n private isMazeSolvable(maze: MazeConfig): boolean {\n // Simple solvability check using flood fill\n const visited = new Set<string>();\n const queue: Position[] = [maze.spiderStart];\n \n while (queue.length > 0) {\n const current = queue.shift()!;\n const key = `${current.x},${current.y}`;\n \n if (visited.has(key)) continue;\n visited.add(key);\n \n if (current.x === maze.finishPosition.x && current.y === maze.finishPosition.y) {\n return true;\n }\n \n // Check all four directions\n const directions = [\n { x: current.x + 1, y: current.y },\n { x: current.x - 1, y: current.y },\n { x: current.x, y: current.y + 1 },\n { x: current.x, y: current.y - 1 }\n ];\n \n for (const dir of directions) {\n if (dir.x >= 0 && dir.x < maze.width && \n dir.y >= 0 && dir.y < maze.height &&\n !maze.walls.some(wall => wall.x === dir.x && wall.y === dir.y) &&\n !visited.has(`${dir.x},${dir.y}`)) {\n queue.push(dir);\n }\n }\n }\n \n return false;\n }\n\n private handleCodeChange = (code: string) => {\n this.setState({ generatedCode: code });\n };\n\n private handleConfigChange = (newConfig: MazeConfig) => {\n this.mazeConfig = newConfig;\n \n // Update game state with new configuration\n this.setState({\n gameState: {\n ...this.state.gameState,\n spiderPosition: { ...newConfig.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n coinsCollected: 0,\n totalCoins: newConfig.coins.length,\n keysCollected: 0,\n totalKeys: newConfig.keys.length,\n inventory: []\n }\n });\n\n // Call onChange callback if provided\n if (this.props.onChange) {\n this.props.onChange(newConfig);\n }\n };\n\n private handleExecuteCode = (commands: MovementCommand[]) => {\n if (commands.length === 0) {\n return;\n }\n\n this.setState({\n isExecuting: true,\n currentCommandIndex: 0\n });\n\n this.executeCommands(commands);\n };\n\n private executeCommands(commands: MovementCommand[]) {\n let commandIndex = 0;\n\n this.executionInterval = setInterval(() => {\n if (commandIndex >= commands.length) {\n this.stopExecution();\n return;\n }\n\n const command = commands[commandIndex];\n this.executeCommand(command);\n commandIndex++;\n this.setState({ currentCommandIndex: commandIndex });\n }, 800); // Execute each command every 800ms\n }\n\n private executeCommand(command: MovementCommand) {\n switch (command.type) {\n case 'move_forward':\n this.moveSpiderForward();\n break;\n case 'turn_left':\n this.turnSpider('left');\n break;\n case 'turn_right':\n this.turnSpider('right');\n break;\n case 'turn_around':\n this.turnSpider('around');\n break;\n case 'collect_coin':\n this.collectCoin(this.state.gameState.spiderPosition);\n break;\n case 'collect_letter':\n this.collectLetter(this.state.gameState.spiderPosition);\n break;\n case 'collect_key':\n this.collectKey(this.state.gameState.spiderPosition);\n break;\n }\n }\n\n private moveSpiderForward() {\n const { gameState, currentDirection } = this.state;\n const newPosition = { ...gameState.spiderPosition };\n\n // Calculate new position based on current direction\n switch (currentDirection) {\n case 'north':\n newPosition.y = Math.max(0, newPosition.y - 1);\n break;\n case 'south':\n newPosition.y = Math.min(this.mazeConfig.height - 1, newPosition.y + 1);\n break;\n case 'east':\n newPosition.x = Math.min(this.mazeConfig.width - 1, newPosition.x + 1);\n break;\n case 'west':\n newPosition.x = Math.max(0, newPosition.x - 1);\n break;\n }\n\n // Check if new position is valid (not a wall and can pass door if it's a door)\n if (!this.isWall(newPosition) && canPassDoor(newPosition, this.mazeConfig, gameState.inventory)) {\n const newGameState = {\n ...gameState,\n spiderPosition: newPosition,\n moveCount: gameState.moveCount + 1\n };\n\n // Check if spider reached finish\n if (this.isFinish(newPosition)) {\n newGameState.isGameWon = true;\n newGameState.isGameOver = true;\n }\n\n // Check if max moves exceeded\n if (newGameState.moveCount >= gameState.maxMoves) {\n newGameState.isGameOver = true;\n }\n\n this.setState({ gameState: newGameState });\n \n // Call onRunFinish callback if game is over\n if (newGameState.isGameOver && this.props.onRunFinish) {\n const result: RunResult = {\n steps: newGameState.moveCount,\n reachedFinish: newGameState.isGameWon,\n maxMovesExceeded: newGameState.moveCount >= gameState.maxMoves,\n finalPosition: newPosition,\n path: [], // TODO: Track path during execution\n executionTime: 0, // TODO: Track execution time\n inventory: newGameState.inventory\n };\n this.props.onRunFinish(result);\n }\n }\n }\n\n private turnSpider(turnDirection: 'left' | 'right' | 'around') {\n const directionMap: Record<string, Record<string, 'north' | 'south' | 'east' | 'west'>> = {\n north: { left: 'west', right: 'east', around: 'south' },\n south: { left: 'east', right: 'west', around: 'north' },\n east: { left: 'north', right: 'south', around: 'west' },\n west: { left: 'south', right: 'north', around: 'east' }\n };\n\n const newDirection = directionMap[this.state.currentDirection][turnDirection];\n this.setState({ currentDirection: newDirection });\n }\n\n private isWall(position: Position): boolean {\n return this.mazeConfig.walls.some(wall =>\n wall.x === position.x && wall.y === position.y\n );\n }\n\n private isFinish(position: Position): boolean {\n return position.x === this.mazeConfig.finishPosition.x &&\n position.y === this.mazeConfig.finishPosition.y;\n }\n\n // These methods are kept for potential future use with Blockly blocks\n // private hasCoin(position: Position): boolean {\n // return this.mazeConfig.coins.some(coin =>\n // coin.x === position.x && coin.y === position.y\n // );\n // }\n\n // private hasLetter(position: Position): boolean {\n // return this.mazeConfig.letters.some(letter =>\n // letter.position.x === position.x && letter.position.y === position.y\n // );\n // }\n\n private collectCoin(position: Position): boolean {\n const coinIndex = this.mazeConfig.coins.findIndex(coin =>\n coin.x === position.x && coin.y === position.y\n );\n \n if (coinIndex !== -1) {\n // Remove coin from maze\n this.mazeConfig.coins.splice(coinIndex, 1);\n \n // Add to inventory\n const newInventory = [...this.state.gameState.inventory, 'COIN'];\n \n // Update game state\n const newGameState = {\n ...this.state.gameState,\n coinsCollected: this.state.gameState.coinsCollected + 1,\n inventory: newInventory\n };\n \n this.setState({ gameState: newGameState });\n return true;\n }\n \n return false;\n }\n\n private collectLetter(position: Position): boolean {\n const letterIndex = this.mazeConfig.letters.findIndex(letter =>\n letter.position.x === position.x && letter.position.y === position.y\n );\n \n if (letterIndex !== -1) {\n const letter = this.mazeConfig.letters[letterIndex];\n \n // Remove letter from maze\n this.mazeConfig.letters.splice(letterIndex, 1);\n \n // Add to inventory\n const newInventory = [...this.state.gameState.inventory, letter.letter];\n \n // Update game state\n const newGameState = {\n ...this.state.gameState,\n inventory: newInventory\n };\n \n this.setState({ gameState: newGameState });\n return true;\n }\n \n return false;\n }\n\n private collectKey(position: Position): boolean {\n const keyIndex = this.mazeConfig.keys.findIndex(key =>\n key.x === position.x && key.y === position.y\n );\n \n if (keyIndex !== -1) {\n // Remove key from maze\n this.mazeConfig.keys.splice(keyIndex, 1);\n \n // Add to inventory\n const newInventory = [...this.state.gameState.inventory, 'KEY'];\n \n // Update game state\n const newGameState = {\n ...this.state.gameState,\n keysCollected: this.state.gameState.keysCollected + 1,\n inventory: newInventory\n };\n \n this.setState({ gameState: newGameState });\n return true;\n }\n \n return false;\n }\n\n\n private stopExecution() {\n if (this.executionInterval) {\n clearInterval(this.executionInterval);\n this.executionInterval = null;\n }\n this.setState({ isExecuting: false });\n }\n\n private resetGame = () => {\n this.setState({\n gameState: {\n spiderPosition: { ...this.mazeConfig.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n maxMoves: Math.max(50, (this.mazeConfig.estimatedSteps || 8) + 10),\n coinsCollected: 0,\n totalCoins: this.mazeConfig.coins.length,\n keysCollected: 0,\n totalKeys: this.mazeConfig.keys.length,\n inventory: []\n },\n currentDirection: 'east',\n isExecuting: false,\n currentCommandIndex: 0\n });\n\n if (this.blocklyRef.current) {\n this.blocklyRef.current.clearWorkspace();\n }\n };\n\n private runCode = () => {\n if (this.blocklyRef.current) {\n this.blocklyRef.current.executeCode();\n }\n };\n\n // private handleMinStepsChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n // const value = parseInt(event.target.value);\n // if (!isNaN(value) && value >= 3 && value <= 30) {\n // this.setState({ minSteps: value }, () => {\n // // Regenerate maze with new minimum steps if the current maze doesn't meet the requirement\n // if (this.mazeConfig.estimatedSteps && this.mazeConfig.estimatedSteps < value) {\n // this.generateMaze();\n // }\n // });\n // }\n // };\n\n private handleGenerateNewMaze = () => {\n this.generateMaze();\n };\n\n render() {\n const { gameState, currentDirection, isExecuting, generatedCode, isGenerating } = this.state;\n const blocklyConfig = this.getBlocklyConfig();\n\n return (\n <div className={`maze-game ${this.props.className || ''}`}>\n <Container fluid>\n <Row>\n <Col>\n {/* Language Selector */}\n <div className=\"d-flex justify-content-end mb-3\">\n <LanguageSelector />\n </div>\n\n {/* Game Controls */}\n <GameControls\n gameState={gameState}\n currentDirection={currentDirection}\n isExecuting={isExecuting}\n isGenerating={isGenerating}\n mazeConfig={this.mazeConfig}\n onRunCode={this.runCode}\n onResetGame={this.resetGame}\n onGenerateNewMaze={this.handleGenerateNewMaze}\n isEditable={this.props.isEditable}\n className=\"mb-3\"\n />\n\n {/* Tabbed Interface */}\n <MazeTabs\n mazeConfig={this.mazeConfig}\n gameState={gameState}\n currentDirection={currentDirection}\n generatedCode={generatedCode}\n blocklyConfig={blocklyConfig}\n onConfigChange={this.handleConfigChange}\n onCodeChange={this.handleCodeChange}\n onExecuteCode={this.handleExecuteCode}\n blocklyRef={this.blocklyRef}\n graphicsConfig={this.graphicsConfig}\n />\n </Col>\n </Row>\n </Container>\n </div>\n );\n }\n}\n\nconst MazeGameWithTranslation: React.ComponentType<MazeGameProps> = withTranslation()(MazeGame);\nexport default MazeGameWithTranslation;\n","/**\n * Graphics Configuration DTOs and Examples\n * \n * This file provides clear DTOs (Data Transfer Objects) for all graphics configuration\n * types, making it easy to understand the structure when implementing custom graphics.\n */\n\nimport type { \n BlockGraphics,\n GraphicsConfig, \n MazeGraphics,\n PlayerGraphics\n} from './types';\n\n// ============================================================================\n// CORE DTOs - Use these for type safety when implementing graphics\n// ============================================================================\n\n/**\n * Complete graphics configuration DTO\n * Use this as the main interface for graphics configuration\n */\nexport type GraphicsConfigDTO = GraphicsConfig;\n\n/**\n * Player graphics configuration DTO\n * Controls the appearance and behavior of the player character\n */\nexport type PlayerGraphicsDTO = PlayerGraphics;\n\n/**\n * Block graphics configuration DTO\n * Controls the appearance of all maze block elements\n */\nexport type BlockGraphicsDTO = BlockGraphics;\n\n/**\n * Maze graphics configuration DTO\n * Controls the appearance of the maze grid and cells\n */\nexport type MazeGraphicsDTO = MazeGraphics;\n\n// ============================================================================\n// EXAMPLE CONFIGURATIONS - Use these as templates for your implementations\n// ============================================================================\n\n/**\n * Example: Custom graphics using image URLs\n * This shows how to use imageUrl properties for all elements\n */\nexport const exampleImageBasedConfig: GraphicsConfigDTO = {\n player: {\n imageUrl: 'https://example.com/player-character.png',\n size: 0.9,\n transitionDuration: '0.2s ease-out'\n },\n blocks: {\n wall: {\n imageUrl: 'https://example.com/wall-texture.png',\n backgroundColor: '#2c2c2c'\n },\n finish: {\n imageUrl: 'https://example.com/finish-flag.png',\n backgroundColor: '#4CAF50'\n },\n coin: {\n imageUrl: 'https://example.com/coin.png',\n size: 20\n },\n key: {\n imageUrl: 'https://example.com/key.png',\n size: 18\n },\n door: {\n imageUrl: 'https://example.com/door.png',\n backgroundColor: '#8B4513'\n }\n },\n maze: {\n grid: {\n backgroundColor: '#f5f5f5',\n borderColor: '#333',\n borderWidth: 3\n },\n cell: {\n borderColor: '#ddd',\n borderWidth: 1\n }\n }\n};\n\n/**\n * Example: Emoji-based graphics configuration\n * This shows how to use character properties with emojis\n */\nexport const exampleEmojiConfig: GraphicsConfigDTO = {\n player: {\n character: '🕷️',\n backgroundColor: '#8B4513',\n borderColor: '#654321',\n size: 0.8\n },\n blocks: {\n wall: {\n character: '🧱',\n backgroundColor: '#333',\n borderColor: '#000'\n },\n finish: {\n character: '🏁',\n backgroundColor: '#32CD32',\n borderColor: '#228B22'\n },\n coin: {\n character: '🪙',\n color: '#FFD700',\n size: 16\n },\n key: {\n character: '🗝️',\n backgroundColor: '#fff',\n borderColor: '#FFD700',\n color: '#FFD700',\n size: 16\n },\n door: {\n character: '🚪',\n backgroundColor: '#8B4513',\n borderColor: '#654321'\n }\n }\n};\n\n/**\n * Example: Minimal configuration with custom styling\n * This shows how to use customStyles for advanced customization\n */\nexport const exampleCustomStyledConfig: GraphicsConfigDTO = {\n player: {\n character: '🤖',\n backgroundColor: '#2196F3',\n borderColor: '#1976D2',\n size: 0.85,\n customStyles: {\n boxShadow: '0 4px 8px rgba(0,0,0,0.3)',\n borderRadius: '50%'\n }\n },\n blocks: {\n wall: {\n character: '⬛',\n backgroundColor: '#424242',\n customStyles: {\n background: 'linear-gradient(45deg, #333, #555)',\n boxShadow: 'inset 0 2px 4px rgba(0,0,0,0.5)'\n }\n },\n finish: {\n character: '⭐',\n backgroundColor: '#FFD700',\n customStyles: {\n animation: 'pulse 2s infinite',\n boxShadow: '0 0 20px #FFD700'\n }\n }\n }\n};\n\n/**\n * Example: Mixed configuration (some images, some characters)\n * This shows how to mix imageUrl and character properties\n */\nexport const exampleMixedConfig: GraphicsConfigDTO = {\n player: {\n imageUrl: 'https://example.com/robot-player.svg',\n size: 0.9\n },\n blocks: {\n wall: {\n character: '🧱',\n backgroundColor: '#333'\n },\n finish: {\n imageUrl: 'https://example.com/checkered-flag.png',\n backgroundColor: '#4CAF50'\n },\n coin: {\n character: '🪙',\n color: '#FFD700',\n size: 18\n },\n key: {\n imageUrl: 'https://example.com/golden-key.png',\n size: 20\n }\n }\n};\n\n// ============================================================================\n// UTILITY TYPES - Helper types for implementation\n// ============================================================================\n\n/**\n * Type for valid image URL formats\n */\nexport type ImageUrl = string;\n\n/**\n * Type for valid character formats (emoji or text)\n */\nexport type Character = string;\n\n/**\n * Type for valid size values (0.0 to 1.0)\n */\nexport type RelativeSize = number;\n\n/**\n * Type for valid color values (CSS color strings)\n */\nexport type Color = string;\n\n/**\n * Type for valid transition duration values\n */\nexport type TransitionDuration = string;\n\n// ============================================================================\n// VALIDATION HELPERS - Use these to validate your configurations\n// ============================================================================\n\n/**\n * Validates if a string is a valid image URL\n */\nexport function isValidImageUrl(url: string): boolean {\n try {\n new URL(url);\n return /\\.(png|jpg|jpeg|gif|svg|webp)$/i.test(url);\n } catch {\n return false;\n }\n}\n\n/**\n * Validates if a size value is within valid range (0.0 to 1.0)\n */\nexport function isValidSize(size: number): boolean {\n return size >= 0.0 && size <= 1.0;\n}\n\n/**\n * Validates if a color string is a valid CSS color\n */\nexport function isValidColor(color: string): boolean {\n const s = new Option().style;\n s.color = color;\n return s.color !== '';\n}\n\n/**\n * Validates a complete graphics configuration\n */\nexport function validateGraphicsConfig(config: GraphicsConfigDTO): {\n isValid: boolean;\n errors: string[];\n warnings: string[];\n} {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Validate player configuration\n if (config.player) {\n if (config.player.imageUrl && !isValidImageUrl(config.player.imageUrl)) {\n errors.push('Player imageUrl is not a valid image URL');\n }\n if (config.player.size !== undefined && !isValidSize(config.player.size)) {\n errors.push('Player size must be between 0.0 and 1.0');\n }\n if (config.player.backgroundColor && !isValidColor(config.player.backgroundColor)) {\n errors.push('Player backgroundColor is not a valid color');\n }\n }\n\n // Validate block configurations\n if (config.blocks) {\n // Validate blocks with backgroundColor property\n const blocksWithBackgroundColor = ['wall', 'finish', 'key', 'door'] as const;\n blocksWithBackgroundColor.forEach(blockType => {\n const block = config.blocks?.[blockType];\n if (block?.imageUrl && !isValidImageUrl(block.imageUrl)) {\n errors.push(`${blockType} imageUrl is not a valid image URL`);\n }\n if (block?.backgroundColor && !isValidColor(block.backgroundColor)) {\n errors.push(`${blockType} backgroundColor is not a valid color`);\n }\n });\n\n // Validate coin block (has color property instead of backgroundColor)\n if (config.blocks.coin) {\n const coin = config.blocks.coin;\n if (coin.imageUrl && !isValidImageUrl(coin.imageUrl)) {\n errors.push('coin imageUrl is not a valid image URL');\n }\n if (coin.color && !isValidColor(coin.color)) {\n errors.push('coin color is not a valid color');\n }\n }\n\n // Validate letter block (has color property instead of backgroundColor)\n if (config.blocks.letter) {\n const letter = config.blocks.letter;\n if (letter.color && !isValidColor(letter.color)) {\n errors.push('letter color is not a valid color');\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n}\n"],"names":["isString","path","resources","module","copy","language","_a","noop","i18nInstance","getDefaults","instance","createContext","useRef","useEffect","useCallback","useContext","useState","createElement","forwardRefReact","forEach","hash","htmlTag","i18n","LanguageDetector","timeout","chars","defaultOptions","classNames","_objectWithoutPropertiesLoose","useUncontrolledProp","config","Utils.defaultKey","t","e","setPrototypeOf","React","hyphenate","Element","reactIsModule","require$$0","require$$1","has","require$$2","require$$3","require$$4","i","checker","propTypesModule","forceReflow","Transition","context","parseDuration","css","toFnRef","mergeRefs","useMergedRefs","useMemo","_jsx","useCommittedRef","useEventCallback","_excluded","isTrivialHref","Button","propTypes","_jsxs","CardHeaderContext","order","useReducer","warning","printWarning","$670gB$react","$670gB$useContext","$670gB$useRef","$670gB$useState","style","_Fragment","FormCheck","FormControl","Switch","NavItem","Nav","cloneElement","NavbarContext","Tabs","useSSRSafeId","BaseTabs","jsx","letter","jsxs","Card","Form","Alert","_","_b","_c","_d","_e","_f","_h","_g","_j","_i","_k","_l","_m","_n","_p","_o","_q","_r","Component","Blockly","javascriptGenerator","Tab"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../node_modules/i18next/dist/esm/i18next.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/withTranslation.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../src/i18n/index.ts","../src/utils/blocklySetup.ts","../src/utils/index.ts","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/utils/PropTypes.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/AlertHeading.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/AlertLink.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/Alert.js","../node_modules/react-bootstrap/esm/Badge.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/CardBody.js","../node_modules/react-bootstrap/esm/CardFooter.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/CardHeader.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/CardImgOverlay.js","../node_modules/react-bootstrap/esm/CardLink.js","../node_modules/react-bootstrap/esm/CardSubtitle.js","../node_modules/react-bootstrap/esm/CardText.js","../node_modules/react-bootstrap/esm/CardTitle.js","../node_modules/react-bootstrap/esm/Card.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/@restart/ui/node_modules/uncontrollable/lib/esm/index.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/warning/warning.js","../node_modules/@react-aria/ssr/dist/SSRProvider.mjs","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/@restart/ui/esm/Nav.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/@restart/ui/esm/TabPanel.js","../node_modules/@restart/ui/esm/Tabs.js","../node_modules/react-bootstrap/esm/getTabTransitionComponent.js","../node_modules/react-bootstrap/esm/TabContainer.js","../node_modules/react-bootstrap/esm/TabContent.js","../node_modules/react-bootstrap/esm/TabPane.js","../node_modules/react-bootstrap/esm/Tab.js","../node_modules/react-bootstrap/esm/Tabs.js","../src/components/maze/GraphicsImage.tsx","../src/components/maze/validation.ts","../src/components/maze/EditableMazeGrid.tsx","../src/components/maze/MazeGrid.tsx","../src/components/maze/Spider.tsx","../src/components/maze/blocks.ts","../src/components/maze/MazeBlocklyContainer.tsx","../src/components/maze/MazeTabs.tsx","../src/components/maze/GameControls.tsx","../src/components/LanguageSelector.tsx","../src/components/maze/graphicsConfig.tsx","../src/components/maze/MazeGame.tsx","../src/components/maze/graphicsDTOs.ts"],"sourcesContent":["const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return '' + object;\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = function (obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false,\n skipCopy: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key == null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved?.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys == null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = options.count !== undefined && !isString(options.count);\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0;\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...options,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && !isString(options.replace) ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language || resolved.usedLng, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && resolved && resolved.res) options.lng = this.language || resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey?.[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && !isString(options.count);\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0;\n const needsContextHandling = options.context !== undefined && (isString(options.context) || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.indexOf('-') > -1) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (!Intl) {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = function (data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (val, lng, options) => {\n let optForCache = options;\n if (options && options.interpolationkey && options.formatParams && options.formatParams[options.interpolationkey] && options[options.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [options.interpolationkey]: undefined\n };\n }\n const key = lng + JSON.stringify(optForCache);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n};\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = isString(lngs) ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n if (options.keyPrefix !== '') options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.translator?.translate(...args);\n }\n exists() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n return Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, {});\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport const withTranslation = (ns, options = {}) => function Extend(WrappedComponent) {\n function I18nextWithTranslation({\n forwardedRef,\n ...rest\n }) {\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n};","const {\n slice,\n forEach\n} = [];\nfunction defaults(obj) {\n forEach.call(slice.call(arguments, 1), source => {\n if (source) {\n for (const prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nfunction hasXSS(input) {\n if (typeof input !== 'string') return false;\n\n // Common XSS attack patterns\n const xssPatterns = [/<\\s*script.*?>/i, /<\\s*\\/\\s*script\\s*>/i, /<\\s*img.*?on\\w+\\s*=/i, /<\\s*\\w+\\s*on\\w+\\s*=.*?>/i, /javascript\\s*:/i, /vbscript\\s*:/i, /expression\\s*\\(/i, /eval\\s*\\(/i, /alert\\s*\\(/i, /document\\.cookie/i, /document\\.write\\s*\\(/i, /window\\.location/i, /innerHTML/i];\n return xssPatterns.some(pattern => pattern.test(input));\n}\n\n// eslint-disable-next-line no-control-regex\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nconst serializeCookie = function (name, val) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n path: '/'\n };\n const opt = options;\n const value = encodeURIComponent(val);\n let str = `${name}=${value}`;\n if (opt.maxAge > 0) {\n const maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += `; Max-Age=${Math.floor(maxAge)}`;\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n str += `; Domain=${opt.domain}`;\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n str += `; Path=${opt.path}`;\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n str += `; Expires=${opt.expires.toUTCString()}`;\n }\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n if (opt.sameSite) {\n const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n if (opt.partitioned) str += '; Partitioned';\n return str;\n};\nconst cookie = {\n create(name, value, minutes, domain) {\n let cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, value, cookieOptions);\n },\n read(name) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove(name, domain) {\n this.create(name, '', -1, domain);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n // Deconstruct the options object and extract the lookupCookie property\n lookup(_ref) {\n let {\n lookupCookie\n } = _ref;\n if (lookupCookie && typeof document !== 'undefined') {\n return cookie.read(lookupCookie) || undefined;\n }\n return undefined;\n },\n // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupCookie,\n cookieMinutes,\n cookieDomain,\n cookieOptions\n } = _ref2;\n if (lookupCookie && typeof document !== 'undefined') {\n cookie.create(lookupCookie, lng, cookieMinutes, cookieDomain, cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n // Deconstruct the options object and extract the lookupQuerystring property\n lookup(_ref) {\n let {\n lookupQuerystring\n } = _ref;\n let found;\n if (typeof window !== 'undefined') {\n let {\n search\n } = window.location;\n if (!window.location.search && window.location.hash?.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n const query = search.substring(1);\n const params = query.split('&');\n for (let i = 0; i < params.length; i++) {\n const pos = params[i].indexOf('=');\n if (pos > 0) {\n const key = params[i].substring(0, pos);\n if (key === lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\n\nvar hash = {\n name: 'hash',\n // Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property\n lookup(_ref) {\n let {\n lookupHash,\n lookupFromHashIndex\n } = _ref;\n let found;\n if (typeof window !== 'undefined') {\n const {\n hash\n } = window.location;\n if (hash && hash.length > 2) {\n const query = hash.substring(1);\n if (lookupHash) {\n const params = query.split('&');\n for (let i = 0; i < params.length; i++) {\n const pos = params[i].indexOf('=');\n if (pos > 0) {\n const key = params[i].substring(0, pos);\n if (key === lookupHash) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n if (found) return found;\n if (!found && lookupFromHashIndex > -1) {\n const language = hash.match(/\\/([a-zA-Z-]*)/g);\n if (!Array.isArray(language)) return undefined;\n const index = typeof lookupFromHashIndex === 'number' ? lookupFromHashIndex : 0;\n return language[index]?.replace('/', '');\n }\n }\n }\n return found;\n }\n};\n\nlet hasLocalStorageSupport = null;\nconst localStorageAvailable = () => {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = typeof window !== 'undefined' && window.localStorage !== null;\n if (!hasLocalStorageSupport) {\n return false;\n }\n const testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: 'localStorage',\n // Deconstruct the options object and extract the lookupLocalStorage property\n lookup(_ref) {\n let {\n lookupLocalStorage\n } = _ref;\n if (lookupLocalStorage && localStorageAvailable()) {\n return window.localStorage.getItem(lookupLocalStorage) || undefined; // Undefined ensures type consistency with the previous version of this function\n }\n return undefined;\n },\n // Deconstruct the options object and extract the lookupLocalStorage property\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupLocalStorage\n } = _ref2;\n if (lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(lookupLocalStorage, lng);\n }\n }\n};\n\nlet hasSessionStorageSupport = null;\nconst sessionStorageAvailable = () => {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = typeof window !== 'undefined' && window.sessionStorage !== null;\n if (!hasSessionStorageSupport) {\n return false;\n }\n const testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup(_ref) {\n let {\n lookupSessionStorage\n } = _ref;\n if (lookupSessionStorage && sessionStorageAvailable()) {\n return window.sessionStorage.getItem(lookupSessionStorage) || undefined;\n }\n return undefined;\n },\n cacheUserLanguage(lng, _ref2) {\n let {\n lookupSessionStorage\n } = _ref2;\n if (lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup(options) {\n const found = [];\n if (typeof navigator !== 'undefined') {\n const {\n languages,\n userLanguage,\n language\n } = navigator;\n if (languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (let i = 0; i < languages.length; i++) {\n found.push(languages[i]);\n }\n }\n if (userLanguage) {\n found.push(userLanguage);\n }\n if (language) {\n found.push(language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n // Deconstruct the options object and extract the htmlTag property\n lookup(_ref) {\n let {\n htmlTag\n } = _ref;\n let found;\n const internalHtmlTag = htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n if (internalHtmlTag && typeof internalHtmlTag.getAttribute === 'function') {\n found = internalHtmlTag.getAttribute('lang');\n }\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n // Deconstruct the options object and extract the lookupFromPathIndex property\n lookup(_ref) {\n let {\n lookupFromPathIndex\n } = _ref;\n if (typeof window === 'undefined') return undefined;\n const language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (!Array.isArray(language)) return undefined;\n const index = typeof lookupFromPathIndex === 'number' ? lookupFromPathIndex : 0;\n return language[index]?.replace('/', '');\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup(_ref) {\n let {\n lookupFromSubdomainIndex\n } = _ref;\n // If given get the subdomain index else 1\n const internalLookupFromSubdomainIndex = typeof lookupFromSubdomainIndex === 'number' ? lookupFromSubdomainIndex + 1 : 1;\n // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group match which should be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n const language = typeof window !== 'undefined' && window.location?.hostname?.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n // if there is no match (null) return undefined\n if (!language) return undefined;\n // return the given group match\n return language[internalLookupFromSubdomainIndex];\n }\n};\n\n// some environments, throws when accessing document.cookie\nlet canCookies = false;\ntry {\n // eslint-disable-next-line no-unused-expressions\n document.cookie;\n canCookies = true;\n // eslint-disable-next-line no-empty\n} catch (e) {}\nconst order = ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'];\nif (!canCookies) order.splice(1, 1);\nconst getDefaults = () => ({\n order,\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'],\n // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n\n convertDetectedLanguage: l => l\n});\nclass Browser {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n init() {\n let services = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n languageUtils: {}\n };\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n this.options.convertDetectedLanguage = l => l.replace('-', '_');\n }\n\n // backwards compatibility\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n this.addDetector(hash);\n }\n addDetector(detector) {\n this.detectors[detector.name] = detector;\n return this;\n }\n detect() {\n let detectionOrder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.order;\n let detected = [];\n detectionOrder.forEach(detectorName => {\n if (this.detectors[detectorName]) {\n let lookup = this.detectors[detectorName].lookup(this.options);\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n detected = detected.filter(d => d !== undefined && d !== null && !hasXSS(d)).map(d => this.options.convertDetectedLanguage(d));\n if (this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n cacheUserLanguage(lng) {\n let caches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(cacheName => {\n if (this.detectors[cacheName]) this.detectors[cacheName].cacheUserLanguage(lng, this.options);\n });\n }\n}\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\n// Import translation files\nimport sk from './locales/sk.json';\nimport cs from './locales/cs.json';\nimport hu from './locales/hu.json';\n\nconst resources = {\n sk: {\n translation: sk\n },\n cs: {\n translation: cs\n },\n hu: {\n translation: hu\n }\n};\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources,\n fallbackLng: 'sk', // Slovak as default language\n debug: process.env.NODE_ENV === 'development',\n \n interpolation: {\n escapeValue: false, // React already does escaping\n },\n \n detection: {\n order: ['localStorage', 'navigator', 'htmlTag'],\n caches: ['localStorage'],\n }\n });\n\nexport default i18n;\n","// Blockly modules will be imported dynamically to handle external dependency scenarios\nlet Blockly: any;\nlet javascriptGenerator: any;\n\n// Flag to track if Blockly has been initialized\nlet isBlocklyInitialized = false;\nlet initializationPromise: Promise<void> | null = null;\n\n// Track initialization calls for debugging\nlet initializationCallStack: string[] = [];\nlet initializationCount = 0;\n\n// Track active workspaces to prevent duplicates\nconst activeWorkspaces: Set<any> = new Set();\n\n// Track DOM elements that have been injected to prevent double injection\nconst injectedElements: Set<HTMLElement> = new Set();\n\n/**\n * Initialize Blockly with proper setup for package usage\n * This ensures Blockly is properly configured when used as an external package\n * Returns a Promise that resolves when initialization is complete\n */\nexport function initializeBlockly(): Promise<void> {\n initializationCount++;\n const callStack = new Error().stack || 'Unknown call stack';\n const callerInfo = callStack.split('\\n')[2]?.trim() || 'Unknown caller';\n initializationCallStack.push(`Call #${initializationCount}: ${callerInfo}`);\n \n console.log(`[Blockly Setup] 🚀 initializeBlockly() called #${initializationCount}`);\n console.log(`[Blockly Setup] 📍 Caller: ${callerInfo}`);\n console.log(`[Blockly Setup] 📊 Current state: isInitialized=${isBlocklyInitialized}, hasPromise=${!!initializationPromise}`);\n console.log(`[Blockly Setup] 📋 All calls so far:`, initializationCallStack);\n \n if (isBlocklyInitialized) {\n console.log('[Blockly Setup] ✅ Already initialized, returning resolved promise');\n return Promise.resolve();\n }\n\n if (initializationPromise) {\n console.log('[Blockly Setup] ⏳ Initialization already in progress, returning existing promise');\n return initializationPromise;\n }\n\n console.log('[Blockly Setup] 🎯 Starting fresh Blockly initialization...');\n \n initializationPromise = new Promise((resolve, reject) => {\n const initialize = async () => {\n try {\n console.log('[Blockly Setup] 🔍 Checking Blockly core availability...');\n console.log('[Blockly Setup] 📦 Current Blockly state:', {\n BlocklyType: typeof Blockly,\n BlocklyValue: Blockly ? 'defined' : 'undefined',\n javascriptGeneratorType: typeof javascriptGenerator,\n javascriptGeneratorValue: javascriptGenerator ? 'defined' : 'undefined'\n });\n \n // Dynamically import Blockly modules\n if (typeof Blockly === 'undefined') {\n console.log('[Blockly Setup] 📥 Blockly not loaded, attempting dynamic import...');\n try {\n // Try to import Blockly modules dynamically\n console.log('[Blockly Setup] 📥 Importing blockly/core...');\n const blocklyCore = await import('blockly/core');\n console.log('[Blockly Setup] 📥 Importing blockly/blocks...');\n await import('blockly/blocks');\n console.log('[Blockly Setup] 📥 Importing blockly/javascript...');\n const blocklyJs = await import('blockly/javascript');\n \n Blockly = blocklyCore;\n javascriptGenerator = blocklyJs.javascriptGenerator;\n \n console.log('[Blockly Setup] ✅ Blockly modules imported successfully');\n console.log('[Blockly Setup] 📦 Post-import state:', {\n BlocklyType: typeof Blockly,\n BlocklyKeys: Blockly ? Object.keys(Blockly).slice(0, 10) : 'none',\n javascriptGeneratorType: typeof javascriptGenerator,\n javascriptGeneratorKeys: javascriptGenerator ? Object.keys(javascriptGenerator).slice(0, 10) : 'none'\n });\n } catch (importError) {\n console.error('[Blockly Setup] ❌ Failed to import Blockly modules:', importError);\n console.error('[Blockly Setup] 📋 Import error details:', {\n message: (importError as Error).message,\n stack: (importError as Error).stack,\n name: (importError as Error).name\n });\n const error = new Error('Blockly core is not available. Make sure Blockly is properly installed and imported in your project.');\n reject(error);\n return;\n }\n } else {\n console.log('[Blockly Setup] ✅ Blockly already loaded, skipping import');\n }\n\n console.log('[Blockly Setup] ✅ Blockly core is available');\n\n // Initialize Blockly's internal state management\n // This is crucial for preventing the recentlyCreatedOwnerStacks error\n console.log('[Blockly Setup] 🌍 Setting up locale...');\n if (typeof (Blockly as any).setLocale === 'function') {\n try {\n (Blockly as any).setLocale('en');\n console.log('[Blockly Setup] ✅ Locale set to English');\n } catch (e) {\n console.warn('[Blockly Setup] ⚠️ Locale setup failed, using default:', e);\n }\n } else {\n console.log('[Blockly Setup] ⚠️ setLocale function not available');\n }\n\n // Initialize Blockly's internal state objects that are needed for proper operation\n // This ensures that recentlyCreatedOwnerStacks and other internal state is properly initialized\n console.log('[Blockly Setup] 🏗️ Initializing main workspace access...');\n if (typeof (Blockly as any).getMainWorkspace === 'function') {\n try {\n // Force initialization of internal state by accessing main workspace\n const mainWorkspace = (Blockly as any).getMainWorkspace();\n console.log('[Blockly Setup] ✅ Main workspace access initialized:', !!mainWorkspace);\n } catch (e) {\n console.log('[Blockly Setup] ℹ️ Main workspace access failed (expected if no workspace exists):', (e as Error).message);\n }\n } else {\n console.log('[Blockly Setup] ⚠️ getMainWorkspace function not available');\n }\n\n // Ensure Blockly's internal state management is initialized\n // This is the key fix for the recentlyCreatedOwnerStacks error\n console.log('[Blockly Setup] 🎯 Initializing event system...');\n console.log('[Blockly Setup] 🔍 Checking Events object:', {\n EventsType: typeof (Blockly as any).Events,\n EventsKeys: (Blockly as any).Events ? Object.keys((Blockly as any).Events).slice(0, 10) : 'none',\n hasGetGroup: typeof (Blockly as any).Events?.getGroup === 'function'\n });\n \n if (typeof (Blockly as any).Events === 'object' && (Blockly as any).Events.getGroup) {\n try {\n // Initialize event system\n const group = (Blockly as any).Events.getGroup();\n console.log('[Blockly Setup] ✅ Event system initialized, group:', group);\n } catch (e) {\n console.log('[Blockly Setup] ⚠️ Event system initialization failed (may already be initialized):', (e as Error).message);\n }\n } else {\n console.log('[Blockly Setup] ⚠️ Events.getGroup not available');\n }\n\n // Additional internal state initialization\n console.log('[Blockly Setup] 🔧 Checking for recentlyCreatedOwnerStacks...');\n try {\n // Check if the problematic property exists and initialize it if needed\n if ((Blockly as any).Events && typeof (Blockly as any).Events.getGroup === 'function') {\n // Force initialization by calling getGroup\n (Blockly as any).Events.getGroup();\n console.log('[Blockly Setup] ✅ Events.getGroup() called successfully');\n }\n \n // Check for other internal state that might need initialization\n if ((Blockly as any).utils && (Blockly as any).utils.xml) {\n console.log('[Blockly Setup] ✅ Blockly.utils.xml is available');\n }\n \n if ((Blockly as any).inject) {\n console.log('[Blockly Setup] ✅ Blockly.inject is available');\n }\n \n } catch (e) {\n console.error('[Blockly Setup] ❌ Error during internal state check:', e);\n }\n\n // Ensure JavaScript generator is available\n console.log('[Blockly Setup] 🔧 Checking JavaScript generator...');\n if (typeof javascriptGenerator === 'undefined') {\n const error = new Error('Blockly JavaScript generator is not available. Make sure blockly/javascript is imported.');\n console.error('[Blockly Setup] ❌ Error:', error.message);\n reject(error);\n return;\n }\n\n console.log('[Blockly Setup] ✅ JavaScript generator is available');\n console.log('[Blockly Setup] 📦 JavaScript generator details:', {\n type: typeof javascriptGenerator,\n hasWorkspaceToCode: typeof javascriptGenerator.workspaceToCode === 'function',\n hasForBlock: typeof javascriptGenerator.forBlock === 'object',\n keys: Object.keys(javascriptGenerator).slice(0, 10)\n });\n\n // Mark as initialized\n isBlocklyInitialized = true;\n \n console.log('[Blockly Setup] 🎉 ✅ Blockly initialized successfully for package usage');\n console.log('[Blockly Setup] 📊 Final state:', {\n isBlocklyInitialized,\n hasBlockly: !!Blockly,\n hasJavaScriptGenerator: !!javascriptGenerator,\n initializationCount,\n callStack: initializationCallStack\n });\n resolve();\n } catch (error) {\n console.error('[Blockly Setup] ❌ Failed to initialize Blockly:', error);\n console.error('[Blockly Setup] 📋 Error details:', {\n message: (error as Error).message,\n stack: (error as Error).stack,\n name: (error as Error).name\n });\n initializationPromise = null; // Reset so we can try again\n reject(error);\n }\n };\n \n initialize();\n });\n\n return initializationPromise;\n}\n\n/**\n * Check if Blockly is properly initialized\n */\nexport function isBlocklyReady(): boolean {\n return isBlocklyInitialized && typeof Blockly !== 'undefined';\n}\n\n/**\n * Get a properly initialized Blockly instance\n */\nexport function getBlockly(): any {\n if (!isBlocklyReady()) {\n throw new Error('Blockly is not initialized. Call initializeBlockly() first.');\n }\n return Blockly;\n}\n\n/**\n * Get the JavaScript generator with proper initialization\n */\nexport function getJavaScriptGenerator(): any {\n if (!isBlocklyReady()) {\n throw new Error('Blockly is not initialized. Call initializeBlockly() first.');\n }\n return javascriptGenerator;\n}\n\n/**\n * Reset Blockly initialization state (useful for testing)\n */\nexport function resetBlocklyInitialization(): void {\n console.log('[Blockly Setup] 🔄 Resetting initialization state');\n console.log('[Blockly Setup] 📊 State before reset:', {\n isBlocklyInitialized,\n hasInitializationPromise: !!initializationPromise,\n initializationCount,\n callStack: initializationCallStack\n });\n isBlocklyInitialized = false;\n initializationPromise = null;\n initializationCallStack = [];\n initializationCount = 0;\n console.log('[Blockly Setup] ✅ Reset completed');\n}\n\n/**\n * Get debugging information about Blockly initialization\n */\nexport function getBlocklyDebugInfo(): any {\n return {\n isBlocklyInitialized,\n hasInitializationPromise: !!initializationPromise,\n initializationCount,\n callStack: [...initializationCallStack],\n blocklyState: {\n hasBlockly: !!Blockly,\n blocklyType: typeof Blockly,\n blocklyKeys: Blockly ? Object.keys(Blockly).slice(0, 20) : 'none'\n },\n generatorState: {\n hasGenerator: !!javascriptGenerator,\n generatorType: typeof javascriptGenerator,\n generatorKeys: javascriptGenerator ? Object.keys(javascriptGenerator).slice(0, 20) : 'none'\n }\n };\n}\n\n/**\n * Register a workspace to track active workspaces\n */\nexport function registerWorkspace(workspace: any): void {\n console.log(`[Blockly Setup] 📝 Registering workspace. Current active workspaces: ${activeWorkspaces.size}`);\n activeWorkspaces.add(workspace);\n console.log(`[Blockly Setup] 📝 Workspace registered. Total active workspaces: ${activeWorkspaces.size}`);\n}\n\n/**\n * Unregister a workspace when it's disposed\n */\nexport function unregisterWorkspace(workspace: any): void {\n console.log(`[Blockly Setup] 🗑️ Unregistering workspace. Current active workspaces: ${activeWorkspaces.size}`);\n activeWorkspaces.delete(workspace);\n console.log(`[Blockly Setup] 🗑️ Workspace unregistered. Total active workspaces: ${activeWorkspaces.size}`);\n}\n\n/**\n * Get the number of active workspaces\n */\nexport function getActiveWorkspaceCount(): number {\n return activeWorkspaces.size;\n}\n\n/**\n * Get all active workspaces (for debugging)\n */\nexport function getActiveWorkspaces(): any[] {\n return Array.from(activeWorkspaces);\n}\n\n/**\n * Check if a DOM element has already been injected with Blockly\n */\nexport function isElementInjected(element: HTMLElement): boolean {\n return injectedElements.has(element);\n}\n\n/**\n * Mark a DOM element as injected\n */\nexport function markElementAsInjected(element: HTMLElement): void {\n console.log(`[Blockly Setup] 📝 Marking element as injected. Current injected elements: ${injectedElements.size}`);\n injectedElements.add(element);\n console.log(`[Blockly Setup] 📝 Element marked as injected. Total injected elements: ${injectedElements.size}`);\n}\n\n/**\n * Unmark a DOM element as injected (when workspace is disposed)\n */\nexport function unmarkElementAsInjected(element: HTMLElement): void {\n console.log(`[Blockly Setup] 🗑️ Unmarking element as injected. Current injected elements: ${injectedElements.size}`);\n injectedElements.delete(element);\n console.log(`[Blockly Setup] 🗑️ Element unmarked as injected. Total injected elements: ${injectedElements.size}`);\n}\n\n/**\n * Get all injected elements (for debugging)\n */\nexport function getInjectedElements(): HTMLElement[] {\n return Array.from(injectedElements);\n}\n","// Utility functions for the project\n\n// Export Blockly setup utilities\nexport * from './blocklySetup';\n\n/**\n * Debounce function to limit the rate at which a function can fire\n * @param func - The function to debounce\n * @param wait - The number of milliseconds to delay\n * @returns A debounced version of the function\n */\nexport function debounce<T extends (...args: unknown[]) => unknown>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout>;\n \n return (...args: Parameters<T>) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func(...args), wait);\n };\n}\n\n/**\n * Throttle function to limit the rate at which a function can fire\n * @param func - The function to throttle\n * @param limit - The number of milliseconds to limit\n * @returns A throttled version of the function\n */\nexport function throttle<T extends (...args: unknown[]) => unknown>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n let inThrottle: boolean;\n \n return (...args: Parameters<T>) => {\n if (!inThrottle) {\n func(...args);\n inThrottle = true;\n setTimeout(() => (inThrottle = false), limit);\n }\n };\n}\n\n/**\n * Generate a random ID string\n * @param length - The length of the ID (default: 8)\n * @returns A random ID string\n */\nexport function generateId(length: number = 8): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n \n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n \n return result;\n}\n\n/**\n * Format a number with commas as thousands separators\n * @param num - The number to format\n * @returns The formatted number string\n */\nexport function formatNumber(num: number): string {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n\n/**\n * Format a date to a readable string\n * @param date - The date to format\n * @param options - Intl.DateTimeFormatOptions for customization\n * @returns The formatted date string\n */\nexport function formatDate(\n date: Date | string | number,\n options: Intl.DateTimeFormatOptions = {}\n): string {\n const dateObj = new Date(date);\n const defaultOptions: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n ...options,\n };\n \n return new Intl.DateTimeFormat('en-US', defaultOptions).format(dateObj);\n}\n\n/**\n * Format a relative time (e.g., \"2 hours ago\")\n * @param date - The date to format\n * @returns The relative time string\n */\nexport function formatRelativeTime(date: Date | string | number): string {\n const now = new Date();\n const targetDate = new Date(date);\n const diffInSeconds = Math.floor((now.getTime() - targetDate.getTime()) / 1000);\n \n if (diffInSeconds < 60) {\n return 'just now';\n }\n \n const diffInMinutes = Math.floor(diffInSeconds / 60);\n if (diffInMinutes < 60) {\n return `${diffInMinutes} minute${diffInMinutes === 1 ? '' : 's'} ago`;\n }\n \n const diffInHours = Math.floor(diffInMinutes / 60);\n if (diffInHours < 24) {\n return `${diffInHours} hour${diffInHours === 1 ? '' : 's'} ago`;\n }\n \n const diffInDays = Math.floor(diffInHours / 24);\n if (diffInDays < 7) {\n return `${diffInDays} day${diffInDays === 1 ? '' : 's'} ago`;\n }\n \n const diffInWeeks = Math.floor(diffInDays / 7);\n if (diffInWeeks < 4) {\n return `${diffInWeeks} week${diffInWeeks === 1 ? '' : 's'} ago`;\n }\n \n const diffInMonths = Math.floor(diffInDays / 30);\n if (diffInMonths < 12) {\n return `${diffInMonths} month${diffInMonths === 1 ? '' : 's'} ago`;\n }\n \n const diffInYears = Math.floor(diffInDays / 365);\n return `${diffInYears} year${diffInYears === 1 ? '' : 's'} ago`;\n}\n\n/**\n * Capitalize the first letter of a string\n * @param str - The string to capitalize\n * @returns The capitalized string\n */\nexport function capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n}\n\n/**\n * Convert a string to title case\n * @param str - The string to convert\n * @returns The title case string\n */\nexport function toTitleCase(str: string): string {\n return str\n .toLowerCase()\n .split(' ')\n .map(word => capitalize(word))\n .join(' ');\n}\n\n/**\n * Truncate a string to a specified length\n * @param str - The string to truncate\n * @param length - The maximum length\n * @param suffix - The suffix to add (default: '...')\n * @returns The truncated string\n */\nexport function truncate(str: string, length: number, suffix: string = '...'): string {\n if (str.length <= length) {\n return str;\n }\n \n return str.substring(0, length - suffix.length) + suffix;\n}\n\n/**\n * Check if a string is a valid email\n * @param email - The email to validate\n * @returns True if valid, false otherwise\n */\nexport function isValidEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}\n\n/**\n * Check if a string is a valid URL\n * @param url - The URL to validate\n * @returns True if valid, false otherwise\n */\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Deep clone an object\n * @param obj - The object to clone\n * @returns A deep clone of the object\n */\nexport function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n \n if (obj instanceof Date) {\n return new Date(obj.getTime()) as T;\n }\n \n if (obj instanceof Array) {\n return obj.map(item => deepClone(item)) as T;\n }\n \n if (typeof obj === 'object') {\n const clonedObj = {} as T;\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clonedObj[key] = deepClone(obj[key]);\n }\n }\n return clonedObj;\n }\n \n return obj;\n}\n\n/**\n * Merge multiple objects\n * @param objects - The objects to merge\n * @returns The merged object\n */\nexport function mergeObjects<T extends Record<string, any>>(...objects: T[]): T {\n return objects.reduce((merged, obj) => {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {\n (merged as any)[key] = mergeObjects((merged as any)[key] || {}, obj[key] as Record<string, any>);\n } else {\n (merged as any)[key] = obj[key];\n }\n }\n }\n return merged;\n }, {} as T);\n}\n\n/**\n * Remove undefined and null values from an object\n * @param obj - The object to clean\n * @returns The cleaned object\n */\nexport function removeEmptyValues<T extends Record<string, any>>(obj: T): Partial<T> {\n const cleaned: Partial<T> = {};\n \n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && obj[key] !== undefined && obj[key] !== null) {\n cleaned[key] = obj[key];\n }\n }\n \n return cleaned;\n}\n\n/**\n * Get a nested property value from an object using a path string\n * @param obj - The object to search in\n * @param path - The path to the property (e.g., 'user.profile.name')\n * @param defaultValue - The default value if property not found\n * @returns The property value or default value\n */\nexport function getNestedValue<T>(\n obj: any,\n path: string,\n defaultValue?: T\n): T | undefined {\n const keys = path.split('.');\n let result = obj;\n \n for (const key of keys) {\n if (result && typeof result === 'object' && key in result) {\n result = result[key];\n } else {\n return defaultValue;\n }\n }\n \n return result;\n}\n\n/**\n * Set a nested property value in an object using a path string\n * @param obj - The object to modify\n * @param path - The path to the property (e.g., 'user.profile.name')\n * @param value - The value to set\n * @returns The modified object\n */\nexport function setNestedValue<T extends Record<string, any>>(\n obj: T,\n path: string,\n value: any\n): T {\n const keys = path.split('.');\n const result = { ...obj };\n let current: any = result;\n \n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (!(key in current) || typeof current[key] !== 'object') {\n current[key] = {};\n }\n current = current[key];\n }\n \n current[keys[keys.length - 1]] = value;\n return result;\n}\n\n/**\n * Check if two objects are deeply equal\n * @param obj1 - First object\n * @param obj2 - Second object\n * @returns True if objects are deeply equal\n */\nexport function isDeepEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n \n if (\n typeof obj1 !== 'object' ||\n typeof obj2 !== 'object' ||\n obj1 === null ||\n obj2 === null\n ) {\n return false;\n }\n \n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n \n if (keys1.length !== keys2.length) {\n return false;\n }\n \n for (const key of keys1) {\n if (!keys2.includes(key) || !isDeepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n \n return true;\n}\n\n/**\n * Sleep for a specified number of milliseconds\n * @param ms - Milliseconds to sleep\n * @returns A promise that resolves after the specified time\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Retry a function with exponential backoff\n * @param fn - The function to retry\n * @param maxRetries - Maximum number of retries\n * @param baseDelay - Base delay in milliseconds\n * @returns The result of the function or throws an error\n */\nexport async function retryWithBackoff<T>(\n fn: () => Promise<T>,\n maxRetries: number = 3,\n baseDelay: number = 1000\n): Promise<T> {\n let lastError: Error;\n \n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error as Error;\n \n if (attempt === maxRetries) {\n throw lastError;\n }\n \n const delay = baseDelay * Math.pow(2, attempt);\n await sleep(delay);\n }\n }\n \n throw lastError!;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","\"use client\";\n\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {},\n breakpoints: DEFAULT_BREAKPOINTS,\n minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\nfunction ThemeProvider({\n prefixes = {},\n breakpoints = DEFAULT_BREAKPOINTS,\n minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: {\n ...prefixes\n },\n breakpoints,\n minBreakpoint,\n dir\n }), [prefixes, breakpoints, minBreakpoint, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n const {\n breakpoints\n } = useContext(ThemeContext);\n return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n const {\n minBreakpoint\n } = useContext(ThemeContext);\n return minBreakpoint;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent;\n // If it's a functional component make sure we don't break it with a ref\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({\n ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default {\n disabled: false\n};","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number,\n appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string,\n active: PropTypes.string\n}), PropTypes.shape({\n enter: PropTypes.string,\n enterDone: PropTypes.string,\n enterActive: PropTypes.string,\n exit: PropTypes.string,\n exitDone: PropTypes.string,\n exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import * as React from 'react';\nexport function isEscKey(e) {\n return e.code === 'Escape' || e.keyCode === 27;\n}\nexport function getReactVersion() {\n const parts = React.version.split('.');\n return {\n major: +parts[0],\n minor: +parts[1],\n patch: +parts[2]\n };\n}\nexport function getChildRef(element) {\n if (!element || typeof element === 'function') {\n return null;\n }\n const {\n major\n } = getReactVersion();\n const childRef = major >= 19 ? element.props.ref : element.ref;\n return childRef;\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nfunction parseDuration(node, property) {\n const str = css(node, property) || '';\n const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\nexport default function transitionEndListener(element, handler) {\n const duration = parseDuration(element, 'transitionDuration');\n const delay = parseDuration(element, 'transitionDelay');\n const remove = transitionEnd(element, e => {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n // TODO: Remove in next major.\n // eslint-disable-next-line react/no-find-dom-node\n return ReactDOM.findDOMNode(componentOrElement);\n }\n return componentOrElement != null ? componentOrElement : null;\n}","\"use client\";\n\nimport React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n addEndListener,\n children,\n childRef,\n ...props\n}, ref) => {\n const nodeRef = useRef(null);\n const mergedRef = useMergedRefs(nodeRef, childRef);\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n const normalize = callback => param => {\n if (callback && nodeRef.current) {\n callback(nodeRef.current, param);\n }\n };\n const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n const handleExit = useCallback(normalize(onExit), [onExit]);\n const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n const handleExited = useCallback(normalize(onExited), [onExited]);\n const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n return /*#__PURE__*/_jsx(Transition, {\n ref: ref,\n ...props,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n children: typeof children === 'function' ? (status, innerProps) =>\n // TODO: Types for RTG missing innerProps, so need to cast.\n children(status, {\n ...innerProps,\n ref: attachRef\n }) : /*#__PURE__*/React.cloneElement(children, {\n ref: attachRef\n })\n });\n});\nTransitionWrapper.displayName = 'TransitionWrapper';\nexport default TransitionWrapper;","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className =>\n/*#__PURE__*/\n// eslint-disable-next-line react/display-name\nReact.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", {\n ...p,\n ref: ref,\n className: classNames(p.className, className)\n})));","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","const _excluded = [\"as\", \"disabled\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n tagName,\n disabled,\n href,\n target,\n rel,\n role,\n onClick,\n tabIndex = 0,\n type\n}) {\n if (!tagName) {\n if (href != null || target != null || rel != null) {\n tagName = 'a';\n } else {\n tagName = 'button';\n }\n }\n const meta = {\n tagName\n };\n if (tagName === 'button') {\n return [{\n type: type || 'button',\n disabled\n }, meta];\n }\n const handleClick = event => {\n if (disabled || tagName === 'a' && isTrivialHref(href)) {\n event.preventDefault();\n }\n if (disabled) {\n event.stopPropagation();\n return;\n }\n onClick == null ? void 0 : onClick(event);\n };\n const handleKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n if (tagName === 'a') {\n // Ensure there's a href so Enter can trigger anchor button.\n href || (href = '#');\n if (disabled) {\n href = undefined;\n }\n }\n return [{\n role: role != null ? role : 'button',\n // explicitly undefined so that it overrides the props disabled in a spread\n // e.g. <Tag {...props} {...hookProps} />\n disabled: undefined,\n tabIndex: disabled ? undefined : tabIndex,\n href,\n target: tagName === 'a' ? target : undefined,\n 'aria-disabled': !disabled ? undefined : disabled,\n rel: tagName === 'a' ? rel : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: asProp,\n disabled\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [buttonProps, {\n tagName: Component\n }] = useButtonProps(Object.assign({\n tagName: asProp,\n disabled\n }, props));\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n ref: ref\n }));\n});\nButton.displayName = 'Button';\nexport default Button;","const _excluded = [\"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/anchor-has-content */\n\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * An generic `<a>` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [buttonProps] = useButtonProps(Object.assign({\n tagName: 'a'\n }, props));\n const handleKeyDown = useEventCallback(e => {\n buttonProps.onKeyDown(e);\n onKeyDown == null ? void 0 : onKeyDown(e);\n });\n if (isTrivialHref(props.href) || props.role === 'button') {\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, buttonProps, {\n onKeyDown: handleKeyDown\n }));\n }\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, {\n onKeyDown: onKeyDown\n }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport { getChildRef } from '@restart/ui/utils';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst fadeStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n className,\n children,\n transitionClasses = {},\n onEnter,\n ...rest\n}, ref) => {\n const props = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n ...rest\n };\n const handleEnter = useCallback((node, isAppearing) => {\n triggerBrowserReflow(node);\n onEnter == null || onEnter(node, isAppearing);\n }, [onEnter]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n onEnter: handleEnter,\n childRef: getChildRef(children),\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames('fade', className, children.props.className, fadeStyles[status], transitionClasses[status])\n })\n });\n});\nFade.displayName = 'Fade';\nexport default Fade;","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /** An accessible label indicating the relevant information about the Close Button. */\n 'aria-label': PropTypes.string,\n /** A callback fired after the Close Button is clicked. */\n onClick: PropTypes.func,\n /**\n * Render different color variant for the button.\n *\n * Omitting this will render the default dark color.\n */\n variant: PropTypes.oneOf(['white'])\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n className,\n variant,\n 'aria-label': ariaLabel = 'Close',\n ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n \"aria-label\": ariaLabel,\n ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nexport default CloseButton;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Badge = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n bg = 'primary',\n pill = false,\n text,\n className,\n as: Component = 'span',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'badge');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, pill && `rounded-pill`, text && `text-${text}`, bg && `bg-${bg}`)\n });\n});\nBadge.displayName = 'Badge';\nexport default Badge;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Button = /*#__PURE__*/React.forwardRef(({\n as,\n bsPrefix,\n variant = 'primary',\n size,\n active = false,\n disabled = false,\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n const [buttonProps, {\n tagName\n }] = useButtonProps({\n tagName: as,\n disabled,\n ...props\n });\n const Component = tagName;\n return /*#__PURE__*/_jsx(Component, {\n ...buttonProps,\n ...props,\n ref: ref,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && disabled && 'disabled')\n });\n});\nButton.displayName = 'Button';\nexport default Button;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardBody.displayName = 'CardBody';\nexport default CardBody;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardFooter = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-footer');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardFooter.displayName = 'CardFooter';\nexport default CardFooter;","\"use client\";\n\nimport * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardHeaderContext from './CardHeaderContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-header');\n const contextValue = useMemo(() => ({\n cardHeaderBsPrefix: prefix\n }), [prefix]);\n return /*#__PURE__*/_jsx(CardHeaderContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix)\n })\n });\n});\nCardHeader.displayName = 'CardHeader';\nexport default CardHeader;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImg = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n variant,\n as: Component = 'img',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(variant ? `${prefix}-${variant}` : prefix, className),\n ...props\n });\n});\nCardImg.displayName = 'CardImg';\nexport default CardImg;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImgOverlay = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-img-overlay');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardImgOverlay.displayName = 'CardImgOverlay';\nexport default CardImgOverlay;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'a',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardLink.displayName = 'CardLink';\nexport default CardLink;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH6 = divWithClassName('h6');\nconst CardSubtitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH6,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-subtitle');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardSubtitle.displayName = 'CardSubtitle';\nexport default CardSubtitle;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'p',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardText.displayName = 'CardText';\nexport default CardText;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst CardTitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH5,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'card-title');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nCardTitle.displayName = 'CardTitle';\nexport default CardTitle;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardBody from './CardBody';\nimport CardFooter from './CardFooter';\nimport CardHeader from './CardHeader';\nimport CardImg from './CardImg';\nimport CardImgOverlay from './CardImgOverlay';\nimport CardLink from './CardLink';\nimport CardSubtitle from './CardSubtitle';\nimport CardText from './CardText';\nimport CardTitle from './CardTitle';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Card = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n bg,\n text,\n border,\n body = false,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, bg && `bg-${bg}`, text && `text-${text}`, border && `border-${border}`),\n children: body ? /*#__PURE__*/_jsx(CardBody, {\n children: children\n }) : children\n });\n});\nCard.displayName = 'Card';\nexport default Object.assign(Card, {\n Img: CardImg,\n Title: CardTitle,\n Subtitle: CardSubtitle,\n Body: CardBody,\n Link: CardLink,\n Text: CardText,\n Header: CardHeader,\n Footer: CardFooter,\n ImgOverlay: CardImgOverlay\n});","import * as React from 'react';\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\nfunction map(children, func) {\n let index = 0;\n return React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child);\n}\n\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\nfunction forEach(children, func) {\n let index = 0;\n React.Children.forEach(children, child => {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n\n/**\n * Finds whether a component's `children` prop includes a React element of the\n * specified type.\n */\nfunction hasChildOfType(children, type) {\n return React.Children.toArray(children).some(child => /*#__PURE__*/React.isValidElement(child) && child.type === type);\n}\nexport { map, forEach, hasChildOfType };","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n as,\n bsPrefix,\n className,\n ...props\n}) {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const spans = [];\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n return [{\n ...props,\n className: classNames(className, ...spans, ...classes)\n }, {\n as,\n bsPrefix,\n spans\n }];\n}\nconst Col = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n const [{\n className,\n ...colProps\n }, {\n as: Component = 'div',\n bsPrefix,\n spans\n }] = useCol(props);\n return /*#__PURE__*/_jsx(Component, {\n ...colProps,\n ref: ref,\n className: classNames(className, !spans.length && bsPrefix)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nexport default Container;","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { useCallback, useRef, useState } from 'react';\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n const wasPropRef = useRef(propValue !== undefined);\n const [stateValue, setState] = useState(defaultValue);\n const isProp = propValue !== undefined;\n const wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n return [isProp ? propValue : stateValue, useCallback((...args) => {\n const [value, ...rest] = args;\n let returnValue = handler == null ? void 0 : handler(value, ...rest);\n setState(value);\n return returnValue;\n }, [handler])];\n}\nexport { useUncontrolledProp };\nexport function useUncontrolled(props, config) {\n return Object.keys(config).reduce((result, fieldName) => {\n const _ref = result,\n _defaultKey = defaultKey(fieldName),\n {\n [_defaultKey]: defaultValue,\n [fieldName]: propsValue\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, [_defaultKey, fieldName].map(_toPropertyKey));\n const handlerName = config[fieldName];\n const [value, handler] = useUncontrolledProp(propsValue, defaultValue, props[handlerName]);\n return Object.assign({}, rest, {\n [fieldName]: value,\n [handlerName]: handler\n });\n }, props);\n}","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are strictly equal to the last state value\n const [, dispatch] = useReducer(revision => revision + 1, 0);\n return dispatch;\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","import $670gB$react, {useContext as $670gB$useContext, useState as $670gB$useState, useMemo as $670gB$useMemo, useLayoutEffect as $670gB$useLayoutEffect, useRef as $670gB$useRef} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst $b5e257d569688ac6$var$defaultContext = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\nconst $b5e257d569688ac6$var$SSRContext = /*#__PURE__*/ (0, $670gB$react).createContext($b5e257d569688ac6$var$defaultContext);\nconst $b5e257d569688ac6$var$IsSSRContext = /*#__PURE__*/ (0, $670gB$react).createContext(false);\n// This is only used in React < 18.\nfunction $b5e257d569688ac6$var$LegacySSRProvider(props) {\n let cur = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n let counter = $b5e257d569688ac6$var$useCounter(cur === $b5e257d569688ac6$var$defaultContext);\n let [isSSR, setIsSSR] = (0, $670gB$useState)(true);\n let value = (0, $670gB$useMemo)(()=>({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === $b5e257d569688ac6$var$defaultContext ? '' : `${cur.prefix}-${counter}`,\n current: 0\n }), [\n cur,\n counter\n ]);\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof document !== 'undefined') // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, $670gB$useLayoutEffect)(()=>{\n setIsSSR(false);\n }, []);\n return /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$SSRContext.Provider, {\n value: value\n }, /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$IsSSRContext.Provider, {\n value: isSSR\n }, props.children));\n}\nlet $b5e257d569688ac6$var$warnedAboutSSRProvider = false;\nfunction $b5e257d569688ac6$export$9f8ac96af4b1b2ae(props) {\n if (typeof (0, $670gB$react)['useId'] === 'function') {\n if (process.env.NODE_ENV !== 'test' && process.env.NODE_ENV !== 'production' && !$b5e257d569688ac6$var$warnedAboutSSRProvider) {\n console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n $b5e257d569688ac6$var$warnedAboutSSRProvider = true;\n }\n return /*#__PURE__*/ (0, $670gB$react).createElement((0, $670gB$react).Fragment, null, props.children);\n }\n return /*#__PURE__*/ (0, $670gB$react).createElement($b5e257d569688ac6$var$LegacySSRProvider, props);\n}\nlet $b5e257d569688ac6$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $b5e257d569688ac6$var$componentIds = new WeakMap();\nfunction $b5e257d569688ac6$var$useCounter(isDisabled = false) {\n let ctx = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n let ref = (0, $670gB$useRef)(null);\n // eslint-disable-next-line rulesdir/pure-render\n if (ref.current === null && !isDisabled) {\n var _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner, _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n // This means our id counter will be incremented twice instead of once. This is a problem because on the\n // server, components are only rendered once and so ids generated on the server won't match the client.\n // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n // To ensure that we only increment the global counter once, we store the starting id for this component in\n // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n // Since React runs the second render immediately after the first, this is safe.\n // @ts-ignore\n let currentOwner = (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = (0, $670gB$react).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === void 0 ? void 0 : (_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner = _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner) === null || _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner === void 0 ? void 0 : _React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner.current;\n if (currentOwner) {\n let prevComponentValue = $b5e257d569688ac6$var$componentIds.get(currentOwner);\n if (prevComponentValue == null) // On the first render, and first call to useId, store the id and state in our weak map.\n $b5e257d569688ac6$var$componentIds.set(currentOwner, {\n id: ctx.current,\n state: currentOwner.memoizedState\n });\n else if (currentOwner.memoizedState !== prevComponentValue.state) {\n // On the second render, the memoizedState gets reset by React.\n // Reset the counter, and remove from the weak map so we don't\n // do this for subsequent useId calls.\n ctx.current = prevComponentValue.id;\n $b5e257d569688ac6$var$componentIds.delete(currentOwner);\n }\n }\n // eslint-disable-next-line rulesdir/pure-render\n ref.current = ++ctx.current;\n }\n // eslint-disable-next-line rulesdir/pure-render\n return ref.current;\n}\nfunction $b5e257d569688ac6$var$useLegacySSRSafeId(defaultId) {\n let ctx = (0, $670gB$useContext)($b5e257d569688ac6$var$SSRContext);\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === $b5e257d569688ac6$var$defaultContext && !$b5e257d569688ac6$var$canUseDOM && process.env.NODE_ENV !== 'production') console.warn('When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.');\n let counter = $b5e257d569688ac6$var$useCounter(!!defaultId);\n let prefix = ctx === $b5e257d569688ac6$var$defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;\n return defaultId || `${prefix}-${counter}`;\n}\nfunction $b5e257d569688ac6$var$useModernSSRSafeId(defaultId) {\n let id = (0, $670gB$react).useId();\n let [didSSR] = (0, $670gB$useState)($b5e257d569688ac6$export$535bd6ca7f90a273());\n let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${$b5e257d569688ac6$var$defaultContext.prefix}`;\n return defaultId || `${prefix}-${id}`;\n}\nconst $b5e257d569688ac6$export$619500959fc48b26 = typeof (0, $670gB$react)['useId'] === 'function' ? $b5e257d569688ac6$var$useModernSSRSafeId : $b5e257d569688ac6$var$useLegacySSRSafeId;\nfunction $b5e257d569688ac6$var$getSnapshot() {\n return false;\n}\nfunction $b5e257d569688ac6$var$getServerSnapshot() {\n return true;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction $b5e257d569688ac6$var$subscribe(onStoreChange) {\n // noop\n return ()=>{};\n}\nfunction $b5e257d569688ac6$export$535bd6ca7f90a273() {\n // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n if (typeof (0, $670gB$react)['useSyncExternalStore'] === 'function') return (0, $670gB$react)['useSyncExternalStore']($b5e257d569688ac6$var$subscribe, $b5e257d569688ac6$var$getSnapshot, $b5e257d569688ac6$var$getServerSnapshot);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return (0, $670gB$useContext)($b5e257d569688ac6$var$IsSSRContext);\n}\n\n\nexport {$b5e257d569688ac6$export$9f8ac96af4b1b2ae as SSRProvider, $b5e257d569688ac6$export$535bd6ca7f90a273 as useIsSSR, $b5e257d569688ac6$export$619500959fc48b26 as useSSRSafeId};\n//# sourceMappingURL=SSRProvider.module.js.map\n","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\nexport const PROPERTY_PREFIX = `rrUi`;\nexport function dataAttr(property) {\n return `${ATTRIBUTE_PREFIX}${property}`;\n}\nexport function dataProp(property) {\n return `${PROPERTY_PREFIX}${property}`;\n}","\"use client\";\n\nimport * as React from 'react';\n\n// TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Feedback = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n as: Component = 'div',\n className,\n type = 'valid',\n tooltip = false,\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, `${type}-${tooltip ? 'tooltip' : 'feedback'}`)\n}));\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","\"use client\";\n\nimport * as React from 'react';\n\n// TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckInput = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n className,\n type = 'checkbox',\n isValid = false,\n isInvalid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n return /*#__PURE__*/_jsx(\"label\", {\n ...props,\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n });\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { hasChildOfType } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FormCheck = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n bsSwitchPrefix,\n inline = false,\n reverse = false,\n disabled = false,\n isValid = false,\n isInvalid = false,\n feedbackTooltip = false,\n feedback,\n feedbackType,\n className,\n style,\n title = '',\n type = 'checkbox',\n label,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as = 'input',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n bsSwitchPrefix = useBootstrapPrefix(bsSwitchPrefix, 'form-switch');\n const {\n controlId\n } = useContext(FormContext);\n const innerFormContext = useMemo(() => ({\n controlId: id || controlId\n }), [controlId, id]);\n const hasLabel = !children && label != null && label !== false || hasChildOfType(children, FormCheckLabel);\n const input = /*#__PURE__*/_jsx(FormCheckInput, {\n ...props,\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: as\n });\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: innerFormContext,\n children: /*#__PURE__*/_jsx(\"div\", {\n style: style,\n className: classNames(className, hasLabel && bsPrefix, inline && `${bsPrefix}-inline`, reverse && `${bsPrefix}-reverse`, type === 'switch' && bsSwitchPrefix),\n children: children || /*#__PURE__*/_jsxs(_Fragment, {\n children: [input, hasLabel && /*#__PURE__*/_jsx(FormCheckLabel, {\n title: title,\n children: label\n }), feedback && /*#__PURE__*/_jsx(Feedback, {\n type: feedbackType,\n tooltip: feedbackTooltip,\n children: feedback\n })]\n })\n })\n });\n});\nFormCheck.displayName = 'FormCheck';\nexport default Object.assign(FormCheck, {\n Input: FormCheckInput,\n Label: FormCheckLabel\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormControl = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n type,\n size,\n htmlSize,\n id,\n className,\n isValid = false,\n isInvalid = false,\n plaintext,\n readOnly,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, plaintext ? `${bsPrefix}-plaintext` : bsPrefix, size && `${bsPrefix}-${size}`, type === 'color' && `${bsPrefix}-color`, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormFloating = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nFormFloating.displayName = 'FormFloating';\nexport default FormFloating;","import * as React from 'react';\nimport { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormGroup = /*#__PURE__*/React.forwardRef(({\n controlId,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const context = useMemo(() => ({\n controlId\n }), [controlId]);\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref\n })\n });\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormLabel = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'label',\n bsPrefix,\n column = false,\n visuallyHidden = false,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n let columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = `${columnClass} ${columnClass}-${column}`;\n const classes = classNames(className, bsPrefix, visuallyHidden && 'visually-hidden', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/_jsx(Col, {\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classes,\n htmlFor: htmlFor,\n ...props\n });\n});\nFormLabel.displayName = 'FormLabel';\nexport default FormLabel;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormRange = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-range');\n return /*#__PURE__*/_jsx(\"input\", {\n ...props,\n type: \"range\",\n ref: ref,\n className: classNames(className, bsPrefix),\n id: id || controlId\n });\n});\nFormRange.displayName = 'FormRange';\nexport default FormRange;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormSelect = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n htmlSize,\n className,\n isValid = false,\n isInvalid = false,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-select');\n return /*#__PURE__*/_jsx(\"select\", {\n ...props,\n size: htmlSize,\n ref: ref,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, isValid && `is-valid`, isInvalid && `is-invalid`),\n id: id || controlId\n });\n});\nFormSelect.displayName = 'FormSelect';\nexport default FormSelect;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormText = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n as: Component = 'small',\n muted,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n });\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import * as React from 'react';\nimport FormCheck from './FormCheck';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Switch = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(FormCheck, {\n ...props,\n ref: ref,\n type: \"switch\"\n}));\nSwitch.displayName = 'Switch';\nexport default Object.assign(Switch, {\n Input: FormCheck.Input,\n Label: FormCheck.Label\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport FormGroup from './FormGroup';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FloatingLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n controlId,\n label,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsxs(FormGroup, {\n ref: ref,\n className: classNames(className, bsPrefix),\n controlId: controlId,\n ...props,\n children: [children, /*#__PURE__*/_jsx(\"label\", {\n htmlFor: controlId,\n children: label\n })]\n });\n});\nFloatingLabel.displayName = 'FloatingLabel';\nexport default FloatingLabel;","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport FormCheck from './FormCheck';\nimport FormControl from './FormControl';\nimport FormFloating from './FormFloating';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormRange from './FormRange';\nimport FormSelect from './FormSelect';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport FloatingLabel from './FloatingLabel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * The Form `ref` will be forwarded to the underlying element,\n * which means, unless it's rendered `as` a composite component,\n * it will be a DOM node, when resolved.\n *\n * @type {ReactRef}\n * @alias ref\n */\n _ref: PropTypes.any,\n /**\n * Mark a form as having been validated. Setting it to `true` will\n * toggle any validation styles on the forms elements.\n */\n validated: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Form = /*#__PURE__*/React.forwardRef(({\n className,\n validated,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'form',\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, validated && 'was-validated')\n}));\nForm.displayName = 'Form';\nForm.propTypes = propTypes;\nexport default Object.assign(Form, {\n Group: FormGroup,\n Control: FormControl,\n Floating: FormFloating,\n Check: FormCheck,\n Switch,\n Label: FormLabel,\n Text: FormText,\n Range: FormRange,\n Select: FormSelect,\n FloatingLabel\n});","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import * as React from 'react';\nconst TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","const _excluded = [\"as\", \"active\", \"eventKey\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport TabContext from './TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useNavItem({\n key,\n onClick,\n active,\n id,\n role,\n disabled\n}) {\n const parentOnSelect = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const tabContext = useContext(TabContext);\n let isActive = active;\n const props = {\n role\n };\n if (navContext) {\n if (!role && navContext.role === 'tablist') props.role = 'tab';\n const contextControllerId = navContext.getControllerId(key != null ? key : null);\n const contextControlledId = navContext.getControlledId(key != null ? key : null);\n\n // @ts-ignore\n props[dataAttr('event-key')] = key;\n props.id = contextControllerId || id;\n isActive = active == null && key != null ? navContext.activeKey === key : active;\n\n /**\n * Simplified scenario for `mountOnEnter`.\n *\n * While it would make sense to keep 'aria-controls' for tabs that have been mounted at least\n * once, it would also complicate the code quite a bit, for very little gain.\n * The following implementation is probably good enough.\n *\n * @see https://github.com/react-restart/ui/pull/40#issuecomment-1009971561\n */\n if (isActive || !(tabContext != null && tabContext.unmountOnExit) && !(tabContext != null && tabContext.mountOnEnter)) props['aria-controls'] = contextControlledId;\n }\n if (props.role === 'tab') {\n props['aria-selected'] = isActive;\n if (!isActive) {\n props.tabIndex = -1;\n }\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n }\n props.onClick = useEventCallback(e => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(e);\n if (key == null) {\n return;\n }\n if (parentOnSelect && !e.isPropagationStopped()) {\n parentOnSelect(key, e);\n }\n });\n return [props, {\n isActive\n }];\n}\nconst NavItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: Component = Button,\n active,\n eventKey\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [props, meta] = useNavItem(Object.assign({\n key: makeEventKey(eventKey, options.href),\n active\n }, options));\n\n // @ts-ignore\n props[dataAttr('active')] = meta.isActive;\n return /*#__PURE__*/_jsx(Component, Object.assign({}, options, props, {\n ref: ref\n }));\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","const _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport qsa from 'dom-helpers/querySelectorAll';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\nimport { dataAttr, dataProp } from './DataKey';\nimport NavItem from './NavItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\nconst EVENT_KEY_ATTR = dataAttr('event-key');\nconst Nav = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n onSelect,\n activeKey,\n role,\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n const forceUpdate = useForceUpdate();\n const needsRefocusRef = useRef(false);\n const parentOnSelect = useContext(SelectableContext);\n const tabContext = useContext(TabContext);\n let getControlledId, getControllerId;\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n // TODO: do we need to duplicate these?\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n const listNode = useRef(null);\n const getNextActiveTab = offset => {\n const currentListNode = listNode.current;\n if (!currentListNode) return null;\n const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\n const activeChild = currentListNode.querySelector('[aria-selected=true]');\n if (!activeChild || activeChild !== document.activeElement) return null;\n const index = items.indexOf(activeChild);\n if (index === -1) return null;\n let nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n const handleSelect = (key, event) => {\n if (key == null) return;\n onSelect == null ? void 0 : onSelect(key, event);\n parentOnSelect == null ? void 0 : parentOnSelect(key, event);\n };\n const handleKeyDown = event => {\n onKeyDown == null ? void 0 : onKeyDown(event);\n if (!tabContext) {\n return;\n }\n let nextActiveChild;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveTab(-1);\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveTab(1);\n break;\n default:\n return;\n }\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset[dataProp('EventKey')] || null, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n useEffect(() => {\n if (listNode.current && needsRefocusRef.current) {\n const activeChild = listNode.current.querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\n activeChild == null ? void 0 : activeChild.focus();\n }\n needsRefocusRef.current = false;\n });\n const mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(NavContext.Provider, {\n value: {\n role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n },\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))\n })\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem\n});","import useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { cloneElement, useEffect, useRef } from 'react';\nimport { getChildRef } from './utils';\nfunction NoopTransition({\n children,\n in: inProp,\n onExited,\n mountOnEnter,\n unmountOnExit\n}) {\n const ref = useRef(null);\n const hasEnteredRef = useRef(inProp);\n const handleExited = useEventCallback(onExited);\n useEffect(() => {\n if (inProp) hasEnteredRef.current = true;else {\n handleExited(ref.current);\n }\n }, [inProp, handleExited]);\n const combinedRef = useMergedRefs(ref, getChildRef(children));\n const child = /*#__PURE__*/cloneElement(children, {\n ref: combinedRef\n });\n if (inProp) return child;\n if (unmountOnExit) {\n return null;\n }\n if (!hasEnteredRef.current && mountOnEnter) {\n return null;\n }\n return child;\n}\nexport default NoopTransition;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavItem = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavLink = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as: Component = Anchor,\n active,\n eventKey,\n disabled = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n const [navItemProps, meta] = useNavItem({\n key: makeEventKey(eventKey, props.href),\n active,\n disabled,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ...navItemProps,\n ref: ref,\n disabled: disabled,\n className: classNames(className, bsPrefix, disabled && 'disabled', meta.isActive && 'active')\n });\n});\nNavLink.displayName = 'NavLink';\nexport default NavLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardHeaderContext from './CardHeaderContext';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n as = 'div',\n bsPrefix: initialBsPrefix,\n variant,\n fill = false,\n justify = false,\n navbar,\n navbarScroll,\n className,\n activeKey,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n let navbarBsPrefix;\n let cardHeaderBsPrefix;\n let isNavbar = false;\n const navbarContext = useContext(NavbarContext);\n const cardHeaderContext = useContext(CardHeaderContext);\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardHeaderContext) {\n ({\n cardHeaderBsPrefix\n } = cardHeaderContext);\n }\n return /*#__PURE__*/_jsx(BaseNav, {\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, {\n [bsPrefix]: !isNavbar,\n [`${navbarBsPrefix}-nav`]: isNavbar,\n [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,\n [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,\n [`${bsPrefix}-${variant}`]: !!variant,\n [`${bsPrefix}-fill`]: fill,\n [`${bsPrefix}-justified`]: justify\n }),\n ...props\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem,\n Link: NavLink\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","const _excluded = [\"active\", \"eventKey\", \"mountOnEnter\", \"transition\", \"unmountOnExit\", \"role\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\"],\n _excluded2 = [\"activeKey\", \"getControlledId\", \"getControllerId\"],\n _excluded3 = [\"as\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport TabContext from './TabContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NoopTransition from './NoopTransition';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useTabPanel(_ref) {\n let {\n active,\n eventKey,\n mountOnEnter,\n transition,\n unmountOnExit,\n role = 'tabpanel',\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const context = useContext(TabContext);\n if (!context) return [Object.assign({}, props, {\n role\n }), {\n eventKey,\n isActive: active,\n mountOnEnter,\n transition,\n unmountOnExit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n }];\n const {\n activeKey,\n getControlledId,\n getControllerId\n } = context,\n rest = _objectWithoutPropertiesLoose(context, _excluded2);\n const key = makeEventKey(eventKey);\n return [Object.assign({}, props, {\n role,\n id: getControlledId(eventKey),\n 'aria-labelledby': getControllerId(eventKey)\n }), {\n eventKey,\n isActive: active == null && key != null ? makeEventKey(activeKey) === key : active,\n transition: transition || rest.transition,\n mountOnEnter: mountOnEnter != null ? mountOnEnter : rest.mountOnEnter,\n unmountOnExit: unmountOnExit != null ? unmountOnExit : rest.unmountOnExit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited\n }];\n}\nconst TabPanel = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(_ref2, ref) => {\n let {\n as: Component = 'div'\n } = _ref2,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded3);\n const [tabPanelProps, {\n isActive,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n mountOnEnter,\n unmountOnExit,\n transition: Transition = NoopTransition\n }] = useTabPanel(props);\n // We provide an empty the TabContext so `<Nav>`s in `<TabPanel>`s don't\n // conflict with the top level one.\n return /*#__PURE__*/_jsx(TabContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(Transition, {\n in: isActive,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, tabPanelProps, {\n ref: ref,\n hidden: !isActive,\n \"aria-hidden\": !isActive\n }))\n })\n })\n });\n});\nTabPanel.displayName = 'TabPanel';\nexport default TabPanel;","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport { useSSRSafeId } from './ssr';\nimport TabContext from './TabContext';\nimport SelectableContext from './SelectableContext';\nimport TabPanel from './TabPanel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Tabs = props => {\n const {\n id: userId,\n generateChildId: generateCustomChildId,\n onSelect: propsOnSelect,\n activeKey: propsActiveKey,\n defaultActiveKey,\n transition,\n mountOnEnter,\n unmountOnExit,\n children\n } = props;\n const [activeKey, onSelect] = useUncontrolledProp(propsActiveKey, defaultActiveKey, propsOnSelect);\n const id = useSSRSafeId(userId);\n const generateChildId = useMemo(() => generateCustomChildId || ((key, type) => id ? `${id}-${type}-${key}` : null), [id, generateCustomChildId]);\n const tabContext = useMemo(() => ({\n onSelect,\n activeKey,\n transition,\n mountOnEnter: mountOnEnter || false,\n unmountOnExit: unmountOnExit || false,\n getControlledId: key => generateChildId(key, 'tabpane'),\n getControllerId: key => generateChildId(key, 'tab')\n }), [onSelect, activeKey, transition, mountOnEnter, unmountOnExit, generateChildId]);\n return /*#__PURE__*/_jsx(TabContext.Provider, {\n value: tabContext,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: onSelect || null,\n children: children\n })\n });\n};\nTabs.Panel = TabPanel;\nexport default Tabs;","import NoopTransition from '@restart/ui/NoopTransition';\nimport Fade from './Fade';\nexport default function getTabTransitionComponent(transition) {\n if (typeof transition === 'boolean') {\n return transition ? Fade : NoopTransition;\n }\n return transition;\n}","import Tabs from '@restart/ui/Tabs';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabContainer = ({\n transition,\n ...props\n}) => /*#__PURE__*/_jsx(Tabs, {\n ...props,\n transition: getTabTransitionComponent(transition)\n});\nTabContainer.displayName = 'TabContainer';\nexport default TabContainer;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabContent = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'tab-content');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nTabContent.displayName = 'TabContent';\nexport default TabContent;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SelectableContext from '@restart/ui/SelectableContext';\nimport TabContext from '@restart/ui/TabContext';\nimport { useTabPanel } from '@restart/ui/TabPanel';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Fade from './Fade';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabPane = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n transition,\n ...props\n}, ref) => {\n const [{\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...rest\n }, {\n isActive,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n mountOnEnter,\n unmountOnExit,\n transition: Transition = Fade\n }] = useTabPanel({\n ...props,\n transition: getTabTransitionComponent(transition)\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'tab-pane');\n\n // We provide an empty the TabContext so `<Nav>`s in `<TabPanel>`s don't\n // conflict with the top level one.\n return /*#__PURE__*/_jsx(TabContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(Transition, {\n in: isActive,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n children: /*#__PURE__*/_jsx(Component, {\n ...rest,\n ref: ref,\n className: classNames(className, prefix, isActive && 'active')\n })\n })\n })\n });\n});\nTabPane.displayName = 'TabPane';\nexport default TabPane;","import PropTypes from 'prop-types';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nconst propTypes = {\n eventKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * Content for the tab title.\n */\n title: PropTypes.node.isRequired,\n /**\n * The disabled state of the tab.\n */\n disabled: PropTypes.bool,\n /**\n * Class to pass to the underlying nav link.\n */\n tabClassName: PropTypes.string,\n /**\n * Object containing attributes to pass to underlying nav link.\n */\n tabAttrs: PropTypes.object\n};\nconst Tab = () => {\n throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly');\n};\nTab.propTypes = propTypes;\nexport default Object.assign(Tab, {\n Container: TabContainer,\n Content: TabContent,\n Pane: TabPane\n});","import * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseTabs from '@restart/ui/Tabs';\nimport Nav from './Nav';\nimport NavLink from './NavLink';\nimport NavItem from './NavItem';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nimport { forEach, map } from './ElementChildren';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getDefaultActiveKey(children) {\n let defaultActiveKey;\n forEach(children, child => {\n if (defaultActiveKey == null) {\n defaultActiveKey = child.props.eventKey;\n }\n });\n return defaultActiveKey;\n}\nfunction renderTab(child) {\n const {\n title,\n eventKey,\n disabled,\n tabClassName,\n tabAttrs,\n id\n } = child.props;\n if (title == null) {\n return null;\n }\n return /*#__PURE__*/_jsx(NavItem, {\n as: \"li\",\n role: \"presentation\",\n children: /*#__PURE__*/_jsx(NavLink, {\n as: \"button\",\n type: \"button\",\n eventKey: eventKey,\n disabled: disabled,\n id: id,\n className: tabClassName,\n ...tabAttrs,\n children: title\n })\n });\n}\nconst Tabs = props => {\n const {\n id,\n onSelect,\n transition,\n mountOnEnter = false,\n unmountOnExit = false,\n variant = 'tabs',\n children,\n activeKey = getDefaultActiveKey(children),\n ...controlledProps\n } = useUncontrolled(props, {\n activeKey: 'onSelect'\n });\n return /*#__PURE__*/_jsxs(BaseTabs, {\n id: id,\n activeKey: activeKey,\n onSelect: onSelect,\n transition: getTabTransitionComponent(transition),\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n children: [/*#__PURE__*/_jsx(Nav, {\n id: id,\n ...controlledProps,\n role: \"tablist\",\n as: \"ul\",\n variant: variant,\n children: map(children, renderTab)\n }), /*#__PURE__*/_jsx(TabContent, {\n children: map(children, child => {\n const childProps = {\n ...child.props\n };\n delete childProps.title;\n delete childProps.disabled;\n delete childProps.tabClassName;\n delete childProps.tabAttrs;\n return /*#__PURE__*/_jsx(TabPane, {\n ...childProps\n });\n })\n })]\n });\n};\nTabs.displayName = 'Tabs';\nexport default Tabs;","import React, { useEffect, useState } from 'react';\n\ninterface GraphicsImageProps {\n src?: string;\n alt: string;\n fallback: string;\n style?: React.CSSProperties;\n className?: string;\n size?: number;\n onLoadError?: () => void;\n onLoadSuccess?: () => void;\n}\n\n/**\n * Component for rendering graphics images with fallback support\n * Handles image loading failures gracefully and provides visual feedback\n */\nconst GraphicsImage: React.FC<GraphicsImageProps> = ({\n src,\n alt,\n fallback,\n style,\n className,\n size = 20,\n onLoadError,\n onLoadSuccess\n}) => {\n const [imageError, setImageError] = useState(false);\n const [imageLoading, setImageLoading] = useState(!!src);\n\n // Reset loading and error states when src changes\n useEffect(() => {\n console.log(`[GraphicsImage] src changed to: ${src}`, {\n hasSrc: !!src,\n willShowLoading: !!src,\n previousError: imageError,\n previousLoading: imageLoading\n });\n setImageError(false);\n setImageLoading(!!src);\n }, [src]);\n\n const handleImageError = () => {\n console.warn(`[GraphicsImage] Failed to load image: ${src}`);\n setImageError(true);\n setImageLoading(false);\n onLoadError?.();\n };\n\n const handleImageLoad = () => {\n console.log(`[GraphicsImage] Successfully loaded image: ${src}`);\n setImageLoading(false);\n onLoadSuccess?.();\n };\n\n // Log current state for debugging\n console.log(`[GraphicsImage] Render state:`, {\n src,\n imageError,\n imageLoading,\n willShowFallback: !src || imageError,\n willShowLoading: imageLoading,\n willShowImage: src && !imageError && !imageLoading\n });\n\n // If no src or image failed to load, show fallback\n if (!src || imageError) {\n console.log(`[GraphicsImage] Showing fallback for src: ${src}, error: ${imageError}`);\n return (\n <span \n style={{ \n fontSize: `${size}px`, \n ...style \n }} \n className={className}\n title={imageError ? `Failed to load: ${src}` : 'No image URL provided'}\n >\n {fallback}\n </span>\n );\n }\n\n // Show loading state\n if (imageLoading) {\n console.log(`[GraphicsImage] Showing loading state for src: ${src}`);\n return (\n <span \n style={{ \n fontSize: `${size}px`, \n opacity: 0.5,\n ...style \n }} \n className={className}\n title=\"Loading image...\"\n >\n ⏳\n </span>\n );\n }\n\n // Show actual image\n console.log(`[GraphicsImage] Rendering img element for src: ${src}`);\n return (\n <img\n src={src}\n alt={alt}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n objectFit: 'contain',\n ...style\n }}\n className={className}\n onError={handleImageError}\n onLoad={handleImageLoad}\n title={`Image: ${src}`}\n />\n );\n};\n\nexport default GraphicsImage;\n","import type { MazeConfig, ValidationResult } from './types';\n\n/**\n * Validates a maze configuration for door-key requirements and target string completeness\n */\nexport const validateMaze = (config: MazeConfig): ValidationResult => {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Validate door-key requirements\n const doorKeyResult = validateDoorKeyRequirement(config);\n errors.push(...doorKeyResult.errors);\n warnings.push(...doorKeyResult.warnings);\n\n // Validate target string if provided\n if (config.targetString) {\n const targetResult = validateTargetString(config);\n errors.push(...targetResult.errors);\n warnings.push(...targetResult.warnings);\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n};\n\n/**\n * Validates that doors have corresponding keys\n */\nexport const validateDoorKeyRequirement = (config: MazeConfig): ValidationResult => {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n const hasDoors = config.doors.length > 0;\n const hasKeys = config.keys.length > 0;\n\n if (hasDoors && !hasKeys) {\n errors.push('Maze has doors but no keys. Doors cannot be passed without keys.');\n }\n\n if (hasKeys && !hasDoors) {\n warnings.push('Maze has keys but no doors. Keys are not needed if there are no doors.');\n }\n\n if (hasDoors && hasKeys && config.keys.length < config.doors.length) {\n warnings.push(`Maze has ${config.doors.length} doors but only ${config.keys.length} keys. Some doors may be unreachable.`);\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n};\n\n/**\n * Validates that all letters in the target string are present in the maze\n */\nexport const validateTargetString = (config: MazeConfig): ValidationResult => {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (!config.targetString) {\n return { isValid: true, errors: [], warnings: [] };\n }\n\n const targetLetters = config.targetString.toUpperCase().split('').filter(char => /[A-Z]/.test(char));\n const mazeLetters = config.letters.map(l => l.letter.toUpperCase());\n\n // Count occurrences of each letter\n const targetCounts: Record<string, number> = {};\n const mazeCounts: Record<string, number> = {};\n\n targetLetters.forEach(letter => {\n targetCounts[letter] = (targetCounts[letter] || 0) + 1;\n });\n\n mazeLetters.forEach(letter => {\n mazeCounts[letter] = (mazeCounts[letter] || 0) + 1;\n });\n\n // Check for missing letters\n const missingLetters: string[] = [];\n Object.entries(targetCounts).forEach(([letter, count]) => {\n const mazeCount = mazeCounts[letter] || 0;\n if (mazeCount < count) {\n missingLetters.push(`${letter} (need ${count}, have ${mazeCount})`);\n }\n });\n\n if (missingLetters.length > 0) {\n errors.push(`Target string \"${config.targetString}\" requires letters that are missing from the maze: ${missingLetters.join(', ')}`);\n }\n\n // Check for extra letters\n const extraLetters = Object.keys(mazeCounts).filter(letter => !targetCounts[letter]);\n if (extraLetters.length > 0) {\n warnings.push(`Maze contains letters not needed for target string: ${extraLetters.join(', ')}`);\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n};\n\n/**\n * Checks if a position is a door that can be passed (has key in inventory)\n */\nexport const canPassDoor = (position: { x: number; y: number }, config: MazeConfig, inventory: string[]): boolean => {\n const isDoor = config.doors.some(door => door.x === position.x && door.y === position.y);\n if (!isDoor) return true; // Not a door, can pass\n \n const hasKey = inventory.includes('KEY');\n return hasKey;\n};\n\n/**\n * Checks if a position has a key that can be collected\n */\nexport const hasKeyAt = (position: { x: number; y: number }, config: MazeConfig): boolean => {\n return config.keys.some(key => key.x === position.x && key.y === position.y);\n};\n\n/**\n * Checks if a position has a door\n */\nexport const hasDoorAt = (position: { x: number; y: number }, config: MazeConfig): boolean => {\n return config.doors.some(door => door.x === position.x && door.y === position.y);\n};\n","import React, { useState } from 'react';\nimport { Alert, Button, Card, Col, Form, Row } from 'react-bootstrap';\nimport type { GraphicsConfig, MazeConfig } from './types';\nimport GraphicsImage from './GraphicsImage';\nimport { validateMaze } from './validation';\n\ninterface EditableMazeGridProps {\n config: MazeConfig;\n onConfigChange: (config: MazeConfig) => void;\n graphicsConfig: GraphicsConfig;\n className?: string;\n}\n\nconst EditableMazeGrid: React.FC<EditableMazeGridProps> = ({ \n config, \n onConfigChange, \n graphicsConfig,\n className \n}) => {\n const [selectedTool, setSelectedTool] = useState<'empty' | 'wall' | 'start' | 'finish' | 'coin' | 'letter' | 'key' | 'door'>('wall');\n const [isDrawing, setIsDrawing] = useState(false);\n const [selectedLetter, setSelectedLetter] = useState<string>('A');\n const [targetString, setTargetString] = useState<string>(config.targetString || '');\n\n // Get graphics configuration for tool labels\n const blocksConfig = graphicsConfig.blocks;\n \n const toolOptions = [\n { \n value: 'wall', \n label: 'Wall',\n icon: (\n <GraphicsImage\n src={blocksConfig?.wall?.imageUrl}\n alt=\"Wall\"\n fallback={blocksConfig?.wall?.character || '🧱'}\n size={16}\n />\n )\n },\n { value: 'empty', label: 'Clear', icon: '⬜' },\n { value: 'start', label: 'Start', icon: '🚀' },\n { \n value: 'finish', \n label: 'Finish',\n icon: (\n <GraphicsImage\n src={blocksConfig?.finish?.imageUrl}\n alt=\"Finish\"\n fallback={blocksConfig?.finish?.character || '🎯'}\n size={16}\n />\n )\n },\n { \n value: 'coin', \n label: 'Coin',\n icon: (\n <GraphicsImage\n src={blocksConfig?.coin?.imageUrl}\n alt=\"Coin\"\n fallback={blocksConfig?.coin?.character || '🪙'}\n size={16}\n />\n )\n },\n { value: 'letter', label: 'Letter', icon: '📝' },\n { \n value: 'key', \n label: 'Key',\n icon: (\n <GraphicsImage\n src={blocksConfig?.key?.imageUrl}\n alt=\"Key\"\n fallback={blocksConfig?.key?.character || '🗝️'}\n size={16}\n />\n )\n },\n { \n value: 'door', \n label: 'Door',\n icon: (\n <GraphicsImage\n src={blocksConfig?.door?.imageUrl}\n alt=\"Door\"\n fallback={blocksConfig?.door?.character || '🚪'}\n size={16}\n />\n )\n }\n ];\n\n const handleCellClick = (x: number, y: number) => {\n const newConfig = { ...config };\n \n switch (selectedTool) {\n case 'start': {\n newConfig.spiderStart = { x, y };\n break;\n }\n case 'finish': {\n newConfig.finishPosition = { x, y };\n break;\n }\n case 'wall': {\n const wallIndex = newConfig.walls.findIndex(wall => wall.x === x && wall.y === y);\n if (wallIndex === -1) {\n newConfig.walls.push({ x, y });\n }\n break;\n }\n case 'coin': {\n const coinIndex = newConfig.coins.findIndex(coin => coin.x === x && coin.y === y);\n if (coinIndex === -1) {\n newConfig.coins.push({ x, y });\n }\n break;\n }\n case 'letter': {\n const letterIndex = newConfig.letters.findIndex(letter => letter.position.x === x && letter.position.y === y);\n if (letterIndex === -1) {\n newConfig.letters.push({ position: { x, y }, letter: selectedLetter });\n } else {\n // Update existing letter\n newConfig.letters[letterIndex].letter = selectedLetter;\n }\n break;\n }\n case 'key': {\n const keyIndex = newConfig.keys.findIndex(key => key.x === x && key.y === y);\n if (keyIndex === -1) {\n newConfig.keys.push({ x, y });\n }\n break;\n }\n case 'door': {\n const doorIndex = newConfig.doors.findIndex(door => door.x === x && door.y === y);\n if (doorIndex === -1) {\n newConfig.doors.push({ x, y });\n }\n break;\n }\n case 'empty': {\n newConfig.walls = newConfig.walls.filter(wall => !(wall.x === x && wall.y === y));\n newConfig.coins = newConfig.coins.filter(coin => !(coin.x === x && coin.y === y));\n newConfig.letters = newConfig.letters.filter(letter => !(letter.position.x === x && letter.position.y === y));\n newConfig.keys = newConfig.keys.filter(key => !(key.x === x && key.y === y));\n newConfig.doors = newConfig.doors.filter(door => !(door.x === x && door.y === y));\n break;\n }\n }\n \n onConfigChange(newConfig);\n };\n\n const handleCellMouseEnter = (x: number, y: number) => {\n if (isDrawing && selectedTool === 'wall') {\n handleCellClick(x, y);\n }\n };\n\n const isWall = (x: number, y: number) => {\n return config.walls.some(wall => wall.x === x && wall.y === y);\n };\n\n const isStart = (x: number, y: number) => {\n return config.spiderStart.x === x && config.spiderStart.y === y;\n };\n\n const isFinish = (x: number, y: number) => {\n return config.finishPosition.x === x && config.finishPosition.y === y;\n };\n\n const isCoin = (x: number, y: number) => {\n return config.coins.some(coin => coin.x === x && coin.y === y);\n };\n\n const isLetter = (x: number, y: number) => {\n return config.letters.some(letter => letter.position.x === x && letter.position.y === y);\n };\n\n const isKey = (x: number, y: number) => {\n return config.keys.some(key => key.x === x && key.y === y);\n };\n\n const isDoor = (x: number, y: number) => {\n return config.doors.some(door => door.x === x && door.y === y);\n };\n\n const getLetterAt = (x: number, y: number) => {\n const letter = config.letters.find(letter => letter.position.x === x && letter.position.y === y);\n return letter ? letter.letter : '';\n };\n\n const getCellType = (x: number, y: number): 'empty' | 'wall' | 'start' | 'finish' | 'coin' | 'letter' | 'key' | 'door' => {\n if (isStart(x, y)) return 'start';\n if (isFinish(x, y)) return 'finish';\n if (isWall(x, y)) return 'wall';\n if (isCoin(x, y)) return 'coin';\n if (isLetter(x, y)) return 'letter';\n if (isKey(x, y)) return 'key';\n if (isDoor(x, y)) return 'door';\n return 'empty';\n };\n\n const regenerateMaze = () => {\n const newConfig: MazeConfig = {\n width: config.width,\n height: config.height,\n spiderStart: { x: 1, y: 1 },\n finishPosition: { x: config.width - 2, y: config.height - 2 },\n walls: [],\n coins: [],\n letters: [],\n keys: [],\n doors: [],\n targetString: config.targetString\n };\n\n // Generate random walls (20% of cells)\n const totalCells = config.width * config.height;\n const wallCount = Math.floor(totalCells * 0.2);\n \n for (let i = 0; i < wallCount; i++) {\n const x = Math.floor(Math.random() * config.width);\n const y = Math.floor(Math.random() * config.height);\n \n // Don't place walls on start or finish\n if ((x === newConfig.spiderStart.x && y === newConfig.spiderStart.y) ||\n (x === newConfig.finishPosition.x && y === newConfig.finishPosition.y)) {\n continue;\n }\n \n newConfig.walls.push({ x, y });\n }\n \n onConfigChange(newConfig);\n };\n\n const clearMaze = () => {\n const newConfig: MazeConfig = {\n ...config,\n walls: [],\n coins: [],\n letters: [],\n keys: [],\n doors: []\n };\n onConfigChange(newConfig);\n };\n\n const handleTargetStringChange = (value: string) => {\n setTargetString(value);\n const newConfig = { ...config, targetString: value || undefined };\n onConfigChange(newConfig);\n };\n\n // Validate the current maze configuration\n const validation = validateMaze(config);\n\n return (\n <Card className={className}>\n <Card.Header className=\"bg-light border-0\">\n <Row className=\"align-items-center\">\n <Col xs=\"auto\">\n <div className=\"btn-group\" role=\"group\">\n {toolOptions.map(option => (\n <Button\n key={option.value}\n variant={selectedTool === option.value ? 'primary' : 'outline-secondary'}\n size=\"sm\"\n onClick={() => setSelectedTool(option.value as 'empty' | 'wall' | 'start' | 'finish' | 'coin' | 'letter' | 'key' | 'door')}\n title={option.label}\n style={{ \n minWidth: '40px',\n height: '32px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '4px'\n }}\n >\n {typeof option.icon === 'string' ? (\n <span style={{ fontSize: '16px' }}>{option.icon}</span>\n ) : (\n option.icon\n )}\n </Button>\n ))}\n </div>\n </Col>\n {selectedTool === 'letter' && (\n <Col xs=\"auto\">\n <Form.Select\n size=\"sm\"\n value={selectedLetter}\n onChange={(e) => setSelectedLetter(e.target.value)}\n style={{ minWidth: '60px' }}\n >\n {Array.from({ length: 26 }, (_, i) => String.fromCharCode(65 + i)).map(letter => (\n <option key={letter} value={letter}>\n {letter}\n </option>\n ))}\n </Form.Select>\n </Col>\n )}\n <Col xs=\"auto\">\n <Form.Control\n size=\"sm\"\n type=\"text\"\n placeholder=\"Target string (optional)\"\n value={targetString}\n onChange={(e) => handleTargetStringChange(e.target.value)}\n style={{ minWidth: '150px' }}\n />\n </Col>\n <Col xs=\"auto\">\n <Button variant=\"outline-secondary\" size=\"sm\" onClick={regenerateMaze} className=\"me-2\">\n Regenerate\n </Button>\n <Button variant=\"outline-secondary\" size=\"sm\" onClick={clearMaze}>\n Clear All\n </Button>\n </Col>\n </Row>\n </Card.Header>\n <Card.Body>\n {/* Validation Alerts */}\n {validation.errors.length > 0 && (\n <Alert variant=\"danger\" className=\"mb-3\">\n <strong>Validation Errors:</strong>\n <ul className=\"mb-0\">\n {validation.errors.map((error, index) => (\n <li key={index}>{error}</li>\n ))}\n </ul>\n </Alert>\n )}\n {validation.warnings.length > 0 && (\n <Alert variant=\"warning\" className=\"mb-3\">\n <strong>Warnings:</strong>\n <ul className=\"mb-0\">\n {validation.warnings.map((warning, index) => (\n <li key={index}>{warning}</li>\n ))}\n </ul>\n </Alert>\n )}\n \n <div \n className=\"maze-grid\"\n style={{ \n display: 'grid', \n gridTemplateColumns: `repeat(${config.width}, 30px)`,\n gap: '1px',\n backgroundColor: graphicsConfig.maze?.grid?.backgroundColor || '#ccc',\n border: `${graphicsConfig.maze?.grid?.borderWidth || 2}px solid ${graphicsConfig.maze?.grid?.borderColor || '#333'}`,\n borderRadius: '8px',\n padding: '1px',\n ...graphicsConfig.maze?.grid?.customStyles\n }}\n onMouseDown={() => setIsDrawing(true)}\n onMouseUp={() => setIsDrawing(false)}\n onMouseLeave={() => setIsDrawing(false)}\n >\n {Array.from({ length: config.height }, (_, y) =>\n Array.from({ length: config.width }, (_, x) => {\n const cellType = getCellType(x, y);\n return (\n <div\n key={`${x}-${y}`}\n className={`maze-cell ${cellType}`}\n style={{\n width: '30px',\n height: '30px',\n backgroundColor: \n cellType === 'wall' ? (blocksConfig?.wall?.backgroundColor || '#333') :\n cellType === 'start' ? '#28a745' :\n cellType === 'finish' ? (blocksConfig?.finish?.backgroundColor || '#dc3545') :\n cellType === 'coin' ? (blocksConfig?.empty?.backgroundColor || '#fff') :\n cellType === 'key' ? (blocksConfig?.key?.backgroundColor || '#fff') :\n cellType === 'door' ? (blocksConfig?.door?.backgroundColor || '#8B4513') :\n (blocksConfig?.empty?.backgroundColor || '#fff'),\n border: `${graphicsConfig.maze?.cell?.borderWidth || 1}px solid ${graphicsConfig.maze?.cell?.borderColor || '#ccc'}`,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n color: cellType === 'start' || cellType === 'finish' ? 'white' : 'black',\n position: 'relative',\n ...(cellType === 'wall' ? blocksConfig?.wall?.customStyles : \n cellType === 'finish' ? blocksConfig?.finish?.customStyles :\n cellType === 'coin' ? blocksConfig?.coin?.customStyles :\n cellType === 'empty' ? blocksConfig?.empty?.customStyles : {}),\n ...graphicsConfig.maze?.cell?.customStyles\n }}\n onClick={() => handleCellClick(x, y)}\n onMouseEnter={() => handleCellMouseEnter(x, y)}\n title={`${cellType} at (${x}, ${y})`}\n >\n {cellType === 'start' && 'S'}\n {cellType === 'wall' && (\n <GraphicsImage\n src={blocksConfig?.wall?.imageUrl}\n alt=\"Wall\"\n fallback={blocksConfig?.wall?.character || '🧱'}\n size={20}\n />\n )}\n {cellType === 'finish' && (\n <GraphicsImage\n src={blocksConfig?.finish?.imageUrl}\n alt=\"Finish\"\n fallback={blocksConfig?.finish?.character || 'F'}\n size={20}\n />\n )}\n {cellType === 'coin' && (\n <GraphicsImage\n src={blocksConfig?.coin?.imageUrl}\n alt=\"Coin\"\n fallback={blocksConfig?.coin?.character || '🪙'}\n size={16}\n />\n )}\n {cellType === 'letter' && getLetterAt(x, y)}\n {cellType === 'key' && (\n <GraphicsImage\n src={blocksConfig?.key?.imageUrl}\n alt=\"Key\"\n fallback={blocksConfig?.key?.character || '🗝️'}\n size={16}\n />\n )}\n {cellType === 'door' && (\n <GraphicsImage\n src={blocksConfig?.door?.imageUrl}\n alt=\"Door\"\n fallback={blocksConfig?.door?.character || '🚪'}\n size={20}\n />\n )}\n </div>\n );\n })\n )}\n </div>\n </Card.Body>\n </Card>\n );\n};\n\nexport default EditableMazeGrid;\n\n","import { Component } from 'react';\nimport type { GraphicsConfig, MazeCell, MazeConfig } from './types';\n\ninterface MazeGridProps {\n config: MazeConfig;\n cellSize: number;\n graphicsConfig: GraphicsConfig;\n}\n\nexport default class MazeGrid extends Component<MazeGridProps> {\n private createMazeGrid(): MazeCell[][] {\n const { width, height, walls, finishPosition, coins, letters, keys, doors } = this.props.config;\n const grid: MazeCell[][] = [];\n \n for (let y = 0; y < height; y++) {\n grid[y] = [];\n for (let x = 0; x < width; x++) {\n const isWall = walls.some(wall => wall.x === x && wall.y === y);\n const isFinish = finishPosition.x === x && finishPosition.y === y;\n const hasCoin = coins.some(coin => coin.x === x && coin.y === y);\n const hasKey = keys.some(key => key.x === x && key.y === y);\n const hasDoor = doors.some(door => door.x === x && door.y === y);\n const letter = letters.find(l => l.position.x === x && l.position.y === y);\n \n grid[y][x] = {\n isWall,\n isFinish,\n isSpider: false,\n isPath: !isWall,\n hasCoin,\n hasKey,\n hasDoor,\n letter: letter ? letter.letter : undefined\n };\n }\n }\n \n return grid;\n }\n \n render() {\n const { config, cellSize, graphicsConfig } = this.props;\n const { width, height } = config;\n const grid = this.createMazeGrid();\n \n // Get graphics configuration\n const mazeConfig = graphicsConfig.maze;\n const blocksConfig = graphicsConfig.blocks;\n \n // Log graphics configuration usage\n console.log('[MazeGrid] Rendering grid with graphics config:', {\n hasBlocksConfig: !!blocksConfig,\n hasMazeConfig: !!mazeConfig,\n blockTypes: blocksConfig ? Object.keys(blocksConfig) : [],\n finishImageUrl: blocksConfig?.finish?.imageUrl,\n coinImageUrl: blocksConfig?.coin?.imageUrl,\n wallImageUrl: blocksConfig?.wall?.imageUrl\n });\n \n // Grid styling\n const gridBackgroundColor = mazeConfig?.grid?.backgroundColor || '#f0f0f0';\n const gridBorderColor = mazeConfig?.grid?.borderColor || '#333';\n const gridBorderWidth = mazeConfig?.grid?.borderWidth || 2;\n \n // Cell styling\n const cellBorderColor = mazeConfig?.cell?.borderColor || '#ccc';\n const cellBorderWidth = mazeConfig?.cell?.borderWidth || 1;\n \n return (\n <div\n style={{\n position: 'relative',\n width: width * cellSize,\n height: height * cellSize,\n border: `${gridBorderWidth}px solid ${gridBorderColor}`,\n backgroundColor: gridBackgroundColor,\n ...mazeConfig?.grid?.customStyles\n }}\n >\n {grid.map((row, y) =>\n row.map((cell, x) => {\n // Determine cell styling based on type\n let cellStyle: React.CSSProperties = {\n position: 'absolute',\n left: x * cellSize,\n top: y * cellSize,\n width: cellSize,\n height: cellSize,\n border: `${cellBorderWidth}px solid ${cellBorderColor}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '12px',\n fontWeight: 'bold',\n ...mazeConfig?.cell?.customStyles\n };\n\n // Apply specific styling based on cell type\n if (cell.isWall) {\n const wallConfig = blocksConfig?.wall;\n cellStyle.backgroundColor = wallConfig?.backgroundColor || '#333';\n cellStyle = { ...cellStyle, ...wallConfig?.customStyles };\n } else if (cell.isFinish) {\n const finishConfig = blocksConfig?.finish;\n cellStyle.backgroundColor = finishConfig?.backgroundColor || '#90EE90';\n cellStyle = { ...cellStyle, ...finishConfig?.customStyles };\n } else {\n const emptyConfig = blocksConfig?.empty;\n cellStyle.backgroundColor = emptyConfig?.backgroundColor || '#f0f0f0';\n cellStyle = { ...cellStyle, ...emptyConfig?.customStyles };\n }\n\n return (\n <div key={`${x}-${y}`} style={cellStyle}>\n {cell.isFinish && (\n <div\n style={{\n width: '80%',\n height: '80%',\n backgroundColor: blocksConfig?.finish?.backgroundColor || '#32CD32',\n borderRadius: '50%',\n border: `3px solid ${blocksConfig?.finish?.borderColor || '#228B22'}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'white',\n fontSize: '14px',\n fontWeight: 'bold',\n ...blocksConfig?.finish?.customStyles\n }}\n >\n {blocksConfig?.finish?.imageUrl ? (\n <img\n src={blocksConfig.finish.imageUrl}\n alt=\"Finish\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load finish image:', blocksConfig.finish?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.finish?.character || '🎯'\n )}\n </div>\n )}\n {cell.isWall && (\n <div\n style={{\n width: '100%',\n height: '100%',\n backgroundColor: blocksConfig?.wall?.backgroundColor || '#333',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'white',\n fontSize: '12px',\n ...blocksConfig?.wall?.customStyles\n }}\n >\n {blocksConfig?.wall?.imageUrl ? (\n <img\n src={blocksConfig.wall.imageUrl}\n alt=\"Wall\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load wall image:', blocksConfig.wall?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.wall?.character || '🧱'\n )}\n </div>\n )}\n {cell.hasCoin && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '2px',\n right: '2px',\n fontSize: `${blocksConfig?.coin?.size || 16}px`,\n color: blocksConfig?.coin?.color || '#FFD700',\n zIndex: 2,\n ...blocksConfig?.coin?.customStyles\n }}\n >\n {blocksConfig?.coin?.imageUrl ? (\n <img\n src={blocksConfig.coin.imageUrl}\n alt=\"Coin\"\n style={{\n width: `${blocksConfig?.coin?.size || 16}px`,\n height: `${blocksConfig?.coin?.size || 16}px`,\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load coin image:', blocksConfig.coin?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.coin?.character || '🪙'\n )}\n </div>\n )}\n {cell.letter && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n fontSize: `${blocksConfig?.letter?.fontSize || 18}px`,\n fontFamily: blocksConfig?.letter?.fontFamily || 'Arial, sans-serif',\n fontWeight: blocksConfig?.letter?.fontWeight || 'bold',\n color: blocksConfig?.letter?.color || '#FF6B6B',\n textShadow: blocksConfig?.letter?.textShadow || '1px 1px 2px rgba(0,0,0,0.5)',\n zIndex: 2,\n ...blocksConfig?.letter?.customStyles\n }}\n >\n {cell.letter}\n </div>\n )}\n {cell.hasKey && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '2px',\n left: '2px',\n fontSize: `${blocksConfig?.key?.size || 16}px`,\n color: blocksConfig?.key?.color || '#FFD700',\n zIndex: 2,\n ...blocksConfig?.key?.customStyles\n }}\n >\n {blocksConfig?.key?.imageUrl ? (\n <img\n src={blocksConfig.key.imageUrl}\n alt=\"Key\"\n style={{\n width: `${blocksConfig?.key?.size || 16}px`,\n height: `${blocksConfig?.key?.size || 16}px`,\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load key image:', blocksConfig.key?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.key?.character || '🗝️'\n )}\n </div>\n )}\n {cell.hasDoor && !cell.isWall && !cell.isFinish && (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n fontSize: '20px',\n zIndex: 2,\n ...blocksConfig?.door?.customStyles\n }}\n >\n {blocksConfig?.door?.imageUrl ? (\n <img\n src={blocksConfig.door.imageUrl}\n alt=\"Door\"\n style={{\n width: '80%',\n height: '80%',\n objectFit: 'contain'\n }}\n onError={(e) => {\n console.warn('Failed to load door image:', blocksConfig.door?.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n ) : (\n blocksConfig?.door?.character || '🚪'\n )}\n </div>\n )}\n </div>\n );\n })\n )}\n </div>\n );\n }\n}\n","import { Component } from 'react';\nimport type { GraphicsConfig, Position } from './types';\n\ninterface SpiderProps {\n position: Position;\n direction: 'north' | 'south' | 'east' | 'west';\n size: number;\n graphicsConfig: GraphicsConfig;\n isExecuting?: boolean;\n}\n\nexport default class Spider extends Component<SpiderProps> {\n componentDidUpdate(prevProps: SpiderProps) {\n // Force re-render when graphics configuration changes\n if (prevProps.graphicsConfig !== this.props.graphicsConfig) {\n console.log('[Spider] Graphics configuration changed, forcing re-render');\n this.forceUpdate();\n }\n }\n\n private renderImagePlayer(\n playerConfig: any,\n position: any,\n direction: string,\n cellSize: number,\n isExecuting: boolean\n ) {\n // Calculate rotation based on direction\n const rotationMap = {\n north: 0,\n east: 90,\n south: 180,\n west: 270\n };\n\n const rotation = rotationMap[direction as keyof typeof rotationMap];\n const playerSize = cellSize * (playerConfig?.size || 0.8);\n\n return (\n <div\n style={{\n position: 'absolute',\n left: position.x * cellSize + cellSize / 2,\n top: position.y * cellSize + cellSize / 2,\n width: playerSize,\n height: playerSize,\n transform: `translate(-50%, -50%) rotate(${rotation}deg)`,\n transition: playerConfig?.transitionDuration || '0.3s ease-in-out',\n zIndex: 10,\n opacity: isExecuting ? 0.8 : 1,\n ...playerConfig?.customStyles\n }}\n >\n <img\n src={playerConfig.imageUrl}\n alt=\"Player character\"\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n backgroundColor: playerConfig?.backgroundColor || 'transparent',\n border: playerConfig?.borderColor ? `2px solid ${playerConfig.borderColor}` : 'none',\n borderRadius: '50%'\n }}\n onLoad={() => {\n console.log('[Spider] Player image loaded successfully:', playerConfig.imageUrl);\n }}\n onError={(e) => {\n // Fallback to default character if image fails to load\n console.warn('[Spider] Failed to load player image:', playerConfig.imageUrl);\n e.currentTarget.style.display = 'none';\n }}\n />\n </div>\n );\n }\n\n render() {\n const { position, direction, size, graphicsConfig, isExecuting = false } = this.props;\n const cellSize = size;\n const playerConfig = graphicsConfig.player;\n\n // Log graphics configuration usage\n console.log('[Spider] Rendering player with config:', {\n hasImageUrl: !!playerConfig?.imageUrl,\n hasCharacter: !!playerConfig?.character,\n characterType: typeof playerConfig?.character,\n imageUrl: playerConfig?.imageUrl,\n position,\n direction\n });\n\n // If a custom character component is provided, use it\n if (playerConfig?.character && typeof playerConfig.character !== 'string') {\n console.log('[Spider] Using custom character component');\n const CustomCharacter = playerConfig.character;\n return (\n <CustomCharacter\n position={position}\n direction={direction}\n size={cellSize}\n isExecuting={isExecuting}\n />\n );\n }\n\n // If an image URL is provided, use it\n if (playerConfig?.imageUrl) {\n console.log('[Spider] Using image URL for player:', playerConfig.imageUrl);\n return this.renderImagePlayer(playerConfig, position, direction, cellSize, isExecuting);\n }\n\n // Calculate rotation based on direction\n const rotationMap = {\n north: 0,\n east: 90,\n south: 180,\n west: 270\n };\n\n const rotation = rotationMap[direction];\n\n // Use configured values or defaults\n const playerSize = cellSize * (playerConfig?.size || 0.8);\n const backgroundColor = playerConfig?.backgroundColor || '#8B4513';\n const borderColor = playerConfig?.borderColor || '#654321';\n const eyeColor = playerConfig?.eyeColor || '#FF0000';\n const eyeSize = playerConfig?.eyeSize || 0.3;\n const transitionDuration = playerConfig?.transitionDuration || '0.3s ease-in-out';\n\n return (\n <div\n style={{\n position: 'absolute',\n left: position.x * cellSize + cellSize / 2,\n top: position.y * cellSize + cellSize / 2,\n width: playerSize,\n height: playerSize,\n transform: `translate(-50%, -50%) rotate(${rotation}deg)`,\n transition: transitionDuration,\n zIndex: 10,\n opacity: isExecuting ? 0.8 : 1,\n ...playerConfig?.customStyles\n }}\n >\n {/* Player body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n backgroundColor,\n borderRadius: '50%',\n border: `2px solid ${borderColor}`,\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {/* Player eyes */}\n <div\n style={{\n width: `${eyeSize * 100}%`,\n height: `${eyeSize * 100}%`,\n backgroundColor: eyeColor,\n borderRadius: '50%',\n position: 'absolute',\n left: '20%',\n top: '20%',\n boxShadow: `0 0 5px ${eyeColor}`\n }}\n />\n <div\n style={{\n width: `${eyeSize * 100}%`,\n height: `${eyeSize * 100}%`,\n backgroundColor: eyeColor,\n borderRadius: '50%',\n position: 'absolute',\n right: '20%',\n top: '20%',\n boxShadow: `0 0 5px ${eyeColor}`\n }}\n />\n </div>\n </div>\n );\n }\n}\n","import { getBlockly, getBlocklyDebugInfo } from '../../utils/blocklySetup';\n\n/**\n * Register maze blocks with Blockly\n * This function should be called after Blockly has been initialized\n */\nexport function registerMazeBlocks(): void {\n console.log('[MazeBlocks] 🧩 Starting maze blocks registration...');\n console.log('[MazeBlocks] 📊 Debug info before registration:', getBlocklyDebugInfo());\n \n try {\n const Blockly = getBlockly();\n console.log('[MazeBlocks] ✅ Blockly instance obtained:', !!Blockly);\n console.log('[MazeBlocks] 🔍 Blockly.Blocks state:', {\n hasBlocks: !!Blockly.Blocks,\n blocksType: typeof Blockly.Blocks,\n existingBlocks: Blockly.Blocks ? Object.keys(Blockly.Blocks).slice(0, 10) : 'none'\n });\n \n // Register blocks using the legacy method for compatibility\n console.log('[MazeBlocks] 📝 Registering maze_move_forward block...');\n Blockly.Blocks['maze_move_forward'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"Move Forward\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Move the spider forward one step\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_turn_left block...');\n Blockly.Blocks['maze_turn_left'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🔄 Turn Left\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Turn the spider 90 degrees to the left\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_turn_right block...');\n Blockly.Blocks['maze_turn_right'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🔄 Turn Right\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Turn the spider 90 degrees to the right\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_turn_around block...');\n Blockly.Blocks['maze_turn_around'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🔄 Turn Around\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(92);\n this.setTooltip(\"Turn the spider 180 degrees around\");\n this.setHelpUrl(\"\");\n }\n };\n\n // Control blocks\n console.log('[MazeBlocks] 📝 Registering controls_repeat block...');\n Blockly.Blocks['controls_repeat'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"Repeat\")\n .appendField(new Blockly.FieldNumber(3, 1, 20), \"TIMES\")\n .appendField(\"times\");\n this.appendStatementInput(\"DO\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"Repeat the blocks inside a specified number of times\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering controls_if block...');\n Blockly.Blocks['controls_if'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"if\");\n this.appendValueInput(\"IF0\")\n .setCheck(\"Boolean\");\n this.appendDummyInput()\n .appendField(\"then\");\n this.appendStatementInput(\"DO0\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"If a condition is true, then do some statements\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering controls_ifelse block...');\n Blockly.Blocks['controls_ifelse'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"if\");\n this.appendValueInput(\"IF0\")\n .setCheck(\"Boolean\");\n this.appendDummyInput()\n .appendField(\"then\");\n this.appendStatementInput(\"DO0\")\n .setCheck(null);\n this.appendDummyInput()\n .appendField(\"else\");\n this.appendStatementInput(\"ELSE0\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"If a condition is true, then do some statements, otherwise do other statements\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering controls_while block...');\n Blockly.Blocks['controls_while'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"while\");\n this.appendValueInput(\"IF0\")\n .setCheck(\"Boolean\");\n this.appendDummyInput()\n .appendField(\"do\");\n this.appendStatementInput(\"DO0\")\n .setCheck(null);\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(120);\n this.setTooltip(\"Repeat the blocks inside while a condition is true\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering logic_compare block...');\n Blockly.Blocks['logic_compare'] = {\n init() {\n this.appendValueInput(\"A\")\n .setCheck(\"Number\");\n this.appendDummyInput()\n .appendField(new Blockly.FieldDropdown([\n [\"=\", \"EQ\"],\n [\"≠\", \"NEQ\"],\n [\"<\", \"LT\"],\n [\"≤\", \"LTE\"],\n [\">\", \"GT\"],\n [\"≥\", \"GTE\"]\n ]), \"OP\");\n this.appendValueInput(\"B\")\n .setCheck(\"Number\");\n this.setInputsInline(true);\n this.setOutput(true, \"Boolean\");\n this.setColour(210);\n this.setTooltip(\"Compare two numbers and return true or false\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering math_number block...');\n Blockly.Blocks['math_number'] = {\n init() {\n this.appendDummyInput()\n .appendField(new Blockly.FieldNumber(0), \"NUM\");\n this.setOutput(true, \"Number\");\n this.setColour(230);\n this.setTooltip(\"A number\");\n this.setHelpUrl(\"\");\n }\n };\n\n // Coin-related blocks\n console.log('[MazeBlocks] 📝 Registering maze_collect_coin block...');\n Blockly.Blocks['maze_collect_coin'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🪙 Collect Coin\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(200);\n this.setTooltip(\"Collect a coin if there is one at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_coin_count block...');\n Blockly.Blocks['maze_coin_count'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🪙 Coins Collected\");\n this.setOutput(true, \"Number\");\n this.setColour(200);\n this.setTooltip(\"Returns the number of coins collected so far\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_collect_letter block...');\n Blockly.Blocks['maze_collect_letter'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"📝 Collect Letter\");\n this.setPreviousStatement(true, null);\n this.setNextStatement(true, null);\n this.setColour(160);\n this.setTooltip(\"Collect a letter if there is one at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_has_coin block...');\n Blockly.Blocks['maze_has_coin'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"🪙 Has Coin?\");\n this.setOutput(true, \"Boolean\");\n this.setColour(200);\n this.setTooltip(\"Returns true if there is a coin at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] 📝 Registering maze_has_letter block...');\n Blockly.Blocks['maze_has_letter'] = {\n init() {\n this.appendDummyInput()\n .appendField(\"📝 Has Letter?\");\n this.setOutput(true, \"Boolean\");\n this.setColour(160);\n this.setTooltip(\"Returns true if there is a letter at the current position\");\n this.setHelpUrl(\"\");\n }\n };\n\n console.log('[MazeBlocks] ✅ All maze blocks registered successfully');\n console.log('[MazeBlocks] 📊 Final blocks state:', {\n hasBlocks: !!Blockly.Blocks,\n registeredBlocks: Object.keys(Blockly.Blocks).filter(key => key.startsWith('maze_'))\n });\n } catch (error) {\n console.error('[MazeBlocks] ❌ Failed to register maze blocks:', error);\n console.error('[MazeBlocks] 📋 Error details:', {\n message: (error as Error).message,\n stack: (error as Error).stack,\n name: (error as Error).name\n });\n console.log('[MazeBlocks] 📊 Debug info at error:', getBlocklyDebugInfo());\n throw error;\n }\n}\n","import React, { Component } from \"react\";\nimport { getActiveWorkspaceCount, getBlockly, getJavaScriptGenerator, initializeBlockly, isElementInjected, markElementAsInjected, registerWorkspace, unmarkElementAsInjected, unregisterWorkspace } from '../../utils/blocklySetup';\nimport type { MazeBlocklyConfig, MovementCommand } from './types';\nimport { registerMazeBlocks } from './blocks'; // Import custom maze blocks registration function\n\n// Import Blockly for type definitions\n// declare const Blockly: any;\n\n// Blockly.setLocale(sk);\n\ninterface MazeBlocklyContainerProps {\n onCodeChange?: (code: string) => void;\n onWorkspaceChange?: (workspace: any) => void;\n onExecuteCode?: (commands: MovementCommand[]) => void;\n className?: string;\n style?: React.CSSProperties;\n config: MazeBlocklyConfig;\n}\n\ninterface MazeBlocklyContainerState {\n workspace: any | null;\n isInitialized: boolean;\n}\n\nexport default class MazeBlocklyContainer extends Component<\n MazeBlocklyContainerProps,\n MazeBlocklyContainerState\n> {\n constructor(props: MazeBlocklyContainerProps) {\n super(props);\n this.state = { workspace: null, isInitialized: false };\n this.instanceId = `maze-blockly-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\n this.onAnyChange = this.onAnyChange.bind(this);\n }\n\n componentDidMount() {\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Component mounted, initializing Blockly...`);\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Strict Mode check - isInitialized: ${this.state.isInitialized}, workspace: ${!!this.workspace}`);\n this.initializeBlockly();\n }\n\n componentDidUpdate(prevProps: MazeBlocklyContainerProps) {\n if (prevProps.config.toolbox !== this.props.config.toolbox) {\n this.disposeWorkspace();\n this.initializeBlockly();\n }\n if (prevProps.config.initialXml !== this.props.config.initialXml && this.workspace) {\n this.loadXml(this.props.config.initialXml);\n }\n \n // Trigger resize when component updates (e.g., tab becomes visible)\n setTimeout(() => {\n if (this.workspace && this.state.isInitialized) {\n this.workspace.resize();\n }\n }, 50);\n }\n\n componentWillUnmount() {\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Component unmounting, disposing workspace...`);\n this.disposeWorkspace();\n }\n\n // Static flag to prevent double initialization in Strict Mode\n private static isInitializing = false;\n\n private readonly instanceId: string;\n private workspace: any | null = null;\n private blocklyDivRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();\n\n private async initializeBlockly(): Promise<void> {\n if (!this.blocklyDivRef.current) {\n console.error('[MazeBlocklyContainer] Blockly div ref is not available');\n return;\n }\n\n // Prevent double initialization (including Strict Mode)\n if (MazeBlocklyContainer.isInitializing || this.workspace || this.state.isInitialized) {\n console.warn(`[MazeBlocklyContainer-${this.instanceId}] Blockly already initialized or initializing, skipping...`);\n return;\n }\n\n // Set flag to prevent concurrent initialization\n MazeBlocklyContainer.isInitializing = true;\n\n // Check if this DOM element already has Blockly injected\n const blocklyDiv = this.blocklyDivRef.current;\n if (isElementInjected(blocklyDiv) || blocklyDiv.querySelector('.injectionDiv')) {\n console.error(`[MazeBlocklyContainer-${this.instanceId}] Blockly already injected into this DOM element! Preventing double injection.`);\n MazeBlocklyContainer.isInitializing = false;\n return;\n }\n\n // Check for existing workspaces\n const activeCount = getActiveWorkspaceCount();\n if (activeCount > 0) {\n console.warn(`[MazeBlocklyContainer-${this.instanceId}] Found ${activeCount} existing workspace(s), this might cause conflicts`);\n }\n\n try {\n // Initialize Blockly properly for package usage\n await initializeBlockly();\n \n // Register maze blocks after Blockly is initialized\n registerMazeBlocks();\n \n // Register generators before creating the workspace\n this.registerMazeGenerators();\n \n const Blockly = getBlockly();\n const toolboxXml = this.props.config.toolbox;\n const toolboxDom = Blockly.utils.xml.textToDom(toolboxXml);\n\n this.workspace = Blockly.inject(this.blocklyDivRef.current, {\n toolbox: toolboxDom,\n scrollbars: true,\n trashcan: true,\n grid: { spacing: 20, length: 3, colour: \"#ccc\", snap: true },\n zoom: {\n controls: true,\n wheel: true,\n startScale: 1.0,\n maxScale: 3,\n minScale: 0.3,\n scaleSpeed: 1.2\n },\n });\n\n // Mark this element as injected to prevent double injection\n markElementAsInjected(blocklyDiv);\n\n // Load initial XML\n this.loadXml(this.props.config.initialXml);\n\n // Add change listener\n this.workspace.addChangeListener(this.onAnyChange);\n\n this.setState({ workspace: this.workspace, isInitialized: true });\n this.props.onWorkspaceChange?.(this.workspace);\n \n // Register this workspace for tracking\n registerWorkspace(this.workspace);\n \n console.log(`[MazeBlocklyContainer-${this.instanceId}] Blockly workspace initialized successfully`);\n \n // Generate initial code\n setTimeout(() => {\n this.generateCode();\n }, 100);\n \n } catch (error) {\n console.error(`[MazeBlocklyContainer-${this.instanceId}] Failed to initialize Blockly:`, error);\n } finally {\n // Clear the initialization flag\n MazeBlocklyContainer.isInitializing = false;\n }\n }\n\n private registerMazeGenerators(): void {\n try {\n const javascriptGenerator = getJavaScriptGenerator();\n \n // Method 1: Direct assignment\n (javascriptGenerator as any)['maze_move_forward'] = function() {\n return 'moveForward();\\n';\n };\n (javascriptGenerator as any)['maze_turn_left'] = function() {\n return 'turnLeft();\\n';\n };\n (javascriptGenerator as any)['maze_turn_right'] = function() {\n return 'turnRight();\\n';\n };\n (javascriptGenerator as any)['maze_turn_around'] = function() {\n return 'turnAround();\\n';\n };\n\n // Control blocks generators\n (javascriptGenerator as any)['controls_repeat'] = function(block: any) {\n const times = block.getFieldValue('TIMES') || '3';\n const branch = javascriptGenerator.statementToCode(block, 'DO');\n return `for (let i = 0; i < ${times}; i++) {\\n${branch}}\\n`;\n };\n\n (javascriptGenerator as any)['controls_if'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `if (${condition}) {\\n${branch}}\\n`;\n };\n\n (javascriptGenerator as any)['controls_ifelse'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const thenBranch = javascriptGenerator.statementToCode(block, 'DO0');\n const elseBranch = javascriptGenerator.statementToCode(block, 'ELSE0');\n return `if (${condition}) {\\n${thenBranch}} else {\\n${elseBranch}}\\n`;\n };\n\n (javascriptGenerator as any)['controls_while'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `while (${condition}) {\\n${branch}}\\n`;\n };\n\n (javascriptGenerator as any)['logic_compare'] = function(block: any) {\n const operator = block.getFieldValue('OP');\n const order = (operator === 'EQ' || operator === 'NEQ') ? javascriptGenerator.ORDER_EQUALITY : javascriptGenerator.ORDER_RELATIONAL;\n const argument0 = javascriptGenerator.valueToCode(block, 'A', order) || '0';\n const argument1 = javascriptGenerator.valueToCode(block, 'B', order) || '0';\n \n const operators = {\n 'EQ': '==',\n 'NEQ': '!=',\n 'LT': '<',\n 'LTE': '<=',\n 'GT': '>',\n 'GTE': '>='\n };\n \n const op = operators[operator as keyof typeof operators] || '==';\n return [`${argument0} ${op} ${argument1}`, order];\n };\n\n (javascriptGenerator as any)['math_number'] = function(block: any) {\n const code = block.getFieldValue('NUM');\n return [code, javascriptGenerator.ORDER_ATOMIC];\n };\n\n // Method 2: Using forBlock property\n const generator = javascriptGenerator as any;\n if (generator.forBlock) {\n generator.forBlock['maze_move_forward'] = function() {\n return 'moveForward();\\n';\n };\n generator.forBlock['maze_turn_left'] = function() {\n return 'turnLeft();\\n';\n };\n generator.forBlock['maze_turn_right'] = function() {\n return 'turnRight();\\n';\n };\n generator.forBlock['maze_turn_around'] = function() {\n return 'turnAround();\\n';\n };\n generator.forBlock['controls_repeat'] = function(block: any) {\n const times = block.getFieldValue('TIMES') || '3';\n const branch = javascriptGenerator.statementToCode(block, 'DO');\n return `for (let i = 0; i < ${times}; i++) {\\n${branch}}\\n`;\n };\n generator.forBlock['controls_if'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `if (${condition}) {\\n${branch}}\\n`;\n };\n generator.forBlock['controls_ifelse'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const thenBranch = javascriptGenerator.statementToCode(block, 'DO0');\n const elseBranch = javascriptGenerator.statementToCode(block, 'ELSE0');\n return `if (${condition}) {\\n${thenBranch}} else {\\n${elseBranch}}\\n`;\n };\n generator.forBlock['controls_while'] = function(block: any) {\n const condition = javascriptGenerator.valueToCode(block, 'IF0', javascriptGenerator.ORDER_NONE) || 'false';\n const branch = javascriptGenerator.statementToCode(block, 'DO0');\n return `while (${condition}) {\\n${branch}}\\n`;\n };\n generator.forBlock['logic_compare'] = function(block: any) {\n const operator = block.getFieldValue('OP');\n const order = (operator === 'EQ' || operator === 'NEQ') ? javascriptGenerator.ORDER_EQUALITY : javascriptGenerator.ORDER_RELATIONAL;\n const argument0 = javascriptGenerator.valueToCode(block, 'A', order) || '0';\n const argument1 = javascriptGenerator.valueToCode(block, 'B', order) || '0';\n \n const operators = {\n 'EQ': '==',\n 'NEQ': '!=',\n 'LT': '<',\n 'LTE': '<=',\n 'GT': '>',\n 'GTE': '>='\n };\n \n const op = operators[operator as keyof typeof operators] || '==';\n return [`${argument0} ${op} ${argument1}`, order];\n };\n generator.forBlock['math_number'] = function(block: any) {\n const code = block.getFieldValue('NUM');\n return [code, javascriptGenerator.ORDER_ATOMIC];\n };\n \n // Coin and letter block generators\n generator.forBlock['maze_collect_coin'] = function() {\n return 'collectCoin();\\n';\n };\n generator.forBlock['maze_coin_count'] = function() {\n return ['getCoinCount()', javascriptGenerator.ORDER_FUNCTION_CALL];\n };\n generator.forBlock['maze_collect_letter'] = function() {\n return 'collectLetter();\\n';\n };\n generator.forBlock['maze_has_coin'] = function() {\n return ['hasCoin()', javascriptGenerator.ORDER_FUNCTION_CALL];\n };\n generator.forBlock['maze_has_letter'] = function() {\n return ['hasLetter()', javascriptGenerator.ORDER_FUNCTION_CALL];\n };\n }\n } catch (error) {\n console.error('[MazeBlocklyContainer] Failed to register maze generators:', error);\n }\n }\n\n private disposeWorkspace(): void {\n if (this.workspace) {\n try {\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Disposing workspace...`);\n // Remove all change listeners\n this.workspace.removeChangeListener(this.onAnyChange);\n // Unregister from tracking\n unregisterWorkspace(this.workspace);\n // Unmark element as injected\n if (this.blocklyDivRef.current) {\n unmarkElementAsInjected(this.blocklyDivRef.current);\n }\n // Dispose the workspace\n this.workspace.dispose();\n console.log(`[MazeBlocklyContainer-${this.instanceId}] Workspace disposed successfully`);\n } catch (error) {\n console.warn(`[MazeBlocklyContainer-${this.instanceId}] Error disposing workspace:`, error);\n } finally {\n this.workspace = null;\n this.setState({ workspace: null, isInitialized: false });\n }\n }\n }\n\n private onAnyChange(event: any) {\n if (!this.workspace) return;\n\n const t = event?.type || \"\";\n if (\n t === \"block_create\" ||\n t === \"block_move\" ||\n t === \"block_delete\" ||\n t === \"block_change\"\n ) {\n this.props.onWorkspaceChange?.(this.workspace);\n this.generateCode();\n }\n }\n\n private generateCode(): void {\n if (!this.workspace || !this.props.onCodeChange) return;\n try {\n const javascriptGenerator = getJavaScriptGenerator();\n const code = javascriptGenerator.workspaceToCode(this.workspace);\n this.props.onCodeChange(code);\n } catch (error) {\n console.error(\"Failed to generate code:\", error);\n }\n }\n\n private loadXml(xmlString?: string): void {\n if (!this.workspace || !xmlString) return;\n try {\n const Blockly = getBlockly();\n const xml = Blockly.utils.xml.textToDom(xmlString);\n Blockly.Xml.domToWorkspace(xml, this.workspace);\n } catch (error) {\n console.error(\"Failed to load XML:\", error);\n }\n }\n\n public executeCode(): MovementCommand[] {\n if (!this.workspace) return [];\n\n try {\n const javascriptGenerator = getJavaScriptGenerator();\n const code = javascriptGenerator.workspaceToCode(this.workspace);\n \n // Parse the generated code to extract movement commands\n const commands: MovementCommand[] = this.parseMovementCode(code);\n \n if (this.props.onExecuteCode) {\n this.props.onExecuteCode(commands);\n }\n \n return commands;\n } catch (error) {\n console.error(\"Failed to execute code:\", error);\n return [];\n }\n }\n\n private parseMovementCode(code: string): MovementCommand[] {\n const commands: MovementCommand[] = [];\n \n // Parse the code to extract movement commands, handling control structures\n this.parseCodeRecursively(code, commands);\n \n return commands;\n }\n\n private parseCodeRecursively(code: string, commands: MovementCommand[]): void {\n const lines = code.split('\\n');\n let i = 0;\n \n while (i < lines.length) {\n const line = lines[i].trim();\n \n if (line.includes('moveForward()')) {\n commands.push({ type: 'move_forward', direction: 'north' });\n } else if (line.includes('turnLeft()')) {\n commands.push({ type: 'turn_left', direction: 'north' });\n } else if (line.includes('turnRight()')) {\n commands.push({ type: 'turn_right', direction: 'north' });\n } else if (line.includes('turnAround()')) {\n commands.push({ type: 'turn_around', direction: 'north' });\n } else if (line.includes('collectCoin()')) {\n commands.push({ type: 'collect_coin', direction: 'north' });\n } else if (line.includes('collectLetter()')) {\n commands.push({ type: 'collect_letter', direction: 'north' });\n } else if (line.includes('for (let i = 0; i <')) {\n // Handle for loop\n const match = line.match(/for \\(let i = 0; i < (\\d+); i\\+\\+\\)/);\n if (match) {\n const times = parseInt(match[1]);\n const loopBody = this.extractLoopBody(lines, i);\n for (let j = 0; j < times; j++) {\n this.parseCodeRecursively(loopBody, commands);\n }\n i = this.findLoopEnd(lines, i);\n }\n } else if (line.includes('while (')) {\n // Handle while loop - for now, we'll limit it to prevent infinite loops\n const whileBody = this.extractLoopBody(lines, i);\n // Limit while loops to 10 iterations to prevent infinite loops\n for (let j = 0; j < 10; j++) {\n this.parseCodeRecursively(whileBody, commands);\n }\n i = this.findLoopEnd(lines, i);\n } else if (line.includes('if (')) {\n // Handle if statement - for now, we'll always execute the if branch\n // In a real implementation, you'd evaluate the condition\n const ifBody = this.extractIfBody(lines, i);\n this.parseCodeRecursively(ifBody, commands);\n i = this.findIfEnd(lines, i);\n } else if (line.includes('} else {')) {\n // Skip else branch for now\n i = this.findElseEnd(lines, i);\n }\n \n i++;\n }\n }\n\n private extractLoopBody(lines: string[], startIndex: number): string {\n const body: string[] = [];\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n break;\n }\n } else if (foundOpeningBrace && braceCount > 0) {\n body.push(line);\n }\n }\n \n return body.join('\\n');\n }\n\n private extractIfBody(lines: string[], startIndex: number): string {\n const body: string[] = [];\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n break;\n }\n } else if (foundOpeningBrace && braceCount > 0) {\n body.push(line);\n }\n }\n \n return body.join('\\n');\n }\n\n private findLoopEnd(lines: string[], startIndex: number): number {\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n return i;\n }\n }\n }\n \n return lines.length - 1;\n }\n\n private findIfEnd(lines: string[], startIndex: number): number {\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n return i;\n }\n }\n }\n \n return lines.length - 1;\n }\n\n private findElseEnd(lines: string[], startIndex: number): number {\n let braceCount = 0;\n let foundOpeningBrace = false;\n \n for (let i = startIndex; i < lines.length; i++) {\n const line = lines[i];\n \n if (line.includes('{')) {\n foundOpeningBrace = true;\n braceCount++;\n } else if (line.includes('}')) {\n braceCount--;\n if (foundOpeningBrace && braceCount === 0) {\n return i;\n }\n }\n }\n \n return lines.length - 1;\n }\n\n public getWorkspace(): any | null { \n return this.workspace; \n }\n\n public clearWorkspace(): void { \n this.workspace?.clear(); \n }\n\n render(): React.JSX.Element {\n const { className = \"\", style = {} } = this.props;\n const { isInitialized } = this.state;\n\n return (\n <div\n className={`maze-blockly-container ${className}`}\n style={{\n width: \"100%\",\n height: \"400px\",\n position: \"relative\",\n ...style\n }}\n >\n <div\n ref={this.blocklyDivRef}\n style={{\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n top: 0,\n left: 0\n }}\n />\n {!isInitialized && (\n <div\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n color: \"#666\",\n fontSize: 16\n }}\n >\n Loading Blockly...\n </div>\n )}\n </div>\n );\n }\n}\n","import React, { useState } from 'react';\nimport { Alert, Badge, Card, Tab, Tabs } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport type { GameState, GraphicsConfig, MazeBlocklyConfig, MazeConfig, MovementCommand } from './types';\nimport EditableMazeGrid from './EditableMazeGrid';\nimport MazeGrid from './MazeGrid';\nimport Spider from './Spider';\nimport MazeBlocklyContainer from './MazeBlocklyContainer';\n\ninterface MazeTabsProps {\n mazeConfig: MazeConfig;\n gameState: GameState;\n currentDirection: 'north' | 'south' | 'east' | 'west';\n generatedCode: string;\n blocklyConfig: MazeBlocklyConfig;\n onConfigChange: (config: MazeConfig) => void;\n onCodeChange: (code: string) => void;\n onExecuteCode: (commands: MovementCommand[]) => void;\n blocklyRef: React.RefObject<MazeBlocklyContainer>;\n graphicsConfig: GraphicsConfig;\n className?: string;\n}\n\nconst MazeTabs: React.FC<MazeTabsProps> = ({\n mazeConfig,\n gameState,\n currentDirection,\n generatedCode,\n blocklyConfig,\n onConfigChange,\n onCodeChange,\n onExecuteCode,\n blocklyRef,\n graphicsConfig,\n className\n}) => {\n const { t } = useTranslation();\n const [activeTab, setActiveTab] = useState('editor');\n\n const cellSize = 50;\n\n // Handle tab change with proper cleanup\n const handleTabSelect = (key: string | null) => {\n const newTab = key || 'editor';\n \n // If switching to game tab, trigger Blockly resize after a short delay\n if (newTab === 'game' && blocklyRef.current) {\n setTimeout(() => {\n const workspace = blocklyRef.current?.getWorkspace();\n if (workspace) {\n workspace.resize();\n }\n }, 100);\n }\n \n setActiveTab(newTab);\n };\n\n return (\n <Card className={className}>\n <Tabs\n activeKey={activeTab}\n onSelect={handleTabSelect}\n className=\"mb-3\"\n fill\n >\n <Tab eventKey=\"editor\" title={t('common.editor')}>\n <div className=\"p-3\">\n <EditableMazeGrid\n key={`editablemazegrid-${JSON.stringify(graphicsConfig.blocks)}`}\n config={mazeConfig}\n onConfigChange={onConfigChange}\n graphicsConfig={graphicsConfig}\n />\n </div>\n </Tab>\n \n <Tab eventKey=\"game\" title={t('common.game')}>\n <div className=\"p-3\">\n {/* Game Status */}\n <div className=\"row mb-3\">\n <div className=\"col-md-6\">\n <Alert variant=\"info\" className=\"mb-2\">\n <div className=\"d-flex justify-content-between align-items-center\">\n <span>🪙 Coins: <Badge bg=\"warning\" text=\"dark\">{gameState.coinsCollected}/{gameState.totalCoins}</Badge></span>\n <span>🗝️ Keys: <Badge bg=\"success\">{gameState.keysCollected}/{gameState.totalKeys}</Badge></span>\n <span>Moves: <Badge bg=\"secondary\">{gameState.moveCount}/{gameState.maxMoves}</Badge></span>\n </div>\n </Alert>\n </div>\n <div className=\"col-md-6\">\n <Alert variant=\"info\" className=\"mb-2\">\n <div className=\"d-flex justify-content-between align-items-center\">\n <span>📦 Inventory ({gameState.inventory.length})</span>\n <span>Items Collected</span>\n </div>\n {gameState.inventory.length > 0 && (\n <div className=\"mt-2\">\n <div className=\"d-flex flex-wrap gap-1\">\n {gameState.inventory.map((item, index) => (\n <Badge \n key={index} \n bg={item === 'COIN' ? 'warning' : item === 'KEY' ? 'success' : 'info'} \n text={item === 'COIN' ? 'dark' : 'white'}\n className=\"me-1\"\n >\n {item === 'COIN' ? '🪙' : item === 'KEY' ? '🗝️' : item}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </Alert>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-6 mb-4\">\n <h6 className=\"mb-3\">{t('common.gameView')}</h6>\n <div style={{ position: 'relative', marginBottom: '20px' }}>\n <MazeGrid\n key={`mazegrid-${JSON.stringify(graphicsConfig.blocks)}`}\n config={mazeConfig}\n cellSize={cellSize}\n graphicsConfig={graphicsConfig}\n />\n <Spider\n key={`spider-${graphicsConfig.player?.imageUrl || 'default'}-${graphicsConfig.player?.character || 'spider'}`}\n position={gameState.spiderPosition}\n direction={currentDirection}\n size={cellSize}\n graphicsConfig={graphicsConfig}\n isExecuting={false}\n />\n </div>\n </div>\n \n <div className=\"col-md-6\">\n <h6 className=\"mb-3\">{t('common.programmingBlocks')}</h6>\n <MazeBlocklyContainer\n key={`blockly-${activeTab}`}\n ref={blocklyRef}\n config={blocklyConfig}\n onCodeChange={onCodeChange}\n onExecuteCode={onExecuteCode}\n style={{ height: '300px' }}\n />\n \n <div className=\"mt-3\">\n <h6>{t('common.generatedCode')}</h6>\n <pre\n className=\"bg-light p-2 rounded\"\n style={{ fontSize: '12px', maxHeight: '150px', overflow: 'auto' }}\n >\n {generatedCode || t('common.noCodeGenerated')}\n </pre>\n </div>\n </div>\n </div>\n </div>\n </Tab>\n </Tabs>\n </Card>\n );\n};\n\nexport default MazeTabs;\n","import React from 'react';\nimport { Alert, Badge, Button, Card, Form } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport type { GameState, MazeConfig } from './types';\n\ninterface GameControlsProps {\n gameState: GameState;\n currentDirection: 'north' | 'south' | 'east' | 'west';\n isExecuting: boolean;\n isGenerating: boolean;\n mazeConfig: MazeConfig;\n onRunCode: () => void;\n onResetGame: () => void;\n onGenerateNewMaze: () => void;\n isEditable?: boolean;\n className?: string;\n}\n\nconst GameControls: React.FC<GameControlsProps> = ({\n gameState,\n currentDirection,\n isExecuting,\n isGenerating,\n mazeConfig,\n onRunCode,\n onResetGame,\n onGenerateNewMaze,\n isEditable = false,\n className\n}) => {\n const { t } = useTranslation();\n return (\n <Card className={className}>\n <Card.Body>\n <div className=\"d-flex justify-content-between align-items-center\">\n <div>\n <Badge bg=\"primary\" className=\"me-2\">\n {t('common.moves')}: {gameState.moveCount}/{gameState.maxMoves}\n </Badge>\n <Badge bg={currentDirection === 'north' ? 'success' : 'secondary'} className=\"me-1\">↑</Badge>\n <Badge bg={currentDirection === 'east' ? 'success' : 'secondary'} className=\"me-1\">→</Badge>\n <Badge bg={currentDirection === 'south' ? 'success' : 'secondary'} className=\"me-1\">↓</Badge>\n <Badge bg={currentDirection === 'west' ? 'success' : 'secondary'} className=\"me-1\">←</Badge>\n </div>\n <div>\n <Button\n variant=\"success\"\n onClick={onRunCode}\n disabled={isExecuting || gameState.isGameOver}\n className=\"me-2\"\n >\n {isExecuting ? t('common.running') : t('common.runCode')}\n </Button>\n <Button\n variant=\"outline-secondary\"\n onClick={onResetGame}\n disabled={isExecuting}\n className=\"me-2\"\n >\n {t('common.reset')}\n </Button>\n </div>\n </div>\n\n {/* Maze Generation Controls - Only show in editable mode */}\n {isEditable && (\n <div className=\"d-flex align-items-center mt-3 p-3 bg-light rounded\">\n <div className=\"me-3\">\n <Form.Label className=\"mb-1 fw-bold\">\n {t('common.steps')}:\n </Form.Label>\n <div className=\"text-muted\">\n {mazeConfig.estimatedSteps || t('common.calculating')}\n </div>\n </div>\n <div className=\"me-3\">\n <Form.Label className=\"mb-1 fw-bold\">\n {t('common.walls')}:\n </Form.Label>\n <div className=\"text-muted\">\n {mazeConfig.walls.length}\n </div>\n </div>\n <Button\n variant=\"primary\"\n onClick={onGenerateNewMaze}\n disabled={isExecuting || isGenerating}\n className=\"ms-auto\"\n >\n {isGenerating ? t('common.generating') : t('common.generateNewMaze')}\n </Button>\n </div>\n )}\n\n {/* Game Status */}\n {gameState.isGameWon && (\n <Alert variant=\"success\" className=\"mt-3 mb-0\">\n {t('game.congratulations')}\n </Alert>\n )}\n {gameState.isGameOver && !gameState.isGameWon && (\n <Alert variant=\"danger\" className=\"mt-3 mb-0\">\n {t('game.gameOver')}\n </Alert>\n )}\n </Card.Body>\n </Card>\n );\n};\n\nexport default GameControls;\n","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\ninterface LanguageSelectorProps {\n className?: string;\n}\n\nconst LanguageSelector: React.FC<LanguageSelectorProps> = ({ className }) => {\n const { i18n, t } = useTranslation();\n\n const handleLanguageChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selectedLanguage = event.target.value;\n i18n.changeLanguage(selectedLanguage);\n };\n\n return (\n <Form.Group className={className}>\n <Form.Label className=\"mb-1 fw-bold\">\n {t('language.select')}:\n </Form.Label>\n <Form.Select\n value={i18n.language}\n onChange={handleLanguageChange}\n size=\"sm\"\n style={{ maxWidth: '200px' }}\n >\n <option value=\"sk\">{t('language.slovak')}</option>\n <option value=\"cs\">{t('language.czech')}</option>\n <option value=\"hu\">{t('language.hungarian')}</option>\n </Form.Select>\n </Form.Group>\n );\n};\n\nexport default LanguageSelector;\n","import React from 'react';\nimport type { GraphicsConfig, PlayerGraphicsProps } from './types';\n\n/**\n * Default graphics configuration for the maze game\n * This provides fallback values when no custom graphics are provided\n * \n * URL Support:\n * - player.imageUrl: URL to player character image (SVG, PNG, JPG, etc.)\n * - blocks.*.imageUrl: URL to block element images\n * - All imageUrl properties are optional and fall back to character/text rendering\n */\nexport const defaultGraphicsConfig: GraphicsConfig = {\n player: {\n character: undefined, // Will use default spider component\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/player.png')\n backgroundColor: '#8B4513',\n borderColor: '#654321',\n size: 0.8, // Relative to cell size\n eyeColor: '#FF0000',\n eyeSize: 0.3, // Relative to player size\n transitionDuration: '0.3s ease-in-out',\n customStyles: {}\n },\n blocks: {\n wall: {\n character: '🧱',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/wall.png')\n backgroundColor: '#333',\n borderColor: '#000',\n customStyles: {}\n },\n finish: {\n character: '🎯',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/finish.png')\n backgroundColor: '#32CD32',\n borderColor: '#228B22',\n customStyles: {}\n },\n coin: {\n character: '🪙',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/coin.png')\n color: '#FFD700',\n size: 16,\n customStyles: {}\n },\n letter: {\n fontFamily: 'Arial, sans-serif',\n fontSize: 18,\n color: '#FF6B6B',\n fontWeight: 'bold',\n textShadow: '1px 1px 2px rgba(0,0,0,0.5)',\n customStyles: {}\n },\n key: {\n character: '🗝️',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/key.png')\n backgroundColor: '#fff',\n borderColor: '#FFD700',\n color: '#FFD700',\n size: 16,\n customStyles: {}\n },\n door: {\n character: '🚪',\n imageUrl: undefined, // Can be set to use an image instead (e.g., 'https://example.com/door.png')\n backgroundColor: '#8B4513',\n borderColor: '#654321',\n customStyles: {}\n },\n empty: {\n backgroundColor: '#f0f0f0',\n borderColor: '#ccc',\n customStyles: {}\n }\n },\n maze: {\n grid: {\n backgroundColor: '#f0f0f0',\n borderColor: '#333',\n borderWidth: 2,\n customStyles: {}\n },\n cell: {\n borderColor: '#ccc',\n borderWidth: 1,\n customStyles: {}\n }\n }\n};\n\n/**\n * Default spider component for the player character\n * This is used when no custom character is provided\n */\nexport const DefaultSpider: React.FC<PlayerGraphicsProps> = ({ \n position, \n direction, \n size, \n isExecuting = false \n}) => {\n const cellSize = size;\n \n // Calculate rotation based on direction\n const rotationMap = {\n north: 0,\n east: 90,\n south: 180,\n west: 270\n };\n\n const rotation = rotationMap[direction];\n\n return (\n <div\n style={{\n position: 'absolute',\n left: position.x * cellSize + cellSize / 2,\n top: position.y * cellSize + cellSize / 2,\n width: cellSize * 0.8,\n height: cellSize * 0.8,\n transform: `translate(-50%, -50%) rotate(${rotation}deg)`,\n transition: 'all 0.3s ease-in-out',\n zIndex: 10,\n opacity: isExecuting ? 0.8 : 1\n }}\n >\n {/* Spider body */}\n <div\n style={{\n width: '100%',\n height: '100%',\n backgroundColor: '#8B4513',\n borderRadius: '50%',\n border: '2px solid #654321',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {/* Spider eyes */}\n <div\n style={{\n width: '30%',\n height: '30%',\n backgroundColor: '#FF0000',\n borderRadius: '50%',\n position: 'absolute',\n left: '20%',\n top: '20%',\n boxShadow: '0 0 5px #FF0000'\n }}\n />\n <div\n style={{\n width: '30%',\n height: '30%',\n backgroundColor: '#FF0000',\n borderRadius: '50%',\n position: 'absolute',\n right: '20%',\n top: '20%',\n boxShadow: '0 0 5px #FF0000'\n }}\n />\n </div>\n </div>\n );\n};\n\n\n/**\n * Merge custom graphics configuration with defaults\n * This ensures all required properties are present\n */\nexport function mergeGraphicsConfig(customConfig?: Partial<GraphicsConfig>): GraphicsConfig {\n console.log('[mergeGraphicsConfig] Starting graphics configuration merge');\n console.log('[mergeGraphicsConfig] Custom config provided:', !!customConfig);\n \n if (!customConfig) {\n console.log('[mergeGraphicsConfig] No custom config, returning defaults');\n return defaultGraphicsConfig;\n }\n\n // Log configuration details\n if (customConfig.player) {\n console.log('[mergeGraphicsConfig] Player config:', {\n hasImageUrl: !!customConfig.player.imageUrl,\n hasCharacter: !!customConfig.player.character,\n imageUrl: customConfig.player.imageUrl,\n size: customConfig.player.size\n });\n }\n\n if (customConfig.blocks) {\n Object.entries(customConfig.blocks).forEach(([blockType, blockConfig]) => {\n if (blockConfig) {\n console.log(`[mergeGraphicsConfig] ${blockType} config:`, {\n hasImageUrl: !!(blockConfig as any).imageUrl,\n hasCharacter: !!(blockConfig as any).character,\n imageUrl: (blockConfig as any).imageUrl,\n backgroundColor: (blockConfig as any).backgroundColor\n });\n }\n });\n }\n\n const mergedConfig = {\n player: {\n ...defaultGraphicsConfig.player,\n ...customConfig.player\n },\n blocks: {\n wall: {\n ...defaultGraphicsConfig.blocks?.wall,\n ...customConfig.blocks?.wall\n },\n finish: {\n ...defaultGraphicsConfig.blocks?.finish,\n ...customConfig.blocks?.finish\n },\n coin: {\n ...defaultGraphicsConfig.blocks?.coin,\n ...customConfig.blocks?.coin\n },\n letter: {\n ...defaultGraphicsConfig.blocks?.letter,\n ...customConfig.blocks?.letter\n },\n key: {\n ...defaultGraphicsConfig.blocks?.key,\n ...customConfig.blocks?.key\n },\n door: {\n ...defaultGraphicsConfig.blocks?.door,\n ...customConfig.blocks?.door\n },\n empty: {\n ...defaultGraphicsConfig.blocks?.empty,\n ...customConfig.blocks?.empty\n }\n },\n maze: {\n grid: {\n ...defaultGraphicsConfig.maze?.grid,\n ...customConfig.maze?.grid\n },\n cell: {\n ...defaultGraphicsConfig.maze?.cell,\n ...customConfig.maze?.cell\n }\n }\n };\n\n console.log('[mergeGraphicsConfig] Merged configuration completed');\n console.log('[mergeGraphicsConfig] Final player config:', {\n hasImageUrl: !!mergedConfig.player.imageUrl,\n hasCharacter: !!mergedConfig.player.character,\n imageUrl: mergedConfig.player.imageUrl\n });\n\n return mergedConfig;\n}\n","import React, { Component } from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport { type WithTranslation, withTranslation } from 'react-i18next';\nimport MazeTabs from './MazeTabs';\nimport GameControls from './GameControls';\nimport MazeBlocklyContainer from './MazeBlocklyContainer';\nimport LanguageSelector from '../LanguageSelector';\nimport type {\n GameState,\n GraphicsConfig,\n MazeBlocklyConfig,\n MazeConfig,\n MovementCommand,\n Position,\n RunResult\n} from './types';\nimport { canPassDoor } from './validation';\nimport { mergeGraphicsConfig } from './graphicsConfig';\n\ninterface MazeGameProps {\n className?: string;\n isEditable?: boolean;\n configuration?: MazeConfig;\n onChange?: (config: MazeConfig) => void;\n onRunFinish?: (result: RunResult) => void;\n maxMoves?: number;\n showControls?: boolean;\n graphicsConfig?: Partial<GraphicsConfig>;\n}\n\ninterface MazeGameState {\n gameState: GameState;\n currentDirection: 'north' | 'south' | 'east' | 'west';\n isExecuting: boolean;\n currentCommandIndex: number;\n generatedCode: string;\n minSteps: number;\n isGenerating: boolean;\n}\n\nclass MazeGame extends Component<MazeGameProps & WithTranslation, MazeGameState> {\n\n constructor(props: MazeGameProps & WithTranslation) {\n super(props);\n \n // Use provided configuration or default\n if (props.configuration) {\n this.mazeConfig = { ...props.configuration };\n }\n \n // Merge graphics configuration with defaults\n this.graphicsConfig = mergeGraphicsConfig(props.graphicsConfig);\n \n this.state = {\n gameState: {\n spiderPosition: { ...this.mazeConfig.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n maxMoves: props.maxMoves || 50,\n coinsCollected: 0,\n totalCoins: this.mazeConfig.coins.length,\n keysCollected: 0,\n totalKeys: this.mazeConfig.keys.length,\n inventory: []\n },\n currentDirection: 'east',\n isExecuting: false,\n currentCommandIndex: 0,\n generatedCode: '',\n minSteps: 8,\n isGenerating: false\n };\n\n // Generate initial maze only if no configuration provided\n if (!props.configuration) {\n this.generateMaze();\n }\n }\n\n componentDidMount() {\n // Component mounted\n }\n\n componentDidUpdate(prevProps: MazeGameProps & WithTranslation) {\n // Update graphics configuration if it changed\n if (prevProps.graphicsConfig !== this.props.graphicsConfig) {\n console.log('[MazeGame] Graphics configuration changed, updating...');\n this.graphicsConfig = mergeGraphicsConfig(this.props.graphicsConfig);\n console.log('[MazeGame] Graphics configuration updated:', this.graphicsConfig);\n // Force re-render by updating state\n this.forceUpdate();\n }\n }\n\n componentWillUnmount() {\n if (this.executionInterval) {\n clearInterval(this.executionInterval);\n }\n }\n\n // Maze configuration - will be auto-generated\n private mazeConfig: MazeConfig = {\n width: 10,\n height: 8,\n spiderStart: { x: 1, y: 1 },\n finishPosition: { x: 8, y: 6 },\n walls: [],\n coins: [],\n letters: [],\n keys: [],\n doors: []\n };\n\n // Graphics configuration - merged with defaults\n private graphicsConfig: GraphicsConfig;\n\n // Blockly configuration for maze game - will be updated with translations\n private getBlocklyConfig(): MazeBlocklyConfig {\n const { t } = this.props;\n return {\n allowedTypes: new Set([\n \"maze_move_forward\",\n \"maze_turn_left\",\n \"maze_turn_right\",\n \"maze_turn_around\",\n \"maze_collect_coin\",\n \"maze_coin_count\",\n \"maze_collect_letter\",\n \"maze_collect_key\",\n \"maze_has_coin\",\n \"maze_has_letter\",\n \"maze_has_key\",\n \"controls_repeat\",\n \"controls_if\",\n \"controls_ifelse\",\n \"controls_while\",\n \"logic_compare\",\n \"math_number\"\n ]),\n limits: {\n maze_move_forward: 20,\n maze_turn_left: 10,\n maze_turn_right: 10,\n maze_turn_around: 5,\n maze_collect_coin: 10,\n maze_coin_count: 5,\n maze_collect_letter: 10,\n maze_collect_key: 5,\n maze_has_coin: 10,\n maze_has_letter: 10,\n maze_has_key: 10,\n controls_repeat: 5,\n controls_if: 3,\n controls_ifelse: 3,\n controls_while: 3,\n logic_compare: 10,\n math_number: 20\n },\n toolbox: `\n <xml xmlns=\"https://developers.google.com/blockly/xml\" id=\"toolbox\" style=\"display:none\">\n <category name=\"${t('game.movement')}\" colour=\"#5CA65C\">\n <block type=\"maze_move_forward\"></block>\n <block type=\"maze_turn_left\"></block>\n <block type=\"maze_turn_right\"></block>\n <block type=\"maze_turn_around\"></block>\n </category>\n <category name=\"${t('game.coins')}\" colour=\"#FFD700\">\n <block type=\"maze_collect_coin\"></block>\n <block type=\"maze_coin_count\"></block>\n <block type=\"maze_has_coin\"></block>\n </category>\n <category name=\"${t('game.letters')}\" colour=\"#FF6B6B\">\n <block type=\"maze_collect_letter\"></block>\n <block type=\"maze_has_letter\"></block>\n </category>\n <category name=\"${t('game.keys')}\" colour=\"#8B4513\">\n <block type=\"maze_collect_key\"></block>\n <block type=\"maze_has_key\"></block>\n </category>\n <category name=\"${t('game.control')}\" colour=\"#A65C81\">\n <block type=\"controls_repeat\"></block>\n <block type=\"controls_if\"></block>\n <block type=\"controls_ifelse\"></block>\n <block type=\"controls_while\"></block>\n </category>\n <category name=\"${t('game.logic')}\" colour=\"#D4A65C\">\n <block type=\"logic_compare\"></block>\n </category>\n <category name=\"${t('game.math')}\" colour=\"#5C81A6\">\n <block type=\"math_number\"></block>\n </category>\n </xml>\n `,\n initialXml: `\n <xml xmlns=\"https://developers.google.com/blockly/xml\">\n <block type=\"controls_repeat\" x=\"20\" y=\"20\">\n <field name=\"TIMES\">3</field>\n <statement name=\"DO\">\n <block type=\"maze_move_forward\"></block>\n </statement>\n </block>\n </xml>\n `\n };\n }\n\n private executionInterval: NodeJS.Timeout | null = null;\n private blocklyRef: React.RefObject<MazeBlocklyContainer> = React.createRef<MazeBlocklyContainer>();\n\n private generateMaze = () => {\n this.setState({ isGenerating: true });\n \n // Use setTimeout to avoid blocking the UI during generation\n setTimeout(() => {\n const newMaze = this.createMazeWithMinSteps(this.state.minSteps);\n this.mazeConfig = newMaze;\n \n this.setState({\n gameState: {\n spiderPosition: { ...newMaze.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n maxMoves: Math.max(50, (newMaze.estimatedSteps || 8) + 10),\n coinsCollected: 0,\n totalCoins: newMaze.coins.length,\n keysCollected: 0,\n totalKeys: newMaze.keys.length,\n inventory: []\n },\n currentDirection: 'east',\n isExecuting: false,\n currentCommandIndex: 0,\n isGenerating: false\n });\n\n if (this.blocklyRef.current) {\n this.blocklyRef.current.clearWorkspace();\n }\n }, 100);\n };\n\n private createMazeWithMinSteps(minSteps: number): MazeConfig & { estimatedSteps: number } {\n const width = 10;\n const height = 8;\n const maxAttempts = 50;\n \n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const maze = this.generateRandomMaze(width, height);\n const estimatedSteps = this.estimateOptimalSteps(maze);\n \n if (estimatedSteps >= minSteps && this.isMazeSolvable(maze)) {\n return { ...maze, estimatedSteps };\n }\n }\n \n // Fallback: return a simple maze with guaranteed minimum steps\n return this.generateFallbackMaze(width, height, minSteps);\n }\n\n private generateRandomMaze(width: number, height: number): MazeConfig {\n const walls: Position[] = [];\n const coins: Position[] = [];\n const letters: Array<{ position: Position; letter: string }> = [];\n const keys: Position[] = [];\n const doors: Position[] = [];\n const spiderStart = { x: 1, y: 1 };\n const finishPosition = { x: width - 2, y: height - 2 };\n \n // Generate random walls (30-40% of cells)\n const wallCount = Math.floor((width * height) * (0.3 + Math.random() * 0.1));\n \n for (let i = 0; i < wallCount; i++) {\n const x = Math.floor(Math.random() * width);\n const y = Math.floor(Math.random() * height);\n \n // Don't place walls on start, finish, or adjacent to start\n if ((x === spiderStart.x && y === spiderStart.y) ||\n (x === finishPosition.x && y === finishPosition.y) ||\n (Math.abs(x - spiderStart.x) <= 1 && Math.abs(y - spiderStart.y) <= 1) ||\n (Math.abs(x - finishPosition.x) <= 1 && Math.abs(y - finishPosition.y) <= 1)) {\n continue;\n }\n \n // Avoid duplicate walls\n if (!walls.some(wall => wall.x === x && wall.y === y)) {\n walls.push({ x, y });\n }\n }\n \n // Generate random coins (5-10% of cells)\n const coinCount = Math.floor((width * height) * (0.05 + Math.random() * 0.05));\n for (let i = 0; i < coinCount; i++) {\n const x = Math.floor(Math.random() * width);\n const y = Math.floor(Math.random() * height);\n \n // Don't place coins on walls, start, or finish\n if (!walls.some(wall => wall.x === x && wall.y === y) &&\n !(x === spiderStart.x && y === spiderStart.y) &&\n !(x === finishPosition.x && y === finishPosition.y) &&\n !coins.some(coin => coin.x === x && coin.y === y)) {\n coins.push({ x, y });\n }\n }\n \n return { width, height, spiderStart, finishPosition, walls, coins, letters, keys, doors };\n }\n\n private generateFallbackMaze(width: number, height: number, minSteps: number): MazeConfig & { estimatedSteps: number } {\n const walls: Position[] = [];\n const coins: Position[] = [];\n const letters: Array<{ position: Position; letter: string }> = [];\n const keys: Position[] = [];\n const doors: Position[] = [];\n const spiderStart = { x: 1, y: 1 };\n const finishPosition = { x: width - 2, y: height - 2 };\n \n // Create a winding path that ensures minimum steps\n const path: Position[] = [];\n const current = { ...spiderStart };\n \n // Create a zigzag path to the finish\n while (current.x < finishPosition.x || current.y < finishPosition.y) {\n if (current.x < finishPosition.x) {\n current.x++;\n path.push({ ...current });\n }\n if (current.y < finishPosition.y) {\n current.y++;\n path.push({ ...current });\n }\n }\n \n // Add some random walls that don't block the path\n for (let i = 0; i < Math.floor(minSteps / 2); i++) {\n const x = Math.floor(Math.random() * (width - 2)) + 1;\n const y = Math.floor(Math.random() * (height - 2)) + 1;\n \n if (!path.some(pos => pos.x === x && pos.y === y) &&\n !walls.some(wall => wall.x === x && wall.y === y)) {\n walls.push({ x, y });\n }\n }\n \n // Add some coins along the path\n for (let i = 0; i < Math.min(3, path.length); i++) {\n const pathPos = path[Math.floor(Math.random() * path.length)];\n if (!coins.some(coin => coin.x === pathPos.x && coin.y === pathPos.y)) {\n coins.push(pathPos);\n }\n }\n \n return { width, height, spiderStart, finishPosition, walls, coins, letters, keys, doors, estimatedSteps: minSteps };\n }\n\n private estimateOptimalSteps(maze: MazeConfig): number {\n // Simple estimation: Manhattan distance + some penalty for walls\n const manhattanDistance = Math.abs(maze.finishPosition.x - maze.spiderStart.x) + \n Math.abs(maze.finishPosition.y - maze.spiderStart.y);\n \n // Add penalty for walls that might force detours\n const wallPenalty = Math.min(maze.walls.length * 0.5, 10);\n \n return Math.ceil(manhattanDistance + wallPenalty);\n }\n\n private isMazeSolvable(maze: MazeConfig): boolean {\n // Simple solvability check using flood fill\n const visited = new Set<string>();\n const queue: Position[] = [maze.spiderStart];\n \n while (queue.length > 0) {\n const current = queue.shift()!;\n const key = `${current.x},${current.y}`;\n \n if (visited.has(key)) continue;\n visited.add(key);\n \n if (current.x === maze.finishPosition.x && current.y === maze.finishPosition.y) {\n return true;\n }\n \n // Check all four directions\n const directions = [\n { x: current.x + 1, y: current.y },\n { x: current.x - 1, y: current.y },\n { x: current.x, y: current.y + 1 },\n { x: current.x, y: current.y - 1 }\n ];\n \n for (const dir of directions) {\n if (dir.x >= 0 && dir.x < maze.width && \n dir.y >= 0 && dir.y < maze.height &&\n !maze.walls.some(wall => wall.x === dir.x && wall.y === dir.y) &&\n !visited.has(`${dir.x},${dir.y}`)) {\n queue.push(dir);\n }\n }\n }\n \n return false;\n }\n\n private handleCodeChange = (code: string) => {\n this.setState({ generatedCode: code });\n };\n\n private handleConfigChange = (newConfig: MazeConfig) => {\n this.mazeConfig = newConfig;\n \n // Update game state with new configuration\n this.setState({\n gameState: {\n ...this.state.gameState,\n spiderPosition: { ...newConfig.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n coinsCollected: 0,\n totalCoins: newConfig.coins.length,\n keysCollected: 0,\n totalKeys: newConfig.keys.length,\n inventory: []\n }\n });\n\n // Call onChange callback if provided\n if (this.props.onChange) {\n this.props.onChange(newConfig);\n }\n };\n\n private handleExecuteCode = (commands: MovementCommand[]) => {\n if (commands.length === 0) {\n return;\n }\n\n this.setState({\n isExecuting: true,\n currentCommandIndex: 0\n });\n\n this.executeCommands(commands);\n };\n\n private executeCommands(commands: MovementCommand[]) {\n let commandIndex = 0;\n\n this.executionInterval = setInterval(() => {\n if (commandIndex >= commands.length) {\n this.stopExecution();\n return;\n }\n\n const command = commands[commandIndex];\n this.executeCommand(command);\n commandIndex++;\n this.setState({ currentCommandIndex: commandIndex });\n }, 800); // Execute each command every 800ms\n }\n\n private executeCommand(command: MovementCommand) {\n switch (command.type) {\n case 'move_forward':\n this.moveSpiderForward();\n break;\n case 'turn_left':\n this.turnSpider('left');\n break;\n case 'turn_right':\n this.turnSpider('right');\n break;\n case 'turn_around':\n this.turnSpider('around');\n break;\n case 'collect_coin':\n this.collectCoin(this.state.gameState.spiderPosition);\n break;\n case 'collect_letter':\n this.collectLetter(this.state.gameState.spiderPosition);\n break;\n case 'collect_key':\n this.collectKey(this.state.gameState.spiderPosition);\n break;\n }\n }\n\n private moveSpiderForward() {\n const { gameState, currentDirection } = this.state;\n const newPosition = { ...gameState.spiderPosition };\n\n // Calculate new position based on current direction\n switch (currentDirection) {\n case 'north':\n newPosition.y = Math.max(0, newPosition.y - 1);\n break;\n case 'south':\n newPosition.y = Math.min(this.mazeConfig.height - 1, newPosition.y + 1);\n break;\n case 'east':\n newPosition.x = Math.min(this.mazeConfig.width - 1, newPosition.x + 1);\n break;\n case 'west':\n newPosition.x = Math.max(0, newPosition.x - 1);\n break;\n }\n\n // Check if new position is valid (not a wall and can pass door if it's a door)\n if (!this.isWall(newPosition) && canPassDoor(newPosition, this.mazeConfig, gameState.inventory)) {\n const newGameState = {\n ...gameState,\n spiderPosition: newPosition,\n moveCount: gameState.moveCount + 1\n };\n\n // Check if spider reached finish\n if (this.isFinish(newPosition)) {\n newGameState.isGameWon = true;\n newGameState.isGameOver = true;\n }\n\n // Check if max moves exceeded\n if (newGameState.moveCount >= gameState.maxMoves) {\n newGameState.isGameOver = true;\n }\n\n this.setState({ gameState: newGameState });\n \n // Call onRunFinish callback if game is over\n if (newGameState.isGameOver && this.props.onRunFinish) {\n const result: RunResult = {\n steps: newGameState.moveCount,\n reachedFinish: newGameState.isGameWon,\n maxMovesExceeded: newGameState.moveCount >= gameState.maxMoves,\n finalPosition: newPosition,\n path: [], // TODO: Track path during execution\n executionTime: 0, // TODO: Track execution time\n inventory: newGameState.inventory\n };\n this.props.onRunFinish(result);\n }\n }\n }\n\n private turnSpider(turnDirection: 'left' | 'right' | 'around') {\n const directionMap: Record<string, Record<string, 'north' | 'south' | 'east' | 'west'>> = {\n north: { left: 'west', right: 'east', around: 'south' },\n south: { left: 'east', right: 'west', around: 'north' },\n east: { left: 'north', right: 'south', around: 'west' },\n west: { left: 'south', right: 'north', around: 'east' }\n };\n\n const newDirection = directionMap[this.state.currentDirection][turnDirection];\n this.setState({ currentDirection: newDirection });\n }\n\n private isWall(position: Position): boolean {\n return this.mazeConfig.walls.some(wall =>\n wall.x === position.x && wall.y === position.y\n );\n }\n\n private isFinish(position: Position): boolean {\n return position.x === this.mazeConfig.finishPosition.x &&\n position.y === this.mazeConfig.finishPosition.y;\n }\n\n // These methods are kept for potential future use with Blockly blocks\n // private hasCoin(position: Position): boolean {\n // return this.mazeConfig.coins.some(coin =>\n // coin.x === position.x && coin.y === position.y\n // );\n // }\n\n // private hasLetter(position: Position): boolean {\n // return this.mazeConfig.letters.some(letter =>\n // letter.position.x === position.x && letter.position.y === position.y\n // );\n // }\n\n private collectCoin(position: Position): boolean {\n const coinIndex = this.mazeConfig.coins.findIndex(coin =>\n coin.x === position.x && coin.y === position.y\n );\n \n if (coinIndex !== -1) {\n // Remove coin from maze\n this.mazeConfig.coins.splice(coinIndex, 1);\n \n // Add to inventory\n const newInventory = [...this.state.gameState.inventory, 'COIN'];\n \n // Update game state\n const newGameState = {\n ...this.state.gameState,\n coinsCollected: this.state.gameState.coinsCollected + 1,\n inventory: newInventory\n };\n \n this.setState({ gameState: newGameState });\n return true;\n }\n \n return false;\n }\n\n private collectLetter(position: Position): boolean {\n const letterIndex = this.mazeConfig.letters.findIndex(letter =>\n letter.position.x === position.x && letter.position.y === position.y\n );\n \n if (letterIndex !== -1) {\n const letter = this.mazeConfig.letters[letterIndex];\n \n // Remove letter from maze\n this.mazeConfig.letters.splice(letterIndex, 1);\n \n // Add to inventory\n const newInventory = [...this.state.gameState.inventory, letter.letter];\n \n // Update game state\n const newGameState = {\n ...this.state.gameState,\n inventory: newInventory\n };\n \n this.setState({ gameState: newGameState });\n return true;\n }\n \n return false;\n }\n\n private collectKey(position: Position): boolean {\n const keyIndex = this.mazeConfig.keys.findIndex(key =>\n key.x === position.x && key.y === position.y\n );\n \n if (keyIndex !== -1) {\n // Remove key from maze\n this.mazeConfig.keys.splice(keyIndex, 1);\n \n // Add to inventory\n const newInventory = [...this.state.gameState.inventory, 'KEY'];\n \n // Update game state\n const newGameState = {\n ...this.state.gameState,\n keysCollected: this.state.gameState.keysCollected + 1,\n inventory: newInventory\n };\n \n this.setState({ gameState: newGameState });\n return true;\n }\n \n return false;\n }\n\n\n private stopExecution() {\n if (this.executionInterval) {\n clearInterval(this.executionInterval);\n this.executionInterval = null;\n }\n this.setState({ isExecuting: false });\n }\n\n private resetGame = () => {\n this.setState({\n gameState: {\n spiderPosition: { ...this.mazeConfig.spiderStart },\n isGameWon: false,\n isGameOver: false,\n moveCount: 0,\n maxMoves: Math.max(50, (this.mazeConfig.estimatedSteps || 8) + 10),\n coinsCollected: 0,\n totalCoins: this.mazeConfig.coins.length,\n keysCollected: 0,\n totalKeys: this.mazeConfig.keys.length,\n inventory: []\n },\n currentDirection: 'east',\n isExecuting: false,\n currentCommandIndex: 0\n });\n\n if (this.blocklyRef.current) {\n this.blocklyRef.current.clearWorkspace();\n }\n };\n\n private runCode = () => {\n if (this.blocklyRef.current) {\n this.blocklyRef.current.executeCode();\n }\n };\n\n // private handleMinStepsChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n // const value = parseInt(event.target.value);\n // if (!isNaN(value) && value >= 3 && value <= 30) {\n // this.setState({ minSteps: value }, () => {\n // // Regenerate maze with new minimum steps if the current maze doesn't meet the requirement\n // if (this.mazeConfig.estimatedSteps && this.mazeConfig.estimatedSteps < value) {\n // this.generateMaze();\n // }\n // });\n // }\n // };\n\n private handleGenerateNewMaze = () => {\n this.generateMaze();\n };\n\n render() {\n const { gameState, currentDirection, isExecuting, generatedCode, isGenerating } = this.state;\n const blocklyConfig = this.getBlocklyConfig();\n\n return (\n <div className={`maze-game ${this.props.className || ''}`}>\n <Container fluid>\n <Row>\n <Col>\n {/* Language Selector */}\n <div className=\"d-flex justify-content-end mb-3\">\n <LanguageSelector />\n </div>\n\n {/* Game Controls */}\n <GameControls\n gameState={gameState}\n currentDirection={currentDirection}\n isExecuting={isExecuting}\n isGenerating={isGenerating}\n mazeConfig={this.mazeConfig}\n onRunCode={this.runCode}\n onResetGame={this.resetGame}\n onGenerateNewMaze={this.handleGenerateNewMaze}\n isEditable={this.props.isEditable}\n className=\"mb-3\"\n />\n\n {/* Tabbed Interface */}\n <MazeTabs\n mazeConfig={this.mazeConfig}\n gameState={gameState}\n currentDirection={currentDirection}\n generatedCode={generatedCode}\n blocklyConfig={blocklyConfig}\n onConfigChange={this.handleConfigChange}\n onCodeChange={this.handleCodeChange}\n onExecuteCode={this.handleExecuteCode}\n blocklyRef={this.blocklyRef}\n graphicsConfig={this.graphicsConfig}\n />\n </Col>\n </Row>\n </Container>\n </div>\n );\n }\n}\n\nconst MazeGameWithTranslation: React.ComponentType<MazeGameProps> = withTranslation()(MazeGame);\nexport default MazeGameWithTranslation;\n","/**\n * Graphics Configuration DTOs and Examples\n * \n * This file provides clear DTOs (Data Transfer Objects) for all graphics configuration\n * types, making it easy to understand the structure when implementing custom graphics.\n */\n\nimport type { \n BlockGraphics,\n GraphicsConfig, \n MazeGraphics,\n PlayerGraphics\n} from './types';\n\n// ============================================================================\n// CORE DTOs - Use these for type safety when implementing graphics\n// ============================================================================\n\n/**\n * Complete graphics configuration DTO\n * Use this as the main interface for graphics configuration\n */\nexport type GraphicsConfigDTO = GraphicsConfig;\n\n/**\n * Player graphics configuration DTO\n * Controls the appearance and behavior of the player character\n */\nexport type PlayerGraphicsDTO = PlayerGraphics;\n\n/**\n * Block graphics configuration DTO\n * Controls the appearance of all maze block elements\n */\nexport type BlockGraphicsDTO = BlockGraphics;\n\n/**\n * Maze graphics configuration DTO\n * Controls the appearance of the maze grid and cells\n */\nexport type MazeGraphicsDTO = MazeGraphics;\n\n// ============================================================================\n// EXAMPLE CONFIGURATIONS - Use these as templates for your implementations\n// ============================================================================\n\n/**\n * Example: Custom graphics using image URLs\n * This shows how to use imageUrl properties for all elements\n */\nexport const exampleImageBasedConfig: GraphicsConfigDTO = {\n player: {\n imageUrl: 'https://example.com/player-character.png',\n size: 0.9,\n transitionDuration: '0.2s ease-out'\n },\n blocks: {\n wall: {\n imageUrl: 'https://example.com/wall-texture.png',\n backgroundColor: '#2c2c2c'\n },\n finish: {\n imageUrl: 'https://example.com/finish-flag.png',\n backgroundColor: '#4CAF50'\n },\n coin: {\n imageUrl: 'https://example.com/coin.png',\n size: 20\n },\n key: {\n imageUrl: 'https://example.com/key.png',\n size: 18\n },\n door: {\n imageUrl: 'https://example.com/door.png',\n backgroundColor: '#8B4513'\n }\n },\n maze: {\n grid: {\n backgroundColor: '#f5f5f5',\n borderColor: '#333',\n borderWidth: 3\n },\n cell: {\n borderColor: '#ddd',\n borderWidth: 1\n }\n }\n};\n\n/**\n * Example: Emoji-based graphics configuration\n * This shows how to use character properties with emojis\n */\nexport const exampleEmojiConfig: GraphicsConfigDTO = {\n player: {\n character: '🕷️',\n backgroundColor: '#8B4513',\n borderColor: '#654321',\n size: 0.8\n },\n blocks: {\n wall: {\n character: '🧱',\n backgroundColor: '#333',\n borderColor: '#000'\n },\n finish: {\n character: '🏁',\n backgroundColor: '#32CD32',\n borderColor: '#228B22'\n },\n coin: {\n character: '🪙',\n color: '#FFD700',\n size: 16\n },\n key: {\n character: '🗝️',\n backgroundColor: '#fff',\n borderColor: '#FFD700',\n color: '#FFD700',\n size: 16\n },\n door: {\n character: '🚪',\n backgroundColor: '#8B4513',\n borderColor: '#654321'\n }\n }\n};\n\n/**\n * Example: Minimal configuration with custom styling\n * This shows how to use customStyles for advanced customization\n */\nexport const exampleCustomStyledConfig: GraphicsConfigDTO = {\n player: {\n character: '🤖',\n backgroundColor: '#2196F3',\n borderColor: '#1976D2',\n size: 0.85,\n customStyles: {\n boxShadow: '0 4px 8px rgba(0,0,0,0.3)',\n borderRadius: '50%'\n }\n },\n blocks: {\n wall: {\n character: '⬛',\n backgroundColor: '#424242',\n customStyles: {\n background: 'linear-gradient(45deg, #333, #555)',\n boxShadow: 'inset 0 2px 4px rgba(0,0,0,0.5)'\n }\n },\n finish: {\n character: '⭐',\n backgroundColor: '#FFD700',\n customStyles: {\n animation: 'pulse 2s infinite',\n boxShadow: '0 0 20px #FFD700'\n }\n }\n }\n};\n\n/**\n * Example: Mixed configuration (some images, some characters)\n * This shows how to mix imageUrl and character properties\n */\nexport const exampleMixedConfig: GraphicsConfigDTO = {\n player: {\n imageUrl: 'https://example.com/robot-player.svg',\n size: 0.9\n },\n blocks: {\n wall: {\n character: '🧱',\n backgroundColor: '#333'\n },\n finish: {\n imageUrl: 'https://example.com/checkered-flag.png',\n backgroundColor: '#4CAF50'\n },\n coin: {\n character: '🪙',\n color: '#FFD700',\n size: 18\n },\n key: {\n imageUrl: 'https://example.com/golden-key.png',\n size: 20\n }\n }\n};\n\n// ============================================================================\n// UTILITY TYPES - Helper types for implementation\n// ============================================================================\n\n/**\n * Type for valid image URL formats\n */\nexport type ImageUrl = string;\n\n/**\n * Type for valid character formats (emoji or text)\n */\nexport type Character = string;\n\n/**\n * Type for valid size values (0.0 to 1.0)\n */\nexport type RelativeSize = number;\n\n/**\n * Type for valid color values (CSS color strings)\n */\nexport type Color = string;\n\n/**\n * Type for valid transition duration values\n */\nexport type TransitionDuration = string;\n\n// ============================================================================\n// VALIDATION HELPERS - Use these to validate your configurations\n// ============================================================================\n\n/**\n * Validates if a string is a valid image URL\n */\nexport function isValidImageUrl(url: string): boolean {\n try {\n new URL(url);\n return /\\.(png|jpg|jpeg|gif|svg|webp)$/i.test(url);\n } catch {\n return false;\n }\n}\n\n/**\n * Validates if a size value is within valid range (0.0 to 1.0)\n */\nexport function isValidSize(size: number): boolean {\n return size >= 0.0 && size <= 1.0;\n}\n\n/**\n * Validates if a color string is a valid CSS color\n */\nexport function isValidColor(color: string): boolean {\n const s = new Option().style;\n s.color = color;\n return s.color !== '';\n}\n\n/**\n * Validates a complete graphics configuration\n */\nexport function validateGraphicsConfig(config: GraphicsConfigDTO): {\n isValid: boolean;\n errors: string[];\n warnings: string[];\n} {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Validate player configuration\n if (config.player) {\n if (config.player.imageUrl && !isValidImageUrl(config.player.imageUrl)) {\n errors.push('Player imageUrl is not a valid image URL');\n }\n if (config.player.size !== undefined && !isValidSize(config.player.size)) {\n errors.push('Player size must be between 0.0 and 1.0');\n }\n if (config.player.backgroundColor && !isValidColor(config.player.backgroundColor)) {\n errors.push('Player backgroundColor is not a valid color');\n }\n }\n\n // Validate block configurations\n if (config.blocks) {\n // Validate blocks with backgroundColor property\n const blocksWithBackgroundColor = ['wall', 'finish', 'key', 'door'] as const;\n blocksWithBackgroundColor.forEach(blockType => {\n const block = config.blocks?.[blockType];\n if (block?.imageUrl && !isValidImageUrl(block.imageUrl)) {\n errors.push(`${blockType} imageUrl is not a valid image URL`);\n }\n if (block?.backgroundColor && !isValidColor(block.backgroundColor)) {\n errors.push(`${blockType} backgroundColor is not a valid color`);\n }\n });\n\n // Validate coin block (has color property instead of backgroundColor)\n if (config.blocks.coin) {\n const coin = config.blocks.coin;\n if (coin.imageUrl && !isValidImageUrl(coin.imageUrl)) {\n errors.push('coin imageUrl is not a valid image URL');\n }\n if (coin.color && !isValidColor(coin.color)) {\n errors.push('coin color is not a valid color');\n }\n }\n\n // Validate letter block (has color property instead of backgroundColor)\n if (config.blocks.letter) {\n const letter = config.blocks.letter;\n if (letter.color && !isValidColor(letter.color)) {\n errors.push('letter color is not a valid color');\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings\n };\n}\n"],"names":["isString","path","resources","module","copy","language","_a","noop","i18nInstance","getDefaults","instance","createContext","useRef","useEffect","useCallback","useContext","useState","createElement","forwardRefReact","forEach","hash","htmlTag","i18n","LanguageDetector","timeout","chars","defaultOptions","classNames","_objectWithoutPropertiesLoose","useUncontrolledProp","config","Utils.defaultKey","t","e","setPrototypeOf","React","hyphenate","Element","reactIsModule","require$$0","require$$1","has","require$$2","require$$3","require$$4","i","checker","propTypesModule","forceReflow","Transition","context","parseDuration","css","toFnRef","mergeRefs","useMergedRefs","useMemo","_jsx","useCommittedRef","useEventCallback","_excluded","isTrivialHref","Button","propTypes","_jsxs","CardHeaderContext","order","useReducer","warning","printWarning","$670gB$react","$670gB$useContext","$670gB$useRef","$670gB$useState","style","_Fragment","FormCheck","FormControl","Switch","NavItem","Nav","cloneElement","NavbarContext","Tabs","useSSRSafeId","BaseTabs","jsx","letter","jsxs","Card","Form","Alert","_","_b","_c","_d","_e","_f","_h","_g","_j","_i","_k","_l","_m","_n","_p","_o","_q","_r","Component","Blockly","javascriptGenerator","Tab"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123]}
|