forlogic-core 1.4.8 → 1.4.9

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.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../lib/utils/index.ts","../lib/components/ui/button.tsx","../lib/components/ui/input.tsx","../lib/components/ui/label.tsx","../lib/components/ui/card.tsx","../lib/components/ui/dialog.tsx","../lib/components/ui/form.tsx","../lib/components/ui/select.tsx","../lib/components/ui/checkbox.tsx","../lib/components/ui/textarea.tsx","../lib/components/ui/badge.tsx","../lib/components/ui/spinner.tsx","../lib/hooks/use-toast.ts","../lib/components/ui/toast.tsx","../lib/auth/services/TokenManager.ts","../lib/services/ErrorService.ts","../lib/supabase/SupabaseSingleton.ts","../lib/qualiex/services/qualiexApi.ts","../lib/services/QualiexEnrichmentService.ts","../lib/config/index.ts","../lib/services/BaseService.ts","../lib/crud/hooks/useCrud.ts","../lib/components/ui/alert-dialog.tsx","../lib/components/ui/delete-dialog.tsx","../lib/components/ui/table.tsx","../lib/components/ui/skeleton.tsx","../lib/components/ui/skeleton-variants.tsx","../lib/components/ui/empty-state.tsx","../lib/components/ui/dropdown-menu.tsx","../lib/crud/components/ActionMenuItems.tsx","../lib/crud/components/TableRowActions.tsx","../lib/crud/components/CrudTable.tsx","../lib/crud/hooks/useBaseForm.ts","../lib/components/ui/popover.tsx","../lib/components/ui/color-picker.tsx","../lib/components/ui/scroll-area.tsx","../lib/components/ui/icon-picker.tsx","../lib/auth/utils/AuthUtils.ts","../lib/auth/services/AuthService.ts","../lib/auth/utils/ErrorInterceptor.ts","../lib/auth/contexts/AuthContext.tsx","../lib/qualiex/hooks/useQualiexUsers.ts","../lib/qualiex/components/QualiexUserField.tsx","../lib/qualiex/components/QualiexResponsibleSelectField.tsx","../lib/crud/components/BaseForm.tsx","../lib/crud/components/CrudForm.tsx","../lib/crud/components/TableFooter.tsx","../lib/crud/components/CrudPage.tsx","../lib/crud/BaseCrudPage.tsx","../lib/crud/generateCrudConfig.ts","../lib/auth/components/ProtectedRoute.tsx","../lib/components/ui/alert.tsx","../lib/components/ui/accordion.tsx","../lib/components/ui/aspect-ratio.tsx","../lib/components/ui/avatar.tsx","../lib/components/ui/breadcrumb.tsx","../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../node_modules/date-fns/locale/pt-BR/_lib/formatDistance.mjs","../node_modules/date-fns/locale/pt-BR/_lib/formatLong.mjs","../node_modules/date-fns/locale/pt-BR/_lib/formatRelative.mjs","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../node_modules/date-fns/locale/pt-BR.mjs","../node_modules/date-fns/locale/pt-BR/_lib/localize.mjs","../node_modules/date-fns/locale/pt-BR/_lib/match.mjs","../lib/components/ui/calendar.tsx","../lib/components/ui/carousel.tsx","../lib/components/ui/chart.tsx","../lib/components/ui/collapsible.tsx","../lib/components/ui/command.tsx","../lib/components/ui/data-list.tsx","../lib/components/ui/feedback-dialog.tsx","../lib/components/ui/grid.tsx","../lib/components/ui/input-otp.tsx","../lib/components/ui/pagination.tsx","../lib/components/ui/progress.tsx","../lib/components/ui/radio-group.tsx","../node_modules/lodash/eq.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_root.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/isArray.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/keys.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/isEqual.js","../node_modules/quill/dist/quill.js","../node_modules/react-quill/lib/index.js","../lib/imageUtils.ts","../lib/components/ui/rich-text-editor.tsx","../lib/components/ui/separator.tsx","../lib/components/ui/sheet.tsx","../lib/components/ui/tooltip.tsx","../lib/components/ui/sidebar.tsx","../lib/components/ui/slider.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-switch/dist/index.mjs","../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../lib/components/ui/switch.tsx","../lib/components/ui/stack.tsx","../lib/components/ui/tabs.tsx","../lib/components/ui/toggle.tsx","../lib/components/ui/toggle-group.tsx","../lib/components/ui/action-button.tsx","../lib/crud/utils/routingHelpers.ts","../lib/auth/components/UserInfo.tsx","../lib/contexts/NavigationContext.tsx","../lib/hooks/usePageTitle.ts","../lib/hooks/useDebounce.ts","../lib/components/layout/AppHeader.tsx","../lib/hooks/useActiveModules.ts","../lib/assets/index.ts","../lib/components/layout/AppSidebar.tsx","../lib/components/ErrorBoundary.tsx","../lib/components/layout/AppLayout.tsx","../lib/auth/pages/CallbackPage.tsx","../lib/crud/components/CrudCards.tsx","../lib/crud/components/FilterBar.tsx","../lib/crud/GenericEntityForm.tsx","../lib/components/ui/loading-state.tsx","../lib/auth/pages/LoginPage.tsx","../lib/components/ui/page-breadcrumb.tsx","../lib/components/ui/sonner.tsx","../lib/components/ui/tab-page-layout.tsx","../lib/components/ui/toaster.tsx","../lib/crud/createCrudPage.tsx","../lib/crud/createSimpleService.ts","../lib/setup.ts"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.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\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\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\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (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 || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // 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\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 // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","// ============= UNIFIED UTILITIES =============\r\n\r\nimport { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\nimport { parseISO, isValid } from 'date-fns';\r\n\r\n// ============= CLASS UTILITIES =============\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n\r\n// ============= STRING UTILITIES =============\r\nexport const trimTextFields = (data: any): any => {\r\n if (data === null || data === undefined) return data;\r\n if (typeof data === 'string') return data.trim();\r\n if (Array.isArray(data)) return data.map(trimTextFields);\r\n \r\n if (typeof data === 'object' && data.constructor === Object) {\r\n const trimmed: any = {};\r\n for (const [key, value] of Object.entries(data)) {\r\n trimmed[key] = trimTextFields(value);\r\n }\r\n return trimmed;\r\n }\r\n \r\n return data;\r\n};\r\n\r\n// ============= DATE UTILITIES =============\r\nexport const formatDatetime = (dateString: string) => {\r\n if (!dateString) return '';\r\n \r\n const date = parseISO(dateString);\r\n if (!isValid(date)) return 'Data inválida';\r\n \r\n const dateStr = date.toLocaleDateString('pt-BR', {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric'\r\n });\r\n const timeStr = date.toLocaleTimeString('pt-BR', {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n });\r\n return `${dateStr} ${timeStr}`;\r\n};\r\n\r\n// ============= CURRENCY UTILITIES =============\r\n// Currency formatting utility for Brazilian Real\r\nexport const formatCurrency = (value: number | undefined | null): string => {\r\n if (value === undefined || value === null) return 'R$ 0,00';\r\n \r\n return new Intl.NumberFormat('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(value);\r\n};\r\n\r\n// ============= ASYNC UTILITIES =============\r\nexport const debounce = <T extends (...args: any[]) => any>(\r\n func: T,\r\n wait: number\r\n): ((...args: Parameters<T>) => void) => {\r\n let timeout: NodeJS.Timeout;\r\n \r\n return (...args: Parameters<T>) => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => func(...args), wait);\r\n };\r\n};","import * as React from \"react\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst buttonVariants = cva(\r\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\r\n destructive:\r\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\r\n outline:\r\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\r\n secondary:\r\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\r\n link: \"text-primary underline-offset-4 hover:underline\",\r\n \"icon-only\": \"bg-transparent border border-input hover:bg-accent hover:text-accent-foreground p-2\",\r\n \"external-link\": \"bg-transparent text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors\",\r\n \"action-primary\": \"bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm\",\r\n \"action-secondary\": \"bg-secondary text-secondary-foreground hover:bg-secondary/80 border border-input\",\r\n },\r\n size: {\r\n default: \"h-10 px-4 py-2\",\r\n sm: \"h-9 rounded-md px-3\",\r\n lg: \"h-11 rounded-md px-8\",\r\n icon: \"h-10 w-10\",\r\n \"icon-sm\": \"h-8 w-8\",\r\n \"icon-xs\": \"h-6 w-6\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n asChild?: boolean\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant, size, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\"\r\n return (\r\n <Comp\r\n className={cn(buttonVariants({ variant, size, className }))}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nButton.displayName = \"Button\"\r\n\r\nexport { Button, buttonVariants }","import * as React from \"react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\r\n ({ className, type, ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n className={cn(\r\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nInput.displayName = \"Input\"\r\n\r\nexport { Input }","import * as React from \"react\"\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst labelVariants = cva(\r\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\r\n)\r\n\r\nconst Label = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\r\n VariantProps<typeof labelVariants>\r\n>(({ className, ...props }, ref) => (\r\n <LabelPrimitive.Root\r\n ref={ref}\r\n className={cn(labelVariants(), className)}\r\n {...props}\r\n />\r\n))\r\nLabel.displayName = LabelPrimitive.Root.displayName\r\n\r\nexport { Label }","import * as React from \"react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Card = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCard.displayName = \"Card\"\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\r\n))\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\r\n \"text-2xl font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n))\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n))\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }","import * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Dialog = DialogPrimitive.Root\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 bg-background p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-lg overflow-hidden\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 z-10 rounded-sm text-white opacity-70 ring-offset-background transition-opacity hover:opacity-100 hover:text-white focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n))\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left bg-primary text-primary-foreground px-6 py-4 -mx-6 -mt-6 mb-3 rounded-t-lg\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n","import * as React from \"react\"\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\nimport {\r\n Controller,\r\n ControllerProps,\r\n FieldPath,\r\n FieldValues,\r\n FormProvider,\r\n useFormContext,\r\n} from \"react-hook-form\"\r\n\r\nimport { cn } from \"../../utils\"\r\nimport { Label } from \"./label\"\r\n\r\nconst Form = FormProvider\r\n\r\ntype FormFieldContextValue<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\r\n> = {\r\n name: TName\r\n}\r\n\r\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\r\n {} as FormFieldContextValue\r\n)\r\n\r\nconst FormField = <\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\r\n>({\r\n ...props\r\n}: ControllerProps<TFieldValues, TName>) => {\r\n return (\r\n <FormFieldContext.Provider value={{ name: props.name }}>\r\n <Controller {...props} />\r\n </FormFieldContext.Provider>\r\n )\r\n}\r\n\r\nconst useFormField = () => {\r\n const fieldContext = React.useContext(FormFieldContext)\r\n const itemContext = React.useContext(FormItemContext)\r\n const { getFieldState, formState } = useFormContext()\r\n\r\n const fieldState = getFieldState(fieldContext.name, formState)\r\n\r\n if (!fieldContext) {\r\n throw new Error(\"useFormField should be used within <FormField>\")\r\n }\r\n\r\n const { id } = itemContext\r\n\r\n return {\r\n id,\r\n name: fieldContext.name,\r\n formItemId: `${id}-form-item`,\r\n formDescriptionId: `${id}-form-item-description`,\r\n formMessageId: `${id}-form-item-message`,\r\n ...fieldState,\r\n }\r\n}\r\n\r\ntype FormItemContextValue = {\r\n id: string\r\n}\r\n\r\nconst FormItemContext = React.createContext<FormItemContextValue>(\r\n {} as FormItemContextValue\r\n)\r\n\r\nconst FormItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const id = React.useId()\r\n\r\n return (\r\n <FormItemContext.Provider value={{ id }}>\r\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\r\n </FormItemContext.Provider>\r\n )\r\n})\r\nFormItem.displayName = \"FormItem\"\r\n\r\nconst FormLabel = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\r\n>(({ className, ...props }, ref) => {\r\n const { error, formItemId } = useFormField()\r\n\r\n return (\r\n <Label\r\n ref={ref}\r\n className={cn(error && \"text-destructive\", className)}\r\n htmlFor={formItemId}\r\n {...props}\r\n />\r\n )\r\n})\r\nFormLabel.displayName = \"FormLabel\"\r\n\r\nconst FormControl = React.forwardRef<\r\n React.ElementRef<typeof Slot>,\r\n React.ComponentPropsWithoutRef<typeof Slot>\r\n>(({ ...props }, ref) => {\r\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\r\n\r\n return (\r\n <Slot\r\n ref={ref}\r\n id={formItemId}\r\n aria-describedby={\r\n !error\r\n ? `${formDescriptionId}`\r\n : `${formDescriptionId} ${formMessageId}`\r\n }\r\n aria-invalid={!!error}\r\n {...props}\r\n />\r\n )\r\n})\r\nFormControl.displayName = \"FormControl\"\r\n\r\nconst FormDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => {\r\n const { formDescriptionId } = useFormField()\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n id={formDescriptionId}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nFormDescription.displayName = \"FormDescription\"\r\n\r\nconst FormMessage = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, children, ...props }, ref) => {\r\n const { error, formMessageId } = useFormField()\r\n const body = error ? String(error?.message) : children\r\n\r\n if (!body) {\r\n return null\r\n }\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n id={formMessageId}\r\n className={cn(\"text-sm font-medium text-destructive\", className)}\r\n {...props}\r\n >\r\n {body}\r\n </p>\r\n )\r\n})\r\nFormMessage.displayName = \"FormMessage\"\r\n\r\nexport {\r\n useFormField,\r\n Form,\r\n FormItem,\r\n FormLabel,\r\n FormControl,\r\n FormDescription,\r\n FormMessage,\r\n FormField,\r\n}\r\n","import * as React from \"react\"\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Select = SelectPrimitive.Root\r\n\r\nconst SelectGroup = SelectPrimitive.Group\r\n\r\nconst SelectValue = SelectPrimitive.Value\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n))\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n))\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default items-center justify-center py-1\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n))\r\nSelectScrollDownButton.displayName =\r\n SelectPrimitive.ScrollDownButton.displayName\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n position === \"popper\" &&\r\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\r\n className\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-1\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n))\r\nSelectContent.displayName = SelectPrimitive.Content.displayName\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label\r\n ref={ref}\r\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n))\r\nSelectItem.displayName = SelectPrimitive.Item.displayName\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n}","import * as React from \"react\"\r\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\r\nimport { Check } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Checkbox = React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator\r\n className={cn(\"flex items-center justify-center text-current\")}\r\n >\r\n <Check className=\"h-4 w-4\" />\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n))\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\r\n\r\nexport { Checkbox }\r\n","import * as React from \"react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nexport interface TextareaProps\r\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(\r\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n )\r\n }\r\n)\r\nTextarea.displayName = \"Textarea\"\r\n\r\nexport { Textarea }","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst badgeVariants = cva(\r\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\r\n secondary:\r\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n destructive:\r\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\r\n outline: \"text-foreground\",\r\n success:\r\n \"border-transparent bg-green-500 text-white hover:bg-green-600\",\r\n warning:\r\n \"border-transparent bg-yellow-500 text-white hover:bg-yellow-600\",\r\n info:\r\n \"border-transparent bg-blue-500 text-white hover:bg-blue-600\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface BadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof badgeVariants> {}\r\n\r\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\r\n ({ className, variant, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn(badgeVariants({ variant }), className)} {...props} />\r\n )\r\n }\r\n)\r\n\r\nBadge.displayName = \"Badge\"\r\n\r\nexport { Badge, badgeVariants }","import { cn } from \"../../utils\"\r\nimport { Loader2 } from \"lucide-react\"\r\n\r\ninterface SpinnerProps {\r\n size?: \"sm\" | \"md\" | \"lg\"\r\n className?: string\r\n}\r\n\r\nconst sizeClasses = {\r\n sm: \"h-4 w-4\",\r\n md: \"h-6 w-6\", \r\n lg: \"h-8 w-8\"\r\n}\r\n\r\nexport function Spinner({ size = \"md\", className }: SpinnerProps) {\r\n return (\r\n <Loader2 \r\n className={cn(\r\n \"animate-spin text-muted-foreground\",\r\n sizeClasses[size],\r\n className\r\n )} \r\n />\r\n )\r\n}","import * as React from \"react\"\r\n\r\nimport type {\r\n ToastActionElement,\r\n ToastProps,\r\n} from \"../components/ui/toast\"\r\n\r\nconst TOAST_LIMIT = 1\r\nconst TOAST_REMOVE_DELAY = 1000000\r\n\r\ntype ToasterToast = ToastProps & {\r\n id: string\r\n title?: React.ReactNode\r\n description?: React.ReactNode\r\n action?: ToastActionElement\r\n}\r\n\r\nconst actionTypes = {\r\n ADD_TOAST: \"ADD_TOAST\",\r\n UPDATE_TOAST: \"UPDATE_TOAST\",\r\n DISMISS_TOAST: \"DISMISS_TOAST\",\r\n REMOVE_TOAST: \"REMOVE_TOAST\",\r\n} as const\r\n\r\nlet count = 0\r\n\r\nfunction genId() {\r\n count = (count + 1) % Number.MAX_SAFE_INTEGER\r\n return count.toString()\r\n}\r\n\r\ntype ActionType = typeof actionTypes\r\n\r\ntype Action =\r\n | {\r\n type: ActionType[\"ADD_TOAST\"]\r\n toast: ToasterToast\r\n }\r\n | {\r\n type: ActionType[\"UPDATE_TOAST\"]\r\n toast: Partial<ToasterToast>\r\n }\r\n | {\r\n type: ActionType[\"DISMISS_TOAST\"]\r\n toastId?: ToasterToast[\"id\"]\r\n }\r\n | {\r\n type: ActionType[\"REMOVE_TOAST\"]\r\n toastId?: ToasterToast[\"id\"]\r\n }\r\n\r\ninterface State {\r\n toasts: ToasterToast[]\r\n}\r\n\r\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\r\n\r\nconst addToRemoveQueue = (toastId: string) => {\r\n if (toastTimeouts.has(toastId)) {\r\n return\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n toastTimeouts.delete(toastId)\r\n dispatch({\r\n type: \"REMOVE_TOAST\",\r\n toastId: toastId,\r\n })\r\n }, TOAST_REMOVE_DELAY)\r\n\r\n toastTimeouts.set(toastId, timeout)\r\n}\r\n\r\nexport const reducer = (state: State, action: Action): State => {\r\n switch (action.type) {\r\n case \"ADD_TOAST\":\r\n return {\r\n ...state,\r\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\r\n }\r\n\r\n case \"UPDATE_TOAST\":\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === action.toast.id ? { ...t, ...action.toast } : t\r\n ),\r\n }\r\n\r\n case \"DISMISS_TOAST\": {\r\n const { toastId } = action\r\n\r\n // ! Side effects ! - This could be extracted into a dismissToast() action,\r\n // but I'll keep it here for simplicity\r\n if (toastId) {\r\n addToRemoveQueue(toastId)\r\n } else {\r\n state.toasts.forEach((toast) => {\r\n addToRemoveQueue(toast.id)\r\n })\r\n }\r\n\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === toastId || toastId === undefined\r\n ? {\r\n ...t,\r\n open: false,\r\n }\r\n : t\r\n ),\r\n }\r\n }\r\n case \"REMOVE_TOAST\":\r\n if (action.toastId === undefined) {\r\n return {\r\n ...state,\r\n toasts: [],\r\n }\r\n }\r\n return {\r\n ...state,\r\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\r\n }\r\n }\r\n}\r\n\r\nconst listeners: Array<(state: State) => void> = []\r\n\r\nlet memoryState: State = { toasts: [] }\r\n\r\nfunction dispatch(action: Action) {\r\n memoryState = reducer(memoryState, action)\r\n listeners.forEach((listener) => {\r\n listener(memoryState)\r\n })\r\n}\r\n\r\ntype Toast = Omit<ToasterToast, \"id\">\r\n\r\nfunction toast({ ...props }: Toast) {\r\n const id = genId()\r\n\r\n const update = (props: ToasterToast) =>\r\n dispatch({\r\n type: \"UPDATE_TOAST\",\r\n toast: { ...props, id },\r\n })\r\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\r\n\r\n dispatch({\r\n type: \"ADD_TOAST\",\r\n toast: {\r\n ...props,\r\n id,\r\n open: true,\r\n onOpenChange: (open) => {\r\n if (!open) dismiss()\r\n },\r\n },\r\n })\r\n\r\n return {\r\n id: id,\r\n dismiss,\r\n update,\r\n }\r\n}\r\n\r\nfunction useToast() {\r\n const [state, setState] = React.useState<State>(memoryState)\r\n\r\n React.useEffect(() => {\r\n listeners.push(setState)\r\n return () => {\r\n const index = listeners.indexOf(setState)\r\n if (index > -1) {\r\n listeners.splice(index, 1)\r\n }\r\n }\r\n }, [state])\r\n\r\n return {\r\n ...state,\r\n toast,\r\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\r\n }\r\n}\r\n\r\nexport { useToast, toast }\r\n","import * as React from \"react\"\r\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst ToastProvider = ToastPrimitives.Provider\r\n\r\nconst ToastViewport = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Viewport\r\n ref={ref}\r\n className={cn(\r\n \"fixed top-4 left-1/2 transform -translate-x-1/2 z-[100] flex max-h-screen w-full max-w-[420px] flex-col p-4\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\r\n\r\nconst toastVariants = cva(\r\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border bg-background text-foreground\",\r\n destructive:\r\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Toast = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\r\n VariantProps<typeof toastVariants>\r\n>(({ className, variant, ...props }, ref) => {\r\n return (\r\n <ToastPrimitives.Root\r\n ref={ref}\r\n className={cn(toastVariants({ variant }), className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nToast.displayName = ToastPrimitives.Root.displayName\r\n\r\nconst ToastAction = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Action>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Action\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nToastAction.displayName = ToastPrimitives.Action.displayName\r\n\r\nconst ToastClose = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Close>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Close\r\n ref={ref}\r\n className={cn(\r\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\r\n className\r\n )}\r\n toast-close=\"\"\r\n {...props}\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </ToastPrimitives.Close>\r\n))\r\nToastClose.displayName = ToastPrimitives.Close.displayName\r\n\r\nconst ToastTitle = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Title>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Title\r\n ref={ref}\r\n className={cn(\"text-sm font-semibold\", className)}\r\n {...props}\r\n />\r\n))\r\nToastTitle.displayName = ToastPrimitives.Title.displayName\r\n\r\nconst ToastDescription = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Description>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Description\r\n ref={ref}\r\n className={cn(\"text-sm opacity-90\", className)}\r\n {...props}\r\n />\r\n))\r\nToastDescription.displayName = ToastPrimitives.Description.displayName\r\n\r\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\r\n\r\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\r\n\r\nexport {\r\n type ToastProps,\r\n type ToastActionElement,\r\n ToastProvider,\r\n ToastViewport,\r\n Toast,\r\n ToastTitle,\r\n ToastDescription,\r\n ToastClose,\r\n ToastAction,\r\n}\r\n","// Gerenciamento centralizado de tokens\r\nconst STORAGE_KEYS = {\r\n qualiex_access: 'qualiex_access_token',\r\n qualiex_id: 'qualiex_id_token',\r\n supabase: 'supabase_token',\r\n oauth_state: 'oauth_state',\r\n oauth_nonce: 'oauth_nonce',\r\n selected_alias: 'selected_alias',\r\n manual_logout: 'manual_logout',\r\n} as const;\r\n\r\nexport const TokenManager = {\r\n // Qualiex Access Token\r\n setAccessToken: (token: string) => localStorage.setItem(STORAGE_KEYS.qualiex_access, token),\r\n getAccessToken: () => localStorage.getItem(STORAGE_KEYS.qualiex_access),\r\n \r\n // Qualiex ID Token\r\n setIdToken: (token: string) => localStorage.setItem(STORAGE_KEYS.qualiex_id, token),\r\n getIdToken: () => localStorage.getItem(STORAGE_KEYS.qualiex_id),\r\n \r\n // Supabase Token (com invalidação de cache)\r\n getSupabaseToken: () => localStorage.getItem(STORAGE_KEYS.supabase),\r\n \r\n // OAuth State\r\n setOAuthState: (state: string) => sessionStorage.setItem(STORAGE_KEYS.oauth_state, state),\r\n getOAuthState: () => sessionStorage.getItem(STORAGE_KEYS.oauth_state),\r\n clearOAuthState: () => sessionStorage.removeItem(STORAGE_KEYS.oauth_state),\r\n \r\n // OAuth Nonce\r\n setOAuthNonce: (nonce: string) => sessionStorage.setItem(STORAGE_KEYS.oauth_nonce, nonce),\r\n getOAuthNonce: () => sessionStorage.getItem(STORAGE_KEYS.oauth_nonce),\r\n clearOAuthNonce: () => sessionStorage.removeItem(STORAGE_KEYS.oauth_nonce),\r\n \r\n // Selected Alias\r\n setSelectedAlias: (alias: string) => localStorage.setItem(STORAGE_KEYS.selected_alias, alias),\r\n getSelectedAlias: () => localStorage.getItem(STORAGE_KEYS.selected_alias),\r\n clearSelectedAlias: () => localStorage.removeItem(STORAGE_KEYS.selected_alias),\r\n \r\n // Generators\r\n generateOAuthState: (): string => {\r\n return 'Lw==';\r\n },\r\n generateOAuthNonce: (): string => {\r\n const randomBytes = new Uint8Array(32);\r\n crypto.getRandomValues(randomBytes);\r\n return btoa(String.fromCharCode(...randomBytes)).replace(/[+/=]/g, '');\r\n },\r\n \r\n // Utils\r\n hasAllTokens: () => !!(TokenManager.getAccessToken() && TokenManager.getIdToken()),\r\n\r\n // Invalidar cache quando tokens são atualizados\r\n setSupabaseToken: (token: string) => {\r\n localStorage.setItem(STORAGE_KEYS.supabase, token);\r\n TokenManager._clearValidationCache();\r\n },\r\n \r\n // Verify all tokens are valid\r\n areAllTokensValid: (): boolean => {\r\n const accessToken = TokenManager.getAccessToken();\r\n const idToken = TokenManager.getIdToken();\r\n const supabaseToken = TokenManager.getSupabaseToken();\r\n \r\n if (!accessToken || !idToken) return false;\r\n \r\n // Check if main tokens are expired\r\n if (TokenManager.isTokenExpired(accessToken) || TokenManager.isTokenExpired(idToken)) {\r\n return false;\r\n }\r\n \r\n // Supabase token is optional but if present, should be valid\r\n if (supabaseToken && TokenManager.isTokenExpired(supabaseToken)) {\r\n return false;\r\n }\r\n \r\n return true;\r\n },\r\n \r\n // Clear expired tokens only\r\n clearExpiredTokens: (): boolean => {\r\n let clearedAny = false;\r\n \r\n const accessToken = TokenManager.getAccessToken();\r\n const idToken = TokenManager.getIdToken();\r\n const supabaseToken = TokenManager.getSupabaseToken();\r\n \r\n if (accessToken && TokenManager.isTokenExpired(accessToken)) {\r\n localStorage.removeItem(STORAGE_KEYS.qualiex_access);\r\n clearedAny = true;\r\n }\r\n \r\n if (idToken && TokenManager.isTokenExpired(idToken)) {\r\n localStorage.removeItem(STORAGE_KEYS.qualiex_id);\r\n clearedAny = true;\r\n }\r\n \r\n if (supabaseToken && TokenManager.isTokenExpired(supabaseToken)) {\r\n localStorage.removeItem(STORAGE_KEYS.supabase);\r\n clearedAny = true;\r\n }\r\n \r\n return clearedAny;\r\n },\r\n \r\n clearAll: () => {\r\n localStorage.removeItem(STORAGE_KEYS.qualiex_access);\r\n localStorage.removeItem(STORAGE_KEYS.qualiex_id);\r\n localStorage.removeItem(STORAGE_KEYS.supabase);\r\n localStorage.removeItem(STORAGE_KEYS.selected_alias);\r\n localStorage.removeItem(STORAGE_KEYS.manual_logout);\r\n sessionStorage.removeItem(STORAGE_KEYS.oauth_state);\r\n sessionStorage.removeItem(STORAGE_KEYS.oauth_nonce);\r\n },\r\n\r\n // Manual logout flag\r\n setManualLogout: () => localStorage.setItem(STORAGE_KEYS.manual_logout, 'true'),\r\n isManualLogout: () => localStorage.getItem(STORAGE_KEYS.manual_logout) === 'true',\r\n clearManualLogout: () => localStorage.removeItem(STORAGE_KEYS.manual_logout),\r\n \r\n // Token validation\r\n isTokenExpired: (token: string): boolean => {\r\n try {\r\n const payload = JSON.parse(atob(token.split('.')[1]));\r\n return payload.exp * 1000 < Date.now();\r\n } catch {\r\n return true;\r\n }\r\n },\r\n\r\n // Cache de validação (5 minutos)\r\n _validationCache: {\r\n isValid: false,\r\n timestamp: 0,\r\n cacheValidityMs: 5 * 60 * 1000 // 5 minutos\r\n },\r\n\r\n // Limpar cache de validação\r\n _clearValidationCache: () => {\r\n TokenManager._validationCache.isValid = false;\r\n TokenManager._validationCache.timestamp = 0;\r\n },\r\n\r\n // Supabase token validation with local check first\r\n isSupabaseTokenValid: (): boolean => {\r\n const token = TokenManager.getSupabaseToken();\r\n if (!token) return false;\r\n\r\n // 1. Verificação local primeiro (timestamp)\r\n if (TokenManager.isTokenExpired(token)) {\r\n // Token expirado localmente - limpar cache e sessão\r\n TokenManager._clearValidationCache();\r\n TokenManager._handleExpiredToken();\r\n return false;\r\n }\r\n\r\n // 2. Verificar cache de validação\r\n const now = Date.now();\r\n const cacheAge = now - TokenManager._validationCache.timestamp;\r\n if (cacheAge < TokenManager._validationCache.cacheValidityMs) {\r\n return TokenManager._validationCache.isValid;\r\n }\r\n\r\n // 3. Token válido localmente, atualizar cache\r\n TokenManager._validationCache.isValid = true;\r\n TokenManager._validationCache.timestamp = now;\r\n return true;\r\n },\r\n\r\n getValidSupabaseToken: (): string | null => {\r\n // Usar validação centralizada\r\n if (!TokenManager.isSupabaseTokenValid()) {\r\n return null;\r\n }\r\n return TokenManager.getSupabaseToken();\r\n },\r\n\r\n // Tratamento automático de token expirado\r\n _handleExpiredToken: () => {\r\n console.warn('[TokenManager] Token expirado detectado - limpando sessão');\r\n TokenManager.clearAll();\r\n \r\n // Redirecionar para login imediatamente\r\n if (typeof window !== 'undefined') {\r\n window.location.href = '/';\r\n }\r\n },\r\n\r\n // Extrair dados do token Supabase com validação prévia\r\n extractTokenData: () => {\r\n // 1. Verificar validade antes de extrair dados\r\n if (!TokenManager.isSupabaseTokenValid()) {\r\n console.warn('[TokenManager] Tentativa de extrair dados de token inválido/expirado');\r\n return null;\r\n }\r\n\r\n const token = TokenManager.getSupabaseToken();\r\n if (!token) return null;\r\n\r\n try {\r\n // Extrair alias e companyId do token\r\n const payload = JSON.parse(atob(token.split('.')[1]));\r\n const alias = payload.alias || payload.default || payload.user_alias;\r\n \r\n // Tentar extrair companyId de diferentes formas\r\n let companyId = payload.company_id;\r\n if (!companyId && alias) {\r\n // Procurar por campos co* que contenham o alias\r\n for (const key in payload) {\r\n if (key.startsWith('co') && /^co\\d+$/.test(key)) {\r\n const coField = payload[key];\r\n if (coField && typeof coField === 'string') {\r\n const parts = coField.split(';');\r\n if (parts.length > 7 && parts[0] === alias) {\r\n companyId = parts[7]; // companyId está na posição 7\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { alias, companyId, payload };\r\n } catch (error) {\r\n console.error('[TokenManager] Erro ao extrair dados do token:', error);\r\n // Token corrompido - limpar e forçar logout\r\n TokenManager._handleExpiredToken();\r\n return null;\r\n }\r\n },\r\n\r\n // Métodos utilitários adicionais\r\n getCompanyId: (alias?: string): string | null => {\r\n const tokenData = TokenManager.extractTokenData();\r\n if (!tokenData) return null;\r\n \r\n if (!alias) {\r\n return tokenData.companyId;\r\n }\r\n \r\n // Se alias específico fornecido, buscar no ID token\r\n const idToken = TokenManager.getIdToken();\r\n if (!idToken) return null;\r\n \r\n try {\r\n const payload = JSON.parse(atob(idToken.split('.')[1]));\r\n for (const key in payload) {\r\n if (key.startsWith('co') && /^co\\d+$/.test(key)) {\r\n const coField = payload[key];\r\n if (coField && typeof coField === 'string') {\r\n const parts = coField.split(';');\r\n if (parts.length > 7 && parts[0] === alias) {\r\n return parts[7];\r\n }\r\n }\r\n }\r\n }\r\n } catch {\r\n return null;\r\n }\r\n \r\n return null;\r\n },\r\n\r\n getCurrentCompanyId: (): string | null => {\r\n const tokenData = TokenManager.extractTokenData();\r\n return tokenData?.companyId || null;\r\n },\r\n\r\n getAllCompaniesData: () => {\r\n const idToken = TokenManager.getIdToken();\r\n if (!idToken) return [];\r\n \r\n try {\r\n const payload = JSON.parse(atob(idToken.split('.')[1]));\r\n const companies: Array<{ id: string; alias: string; name: string; payload: any }> = [];\r\n \r\n for (const key in payload) {\r\n if (key.startsWith('co') && /^co\\d+$/.test(key)) {\r\n const coField = payload[key];\r\n if (coField && typeof coField === 'string') {\r\n const parts = coField.split(';');\r\n if (parts.length >= 4) {\r\n companies.push({\r\n id: parts.length > 7 ? parts[7] : '',\r\n alias: parts[0].trim(),\r\n name: parts[3].trim(),\r\n payload: payload\r\n });\r\n }\r\n }\r\n }\r\n }\r\n \r\n return companies;\r\n } catch {\r\n return [];\r\n }\r\n },\r\n};","// ============= SIMPLIFIED ERROR SERVICE =============\r\n\r\nimport { toast } from '../hooks/use-toast';\r\n\r\ninterface ErrorEntry {\r\n id: string;\r\n message: string;\r\n timestamp: number;\r\n count: number;\r\n}\r\n\r\nclass ErrorService {\r\n private errors: ErrorEntry[] = [];\r\n private toastCount = 0;\r\n private lastToastTime = 0;\r\n\r\n // Simple error handling\r\n handleError(error: Error | string, showToast = true) {\r\n const message = typeof error === 'string' ? error : error.message;\r\n \r\n // Add to log\r\n this.errors.push({\r\n id: Date.now().toString(),\r\n message,\r\n timestamp: Date.now(),\r\n count: 1\r\n });\r\n\r\n // Show toast with rate limiting\r\n if (showToast && this.shouldShowToast()) {\r\n toast({\r\n title: 'Erro',\r\n description: message,\r\n variant: 'destructive',\r\n });\r\n }\r\n\r\n \r\n }\r\n\r\n // Simple success notification\r\n success(title: string, description?: string) {\r\n toast({\r\n title,\r\n description,\r\n variant: 'default',\r\n });\r\n }\r\n\r\n // Rate limiting for toasts\r\n private shouldShowToast(): boolean {\r\n const now = Date.now();\r\n if (now - this.lastToastTime > 60000) { // Reset after 1 minute\r\n this.toastCount = 0;\r\n }\r\n \r\n if (this.toastCount < 3) { // Max 3 toasts per minute\r\n this.toastCount++;\r\n this.lastToastTime = now;\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n // Get recent errors\r\n getErrors() {\r\n return this.errors.slice(-50); // Keep last 50 errors\r\n }\r\n\r\n // Clear errors\r\n clearErrors() {\r\n this.errors = [];\r\n }\r\n}\r\n\r\nexport const errorService = new ErrorService();","// ============= DEFINITIVE SUPABASE SINGLETON =============\r\n\r\nimport { createClient } from '@supabase/supabase-js';\r\nimport type { Database } from './types';\r\nimport { TokenManager } from '../auth/services/TokenManager';\r\nimport { errorService } from '../services/ErrorService';\r\n\r\n// Configuração do Supabase\r\nconst SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL;\r\nconst SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY;\r\n\r\n// ============= SINGLETON PATTERN ROBUSTO =============\r\n\r\nclass SupabaseSingleton {\r\n private static instance: SupabaseSingleton;\r\n private client: ReturnType<typeof createClient<Database>>;\r\n private currentToken: string | null = null;\r\n private instanceCount = 0;\r\n private isRegenerating = false;\r\n\r\n private constructor() {\r\n this.instanceCount++;\r\n \r\n // Create initial client without token\r\n this.client = this.createClientWithToken(null);\r\n }\r\n\r\n private createClientWithToken(token: string | null) {\r\n const headers: Record<string, string> = {\r\n 'apikey': SUPABASE_PUBLISHABLE_KEY\r\n };\r\n\r\n if (token && this.isTokenValid(token)) {\r\n headers['Authorization'] = `Bearer ${token}`;\r\n }\r\n\r\n return createClient<Database>(SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY, {\r\n auth: {\r\n persistSession: false,\r\n autoRefreshToken: false,\r\n storage: undefined, // Disable storage to prevent conflicts\r\n },\r\n global: {\r\n headers\r\n }\r\n });\r\n }\r\n\r\n public static getInstance(): SupabaseSingleton {\r\n if (!SupabaseSingleton.instance) {\r\n SupabaseSingleton.instance = new SupabaseSingleton();\r\n }\r\n return SupabaseSingleton.instance;\r\n }\r\n\r\n public getClient() {\r\n const token = TokenManager.getValidSupabaseToken();\r\n \r\n // Se não há token válido, mas temos tokens Qualiex, tentar regenerar UMA VEZ\r\n if (!token && TokenManager.areAllTokensValid() && !this.isRegenerating) {\r\n this.attemptTokenRegeneration();\r\n }\r\n \r\n // Usar token válido ou null (não recriar cliente desnecessariamente)\r\n const finalToken = TokenManager.getValidSupabaseToken();\r\n if (finalToken !== this.currentToken) {\r\n // Atualizar headers em vez de recriar cliente\r\n // Recriar cliente com novo token para garantir headers corretos em todas as requisições\r\n this.client = this.createClientWithToken(finalToken);\r\n this.currentToken = finalToken;\r\n }\r\n \r\n return this.client;\r\n }\r\n\r\n private async attemptTokenRegeneration() {\r\n if (this.isRegenerating) return;\r\n \r\n this.isRegenerating = true;\r\n try {\r\n const accessToken = TokenManager.getAccessToken();\r\n const selectedAlias = TokenManager.getSelectedAlias();\r\n \r\n if (!accessToken || !selectedAlias) return;\r\n \r\n // Import dinâmico para evitar dependência circular\r\n const { AuthService } = await import('../auth/services/AuthService');\r\n const newToken = await AuthService.generateSupabaseToken(accessToken, selectedAlias);\r\n \r\n if (newToken) {\r\n TokenManager.setSupabaseToken(newToken);\r\n }\r\n } catch (error) {\r\n console.error('[Supabase] Erro ao regenerar token:', error);\r\n } finally {\r\n this.isRegenerating = false;\r\n }\r\n }\r\n\r\n private isTokenValid(token: string): boolean {\r\n try {\r\n const payload = JSON.parse(atob(token.split('.')[1]));\r\n const now = Math.floor(Date.now() / 1000);\r\n return payload.exp > now;\r\n } catch (error) {\r\n errorService.handleError(error instanceof Error ? error : '❌ Supabase - Error validating token', false);\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n// ============= EXPORTS =============\r\n\r\nexport const getSupabaseClient = () => {\r\n return SupabaseSingleton.getInstance().getClient();\r\n};","import { TokenManager } from '../../auth/services/TokenManager';\r\nimport { QualiexUser } from '../../types';\r\nimport { errorService } from '../../services/ErrorService';\r\n\r\ninterface QualiexApiResponse {\r\n success: boolean;\r\n data?: any[];\r\n error?: string;\r\n message?: string;\r\n}\r\n\r\nclass QualiexApiService {\r\n private baseUrl = import.meta.env.VITE_QUALIEX_API_URL;\r\n\r\n /**\r\n * Faz uma chamada para a API do Qualiex\r\n * IMPORTANTE: O header 'un-alias' é OBRIGATÓRIO para todas as requisições da API common-v4\r\n * Sem este header, a API retorna erro 401 \"ID not found\"\r\n */\r\n private async makeApiCall(endpoint: string, params: Record<string, string>, alias: string): Promise<any> {\r\n const token = TokenManager.getAccessToken();\r\n \r\n if (!token) {\r\n throw new Error('Token Qualiex não encontrado');\r\n }\r\n\r\n // Validação obrigatória: alias não pode ser vazio\r\n if (!alias || alias.trim() === '') {\r\n throw new Error('Alias da unidade é obrigatório para chamadas à API do Qualiex');\r\n }\r\n\r\n const url = new URL(endpoint, this.baseUrl);\r\n Object.entries(params).forEach(([key, value]) => {\r\n url.searchParams.append(key, value);\r\n });\r\n\r\n const response = await fetch(url.toString(), {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json',\r\n // CRÍTICO: Header 'un-alias' é obrigatório para a API common-v4 do Qualiex\r\n // Sem este header, todas as requisições falham com 401 \"ID not found\"\r\n 'un-alias': alias,\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`API call failed: ${response.status} ${response.statusText}`);\r\n }\r\n\r\n const data = await response.json();\r\n \r\n return data;\r\n }\r\n\r\n private mapToQualiexUser(userData: any): QualiexUser {\r\n // Mapear os dados retornados pela API para o formato esperado (userId, userName, userEmail)\r\n return {\r\n userId: userData.userId || String(userData.ID),\r\n userName: userData.userName || 'Nome não disponível',\r\n userEmail: userData.userEmail || 'Email não disponível',\r\n };\r\n }\r\n\r\n async fetchUsers(alias: string, companyId: string): Promise<QualiexUser[]> {\r\n try {\r\n // Fazer chamada para API real do Qualiex\r\n // Endpoint correto: /api/common/v1/companiesusers\r\n // IMPORTANTE: Passando o alias como terceiro parâmetro para incluir o header 'un-alias'\r\n const response = await this.makeApiCall('/api/common/v1/companiesusers', {\r\n companyId,\r\n search: '', // Busca vazia por padrão\r\n filterStatus: 'active', // Apenas usuários ativos\r\n }, alias);\r\n\r\n // A API common-v4 pode retornar dados diretamente ou em uma propriedade específica\r\n let userData = response;\r\n if (response.data) {\r\n userData = response.data;\r\n } else if (Array.isArray(response)) {\r\n userData = response;\r\n } else {\r\n errorService.handleError('[QualiexApi] Unexpected response format', false);\r\n return [];\r\n }\r\n\r\n if (!Array.isArray(userData)) {\r\n errorService.handleError('[QualiexApi] Response is not an array', false);\r\n return [];\r\n }\r\n\r\n // Mapear os dados para o formato esperado\r\n const users: QualiexUser[] = userData.map(this.mapToQualiexUser);\r\n\r\n return users;\r\n\r\n } catch (error) {\r\n errorService.handleError(error instanceof Error ? error : '[QualiexApi] Error fetching users');\r\n return [];\r\n }\r\n }\r\n\r\n // Método para buscar um usuário específico por ID\r\n async fetchUserById(userId: string, alias: string, companyId: string): Promise<QualiexUser | null> {\r\n try {\r\n const users = await this.fetchUsers(alias, companyId);\r\n return users.find(user => user.userId === userId) || null;\r\n } catch (error) {\r\n errorService.handleError(error instanceof Error ? error : '[QualiexApi] Error fetching user by ID');\r\n return null;\r\n }\r\n }\r\n\r\n\r\n // Método público para buscar usuários - usado pelo hook useQualiexUsers\r\n async getUsers(alias: string): Promise<QualiexUser[]> {\r\n // Extrair companyId do token Supabase\r\n const tokenData = TokenManager.extractTokenData();\r\n \r\n if (!tokenData || !tokenData.companyId) {\r\n errorService.handleError('[QualiexApi] CompanyId não encontrado no token Supabase', false);\r\n return [];\r\n }\r\n \r\n return this.fetchUsers(alias, tokenData.companyId);\r\n }\r\n}\r\n\r\nexport const qualiexApi = new QualiexApiService();","// ============= QUALIEX ENRICHMENT SERVICE =============\r\n\r\nimport { qualiexApi } from '../qualiex/services/qualiexApi';\r\nimport { TokenManager } from '../auth/services/TokenManager';\r\nimport { errorService } from './ErrorService';\r\n\r\nexport interface QualiexEnrichmentOptions {\r\n entityName: string;\r\n fallbackResponsibleText?: string;\r\n}\r\n\r\nexport class QualiexEnrichmentService {\r\n private static async extractTokenData() {\r\n const tokenData = TokenManager.extractTokenData();\r\n \r\n if (!tokenData) {\r\n errorService.handleError('[QualiexEnrichment] ❌ Token Supabase não encontrado', false);\r\n return null;\r\n }\r\n\r\n return tokenData;\r\n }\r\n\r\n static async enrichWithResponsibleNames<T extends { id_user?: string | null }>(\r\n entities: T[],\r\n options: QualiexEnrichmentOptions\r\n ): Promise<(T & { responsible_name?: string })[]> {\r\n // Se não há entidades, retornar vazio\r\n if (!entities || entities.length === 0) {\r\n errorService.handleError(`[QualiexEnrichment.${options.entityName}] Nenhuma entidade encontrada`, false);\r\n return entities as (T & { responsible_name?: string })[];\r\n }\r\n\r\n try {\r\n const tokenData = await this.extractTokenData();\r\n \r\n if (!tokenData) {\r\n return entities.map(entity => ({\r\n ...entity,\r\n responsible_name: entity.id_user ? 'Token não encontrado' : null\r\n }));\r\n }\r\n\r\n const { alias, companyId } = tokenData;\r\n\r\n if (!alias || !companyId) {\r\n errorService.handleError(`[QualiexEnrichment.${options.entityName}] DADOS OBRIGATÓRIOS FALTANDO - alias: ${!!alias}, companyId: ${!!companyId}`, false);\r\n return entities.map(entity => ({\r\n ...entity,\r\n responsible_name: entity.id_user ? `Configuração incompleta (alias: ${!!alias}, companyId: ${!!companyId})` : null\r\n }));\r\n }\r\n\r\n // Buscar usuários do Qualiex\r\n const qualiexUsers = await qualiexApi.getUsers(alias);\r\n\r\n // Mapear entidades com nomes dos responsáveis\r\n const entitiesWithResponsibleNames = entities.map(entity => { \r\n if (entity.id_user) {\r\n // Tentar encontrar por userId primeiro, depois por id\r\n const responsibleUser = qualiexUsers.find(user => user.userId === entity.id_user);\r\n \r\n return {\r\n ...entity,\r\n responsible_name: responsibleUser?.userName || `ID não encontrado: ${entity.id_user}`\r\n };\r\n }\r\n return {\r\n ...entity,\r\n responsible_name: null\r\n };\r\n });\r\n \r\n const successCount = entitiesWithResponsibleNames.filter(e => \r\n e.responsible_name && \r\n !e.responsible_name.includes('ID não encontrado') && \r\n !e.responsible_name.includes('Erro:') &&\r\n !e.responsible_name.includes('Token não encontrado') &&\r\n !e.responsible_name.includes('Configuração incompleta')\r\n ).length;\r\n\r\n return entitiesWithResponsibleNames;\r\n\r\n } catch (error) {\r\n errorService.handleError(error instanceof Error ? error : `[QualiexEnrichment.${options.entityName}] 💥 ERRO CRÍTICO`);\r\n // Retornar entidades sem nomes dos responsáveis em caso de erro\r\n return entities.map(entity => ({\r\n ...entity,\r\n responsible_name: entity.id_user ? `Erro: ${error.message}` : null\r\n }));\r\n }\r\n }\r\n}","// Auth Configuration\r\nexport const AUTH_CONFIG = {\r\n oauth: {\r\n authUrl: import.meta.env.VITE_OAUTH_AUTH_URL,\r\n clientId: import.meta.env.VITE_OAUTH_CLIENT_ID,\r\n responseType: 'id_token token',\r\n scope: 'openid profile email',\r\n },\r\n} as const;\r\n\r\n// CRUD Configuration \r\nexport const CRUD_CONFIG = {\r\n pagination: {\r\n defaultPageSize: 25,\r\n pageSizeOptions: [10, 25, 50, 100],\r\n },\r\n sorting: {\r\n defaultField: 'updated_at',\r\n defaultDirection: 'desc' as const,\r\n },\r\n} as const;\r\n\r\n// Search Configuration\r\nexport const SEARCH_CONFIG = {\r\n debounceDelay: 500,\r\n} as const;\r\n\r\n// Environment Detection\r\nexport const isDevEnvironment = (): boolean => {\r\n const origin = window.location.origin;\r\n \r\n // Apenas localhost, 127.0.0.1 e lovable.dev são desenvolvimento\r\n const isDev = (\r\n origin.includes('localhost') || \r\n origin.includes('127.0.0.1') || \r\n origin.includes('id-preview') ||\r\n origin.includes('lovable.dev') ||\r\n import.meta.env.DEV\r\n );\r\n \r\n return isDev;\r\n};\r\n\r\n// Query Keys\r\nexport const QUERY_KEYS = {\r\n crud: (entity: string) => [entity] as const,\r\n list: (entity: string, filters?: Record<string, any>) => [entity, 'list', filters] as const,\r\n detail: (entity: string, id: string) => [entity, 'detail', id] as const,\r\n} as const;\r\n\r\n// Qualiex Configuration\r\nlet QUALIEX_CONFIG = {\r\n enableUserEnrichment: false,\r\n enableUsersApi: false,\r\n};\r\n\r\nexport const getQualiexConfig = () => QUALIEX_CONFIG;\r\n\r\nexport const setQualiexConfig = (config: Partial<typeof QUALIEX_CONFIG>) => {\r\n QUALIEX_CONFIG = { ...QUALIEX_CONFIG, ...config };\r\n};\r\n\r\n// Messages\r\nexport const MESSAGES = {\r\n success: {\r\n created: (entity: string) => `${entity} criado com sucesso`,\r\n updated: (entity: string) => `${entity} atualizado com sucesso`, \r\n deleted: (entity: string) => `${entity} removido com sucesso`,\r\n },\r\n error: {\r\n create: (entity: string) => `Erro ao criar ${entity}`,\r\n update: (entity: string) => `Erro ao atualizar ${entity}`,\r\n delete: (entity: string) => `Erro ao remover ${entity}`,\r\n load: (entity: string) => `Erro ao carregar ${entity}`,\r\n },\r\n} as const;","import { getSupabaseClient } from '../supabase/SupabaseSingleton';\r\nimport { QualiexEnrichmentService } from './QualiexEnrichmentService';\r\nimport type { PaginatedResponse, QueryParams } from '../types';\r\nimport { trimTextFields } from '../utils';\r\nimport { getQualiexConfig } from '../config';\r\nimport { TokenManager } from '../auth/services/TokenManager';\r\n\r\n// Using QueryParams from shared types\r\n\r\nexport interface ServiceOptions {\r\n tableName: string;\r\n searchFields?: string[];\r\n selectFields?: string; // Campos para select com joins (ex: \"*, categories(name)\")\r\n schemaName?: string;\r\n entityName?: string; // Para enrichment com Qualiex\r\n enableQualiexEnrichment?: boolean; // Controla se deve enriquecer com dados do Qualiex\r\n}\r\n\r\n// Campos virtuais conhecidos\r\nconst VIRTUAL_FIELDS = ['responsible_name'];\r\n\r\nconst isVirtualField = (field: string): boolean => VIRTUAL_FIELDS.includes(field);\r\n\r\nconst sortData = <T>(data: T[], sortField: string, sortDirection: 'asc' | 'desc'): T[] => {\r\n return [...data].sort((a, b) => {\r\n const aValue = (a as any)[sortField] || '';\r\n const bValue = (b as any)[sortField] || '';\r\n const comparison = aValue.localeCompare(bValue, 'pt-BR', { sensitivity: 'base' });\r\n return sortDirection === 'asc' ? comparison : -comparison;\r\n });\r\n};\r\n\r\nconst paginateData = <T>(data: T[], page: number = 1, limit: number = 25) => {\r\n const startIndex = (page - 1) * limit;\r\n const endIndex = startIndex + limit;\r\n const paginatedData = data.slice(startIndex, endIndex);\r\n \r\n return {\r\n data: paginatedData,\r\n pagination: {\r\n currentPage: page,\r\n totalPages: Math.ceil(data.length / limit),\r\n totalItems: paginatedData.length,\r\n totalCount: data.length,\r\n itemsPerPage: limit,\r\n hasNextPage: endIndex < data.length,\r\n hasPreviousPage: page > 1\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Factory function to create a service with CRUD operations for Supabase tables\r\n * \r\n * IMPORTANT: This service is designed for SOFT DELETE architecture\r\n * - delete() method sets is_removed = true (NO physical DELETE)\r\n * - getAll() automatically filters is_removed = false\r\n * - Works with RLS policies that expect company_id filtering\r\n * \r\n * Expected Table Structure:\r\n * - id: UUID PRIMARY KEY\r\n * - company_id: TEXT NOT NULL (for RLS filtering)\r\n * - is_removed: BOOLEAN DEFAULT false (for soft delete)\r\n * - created_at/updated_at: TIMESTAMP WITH TIME ZONE\r\n * \r\n * Expected RLS Policies:\r\n * - SELECT: company_id filter + is_removed = false\r\n * - INSERT: company_id validation \r\n * - UPDATE: company_id filter\r\n * - DELETE: NOT NEEDED (soft delete used)\r\n * \r\n * @param options Service configuration or table name\r\n * @param searchFields Optional array of fields to search in (deprecated - use options object)\r\n * @param schemaName Optional schema name (deprecated - use options object)\r\n */\r\nexport function createService<T extends { id_user?: string | null } = any, TInsert = any, TUpdate = any>(\r\n options: ServiceOptions | string, // Mantém compatibilidade com API antiga\r\n searchFields?: string[],\r\n schemaName?: string\r\n) {\r\n // Normalizar parâmetros para suportar ambas as APIs\r\n const config: ServiceOptions = typeof options === 'string' \r\n ? { \r\n tableName: options, \r\n searchFields: searchFields || [], \r\n schemaName: schemaName || 'central' \r\n }\r\n : { \r\n searchFields: options.searchFields || [], \r\n schemaName: options.schemaName || 'central',\r\n ...options \r\n };\r\n\r\n const { tableName, searchFields: configSearchFields, selectFields, schemaName: configSchemaName, entityName, enableQualiexEnrichment = false } = config;\r\n const createQuery = () => {\r\n // Verificar se token Supabase é válido antes de usar\r\n const validToken = TokenManager.getValidSupabaseToken();\r\n if (!validToken) {\r\n throw new Error('Token de autenticação expirado. Faça login novamente.');\r\n }\r\n \r\n // Always get the current authenticated client\r\n const client = getSupabaseClient();\r\n return (client as any).schema(configSchemaName).from(tableName);\r\n };\r\n\r\n const buildSearchQuery = (query: any, search: string) => {\r\n if (search && configSearchFields.length > 0) {\r\n const searchConditions = configSearchFields.map(field => `${field}.ilike.%${search}%`).join(',');\r\n return query.or(searchConditions);\r\n }\r\n return query;\r\n };\r\n\r\n const buildPaginatedQuery = (query: any, page: number, limit: number) => {\r\n const from = (page - 1) * limit;\r\n const to = from + limit - 1;\r\n return query.range(from, to);\r\n };\r\n\r\n const createPaginatedResponse = <TData>(\r\n data: TData[],\r\n count: number | null,\r\n page: number,\r\n limit: number\r\n ): PaginatedResponse<TData> => {\r\n const totalPages = Math.ceil((count || 0) / limit);\r\n \r\n return {\r\n data,\r\n currentPage: page,\r\n totalPages,\r\n totalItems: count || 0,\r\n itemsPerPage: limit,\r\n hasNextPage: page < totalPages,\r\n hasPreviousPage: page > 1,\r\n };\r\n };\r\n\r\n return {\r\n async getAll(params: QueryParams = {}): Promise<PaginatedResponse<T & { responsible_name?: string }>> {\r\n \r\n const {\r\n search = '',\r\n sortField = 'updated_at',\r\n sortDirection = 'desc',\r\n page = 1,\r\n limit = 25,\r\n ...additionalFilters\r\n } = params;\r\n\r\n let query = createQuery().select(selectFields || '*', { count: 'exact' });\r\n\r\n // ✅ Filtrar registros não removidos no nível da aplicação\r\n query = query.eq('is_removed', false);\r\n\r\n // Apply additional filters\r\n Object.entries(additionalFilters).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null && value !== '') {\r\n // Se o valor é um array, usar filter 'in'\r\n if (Array.isArray(value)) {\r\n query = query.in(key, value);\r\n } else if (typeof value === 'object' && value && 'operator' in value && value.operator === 'not_null') {\r\n query = query.not(key, 'is', null);\r\n } else {\r\n query = query.eq(key, value);\r\n }\r\n }\r\n });\r\n\r\n // Apply search filter\r\n query = buildSearchQuery(query, search);\r\n\r\n // Apply sorting\r\n query = query.order(sortField, { ascending: sortDirection === 'asc' });\r\n\r\n // Apply pagination\r\n query = buildPaginatedQuery(query, page, limit);\r\n\r\n const { data, error, count } = await query;\r\n\r\n if (error) {\r\n throw new Error(`Error fetching ${tableName}: ${error.message}`);\r\n }\r\n\r\n let response = createPaginatedResponse<T>(data || [], count, page, limit);\r\n\r\n // Se entityName foi fornecido e enriquecimento está habilitado globalmente e localmente, aplicar enrichment com Qualiex\r\n const qualiexConfig = getQualiexConfig();\r\n if (enableQualiexEnrichment && qualiexConfig.enableUserEnrichment && entityName && response.data.length > 0) {\r\n // Verifica se alguma entidade tem id_user antes de tentar enriquecer\r\n const hasUsersToEnrich = response.data.some((item: any) => item.id_user);\r\n \r\n if (hasUsersToEnrich) {\r\n // Para campos virtuais, buscar dados maiores e processar localmente\r\n if (sortField && isVirtualField(sortField)) {\r\n // Refazer a query sem paginação e ordenação para virtual fields\r\n const largeParams = { ...params, page: 1, limit: 500, sortField: undefined, sortDirection: undefined };\r\n const largeResponse = await this.getAll(largeParams);\r\n \r\n if (!largeResponse?.data?.length) {\r\n return largeResponse as PaginatedResponse<T & { responsible_name?: string }>;\r\n }\r\n\r\n const enrichedData = await QualiexEnrichmentService.enrichWithResponsibleNames(\r\n largeResponse.data,\r\n { entityName }\r\n );\r\n\r\n const sortedData = sortData(enrichedData, sortField, sortDirection);\r\n const paginatedResult = paginateData(sortedData, page, limit);\r\n\r\n return {\r\n data: paginatedResult.data,\r\n currentPage: paginatedResult.pagination.currentPage,\r\n totalPages: paginatedResult.pagination.totalPages,\r\n totalItems: paginatedResult.pagination.totalItems,\r\n itemsPerPage: paginatedResult.pagination.itemsPerPage,\r\n hasNextPage: paginatedResult.pagination.hasNextPage,\r\n hasPreviousPage: paginatedResult.pagination.hasPreviousPage,\r\n } as PaginatedResponse<T & { responsible_name?: string }>;\r\n }\r\n\r\n // Para campos físicos, aplicar enrichment nos dados já paginados\r\n const enrichedData = await QualiexEnrichmentService.enrichWithResponsibleNames(\r\n response.data,\r\n { entityName }\r\n );\r\n\r\n response = { ...response, data: enrichedData as (T & { responsible_name?: string })[] };\r\n }\r\n }\r\n\r\n return response as PaginatedResponse<T & { responsible_name?: string }>;\r\n },\r\n\r\n async getById(id: string): Promise<T | null> {\r\n const { data, error } = await createQuery()\r\n .select(selectFields || '*')\r\n .eq('id', id)\r\n .maybeSingle();\r\n\r\n if (error) {\r\n throw new Error(`Error fetching ${tableName}: ${error.message}`);\r\n }\r\n\r\n return data;\r\n },\r\n\r\n async create(payload: TInsert): Promise<T> {\r\n const trimmedPayload = trimTextFields(payload);\r\n const cleanPayload = Object.entries(trimmedPayload as any).reduce((acc, [key, value]) => {\r\n if (value !== undefined) {\r\n acc[key] = value;\r\n }\r\n return acc;\r\n }, {} as any);\r\n\r\n const { data, error } = await createQuery()\r\n .insert(cleanPayload)\r\n .select()\r\n .single();\r\n\r\n if (error) {\r\n throw new Error(`Error creating ${tableName}: ${error.message}`);\r\n }\r\n\r\n if (!data) {\r\n throw new Error(`No data returned from create ${tableName} operation`);\r\n }\r\n\r\n return data;\r\n },\r\n\r\n async update(id: string, payload: TUpdate): Promise<T> {\r\n const trimmedPayload = trimTextFields(payload);\r\n const updateData = {\r\n ...trimmedPayload,\r\n updated_at: new Date().toISOString(),\r\n } as TUpdate;\r\n\r\n const { data, error } = await createQuery()\r\n .update(updateData)\r\n .eq('id', id)\r\n .select()\r\n .single();\r\n\r\n if (error) {\r\n throw new Error(`Error updating ${tableName}: ${error.message}`);\r\n }\r\n\r\n if (!data) {\r\n throw new Error(`No data returned from update ${tableName} operation`);\r\n }\r\n\r\n return data;\r\n },\r\n\r\n /**\r\n * Delete a record by ID using SOFT DELETE\r\n * \r\n * IMPORTANT: This performs a SOFT DELETE by setting is_removed = true\r\n * - No physical DELETE is performed\r\n * - Record remains in database but filtered from queries\r\n * - RLS policies should NOT include DELETE policies\r\n * - Compatible with audit trails and data recovery\r\n */\r\n async delete(id: string): Promise<void> {\r\n const updateData = {\r\n is_removed: true,\r\n updated_at: new Date().toISOString(),\r\n } as unknown as Partial<TUpdate>;\r\n\r\n const { error } = await createQuery()\r\n .update(updateData)\r\n .eq('id', id);\r\n\r\n if (error) {\r\n throw new Error(`Error soft deleting ${tableName}: ${error.message}`);\r\n }\r\n },\r\n };\r\n}","/**\r\n * Hook genérico para operações CRUD com React Query\r\n */\r\n\r\nimport { useCallback, useMemo } from 'react';\r\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { useSearchParams } from 'react-router-dom';\r\n\r\nimport { toast } from 'sonner';\r\nimport { CRUD_CONFIG, MESSAGES } from '../../config';\r\n\r\ninterface CrudService<T, TInsert = Partial<T>, TUpdate = Partial<T>> {\r\n getAll: (params: any) => Promise<any>;\r\n create: (data: TInsert) => Promise<T>;\r\n update: (id: string, data: TUpdate) => Promise<T>;\r\n delete: (id: string) => Promise<void>;\r\n}\r\n\r\ninterface CrudConfig<T, TInsert = Partial<T>, TUpdate = Partial<T>> {\r\n queryKey: string;\r\n service: CrudService<T, TInsert, TUpdate>;\r\n entityName: string;\r\n searchFields?: string[];\r\n additionalFilters?: Record<string, any>;\r\n onSuccess?: () => void; // ✅ Callback para fechar modal\r\n}\r\n\r\nexport function useCrud<T extends { id: string }, TInsert = Partial<T>, TUpdate = Partial<T>>({\r\n queryKey,\r\n service,\r\n entityName,\r\n searchFields,\r\n additionalFilters = {},\r\n onSuccess // ✅ Callback para fechar modal\r\n}: CrudConfig<T, TInsert, TUpdate>) {\r\n const [searchParams, setSearchParams] = useSearchParams();\r\n const queryClient = useQueryClient();\r\n \r\n // Extract state from URL params\r\n const searchTerm = searchParams.get('search') || '';\r\n const sortField = searchParams.get('sortField') || CRUD_CONFIG.sorting.defaultField;\r\n const sortDirection = (searchParams.get('sortDirection') as 'asc' | 'desc') || CRUD_CONFIG.sorting.defaultDirection;\r\n const page = parseInt(searchParams.get('page') || '1');\r\n const limit = parseInt(searchParams.get('limit') || String(CRUD_CONFIG.pagination.defaultPageSize));\r\n \r\n const debouncedSearch = searchTerm;\r\n \r\n // Build query params with memoization to prevent excessive re-renders\r\n const queryParams = useMemo(() => ({\r\n search: debouncedSearch,\r\n sortField,\r\n sortDirection,\r\n page,\r\n limit,\r\n ...additionalFilters,\r\n }), [debouncedSearch, sortField, sortDirection, page, limit, additionalFilters]);\r\n\r\n // Memoize query function to prevent unnecessary re-creation\r\n const queryFn = useCallback(() => service.getAll(queryParams), [service, queryParams]);\r\n \r\n // Data query\r\n const query = useQuery({\r\n queryKey: [queryKey, queryParams],\r\n queryFn,\r\n });\r\n\r\n // Mutations\r\n const createMutation = useMutation({\r\n mutationFn: service.create,\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: [queryKey] });\r\n toast.success(MESSAGES.success.created(entityName));\r\n onSuccess?.(); // ✅ Fechar modal após sucesso\r\n },\r\n onError: (error: any) => {\r\n toast.error(`${MESSAGES.error.create(entityName)}: ${error.message}`);\r\n },\r\n });\r\n\r\n const updateMutation = useMutation({\r\n mutationFn: ({ id, data }: { id: string; data: TUpdate }) => \r\n service.update(id, data),\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: [queryKey] });\r\n toast.success(MESSAGES.success.updated(entityName));\r\n onSuccess?.(); // ✅ Fechar modal após sucesso\r\n },\r\n onError: (error: any) => {\r\n toast.error(`${MESSAGES.error.update(entityName)}: ${error.message}`);\r\n },\r\n });\r\n\r\n const deleteMutation = useMutation({\r\n mutationFn: service.delete,\r\n onSuccess: () => {\r\n queryClient.invalidateQueries({ queryKey: [queryKey] });\r\n toast.success(MESSAGES.success.deleted(entityName));\r\n },\r\n onError: (error: any) => {\r\n toast.error(`${MESSAGES.error.delete(entityName)}: ${error.message}`);\r\n },\r\n });\r\n\r\n // Update URL params helper\r\n const updateParams = useCallback((newParams: Record<string, string | number>) => {\r\n const current = Object.fromEntries(searchParams);\r\n const updated = { ...current };\r\n \r\n Object.entries(newParams).forEach(([key, value]) => {\r\n if (value === '' || value === 0) {\r\n delete updated[key];\r\n } else {\r\n updated[key] = String(value);\r\n }\r\n });\r\n \r\n setSearchParams(updated);\r\n }, [searchParams, setSearchParams]);\r\n\r\n // Handlers\r\n const handleSearch = useCallback((search: string) => {\r\n updateParams({ search, page: 1 });\r\n }, [updateParams]);\r\n\r\n const handleSort = useCallback((field: string) => {\r\n const newDirection = sortField === field && sortDirection === 'asc' ? 'desc' : 'asc';\r\n updateParams({ sortField: field, sortDirection: newDirection, page: 1 });\r\n }, [sortField, sortDirection, updateParams]);\r\n\r\n const handlePageChange = useCallback((newPage: number) => {\r\n updateParams({ page: newPage });\r\n }, [updateParams]);\r\n\r\n const handleLimitChange = useCallback((newLimit: number) => {\r\n updateParams({ limit: newLimit, page: 1 });\r\n }, [updateParams]);\r\n\r\n const clearFilters = useCallback(() => {\r\n setSearchParams({});\r\n }, [setSearchParams]);\r\n\r\n return {\r\n // Data\r\n entities: query.data?.data || [],\r\n pagination: {\r\n currentPage: query.data?.currentPage || 1,\r\n totalPages: query.data?.totalPages || 1,\r\n totalItems: query.data?.totalItems || 0,\r\n itemsPerPage: query.data?.itemsPerPage || CRUD_CONFIG.pagination.defaultPageSize,\r\n hasNextPage: query.data?.hasNextPage || false,\r\n hasPreviousPage: query.data?.hasPreviousPage || false,\r\n },\r\n \r\n // Loading states\r\n isLoading: query.isLoading,\r\n isCreating: createMutation.isPending,\r\n isUpdating: updateMutation.isPending,\r\n isDeleting: deleteMutation.isPending,\r\n \r\n // Error\r\n error: query.error,\r\n \r\n // Current state\r\n searchTerm,\r\n sortField,\r\n sortDirection,\r\n currentPage: page,\r\n itemsPerPage: limit,\r\n \r\n // Actions\r\n createEntity: createMutation.mutate,\r\n updateEntity: (id: string, data: TUpdate) => updateMutation.mutate({ id, data }),\r\n deleteEntity: deleteMutation.mutate,\r\n \r\n // Handlers\r\n handleSearch,\r\n handleSort,\r\n handlePageChange,\r\n handleItemsPerPageChange: handleLimitChange,\r\n clearFilters,\r\n refetch: query.refetch,\r\n };\r\n}","import * as React from \"react\"\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\r\n\r\nimport { cn } from \"../../utils\"\r\nimport { buttonVariants } from \"./button\"\r\n\r\nconst AlertDialog = AlertDialogPrimitive.Root\r\n\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\r\n\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n))\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\r\n\r\nconst AlertDialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-2 text-center sm:text-left bg-primary text-primary-foreground px-6 py-4 -mx-6 -mt-6 mb-6 rounded-t-lg\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\r\n\r\nconst AlertDialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogDescription.displayName =\r\n AlertDialogPrimitive.Description.displayName\r\n\r\nconst AlertDialogAction = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Action\r\n ref={ref}\r\n className={cn(buttonVariants(), className)}\r\n {...props}\r\n />\r\n))\r\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\r\n\r\nconst AlertDialogCancel = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Cancel\r\n ref={ref}\r\n className={cn(\r\n buttonVariants({ variant: \"outline\" }),\r\n \"mt-2 sm:mt-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from './alert-dialog';\r\nimport { Input } from './input';\r\nimport { Label } from './label';\r\n\r\ninterface DeleteConfirmationItem {\r\n id: string;\r\n title: string;\r\n}\r\n\r\ninterface DeleteConfirmationDialogProps<T extends DeleteConfirmationItem> {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n item?: T;\r\n onConfirm: (item: T) => void;\r\n entityName?: string;\r\n isDeleting?: boolean;\r\n}\r\n\r\nconst DeleteConfirmationDialog = <T extends DeleteConfirmationItem>({\r\n open,\r\n onOpenChange,\r\n item,\r\n onConfirm,\r\n entityName = 'item',\r\n isDeleting = false\r\n}: DeleteConfirmationDialogProps<T>) => {\r\n const [confirmationText, setConfirmationText] = useState('');\r\n \r\n // Reset state when dialog opens/closes\r\n useEffect(() => {\r\n if (!open) {\r\n setConfirmationText('');\r\n }\r\n }, [open]);\r\n \r\n const handleCancel = () => {\r\n setConfirmationText('');\r\n onOpenChange(false);\r\n };\r\n \r\n const handleConfirm = () => {\r\n if (item && confirmationText === item.title) {\r\n onConfirm(item);\r\n setConfirmationText('');\r\n onOpenChange(false);\r\n }\r\n };\r\n \r\n const isConfirmationValid = confirmationText === item?.title;\r\n \r\n if (!item) return null;\r\n \r\n return (\r\n <AlertDialog open={open} onOpenChange={handleCancel}>\r\n <AlertDialogContent className=\"sm:max-w-[500px]\">\r\n <AlertDialogHeader>\r\n <div className=\"flex items-center space-x-2\">\r\n <div className=\"flex-shrink-0 w-8 h-8 rounded-full bg-destructive/10 flex items-center justify-center\">\r\n <span className=\"text-destructive font-semibold text-sm\">!</span>\r\n </div>\r\n <div className=\"flex-1\">\r\n <AlertDialogTitle className=\"text-lg font-semibold\">\r\n Confirmar Exclusão\r\n </AlertDialogTitle>\r\n </div>\r\n </div>\r\n </AlertDialogHeader>\r\n \r\n <AlertDialogDescription asChild>\r\n <div className=\"space-y-4\">\r\n <div className=\"text-sm text-muted-foreground\">\r\n <p className=\"mb-2\">\r\n Você está prestes a excluir permanentemente o {entityName}:\r\n </p>\r\n <div className=\"p-3 bg-muted rounded-md border-l-4 border-l-destructive\">\r\n <p className=\"font-medium text-foreground\">{item.title}</p>\r\n </div>\r\n </div>\r\n \r\n <div className=\"bg-orange-50 border border-orange-200 rounded-md p-3\">\r\n <div className=\"flex items-start space-x-2\">\r\n <div className=\"flex-shrink-0 w-5 h-5 rounded-full bg-orange-500 flex items-center justify-center mt-0.5\">\r\n <span className=\"text-white font-bold text-xs\">!</span>\r\n </div>\r\n <div className=\"text-sm text-orange-800\">\r\n <p className=\"font-medium mb-1\">Atenção!</p>\r\n <p>Esta ação não pode ser desfeita. O {entityName} será removido permanentemente do sistema.</p>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"confirmation\" className=\"text-sm font-medium\">\r\n Para confirmar, digite <strong>\"{item.title}\"</strong> abaixo:\r\n </Label>\r\n <Input\r\n id=\"confirmation\"\r\n type=\"text\"\r\n value={confirmationText}\r\n onChange={(e) => setConfirmationText(e.target.value)}\r\n placeholder={`Digite: ${item.title}`}\r\n className=\"w-full\"\r\n />\r\n </div>\r\n </div>\r\n </AlertDialogDescription>\r\n \r\n <AlertDialogFooter>\r\n <AlertDialogCancel onClick={handleCancel}>\r\n Cancelar\r\n </AlertDialogCancel>\r\n <AlertDialogAction \r\n onClick={handleConfirm}\r\n disabled={!isConfirmationValid || isDeleting}\r\n className=\"bg-destructive hover:bg-destructive/90 text-destructive-foreground\"\r\n >\r\n {isDeleting ? 'Removendo...' : `Excluir ${entityName}`}\r\n </AlertDialogAction>\r\n </AlertDialogFooter>\r\n </AlertDialogContent>\r\n </AlertDialog>\r\n );\r\n};\r\n\r\nexport { DeleteConfirmationDialog };\r\nexport default DeleteConfirmationDialog;","import * as React from \"react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Table = React.forwardRef<\r\n HTMLTableElement,\r\n React.HTMLAttributes<HTMLTableElement>\r\n>(({ className, ...props }, ref) => (\r\n <table\r\n ref={ref}\r\n className={cn(\"w-full caption-bottom text-sm\", className)}\r\n {...props}\r\n />\r\n))\r\nTable.displayName = \"Table\"\r\n\r\nconst TableHeader = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn(\"[&_tr]:border-b sticky top-0 z-[1] bg-background\", className)} {...props} />\r\n))\r\nTableHeader.displayName = \"TableHeader\"\r\n\r\nconst TableBody = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tbody\r\n ref={ref}\r\n className={cn(\"[&_tr:last-child]:border-0\", className)}\r\n {...props}\r\n />\r\n))\r\nTableBody.displayName = \"TableBody\"\r\n\r\nconst TableFooter = React.forwardRef<\r\n HTMLTableSectionElement,\r\n React.HTMLAttributes<HTMLTableSectionElement>\r\n>(({ className, ...props }, ref) => (\r\n <tfoot\r\n ref={ref}\r\n className={cn(\r\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableFooter.displayName = \"TableFooter\"\r\n\r\nconst TableRow = React.forwardRef<\r\n HTMLTableRowElement,\r\n React.HTMLAttributes<HTMLTableRowElement>\r\n>(({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableRow.displayName = \"TableRow\"\r\n\r\nconst TableHead = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.ThHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n \"h-12 px-4 py-3 text-left align-middle font-medium text-muted-foreground bg-background border-b [&:has([role=checkbox])]:pr-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTableHead.displayName = \"TableHead\"\r\n\r\nconst TableCell = React.forwardRef<\r\n HTMLTableCellElement,\r\n React.TdHTMLAttributes<HTMLTableCellElement>\r\n>(({ className, ...props }, ref) => (\r\n <td\r\n ref={ref}\r\n className={cn(\"px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0\", className)}\r\n {...props}\r\n />\r\n))\r\nTableCell.displayName = \"TableCell\"\r\n\r\nconst TableCaption = React.forwardRef<\r\n HTMLTableCaptionElement,\r\n React.HTMLAttributes<HTMLTableCaptionElement>\r\n>(({ className, ...props }, ref) => (\r\n <caption\r\n ref={ref}\r\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nTableCaption.displayName = \"TableCaption\"\r\n\r\nexport {\r\n Table,\r\n TableHeader,\r\n TableBody,\r\n TableFooter,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableCaption,\r\n}","import { cn } from \"../../utils\"\r\n\r\nfunction Skeleton({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div\r\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Skeleton }","import { Skeleton } from \"./skeleton\"\r\nimport { Card, CardContent, CardHeader } from \"./card\"\r\n\r\ninterface TableSkeletonProps {\r\n rows?: number\r\n columns?: number\r\n}\r\n\r\ninterface CardSkeletonProps {\r\n count?: number\r\n}\r\n\r\ninterface FormSkeletonProps {\r\n fields?: number\r\n}\r\n\r\nexport function TableSkeleton({ rows = 5, columns = 4 }: TableSkeletonProps) {\r\n return (\r\n <div className=\"w-full\">\r\n <div className=\"rounded-md border\">\r\n <div className=\"border-b bg-muted/50 px-4 py-3\">\r\n <div className=\"flex space-x-4\">\r\n {Array.from({ length: columns }).map((_, i) => (\r\n <Skeleton key={i} className=\"h-4 w-24\" />\r\n ))}\r\n </div>\r\n </div>\r\n <div>\r\n {Array.from({ length: rows }).map((_, i) => (\r\n <div key={i} className=\"border-b px-4 py-3 last:border-0\">\r\n <div className=\"flex space-x-4\">\r\n {Array.from({ length: columns }).map((_, j) => (\r\n <Skeleton key={j} className=\"h-4 w-20\" />\r\n ))}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport function CardSkeleton({ count = 3 }: CardSkeletonProps) {\r\n return (\r\n <div className=\"space-y-4\">\r\n {Array.from({ length: count }).map((_, i) => (\r\n <Card key={i}>\r\n <CardHeader>\r\n <Skeleton className=\"h-4 w-3/4\" />\r\n <Skeleton className=\"h-3 w-1/2\" />\r\n </CardHeader>\r\n <CardContent>\r\n <div className=\"space-y-2\">\r\n <Skeleton className=\"h-3 w-full\" />\r\n <Skeleton className=\"h-3 w-2/3\" />\r\n </div>\r\n </CardContent>\r\n </Card>\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport function FormSkeleton({ fields = 4 }: FormSkeletonProps) {\r\n return (\r\n <div className=\"space-y-4\">\r\n {Array.from({ length: fields }).map((_, i) => (\r\n <div key={i} className=\"space-y-2\">\r\n <Skeleton className=\"h-4 w-24\" />\r\n <Skeleton className=\"h-10 w-full\" />\r\n </div>\r\n ))}\r\n <div className=\"flex justify-end space-x-2 pt-4\">\r\n <Skeleton className=\"h-10 w-20\" />\r\n <Skeleton className=\"h-10 w-20\" />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport function HeaderSkeleton() {\r\n return (\r\n <div className=\"flex items-center justify-between p-4 border-b\">\r\n <div className=\"flex items-center space-x-3\">\r\n <Skeleton className=\"h-8 w-8 rounded-full\" />\r\n <Skeleton className=\"h-6 w-32\" />\r\n </div>\r\n <div className=\"flex items-center space-x-2\">\r\n <Skeleton className=\"h-8 w-8\" />\r\n <Skeleton className=\"h-8 w-24\" />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport function SidebarSkeleton() {\r\n return (\r\n <div className=\"w-64 border-r bg-muted/10\">\r\n <div className=\"p-4\">\r\n <Skeleton className=\"h-8 w-32 mb-6\" />\r\n <div className=\"space-y-2\">\r\n {Array.from({ length: 6 }).map((_, i) => (\r\n <div key={i} className=\"flex items-center space-x-3 p-2\">\r\n <Skeleton className=\"h-4 w-4\" />\r\n <Skeleton className=\"h-4 w-20\" />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}","import { ReactNode } from \"react\"\r\nimport { cn } from \"../../utils\"\r\nimport { FileX, Search, AlertCircle } from \"lucide-react\"\r\nimport { Button } from \"./button\"\r\n\r\ninterface EmptyStateProps {\r\n icon?: ReactNode\r\n title: string\r\n description?: string\r\n action?: {\r\n label: string\r\n onClick: () => void\r\n }\r\n className?: string\r\n variant?: \"default\" | \"search\" | \"error\"\r\n}\r\n\r\nconst variantIcons = {\r\n default: FileX,\r\n search: Search,\r\n error: AlertCircle\r\n}\r\n\r\nexport function EmptyState({\r\n icon,\r\n title,\r\n description,\r\n action,\r\n className,\r\n variant = \"default\"\r\n}: EmptyStateProps) {\r\n const IconComponent = icon ? () => icon : variantIcons[variant]\r\n\r\n return (\r\n <div className={cn(\r\n \"flex flex-col items-center justify-center py-12 px-4 text-center\",\r\n className\r\n )}>\r\n <div className=\"flex items-center justify-center w-16 h-16 rounded-full bg-muted mb-4\">\r\n <IconComponent className=\"h-8 w-8 text-muted-foreground\" />\r\n </div>\r\n \r\n <h3 className=\"text-lg font-semibold mb-2\">{title}</h3>\r\n \r\n {description && (\r\n <p className=\"text-muted-foreground mb-6 max-w-sm\">\r\n {description}\r\n </p>\r\n )}\r\n \r\n {action && (\r\n <Button onClick={action.onClick} variant=\"outline\">\r\n {action.label}\r\n </Button>\r\n )}\r\n </div>\r\n )\r\n}","import * as React from \"react\"\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root\r\n\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\r\n\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\r\n\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n))\r\nDropdownMenuSubTrigger.displayName =\r\n DropdownMenuPrimitive.SubTrigger.displayName\r\n\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSubContent.displayName =\r\n DropdownMenuPrimitive.SubContent.displayName\r\n\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-[100] min-w-[8rem] overflow-hidden rounded-md border bg-white shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:bg-gray-800 dark:border-gray-700\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n))\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\r\n\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\r\n\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n))\r\nDropdownMenuCheckboxItem.displayName =\r\n DropdownMenuPrimitive.CheckboxItem.displayName\r\n\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n))\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\r\n\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-2 py-1.5 text-sm font-semibold\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\r\n\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\r\n\r\nconst DropdownMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n}\r\n","import React from 'react';\r\nimport { Edit, Trash2, PowerOff, Power } from \"lucide-react\";\r\nimport { DropdownMenuItem } from \"../../components/ui/dropdown-menu\";\r\nimport { Button } from \"../../components/ui/button\";\r\n\r\ninterface ActionMenuItemsProps {\r\n onEdit?: () => void;\r\n onDelete?: () => void;\r\n onToggleStatus?: () => void;\r\n isActive?: boolean;\r\n canDelete?: boolean;\r\n renderAs: 'dropdown' | 'context';\r\n}\r\n\r\nexport const ActionMenuItems: React.FC<ActionMenuItemsProps> = ({\r\n onEdit,\r\n onDelete,\r\n onToggleStatus,\r\n isActive = true,\r\n canDelete = true,\r\n renderAs\r\n}) => {\r\n const items = [];\r\n\r\n // Edit action\r\n if (onEdit) {\r\n const editItem = {\r\n icon: Edit,\r\n label: \"Editar\",\r\n onClick: onEdit\r\n };\r\n items.push(editItem);\r\n }\r\n\r\n // Toggle status action\r\n if (onToggleStatus) {\r\n const toggleItem = {\r\n icon: isActive ? PowerOff : Power,\r\n label: isActive ? \"Inativar\" : \"Ativar\",\r\n onClick: onToggleStatus\r\n };\r\n items.push(toggleItem);\r\n }\r\n\r\n // Delete action\r\n if (canDelete && onDelete) {\r\n const deleteItem = {\r\n icon: Trash2,\r\n label: \"Remover\",\r\n onClick: onDelete,\r\n destructive: true\r\n };\r\n items.push(deleteItem);\r\n }\r\n\r\n if (renderAs === 'dropdown') {\r\n return (\r\n <>\r\n {items.map((item, index) => (\r\n <DropdownMenuItem \r\n key={index}\r\n onClick={item.onClick}\r\n className={item.destructive ? \"text-destructive\" : \"\"}\r\n >\r\n <item.icon className=\"mr-2 h-4 w-4\" />\r\n {item.label}\r\n </DropdownMenuItem>\r\n ))}\r\n </>\r\n );\r\n }\r\n\r\n // Context menu rendering\r\n return (\r\n <>\r\n {items.map((item, index) => (\r\n <Button\r\n key={index}\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={item.onClick}\r\n className={`w-full justify-start h-auto py-2 px-3 text-sm font-normal ${\r\n item.destructive ? 'text-destructive hover:text-destructive' : ''\r\n }`}\r\n >\r\n <item.icon className=\"h-4 w-4 mr-2\" />\r\n {item.label}\r\n </Button>\r\n ))}\r\n </>\r\n );\r\n};","import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from \"../../components/ui/dropdown-menu\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { EllipsisVertical } from \"lucide-react\";\r\nimport { ActionMenuItems } from \"./ActionMenuItems\";\r\n\r\ninterface TableRowActionsProps {\r\n onEdit?: () => void;\r\n onDelete?: () => void;\r\n canDelete?: boolean;\r\n onToggleStatus?: () => void;\r\n isActive?: boolean;\r\n}\r\n\r\nexport const TableRowActions: React.FC<TableRowActionsProps> = ({\r\n onEdit,\r\n onDelete,\r\n canDelete = true,\r\n onToggleStatus,\r\n isActive = true\r\n}) => {\r\n const handleEdit = (e?: React.MouseEvent) => {\r\n e?.stopPropagation();\r\n onEdit?.();\r\n };\r\n\r\n const handleDelete = (e?: React.MouseEvent) => {\r\n e?.stopPropagation();\r\n onDelete?.();\r\n };\r\n\r\n const handleToggleStatus = (e?: React.MouseEvent) => {\r\n e?.stopPropagation();\r\n onToggleStatus?.();\r\n };\r\n\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"default\" size=\"sm\" className=\"h-7 px-2 text-xs bg-primary text-primary-foreground hover:bg-primary/90\">\r\n <EllipsisVertical size={12} />\r\n </Button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"end\">\r\n <ActionMenuItems\r\n onEdit={handleEdit}\r\n onDelete={handleDelete}\r\n onToggleStatus={handleToggleStatus}\r\n isActive={isActive}\r\n canDelete={canDelete}\r\n renderAs=\"dropdown\"\r\n />\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n );\r\n};","import React, { useState, useEffect } from 'react';\r\nimport { Card, CardContent } from \"../../components/ui/card\";\r\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../../components/ui/table';\r\nimport { TableSkeleton, CardSkeleton } from \"../../components/ui/skeleton-variants\";\r\nimport { EmptyState } from \"../../components/ui/empty-state\";\r\nimport { ArrowUpDown, ArrowUp, ArrowDown } from \"lucide-react\";\r\nimport type { CrudColumn, CrudManager, BaseEntity } from '../../types';\r\nimport { TableRowActions } from './TableRowActions';\r\nimport { ActionMenuItems } from './ActionMenuItems';\r\n\r\ninterface CrudTableProps<T extends BaseEntity> {\r\n manager: CrudManager<T>;\r\n columns: CrudColumn<T>[];\r\n onEdit?: (item: T) => void;\r\n onView?: (item: T) => void;\r\n onToggleStatus?: (item: T) => void;\r\n onDelete?: (item: T) => void;\r\n renderActions?: (item: T) => React.ReactNode;\r\n}\r\n\r\nexport const CrudTable = <T extends BaseEntity>({\r\n manager,\r\n columns,\r\n onEdit,\r\n onView,\r\n onToggleStatus,\r\n onDelete,\r\n renderActions,\r\n}: CrudTableProps<T>) => {\r\n const [isMobile, setIsMobile] = useState(false);\r\n const [contextMenu, setContextMenu] = useState<{\r\n x: number;\r\n y: number;\r\n item: T;\r\n } | null>(null);\r\n\r\n useEffect(() => {\r\n const checkMobile = () => setIsMobile(window.innerWidth < 768);\r\n checkMobile();\r\n window.addEventListener('resize', checkMobile);\r\n return () => window.removeEventListener('resize', checkMobile);\r\n }, []);\r\n\r\n // Close context menu when clicking outside\r\n useEffect(() => {\r\n const handleClickOutside = () => setContextMenu(null);\r\n if (contextMenu) {\r\n document.addEventListener('click', handleClickOutside);\r\n return () => document.removeEventListener('click', handleClickOutside);\r\n }\r\n }, [contextMenu]);\r\n\r\n const getSortIcon = (columnKey: string) => {\r\n if (manager.sortField !== columnKey) {\r\n return <ArrowUpDown size={14} className=\"ml-1 opacity-50\" />;\r\n }\r\n return manager.sortDirection === 'asc' ? <ArrowUp size={14} className=\"ml-1\" /> : <ArrowDown size={14} className=\"ml-1\" />;\r\n };\r\n\r\n // Calculate column widths based on minWidth, weight, and width\r\n const calculateColumnWidths = () => {\r\n const actionColumnWidth = 100; // Fixed width for actions column\r\n const totalColumns = columns.length + 1; // +1 for actions column\r\n \r\n // Calculate total minWidth and total weight\r\n let totalMinWidth = 0;\r\n let totalWeight = 0;\r\n const columnConfigs = columns.map(column => {\r\n if (column.width) {\r\n // Fixed width column\r\n totalMinWidth += column.width;\r\n return { ...column, calculatedWidth: column.width, isFixed: true };\r\n } else {\r\n const minWidth = column.minWidth || 120; // Default minimum\r\n const weight = column.weight || 1; // Default weight\r\n totalMinWidth += minWidth;\r\n totalWeight += weight;\r\n return { ...column, calculatedWidth: minWidth, weight, isFixed: false };\r\n }\r\n });\r\n \r\n totalMinWidth += actionColumnWidth; // Add actions column to total\r\n \r\n // Return column configs with calculated styles\r\n return columnConfigs.map(config => {\r\n if (config.isFixed) {\r\n return { \r\n ...config, \r\n style: { width: `${config.calculatedWidth}px` } \r\n };\r\n } else {\r\n // For flexible columns, use minWidth and flex-grow\r\n return { \r\n ...config, \r\n style: { \r\n minWidth: `${config.calculatedWidth}px`,\r\n width: `${config.calculatedWidth}px` // Fallback for table-layout: fixed\r\n } \r\n };\r\n }\r\n });\r\n };\r\n\r\n const columnWidths = calculateColumnWidths();\r\n\r\n if (isMobile) {\r\n if (manager.isLoading) {\r\n return <CardSkeleton count={3} />\r\n }\r\n \r\n if (manager.entities.length === 0) {\r\n return (\r\n <EmptyState\r\n title=\"Nenhum item encontrado\"\r\n description=\"Não há dados para exibir no momento.\"\r\n variant=\"search\"\r\n />\r\n )\r\n }\r\n \r\n return (\r\n <div className=\"space-y-4\">\r\n {manager.entities.map(item => <Card \r\n key={item.id} \r\n className=\"overflow-hidden cursor-pointer hover:bg-muted/50\" \r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onEdit?.(item);\r\n }}\r\n onContextMenu={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setContextMenu({\r\n x: e.clientX,\r\n y: e.clientY,\r\n item\r\n });\r\n }}\r\n >\r\n <CardContent className=\"p-4\">\r\n {columns.map(column => <div key={String(column.key)} className=\"flex justify-between items-start mb-2 last:mb-0\">\r\n <span className=\"text-sm font-medium text-muted-foreground min-w-0 mr-2\">\r\n {column.header}:\r\n </span>\r\n <div className=\"text-sm text-foreground text-right min-w-0 flex-1\">\r\n {column.render ? column.render(item) : (item as any)[column.key]}\r\n </div>\r\n </div>)}\r\n\r\n {(onEdit || onView || renderActions) && <div className=\"mt-3 pt-3 border-t flex justify-end\" onClick={(e) => e.stopPropagation()}>\r\n {renderActions ? renderActions(item) : (\r\n <TableRowActions \r\n onEdit={onEdit ? () => {\r\n onEdit(item);\r\n } : undefined} \r\n onDelete={onDelete ? () => onDelete(item) : undefined} \r\n onToggleStatus={onToggleStatus ? () => onToggleStatus(item) : undefined}\r\n isActive={(item as any).is_actived}\r\n />\r\n )}\r\n </div>}\r\n </CardContent>\r\n </Card>)}\r\n\r\n {/* Unified Context Menu */}\r\n {contextMenu && (\r\n <div \r\n className=\"fixed bg-background border border-border rounded-md shadow-lg py-1 z-50 min-w-[120px]\"\r\n style={{ left: contextMenu.x, top: contextMenu.y }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <ActionMenuItems\r\n onEdit={onEdit ? () => {\r\n onEdit(contextMenu.item);\r\n setContextMenu(null);\r\n } : undefined}\r\n onDelete={onDelete ? () => {\r\n onDelete(contextMenu.item);\r\n setContextMenu(null);\r\n } : undefined}\r\n onToggleStatus={onToggleStatus ? () => {\r\n onToggleStatus(contextMenu.item);\r\n setContextMenu(null);\r\n } : undefined}\r\n isActive={(contextMenu.item as any).is_actived}\r\n canDelete={!!onDelete}\r\n renderAs=\"context\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className=\"flex flex-col h-full\">\r\n {manager.isLoading ? (\r\n <TableSkeleton rows={5} columns={columns.length} />\r\n ) : (\r\n <div className=\"flex flex-col h-full overflow-hidden\">\r\n <div className=\"flex-1 overflow-auto\">\r\n <Table className=\"table-fixed\">\r\n <colgroup>\r\n {columnWidths.map((config, index) => (\r\n <col key={index} style={config.style} />\r\n ))}\r\n <col style={{ width: '100px' }} />\r\n </colgroup>\r\n <TableHeader>\r\n <TableRow>\r\n {columns.map(column => (\r\n <TableHead\r\n key={String(column.key)}\r\n className={`${column.className || ''} ${column.sortable ? 'cursor-pointer hover:bg-muted/50' : ''}`}\r\n onClick={column.sortable ? () => manager.handleSort(String(column.key)) : undefined}\r\n >\r\n <div className={`flex items-center ${column.className?.includes('text-center') ? 'justify-center' : ''}`}>\r\n {column.header}\r\n {column.sortable && getSortIcon(String(column.key))}\r\n </div>\r\n </TableHead>\r\n ))}\r\n <TableHead className=\"w-[100px] text-center\">Ações</TableHead>\r\n </TableRow>\r\n </TableHeader>\r\n <TableBody>\r\n {manager.entities.length === 0 ? (\r\n <TableRow>\r\n <TableCell colSpan={columns.length + 1} className=\"h-32\">\r\n <EmptyState\r\n title=\"Nenhum item encontrado\"\r\n description=\"Não há dados para exibir no momento.\"\r\n variant=\"search\"\r\n />\r\n </TableCell>\r\n </TableRow>\r\n ) : (\r\n manager.entities.map(item => (\r\n <TableRow \r\n key={item.id} \r\n className=\"cursor-pointer hover:bg-muted/50\" \r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onEdit?.(item);\r\n }}\r\n onContextMenu={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setContextMenu({\r\n x: e.clientX,\r\n y: e.clientY,\r\n item\r\n });\r\n }}\r\n >\r\n {columns.map(column => (\r\n <TableCell key={String(column.key)} className={column.className}>\r\n {column.render ? column.render(item) : (item as any)[column.key]}\r\n </TableCell>\r\n ))}\r\n <TableCell className=\"text-center\">\r\n {renderActions ? renderActions(item) : (\r\n <TableRowActions \r\n onEdit={onEdit ? () => onEdit(item) : undefined} \r\n onDelete={onDelete ? () => onDelete(item) : undefined}\r\n onToggleStatus={onToggleStatus ? () => onToggleStatus(item) : undefined}\r\n isActive={(item as any).is_actived}\r\n />\r\n )}\r\n </TableCell>\r\n </TableRow>\r\n ))\r\n )}\r\n </TableBody>\r\n </Table>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Unified Context Menu */}\r\n {contextMenu && (\r\n <div \r\n className=\"fixed bg-background border border-border rounded-md shadow-lg py-1 z-50 min-w-[120px]\"\r\n style={{ left: contextMenu.x, top: contextMenu.y }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <ActionMenuItems\r\n onEdit={onEdit ? () => {\r\n onEdit(contextMenu.item);\r\n setContextMenu(null);\r\n } : undefined}\r\n onDelete={onDelete ? () => {\r\n onDelete(contextMenu.item);\r\n setContextMenu(null);\r\n } : undefined}\r\n onToggleStatus={onToggleStatus ? () => {\r\n onToggleStatus(contextMenu.item);\r\n setContextMenu(null);\r\n } : undefined}\r\n isActive={(contextMenu.item as any).is_actived}\r\n canDelete={!!onDelete}\r\n renderAs=\"context\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default CrudTable;","import { useState, useEffect, useMemo, useRef } from 'react';\r\nimport { FormField } from '../../types';\r\n\r\nexport function useBaseForm<T extends Record<string, any>>(\r\n fields: FormField[],\r\n initialData?: Partial<T>,\r\n onFormDataChange?: (data: T) => void,\r\n open?: boolean\r\n) {\r\n const [formData, setFormData] = useState<T>({} as T);\r\n const [errors, setErrors] = useState<Record<string, string>>({});\r\n\r\n // Memoize the fields to avoid re-processing if they don't change\r\n const memoizedFields = useMemo(() => fields, [fields]);\r\n\r\n // Helper to check if a value is a valid Date\r\n const isValidDate = (value: any): value is Date => {\r\n return value instanceof Date && !isNaN(value.getTime());\r\n };\r\n\r\n // Get default value for field type\r\n const getDefaultFieldValue = (field: FormField): any => {\r\n if (field.defaultValue !== undefined) return field.defaultValue;\r\n \r\n switch (field.type) {\r\n case 'multiselect':\r\n return [];\r\n case 'checkbox':\r\n return false;\r\n case 'number':\r\n return 0;\r\n case 'date':\r\n return '';\r\n case 'group':\r\n return {};\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n // Calculate computed value if field has computedValue function\r\n const calculateComputedValue = (field: FormField, currentFormData: T): any => {\r\n if (field.computedValue && typeof field.computedValue === 'function') {\r\n try {\r\n return field.computedValue(currentFormData);\r\n } catch (error) {\r\n // Silent computation error handling\r\n return getDefaultFieldValue(field);\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n // Update dependent fields when a field changes\r\n const updateDependentFields = (changedFieldName: string, newFormData: T): T => {\r\n let updatedData = { ...newFormData };\r\n \r\n // Get all fields that depend on the changed field\r\n const getAllFields = (fieldList: FormField[]): FormField[] => {\r\n const allFields: FormField[] = [];\r\n \r\n fieldList.forEach(field => {\r\n allFields.push(field);\r\n if (field.fields) {\r\n allFields.push(...getAllFields(field.fields));\r\n }\r\n });\r\n \r\n return allFields;\r\n };\r\n\r\n const dependentFields = getAllFields(memoizedFields).filter(field => \r\n field.dependsOn === changedFieldName\r\n );\r\n \r\n dependentFields.forEach(field => {\r\n const computedValue = calculateComputedValue(field, updatedData);\r\n if (computedValue !== undefined) {\r\n updatedData = { ...updatedData, [field.name]: computedValue };\r\n }\r\n });\r\n \r\n return updatedData;\r\n };\r\n\r\n // Validate a single field\r\n const validateField = (field: FormField, value: any, currentFormData?: T): string | undefined => {\r\n // Check required validation\r\n if (field.required && (value === '' || value === null || value === undefined || \r\n (Array.isArray(value) && value.length === 0))) {\r\n return `${field.label} é obrigatório`;\r\n }\r\n\r\n // Check custom validation\r\n if (field.validation) {\r\n let validator: ((value: any, formData?: any) => string | undefined) | undefined;\r\n \r\n if (typeof field.validation === 'function') {\r\n validator = field.validation;\r\n } else if (field.validation.custom && typeof field.validation.custom === 'function') {\r\n validator = field.validation.custom;\r\n }\r\n\r\n if (validator) {\r\n try {\r\n const result = validator(value, currentFormData);\r\n if (result) return result;\r\n } catch (error) {\r\n // Silent validation error handling\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n // Initialize form data - simplified logic\r\n useEffect(() => {\r\n // Always initialize when open changes to true or when initialData/fields change\r\n if (!open) return;\r\n\r\n // Get all fields (including nested ones)\r\n const getAllFields = (fieldList: FormField[]): FormField[] => {\r\n const allFields: FormField[] = [];\r\n \r\n fieldList.forEach(field => {\r\n allFields.push(field);\r\n if (field.fields) {\r\n allFields.push(...getAllFields(field.fields));\r\n }\r\n });\r\n \r\n return allFields;\r\n };\r\n\r\n const allFields = getAllFields(memoizedFields);\r\n const newFormData: any = {};\r\n\r\n // Iterate each field\r\n allFields.forEach(field => {\r\n let fieldValue: any;\r\n\r\n // Check if we have initial data for this field\r\n if (initialData && initialData[field.name as keyof T] !== undefined) {\r\n fieldValue = initialData[field.name as keyof T];\r\n \r\n // Handle null/undefined text fields - convert to empty string\r\n if ((fieldValue === null || fieldValue === undefined)) {\r\n fieldValue = '';\r\n }\r\n \r\n // Handle date fields - convert to YYYY-MM-DD format for input[type=\"date\"]\r\n if (field.type === 'date' && fieldValue) {\r\n if (typeof fieldValue === 'string') {\r\n const date = new Date(fieldValue);\r\n if (isValidDate(date)) {\r\n fieldValue = date.toISOString().split('T')[0];\r\n }\r\n } else if (isValidDate(fieldValue)) {\r\n fieldValue = fieldValue.toISOString().split('T')[0];\r\n }\r\n }\r\n } else {\r\n // Use default value\r\n fieldValue = getDefaultFieldValue(field);\r\n }\r\n\r\n newFormData[field.name] = fieldValue;\r\n });\r\n\r\n // Calculate computed values after all fields are set\r\n allFields.forEach(field => {\r\n const computedValue = calculateComputedValue(field, newFormData);\r\n if (computedValue !== undefined) {\r\n newFormData[field.name] = computedValue;\r\n }\r\n });\r\n\r\n setFormData(newFormData as T);\r\n setErrors({});\r\n\r\n // Notify parent of form data change\r\n if (onFormDataChange) {\r\n onFormDataChange(newFormData as T);\r\n }\r\n }, [memoizedFields, initialData, onFormDataChange, open]);\r\n\r\n // Update a field value\r\n const updateField = (fieldName: string, value: any) => {\r\n setFormData(prevData => {\r\n const newData = { ...prevData, [fieldName]: value };\r\n \r\n // Update dependent fields\r\n const updatedData = updateDependentFields(fieldName, newData);\r\n \r\n // Notify parent of form data change\r\n if (onFormDataChange) {\r\n onFormDataChange(updatedData);\r\n }\r\n \r\n return updatedData;\r\n });\r\n\r\n // Clear error for this field if it exists\r\n if (errors[fieldName]) {\r\n setErrors(prevErrors => {\r\n const newErrors = { ...prevErrors };\r\n delete newErrors[fieldName];\r\n return newErrors;\r\n });\r\n }\r\n\r\n // Validate field in real-time\r\n const field = getAllFields(memoizedFields).find(f => f.name === fieldName);\r\n if (field) {\r\n const error = validateField(field, value, formData);\r\n if (error) {\r\n setErrors(prevErrors => ({ ...prevErrors, [fieldName]: error }));\r\n }\r\n }\r\n };\r\n\r\n // Helper to get all fields (including nested)\r\n const getAllFields = (fieldList: FormField[]): FormField[] => {\r\n const allFields: FormField[] = [];\r\n \r\n fieldList.forEach(field => {\r\n allFields.push(field);\r\n if (field.fields) {\r\n allFields.push(...getAllFields(field.fields));\r\n }\r\n });\r\n \r\n return allFields;\r\n };\r\n\r\n // Validate entire form\r\n const validateForm = (): boolean => {\r\n const allFields = getAllFields(memoizedFields);\r\n const newErrors: Record<string, string> = {};\r\n\r\n allFields.forEach(field => {\r\n const error = validateField(field, formData[field.name], formData);\r\n if (error) {\r\n newErrors[field.name] = error;\r\n }\r\n });\r\n\r\n setErrors(newErrors);\r\n return Object.keys(newErrors).length === 0;\r\n };\r\n\r\n // Create submit handler\r\n const handleSubmit = (onSubmit: (data: T) => void) => {\r\n return (e?: React.FormEvent) => {\r\n if (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n \r\n if (validateForm()) {\r\n onSubmit(formData);\r\n }\r\n };\r\n };\r\n\r\n return {\r\n formData,\r\n errors,\r\n updateField,\r\n validateForm,\r\n handleSubmit,\r\n };\r\n}","import * as React from \"react\"\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Popover = PopoverPrimitive.Root\r\n\r\nconst PopoverTrigger = PopoverPrimitive.Trigger\r\n\r\nconst PopoverContent = React.forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n))\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\r\n\r\nexport { Popover, PopoverTrigger, PopoverContent }","import React from 'react';\r\nimport { Button } from './button';\r\nimport { Input } from './input';\r\nimport { Label } from './label';\r\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\r\n\r\ninterface ColorPickerProps {\r\n value?: string;\r\n onChange?: (color: string) => void;\r\n label?: string;\r\n}\r\n\r\nconst PRESET_COLORS = [\r\n '#3b82f6', '#ef4444', '#10b981', '#f59e0b', '#8b5cf6',\r\n '#06b6d4', '#84cc16', '#f97316', '#ec4899', '#6b7280'\r\n];\r\n\r\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\r\n value = '#3b82f6',\r\n onChange,\r\n label\r\n}) => {\r\n return (\r\n <div className=\"space-y-2\">\r\n {label && <Label>{label}</Label>}\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n className=\"w-full justify-start text-left font-normal\"\r\n >\r\n <div\r\n className=\"h-4 w-4 rounded border mr-2\"\r\n style={{ backgroundColor: value }}\r\n />\r\n {value}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-64\">\r\n <div className=\"space-y-3\">\r\n <div>\r\n <Label htmlFor=\"color-input\">Cor personalizada</Label>\r\n <Input\r\n id=\"color-input\"\r\n type=\"color\"\r\n value={value}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n className=\"h-10 w-full\"\r\n />\r\n </div>\r\n <div>\r\n <Label>Cores predefinidas</Label>\r\n <div className=\"grid grid-cols-5 gap-2 mt-2\">\r\n {PRESET_COLORS.map((color) => (\r\n <button\r\n key={color}\r\n className=\"h-8 w-8 rounded border-2 border-border hover:border-primary\"\r\n style={{ backgroundColor: color }}\r\n onClick={() => onChange?.(color)}\r\n aria-label={`Selecionar cor ${color}`}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n </div>\r\n );\r\n};","import * as React from \"react\"\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst ScrollArea = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative overflow-hidden\", className)}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\r\n {children}\r\n </ScrollAreaPrimitive.Viewport>\r\n <ScrollBar />\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n))\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n className={cn(\r\n \"flex touch-none select-none transition-colors\",\r\n orientation === \"vertical\" &&\r\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\r\n orientation === \"horizontal\" &&\r\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n))\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\r\n\r\nexport { ScrollArea, ScrollBar }\r\n","import React, { useState } from 'react';\r\nimport { Button } from './button';\r\nimport { Input } from './input';\r\nimport { Label } from './label';\r\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\r\nimport { ScrollArea } from './scroll-area';\r\nimport { \r\n Star, Heart, Home, User, Settings, Mail, Phone, Calendar,\r\n MapPin, Camera, Image, Music, Video, Book, Bookmark,\r\n Search, Filter, Edit, Trash2, Plus, Minus, Check, X,\r\n ChevronDown, ChevronUp, ChevronLeft, ChevronRight,\r\n ArrowUp, ArrowDown, ArrowLeft, ArrowRight,\r\n Clock, Bell, AlertCircle, Info, HelpCircle,\r\n Download, Upload, Share, Copy,\r\n Save, FileText, Folder, FolderOpen, Archive,\r\n Lock, Unlock, Eye, EyeOff, Shield, Key,\r\n Zap, Flame, Sparkles, Award, Trophy, Target\r\n} from 'lucide-react';\r\n\r\ninterface IconPickerProps {\r\n value?: string;\r\n onChange?: (iconName: string) => void;\r\n label?: string;\r\n}\r\n\r\nconst ICONS = {\r\n Star, Heart, Home, User, Settings, Mail, Phone, Calendar,\r\n MapPin, Camera, Image, Music, Video, Book, Bookmark,\r\n Search, Filter, Edit, Trash2, Plus, Minus, Check, X,\r\n ChevronDown, ChevronUp, ChevronLeft, ChevronRight,\r\n ArrowUp, ArrowDown, ArrowLeft, ArrowRight,\r\n Clock, Bell, AlertCircle, Info, HelpCircle,\r\n Download, Upload, Share, Copy,\r\n Save, FileText, Folder, FolderOpen, Archive,\r\n Lock, Unlock, Eye, EyeOff, Shield, Key,\r\n Zap, Flame, Sparkles, Award, Trophy, Target\r\n};\r\n\r\nexport const IconPicker: React.FC<IconPickerProps> = ({\r\n value = 'Star',\r\n onChange,\r\n label\r\n}) => {\r\n const [searchTerm, setSearchTerm] = useState('');\r\n\r\n const filteredIcons = Object.entries(ICONS).filter(([name]) =>\r\n name.toLowerCase().includes(searchTerm.toLowerCase())\r\n );\r\n\r\n const SelectedIcon = ICONS[value as keyof typeof ICONS] || Star;\r\n\r\n return (\r\n <div className=\"space-y-2\">\r\n {label && <Label>{label}</Label>}\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n className=\"w-full justify-start text-left font-normal\"\r\n >\r\n <SelectedIcon className=\"h-4 w-4 mr-2\" />\r\n {value}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-80\">\r\n <div className=\"space-y-3\">\r\n <div>\r\n <Label htmlFor=\"icon-search\">Buscar ícone</Label>\r\n <Input\r\n id=\"icon-search\"\r\n placeholder=\"Digite o nome do ícone...\"\r\n value={searchTerm}\r\n onChange={(e) => setSearchTerm(e.target.value)}\r\n />\r\n </div>\r\n <ScrollArea className=\"h-48\">\r\n <div className=\"grid grid-cols-6 gap-2\">\r\n {filteredIcons.map(([name, IconComponent]) => (\r\n <button\r\n key={name}\r\n className={`p-2 rounded border-2 hover:border-primary ${\r\n value === name ? 'border-primary bg-primary/10' : 'border-border'\r\n }`}\r\n onClick={() => onChange?.(name)}\r\n title={name}\r\n >\r\n <IconComponent className=\"h-4 w-4\" />\r\n </button>\r\n ))}\r\n </div>\r\n </ScrollArea>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n </div>\r\n );\r\n};","import { TokenManager } from '../services/TokenManager';\r\n\r\n/**\r\n * Limpa o flag de logout manual ao fazer login com sucesso\r\n */\r\nexport const clearManualLogout = (): void => {\r\n TokenManager.clearManualLogout();\r\n};","import { getSupabaseClient } from '../../supabase/SupabaseSingleton';\r\nimport { TokenManager } from './TokenManager';\r\nimport { clearManualLogout } from '../utils/AuthUtils';\r\n// Token decoder integrated\r\nimport { AUTH_CONFIG, isDevEnvironment } from '../../config';\r\nimport type { UserInfo, Company, AuthState } from '../../types';\r\n\r\nexport class AuthService {\r\n /**\r\n * Inicializa o estado de autenticação verificando apenas tokens armazenados\r\n * Tokens da URL devem ser processados exclusivamente na CallbackPage\r\n */\r\n static async initialize(): Promise<AuthState> {\r\n try {\r\n // Verificar se tokens existem e são válidos\r\n if (!TokenManager.hasAllTokens() || !TokenManager.areAllTokensValid()) {\r\n // Limpar tokens expirados se houver\r\n TokenManager.clearExpiredTokens();\r\n \r\n return {\r\n isAuthenticated: false,\r\n isLoading: false,\r\n user: null,\r\n alias: null,\r\n companies: [],\r\n selectedUnit: null,\r\n userId: null,\r\n userAlias: null,\r\n };\r\n }\r\n\r\n // Decodificar informações dos tokens armazenados\r\n const storedAccessToken = TokenManager.getAccessToken()!;\r\n const storedIdToken = TokenManager.getIdToken()!;\r\n\r\n // Limpar flag de logout manual ao fazer login com sucesso\r\n clearManualLogout();\r\n \r\n const user = this.extractUserFromIdToken(storedIdToken);\r\n const companies = this.extractCompaniesFromIdToken(storedIdToken);\r\n const defaultAlias = this.extractAliasFromAccessToken(storedAccessToken);\r\n \r\n // Priority: selected alias (if valid) > default alias > first company\r\n const storedSelectedAlias = TokenManager.getSelectedAlias();\r\n const isSelectedAliasValid = storedSelectedAlias && companies.some(c => c.alias === storedSelectedAlias);\r\n const selectedAlias = isSelectedAliasValid ? storedSelectedAlias : (defaultAlias || companies[0]?.alias || null);\r\n\r\n // Verificar se precisa regenerar token Supabase\r\n if (!TokenManager.isSupabaseTokenValid() && selectedAlias) {\r\n const newSupabaseToken = await this.generateSupabaseToken(storedAccessToken, selectedAlias);\r\n if (newSupabaseToken) {\r\n TokenManager.setSupabaseToken(newSupabaseToken);\r\n }\r\n }\r\n\r\n // Criar selectedUnit usando TokenManager\r\n let selectedUnit = null;\r\n if (selectedAlias) {\r\n const companyId = TokenManager.getCompanyId(selectedAlias);\r\n const company = companies.find(c => c.alias === selectedAlias);\r\n if (company) {\r\n selectedUnit = {\r\n id: companyId || company.id,\r\n name: company.name,\r\n alias: company.alias,\r\n };\r\n }\r\n }\r\n\r\n return {\r\n isAuthenticated: true,\r\n isLoading: false,\r\n user,\r\n alias: selectedAlias,\r\n companies,\r\n selectedUnit,\r\n userId: user?.id || null,\r\n userAlias: user?.id || null, // Para compatibilidade\r\n };\r\n } catch (error) {\r\n console.error('[Auth] Erro na inicialização:', error);\r\n return {\r\n isAuthenticated: false,\r\n isLoading: false,\r\n user: null,\r\n alias: null,\r\n companies: [],\r\n selectedUnit: null,\r\n userId: null,\r\n userAlias: null,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Login para ambiente de desenvolvimento - redireciona para callback com tokens\r\n */\r\n static async loginDev(): Promise<boolean> {\r\n try {\r\n const supabase = getSupabaseClient();\r\n const { data, error } = await supabase.functions.invoke('dev-tokens', {\r\n body: { environment: 'development' }\r\n });\r\n\r\n if (error) {\r\n console.error('[Auth] Erro na Edge Function dev-tokens:', error);\r\n return false;\r\n }\r\n\r\n if (!data?.access_token || !data?.id_token) {\r\n console.error('[Auth] Tokens ausentes na resposta');\r\n return false;\r\n }\r\n\r\n // Redirecionar para callback com tokens na URL (mesmo fluxo que prod)\r\n const callbackUrl = new URL('/callback', window.location.origin);\r\n callbackUrl.hash = `access_token=${data.access_token}&id_token=${data.id_token}&token_type=bearer`;\r\n \r\n window.location.href = callbackUrl.toString();\r\n return true;\r\n } catch (error) {\r\n console.error('[Auth] Erro no login dev:', error);\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Login para ambiente de produção (OAuth)\r\n */\r\n static loginProd(): void {\r\n // Gerar e armazenar state e nonce para verificação\r\n const state = TokenManager.generateOAuthState();\r\n TokenManager.setOAuthState(state);\r\n const nonce = TokenManager.generateOAuthNonce();\r\n TokenManager.setOAuthNonce(nonce);\r\n\r\n // Construir URL de autorização\r\n const redirectUri = `${window.location.origin}/callback`;\r\n const authUrl = new URL(AUTH_CONFIG.oauth.authUrl);\r\n authUrl.searchParams.set('client_id', AUTH_CONFIG.oauth.clientId);\r\n authUrl.searchParams.set('response_type', AUTH_CONFIG.oauth.responseType);\r\n authUrl.searchParams.set('scope', AUTH_CONFIG.oauth.scope);\r\n authUrl.searchParams.set('redirect_uri', redirectUri);\r\n authUrl.searchParams.set('state', state);\r\n authUrl.searchParams.set('nonce', nonce);\r\n authUrl.searchParams.set('response_mode', 'fragment');\r\n\r\n // Verificar se estamos em produção\r\n const isProduction = !isDevEnvironment();\r\n\r\n window.location.href = authUrl.toString();\r\n }\r\n\r\n /**\r\n * Processa o callback do OAuth (simplificado)\r\n */\r\n static async processCallback(): Promise<boolean> {\r\n try {\r\n // Idempotent: if tokens already stored, ensure Supabase token and return\r\n if (TokenManager.hasAllTokens()) {\r\n const existingSupabase = TokenManager.getValidSupabaseToken();\r\n if (!existingSupabase) {\r\n const storedAccess = TokenManager.getAccessToken()!;\r\n const aliasFromAccess = this.extractAliasFromAccessToken(storedAccess);\r\n const aliasFallback = this.extractCompaniesFromIdToken(TokenManager.getIdToken()!)[0]?.alias;\r\n const alias = aliasFromAccess || aliasFallback;\r\n if (alias) {\r\n const supa = await this.generateSupabaseToken(storedAccess, alias);\r\n if (supa) TokenManager.setSupabaseToken(supa);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n const hashParams = new URLSearchParams(window.location.hash.startsWith('#') ? window.location.hash.substring(1) : window.location.hash);\r\n const searchParams = new URLSearchParams(window.location.search);\r\n const getParam = (key: string) => hashParams.get(key) || searchParams.get(key);\r\n \r\n const accessToken = getParam('access_token');\r\n const idToken = getParam('id_token');\r\n const error = getParam('error');\r\n\r\n // Verificar se há erro no callback\r\n if (error) {\r\n throw new Error(`Erro OAuth: ${error}`);\r\n }\r\n\r\n // Verificar se tokens estão presentes\r\n if (!accessToken || !idToken) {\r\n throw new Error('Tokens não encontrados na URL de callback');\r\n }\r\n\r\n // Armazenar tokens\r\n TokenManager.setAccessToken(accessToken);\r\n TokenManager.setIdToken(idToken);\r\n \r\n // Limpar flag de logout manual ao processar callback com sucesso\r\n clearManualLogout();\r\n\r\n // Extrair alias do access token\r\n const alias = this.extractAliasFromAccessToken(accessToken);\r\n \r\n if (!alias) {\r\n // Fallback: usar primeira empresa do ID token\r\n const companies = this.extractCompaniesFromIdToken(idToken);\r\n if (companies.length === 0) {\r\n throw new Error('Nenhuma empresa encontrada nos tokens');\r\n }\r\n const firstAlias = companies[0].alias;\r\n const supabaseToken = await this.generateSupabaseToken(accessToken, firstAlias);\r\n if (!supabaseToken) {\r\n throw new Error('Falha ao gerar token Supabase');\r\n }\r\n TokenManager.setSupabaseToken(supabaseToken);\r\n } else {\r\n // Gerar token Supabase com alias encontrado\r\n const supabaseToken = await this.generateSupabaseToken(accessToken, alias);\r\n if (!supabaseToken) {\r\n throw new Error('Falha ao gerar token Supabase');\r\n }\r\n TokenManager.setSupabaseToken(supabaseToken);\r\n }\r\n\r\n // Limpar parâmetros OAuth do localStorage (se existirem)\r\n TokenManager.clearOAuthState();\r\n TokenManager.clearOAuthNonce();\r\n\r\n return true;\r\n } catch (error) {\r\n console.error('❌ [CallbackPage] Erro ao processar callback:', error);\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Logout do usuário\r\n */\r\n static logout(): void {\r\n TokenManager.setManualLogout();\r\n TokenManager.clearAll();\r\n window.location.href = '/login';\r\n }\r\n\r\n /**\r\n * Decodifica um token JWT\r\n */\r\n private static decodeToken(token: string): any {\r\n try {\r\n const payload = token.split('.')[1];\r\n const decoded = atob(payload);\r\n \r\n // Converter para UTF-8 corretamente\r\n const bytes = new Uint8Array(decoded.length);\r\n for (let i = 0; i < decoded.length; i++) {\r\n bytes[i] = decoded.charCodeAt(i);\r\n }\r\n \r\n const utf8String = new TextDecoder('utf-8').decode(bytes);\r\n return JSON.parse(utf8String);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Extrai informações do usuário do ID token\r\n */\r\n private static extractUserFromIdToken(idToken: string): UserInfo | null {\r\n const payload = this.decodeToken(idToken);\r\n if (!payload) return null;\r\n\r\n return {\r\n id: payload.subNewId,\r\n email: payload.email,\r\n name: payload.name,\r\n identifier: payload.identifier,\r\n };\r\n }\r\n\r\n /**\r\n * Extrai empresas do ID token com companyId incluído\r\n */\r\n private static extractCompaniesFromIdToken(idToken: string): Company[] {\r\n const payload = this.decodeToken(idToken);\r\n if (!payload) return [];\r\n\r\n const companies: Company[] = [];\r\n \r\n // Buscar campos co* dinâmicos\r\n Object.keys(payload).forEach(key => {\r\n const match = key.match(/^co(\\d+)$/);\r\n if (match && typeof payload[key] === 'string') {\r\n // Formato: \"alias;id1;id2;Nome da Empresa;status;...;...;companyId\"\r\n const parts = payload[key].split(';');\r\n if (parts.length >= 4) {\r\n companies.push({\r\n id: parts.length > 7 ? parts[7].trim() : '', // companyId na posição 7\r\n alias: parts[0].trim(),\r\n name: parts[3].trim(),\r\n });\r\n } else {\r\n // Fallback para formato original: \"alias|Nome da Empresa\"\r\n const [alias, name] = payload[key].split('|');\r\n if (alias && name) {\r\n companies.push({\r\n id: '', // Não disponível no formato antigo\r\n alias: alias.trim(),\r\n name: name.trim(),\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n return companies;\r\n }\r\n\r\n /**\r\n * Extrai alias do access token (campo default)\r\n */\r\n private static extractAliasFromAccessToken(accessToken: string): string | null {\r\n const payload = this.decodeToken(accessToken);\r\n return payload?.default || null;\r\n }\r\n\r\n /**\r\n * Gera token Supabase usando access token e alias\r\n */\r\n public static async generateSupabaseToken(accessToken: string, alias: string): Promise<string | null> {\r\n try {\r\n const supabase = getSupabaseClient();\r\n const { data, error } = await supabase.functions.invoke('validate-token', {\r\n body: {\r\n access_token: accessToken,\r\n alias: alias,\r\n }\r\n });\r\n\r\n if (error) {\r\n console.error('[Auth] Erro na Edge Function validate-token:', error);\r\n \r\n // Se erro 401, significa que os tokens Qualiex expiraram\r\n if (error.message?.includes('401') || error.message?.includes('Unauthorized')) {\r\n console.warn('[Auth] Tokens Qualiex expirados, forçando logout');\r\n this.logout();\r\n return null;\r\n }\r\n \r\n return null;\r\n }\r\n\r\n if (!data?.access_token) {\r\n console.error('[Auth] Token Supabase ausente na resposta');\r\n return null;\r\n }\r\n\r\n return data.access_token;\r\n } catch (error) {\r\n console.error('[Auth] Erro ao gerar token Supabase:', error);\r\n \r\n // Se erro de rede ou 401, pode ser token expirado\r\n if (error instanceof Error && (error.message.includes('401') || error.message.includes('Unauthorized'))) {\r\n console.warn('[Auth] Possível token expirado, forçando logout');\r\n this.logout();\r\n }\r\n \r\n return null;\r\n }\r\n }\r\n}","// Global error interceptor for handling authentication errors\r\nimport { TokenManager } from '../services/TokenManager';\r\n\r\nexport class AuthErrorInterceptor {\r\n /**\r\n * Intercepts and handles authentication-related errors\r\n * Returns true if error was handled and should not bubble up\r\n */\r\n static handleError(error: any): boolean {\r\n if (!error) return false;\r\n\r\n const errorMessage = error.message || error.toString();\r\n const isAuthError = this.isAuthenticationError(error, errorMessage);\r\n\r\n if (isAuthError) {\r\n console.warn('[AuthErrorInterceptor] Erro de autenticação detectado, limpando tokens e forçando logout');\r\n \r\n // Clear tokens and force logout\r\n TokenManager.clearAll();\r\n \r\n // Redirect to login (avoid using AuthService to prevent circular dependency)\r\n window.location.href = '/';\r\n \r\n return true; // Error was handled\r\n }\r\n\r\n return false; // Error was not handled\r\n }\r\n\r\n /**\r\n * Determines if an error is authentication-related\r\n */\r\n private static isAuthenticationError(error: any, message: string): boolean {\r\n // Check for 401 status codes\r\n if (error.status === 401 || error.statusCode === 401) {\r\n return true;\r\n }\r\n\r\n // Check for common authentication error messages\r\n const authErrorKeywords = [\r\n '401',\r\n 'unauthorized',\r\n 'token',\r\n 'expired',\r\n 'invalid',\r\n 'authentication',\r\n 'login',\r\n 'session'\r\n ];\r\n\r\n const lowerMessage = message.toLowerCase();\r\n return authErrorKeywords.some(keyword => lowerMessage.includes(keyword));\r\n }\r\n\r\n /**\r\n * Wraps a promise to automatically handle authentication errors\r\n */\r\n static async wrapAsync<T>(promise: Promise<T>): Promise<T> {\r\n try {\r\n return await promise;\r\n } catch (error) {\r\n const wasHandled = this.handleError(error);\r\n if (!wasHandled) {\r\n throw error; // Re-throw if not an auth error\r\n }\r\n // If auth error was handled, throw a user-friendly error\r\n throw new Error('Sua sessão expirou. Você será redirecionado para fazer login novamente.');\r\n }\r\n }\r\n}","import React, { createContext, useContext, useState, useEffect, useCallback, useMemo } from 'react';\r\nimport { useQueryClient } from '@tanstack/react-query';\r\nimport { AuthState, Company, SelectedUnit } from '../../types';\r\nimport { TokenManager } from '../services/TokenManager';\r\nimport { AuthService } from '../services/AuthService';\r\nimport { AuthErrorInterceptor } from '../utils/ErrorInterceptor';\r\n\r\n// Estado inicial padrão\r\nconst getInitialState = (): AuthState => {\r\n return {\r\n user: null,\r\n companies: [],\r\n alias: null,\r\n isAuthenticated: false,\r\n isLoading: true,\r\n selectedUnit: null,\r\n userId: null,\r\n userAlias: null,\r\n };\r\n};\r\n\r\n// Tipo do contexto\r\ninterface AuthContextType extends AuthState {\r\n logout: () => void;\r\n processCallback: () => Promise<boolean>;\r\n switchUnit: (company: Company) => Promise<void>;\r\n availableUnits: Company[];\r\n \r\n // Search state (movido do AppContext)\r\n isSearchVisible: boolean;\r\n setSearchVisible: (visible: boolean) => void;\r\n clearSearch: () => void;\r\n refreshData: () => void;\r\n}\r\n\r\n// Criação do contexto\r\nconst AuthContext = createContext<AuthContextType | undefined>(undefined);\r\n\r\n// Provider\r\nexport const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n const [authState, setAuthState] = useState<AuthState>(getInitialState());\r\n \r\n // Try to get queryClient, but make it optional to avoid dependency issues\r\n let queryClient: any = null;\r\n try {\r\n queryClient = useQueryClient();\r\n } catch {\r\n // QueryClient not available, continue without it\r\n }\r\n \r\n // Search state (movido do AppContext)\r\n const [isSearchVisible, setIsSearchVisible] = useState(false);\r\n const [refreshTrigger, setRefreshTrigger] = useState(0);\r\n\r\n // Função para atualizar o estado de autenticação\r\n const updateAuthState = useCallback((newState: Partial<AuthState>) => {\r\n setAuthState(prev => ({ ...prev, ...newState }));\r\n }, []);\r\n\r\n // Função para definir loading\r\n const setLoading = useCallback((isLoading: boolean) => {\r\n setAuthState(prev => ({ ...prev, isLoading }));\r\n }, []);\r\n\r\n // Função para resetar o estado\r\n const resetAuthState = useCallback(() => {\r\n setAuthState(getInitialState());\r\n }, []);\r\n\r\n // Função para trocar de unidade\r\n const switchUnit = useCallback(async (company: Company) => {\r\n try {\r\n setLoading(true);\r\n \r\n // Obter access token atual\r\n const accessToken = TokenManager.getAccessToken();\r\n if (!accessToken) {\r\n console.error('[AuthContext] Access token não encontrado para trocar unidade');\r\n return;\r\n }\r\n\r\n // Gerar novo token Supabase com o alias da nova empresa\r\n const newSupabaseToken = await AuthService.generateSupabaseToken(accessToken, company.alias);\r\n if (!newSupabaseToken) {\r\n console.error('[AuthContext] Erro ao gerar token Supabase para nova unidade');\r\n return;\r\n }\r\n\r\n // Armazenar o novo token\r\n TokenManager.setSupabaseToken(newSupabaseToken);\r\n\r\n // Armazenar alias selecionado para persistir entre reloads\r\n TokenManager.setSelectedAlias(company.alias);\r\n\r\n // Criar selectedUnit atualizado\r\n const companyId = TokenManager.getCompanyId(company.alias);\r\n const newSelectedUnit: SelectedUnit = {\r\n id: companyId || company.id,\r\n name: company.name,\r\n alias: company.alias,\r\n };\r\n\r\n // Atualizar estado da aplicação\r\n updateAuthState({\r\n alias: company.alias,\r\n selectedUnit: newSelectedUnit,\r\n });\r\n\r\n // Invalidar queries para refrescar dados da nova empresa\r\n if (queryClient) {\r\n await queryClient.invalidateQueries();\r\n }\r\n \r\n } catch (error) {\r\n console.error('[AuthContext] Erro ao trocar unidade', error, company);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [updateAuthState, queryClient, setLoading]);\r\n\r\n\r\n const processCallback = useCallback(async () => {\r\n return await AuthService.processCallback();\r\n }, []);\r\n\r\n const logout = useCallback(async () => {\r\n AuthService.logout();\r\n resetAuthState();\r\n if (queryClient) {\r\n await queryClient.clear();\r\n }\r\n }, [resetAuthState, queryClient]);\r\n\r\n\r\n // Search functions (movidas do AppContext)\r\n const setSearchVisible = useCallback((visible: boolean) => {\r\n setIsSearchVisible(visible);\r\n }, []);\r\n\r\n const clearSearch = useCallback(() => {\r\n setRefreshTrigger(prev => prev + 1);\r\n }, []);\r\n\r\n const refreshData = useCallback(() => {\r\n setRefreshTrigger(prev => prev + 1);\r\n }, []);\r\n\r\n // Verificação periódica de tokens válidos\r\n useEffect(() => {\r\n if (!authState.isAuthenticated) return;\r\n\r\n let mounted = true;\r\n\r\n const checkTokenValidity = () => {\r\n if (!mounted) return;\r\n \r\n if (!TokenManager.areAllTokensValid()) {\r\n console.warn('[AuthContext] Tokens expirados detectados, fazendo logout');\r\n if (mounted) {\r\n logout();\r\n }\r\n }\r\n };\r\n\r\n // Verificar a cada 10 minutos\r\n const interval = setInterval(checkTokenValidity, 10 * 60 * 1000);\r\n\r\n return () => {\r\n mounted = false;\r\n clearInterval(interval);\r\n };\r\n }, [authState.isAuthenticated, logout]);\r\n\r\n // Inicialização\r\n useEffect(() => {\r\n let mounted = true;\r\n\r\n const initializeAuth = async () => {\r\n try {\r\n // Add small delay to ensure DOM is ready in production\r\n await new Promise(resolve => setTimeout(resolve, 100));\r\n \r\n if (!mounted) return;\r\n \r\n const authResult = await AuthService.initialize();\r\n \r\n if (!mounted) return;\r\n \r\n if (authResult && authResult.isAuthenticated) {\r\n updateAuthState({\r\n user: authResult.user,\r\n companies: authResult.companies,\r\n alias: authResult.alias,\r\n isAuthenticated: true,\r\n isLoading: false,\r\n selectedUnit: authResult.selectedUnit,\r\n userId: authResult.userId,\r\n userAlias: authResult.userAlias,\r\n });\r\n\r\n // Token Supabase já é gerenciado automaticamente pelo singleton\r\n } else {\r\n if (mounted) setLoading(false);\r\n }\r\n } catch (error) {\r\n console.error('[AuthContext] Erro na inicialização da autenticação', error);\r\n if (mounted) {\r\n AuthErrorInterceptor.handleError(error);\r\n setLoading(false);\r\n }\r\n }\r\n };\r\n\r\n initializeAuth();\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [updateAuthState, setLoading, logout]);\r\n\r\n // Memorizar o contexto para evitar re-renderizações desnecessárias\r\n const contextValue = useMemo((): AuthContextType => ({\r\n ...authState,\r\n logout,\r\n processCallback,\r\n switchUnit,\r\n availableUnits: authState.companies,\r\n \r\n // Search state\r\n isSearchVisible,\r\n setSearchVisible,\r\n clearSearch,\r\n refreshData,\r\n }), [authState, logout, processCallback, switchUnit, isSearchVisible, setSearchVisible, clearSearch, refreshData]);\r\n\r\n return (\r\n <AuthContext.Provider value={contextValue}>\r\n {children}\r\n </AuthContext.Provider>\r\n );\r\n};\r\n\r\n// Hook personalizado para usar o contexto\r\nexport const useAuth = () => {\r\n const context = useContext(AuthContext);\r\n if (context === undefined) {\r\n throw new Error('useAuth deve ser usado dentro de um AuthProvider');\r\n }\r\n return context;\r\n};","import { useQuery } from '@tanstack/react-query';\r\nimport { QualiexUser } from '../../types';\r\nimport { qualiexApi } from '../services/qualiexApi';\r\nimport { useAuth } from '../../auth/contexts/AuthContext';\r\nimport { errorService } from '../../services/ErrorService';\r\nimport { getQualiexConfig } from '../../config';\r\n\r\ninterface UseQualiexUsersOptions {\r\n enabled?: boolean;\r\n}\r\n\r\nexport const useQualiexUsers = (options: UseQualiexUsersOptions = {}) => {\r\n const { user, alias: companyAlias } = useAuth();\r\n const qualiexConfig = getQualiexConfig();\r\n const { enabled = qualiexConfig.enableUsersApi } = options;\r\n\r\n return useQuery<QualiexUser[]>({\r\n queryKey: ['qualiex-users', companyAlias],\r\n queryFn: () => qualiexApi.getUsers(companyAlias!),\r\n enabled: enabled && !!companyAlias && !!user,\r\n retry: 2,\r\n retryDelay: 1000,\r\n });\r\n};","import React from 'react';\r\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../components/ui/select';\r\nimport { Skeleton } from '../../components/ui/skeleton';\r\nimport { useQualiexUsers } from '../hooks/useQualiexUsers';\r\nimport { AlertCircle } from 'lucide-react';\r\nimport { cn } from '../../utils';\r\n\r\ninterface QualiexUserFieldProps {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n enabled?: boolean;\r\n}\r\n\r\nexport const QualiexUserField: React.FC<QualiexUserFieldProps> = ({\r\n value = '',\r\n onChange,\r\n placeholder = 'Selecionar usuário',\r\n disabled,\r\n className,\r\n enabled\r\n}) => {\r\n const { data: users = [], isLoading, error } = useQualiexUsers({ enabled });\r\n\r\n if (isLoading) {\r\n return <Skeleton className={cn(\"h-10 w-full\", className)} />;\r\n }\r\n\r\n if (error) {\r\n return (\r\n <div className={`flex items-center gap-2 p-2 border border-destructive/20 rounded-md ${className}`}>\r\n <AlertCircle className=\"h-4 w-4 text-destructive\" />\r\n <span className=\"text-sm text-destructive\">Erro ao carregar usuários</span>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <Select\r\n value={value}\r\n onValueChange={onChange}\r\n disabled={disabled || users.length === 0}\r\n >\r\n <SelectTrigger className={className}>\r\n <SelectValue placeholder={placeholder} />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {users.length === 0 ? (\r\n <SelectItem value=\"no-users\" disabled>\r\n Nenhum usuário encontrado\r\n </SelectItem>\r\n ) : (\r\n users.map((user) => (\r\n <SelectItem key={user.userId} value={user.userId}>\r\n {user.userName}\r\n </SelectItem>\r\n ))\r\n )}\r\n </SelectContent>\r\n </Select>\r\n );\r\n};","import React from 'react';\r\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../components/ui/select';\r\n\r\ninterface QualiexResponsibleSelectFieldProps {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const QualiexResponsibleSelectField: React.FC<QualiexResponsibleSelectFieldProps> = ({\r\n value,\r\n onChange,\r\n placeholder = 'Selecionar responsável',\r\n disabled,\r\n className\r\n}) => {\r\n return (\r\n <Select value={value} onValueChange={onChange} disabled={disabled}>\r\n <SelectTrigger className={className}>\r\n <SelectValue placeholder={placeholder} />\r\n </SelectTrigger>\r\n <SelectContent>\r\n <SelectItem value=\"placeholder\">Responsável placeholder</SelectItem>\r\n </SelectContent>\r\n </Select>\r\n );\r\n};","import React, { useState, useMemo, useCallback } from 'react';\r\nimport { Dialog, DialogContent, DialogTitle, DialogDescription, DialogHeader } from '../../components/ui/dialog';\r\n// VisuallyHidden removed - using inline implementation\r\nimport type { BaseFormProps, FormField, FormSection } from '../../types';\r\nimport { useBaseForm } from '../hooks/useBaseForm';\r\nimport { cn } from '../../utils';\r\nimport { Button } from '../../components/ui/button';\r\nimport { Input } from '../../components/ui/input';\r\nimport { Textarea } from '../../components/ui/textarea';\r\nimport { Label } from '../../components/ui/label';\r\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../components/ui/select';\r\nimport { ColorPicker } from '../../components/ui/color-picker';\r\nimport { IconPicker } from '../../components/ui/icon-picker';\r\n\r\nimport { QualiexUserField } from '../../qualiex/components/QualiexUserField';\r\nimport { QualiexResponsibleSelectField } from '../../qualiex/components/QualiexResponsibleSelectField';\r\nimport { getQualiexConfig } from '../../config';\r\nfunction BaseForm<T extends Record<string, any>>({\r\n title,\r\n sections,\r\n initialData,\r\n onSubmit,\r\n onCancel,\r\n open,\r\n submitButtonText = 'Salvar',\r\n isLoading = false,\r\n usersData\r\n}: BaseFormProps<T> & {\r\n usersData?: any[];\r\n isLoading?: boolean;\r\n}) {\r\n const [activeSection, setActiveSection] = useState(sections?.[0]?.id || '');\r\n\r\n // Stabilize allFields reference using useMemo to prevent infinite re-renders\r\n // Now handles grouped fields by expanding them\r\n const allFields = useMemo(() => {\r\n if (!sections || !Array.isArray(sections)) return [];\r\n return sections.flatMap(section => section.fields.flatMap(field => field.type === 'group' ? field.fields || [] : field));\r\n }, [sections]);\r\n const {\r\n formData,\r\n errors,\r\n updateField,\r\n handleSubmit\r\n } = useBaseForm<T>(allFields, initialData, undefined, open);\r\n\r\n // Evaluate section conditions and filter available sections\r\n const availableSections = useMemo(() => {\r\n if (!sections || !Array.isArray(sections)) return [];\r\n return sections.map(section => ({\r\n ...section,\r\n disabled: section.condition ? !section.condition(formData) : section.disabled || false\r\n }));\r\n }, [sections, formData]);\r\n\r\n // Ensure active section is available, if not switch to first available\r\n const validActiveSection = useMemo(() => {\r\n const currentSection = availableSections.find(s => s.id === activeSection);\r\n if (currentSection && !currentSection.disabled) {\r\n return activeSection;\r\n }\r\n const firstAvailable = availableSections.find(s => !s.disabled);\r\n return firstAvailable?.id || activeSection;\r\n }, [availableSections, activeSection]);\r\n\r\n // Update active section if it's not valid\r\n React.useEffect(() => {\r\n if (validActiveSection !== activeSection) {\r\n setActiveSection(validActiveSection);\r\n }\r\n }, [validActiveSection, activeSection]);\r\n const currentSection = availableSections.find(s => s.id === validActiveSection);\r\n const renderField = (field: any) => {\r\n // For computed fields, use the computed value, otherwise use form data\r\n // Fix: Use proper null/undefined checks instead of || to preserve 0 values\r\n // For computed fields, use the computed value, otherwise use form data\r\n // Fix: Use proper null/undefined checks instead of || to preserve 0 values\r\n const rawValue = field.computedValue ? formData[field.name as keyof T] : formData[field.name as keyof T];\r\n const value = rawValue !== undefined ? rawValue : '';\r\n const error = errors[field.name];\r\n switch (field.type) {\r\n case 'group':\r\n return <div key={field.name} className=\"space-y-2\">\r\n {field.label}\r\n <div className={field.className || (field.layout === 'horizontal' ? 'flex gap-3' : 'space-y-3')}>\r\n {field.fields?.map((subField: any) => renderField(subField))}\r\n </div>\r\n </div>;\r\n case 'user-select':\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <QualiexUserField\r\n value={value || ''} \r\n onChange={newValue => updateField(field.name, newValue)} \r\n placeholder={field.placeholder} \r\n disabled={field.disabled} \r\n className={error ? 'border-red-500' : ''} \r\n />\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n case 'textarea':\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <Textarea id={field.name} value={value || ''} onChange={e => {\r\n updateField(field.name, e.target.value);\r\n }} placeholder={field.placeholder} disabled={field.disabled} className={`${error ? 'border-red-500' : ''} ${field.disabled ? 'bg-gray-100 cursor-not-allowed' : ''}`} />\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n case 'select':\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <Select value={String(value)} onValueChange={newValue => {\r\n updateField(field.name, newValue);\r\n // Execute custom onValueChange if provided\r\n if (field.onValueChange) {\r\n field.onValueChange(newValue);\r\n }\r\n }} disabled={field.disabled}>\r\n <SelectTrigger className={`${error ? 'border-red-500' : ''} ${field.disabled ? 'bg-gray-100 cursor-not-allowed' : ''}`}>\r\n <SelectValue placeholder={field.placeholder} />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {field.options?.map(option => <SelectItem key={option.value} value={option.value}>\r\n {option.label}\r\n </SelectItem>)}\r\n </SelectContent>\r\n </Select>\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n case 'date':\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <Input id={field.name} type=\"date\" value={String(value)} onChange={e => updateField(field.name, e.target.value)} placeholder={field.placeholder} disabled={field.disabled} className={cn(\"w-full\", error ? 'border-red-500' : '', field.disabled ? 'bg-gray-100 cursor-not-allowed' : '')} />\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n case 'single-responsible-select':\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <QualiexResponsibleSelectField \r\n value={String(value)} \r\n onChange={selectedResponsible => updateField(field.name, selectedResponsible)} \r\n placeholder={field.placeholder}\r\n disabled={field.disabled} \r\n className={error ? 'border-red-500' : ''} \r\n />\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n case 'simple-qualiex-user-field':\r\n const qualiexConfig = getQualiexConfig();\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <QualiexUserField \r\n value={value ?? ''}\r\n onChange={newValue => updateField(field.name, newValue)}\r\n placeholder={field.placeholder} \r\n disabled={field.disabled} \r\n className={error ? 'border-red-500' : ''} \r\n enabled={qualiexConfig.enableUsersApi}\r\n />\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n case 'color':\r\n return (\r\n <div key={field.name}>\r\n <Label htmlFor={field.name}>{field.label} {field.required && <span className=\"text-destructive\">*</span>}</Label>\r\n <Input\r\n id={field.name}\r\n type=\"color\"\r\n value={value || field.defaultValue || '#000000'}\r\n onChange={(e) => updateField(field.name, e.target.value)}\r\n className=\"h-10\"\r\n />\r\n {error && (\r\n <p className=\"text-sm text-destructive mt-1\">{error}</p>\r\n )}\r\n </div>\r\n );\r\n\r\n case 'color-picker':\r\n return (\r\n <div key={field.name}>\r\n <ColorPicker\r\n label={`${field.label} ${field.required ? '*' : ''}`}\r\n value={value || field.defaultValue || '#3b82f6'}\r\n onChange={(color) => updateField(field.name, color)}\r\n />\r\n {error && (\r\n <p className=\"text-sm text-destructive mt-1\">{error}</p>\r\n )}\r\n </div>\r\n );\r\n\r\n case 'icon-picker':\r\n return (\r\n <div key={field.name}>\r\n <IconPicker\r\n label={`${field.label} ${field.required ? '*' : ''}`}\r\n value={value || field.defaultValue || 'Star'}\r\n onChange={(iconName) => updateField(field.name, iconName)}\r\n />\r\n {error && (\r\n <p className=\"text-sm text-destructive mt-1\">{error}</p>\r\n )}\r\n </div>\r\n );\r\n\r\n case 'number':\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <Input id={field.name} type=\"number\" value={value !== null && value !== undefined ? String(value) : ''} onChange={e => {\r\n const inputValue = e.target.value;\r\n const newValue = inputValue === '' ? null : Number(inputValue);\r\n updateField(field.name, newValue);\r\n }} placeholder={field.placeholder} disabled={field.disabled} className={`${error ? 'border-red-500' : ''} ${field.disabled ? 'bg-gray-100 cursor-not-allowed' : ''}`} min={field.min} step={field.step || '1'} />\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n default:\r\n // text\r\n return <div key={field.name} className={`space-y-2 ${field.className || ''}`}>\r\n <Label htmlFor={field.name}>{field.label}</Label>\r\n <Input id={field.name} type=\"text\" value={value || ''} onChange={e => {\r\n updateField(field.name, e.target.value);\r\n }} placeholder={field.placeholder} disabled={field.disabled} className={`${error ? 'border-red-500' : ''} ${field.disabled ? 'bg-gray-100 cursor-not-allowed' : ''}`} readOnly={field.disabled} />\r\n {error && <p className=\"text-sm text-red-500\">{error}</p>}\r\n </div>;\r\n }\r\n };\r\n const renderSectionContent = useCallback(() => {\r\n if (!currentSection) return null;\r\n\r\n // Show disabled message if section is disabled\r\n if (currentSection.disabled) {\r\n return <div className=\"flex flex-col items-center justify-center py-12 text-center\">\r\n <div className=\"rounded-full bg-muted p-3 mb-4\">\r\n <svg className=\"h-6 w-6 text-muted-foreground\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 15v2m0 0v2m0-2h2m-2 0H9m3-8V9m0-4V3\" />\r\n </svg>\r\n </div>\r\n <h3 className=\"text-lg font-semibold mb-2\">Seção não disponível</h3>\r\n <p className=\"text-muted-foreground max-w-sm\">\r\n Complete as informações obrigatórias na seção \"Informações Gerais\" para acessar esta seção.\r\n </p>\r\n </div>;\r\n }\r\n\r\n // If section has a custom component, render it\r\n if (currentSection.component) {\r\n const SectionComponent = currentSection.component;\r\n return <SectionComponent formData={formData} updateField={updateField} errors={errors} users={usersData} disabled={currentSection.disabled} />;\r\n }\r\n\r\n // Default field rendering\r\n return <div className=\"space-y-3\">\r\n {currentSection.fields.map(renderField)}\r\n </div>;\r\n }, [currentSection, formData, updateField, errors, usersData, renderField]);\r\n const handleSectionChange = (sectionId: string) => {\r\n const section = availableSections.find(s => s.id === sectionId);\r\n if (section && !section.disabled) {\r\n setActiveSection(sectionId);\r\n }\r\n };\r\n const formContent =\r\n // Default layout without sidebar - compact modal version\r\n <div className=\"flex flex-col max-h-[80vh]\">\r\n {/* Section navigation for multi-section forms */}\r\n {availableSections.length > 1 && <div className=\"flex-shrink-0 p-4 border-b\">\r\n <div className=\"flex space-x-2\">\r\n {availableSections.map(section => \r\n <Button\r\n key={section.id}\r\n variant={validActiveSection === section.id ? \"action-primary\" : \"action-secondary\"}\r\n size=\"sm\"\r\n onClick={() => handleSectionChange(section.id)}\r\n disabled={section.disabled}\r\n className={section.disabled ? \"opacity-50 cursor-not-allowed\" : \"\"}\r\n >\r\n {section.title}\r\n </Button>\r\n )}\r\n </div>\r\n </div>}\r\n\r\n {/* Content */}\r\n <div className=\"flex-1 overflow-y-auto px-2 md:px-4 pt-0 pb-2 md:pb-4\">\r\n {isLoading ? <div className=\"flex items-center justify-center py-12\">\r\n <div className=\"text-muted-foreground\">Carregando dados...</div>\r\n </div> : <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-3 md:space-y-4\">\r\n {renderSectionContent()}\r\n \r\n {/* Submit buttons */}\r\n <div className=\"flex justify-end space-x-2 pt-4\">\r\n <Button type=\"button\" variant=\"outline\" onClick={onCancel}>\r\n Cancelar\r\n </Button>\r\n <Button type=\"submit\" disabled={isLoading}>\r\n {submitButtonText}\r\n </Button>\r\n </div>\r\n </form>}\r\n </div>\r\n </div>;\r\nreturn <Dialog open={open} onOpenChange={openState => {\r\n // Só fecha se explicitamente mudou para false\r\n if (openState === false && open === true) {\r\n onCancel();\r\n }\r\n}}>\r\n <DialogContent className=\"max-w-4xl max-h-[90vh] overflow-hidden\">\r\n <DialogHeader className=\"bg-primary text-primary-foreground px-6 py-4 -mx-6 -mt-6 mb-4\">\r\n <DialogTitle className=\"text-white\">{title}</DialogTitle>\r\n <DialogDescription className=\"sr-only\">\r\n Formulário para preenchimento de dados\r\n </DialogDescription>\r\n </DialogHeader>\r\n {formContent}\r\n </DialogContent>\r\n </Dialog>;\r\n}\r\nexport default BaseForm;","import BaseForm from \"./BaseForm\";\r\nimport type { FormSection, CrudEntity } from \"../../types\";\r\n\r\ninterface CrudFormProps<T extends CrudEntity> {\r\n open: boolean;\r\n title: string;\r\n sections: FormSection[];\r\n initialData?: Partial<T>;\r\n onSubmit: (data: T) => void;\r\n onCancel: () => void;\r\n isLoading?: boolean;\r\n submitButtonText?: string;\r\n}\r\n\r\nexport function CrudForm<T extends CrudEntity>({\r\n open,\r\n title,\r\n sections,\r\n initialData,\r\n onSubmit,\r\n onCancel,\r\n isLoading = false,\r\n submitButtonText = \"Salvar\"\r\n}: CrudFormProps<T>) {\r\n return (\r\n <BaseForm\r\n open={open}\r\n title={title}\r\n sections={sections}\r\n initialData={initialData}\r\n onSubmit={onSubmit}\r\n onCancel={onCancel}\r\n isLoading={isLoading}\r\n submitButtonText={submitButtonText}\r\n />\r\n );\r\n}","import React from 'react';\r\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../components/ui/select';\r\nimport { Button } from '../../components/ui/button';\r\nimport { ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight } from 'lucide-react';\r\n\r\ninterface TableFooterProps {\r\n manager: {\r\n pagination?: {\r\n totalItems?: number;\r\n totalPages?: number;\r\n };\r\n currentPage?: number;\r\n itemsPerPage?: number;\r\n handlePageChange?: (page: number) => void;\r\n handleItemsPerPageChange?: (itemsPerPage: number) => void;\r\n };\r\n}\r\n\r\nexport const TableFooter = ({ manager }: TableFooterProps) => {\r\n const {\r\n pagination = { totalItems: 0, totalPages: 1 },\r\n currentPage = 1,\r\n itemsPerPage = 10,\r\n handlePageChange = () => {},\r\n handleItemsPerPageChange = () => {}\r\n } = manager;\r\n\r\n const { totalItems = 0, totalPages = 1 } = pagination;\r\n\r\n const startItem = totalItems > 0 ? ((currentPage - 1) * itemsPerPage) + 1 : 0;\r\n const endItem = Math.min(currentPage * itemsPerPage, totalItems);\r\n\r\n const handleFirstPage = () => handlePageChange(1);\r\n const handlePreviousPage = () => handlePageChange(Math.max(1, currentPage - 1));\r\n const handleNextPage = () => handlePageChange(Math.min(totalPages, currentPage + 1));\r\n const handleLastPage = () => handlePageChange(totalPages);\r\n\r\n return (\r\n <div className=\"px-4 h-12 flex items-center justify-between text-sm text-muted-foreground bg-muted/50 border-t border-border flex-shrink-0 mt-auto\">\r\n {/* Esquerda: Seletor de Itens por Página */}\r\n <div className=\"flex items-center space-x-3\">\r\n <span>Itens por página</span>\r\n <Select\r\n value={itemsPerPage.toString()}\r\n onValueChange={(value) => handleItemsPerPageChange(Number(value))}\r\n >\r\n <SelectTrigger className=\"w-20 h-8 border-border\">\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n <SelectItem value=\"10\">10</SelectItem>\r\n <SelectItem value=\"25\">25</SelectItem>\r\n <SelectItem value=\"50\">50</SelectItem>\r\n <SelectItem value=\"100\">100</SelectItem>\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n \r\n {/* Centro: Informações de Paginação */}\r\n <div className=\"flex-1 flex justify-center\">\r\n <span>\r\n {totalItems > 0 \r\n ? `${startItem}-${endItem} de ${totalItems} itens (página ${currentPage} de ${totalPages})`\r\n : '0 itens'\r\n }\r\n </span>\r\n </div>\r\n \r\n {/* Direita: Controles de Navegação */}\r\n <div className=\"flex items-center space-x-1\">\r\n <Button variant=\"outline\" size=\"sm\" onClick={handleFirstPage} disabled={currentPage === 1}>\r\n <ChevronsLeft className=\"h-4 w-4\" />\r\n </Button>\r\n <Button variant=\"outline\" size=\"sm\" onClick={handlePreviousPage} disabled={currentPage === 1}>\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </Button>\r\n <Button variant=\"outline\" size=\"sm\" onClick={handleNextPage} disabled={currentPage === totalPages}>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n <Button variant=\"outline\" size=\"sm\" onClick={handleLastPage} disabled={currentPage === totalPages}>\r\n <ChevronsRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TableFooter;","import { useState, useEffect } from \"react\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { Plus, X } from \"lucide-react\";\r\nimport DeleteConfirmationDialog from \"../../components/ui/delete-dialog\";\r\nimport { CrudTable } from \"./CrudTable\";\r\nimport { CrudForm } from \"./CrudForm\";\r\nimport { TableFooter } from \"./TableFooter\";\r\nimport type { CrudEntity, CrudManager, CrudPageConfig, FormSection } from \"../../types\";\r\n\r\ninterface CrudPageProps<T extends CrudEntity> {\r\n manager: CrudManager<T>;\r\n config: CrudPageConfig<T>;\r\n formSections: FormSection[];\r\n onSave: (data: any) => void;\r\n FormComponent?: React.ComponentType<any>;\r\n TableComponent?: React.ComponentType<any>;\r\n onToggleStatus?: (item: T) => void;\r\n}\r\n\r\nexport function CrudPage<T extends CrudEntity>({\r\n manager,\r\n config,\r\n formSections,\r\n onSave,\r\n FormComponent,\r\n TableComponent,\r\n onToggleStatus\r\n}: CrudPageProps<T>) {\r\n const [isFormOpen, setIsFormOpen] = useState(false);\r\n const [editingEntity, setEditingEntity] = useState<T | null>(null);\r\n const [deleteConfirmation, setDeleteConfirmation] = useState<{\r\n isOpen: boolean;\r\n entityId: string | null;\r\n entityName: string;\r\n }>({\r\n isOpen: false,\r\n entityId: null,\r\n entityName: ''\r\n });\r\n\r\n const handleNew = () => {\r\n if (config.onNew) {\r\n config.onNew();\r\n } else {\r\n setEditingEntity(null);\r\n setIsFormOpen(true);\r\n }\r\n };\r\n\r\n const handleEdit = (entity: T) => {\r\n if (config.onEdit) {\r\n config.onEdit(entity);\r\n } else {\r\n setEditingEntity(entity);\r\n setIsFormOpen(true);\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n setIsFormOpen(false);\r\n setEditingEntity(null);\r\n };\r\n\r\n const handleSaveWithClose = (data: any) => {\r\n onSave(data);\r\n setIsFormOpen(false);\r\n setEditingEntity(null);\r\n };\r\n\r\n const handleDeleteClick = (entity: T) => {\r\n setDeleteConfirmation({\r\n isOpen: true,\r\n entityId: entity.id,\r\n entityName: (entity as any).title || (entity as any).name || 'Item'\r\n });\r\n };\r\n\r\n const handleConfirmDelete = () => {\r\n if (deleteConfirmation.entityId) {\r\n manager.deleteEntity(deleteConfirmation.entityId);\r\n setDeleteConfirmation({ isOpen: false, entityId: null, entityName: '' });\r\n }\r\n };\r\n\r\n const handleCancelDelete = () => {\r\n setDeleteConfirmation({ isOpen: false, entityId: null, entityName: '' });\r\n };\r\n\r\n return (\r\n <div className=\"flex-1 flex flex-col h-full\">\r\n {/* Action Bar - Fixed */}\r\n <div className=\"flex-shrink-0 flex justify-between items-center px-4 py-1.5 bg-muted/50 border-b\">\r\n <div className=\"flex items-center gap-4\">\r\n <Button onClick={handleNew} className=\"flex items-center gap-2\">\r\n <Plus size={16} />\r\n {config.newButtonText || 'Novo'}\r\n </Button>\r\n \r\n {/* Inline Filters */}\r\n </div>\r\n </div>\r\n\r\n {/* Table/Cards - Scrollable */}\r\n <div className=\"flex-1 flex flex-col overflow-hidden\">\r\n {TableComponent ? (\r\n <TableComponent\r\n manager={manager}\r\n onEdit={handleEdit}\r\n onDelete={handleDeleteClick}\r\n onToggleStatus={onToggleStatus}\r\n />\r\n ) : (\r\n <CrudTable\r\n manager={manager}\r\n columns={config.columns}\r\n onEdit={handleEdit}\r\n onDelete={handleDeleteClick}\r\n onToggleStatus={onToggleStatus}\r\n />\r\n )}\r\n </div>\r\n\r\n {/* Pagination Footer - Fixed */}\r\n <div className=\"flex-shrink-0 border-t bg-background\">\r\n <TableFooter manager={manager} />\r\n </div>\r\n\r\n {/* Form - Only show if not using custom routing */}\r\n {!config.useCustomRouting && (\r\n FormComponent ? (\r\n <FormComponent\r\n open={isFormOpen}\r\n onCancel={handleCancel}\r\n onSubmit={handleSaveWithClose}\r\n editingEntity={editingEntity}\r\n isLoading={manager.isLoading}\r\n />\r\n ) : (\r\n <CrudForm\r\n open={isFormOpen}\r\n title={editingEntity ? `Editar ${config.entityName}` : `Novo ${config.entityName}`}\r\n sections={formSections}\r\n initialData={editingEntity || undefined}\r\n onSubmit={handleSaveWithClose}\r\n onCancel={handleCancel}\r\n isLoading={manager.isLoading}\r\n submitButtonText={editingEntity ? \"Atualizar\" : \"Criar\"}\r\n />\r\n )\r\n )}\r\n\r\n {/* Delete Confirmation */}\r\n <DeleteConfirmationDialog\r\n open={deleteConfirmation.isOpen}\r\n onOpenChange={handleCancelDelete}\r\n onConfirm={(item) => handleConfirmDelete()}\r\n item={deleteConfirmation.entityId ? { id: deleteConfirmation.entityId, title: deleteConfirmation.entityName } : undefined}\r\n entityName={config.entityName}\r\n isDeleting={manager.isDeleting}\r\n />\r\n </div>\r\n );\r\n}","// ============= BASE CRUD PAGE =============\r\n\r\nimport React, { useEffect } from 'react';\r\nimport { CrudPage } from './components/CrudPage';\r\nimport type { CrudPageConfig, CrudEntity, FormSection } from '../types';\r\nimport { useAuth } from '../auth/contexts/AuthContext';\r\n\r\ninterface BaseCrudPageProps<T extends CrudEntity> {\r\n manager: any;\r\n config: CrudPageConfig<T>;\r\n formSections: FormSection[];\r\n onSave: (data: any) => void;\r\n FormComponent?: React.ComponentType<any>;\r\n TableComponent?: React.ComponentType<any>;\r\n onToggleStatus?: (item: T) => void;\r\n}\r\n\r\nexport function BaseCrudPage<T extends CrudEntity>({\r\n manager,\r\n config,\r\n formSections,\r\n onSave,\r\n FormComponent,\r\n TableComponent,\r\n onToggleStatus,\r\n}: BaseCrudPageProps<T>) {\r\n const { setSearchVisible, refreshData } = useAuth();\r\n\r\n // Set up search\r\n useEffect(() => {\r\n setSearchVisible(true);\r\n return () => {\r\n setSearchVisible(false);\r\n };\r\n }, [setSearchVisible]);\r\n\r\n return (\r\n <CrudPage\r\n manager={manager}\r\n config={config}\r\n formSections={formSections}\r\n onSave={onSave}\r\n FormComponent={FormComponent}\r\n TableComponent={TableComponent}\r\n onToggleStatus={onToggleStatus}\r\n />\r\n );\r\n}","import { CrudColumn, CrudConfig, EntityWithId } from '../types';\r\n\r\n/**\r\n * Auto-generates CRUD configuration from a TypeScript interface\r\n * Provides intelligent defaults based on field types and names\r\n */\r\nexport function generateCrudConfig<T extends EntityWithId>(\r\n title: string,\r\n sampleEntity: Partial<T>,\r\n overrides: Partial<CrudConfig<T>> = {}\r\n): CrudConfig<T> {\r\n const columns: CrudColumn<T>[] = [];\r\n \r\n Object.keys(sampleEntity).forEach(key => {\r\n if (key !== 'id' && !key.endsWith('_at')) {\r\n const value = sampleEntity[key as keyof T];\r\n const column: CrudColumn<T> = {\r\n key: key as any, // Temporary fix for keyof T compatibility\r\n header: formatLabel(key),\r\n label: formatLabel(key),\r\n ...inferColumnType(key, value),\r\n sortable: true,\r\n searchable: typeof value === 'string',\r\n };\r\n columns.push(column);\r\n }\r\n });\r\n\r\n return {\r\n title,\r\n columns,\r\n searchPlaceholder: `Buscar ${title.toLowerCase()}...`,\r\n itemsPerPage: 10,\r\n enableCreate: true,\r\n enableEdit: true,\r\n enableDelete: true,\r\n enableSearch: true,\r\n enableFilters: false,\r\n ...overrides,\r\n };\r\n}\r\n\r\n/**\r\n * Smart column type inference based on field name and value\r\n */\r\nfunction inferColumnType(key: string, value: any): Partial<CrudColumn> {\r\n const keyLower = key.toLowerCase();\r\n \r\n // Email fields\r\n if (keyLower.includes('email')) {\r\n return { type: 'email', required: true };\r\n }\r\n \r\n // Phone fields\r\n if (keyLower.includes('phone') || keyLower.includes('tel')) {\r\n return { type: 'tel' };\r\n }\r\n \r\n // Description/content fields\r\n if (keyLower.includes('description') || keyLower.includes('content') || keyLower.includes('notes')) {\r\n return { type: 'textarea' };\r\n }\r\n \r\n // Status/type fields - likely select\r\n if (keyLower.includes('status') || keyLower.includes('type') || keyLower.includes('category')) {\r\n return { type: 'select', options: [] }; // User needs to provide options\r\n }\r\n \r\n // Type-based inference\r\n if (typeof value === 'boolean') {\r\n return { type: 'boolean' };\r\n }\r\n \r\n if (typeof value === 'number') {\r\n return { type: 'number' };\r\n }\r\n \r\n if (value instanceof Date) {\r\n return { type: 'date' };\r\n }\r\n \r\n // Default to text\r\n return { type: 'text' };\r\n}\r\n\r\n/**\r\n * Converts camelCase/snake_case to readable labels\r\n */\r\nfunction formatLabel(key: string): string {\r\n return key\r\n .replace(/([A-Z])/g, ' $1') // camelCase\r\n .replace(/_/g, ' ') // snake_case\r\n .replace(/\\b\\w/g, l => l.toUpperCase()) // capitalize\r\n .trim();\r\n}\r\n\r\n/**\r\n * Quick preset configurations for common entities\r\n */\r\nexport const crudPresets = {\r\n user: {\r\n title: 'Usuários',\r\n searchPlaceholder: 'Buscar usuários...',\r\n enableDelete: false, // Usually don't delete users\r\n },\r\n \r\n product: {\r\n title: 'Produtos',\r\n searchPlaceholder: 'Buscar produtos...',\r\n enableFilters: true,\r\n },\r\n \r\n order: {\r\n title: 'Pedidos',\r\n searchPlaceholder: 'Buscar pedidos...',\r\n enableCreate: false, // Orders usually created through other flows\r\n },\r\n \r\n category: {\r\n title: 'Categorias',\r\n searchPlaceholder: 'Buscar categorias...',\r\n itemsPerPage: 20,\r\n },\r\n} as const;\r\n\r\n/**\r\n * Helper to apply preset + overrides\r\n */\r\nexport function withPreset<T extends EntityWithId>(\r\n preset: keyof typeof crudPresets,\r\n sampleEntity: Partial<T>,\r\n overrides: Partial<CrudConfig<T>> = {}\r\n): CrudConfig<T> {\r\n const presetConfig = crudPresets[preset];\r\n return generateCrudConfig(\r\n presetConfig.title,\r\n sampleEntity,\r\n { ...presetConfig, ...overrides }\r\n );\r\n}","import React from 'react';\r\nimport { useAuth } from '../contexts/AuthContext';\r\nimport { Card, CardContent, CardHeader, CardTitle } from '../../components/ui/card';\r\nimport { isDevEnvironment } from '../../config';\r\nimport { AuthService } from '../services/AuthService';\r\nimport { TokenManager } from '../services/TokenManager';\r\n\r\ninterface ProtectedRouteProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const ProtectedRoute: React.FC<ProtectedRouteProps> = ({ children }) => {\r\n const { isAuthenticated, isLoading } = useAuth();\r\n\r\n // Verificação periódica de tokens válidos\r\n React.useEffect(() => {\r\n if (!isAuthenticated) return;\r\n\r\n const checkTokenValidity = () => {\r\n if (!TokenManager.areAllTokensValid()) {\r\n console.warn('[ProtectedRoute] Tokens expirados detectados, forçando logout');\r\n AuthService.logout();\r\n }\r\n };\r\n\r\n // Verificar imediatamente\r\n checkTokenValidity();\r\n\r\n // Verificar a cada 5 minutos\r\n const interval = setInterval(checkTokenValidity, 5 * 60 * 1000);\r\n\r\n return () => clearInterval(interval);\r\n }, [isAuthenticated]);\r\n\r\n // Auto-login effect (moved to top-level to avoid conditional hooks)\r\n React.useEffect(() => {\r\n if (isLoading) return;\r\n if (isAuthenticated) return;\r\n\r\n // Se foi logout manual, não fazer login automático\r\n if (TokenManager.isManualLogout()) {\r\n // Redirecionar para página de login manual\r\n window.location.href = '/login';\r\n return;\r\n }\r\n\r\n const search = new URLSearchParams(window.location.search);\r\n const hash = window.location.hash.startsWith('#') ? window.location.hash.substring(1) : window.location.hash;\r\n const hashParams = new URLSearchParams(hash);\r\n const hasTokensInUrl = search.has('access_token') || hashParams.has('access_token');\r\n\r\n // If we are already processing tokens from URL, do nothing\r\n if (hasTokensInUrl) return;\r\n\r\n const isDev = isDevEnvironment();\r\n const performAutoLogin = async () => {\r\n if (isDev) {\r\n await AuthService.loginDev();\r\n } else {\r\n AuthService.loginProd();\r\n }\r\n };\r\n\r\n void performAutoLogin();\r\n }, [isAuthenticated, isLoading]);\r\n\r\n // Loading durante inicialização\r\n if (isLoading) {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary/5 to-secondary/5\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader className=\"text-center\">\r\n <CardTitle className=\"text-xl font-semibold\">\r\n Carregando...\r\n </CardTitle>\r\n </CardHeader>\r\n <CardContent className=\"text-center\">\r\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary mx-auto mb-4\"></div>\r\n <p className=\"text-muted-foreground\">\r\n Verificando autenticação...\r\n </p>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n // Não autenticado - login automático\r\n if (!isAuthenticated) {\r\n // Verificar se já tem tokens na URL (evitar loop)\r\n const hasTokensInUrl = new URLSearchParams(window.location.search).has('access_token') ||\r\n new URLSearchParams(window.location.hash.substring(1)).has('access_token');\r\n if (hasTokensInUrl) {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary/5 to-secondary/5\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader className=\"text-center\">\r\n <CardTitle className=\"text-xl font-semibold\">\r\n Processando...\r\n </CardTitle>\r\n </CardHeader>\r\n <CardContent className=\"text-center\">\r\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary mx-auto mb-4\"></div>\r\n <p className=\"text-muted-foreground\">\r\n Processando tokens...\r\n </p>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n \r\n \r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary/5 to-secondary/5\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader className=\"text-center\">\r\n <CardTitle className=\"text-xl font-semibold\">\r\n Iniciando...\r\n </CardTitle>\r\n </CardHeader>\r\n <CardContent className=\"text-center\">\r\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary mx-auto mb-4\"></div>\r\n <p className=\"text-muted-foreground\">\r\n {isDevEnvironment() \r\n ? 'Fazendo login automático...' \r\n : 'Redirecionando para autenticação...'}\r\n </p>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n return <>{children}</>;\r\n};","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-background text-foreground\",\r\n destructive:\r\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Alert = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\r\n>(({ className, variant, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cn(alertVariants({ variant }), className)}\r\n {...props}\r\n />\r\n))\r\nAlert.displayName = \"Alert\"\r\n\r\nconst AlertTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h5\r\n ref={ref}\r\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertTitle.displayName = \"AlertTitle\"\r\n\r\nconst AlertDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDescription.displayName = \"AlertDescription\"\r\n\r\nexport { Alert, AlertTitle, AlertDescription }\r\n","import * as React from \"react\"\r\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\r\nimport { ChevronDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Accordion = AccordionPrimitive.Root\r\n\r\nconst AccordionItem = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <AccordionPrimitive.Item\r\n ref={ref}\r\n className={cn(\"border-b\", className)}\r\n {...props}\r\n />\r\n))\r\nAccordionItem.displayName = \"AccordionItem\"\r\n\r\nconst AccordionTrigger = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Header className=\"flex\">\r\n <AccordionPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\r\n </AccordionPrimitive.Trigger>\r\n </AccordionPrimitive.Header>\r\n))\r\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\r\n\r\nconst AccordionContent = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Content\r\n ref={ref}\r\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\r\n {...props}\r\n >\r\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\r\n </AccordionPrimitive.Content>\r\n))\r\n\r\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\r\n\r\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\r\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\r\n\r\nconst AspectRatio = AspectRatioPrimitive.Root\r\n\r\nexport { AspectRatio }\r\n","import * as React from \"react\"\r\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Avatar = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatar.displayName = AvatarPrimitive.Root.displayName\r\n\r\nconst AvatarImage = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Image>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Image\r\n ref={ref}\r\n className={cn(\"aspect-square h-full w-full\", className)}\r\n {...props}\r\n />\r\n))\r\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\r\n\r\nconst AvatarFallback = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Fallback\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback }\r\n","import * as React from \"react\"\r\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Breadcrumb = React.forwardRef<\r\n HTMLElement,\r\n React.ComponentPropsWithoutRef<\"nav\"> & {\r\n separator?: React.ComponentType<{ className?: string }>\r\n }\r\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\r\nBreadcrumb.displayName = \"Breadcrumb\"\r\n\r\nconst BreadcrumbList = React.forwardRef<\r\n HTMLOListElement,\r\n React.ComponentPropsWithoutRef<\"ol\">\r\n>(({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbList.displayName = \"BreadcrumbList\"\r\n\r\nconst BreadcrumbItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentPropsWithoutRef<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n className={cn(\"inline-flex items-center gap-1.5\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\r\n\r\nconst BreadcrumbLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentPropsWithoutRef<\"a\"> & {\r\n asChild?: boolean\r\n }\r\n>(({ asChild, className, ...props }, ref) => {\r\n const Comp = asChild ? React.Fragment : \"a\"\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n className={cn(\"transition-colors hover:text-foreground\", className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\r\n\r\nconst BreadcrumbPage = React.forwardRef<\r\n HTMLSpanElement,\r\n React.ComponentPropsWithoutRef<\"span\">\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn(\"font-normal text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\r\n\r\nconst BreadcrumbSeparator = ({\r\n children,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"li\">) => (\r\n <li\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"[&>svg]:size-3.5\", className)}\r\n {...props}\r\n >\r\n {children ?? <ChevronRight />}\r\n </li>\r\n)\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\r\n\r\nconst BreadcrumbEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n)\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\"\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n}","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"menos de um segundo\",\n other: \"menos de {{count}} segundos\",\n },\n\n xSeconds: {\n one: \"1 segundo\",\n other: \"{{count}} segundos\",\n },\n\n halfAMinute: \"meio minuto\",\n\n lessThanXMinutes: {\n one: \"menos de um minuto\",\n other: \"menos de {{count}} minutos\",\n },\n\n xMinutes: {\n one: \"1 minuto\",\n other: \"{{count}} minutos\",\n },\n\n aboutXHours: {\n one: \"cerca de 1 hora\",\n other: \"cerca de {{count}} horas\",\n },\n\n xHours: {\n one: \"1 hora\",\n other: \"{{count}} horas\",\n },\n\n xDays: {\n one: \"1 dia\",\n other: \"{{count}} dias\",\n },\n\n aboutXWeeks: {\n one: \"cerca de 1 semana\",\n other: \"cerca de {{count}} semanas\",\n },\n\n xWeeks: {\n one: \"1 semana\",\n other: \"{{count}} semanas\",\n },\n\n aboutXMonths: {\n one: \"cerca de 1 mês\",\n other: \"cerca de {{count}} meses\",\n },\n\n xMonths: {\n one: \"1 mês\",\n other: \"{{count}} meses\",\n },\n\n aboutXYears: {\n one: \"cerca de 1 ano\",\n other: \"cerca de {{count}} anos\",\n },\n\n xYears: {\n one: \"1 ano\",\n other: \"{{count}} anos\",\n },\n\n overXYears: {\n one: \"mais de 1 ano\",\n other: \"mais de {{count}} anos\",\n },\n\n almostXYears: {\n one: \"quase 1 ano\",\n other: \"quase {{count}} anos\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"em \" + result;\n } else {\n return \"há \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: \"d MMM y\",\n short: \"dd/MM/yyyy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'às' {{time}}\",\n long: \"{{date}} 'às' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: (date) => {\n const weekday = date.getDay();\n const last = weekday === 0 || weekday === 6 ? \"último\" : \"última\";\n return \"'\" + last + \"' eeee 'às' p\";\n },\n yesterday: \"'ontem às' p\",\n today: \"'hoje às' p\",\n tomorrow: \"'amanhã às' p\",\n nextWeek: \"eeee 'às' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, date, _baseDate, _options) => {\n const format = formatRelativeLocale[token];\n\n if (typeof format === \"function\") {\n return format(date);\n }\n\n return format;\n};\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { formatDistance } from \"./pt-BR/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./pt-BR/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./pt-BR/_lib/formatRelative.mjs\";\nimport { localize } from \"./pt-BR/_lib/localize.mjs\";\nimport { match } from \"./pt-BR/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary Portuguese locale (Brazil).\n * @language Portuguese\n * @iso-639-2 por\n * @author Lucas Duailibe [@duailibe](https://github.com/duailibe)\n * @author Yago Carballo [@yagocarballo](https://github.com/YagoCarballo)\n */\nexport const ptBR = {\n code: \"pt-BR\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default ptBR;\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"AC\", \"DC\"],\n abbreviated: [\"AC\", \"DC\"],\n wide: [\"antes de cristo\", \"depois de cristo\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"T1\", \"T2\", \"T3\", \"T4\"],\n wide: [\"1º trimestre\", \"2º trimestre\", \"3º trimestre\", \"4º trimestre\"],\n};\n\nconst monthValues = {\n narrow: [\"j\", \"f\", \"m\", \"a\", \"m\", \"j\", \"j\", \"a\", \"s\", \"o\", \"n\", \"d\"],\n abbreviated: [\n \"jan\",\n \"fev\",\n \"mar\",\n \"abr\",\n \"mai\",\n \"jun\",\n \"jul\",\n \"ago\",\n \"set\",\n \"out\",\n \"nov\",\n \"dez\",\n ],\n\n wide: [\n \"janeiro\",\n \"fevereiro\",\n \"março\",\n \"abril\",\n \"maio\",\n \"junho\",\n \"julho\",\n \"agosto\",\n \"setembro\",\n \"outubro\",\n \"novembro\",\n \"dezembro\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"],\n short: [\"dom\", \"seg\", \"ter\", \"qua\", \"qui\", \"sex\", \"sab\"],\n abbreviated: [\n \"domingo\",\n \"segunda\",\n \"terça\",\n \"quarta\",\n \"quinta\",\n \"sexta\",\n \"sábado\",\n ],\n\n wide: [\n \"domingo\",\n \"segunda-feira\",\n \"terça-feira\",\n \"quarta-feira\",\n \"quinta-feira\",\n \"sexta-feira\",\n \"sábado\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"manhã\",\n afternoon: \"tarde\",\n evening: \"tarde\",\n night: \"noite\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mn\",\n noon: \"md\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"meia-noite\",\n noon: \"meio-dia\",\n morning: \"da manhã\",\n afternoon: \"da tarde\",\n evening: \"da tarde\",\n night: \"da noite\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, options) => {\n const number = Number(dirtyNumber);\n\n if (options?.unit === \"week\") {\n return number + \"ª\";\n }\n return number + \"º\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)[ºªo]?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|d\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|depois de cristo)/i,\n};\nconst parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^antes de cristo/i, /^depois de cristo/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º)? trimestre/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmajsond]/i,\n abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,\n wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^fev/i,\n /^mar/i,\n /^abr/i,\n /^mai/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^set/i,\n /^out/i,\n /^nov/i,\n /^dez/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^(dom|[23456]ª?|s[aá]b)/i,\n short: /^(dom|[23456]ª?|s[aá]b)/i,\n abbreviated: /^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,\n wide: /^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i,\n};\nconst parseDayPatterns = {\n short: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n narrow: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],\n any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[aá]b/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|md|(da) (manhã|tarde|noite))/i,\n any: /^([ap]\\.?\\s?m\\.?|meia[-\\s]noite|meio[-\\s]dia|(da) (manhã|tarde|noite))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn|^meia[-\\s]noite/i,\n noon: /^md|^meio[-\\s]dia/i,\n morning: /manhã/i,\n afternoon: /tarde/i,\n evening: /tarde/i,\n night: /noite/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import * as React from \"react\";\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\r\nimport { DayPicker } from \"react-day-picker\";\r\nimport { ptBR } from \"date-fns/locale\";\r\n\r\nimport { cn } from \"../../utils\"\r\nimport { buttonVariants } from \"./button\";\r\n\r\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\r\n\r\nfunction Calendar({\r\n className,\r\n classNames,\r\n showOutsideDays = true,\r\n ...props\r\n}: CalendarProps) {\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\"p-3\", className)}\r\n locale={ptBR}\r\n classNames={{\r\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\r\n month: \"space-y-4\",\r\n caption: \"flex justify-center pt-1 relative items-center\",\r\n caption_label: \"text-sm font-medium\",\r\n nav: \"space-x-1 flex items-center\",\r\n nav_button: cn(\r\n buttonVariants({ variant: \"outline\" }),\r\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\r\n ),\r\n nav_button_previous: \"absolute left-1\",\r\n nav_button_next: \"absolute right-1\",\r\n table: \"w-full border-collapse space-y-1\",\r\n head_row: \"flex\",\r\n head_cell:\r\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\r\n row: \"flex w-full mt-2\",\r\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\r\n day: cn(\r\n buttonVariants({ variant: \"ghost\" }),\r\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\r\n ),\r\n day_range_end: \"day-range-end\",\r\n day_selected:\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\r\n day_today: \"bg-accent text-accent-foreground\",\r\n day_outside:\r\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\r\n day_disabled: \"text-muted-foreground opacity-50\",\r\n day_range_middle:\r\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\r\n day_hidden: \"invisible\",\r\n ...classNames,\r\n }}\r\n components={{\r\n IconLeft: ({ ..._props }) => <ChevronLeft className=\"h-4 w-4\" />,\r\n IconRight: ({ ..._props }) => <ChevronRight className=\"h-4 w-4\" />,\r\n }}\r\n {...props}\r\n />\r\n );\r\n}\r\nCalendar.displayName = \"Calendar\";\r\n\r\nexport { Calendar };\r\n","import * as React from \"react\"\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\nimport { Button } from \"./button\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nconst Carousel = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\r\n>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return\r\n }\r\n\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) {\r\n return\r\n }\r\n\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) {\r\n return\r\n }\r\n\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api: api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(\"relative\", className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n }\r\n)\r\nCarousel.displayName = \"Carousel\"\r\n\r\nconst CarouselContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\">\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n )\r\n})\r\nCarouselContent.displayName = \"CarouselContent\"\r\n\r\nconst CarouselItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel()\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(\r\n \"min-w-0 shrink-0 grow-0 basis-full\",\r\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nCarouselItem.displayName = \"CarouselItem\"\r\n\r\nconst CarouselPrevious = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-left-12 top-1/2 -translate-y-1/2\"\r\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ArrowLeft className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselPrevious.displayName = \"CarouselPrevious\"\r\n\r\nconst CarouselNext = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n variant={variant}\r\n size={size}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-right-12 top-1/2 -translate-y-1/2\"\r\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ArrowRight className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Next slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselNext.displayName = \"CarouselNext\"\r\n\r\nexport {\r\n type CarouselApi,\r\n Carousel,\r\n CarouselContent,\r\n CarouselItem,\r\n CarouselPrevious,\r\n CarouselNext,\r\n}\r\n","import * as React from \"react\"\r\nimport * as RechartsPrimitive from \"recharts\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = { light: \"\", dark: \".dark\" } as const\r\n\r\nexport type ChartConfig = {\r\n [k in string]: {\r\n label?: React.ReactNode\r\n icon?: React.ComponentType\r\n } & (\r\n | { color?: string; theme?: never }\r\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\r\n )\r\n}\r\n\r\ntype ChartContextProps = {\r\n config: ChartConfig\r\n}\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\r\n\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nconst ChartContainer = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n config: ChartConfig\r\n children: React.ComponentProps<\r\n typeof RechartsPrimitive.ResponsiveContainer\r\n >[\"children\"]\r\n }\r\n>(({ id, className, children, config, ...props }, ref) => {\r\n const uniqueId = React.useId()\r\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\r\n\r\n return (\r\n <ChartContext.Provider value={{ config }}>\r\n <div\r\n data-chart={chartId}\r\n ref={ref}\r\n className={cn(\r\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ChartStyle id={chartId} config={config} />\r\n <RechartsPrimitive.ResponsiveContainer>\r\n {children}\r\n </RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n )\r\n})\r\nChartContainer.displayName = \"Chart\"\r\n\r\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\r\n const colorConfig = Object.entries(config).filter(\r\n ([_, config]) => config.theme || config.color\r\n )\r\n\r\n if (!colorConfig.length) {\r\n return null\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n${prefix} [data-chart=${id}] {\r\n${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color =\r\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\r\n itemConfig.color\r\n return color ? ` --color-${key}: ${color};` : null\r\n })\r\n .join(\"\\n\")}\r\n}\r\n`\r\n )\r\n .join(\"\\n\"),\r\n }}\r\n />\r\n )\r\n}\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip\r\n\r\nconst ChartTooltipContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\r\n React.ComponentProps<\"div\"> & {\r\n hideLabel?: boolean\r\n hideIndicator?: boolean\r\n indicator?: \"line\" | \"dot\" | \"dashed\"\r\n nameKey?: string\r\n labelKey?: string\r\n }\r\n>(\r\n (\r\n {\r\n active,\r\n payload,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n label,\r\n labelFormatter,\r\n labelClassName,\r\n formatter,\r\n color,\r\n nameKey,\r\n labelKey,\r\n },\r\n ref\r\n ) => {\r\n const { config } = useChart()\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null\r\n }\r\n\r\n const [item] = payload\r\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\r\n const value =\r\n !labelKey && typeof label === \"string\"\r\n ? config[label as keyof typeof config]?.label || label\r\n : itemConfig?.label\r\n\r\n if (labelFormatter) {\r\n return (\r\n <div className={cn(\"font-medium\", labelClassName)}>\r\n {labelFormatter(value, payload)}\r\n </div>\r\n )\r\n }\r\n\r\n if (!value) {\r\n return null\r\n }\r\n\r\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\r\n }, [\r\n label,\r\n labelFormatter,\r\n payload,\r\n hideLabel,\r\n labelClassName,\r\n config,\r\n labelKey,\r\n ])\r\n\r\n if (!active || !payload?.length) {\r\n return null\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\r\n className\r\n )}\r\n >\r\n {!nestLabel ? tooltipLabel : null}\r\n <div className=\"grid gap-1.5\">\r\n {payload.map((item, index) => {\r\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\r\n const indicatorColor = color || item.payload.fill || item.color\r\n\r\n return (\r\n <div\r\n key={item.dataKey}\r\n className={cn(\r\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\r\n indicator === \"dot\" && \"items-center\"\r\n )}\r\n >\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(item.value, item.name, item, index, item.payload)\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n className={cn(\r\n \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\r\n {\r\n \"h-2.5 w-2.5\": indicator === \"dot\",\r\n \"w-1\": indicator === \"line\",\r\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\r\n indicator === \"dashed\",\r\n \"my-0.5\": nestLabel && indicator === \"dashed\",\r\n }\r\n )}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div\r\n className={cn(\r\n \"flex flex-1 justify-between leading-none\",\r\n nestLabel ? \"items-end\" : \"items-center\"\r\n )}\r\n >\r\n <div className=\"grid gap-1.5\">\r\n {nestLabel ? tooltipLabel : null}\r\n <span className=\"text-muted-foreground\">\r\n {itemConfig?.label || item.name}\r\n </span>\r\n </div>\r\n {item.value && (\r\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\r\n {item.value.toLocaleString()}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\nChartTooltipContent.displayName = \"ChartTooltip\"\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend\r\n\r\nconst ChartLegendContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> &\r\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\r\n hideIcon?: boolean\r\n nameKey?: string\r\n }\r\n>(\r\n (\r\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\r\n ref\r\n ) => {\r\n const { config } = useChart()\r\n\r\n if (!payload?.length) {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex items-center justify-center gap-4\",\r\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\r\n className\r\n )}\r\n >\r\n {payload.map((item) => {\r\n const key = `${nameKey || item.dataKey || \"value\"}`\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\r\n\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\r\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\r\n )}\r\n >\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n )\r\n }\r\n)\r\nChartLegendContent.displayName = \"ChartLegend\"\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(\r\n config: ChartConfig,\r\n payload: unknown,\r\n key: string\r\n) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload &&\r\n typeof payload.payload === \"object\" &&\r\n payload.payload !== null\r\n ? payload.payload\r\n : undefined\r\n\r\n let configLabelKey: string = key\r\n\r\n if (\r\n key in payload &&\r\n typeof payload[key as keyof typeof payload] === \"string\"\r\n ) {\r\n configLabelKey = payload[key as keyof typeof payload] as string\r\n } else if (\r\n payloadPayload &&\r\n key in payloadPayload &&\r\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\r\n ) {\r\n configLabelKey = payloadPayload[\r\n key as keyof typeof payloadPayload\r\n ] as string\r\n }\r\n\r\n return configLabelKey in config\r\n ? config[configLabelKey]\r\n : config[key as keyof typeof config]\r\n}\r\n\r\nexport {\r\n ChartContainer,\r\n ChartTooltip,\r\n ChartTooltipContent,\r\n ChartLegend,\r\n ChartLegendContent,\r\n ChartStyle,\r\n}\r\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\r\n\r\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }","import * as React from \"react\"\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Command = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommand.displayName = \"Command\"\r\n\r\ninterface CommandDialogProps {\r\n open?: boolean\r\n onOpenChange?: (open: boolean) => void\r\n children: React.ReactNode\r\n}\r\n\r\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\r\n return (\r\n <div {...props}>\r\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\r\n {children}\r\n </Command>\r\n </div>\r\n )\r\n}\r\n\r\nconst CommandInput = React.forwardRef<\r\n HTMLInputElement,\r\n React.InputHTMLAttributes<HTMLInputElement>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\r\n <input\r\n ref={ref}\r\n className={cn(\r\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nCommandInput.displayName = \"CommandInput\"\r\n\r\nconst CommandList = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\r\n {...props}\r\n />\r\n))\r\nCommandList.displayName = \"CommandList\"\r\n\r\nconst CommandEmpty = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"py-6 text-center text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nCommandEmpty.displayName = \"CommandEmpty\"\r\n\r\nconst CommandGroup = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommandGroup.displayName = \"CommandGroup\"\r\n\r\nconst CommandSeparator = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"-mx-1 h-px bg-border\", className)}\r\n {...props}\r\n />\r\n))\r\nCommandSeparator.displayName = \"CommandSeparator\"\r\n\r\nconst CommandItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & {\r\n disabled?: boolean\r\n onSelect?: (value: string) => void\r\n value?: string\r\n }\r\n>(({ className, disabled, onSelect, value, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\r\n className\r\n )}\r\n data-disabled={disabled}\r\n onClick={() => !disabled && onSelect?.(value || \"\")}\r\n {...props}\r\n />\r\n))\r\nCommandItem.displayName = \"CommandItem\"\r\n\r\nconst CommandShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\nCommandShortcut.displayName = \"CommandShortcut\"\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandSeparator,\r\n CommandShortcut,\r\n}","import { ReactNode } from \"react\"\r\nimport { cn } from \"../../utils\"\r\nimport { Card, CardContent } from \"./card\"\r\n\r\ninterface DataListProps {\r\n children: ReactNode\r\n className?: string\r\n}\r\n\r\ninterface DataListItemProps {\r\n children: ReactNode\r\n onClick?: () => void\r\n className?: string\r\n}\r\n\r\ninterface DataListFieldProps {\r\n label: string\r\n value: ReactNode\r\n className?: string\r\n}\r\n\r\nfunction DataListRoot({ children, className }: DataListProps) {\r\n return (\r\n <div className={cn(\"space-y-4\", className)}>\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nfunction DataListItem({ children, onClick, className }: DataListItemProps) {\r\n return (\r\n <Card \r\n className={cn(\r\n \"transition-colors\",\r\n onClick && \"cursor-pointer hover:bg-muted/50\",\r\n className\r\n )}\r\n onClick={onClick}\r\n >\r\n <CardContent className=\"p-4\">\r\n {children}\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n\r\nfunction DataListField({ label, value, className }: DataListFieldProps) {\r\n return (\r\n <div className={cn(\"flex justify-between items-center text-sm\", className)}>\r\n <span className=\"text-muted-foreground font-medium\">{label}:</span>\r\n <span className=\"text-foreground\">{value}</span>\r\n </div>\r\n )\r\n}\r\n\r\nexport const DataList = {\r\n Root: DataListRoot,\r\n Item: DataListItem,\r\n Field: DataListField\r\n}","import React, { useState } from 'react';\r\nimport { MessageCircle } from 'lucide-react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogDescription,\r\n DialogHeader,\r\n DialogTitle,\r\n DialogTrigger,\r\n} from './dialog';\r\nimport { Button } from './button';\r\n\r\nimport { useAuth } from '../../auth/contexts/AuthContext';\r\n\r\ninterface FeedbackDialogProps {\r\n variant?: 'button' | 'menuItem';\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const FeedbackDialog: React.FC<FeedbackDialogProps> = ({ \r\n variant = 'button',\r\n className = '',\r\n children \r\n}) => {\r\n const [open, setOpen] = useState(false);\r\n const { user } = useAuth();\r\n const { companies, alias } = useAuth();\r\n const selectedUnit = alias \r\n ? companies?.find(company => company.alias === alias) || companies?.[0] || null\r\n : companies?.[0] || null;\r\n\r\n // Construir URL dinâmica\r\n const buildFeedbackUrl = () => {\r\n if (!user?.email) return '';\r\n \r\n const baseUrl = `${import.meta.env.VITE_FEEDBACK_APP_URL}/`;\r\n const params = new URLSearchParams({\r\n email: user.email,\r\n module: 'OKR',\r\n alias: selectedUnit?.alias || ''\r\n });\r\n \r\n return `${baseUrl}?${params.toString()}`;\r\n };\r\n\r\n const feedbackUrl = buildFeedbackUrl();\r\n\r\n // Se não tem dados necessários, não renderizar\r\n if (!user?.email || !selectedUnit) {\r\n return null;\r\n }\r\n\r\n const TriggerButton = React.forwardRef<HTMLButtonElement | HTMLDivElement, any>((props, ref) => {\r\n if (variant === 'menuItem') {\r\n return (\r\n <div \r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className=\"flex items-center cursor-pointer w-full px-2 py-1.5 text-sm hover:bg-accent rounded-sm\"\r\n {...props}\r\n >\r\n <MessageCircle className=\"mr-2 h-4 w-4\" />\r\n Feedback\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <Button \r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n variant=\"default\"\r\n size=\"sm\"\r\n className={`bg-primary hover:bg-primary/90 ${className}`}\r\n {...props}\r\n >\r\n <MessageCircle className=\"mr-2 h-4 w-4\" />\r\n Feedback\r\n </Button>\r\n );\r\n });\r\n\r\n TriggerButton.displayName = \"TriggerButton\";\r\n\r\n return (\r\n <Dialog open={open} onOpenChange={setOpen}>\r\n <DialogTrigger asChild>\r\n <TriggerButton />\r\n </DialogTrigger>\r\n \r\n <DialogContent className=\"max-w-4xl max-h-[90vh] w-full h-full p-0 overflow-hidden\">\r\n <DialogHeader className=\"sr-only\">\r\n <DialogTitle>Feedback</DialogTitle>\r\n <DialogDescription>\r\n Formulário de feedback para melhorias no sistema\r\n </DialogDescription>\r\n </DialogHeader>\r\n \r\n <div className=\"w-full h-full\">\r\n <iframe\r\n src={feedbackUrl}\r\n width=\"100%\"\r\n height=\"600px\"\r\n className=\"feedback-iframe\"\r\n title=\"Formulário de Feedback\"\r\n loading=\"lazy\"\r\n />\r\n </div>\r\n </DialogContent>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default FeedbackDialog;","import { cn } from \"../../utils\"\r\nimport { ReactNode } from \"react\"\r\n\r\ninterface GridProps {\r\n children: ReactNode\r\n cols?: \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"auto-fit\" | \"auto-fill\"\r\n gap?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\r\n className?: string\r\n}\r\n\r\nconst colsClasses = {\r\n \"1\": \"grid-cols-1\",\r\n \"2\": \"grid-cols-2\",\r\n \"3\": \"grid-cols-3\", \r\n \"4\": \"grid-cols-4\",\r\n \"5\": \"grid-cols-5\",\r\n \"6\": \"grid-cols-6\",\r\n \"auto-fit\": \"grid-cols-[repeat(auto-fit,minmax(250px,1fr))]\",\r\n \"auto-fill\": \"grid-cols-[repeat(auto-fill,minmax(250px,1fr))]\"\r\n}\r\n\r\nconst gapClasses = {\r\n xs: \"gap-1\",\r\n sm: \"gap-2\",\r\n md: \"gap-4\", \r\n lg: \"gap-6\",\r\n xl: \"gap-8\"\r\n}\r\n\r\nexport function Grid({\r\n children,\r\n cols = \"auto-fit\",\r\n gap = \"md\",\r\n className\r\n}: GridProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"grid\",\r\n colsClasses[cols],\r\n gapClasses[gap],\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}","import * as React from \"react\"\r\nimport { OTPInput, OTPInputContext } from \"input-otp\"\r\nimport { Dot } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst InputOTP = React.forwardRef<\r\n React.ElementRef<typeof OTPInput>,\r\n React.ComponentPropsWithoutRef<typeof OTPInput>\r\n>(({ className, containerClassName, ...props }, ref) => (\r\n <OTPInput\r\n ref={ref}\r\n containerClassName={cn(\r\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\r\n containerClassName\r\n )}\r\n className={cn(\"disabled:cursor-not-allowed\", className)}\r\n {...props}\r\n />\r\n))\r\nInputOTP.displayName = \"InputOTP\"\r\n\r\nconst InputOTPGroup = React.forwardRef<\r\n React.ElementRef<\"div\">,\r\n React.ComponentPropsWithoutRef<\"div\">\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\r\n))\r\nInputOTPGroup.displayName = \"InputOTPGroup\"\r\n\r\nconst InputOTPSlot = React.forwardRef<\r\n React.ElementRef<\"div\">,\r\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\r\n>(({ index, className, ...props }, ref) => {\r\n const inputOTPContext = React.useContext(OTPInputContext)\r\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\r\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {char}\r\n {hasFakeCaret && (\r\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\r\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n})\r\nInputOTPSlot.displayName = \"InputOTPSlot\"\r\n\r\nconst InputOTPSeparator = React.forwardRef<\r\n React.ElementRef<\"div\">,\r\n React.ComponentPropsWithoutRef<\"div\">\r\n>(({ ...props }, ref) => (\r\n <div ref={ref} role=\"separator\" {...props}>\r\n <Dot />\r\n </div>\r\n))\r\nInputOTPSeparator.displayName = \"InputOTPSeparator\"\r\n\r\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\r\n","import * as React from \"react\"\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\nimport { ButtonProps, buttonVariants } from \"./button\"\r\n\r\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n className={cn(\"mx-auto flex w-full justify-center\", className)}\r\n {...props}\r\n />\r\n)\r\nPagination.displayName = \"Pagination\"\r\n\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\"flex flex-row items-center gap-1\", className)}\r\n {...props}\r\n />\r\n))\r\nPaginationContent.displayName = \"PaginationContent\"\r\n\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n))\r\nPaginationItem.displayName = \"PaginationItem\"\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean\r\n} & Pick<ButtonProps, \"size\"> &\r\n React.ComponentProps<\"a\">\r\n\r\nconst PaginationLink = ({\r\n className,\r\n isActive,\r\n size = \"icon\",\r\n ...props\r\n}: PaginationLinkProps) => (\r\n <a\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(\r\n buttonVariants({\r\n variant: isActive ? \"outline\" : \"ghost\",\r\n size,\r\n }),\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nPaginationLink.displayName = \"PaginationLink\"\r\n\r\nconst PaginationPrevious = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pl-2.5\", className)}\r\n {...props}\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n)\r\nPaginationPrevious.displayName = \"PaginationPrevious\"\r\n\r\nconst PaginationNext = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n size=\"default\"\r\n className={cn(\"gap-1 pr-2.5\", className)}\r\n {...props}\r\n >\r\n <span>Next</span>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </PaginationLink>\r\n)\r\nPaginationNext.displayName = \"PaginationNext\"\r\n\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n)\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationEllipsis,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationNext,\r\n PaginationPrevious,\r\n}\r\n","\r\nimport * as React from \"react\"\r\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Progress = React.forwardRef<\r\n React.ElementRef<typeof ProgressPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\r\n>(({ className, value, ...props }, ref) => (\r\n <ProgressPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ProgressPrimitive.Indicator\r\n className=\"h-full w-full flex-1 bg-primary transition-all\"\r\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\r\n />\r\n </ProgressPrimitive.Root>\r\n))\r\nProgress.displayName = ProgressPrimitive.Root.displayName\r\n\r\nexport { Progress }\r\n","import * as React from \"react\"\r\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\r\nimport { Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst RadioGroup = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\r\n>(({ className, ...props }, ref) => {\r\n return (\r\n <RadioGroupPrimitive.Root\r\n className={cn(\"grid gap-2\", className)}\r\n {...props}\r\n ref={ref}\r\n />\r\n )\r\n})\r\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\r\n\r\nconst RadioGroupItem = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\r\n>(({ className, ...props }, ref) => {\r\n return (\r\n <RadioGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\r\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\r\n </RadioGroupPrimitive.Indicator>\r\n </RadioGroupPrimitive.Item>\r\n )\r\n})\r\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\r\n\r\nexport { RadioGroup, RadioGroupItem }\r\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n var _a;\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2.default.keys.ENTER:\n _this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2.default.keys.ENTER:\n _this2.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this2.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this;\n\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(76),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(78),\n 'justify': __webpack_require__(79)\n },\n 'background': __webpack_require__(80),\n 'blockquote': __webpack_require__(81),\n 'bold': __webpack_require__(82),\n 'clean': __webpack_require__(83),\n 'code': __webpack_require__(58),\n 'code-block': __webpack_require__(58),\n 'color': __webpack_require__(84),\n 'direction': {\n '': __webpack_require__(85),\n 'rtl': __webpack_require__(86)\n },\n 'float': {\n 'center': __webpack_require__(87),\n 'full': __webpack_require__(88),\n 'left': __webpack_require__(89),\n 'right': __webpack_require__(90)\n },\n 'formula': __webpack_require__(91),\n 'header': {\n '1': __webpack_require__(92),\n '2': __webpack_require__(93)\n },\n 'italic': __webpack_require__(94),\n 'image': __webpack_require__(95),\n 'indent': {\n '+1': __webpack_require__(96),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(98),\n 'list': {\n 'ordered': __webpack_require__(99),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(102),\n 'super': __webpack_require__(103)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(105),\n 'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with <o:p>&nbsp;</o:p>\n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n _this.container.classList.add('ql-toolbar');\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n _this2.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n _this.container.classList.add('ql-color-picker');\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n _this.selectItem(_this.defaultItem);\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n );\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, _this2.options.interval);\n });\n _this2.highlight();\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>\";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewBox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>\";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n var range = _this3.quill.getSelection();\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","\"use strict\";\n/*\nReact-Quill\nhttps://github.com/zenoamaro/react-quill\n*/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar react_1 = __importDefault(require(\"react\"));\nvar react_dom_1 = __importDefault(require(\"react-dom\"));\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\nvar quill_1 = __importDefault(require(\"quill\"));\nvar ReactQuill = /** @class */ (function (_super) {\n __extends(ReactQuill, _super);\n function ReactQuill(props) {\n var _this = _super.call(this, props) || this;\n /*\n Changing one of these props should cause a full re-render and a\n re-instantiation of the Quill editor.\n */\n _this.dirtyProps = [\n 'modules',\n 'formats',\n 'bounds',\n 'theme',\n 'children',\n ];\n /*\n Changing one of these props should cause a regular update. These are mostly\n props that act on the container, rather than the quillized editing area.\n */\n _this.cleanProps = [\n 'id',\n 'className',\n 'style',\n 'placeholder',\n 'tabIndex',\n 'onChange',\n 'onChangeSelection',\n 'onFocus',\n 'onBlur',\n 'onKeyPress',\n 'onKeyDown',\n 'onKeyUp',\n ];\n _this.state = {\n generation: 0,\n };\n /*\n Tracks the internal selection of the Quill editor\n */\n _this.selection = null;\n _this.onEditorChange = function (eventName, rangeOrDelta, oldRangeOrDelta, source) {\n var _a, _b, _c, _d;\n if (eventName === 'text-change') {\n (_b = (_a = _this).onEditorChangeText) === null || _b === void 0 ? void 0 : _b.call(_a, _this.editor.root.innerHTML, rangeOrDelta, source, _this.unprivilegedEditor);\n }\n else if (eventName === 'selection-change') {\n (_d = (_c = _this).onEditorChangeSelection) === null || _d === void 0 ? void 0 : _d.call(_c, rangeOrDelta, source, _this.unprivilegedEditor);\n }\n };\n var value = _this.isControlled() ? props.value : props.defaultValue;\n _this.value = (value !== null && value !== void 0 ? value : '');\n return _this;\n }\n ReactQuill.prototype.validateProps = function (props) {\n var _a;\n if (react_1.default.Children.count(props.children) > 1)\n throw new Error('The Quill editing area can only be composed of a single React element.');\n if (react_1.default.Children.count(props.children)) {\n var child = react_1.default.Children.only(props.children);\n if (((_a = child) === null || _a === void 0 ? void 0 : _a.type) === 'textarea')\n throw new Error('Quill does not support editing on a <textarea>. Use a <div> instead.');\n }\n if (this.lastDeltaChangeSet &&\n props.value === this.lastDeltaChangeSet)\n throw new Error('You are passing the `delta` object from the `onChange` event back ' +\n 'as `value`. You most probably want `editor.getContents()` instead. ' +\n 'See: https://github.com/zenoamaro/react-quill#using-deltas');\n };\n ReactQuill.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n var _this = this;\n var _a;\n this.validateProps(nextProps);\n // If the editor hasn't been instantiated yet, or the component has been\n // regenerated, we already know we should update.\n if (!this.editor || this.state.generation !== nextState.generation) {\n return true;\n }\n // Handle value changes in-place\n if ('value' in nextProps) {\n var prevContents = this.getEditorContents();\n var nextContents = (_a = nextProps.value, (_a !== null && _a !== void 0 ? _a : ''));\n // NOTE: Seeing that Quill is missing a way to prevent edits, we have to\n // settle for a hybrid between controlled and uncontrolled mode. We\n // can't prevent the change, but we'll still override content\n // whenever `value` differs from current state.\n // NOTE: Comparing an HTML string and a Quill Delta will always trigger a\n // change, regardless of whether they represent the same document.\n if (!this.isEqualValue(nextContents, prevContents)) {\n this.setEditorContents(this.editor, nextContents);\n }\n }\n // Handle read-only changes in-place\n if (nextProps.readOnly !== this.props.readOnly) {\n this.setEditorReadOnly(this.editor, nextProps.readOnly);\n }\n // Clean and Dirty props require a render\n return __spreadArrays(this.cleanProps, this.dirtyProps).some(function (prop) {\n return !isEqual_1.default(nextProps[prop], _this.props[prop]);\n });\n };\n ReactQuill.prototype.shouldComponentRegenerate = function (nextProps) {\n var _this = this;\n // Whenever a `dirtyProp` changes, the editor needs reinstantiation.\n return this.dirtyProps.some(function (prop) {\n return !isEqual_1.default(nextProps[prop], _this.props[prop]);\n });\n };\n ReactQuill.prototype.componentDidMount = function () {\n this.instantiateEditor();\n this.setEditorContents(this.editor, this.getEditorContents());\n };\n ReactQuill.prototype.componentWillUnmount = function () {\n this.destroyEditor();\n };\n ReactQuill.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _this = this;\n // If we're changing one of the `dirtyProps`, the entire Quill Editor needs\n // to be re-instantiated. Regenerating the editor will cause the whole tree,\n // including the container, to be cleaned up and re-rendered from scratch.\n // Store the contents so they can be restored later.\n if (this.editor && this.shouldComponentRegenerate(prevProps)) {\n var delta = this.editor.getContents();\n var selection = this.editor.getSelection();\n this.regenerationSnapshot = { delta: delta, selection: selection };\n this.setState({ generation: this.state.generation + 1 });\n this.destroyEditor();\n }\n // The component has been regenerated, so it must be re-instantiated, and\n // its content must be restored to the previous values from the snapshot.\n if (this.state.generation !== prevState.generation) {\n var _a = this.regenerationSnapshot, delta = _a.delta, selection_1 = _a.selection;\n delete this.regenerationSnapshot;\n this.instantiateEditor();\n var editor_1 = this.editor;\n editor_1.setContents(delta);\n postpone(function () { return _this.setEditorSelection(editor_1, selection_1); });\n }\n };\n ReactQuill.prototype.instantiateEditor = function () {\n if (this.editor) {\n this.hookEditor(this.editor);\n }\n else {\n this.editor = this.createEditor(this.getEditingArea(), this.getEditorConfig());\n }\n };\n ReactQuill.prototype.destroyEditor = function () {\n if (!this.editor)\n return;\n this.unhookEditor(this.editor);\n };\n /*\n We consider the component to be controlled if `value` is being sent in props.\n */\n ReactQuill.prototype.isControlled = function () {\n return 'value' in this.props;\n };\n ReactQuill.prototype.getEditorConfig = function () {\n return {\n bounds: this.props.bounds,\n formats: this.props.formats,\n modules: this.props.modules,\n placeholder: this.props.placeholder,\n readOnly: this.props.readOnly,\n scrollingContainer: this.props.scrollingContainer,\n tabIndex: this.props.tabIndex,\n theme: this.props.theme,\n };\n };\n ReactQuill.prototype.getEditor = function () {\n if (!this.editor)\n throw new Error('Accessing non-instantiated editor');\n return this.editor;\n };\n /**\n Creates an editor on the given element. The editor will be passed the\n configuration, have its events bound,\n */\n ReactQuill.prototype.createEditor = function (element, config) {\n var editor = new quill_1.default(element, config);\n if (config.tabIndex != null) {\n this.setEditorTabIndex(editor, config.tabIndex);\n }\n this.hookEditor(editor);\n return editor;\n };\n ReactQuill.prototype.hookEditor = function (editor) {\n // Expose the editor on change events via a weaker, unprivileged proxy\n // object that does not allow accidentally modifying editor state.\n this.unprivilegedEditor = this.makeUnprivilegedEditor(editor);\n // Using `editor-change` allows picking up silent updates, like selection\n // changes on typing.\n editor.on('editor-change', this.onEditorChange);\n };\n ReactQuill.prototype.unhookEditor = function (editor) {\n editor.off('editor-change', this.onEditorChange);\n };\n ReactQuill.prototype.getEditorContents = function () {\n return this.value;\n };\n ReactQuill.prototype.getEditorSelection = function () {\n return this.selection;\n };\n /*\n True if the value is a Delta instance or a Delta look-alike.\n */\n ReactQuill.prototype.isDelta = function (value) {\n return value && value.ops;\n };\n /*\n Special comparison function that knows how to compare Deltas.\n */\n ReactQuill.prototype.isEqualValue = function (value, nextValue) {\n if (this.isDelta(value) && this.isDelta(nextValue)) {\n return isEqual_1.default(value.ops, nextValue.ops);\n }\n else {\n return isEqual_1.default(value, nextValue);\n }\n };\n /*\n Replace the contents of the editor, but keep the previous selection hanging\n around so that the cursor won't move.\n */\n ReactQuill.prototype.setEditorContents = function (editor, value) {\n var _this = this;\n this.value = value;\n var sel = this.getEditorSelection();\n if (typeof value === 'string') {\n editor.setContents(editor.clipboard.convert(value));\n }\n else {\n editor.setContents(value);\n }\n postpone(function () { return _this.setEditorSelection(editor, sel); });\n };\n ReactQuill.prototype.setEditorSelection = function (editor, range) {\n this.selection = range;\n if (range) {\n // Validate bounds before applying.\n var length_1 = editor.getLength();\n range.index = Math.max(0, Math.min(range.index, length_1 - 1));\n range.length = Math.max(0, Math.min(range.length, (length_1 - 1) - range.index));\n editor.setSelection(range);\n }\n };\n ReactQuill.prototype.setEditorTabIndex = function (editor, tabIndex) {\n var _a, _b;\n if ((_b = (_a = editor) === null || _a === void 0 ? void 0 : _a.scroll) === null || _b === void 0 ? void 0 : _b.domNode) {\n editor.scroll.domNode.tabIndex = tabIndex;\n }\n };\n ReactQuill.prototype.setEditorReadOnly = function (editor, value) {\n if (value) {\n editor.disable();\n }\n else {\n editor.enable();\n }\n };\n /*\n Returns a weaker, unprivileged proxy object that only exposes read-only\n accessors found on the editor instance, without any state-modifying methods.\n */\n ReactQuill.prototype.makeUnprivilegedEditor = function (editor) {\n var e = editor;\n return {\n getHTML: function () { return e.root.innerHTML; },\n getLength: e.getLength.bind(e),\n getText: e.getText.bind(e),\n getContents: e.getContents.bind(e),\n getSelection: e.getSelection.bind(e),\n getBounds: e.getBounds.bind(e),\n };\n };\n ReactQuill.prototype.getEditingArea = function () {\n if (!this.editingArea) {\n throw new Error('Instantiating on missing editing area');\n }\n var element = react_dom_1.default.findDOMNode(this.editingArea);\n if (!element) {\n throw new Error('Cannot find element for editing area');\n }\n if (element.nodeType === 3) {\n throw new Error('Editing area cannot be a text node');\n }\n return element;\n };\n /*\n Renders an editor area, unless it has been provided one to clone.\n */\n ReactQuill.prototype.renderEditingArea = function () {\n var _this = this;\n var _a = this.props, children = _a.children, preserveWhitespace = _a.preserveWhitespace;\n var generation = this.state.generation;\n var properties = {\n key: generation,\n ref: function (instance) {\n _this.editingArea = instance;\n },\n };\n if (react_1.default.Children.count(children)) {\n return react_1.default.cloneElement(react_1.default.Children.only(children), properties);\n }\n return preserveWhitespace ?\n react_1.default.createElement(\"pre\", __assign({}, properties)) :\n react_1.default.createElement(\"div\", __assign({}, properties));\n };\n ReactQuill.prototype.render = function () {\n var _a;\n return (react_1.default.createElement(\"div\", { id: this.props.id, style: this.props.style, key: this.state.generation, className: \"quill \" + (_a = this.props.className, (_a !== null && _a !== void 0 ? _a : '')), onKeyPress: this.props.onKeyPress, onKeyDown: this.props.onKeyDown, onKeyUp: this.props.onKeyUp }, this.renderEditingArea()));\n };\n ReactQuill.prototype.onEditorChangeText = function (value, delta, source, editor) {\n var _a, _b;\n if (!this.editor)\n return;\n // We keep storing the same type of value as what the user gives us,\n // so that value comparisons will be more stable and predictable.\n var nextContents = this.isDelta(this.value)\n ? editor.getContents()\n : editor.getHTML();\n if (nextContents !== this.getEditorContents()) {\n // Taint this `delta` object, so we can recognize whether the user\n // is trying to send it back as `value`, preventing a likely loop.\n this.lastDeltaChangeSet = delta;\n this.value = nextContents;\n (_b = (_a = this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, value, delta, source, editor);\n }\n };\n ReactQuill.prototype.onEditorChangeSelection = function (nextSelection, source, editor) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.editor)\n return;\n var currentSelection = this.getEditorSelection();\n var hasGainedFocus = !currentSelection && nextSelection;\n var hasLostFocus = currentSelection && !nextSelection;\n if (isEqual_1.default(nextSelection, currentSelection))\n return;\n this.selection = nextSelection;\n (_b = (_a = this.props).onChangeSelection) === null || _b === void 0 ? void 0 : _b.call(_a, nextSelection, source, editor);\n if (hasGainedFocus) {\n (_d = (_c = this.props).onFocus) === null || _d === void 0 ? void 0 : _d.call(_c, nextSelection, source, editor);\n }\n else if (hasLostFocus) {\n (_f = (_e = this.props).onBlur) === null || _f === void 0 ? void 0 : _f.call(_e, currentSelection, source, editor);\n }\n };\n ReactQuill.prototype.focus = function () {\n if (!this.editor)\n return;\n this.editor.focus();\n };\n ReactQuill.prototype.blur = function () {\n if (!this.editor)\n return;\n this.selection = null;\n this.editor.blur();\n };\n ReactQuill.displayName = 'React Quill';\n /*\n Export Quill to be able to call `register`\n */\n ReactQuill.Quill = quill_1.default;\n ReactQuill.defaultProps = {\n theme: 'snow',\n modules: {},\n readOnly: false,\n };\n return ReactQuill;\n}(react_1.default.Component));\n/*\nSmall helper to execute a function in the next micro-tick.\n*/\nfunction postpone(fn) {\n Promise.resolve().then(fn);\n}\nmodule.exports = ReactQuill;\n//# sourceMappingURL=index.js.map","// ============= IMAGE UTILITIES =============\r\n// Basic implementation for image handling in RichTextEditor\r\n\r\nexport const uploadImageToSession = async (file: File, sessionId?: string): Promise<string> => {\r\n // Basic implementation - convert to data URL\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result as string);\r\n reader.readAsDataURL(file);\r\n });\r\n};\r\n\r\nexport const handleClipboardImageWithSession = async (clipboardData: DataTransfer, sessionId?: string): Promise<string | null> => {\r\n // Handle clipboard data transfer\r\n const files = Array.from(clipboardData.files);\r\n const imageFile = files.find(file => file.type.startsWith('image/'));\r\n \r\n if (imageFile) {\r\n return uploadImageToSession(imageFile, sessionId);\r\n }\r\n \r\n return null;\r\n};\r\n\r\nexport const detectRemovedImages = (previousContent: string, currentContent: string): string[] => {\r\n // Extract img src from previous content that are not in current content\r\n const previousImages = extractImageSrcs(previousContent);\r\n const currentImages = extractImageSrcs(currentContent);\r\n return previousImages.filter(img => !currentImages.includes(img));\r\n};\r\n\r\nexport const markImageForDeletion = (imageSrcs: string[], articleId?: string): void => {\r\n // Implementation for marking multiple images for deletion\r\n console.log('Images marked for deletion:', imageSrcs, 'for article:', articleId);\r\n};\r\n\r\nexport const detectRestoredImages = (previousContent: string, currentContent: string): string[] => {\r\n // Detect images that were restored\r\n const previousImages = extractImageSrcs(previousContent);\r\n const currentImages = extractImageSrcs(currentContent);\r\n return currentImages.filter(img => !previousImages.includes(img));\r\n};\r\n\r\nexport const restoreImageFromDeleted = async (imageSrc: string, articleId?: string): Promise<boolean> => {\r\n // Implementation for restoring images\r\n console.log('Image restored from deleted:', imageSrc, 'for article:', articleId);\r\n // Return success status\r\n return true;\r\n};\r\n\r\nexport const extractExternalImageUrls = (content: string): string[] => {\r\n const imgRegex = /<img[^>]+src=\"([^\"]+)\"/g;\r\n const urls: string[] = [];\r\n let match;\r\n while ((match = imgRegex.exec(content)) !== null) {\r\n if (match[1].startsWith('http')) {\r\n urls.push(match[1]);\r\n }\r\n }\r\n return urls;\r\n};\r\n\r\nexport const extractDataUrls = (content: string): string[] => {\r\n const imgRegex = /<img[^>]+src=\"([^\"]+)\"/g;\r\n const urls: string[] = [];\r\n let match;\r\n while ((match = imgRegex.exec(content)) !== null) {\r\n if (match[1].startsWith('data:')) {\r\n urls.push(match[1]);\r\n }\r\n }\r\n return urls;\r\n};\r\n\r\nexport const processHtmlWithAllImages = async (content: string, sessionId?: string): Promise<string> => {\r\n // Process HTML content with images\r\n return content;\r\n};\r\n\r\n// Helper function to extract image sources\r\nconst extractImageSrcs = (content: string): string[] => {\r\n const imgRegex = /<img[^>]+src=\"([^\"]+)\"/g;\r\n const srcs: string[] = [];\r\n let match;\r\n while ((match = imgRegex.exec(content)) !== null) {\r\n srcs.push(match[1]);\r\n }\r\n return srcs;\r\n};","import React, { forwardRef, useCallback, useEffect, useRef } from 'react';\r\nimport ReactQuill from 'react-quill';\r\nimport 'react-quill/dist/quill.snow.css';\r\nimport './rich-text-editor.css';\r\nimport { uploadImageToSession, handleClipboardImageWithSession, detectRemovedImages, markImageForDeletion, detectRestoredImages, restoreImageFromDeleted, extractExternalImageUrls, extractDataUrls, processHtmlWithAllImages } from \"../../imageUtils\";\r\nimport { toast } from \"sonner\";\r\nimport { cn } from \"../../utils\"\r\n\r\ninterface RichTextEditorProps {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n className?: string;\r\n sessionId?: string;\r\n articleId?: string;\r\n}\r\n\r\nexport const RichTextEditor = forwardRef<ReactQuill, RichTextEditorProps>(({\r\n value = '',\r\n onChange,\r\n placeholder = 'Digite o conteúdo...',\r\n className,\r\n sessionId,\r\n articleId\r\n}, ref) => {\r\n const previousContentRef = useRef<string>(value);\r\n const cleanupTimeoutRef = useRef<NodeJS.Timeout>();\r\n // Image upload handler for button clicks\r\n const imageHandler = useCallback(() => {\r\n const input = document.createElement('input');\r\n input.setAttribute('type', 'file');\r\n input.setAttribute('accept', 'image/*');\r\n input.click();\r\n\r\n input.onchange = async () => {\r\n const file = input.files?.[0];\r\n if (!file) return;\r\n\r\n try {\r\n toast.loading('Fazendo upload da imagem...');\r\n \r\n // Upload to session folder\r\n const tempSessionId = sessionId || 'legacy_' + Date.now();\r\n const imageUrl = await uploadImageToSession(file, tempSessionId);\r\n\r\n if (imageUrl) {\r\n // Get current editor instance\r\n const quill = ref && typeof ref === 'object' && 'current' in ref ? ref.current : null;\r\n if (quill) {\r\n const editor = quill.getEditor();\r\n const range = editor.getSelection();\r\n const index = range ? range.index : 0;\r\n \r\n // Insert image at cursor position\r\n editor.insertEmbed(index, 'image', imageUrl);\r\n editor.setSelection({ index: index + 1, length: 0 });\r\n }\r\n \r\n toast.success('Imagem inserida com sucesso!');\r\n }\r\n } catch (error) {\r\n console.error('Error uploading image:', error);\r\n toast.error('Erro ao fazer upload da imagem');\r\n } finally {\r\n toast.dismiss();\r\n }\r\n };\r\n }, [ref, sessionId]);\r\n\r\n // Handle content changes and detect removed/restored images\r\n const handleContentChange = useCallback(async (newContent: string) => {\r\n const previousContent = previousContentRef.current;\r\n \r\n // Clear previous timeout\r\n if (cleanupTimeoutRef.current) {\r\n clearTimeout(cleanupTimeoutRef.current);\r\n }\r\n \r\n // Detect restored images (e.g., via Ctrl+Z) and restore them\r\n const restoredImages = detectRestoredImages(previousContent, newContent);\r\n if (restoredImages.length > 0) {\r\n for (const restoredUrl of restoredImages) {\r\n const restored = await restoreImageFromDeleted(restoredUrl, articleId);\r\n if (restored) {\r\n toast.success('Imagem restaurada automaticamente');\r\n }\r\n }\r\n }\r\n \r\n // Detect removed images and mark for deletion (not permanent deletion)\r\n const removedImages = detectRemovedImages(previousContent, newContent);\r\n if (removedImages.length > 0 && sessionId) {\r\n // Debounce to avoid too many calls during rapid editing\r\n cleanupTimeoutRef.current = setTimeout(() => {\r\n markImageForDeletion(removedImages, articleId);\r\n toast.info('Imagens marcadas para exclusão');\r\n }, 2000); // Wait 2 seconds after last change\r\n }\r\n \r\n // Process images in background after paste\r\n const dataUrls = extractDataUrls(newContent);\r\n const externalImages = extractExternalImageUrls(newContent);\r\n const totalImages = dataUrls.length + externalImages.length;\r\n \r\n if (totalImages > 0 && sessionId) {\r\n // Process images in background without blocking UI\r\n processImagesInBackground(newContent, sessionId, totalImages);\r\n }\r\n \r\n // Update refs and call original onChange\r\n previousContentRef.current = newContent;\r\n onChange?.(newContent);\r\n }, [onChange, sessionId, articleId]);\r\n\r\n // Background image processing function\r\n const processImagesInBackground = useCallback(async (content: string, sessionId: string, totalImages: number) => {\r\n try {\r\n toast.loading(`Processando ${totalImages} imagem(ns) em segundo plano...`);\r\n \r\n // Process images and get the updated HTML\r\n const processedHtml = await processHtmlWithAllImages(content, sessionId);\r\n \r\n // Only update if content is different (images were actually processed)\r\n if (processedHtml !== content) {\r\n // Get current editor instance\r\n const quill = ref && typeof ref === 'object' && 'current' in ref ? ref.current : null;\r\n if (quill) {\r\n const editor = quill.getEditor();\r\n const currentContent = editor.root.innerHTML;\r\n \r\n // Only update if the editor content hasn't changed much (avoid overwriting user changes)\r\n if (currentContent.includes('data:image/') || currentContent.includes('http')) {\r\n editor.root.innerHTML = processedHtml;\r\n onChange?.(processedHtml);\r\n toast.success(`${totalImages} imagem(ns) processada(s) com sucesso!`);\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Error processing images in background:', error);\r\n toast.error('Erro ao processar imagens em segundo plano');\r\n } finally {\r\n toast.dismiss();\r\n }\r\n }, [ref, onChange]);\r\n\r\n // Handle paste events - only intercept direct image files\r\n const handlePaste = useCallback(async (event: ClipboardEvent) => {\r\n const clipboardData = event.clipboardData;\r\n if (!clipboardData) return;\r\n\r\n // Only intercept direct image files (not HTML with images)\r\n const hasDirectImage = Array.from(clipboardData.items).some(item => \r\n item.type.startsWith('image/') && item.kind === 'file'\r\n );\r\n\r\n if (hasDirectImage) {\r\n event.preventDefault(); // Prevent default paste handling\r\n event.stopPropagation();\r\n \r\n const tempSessionId = sessionId || 'legacy_' + Date.now();\r\n const imageUrl = await handleClipboardImageWithSession(clipboardData, tempSessionId);\r\n if (imageUrl) {\r\n // Get current editor instance\r\n const quill = ref && typeof ref === 'object' && 'current' in ref ? ref.current : null;\r\n if (quill) {\r\n const editor = quill.getEditor();\r\n const range = editor.getSelection();\r\n const index = range ? range.index : 0;\r\n \r\n // Insert image at cursor position\r\n editor.insertEmbed(index, 'image', imageUrl);\r\n editor.setSelection({ index: index + 1, length: 0 });\r\n \r\n toast.success('Imagem colada com sucesso!');\r\n }\r\n }\r\n }\r\n \r\n // For HTML with images, let ReactQuill handle it naturally\r\n // Images will be processed in background via handleContentChange\r\n }, [ref, sessionId]);\r\n\r\n // Update previous content ref when value prop changes\r\n useEffect(() => {\r\n previousContentRef.current = value;\r\n }, [value]);\r\n\r\n // Cleanup timeout on unmount\r\n useEffect(() => {\r\n return () => {\r\n if (cleanupTimeoutRef.current) {\r\n clearTimeout(cleanupTimeoutRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n // Add paste event listener\r\n useEffect(() => {\r\n const quill = ref && typeof ref === 'object' && 'current' in ref ? ref.current : null;\r\n if (quill) {\r\n const editor = quill.getEditor();\r\n const editorElement = editor.root;\r\n \r\n // Use capture phase to intercept before Quill processes\r\n editorElement.addEventListener('paste', handlePaste, true);\r\n \r\n return () => {\r\n editorElement.removeEventListener('paste', handlePaste, true);\r\n };\r\n }\r\n }, [handlePaste, ref, sessionId]);\r\n\r\n const modules = {\r\n toolbar: {\r\n container: [\r\n [{ 'header': [1, 2, 3, false] }],\r\n ['bold', 'italic', 'underline', 'strike'],\r\n [{ 'list': 'ordered'}, { 'list': 'bullet' }],\r\n ['blockquote', 'code-block'],\r\n ['link', 'image'],\r\n ['clean']\r\n ],\r\n handlers: {\r\n image: imageHandler\r\n }\r\n },\r\n };\r\n\r\n const formats = [\r\n 'header', 'bold', 'italic', 'underline', 'strike',\r\n 'list', 'bullet', 'blockquote', 'code-block', 'link', 'image'\r\n ];\r\n\r\n return (\r\n <div className={cn(\"rich-text-editor\", className)}>\r\n <ReactQuill\r\n ref={ref}\r\n theme=\"snow\"\r\n value={value}\r\n onChange={handleContentChange}\r\n modules={modules}\r\n formats={formats}\r\n placeholder={placeholder}\r\n style={{\r\n backgroundColor: 'hsl(var(--background))',\r\n color: 'hsl(var(--foreground))',\r\n border: '1px solid hsl(var(--border))',\r\n borderRadius: 'calc(var(--radius) - 2px)'\r\n }}\r\n />\r\n </div>\r\n );\r\n});\r\n\r\nRichTextEditor.displayName = \"RichTextEditor\";","import * as React from \"react\"\r\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(\r\n (\r\n { className, orientation = \"horizontal\", decorative = true, ...props },\r\n ref\r\n ) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\r\n \"shrink-0 bg-border\",\r\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }","import * as SheetPrimitive from \"@radix-ui/react-dialog\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { X } from \"lucide-react\"\r\nimport * as React from \"react\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Sheet = SheetPrimitive.Root\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger\r\n\r\nconst SheetClose = SheetPrimitive.Close\r\n\r\nconst SheetPortal = SheetPrimitive.Portal\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n))\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n }\r\n)\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> { }\r\n\r\nconst SheetContent = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Content>,\r\n SheetContentProps\r\n>(({ side = \"right\", className, children, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content\r\n ref={ref}\r\n className={cn(sheetVariants({ side }), className)}\r\n {...props}\r\n >\r\n {children}\r\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n))\r\nSheetContent.displayName = SheetPrimitive.Content.displayName\r\n\r\nconst SheetHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-2 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetHeader.displayName = \"SheetHeader\"\r\n\r\nconst SheetFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nSheetFooter.displayName = \"SheetFooter\"\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName\r\n\r\nexport {\r\n Sheet, SheetClose,\r\n SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger\r\n}\r\n\r\n","\r\nimport * as React from \"react\"\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider\r\n\r\nconst Tooltip = TooltipPrimitive.Root\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\r\n","import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { VariantProps, cva } from \"class-variance-authority\";\r\nimport { PanelLeft } from \"lucide-react\";\r\n\r\n// Mobile hook integrated inline\r\nimport { cn } from \"../../utils\";\r\nimport { Button } from \"./button\";\r\nimport { Input } from \"./input\";\r\nimport { Separator } from \"./separator\";\r\nimport { Sheet, SheetContent, SheetTitle } from \"./sheet\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\r\nconst SIDEBAR_STORAGE_KEY = \"sidebar:state\";\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"4.5rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\ntype SidebarContext = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n openMobile: boolean;\r\n setOpenMobile: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n return context;\r\n}\r\nconst SidebarProvider = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n}>(({\r\n defaultOpen = true,\r\n open: openProp,\r\n onOpenChange: setOpenProp,\r\n className,\r\n style,\r\n children,\r\n ...props\r\n}, ref) => {\r\n const [isMobile, setIsMobile] = React.useState(false);\r\n React.useEffect(() => {\r\n const checkMobile = () => setIsMobile(window.innerWidth < 768);\r\n checkMobile();\r\n window.addEventListener('resize', checkMobile);\r\n return () => window.removeEventListener('resize', checkMobile);\r\n }, []);\r\n const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(() => {\r\n if (typeof window !== 'undefined') {\r\n const stored = localStorage.getItem(SIDEBAR_STORAGE_KEY);\r\n return stored !== null ? stored === 'true' : defaultOpen;\r\n }\r\n return defaultOpen;\r\n });\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback((value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This saves the sidebar state to localStorage.\r\n if (typeof window !== 'undefined') {\r\n localStorage.setItem(SIDEBAR_STORAGE_KEY, String(openState));\r\n }\r\n }, [setOpenProp, open]);\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\r\n }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n const contextValue = React.useMemo<SidebarContext>(() => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n openMobile,\r\n setOpenMobile,\r\n toggleSidebar\r\n }), [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]);\r\n return <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div className={cn(\"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar sidebar-container\", className)} style={{\r\n \"--sidebar-width\": SIDEBAR_WIDTH,\r\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n ...style\r\n } as React.CSSProperties} ref={ref} {...props}>\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>;\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\nconst Sidebar = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n}>(({\r\n side = \"left\",\r\n variant = \"sidebar\",\r\n collapsible = \"offcanvas\",\r\n className,\r\n children,\r\n ...props\r\n}, ref) => {\r\n const {\r\n isMobile,\r\n state,\r\n openMobile,\r\n setOpenMobile\r\n } = useSidebar();\r\n if (collapsible === \"none\") {\r\n return <div className={cn(\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\", className)} ref={ref} {...props}>\r\n {children}\r\n </div>;\r\n }\r\n if (isMobile) {\r\n return <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\r\n <SheetContent data-sidebar=\"sidebar\" data-mobile=\"true\" className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden sidebar-mobile\" style={{\r\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\r\n } as React.CSSProperties} side={side}>\r\n <SheetTitle className=\"sr-only\">Menu de Navegação</SheetTitle>\r\n <div className=\"flex h-full w-full flex-col\">{children}</div>\r\n </SheetContent>\r\n </Sheet>;\r\n }\r\n return <div ref={ref} className=\"group peer hidden md:block text-sidebar-foreground\" data-state={state} data-collapsible={state === \"collapsed\" ? collapsible : \"\"} data-variant={variant} data-side={side}>\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div className={cn(\"duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear\", \"group-data-[collapsible=offcanvas]:w-0\", \"group-data-[side=right]:rotate-180\", variant === \"floating\" || variant === \"inset\" ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\" : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\")} />\r\n <div className={cn(\"duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex\", side === \"left\" ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\" : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\" ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\" : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\", className)} {...props}>\r\n <div data-sidebar=\"sidebar\" className=\"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow bg-white\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>;\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(({\r\n className,\r\n onClick,\r\n ...props\r\n}, ref) => {\r\n const {\r\n toggleSidebar\r\n } = useSidebar();\r\n return <Button ref={ref} data-sidebar=\"trigger\" variant=\"ghost\" size=\"icon\" className={cn(\"h-7 w-7\", className)} onClick={event => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }} {...props}>\r\n <PanelLeft />\r\n <span className=\"sr-only\">Toggle Sidebar</span>\r\n </Button>;\r\n});\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n const {\r\n toggleSidebar\r\n } = useSidebar();\r\n return <button ref={ref} data-sidebar=\"rail\" aria-label=\"Toggle Sidebar\" tabIndex={-1} onClick={toggleSidebar} title=\"Toggle Sidebar\" className={cn(\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\", \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\", \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\", \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\", \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\", \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\", className)} {...props} />;\r\n});\r\nSidebarRail.displayName = \"SidebarRail\";\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n return <main ref={ref} className={cn(\"relative flex min-h-svh flex-1 flex-col bg-background\", \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\", className)} {...props} />;\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n return <Input ref={ref} data-sidebar=\"input\" className={cn(\"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\", className)} {...props} />;\r\n});\r\nSidebarInput.displayName = \"SidebarInput\";\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n return <div ref={ref} data-sidebar=\"header\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n return <div ref={ref} data-sidebar=\"footer\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n return <Separator ref={ref} data-sidebar=\"separator\" className={cn(\"mx-2 w-auto bg-sidebar-border\", className)} {...props} />;\r\n});\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n return <div ref={ref} data-sidebar=\"content\" className={cn(\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\", className)} {...props} />;\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({\r\n className,\r\n ...props\r\n}, ref) => {\r\n return <div ref={ref} data-sidebar=\"group\" className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)} {...props} />;\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & {\r\n asChild?: boolean;\r\n}>(({\r\n className,\r\n asChild = false,\r\n ...props\r\n}, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n return <Comp ref={ref} data-sidebar=\"group-label\" className={cn(\"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\", \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\", className)} {...props} />;\r\n});\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n}>(({\r\n className,\r\n asChild = false,\r\n ...props\r\n}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n return <Comp ref={ref} data-sidebar=\"group-action\" className={cn(\"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\", \"group-data-[collapsible=icon]:hidden\", className)} {...props} />;\r\n});\r\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({\r\n className,\r\n ...props\r\n}, ref) => <div ref={ref} data-sidebar=\"group-content\" className={cn(\"w-full text-sm\", className)} {...props} />);\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({\r\n className,\r\n ...props\r\n}, ref) => <ul ref={ref} data-sidebar=\"menu\" className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)} {...props} />);\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({\r\n className,\r\n ...props\r\n}, ref) => <li ref={ref} data-sidebar=\"menu-item\" className={cn(\"group/menu-item relative\", className)} {...props} />);\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\nconst sidebarMenuButtonVariants = cva(\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-primary data-[active=true]:font-medium data-[active=true]:text-sidebar-primary-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:gap-0 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 group-data-[collapsible=icon]:[&>*]:!mr-0 group-data-[collapsible=icon]:[&>*]:!ml-0\", {\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n outline: \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\"\r\n },\r\n size: {\r\n default: \"h-10 text-sm\",\r\n sm: \"h-7 text-xs\",\r\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\"\r\n }\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\"\r\n }\r\n});\r\nconst SidebarMenuButton = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n} & VariantProps<typeof sidebarMenuButtonVariants>>(({\r\n asChild = false,\r\n isActive = false,\r\n variant = \"default\",\r\n size = \"default\",\r\n tooltip,\r\n className,\r\n ...props\r\n}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const {\r\n isMobile,\r\n state\r\n } = useSidebar();\r\n const button = <Comp ref={ref} data-sidebar=\"menu-button\" data-size={size} data-active={isActive} className={cn(sidebarMenuButtonVariants({\r\n variant,\r\n size\r\n }), className)} {...props} />;\r\n if (!tooltip) {\r\n return button;\r\n }\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip\r\n };\r\n }\r\n return <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\r\n </Tooltip>;\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\nconst SidebarMenuAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n}>(({\r\n className,\r\n asChild = false,\r\n showOnHover = false,\r\n ...props\r\n}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n return <Comp ref={ref} data-sidebar=\"menu-action\" className={cn(\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\", \"peer-data-[size=sm]/menu-button:top-1\", \"peer-data-[size=default]/menu-button:top-1.5\", \"peer-data-[size=lg]/menu-button:top-2.5\", \"group-data-[collapsible=icon]:hidden\", showOnHover && \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\", className)} {...props} />;\r\n});\r\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({\r\n className,\r\n ...props\r\n}, ref) => <div ref={ref} data-sidebar=\"menu-badge\" className={cn(\"absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none\", \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\", \"peer-data-[size=sm]/menu-button:top-1\", \"peer-data-[size=default]/menu-button:top-1.5\", \"peer-data-[size=lg]/menu-button:top-2.5\", \"group-data-[collapsible=icon]:hidden\", className)} {...props} />);\r\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\nconst SidebarMenuSkeleton = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n}>(({\r\n className,\r\n showIcon = false,\r\n ...props\r\n}, ref) => {\r\n // Random width between 50 to 90%.\r\n const width = React.useMemo(() => {\r\n return `${Math.floor(Math.random() * 40) + 50}%`;\r\n }, []);\r\n return <div ref={ref} data-sidebar=\"menu-skeleton\" className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", className)} {...props}>\r\n {showIcon && <div className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\r\n <div className=\"h-4 flex-1 max-w-[--skeleton-width] skeleton-width\" data-sidebar=\"menu-skeleton-text\" style={{\r\n \"--skeleton-width\": width\r\n } as React.CSSProperties} />\r\n </div>;\r\n});\r\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({\r\n className,\r\n ...props\r\n}, ref) => <ul ref={ref} data-sidebar=\"menu-sub\" className={cn(\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\", \"group-data-[collapsible=icon]:hidden\", className)} {...props} />);\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({\r\n ...props\r\n}, ref) => <li ref={ref} {...props} />);\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\nconst SidebarMenuSubButton = React.forwardRef<HTMLAnchorElement, React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n}>(({\r\n asChild = false,\r\n size = \"md\",\r\n isActive,\r\n className,\r\n ...props\r\n}, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n return <Comp ref={ref} data-sidebar=\"menu-sub-button\" data-size={size} data-active={isActive} className={cn(\"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\", \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\", size === \"sm\" && \"text-xs\", size === \"md\" && \"text-sm\", \"group-data-[collapsible=icon]:hidden\", className)} {...props} />;\r\n});\r\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\nexport { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };","import * as React from \"react\"\r\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Slider = React.forwardRef<\r\n React.ElementRef<typeof SliderPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SliderPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full touch-none select-none items-center\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\r\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\r\n </SliderPrimitive.Track>\r\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\r\n </SliderPrimitive.Root>\r\n))\r\nSlider.displayName = SliderPrimitive.Root.displayName\r\n\r\nexport { Slider }\r\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\r\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Switch = React.forwardRef<\r\n React.ElementRef<typeof SwitchPrimitives.Root>,\r\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SwitchPrimitives.Root\r\n className={cn(\r\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\r\n className\r\n )}\r\n {...props}\r\n ref={ref}\r\n >\r\n <SwitchPrimitives.Thumb\r\n className={cn(\r\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\r\n )}\r\n />\r\n </SwitchPrimitives.Root>\r\n))\r\nSwitch.displayName = SwitchPrimitives.Root.displayName\r\n\r\nexport { Switch }","import { cn } from \"../../utils\"\r\nimport { ReactNode } from \"react\"\r\n\r\ninterface StackProps {\r\n children: ReactNode\r\n direction?: \"row\" | \"column\"\r\n gap?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\r\n align?: \"start\" | \"center\" | \"end\" | \"stretch\"\r\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\"\r\n wrap?: boolean\r\n className?: string\r\n}\r\n\r\nconst gapClasses = {\r\n xs: \"gap-1\",\r\n sm: \"gap-2\", \r\n md: \"gap-4\",\r\n lg: \"gap-6\",\r\n xl: \"gap-8\"\r\n}\r\n\r\nconst alignClasses = {\r\n start: \"items-start\",\r\n center: \"items-center\", \r\n end: \"items-end\",\r\n stretch: \"items-stretch\"\r\n}\r\n\r\nconst justifyClasses = {\r\n start: \"justify-start\",\r\n center: \"justify-center\",\r\n end: \"justify-end\", \r\n between: \"justify-between\",\r\n around: \"justify-around\",\r\n evenly: \"justify-evenly\"\r\n}\r\n\r\nexport function Stack({\r\n children,\r\n direction = \"column\",\r\n gap = \"md\",\r\n align = \"stretch\",\r\n justify = \"start\", \r\n wrap = false,\r\n className\r\n}: StackProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"flex\",\r\n direction === \"column\" ? \"flex-col\" : \"flex-row\",\r\n gapClasses[gap],\r\n alignClasses[align],\r\n justifyClasses[justify],\r\n wrap && \"flex-wrap\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}","\r\nimport * as React from \"react\"\r\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst Tabs = TabsPrimitive.Root\r\n\r\nconst TabsList = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsList.displayName = TabsPrimitive.List.displayName\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\r\n\r\nconst TabsContent = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsContent.displayName = TabsPrimitive.Content.displayName\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\r\n","import * as React from \"react\"\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"../../utils\"\r\n\r\nconst toggleVariants = cva(\r\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n outline:\r\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\r\n },\r\n size: {\r\n default: \"h-10 px-3\",\r\n sm: \"h-9 px-2.5\",\r\n lg: \"h-11 px-5\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Toggle = React.forwardRef<\r\n React.ElementRef<typeof TogglePrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, ...props }, ref) => (\r\n <TogglePrimitive.Root\r\n ref={ref}\r\n className={cn(toggleVariants({ variant, size, className }))}\r\n {...props}\r\n />\r\n))\r\n\r\nToggle.displayName = TogglePrimitive.Root.displayName\r\n\r\nexport { Toggle, toggleVariants }\r\n","import * as React from \"react\"\r\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"../../utils\"\r\nimport { toggleVariants } from \"./toggle\"\r\n\r\nconst ToggleGroupContext = React.createContext<\r\n VariantProps<typeof toggleVariants>\r\n>({\r\n size: \"default\",\r\n variant: \"default\",\r\n})\r\n\r\nconst ToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, children, ...props }, ref) => (\r\n <ToggleGroupPrimitive.Root\r\n ref={ref}\r\n className={cn(\"flex items-center justify-center gap-1\", className)}\r\n {...props}\r\n >\r\n <ToggleGroupContext.Provider value={{ variant, size }}>\r\n {children}\r\n </ToggleGroupContext.Provider>\r\n </ToggleGroupPrimitive.Root>\r\n))\r\n\r\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\r\n\r\nconst ToggleGroupItem = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, children, variant, size, ...props }, ref) => {\r\n const context = React.useContext(ToggleGroupContext)\r\n\r\n return (\r\n <ToggleGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n toggleVariants({\r\n variant: context.variant || variant,\r\n size: context.size || size,\r\n }),\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </ToggleGroupPrimitive.Item>\r\n )\r\n})\r\n\r\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\r\n\r\nexport { ToggleGroup, ToggleGroupItem }\r\n","import React from 'react';\r\nimport { Button } from './button';\r\nimport { EllipsisVertical } from 'lucide-react';\r\nimport { cn } from \"../../utils\"\r\n\r\ninterface ActionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: 'default' | 'ghost';\r\n}\r\n\r\nexport const ActionButton = React.forwardRef<HTMLButtonElement, ActionButtonProps>(\r\n ({ variant = 'default', className, children, ...props }, ref) => {\r\n return (\r\n <Button\r\n ref={ref}\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className={cn(\r\n 'h-7 px-2 text-xs',\r\n 'border-primary/20 text-primary hover:bg-primary/5',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children || <EllipsisVertical size={12} />}\r\n </Button>\r\n );\r\n }\r\n);\r\n\r\nActionButton.displayName = \"ActionButton\";","// ============= CRUD ROUTING HELPERS =============\r\n\r\nimport { useNavigate } from 'react-router-dom';\r\nimport type { CrudEntity } from '../../types';\r\n\r\nexport interface RoutingConfig {\r\n basePath: string;\r\n newPath?: string;\r\n editPath?: string;\r\n}\r\n\r\n/**\r\n * Creates routing handlers for CRUD operations\r\n * @param config Configuration for routing paths\r\n * @returns Object with onNew and onEdit handlers\r\n */\r\nexport function createRoutingHandlers<T extends CrudEntity>(\r\n config: RoutingConfig\r\n): {\r\n onNew: () => void;\r\n onEdit: (entity: T) => void;\r\n} {\r\n const navigate = useNavigate();\r\n \r\n const onNew = () => {\r\n const path = config.newPath || `${config.basePath}/new`;\r\n navigate(path);\r\n };\r\n\r\n const onEdit = (entity: T) => {\r\n const path = config.editPath \r\n ? config.editPath.replace(':id', entity.id)\r\n : `${config.basePath}/${entity.id}/edit`;\r\n navigate(path);\r\n };\r\n\r\n return { onNew, onEdit };\r\n}\r\n\r\n/**\r\n * Hook that provides routing handlers for common CRUD patterns\r\n * @param basePath Base path for the CRUD routes (e.g., '/articles')\r\n * @returns Object with onNew and onEdit handlers\r\n */\r\nexport function useCrudRouting<T extends CrudEntity>(basePath: string) {\r\n return createRoutingHandlers<T>({ basePath });\r\n}","import React from 'react';\r\nimport { User, Building2, LogOut, ChevronDown, RefreshCw } from 'lucide-react';\r\nimport { Button } from '../../components/ui/button';\r\nimport { Card, CardContent, CardHeader, CardTitle } from '../../components/ui/card';\r\nimport { Badge } from '../../components/ui/badge';\r\nimport { Separator } from '../../components/ui/separator';\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuSeparator,\r\n DropdownMenuTrigger,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n} from '../../components/ui/dropdown-menu';\r\nimport { FeedbackDialog } from '../../components/ui/feedback-dialog';\r\nimport { useAuth } from '../contexts/AuthContext';\r\nimport type { Company } from '../../types';\r\n\r\ninterface UserInfoProps {\r\n variant?: 'card' | 'dropdown';\r\n className?: string;\r\n selectedUnit?: Company | null;\r\n onUnitChange?: (unit: Company) => void;\r\n}\r\n\r\nconst UserInfo: React.FC<UserInfoProps> = React.memo(({ \r\n variant = 'card', \r\n className = '',\r\n selectedUnit: propSelectedUnit,\r\n onUnitChange,\r\n}) => {\r\n const { \r\n user, \r\n companies, \r\n alias,\r\n isAuthenticated, \r\n logout,\r\n switchUnit\r\n } = useAuth();\r\n \r\n const defaultCompany = companies?.[0] || null;\r\n // Use the company that matches the current alias from AuthContext\r\n const authSelectedUnit = alias ? companies?.find(c => c.alias === alias) : defaultCompany;\r\n const selectedUnit = propSelectedUnit || authSelectedUnit || defaultCompany;\r\n const availableUnits = companies || [];\r\n const currentUnit = selectedUnit || defaultCompany;\r\n\r\n // Handle unit change with proper callback\r\n const handleUnitChange = React.useCallback((unit: Company) => {\r\n if (onUnitChange) {\r\n onUnitChange(unit);\r\n } else {\r\n switchUnit(unit);\r\n }\r\n }, [onUnitChange, switchUnit]);\r\n\r\n // Unidades únicas e ordenadas\r\n const uniqueSortedUnits = React.useMemo(() => {\r\n if (!availableUnits?.length) return [];\r\n \r\n const uniqueUnitsMap = new Map();\r\n availableUnits.forEach(unit => {\r\n uniqueUnitsMap.set(unit.alias, unit);\r\n });\r\n \r\n const uniqueUnits = Array.from(uniqueUnitsMap.values());\r\n const currentUnitInList = uniqueUnits.find(unit => unit.alias === currentUnit?.alias);\r\n const otherUnits = uniqueUnits.filter(unit => unit.alias !== currentUnit?.alias);\r\n \r\n otherUnits.sort((a, b) => \r\n (a.name || '').localeCompare(b.name || '', 'pt-BR', { sensitivity: 'base' })\r\n );\r\n \r\n return currentUnitInList ? [currentUnitInList, ...otherUnits] : otherUnits;\r\n }, [availableUnits, currentUnit?.alias]);\r\n\r\n if (!isAuthenticated || !user) {\r\n return null;\r\n }\r\n\r\n const UserContent = () => (\r\n <>\r\n <div className=\"flex items-center space-x-3\">\r\n <div className=\"flex-shrink-0\">\r\n <div className=\"w-10 h-10 bg-primary rounded-full flex items-center justify-center\">\r\n <User className=\"h-5 w-5 text-primary-foreground\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium truncate\">\r\n {user.name}\r\n </p>\r\n <p className=\"text-xs text-muted-foreground\">\r\n Unidade: {currentUnit?.name || 'N/A'}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n {currentUnit && (\r\n <div className=\"mt-3\">\r\n <div className=\"flex items-center space-x-2\">\r\n <Building2 className=\"h-4 w-4 text-muted-foreground\" />\r\n <span className=\"text-sm font-medium\">\r\n {currentUnit.name}\r\n </span>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {uniqueSortedUnits.length > 1 && (\r\n <div className=\"mt-2\">\r\n <p className=\"text-xs text-muted-foreground mb-1\">\r\n Unidades disponíveis: {uniqueSortedUnits.length}\r\n </p>\r\n <div className=\"flex flex-wrap gap-1\">\r\n {uniqueSortedUnits.slice(0, 3).map((unit) => (\r\n <Badge \r\n key={unit.alias} \r\n variant={unit.alias === currentUnit?.alias ? \"default\" : \"secondary\"}\r\n className=\"text-xs cursor-pointer\"\r\n onClick={() => handleUnitChange(unit)}\r\n >\r\n {unit.name}\r\n </Badge>\r\n ))}\r\n {uniqueSortedUnits.length > 3 && (\r\n <Badge variant=\"outline\" className=\"text-xs\">\r\n +{uniqueSortedUnits.length - 3}\r\n </Badge>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n\r\n if (variant === 'dropdown') {\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button variant=\"ghost\" className={`h-auto p-2 ${className}`}>\r\n <div className=\"flex items-center space-x-2\">\r\n <div className=\"hidden md:block text-left\">\r\n <p className=\"text-sm font-medium\">{user.name}</p>\r\n <p className=\"text-xs text-muted-foreground\">{currentUnit?.name || 'N/A'}</p>\r\n </div>\r\n <div className=\"w-8 h-8 bg-primary rounded-full flex items-center justify-center\">\r\n <User className=\"h-4 w-4 text-primary-foreground\" />\r\n </div>\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </div>\r\n </Button>\r\n </DropdownMenuTrigger>\r\n \r\n <DropdownMenuContent \r\n className=\"w-56 bg-background border border-border shadow-lg z-50\" \r\n align=\"end\"\r\n >\r\n <DropdownMenuSub>\r\n <DropdownMenuSubTrigger>\r\n <RefreshCw className=\"mr-2 h-4 w-4\" />\r\n Alterar Unidade\r\n </DropdownMenuSubTrigger>\r\n <DropdownMenuSubContent>\r\n {uniqueSortedUnits.map((unit) => (\r\n <DropdownMenuItem \r\n key={unit.alias} \r\n onClick={() => handleUnitChange(unit)}\r\n className={unit.alias === currentUnit?.alias ? \"bg-muted\" : \"\"}\r\n >\r\n <Building2 className=\"mr-2 h-4 w-4\" />\r\n {unit.name}\r\n {unit.alias === currentUnit?.alias && (\r\n <Badge variant=\"outline\" className=\"ml-2 text-xs\">\r\n Atual\r\n </Badge>\r\n )}\r\n </DropdownMenuItem>\r\n ))}\r\n </DropdownMenuSubContent>\r\n </DropdownMenuSub>\r\n \r\n <DropdownMenuSeparator />\r\n \r\n <FeedbackDialog variant=\"menuItem\" />\r\n \r\n <DropdownMenuItem onClick={logout}>\r\n <LogOut className=\"mr-2 h-4 w-4\" />\r\n Sair\r\n </DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n );\r\n }\r\n\r\n return (\r\n <Card className={className}>\r\n <CardHeader>\r\n <CardTitle className=\"text-lg\">Informações do Usuário</CardTitle>\r\n </CardHeader>\r\n \r\n <CardContent className=\"space-y-4\">\r\n <UserContent />\r\n \r\n <Separator />\r\n \r\n <div className=\"flex space-x-2\">\r\n <FeedbackDialog className=\"flex-1\" />\r\n <Button \r\n variant=\"outline\" \r\n onClick={logout}\r\n size=\"sm\"\r\n className=\"flex-1\"\r\n >\r\n <LogOut className=\"mr-2 h-4 w-4\" />\r\n Sair\r\n </Button>\r\n </div>\r\n </CardContent>\r\n </Card>\r\n );\r\n});\r\n\r\nexport default UserInfo;","import React, { createContext, useContext, ReactNode } from 'react';\r\nimport { SidebarConfig } from '../types/sidebar';\r\n\r\ninterface NavigationContextType {\r\n navigation?: SidebarConfig['navigation'];\r\n appName?: string;\r\n}\r\n\r\nconst NavigationContext = createContext<NavigationContextType>({});\r\n\r\ninterface NavigationProviderProps {\r\n children: ReactNode;\r\n config?: SidebarConfig;\r\n}\r\n\r\nexport function NavigationProvider({ children, config }: NavigationProviderProps) {\r\n return (\r\n <NavigationContext.Provider value={{ navigation: config?.navigation, appName: config?.appName }}>\r\n {children}\r\n </NavigationContext.Provider>\r\n );\r\n}\r\n\r\nexport function useNavigation() {\r\n return useContext(NavigationContext);\r\n}","import { useLocation } from \"react-router-dom\"\r\nimport { useNavigation } from \"../contexts/NavigationContext\"\r\n\r\nexport function usePageTitle(): string {\r\n const location = useLocation()\r\n const { navigation } = useNavigation()\r\n \r\n // Busca o título na configuração de navegação\r\n const currentRoute = navigation?.find(item => item.path === location.pathname)\r\n \r\n // Retorna o título da rota atual ou um fallback\r\n return currentRoute?.label || 'Página'\r\n}","import { useState, useEffect, useRef, useCallback } from 'react';\r\n\r\n/**\r\n * Hook para aplicar debounce em um valor com capacidade de cancelamento\r\n * @param value - Valor a ser debounced\r\n * @param delay - Delay em milissegundos\r\n * @returns [valor com debounce aplicado, função para cancelar]\r\n */\r\nexport function useDebounce<T>(value: T, delay: number): [T, () => void] {\r\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\r\n const timeoutRef = useRef<NodeJS.Timeout>();\r\n\r\n const cancel = useCallback(() => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n timeoutRef.current = undefined;\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n cancel(); // Cancela timeout anterior\r\n \r\n timeoutRef.current = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n\r\n return cancel;\r\n }, [value, delay, cancel]);\r\n\r\n return [debouncedValue, cancel];\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { Button } from '../ui/button';\r\nimport { Input } from '../ui/input';\r\nimport { Badge } from '../ui/badge';\r\nimport { X, RefreshCw, Search } from 'lucide-react';\r\nimport { usePageTitle } from '../../hooks/usePageTitle';\r\nimport { useSearchParams, useLocation } from 'react-router-dom';\r\nimport UserInfo from '../../auth/components/UserInfo';\r\nimport { useAuth } from '../../auth/contexts/AuthContext';\r\nimport { useDebounce } from '../../hooks/useDebounce';\r\nimport { useNavigation } from '../../contexts/NavigationContext';\r\nimport { SEARCH_CONFIG } from '../../config';\r\n\r\ninterface AppHeaderProps {\r\n actions?: React.ReactNode;\r\n}\r\n\r\nconst AppHeader = ({ actions }: AppHeaderProps) => {\r\n const location = useLocation();\r\n const pageTitle = usePageTitle();\r\n const { navigation, appName } = useNavigation();\r\n \r\n const { companies, alias, isSearchVisible, clearSearch, refreshData, switchUnit } = useAuth();\r\n const selectedUnit = alias \r\n ? companies?.find(company => company.alias === alias) || companies?.[0] || null\r\n : companies?.[0] || null;\r\n const [searchParams, setSearchParams] = useSearchParams();\r\n\r\n // Local state for immediate input value - initialize once from URL\r\n const [inputValue, setInputValue] = useState(() => searchParams.get('search') || '');\r\n \r\n // Debounced value that triggers URL updates with cancel function\r\n const [debouncedSearchValue, cancelDebounce] = useDebounce(inputValue, SEARCH_CONFIG.debounceDelay);\r\n\r\n // Update URL params (only when search is visible) to avoid clearing OAuth fragments on /callback\r\n useEffect(() => {\r\n if (!isSearchVisible) return;\r\n const newParams = new URLSearchParams(searchParams);\r\n if (debouncedSearchValue) {\r\n newParams.set('search', debouncedSearchValue);\r\n newParams.set('page', '1'); // Reset to page 1 when searching\r\n } else {\r\n newParams.delete('search');\r\n // Don't delete page when search is empty - preserve pagination\r\n }\r\n setSearchParams(newParams);\r\n }, [debouncedSearchValue, setSearchParams, isSearchVisible]);\r\n\r\n const handleSearchChange = (value: string) => {\r\n setInputValue(value);\r\n };\r\n\r\n const handleClearSearch = () => {\r\n // Cancel any pending debounce\r\n cancelDebounce();\r\n \r\n // Clear input immediately\r\n setInputValue('');\r\n \r\n // Update URL immediately\r\n const newParams = new URLSearchParams(searchParams);\r\n newParams.delete('search');\r\n newParams.delete('page');\r\n setSearchParams(newParams);\r\n };\r\n\r\n // Get current route info\r\n const currentRoute = navigation?.find(item => item.path === location.pathname);\r\n\r\n return (\r\n <header className=\"bg-white border-b border-gray-200 px-2 md:px-4 py-2\">\r\n <div className=\"flex items-center justify-between gap-4\">\r\n {/* Left side: breadcrumb and search */}\r\n <div className=\"flex items-center space-x-1 md:space-x-2 min-w-0\">\r\n <div className=\"min-w-0 flex flex-col md:flex-row md:items-center md:space-x-3 space-y-2 md:space-y-0\">\r\n {/* Page Title with Module Tag */}\r\n <div className=\"min-w-0\">\r\n <div className=\"flex items-center gap-2 mb-1\">\r\n <h1 className=\"text-lg font-semibold text-foreground truncate\">\r\n {pageTitle}\r\n </h1>\r\n <Badge variant=\"default\" className=\"bg-primary hover:bg-primary/90 text-primary-foreground text-xs px-2 py-1\">\r\n {appName || 'Módulo'}\r\n </Badge>\r\n </div>\r\n <p className=\"text-sm text-muted-foreground truncate\">\r\n {currentRoute?.complementaryText || 'Detalhes do item'}\r\n </p>\r\n </div>\r\n\r\n {/* Search field (only visible on CRUD pages) */}\r\n {isSearchVisible && (\r\n <div className=\"flex items-center space-x-1 w-full md:w-auto\">\r\n <div className=\"relative w-full md:w-48\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground h-4 w-4\" />\r\n <Input\r\n placeholder={location.pathname === '/wiki' ? \"Buscar artigos...\" : \"Buscar...\"}\r\n value={inputValue}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n className=\"w-full pl-10 pr-8\"\r\n />\r\n {inputValue && (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100\"\r\n onClick={handleClearSearch}\r\n title=\"Limpar busca\"\r\n >\r\n <X size={14} />\r\n </Button>\r\n )}\r\n </div>\r\n\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={refreshData}\r\n className=\"flex-shrink-0 h-10 w-10 p-0\"\r\n title=\"Atualizar dados\"\r\n >\r\n <RefreshCw size={14} />\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Right side: Actions and User info */}\r\n <div className=\"flex-shrink-0 flex items-center gap-3\">\r\n {actions && (\r\n <div className=\"flex items-center gap-2\">\r\n {actions}\r\n </div>\r\n )}\r\n <div className=\"text-sm\">\r\n <UserInfo\r\n variant=\"dropdown\"\r\n selectedUnit={selectedUnit}\r\n onUnitChange={switchUnit}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n};\r\n\r\nexport default AppHeader;","import { useQuery } from '@tanstack/react-query';\r\nimport { getSupabaseClient } from '../supabase/SupabaseSingleton';\r\nimport { useAuth } from '../auth/contexts/AuthContext';\r\nimport { AuthErrorInterceptor } from '../auth/utils/ErrorInterceptor';\r\n\r\ninterface UseActiveModulesOptions {\r\n enabled?: boolean;\r\n}\r\n\r\nexport const useActiveModules = (options: UseActiveModulesOptions = {}) => {\r\n const { enabled = true } = options;\r\n const { alias } = useAuth();\r\n \r\n return useQuery({\r\n queryKey: ['active-modules', alias],\r\n queryFn: async () => {\r\n if (!alias) {\r\n return [];\r\n }\r\n\r\n const supabase = getSupabaseClient();\r\n const { data, error } = await (supabase as any)\r\n .schema('central')\r\n .from('modules')\r\n .select(`\r\n id, name, url,\r\n modules_alias!inner(alias)\r\n `)\r\n .eq('modules_alias.alias', alias)\r\n .eq('status', 'active')\r\n .order('name');\r\n \r\n if (error) {\r\n // Try to handle authentication errors\r\n const wasHandled = AuthErrorInterceptor.handleError(error);\r\n if (!wasHandled) {\r\n throw error;\r\n }\r\n return []; // Return empty array if auth error was handled\r\n }\r\n \r\n return data || [];\r\n },\r\n enabled: enabled && !!alias, // Só executa quando enabled for true E alias existir\r\n });\r\n};","// Asset exports for ForLogic Core library\r\n\r\n// Supabase Storage URLs for library assets\r\nconst DEFAULT_SUPABASE_PROJECT_ID = import.meta.env.VITE_SUPABASE_PROJECT_ID;\r\n\r\nexport const assets = {\r\n logo: `https://${DEFAULT_SUPABASE_PROJECT_ID}.supabase.co/storage/v1/object/public/library-assets/logo.svg`,\r\n smallLogo: `https://${DEFAULT_SUPABASE_PROJECT_ID}.supabase.co/storage/v1/object/public/library-assets/small.svg`\r\n};\r\n\r\n// Export for backward compatibility\r\nexport const logoSrc = assets.logo;\r\nexport const smallLogoSrc = assets.smallLogo;","import { useState, useEffect } from 'react';\r\nimport { ChevronDown, ExternalLink, Loader2, AlertCircle, PanelLeft, Grid3x3, Folder } from 'lucide-react';\r\nimport { Link, useLocation } from 'react-router-dom';\r\nimport { Sidebar, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarTrigger, useSidebar } from '../ui/sidebar';\r\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from '../ui/dropdown-menu';\r\nimport { useActiveModules } from '../../hooks/useActiveModules';\r\nimport { SidebarConfig } from '../../types/sidebar';\r\nimport { assets } from '../../assets';\r\n\r\n// Utilities para localStorage\r\nconst SIDEBAR_PINNED_KEY = 'forlogic-sidebar-pinned';\r\n\r\nconst getSidebarPinnedPreference = (): boolean => {\r\n try {\r\n const saved = localStorage.getItem(SIDEBAR_PINNED_KEY);\r\n return saved ? JSON.parse(saved) : false;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nconst setSidebarPinnedPreference = (isPinned: boolean): void => {\r\n try {\r\n localStorage.setItem(SIDEBAR_PINNED_KEY, JSON.stringify(isPinned));\r\n } catch {\r\n // Silently fail if localStorage is not available\r\n }\r\n};\r\ninterface Module {\r\n id: string;\r\n name: string;\r\n url?: string;\r\n status: 'active' | 'inactive';\r\n}\r\ninterface AppSidebarProps {\r\n config?: SidebarConfig;\r\n}\r\nexport function AppSidebar({\r\n config\r\n}: AppSidebarProps = {}) {\r\n const {\r\n state,\r\n open,\r\n setOpen\r\n } = useSidebar();\r\n const location = useLocation();\r\n const [dropdownOpen, setDropdownOpen] = useState(false);\r\n const [isPinned, setIsPinned] = useState(getSidebarPinnedPreference);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n // Controla se a sidebar deve estar aberta baseado no pin, hover e dropdown\r\n useEffect(() => {\r\n if (isPinned) {\r\n setOpen(true);\r\n } else if (isHovered || dropdownOpen) {\r\n setOpen(true);\r\n } else {\r\n setOpen(false);\r\n }\r\n }, [isPinned, isHovered, dropdownOpen, setOpen]);\r\n const handleMouseEnter = () => {\r\n if (!isPinned) {\r\n setIsHovered(true);\r\n }\r\n };\r\n const handleMouseLeave = () => {\r\n if (!isPinned) {\r\n setIsHovered(false);\r\n }\r\n };\r\n const handlePinToggle = () => {\r\n const newPinnedState = !isPinned;\r\n setIsPinned(newPinnedState);\r\n setSidebarPinnedPreference(newPinnedState);\r\n };\r\n\r\n // Só carrega os módulos quando o dropdown é aberto\r\n const {\r\n data: modules,\r\n isLoading,\r\n error\r\n } = useActiveModules({\r\n enabled: dropdownOpen\r\n });\r\n const isActive = (path: string) => location.pathname === path;\r\n const getColorVariant = (index: number) => {\r\n const colors = ['border-l-yellow-400', 'border-l-green-400', 'border-l-blue-400', 'border-l-red-400', 'border-l-purple-400', 'border-l-pink-400'];\r\n return colors[index % colors.length];\r\n };\r\n const handleModuleClick = (moduleUrl: string) => {\r\n const module = modules?.find(m => m.url === moduleUrl);\r\n if (module?.url) {\r\n window.open(module.url, '_blank');\r\n }\r\n };\r\n const renderModulesContent = () => {\r\n if (isLoading) {\r\n return <div className=\"flex items-center space-x-2 py-3 px-3 text-muted-foreground\">\r\n <Loader2 className=\"h-4 w-4 animate-spin\" />\r\n <span className=\"text-sm\">Carregando módulos...</span>\r\n </div>;\r\n }\r\n if (error) {\r\n return <div className=\"flex items-center space-x-2 py-3 px-3 text-destructive\">\r\n <AlertCircle className=\"h-4 w-4\" />\r\n <span className=\"text-sm\">Erro ao carregar módulos</span>\r\n </div>;\r\n }\r\n if (!modules || modules.length === 0) {\r\n return <div className=\"py-3 px-3 text-muted-foreground text-sm\">\r\n Nenhum módulo disponível\r\n </div>;\r\n }\r\n return <div className=\"space-y-2\">\r\n {modules.map((module: Module, index: number) => <div key={module.id} onClick={() => handleModuleClick(module.url || '')} className={`\r\n bg-muted/50 hover:bg-muted rounded-md p-3 cursor-pointer \r\n border-l-4 ${getColorVariant(index)} transition-colors duration-200\r\n `}>\r\n <div className=\"flex items-center justify-between\">\r\n <span className=\"font-medium text-foreground text-sm\">{module.name}</span>\r\n {module.url && <ExternalLink className=\"h-4 w-4 text-muted-foreground\" />}\r\n </div>\r\n </div>)}\r\n </div>;\r\n };\r\n return <Sidebar collapsible=\"icon\" onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} className=\"app-sidebar transition-all duration-300 ease-in-out bg-white border-r border-gray-200 py-6 px-3\">\r\n <SidebarHeader className=\"p-0 gap-0\">\r\n {/* Logo + Pin Button Section */}\r\n <div className=\"flex items-center justify-between h-[34px]\">\r\n {open ? <>\r\n <div className=\"flex items-center pl-[12px]\">\r\n <img src={assets.logo} alt=\"Logo\" className=\"h-6 max-w-full object-contain\" />\r\n </div>\r\n <button onClick={handlePinToggle} className={`h-8 w-8 flex items-center justify-center rounded-md transition-colors duration-200 ${isPinned ? 'bg-primary text-primary-foreground' : 'hover:bg-muted text-muted-foreground'}`}>\r\n <PanelLeft className=\"h-4 w-4\" />\r\n </button>\r\n </> : <div className=\"flex items-center justify-center w-full h-[34px]\">\r\n <img src={assets.smallLogo} alt=\"Logo\" className=\"h-[34px] w-[34px] object-contain\" />\r\n </div>}\r\n </div>\r\n \r\n {/* Modules Dropdown */}\r\n <div className=\"mt-2 pt-0\">\r\n <DropdownMenu onOpenChange={setDropdownOpen}>\r\n <DropdownMenuTrigger asChild>\r\n {open ? <div className=\"bg-muted hover:bg-muted/80 text-foreground font-medium text-sm flex items-center justify-between cursor-pointer transition-all duration-200 h-8 px-3 gap-3 rounded-md w-full\">\r\n <div className=\"flex items-center gap-2 min-w-0\">\r\n <img src=\"https://ccjfvpnndclajkleyqkc.supabase.co/storage/v1/object/public/library-assets/composit.svg\" alt=\"Menu\" className=\"h-6 w-6 text-muted-foreground flex-shrink-0\" />\r\n <span className=\"truncate group-data-[collapsible=icon]:hidden\">{config?.appName || \"Título do módulo\"}</span>\r\n </div>\r\n <ChevronDown className=\"h-6 w-6 flex-shrink-0 text-muted-foreground\" />\r\n </div> : <div className=\"flex items-center justify-center w-full h-8 bg-muted hover:bg-muted/80 rounded-md cursor-pointer transition-all duration-200 p-[5px]\">\r\n <ChevronDown className=\"h-6 w-6 text-muted-foreground\" />\r\n </div>}\r\n </DropdownMenuTrigger>\r\n \r\n <DropdownMenuContent className={open ? \"w-80 bg-white rounded-lg shadow-lg border border-gray-200 p-4 z-50\" : \"w-[58px] bg-white rounded-lg shadow-lg border border-gray-200 p-2 z-50\"} align={open ? \"start\" : \"center\"}>\r\n {renderModulesContent()}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n </div>\r\n </SidebarHeader>\r\n \r\n <SidebarContent>\r\n <SidebarGroup className=\"p-0 mt-6\">\r\n <SidebarGroupContent>\r\n <SidebarMenu className=\"space-y-2\">\r\n {config?.navigation?.map(item => <SidebarMenuItem key={item.path}>\r\n <SidebarMenuButton asChild isActive={isActive(item.path)} size=\"lg\" className=\"h-10\">\r\n <Link to={item.path} className=\"flex w-full items-center gap-3\">\r\n <span className=\"grid place-items-center h-[34px] w-[34px] p-[5px]\">\r\n <item.icon className=\"h-5 w-4\" />\r\n </span>\r\n <span className=\"font-medium sidebar-text group-data-[collapsible=icon]:hidden\">{item.label}</span>\r\n </Link>\r\n </SidebarMenuButton>\r\n </SidebarMenuItem>)}\r\n </SidebarMenu>\r\n </SidebarGroupContent>\r\n </SidebarGroup>\r\n </SidebarContent>\r\n </Sidebar>;\r\n}\r\nexport default AppSidebar;","// ============= SIMPLE ERROR BOUNDARY =============\r\n\r\nimport React, { Component, ReactNode } from 'react';\r\nimport { errorService } from '../services/ErrorService';\r\nimport { Card, CardContent, CardHeader, CardTitle } from './ui/card';\r\nimport { Button } from './ui/button';\r\nimport { AlertTriangle } from 'lucide-react';\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n}\r\n\r\ninterface State {\r\n hasError: boolean;\r\n error?: Error;\r\n}\r\n\r\nexport class ErrorBoundary extends Component<Props, State> {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error): State {\r\n return { hasError: true, error };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\r\n errorService.handleError(error, false);\r\n console.error('ErrorBoundary caught an error:', error, errorInfo);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n if (this.props.fallback) {\r\n return this.props.fallback;\r\n }\r\n\r\n return (\r\n <div className=\"flex items-center justify-center min-h-screen p-4\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader className=\"text-center\">\r\n <div className=\"flex justify-center mb-4\">\r\n <AlertTriangle className=\"h-12 w-12 text-destructive\" />\r\n </div>\r\n <CardTitle>Algo deu errado</CardTitle>\r\n </CardHeader>\r\n <CardContent className=\"text-center space-y-4\">\r\n <p className=\"text-muted-foreground\">\r\n Ocorreu um erro inesperado. Tente recarregar a página.\r\n </p>\r\n <Button \r\n onClick={() => window.location.reload()}\r\n className=\"w-full\"\r\n >\r\n Recarregar Página\r\n </Button>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;","import { ReactNode } from 'react';\r\nimport { SidebarProvider } from '../ui/sidebar';\r\nimport AppHeader from './AppHeader';\r\nimport { AppSidebar } from './AppSidebar';\r\nimport { SidebarConfig } from '../../types/sidebar';\r\nimport { NavigationProvider } from '../../contexts/NavigationContext';\r\n\r\ninterface AppLayoutProps {\r\n children: ReactNode;\r\n sidebar?: ReactNode;\r\n sidebarConfig?: SidebarConfig;\r\n showHeader?: boolean;\r\n}\r\n\r\nexport function AppLayout({\r\n children,\r\n sidebar,\r\n sidebarConfig,\r\n showHeader = true\r\n}: AppLayoutProps) {\r\n const sidebarComponent = sidebar || <AppSidebar config={sidebarConfig} />;\r\n \r\n return (\r\n <NavigationProvider config={sidebarConfig}>\r\n <SidebarProvider\r\n defaultOpen={false}\r\n style={\r\n {\r\n '--sidebar-width': '240px',\r\n '--sidebar-width-icon': '58px'\r\n } as React.CSSProperties\r\n }\r\n >\r\n <div className=\"min-h-screen flex w-full\">\r\n {sidebarComponent}\r\n <main className=\"flex-1 flex flex-col min-h-screen\">\r\n {showHeader && (\r\n <div className=\"flex-shrink-0\">\r\n <AppHeader />\r\n </div>\r\n )}\r\n <div className=\"flex-1 overflow-y-auto bg-gray-50\">\r\n {children}\r\n </div>\r\n </main>\r\n </div>\r\n </SidebarProvider>\r\n </NavigationProvider>\r\n );\r\n}","import { useEffect, useState } from 'react';\r\nimport { Card, CardContent, CardHeader, CardTitle } from '../../components/ui/card';\r\nimport { Spinner } from '../../components/ui/spinner';\r\nimport { Alert, AlertDescription } from '../../components/ui/alert';\r\nimport { Button } from '../../components/ui/button';\r\nimport { useAuth } from '../contexts/AuthContext';\r\nimport { AlertCircle, RefreshCw } from 'lucide-react';\r\n\r\nexport const CallbackPage = () => {\r\n const { processCallback } = useAuth();\r\n const [error, setError] = useState<string | null>(null);\r\n const [isRetrying, setIsRetrying] = useState(false);\r\n\r\n useEffect(() => {\r\n const handleCallback = async () => {\r\n try {\r\n // Processar callback (toda validação está no AuthService)\r\n const success = await processCallback();\r\n if (success) {\r\n // Limpar URL e redirecionar\r\n window.history.replaceState({}, document.title, '/');\r\n \r\n // Verificar se há página de origem salva\r\n const returnUrl = localStorage.getItem('auth_return_url');\r\n if (returnUrl) {\r\n localStorage.removeItem('auth_return_url');\r\n window.location.href = returnUrl;\r\n } else {\r\n window.location.href = '/';\r\n }\r\n } else {\r\n setError('Falha na autenticação. Tente novamente.');\r\n }\r\n } catch (err: any) {\r\n console.error('❌ [CallbackPage] Erro no processamento:', err);\r\n setError(err?.message || 'Erro durante a autenticação. Tente novamente.');\r\n }\r\n };\r\n\r\n handleCallback();\r\n }, [processCallback]);\r\n\r\n const handleRetry = async () => {\r\n setIsRetrying(true);\r\n setError(null);\r\n \r\n try {\r\n const success = await processCallback();\r\n if (!success) {\r\n setError('Falha na autenticação. Tente novamente.');\r\n }\r\n } catch (err: any) {\r\n setError(err?.message || 'Erro ao tentar novamente.');\r\n } finally {\r\n setIsRetrying(false);\r\n }\r\n };\r\n\r\n const handleGoHome = () => {\r\n window.location.href = '/';\r\n };\r\n\r\n if (error) {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary/5 to-secondary/5\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader className=\"text-center\">\r\n <CardTitle className=\"text-xl font-semibold text-destructive flex items-center justify-center gap-2\">\r\n <AlertCircle className=\"h-5 w-5\" />\r\n Erro na Autenticação\r\n </CardTitle>\r\n </CardHeader>\r\n <CardContent className=\"space-y-4\">\r\n <Alert variant=\"destructive\">\r\n <AlertDescription>\r\n {error}\r\n </AlertDescription>\r\n </Alert>\r\n \r\n <div className=\"text-sm text-muted-foreground\">\r\n <p>Se o problema persistir, verifique se a URL de callback está configurada corretamente no provedor OAuth.</p>\r\n </div>\r\n\r\n <div className=\"flex gap-2\">\r\n <Button \r\n onClick={handleRetry} \r\n disabled={isRetrying}\r\n className=\"flex-1\"\r\n >\r\n {isRetrying ? (\r\n <>\r\n <Spinner size=\"sm\" className=\"mr-2\" />\r\n Tentando...\r\n </>\r\n ) : (\r\n <>\r\n <RefreshCw className=\"h-4 w-4 mr-2\" />\r\n Tentar Novamente\r\n </>\r\n )}\r\n </Button>\r\n <Button \r\n onClick={handleGoHome}\r\n variant=\"outline\"\r\n className=\"flex-1\"\r\n >\r\n Voltar ao Início\r\n </Button>\r\n </div>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary/5 to-secondary/5\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader className=\"text-center\">\r\n <CardTitle className=\"text-xl font-semibold\">\r\n Processando Autenticação\r\n </CardTitle>\r\n </CardHeader>\r\n <CardContent className=\"text-center\">\r\n <div className=\"flex justify-center mb-4\">\r\n <Spinner size=\"lg\" />\r\n </div>\r\n <p className=\"text-muted-foreground\">\r\n Processando tokens e redirecionando...\r\n </p>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n );\r\n};","import { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"../../components/ui/card\";\r\nimport { Badge } from \"../../components/ui/badge\";\r\nimport { Skeleton } from \"../../components/ui/skeleton\";\r\nimport { Grid } from \"../../components/ui/grid\";\r\nimport { DataList } from \"../../components/ui/data-list\";\r\nimport { ExternalLink, Copy } from \"lucide-react\";\r\nimport { format } from \"date-fns\";\r\nimport { ptBR } from \"date-fns/locale\";\r\nimport { toast } from \"sonner\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { TableRowActions } from \"./TableRowActions\";\r\nimport type { CrudEntity, CrudManager, CrudPageConfig } from \"../../types\";\r\n\r\ninterface CrudCardsProps<T extends CrudEntity> {\r\n manager: Pick<CrudManager<T>, 'entities' | 'isLoading' | 'deleteEntity'>;\r\n config: Pick<CrudPageConfig<T>, 'cardFields'>;\r\n onEdit: (item: T) => void;\r\n onDelete?: (item: T) => void;\r\n}\r\n\r\nexport function CrudCards<T extends CrudEntity>({\r\n manager,\r\n config,\r\n onEdit,\r\n onDelete\r\n}: CrudCardsProps<T>) {\r\n const handleExternalLink = (url: string) => {\r\n try {\r\n const newWindow = window.open(url, '_blank');\r\n if (!newWindow || newWindow.closed || typeof newWindow.closed == 'undefined') {\r\n navigator.clipboard.writeText(url);\r\n toast.info(\"Link copiado para a área de transferência\");\r\n }\r\n } catch (error) {\r\n window.location.href = url;\r\n }\r\n };\r\n\r\n if (manager.isLoading) {\r\n return (\r\n <Grid>\r\n {Array.from({ length: 3 }).map((_, index) => (\r\n <Card key={index}>\r\n <CardHeader>\r\n <Skeleton className=\"h-4 w-3/4\" />\r\n <Skeleton className=\"h-3 w-1/2\" />\r\n </CardHeader>\r\n <CardContent>\r\n <div className=\"space-y-2\">\r\n <Skeleton className=\"h-3 w-full\" />\r\n <Skeleton className=\"h-3 w-2/3\" />\r\n </div>\r\n </CardContent>\r\n </Card>\r\n ))}\r\n </Grid>\r\n );\r\n }\r\n\r\n return (\r\n <DataList.Root>\r\n {manager.entities.map((entity) => (\r\n <DataList.Item key={entity.id} onClick={() => onEdit(entity)}>\r\n <CardHeader className=\"pb-3\">\r\n <div className=\"flex items-start justify-between\">\r\n <div className=\"flex-1 min-w-0\">\r\n <CardTitle className=\"text-base leading-6 truncate\">\r\n {(entity as any).title || (entity as any).name || 'Sem título'}\r\n </CardTitle>\r\n <CardDescription className=\"text-sm\">\r\n {format(new Date(entity.created_at), \"dd/MM/yyyy HH:mm\", { locale: ptBR })}\r\n </CardDescription>\r\n </div>\r\n <div className=\"flex items-center gap-2 ml-2\">\r\n {(entity as any).link && (\r\n <Button\r\n variant=\"external-link\"\r\n size=\"icon-xs\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleExternalLink((entity as any).link);\r\n }}\r\n title=\"Abrir link externo\"\r\n >\r\n <ExternalLink className=\"h-4 w-4\" />\r\n </Button>\r\n )}\r\n <div onClick={(e) => e.stopPropagation()}>\r\n <TableRowActions\r\n onEdit={() => onEdit(entity)}\r\n onDelete={onDelete ? () => onDelete(entity) : undefined}\r\n canDelete={!!onDelete}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </CardHeader>\r\n \r\n <CardContent className=\"pt-0\">\r\n <div className=\"space-y-2\">\r\n {config.cardFields?.map((field) => {\r\n const value = entity[field.key];\r\n if (!value) return null;\r\n \r\n return (\r\n <DataList.Field\r\n key={String(field.key)}\r\n label={field.label}\r\n value={field.render ? field.render(value, entity) : String(value)}\r\n />\r\n );\r\n })}\r\n </div>\r\n </CardContent>\r\n </DataList.Item>\r\n ))}\r\n </DataList.Root>\r\n );\r\n}","import { Button } from \"../../components/ui/button\";\r\nimport { Input } from \"../../components/ui/input\";\r\nimport { Stack } from \"../../components/ui/stack\";\r\nimport { X, Search } from \"lucide-react\";\r\nimport { useAuth } from '../../auth/contexts/AuthContext';\r\nimport type { CrudManager, CrudFilter, CrudEntity } from '../../types';\r\n\r\ninterface FilterBarProps<T extends CrudEntity> {\r\n manager: Pick<CrudManager<T>, 'searchTerm' | 'handleSearch' | 'clearFilters'>;\r\n filters: CrudFilter[];\r\n}\r\n\r\nexport function FilterBar<T extends CrudEntity>({\r\n manager,\r\n filters,\r\n}: FilterBarProps<T>) {\r\n const { isSearchVisible } = useAuth();\r\n const hasActiveFilters = manager.searchTerm;\r\n\r\n return (\r\n <Stack direction=\"column\" gap=\"md\" className=\"mb-6\">\r\n <Stack direction=\"row\" gap=\"md\" wrap className=\"flex-col sm:flex-row\">\r\n {/* Search */}\r\n {filters.some(f => f.type === 'search') && !isSearchVisible && (\r\n <div className=\"relative flex-1\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground h-4 w-4\" />\r\n <Input\r\n placeholder=\"Buscar...\"\r\n value={manager.searchTerm}\r\n onChange={(e) => manager.handleSearch(e.target.value)}\r\n className=\"pl-10\"\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Custom Filters */}\r\n {filters\r\n .filter(f => f.type === 'custom' && f.component)\r\n .map((filter, index) => {\r\n const CustomComponent = filter.component!;\r\n return (\r\n <div key={index} className=\"w-full sm:w-auto\">\r\n <CustomComponent {...filter.props} />\r\n </div>\r\n );\r\n })}\r\n\r\n {/* Clear Filters */}\r\n {hasActiveFilters && (\r\n <Button\r\n variant=\"outline\"\r\n onClick={manager.clearFilters}\r\n className=\"whitespace-nowrap\"\r\n >\r\n <X className=\"h-4 w-4 mr-2\" />\r\n Limpar Filtros\r\n </Button>\r\n )}\r\n </Stack>\r\n </Stack>\r\n );\r\n}","// ============= GENERIC ENTITY FORM =============\r\n\r\nimport React from 'react';\r\nimport { CrudForm } from './components/CrudForm';\r\nimport type { FormSection } from '../types';\r\nimport { useAuth } from '../auth/contexts/AuthContext';\r\n\r\ninterface GenericEntityFormProps<T = any> {\r\n open: boolean;\r\n onCancel: () => void;\r\n onSubmit: (data: T) => void;\r\n editingEntity?: any;\r\n isLoading?: boolean;\r\n title: string;\r\n editTitle: string;\r\n sections: FormSection[];\r\n transformData?: (data: any, alias: string) => T;\r\n}\r\n\r\nexport function GenericEntityForm<T = any>({\r\n open,\r\n onCancel,\r\n onSubmit,\r\n editingEntity,\r\n isLoading = false,\r\n title,\r\n editTitle,\r\n sections,\r\n transformData\r\n}: GenericEntityFormProps<T>) {\r\n const { alias } = useAuth();\r\n\r\n const handleSubmit = (data: any) => {\r\n if (transformData) {\r\n const processedData = transformData(data, alias || '');\r\n onSubmit(processedData);\r\n } else {\r\n // Default transformation - add alias and preserve id for editing\r\n const processedData = {\r\n ...data,\r\n alias: alias || ''\r\n };\r\n // Preserve id if editing\r\n if (editingEntity?.id) {\r\n processedData.id = editingEntity.id;\r\n }\r\n onSubmit(processedData);\r\n }\r\n };\r\n\r\n return (\r\n <CrudForm\r\n open={open}\r\n title={editingEntity ? editTitle : title}\r\n sections={sections}\r\n initialData={editingEntity}\r\n onSubmit={handleSubmit}\r\n onCancel={onCancel}\r\n isLoading={isLoading}\r\n submitButtonText={editingEntity ? \"Atualizar\" : \"Salvar\"}\r\n />\r\n );\r\n}","import { cn } from \"../../utils\"\r\nimport { ReactNode } from \"react\"\r\nimport { Spinner } from \"./spinner\"\r\n\r\ninterface LoadingStateProps {\r\n isLoading: boolean\r\n children: ReactNode\r\n className?: string\r\n type?: \"spinner\" | \"skeleton\" | \"overlay\"\r\n size?: \"sm\" | \"md\" | \"lg\"\r\n}\r\n\r\nexport function LoadingState({\r\n isLoading,\r\n children,\r\n className,\r\n type = \"spinner\",\r\n size = \"md\"\r\n}: LoadingStateProps) {\r\n if (!isLoading) {\r\n return <>{children}</>\r\n }\r\n\r\n if (type === \"overlay\") {\r\n return (\r\n <div className={cn(\"relative\", className)}>\r\n {children}\r\n <div className=\"absolute inset-0 bg-background/50 backdrop-blur-sm flex items-center justify-center z-10\">\r\n <Spinner size={size} />\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n if (type === \"skeleton\") {\r\n return (\r\n <div className={cn(\"animate-pulse\", className)}>\r\n <div className=\"bg-muted rounded-md h-full w-full\" />\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center py-8\", className)}>\r\n <Spinner size={size} />\r\n </div>\r\n )\r\n}","import React from 'react';\r\nimport { Button } from '../../components/ui/button';\r\nimport { Card, CardContent, CardHeader, CardTitle } from '../../components/ui/card';\r\nimport { isDevEnvironment } from '../../config';\r\nimport { AuthService } from '../services/AuthService';\r\n\r\nexport const LoginPage: React.FC = () => {\r\n const handleLogin = async () => {\r\n const isDev = isDevEnvironment();\r\n \r\n if (isDev) {\r\n await AuthService.loginDev();\r\n } else {\r\n AuthService.loginProd();\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary/5 to-secondary/5\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader className=\"text-center\">\r\n <CardTitle className=\"text-2xl font-bold\">\r\n Acesso ao Sistema\r\n </CardTitle>\r\n </CardHeader>\r\n <CardContent className=\"text-center space-y-4\">\r\n <p className=\"text-muted-foreground\">\r\n Faça login para acessar o sistema\r\n </p>\r\n <Button \r\n onClick={handleLogin}\r\n className=\"w-full\"\r\n size=\"lg\"\r\n >\r\n {isDevEnvironment() \r\n ? 'Login Desenvolvimento' \r\n : 'Entrar com Qualiex'}\r\n </Button>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n );\r\n};","import { ReactNode } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from \"./breadcrumb\";\r\ninterface BreadcrumbItem {\r\n label: string;\r\n href?: string;\r\n isCurrentPage?: boolean;\r\n}\r\ninterface PageBreadcrumbProps {\r\n items: BreadcrumbItem[];\r\n maxItems?: number;\r\n className?: string;\r\n}\r\nexport function PageBreadcrumb({\r\n items,\r\n maxItems = 3,\r\n className\r\n}: PageBreadcrumbProps) {\r\n const displayItems = items.length > maxItems ? [items[0], ...items.slice(-(maxItems - 1))] : items;\r\n const hasCollapsed = items.length > maxItems;\r\n return <Breadcrumb className={className}>\r\n \r\n </Breadcrumb>;\r\n}\r\n\r\n// Hook para gerar breadcrumbs automaticamente baseado na rota\r\nexport function useRouteBreadcrumbs() {\r\n const location = useLocation();\r\n const generateBreadcrumbs = (): BreadcrumbItem[] => {\r\n const pathSegments = location.pathname.split('/').filter(Boolean);\r\n const breadcrumbs: BreadcrumbItem[] = [{\r\n label: 'Exemplos',\r\n href: '/'\r\n }];\r\n let currentPath = '';\r\n pathSegments.forEach((segment, index) => {\r\n currentPath += `/${segment}`;\r\n const isLast = index === pathSegments.length - 1;\r\n\r\n // Capitalize and replace dashes with spaces\r\n const label = segment.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\r\n breadcrumbs.push({\r\n label,\r\n href: isLast ? undefined : currentPath,\r\n isCurrentPage: isLast\r\n });\r\n });\r\n return breadcrumbs;\r\n };\r\n return generateBreadcrumbs();\r\n}","import { useTheme } from \"next-themes\"\r\nimport { Toaster as Sonner, toast } from \"sonner\"\r\n\r\ntype ToasterProps = React.ComponentProps<typeof Sonner>\r\n\r\nconst Toaster = ({ ...props }: ToasterProps) => {\r\n const { theme = \"system\" } = useTheme()\r\n\r\n return (\r\n <Sonner\r\n theme={theme as ToasterProps[\"theme\"]}\r\n className=\"toaster group\"\r\n toastOptions={{\r\n classNames: {\r\n toast:\r\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\r\n description: \"group-[.toast]:text-muted-foreground\",\r\n actionButton:\r\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\r\n cancelButton:\r\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\r\n },\r\n }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Toaster, toast }\r\n","import { ReactNode } from \"react\"\r\nimport { cn } from \"../../utils\"\r\nimport { ScrollArea } from \"./scroll-area\"\r\nimport { Separator } from \"./separator\"\r\n\r\ninterface TabPageLayoutProps {\r\n children: ReactNode\r\n className?: string\r\n}\r\n\r\ninterface TabPageHeaderProps {\r\n title: string | ReactNode\r\n description?: string\r\n actions?: ReactNode\r\n className?: string\r\n}\r\n\r\ninterface TabPageContentProps {\r\n children: ReactNode\r\n className?: string\r\n}\r\n\r\nexport function TabPageLayout({ children, className }: TabPageLayoutProps) {\r\n return (\r\n <div className={cn(\"flex flex-col h-full\", className)}>\r\n <ScrollArea className=\"flex-1\">\r\n <div className=\"space-y-6 p-6\">\r\n {children}\r\n </div>\r\n </ScrollArea>\r\n </div>\r\n )\r\n}\r\n\r\nexport function TabPageHeader({ \r\n title, \r\n description, \r\n actions, \r\n className \r\n}: TabPageHeaderProps) {\r\n return (\r\n <div className={cn(\"space-y-4\", className)}>\r\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\r\n <div className=\"space-y-1\">\r\n <h2 className=\"text-2xl font-bold tracking-tight\">{title}</h2>\r\n {description && (\r\n <p className=\"text-muted-foreground text-sm\">{description}</p>\r\n )}\r\n </div>\r\n {actions && (\r\n <div className=\"flex items-center gap-2 flex-wrap\">\r\n {actions}\r\n </div>\r\n )}\r\n </div>\r\n <Separator />\r\n </div>\r\n )\r\n}\r\n\r\nexport function TabPageContent({ children, className }: TabPageContentProps) {\r\n return (\r\n <div className={cn(\"space-y-6\", className)}>\r\n {children}\r\n </div>\r\n )\r\n}","import { useToast } from \"../../hooks/use-toast\"\r\nimport {\r\n Toast,\r\n ToastClose,\r\n ToastDescription,\r\n ToastProvider,\r\n ToastTitle,\r\n ToastViewport,\r\n} from \"./toast\"\r\n\r\nexport function Toaster() {\r\n const { toasts } = useToast()\r\n\r\n return (\r\n <ToastProvider>\r\n {toasts.map(function ({ id, title, description, action, ...props }) {\r\n return (\r\n <Toast key={id} {...props}>\r\n <div className=\"grid gap-1\">\r\n {title && <ToastTitle>{title}</ToastTitle>}\r\n {description && (\r\n <ToastDescription>{description}</ToastDescription>\r\n )}\r\n </div>\r\n {action}\r\n <ToastClose />\r\n </Toast>\r\n )\r\n })}\r\n <ToastViewport />\r\n </ToastProvider>\r\n )\r\n}\r\n","// ============= SIMPLIFIED CRUD PAGE GENERATOR =============\r\n\r\nimport React from 'react';\r\nimport { BaseCrudPage } from './BaseCrudPage';\r\nimport type { CrudPageConfig, CrudEntity, FormSection } from '../types';\r\n\r\ninterface SimpleCrudPageConfig<T extends CrudEntity> {\r\n entityName: string;\r\n entityNamePlural: string;\r\n columns: any[];\r\n formSections: FormSection[];\r\n cardFields?: any[];\r\n filters?: any[];\r\n}\r\n\r\ninterface CrudPageGeneratorConfig<T extends CrudEntity> {\r\n manager: any;\r\n config: SimpleCrudPageConfig<T>;\r\n onSave: (data: any) => void;\r\n onToggleStatus?: (item: T) => void;\r\n FormComponent?: React.ComponentType<any>;\r\n}\r\n\r\nexport function createCrudPage<T extends CrudEntity>(\r\n generatorConfig: CrudPageGeneratorConfig<T>\r\n) {\r\n const CrudPageComponent = () => {\r\n const { manager, config, onSave, onToggleStatus, FormComponent } = generatorConfig;\r\n \r\n const crudConfig: CrudPageConfig<T> = {\r\n entityName: config.entityName,\r\n entityNamePlural: config.entityNamePlural,\r\n filters: config.filters || [],\r\n columns: config.columns,\r\n cardFields: config.cardFields || []\r\n };\r\n\r\n return (\r\n <BaseCrudPage\r\n manager={manager}\r\n config={crudConfig}\r\n formSections={config.formSections}\r\n onSave={onSave}\r\n FormComponent={FormComponent}\r\n onToggleStatus={onToggleStatus}\r\n />\r\n );\r\n };\r\n\r\n return CrudPageComponent;\r\n}\r\n\r\n// ============= SIMPLIFIED SAVE HANDLER =============\r\n\r\nexport function createSimpleSaveHandler<T extends CrudEntity, TCreate, TUpdate>(\r\n manager: any,\r\n createTransform: (data: any) => TCreate,\r\n updateTransform: (data: any) => TUpdate\r\n) {\r\n return (data: any) => {\r\n if (data.id) {\r\n const updateData = updateTransform(data);\r\n manager.updateEntity(data.id, updateData);\r\n } else {\r\n const createData = createTransform(data);\r\n manager.createEntity(createData);\r\n }\r\n };\r\n}","// ============= SIMPLIFIED SERVICE API =============\r\n\r\nimport { createService } from '../services/BaseService';\r\nimport { useCrud } from './hooks/useCrud';\r\n\r\ninterface SimpleServiceConfig {\r\n tableName: string;\r\n entityName: string;\r\n schemaName?: string;\r\n searchFields?: string[];\r\n enableQualiexEnrichment?: boolean;\r\n}\r\n\r\nexport function createSimpleService<T extends { id: string; id_user?: string | null }, TInsert = any, TUpdate = any>(\r\n config: SimpleServiceConfig\r\n) {\r\n const service = createService<T, TInsert, TUpdate>({\r\n tableName: config.tableName,\r\n searchFields: config.searchFields || ['title'],\r\n schemaName: config.schemaName || 'central',\r\n entityName: config.entityName,\r\n enableQualiexEnrichment: config.enableQualiexEnrichment || true\r\n });\r\n\r\n const useCrudHook = (onSuccess?: () => void) => {\r\n return useCrud<T, TInsert, TUpdate>({\r\n queryKey: config.tableName,\r\n service: {\r\n ...service,\r\n async getAll(params: any = {}) {\r\n return await service.getAll({\r\n ...params\r\n });\r\n }\r\n },\r\n entityName: config.entityName,\r\n onSuccess\r\n });\r\n };\r\n\r\n return {\r\n service,\r\n useCrudHook\r\n };\r\n}","import { QueryClient } from '@tanstack/react-query';\r\n\r\ninterface QualiexCoreConfig {\r\n supabase: {\r\n url: string;\r\n anonKey: string;\r\n };\r\n theme?: 'light' | 'dark' | 'system';\r\n queryClient?: QueryClient;\r\n}\r\n\r\nexport function setupQualiexCore(config: QualiexCoreConfig) {\r\n // Setup automático do pacote\r\n const queryClient = config.queryClient || new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n retry: 1,\r\n refetchOnWindowFocus: false,\r\n },\r\n },\r\n });\r\n\r\n return {\r\n queryClient,\r\n config\r\n };\r\n}"],"names":["process","env","NODE_ENV","React","require$$0","REACT_ELEMENT_TYPE","Symbol","for","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","ReactSharedInternals","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","error","format","_len2","arguments","length","args","Array","_key2","level","ReactDebugCurrentFrame","stack","getStackAddendum","concat","argsWithFormat","map","item","String","unshift","Function","prototype","apply","call","console","printWarning","REACT_MODULE_REFERENCE","getContextName","type","displayName","getComponentNameFromType","tag","name","$$typeof","_context","outerType","innerType","wrapperName","functionName","getWrappedName","render","outerName","lazyComponent","payload","_payload","init","_init","x","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","assign","Object","disabledDepth","disabledLog","__reactDisabledLog","prefix","ReactCurrentDispatcher","describeBuiltInComponentFrame","source","ownerFn","undefined","Error","match","trim","componentFrameCache","reentry","PossiblyWeakMap","WeakMap","Map","describeNativeComponentFrame","fn","construct","control","frame","get","previousDispatcher","previousPrepareStackTrace","prepareStackTrace","current","log","info","warn","group","groupCollapsed","groupEnd","props","configurable","enumerable","value","writable","defineProperties","disableLogs","Fake","defineProperty","set","Reflect","sample","sampleLines","split","controlLines","s","c","_frame","replace","includes","reenableLogs","syntheticFrame","describeUnknownElementTypeFrameInDEV","isReactComponent","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","_owner","_source","setExtraStackFrame","isArrayImpl","isArray","a","testStringCoercion","checkKeyStringCoercion","e","willCoercionThrow","toStringTag","constructor","typeName","specialPropKeyWarningShown","specialPropRefWarningShown","ReactCurrentOwner","RESERVED_PROPS","key","ref","__self","__source","jsxDEV","config","maybeKey","self","propName","getter","getOwnPropertyDescriptor","isReactWarning","hasValidKey","hasValidRef","warnIfStringRefCannotBeAutoConverted","defaultProps","warnAboutAccessingKey","defineKeyPropWarningGetter","warnAboutAccessingRef","defineRefPropWarningGetter","_store","freeze","ReactElement","propTypesMisspellWarningShown","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","isValidElement","object","getDeclarationErrorAddendum","ownerHasKeyUseWarning","validateExplicitKey","parentType","validated","currentComponentErrorInfo","parentName","getCurrentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","maybeIterable","maybeIterator","getIteratorFn","entries","step","next","done","validatePropTypes","propTypes","typeSpecs","values","location","componentName","has","bind","typeSpecName","error$1","err","ex","message","checkPropTypes","PropTypes","getDefaultProps","isReactClassApproved","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","getModuleId","isValidElementType","keys","typeString","children","filter","k","beforeExample","join","fragment","validateFragmentProps","jsx","jsxs","reactJsxRuntime_development","Fragment","jsxRuntimeModule","exports","f","l","m","n","p","q","g","b","d","h","reactJsxRuntime_production_min","require$$1","cn","inputs","twMerge","clsx","trimTextFields","data","trimmed","buttonVariants","cva","variants","variant","default","destructive","outline","secondary","ghost","link","size","sm","lg","icon","defaultVariants","Button","forwardRef","className","asChild","Comp","Slot","Input","labelVariants","Label","LabelPrimitive","Root","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Dialog","DialogPrimitive","DialogTrigger","Trigger","DialogPortal","Portal","DialogClose","Close","DialogOverlay","Overlay","DialogContent","Content","X","DialogHeader","DialogFooter","DialogTitle","Title","DialogDescription","Description","Form","FormProvider","FormFieldContext","createContext","useFormField","fieldContext","useContext","itemContext","FormItemContext","getFieldState","formState","useFormContext","fieldState","id","formItemId","formDescriptionId","formMessageId","FormItem","useId","Provider","FormLabel","htmlFor","FormControl","FormMessage","body","Select","SelectPrimitive","SelectValue","Value","SelectTrigger","Icon","ChevronDown","SelectScrollUpButton","ScrollUpButton","ChevronUp","SelectScrollDownButton","ScrollDownButton","SelectContent","position","Viewport","SelectItem","Item","ItemIndicator","Check","ItemText","Separator","Checkbox","CheckboxPrimitive","Indicator","Textarea","badgeVariants","success","warning","Badge","sizeClasses","md","Spinner","Loader2","count","toastTimeouts","addToRemoveQueue","toastId","timeout","setTimeout","delete","dispatch","reducer","state","action","toasts","toast","slice","t","forEach","open","listeners","memoryState","listener","Number","MAX_SAFE_INTEGER","toString","dismiss","onOpenChange","update","useToast","setState","useState","useEffect","push","index","indexOf","splice","ToastProvider","ToastPrimitives","ToastViewport","toastVariants","Toast","ToastAction","Action","ToastClose","ToastTitle","ToastDescription","STORAGE_KEYS","TokenManager","setAccessToken","token","localStorage","setItem","getAccessToken","getItem","setIdToken","getIdToken","getSupabaseToken","setOAuthState","sessionStorage","getOAuthState","clearOAuthState","removeItem","setOAuthNonce","nonce","getOAuthNonce","clearOAuthNonce","setSelectedAlias","alias","getSelectedAlias","clearSelectedAlias","generateOAuthState","generateOAuthNonce","randomBytes","Uint8Array","crypto","getRandomValues","btoa","fromCharCode","hasAllTokens","setSupabaseToken","_clearValidationCache","areAllTokensValid","accessToken","idToken","supabaseToken","isTokenExpired","clearExpiredTokens","clearedAny","clearAll","setManualLogout","isManualLogout","clearManualLogout","JSON","parse","atob","exp","Date","now","_validationCache","isValid","timestamp","cacheValidityMs","isSupabaseTokenValid","_handleExpiredToken","getValidSupabaseToken","window","href","extractTokenData","user_alias","companyId","company_id","startsWith","test","coField","parts","getCompanyId","tokenData","getCurrentCompanyId","getAllCompaniesData","companies","errorService","__publicField","this","handleError","showToast","errors","shouldShowToast","title","description","lastToastTime","toastCount","getErrors","clearErrors","SUPABASE_URL","VITE_SUPABASE_URL","SUPABASE_PUBLISHABLE_KEY","VITE_SUPABASE_PUBLISHABLE_KEY","_SupabaseSingleton","instanceCount","client","createClientWithToken","headers","apikey","isTokenValid","createClient","auth","persistSession","autoRefreshToken","storage","global","getInstance","instance","getClient","isRegenerating","attemptTokenRegeneration","finalToken","currentToken","selectedAlias","AuthService","Promise","resolve","then","AuthService$1","newToken","generateSupabaseToken","Math","floor","SupabaseSingleton","getSupabaseClient","qualiexApi","VITE_QUALIEX_API_URL","makeApiCall","endpoint","params","url","URL","baseUrl","searchParams","append","response","fetch","method","Authorization","Accept","ok","status","statusText","json","mapToQualiexUser","userData","userId","ID","userName","userEmail","fetchUsers","search","filterStatus","fetchUserById","find","user","getUsers","QualiexEnrichmentService","enrichWithResponsibleNames","entities","options","entityName","entity","responsible_name","id_user","qualiexUsers","entitiesWithResponsibleNames","responsibleUser","AUTH_CONFIG","oauth","authUrl","VITE_OAUTH_AUTH_URL","clientId","VITE_OAUTH_CLIENT_ID","responseType","scope","CRUD_CONFIG","pagination","defaultPageSize","pageSizeOptions","sorting","defaultField","defaultDirection","SEARCH_CONFIG","debounceDelay","isDevEnvironment","origin","DEV","QUALIEX_CONFIG","enableUserEnrichment","enableUsersApi","getQualiexConfig","MESSAGES","created","updated","deleted","create","load","VIRTUAL_FIELDS","createService","searchFields","schemaName","tableName","configSearchFields","selectFields","configSchemaName","enableQualiexEnrichment","createQuery","schema","from","getAll","sortField","sortDirection","page","limit","additionalFilters","query","select","eq","in","operator","not","searchConditions","field","or","buildSearchQuery","order","ascending","to","range","buildPaginatedQuery","totalPages","ceil","currentPage","totalItems","itemsPerPage","hasNextPage","hasPreviousPage","createPaginatedResponse","qualiexConfig","some","largeParams","largeResponse","sortedData","sort","aValue","bValue","comparison","localeCompare","sensitivity","sortData","paginatedResult","startIndex","endIndex","paginatedData","totalCount","paginateData","enrichedData","getById","maybeSingle","trimmedPayload","cleanPayload","reduce","acc","insert","single","updateData","updated_at","toISOString","is_removed","useCrud","queryKey","service","onSuccess","setSearchParams","useSearchParams","queryClient","useQueryClient","searchTerm","parseInt","debouncedSearch","queryParams","useMemo","queryFn","useCallback","useQuery","createMutation","useMutation","mutationFn","invalidateQueries","onError","updateMutation","deleteMutation","updateParams","newParams","fromEntries","handleSearch","handleSort","handlePageChange","newPage","handleLimitChange","newLimit","clearFilters","isLoading","isCreating","isPending","isUpdating","isDeleting","createEntity","mutate","updateEntity","deleteEntity","handleItemsPerPageChange","refetch","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Cancel","DeleteConfirmationDialog","onConfirm","confirmationText","setConfirmationText","handleCancel","isConfirmationValid","onChange","target","placeholder","onClick","disabled","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Skeleton","TableSkeleton","rows","columns","_","j","CardSkeleton","variantIcons","FileX","Search","AlertCircle","EmptyState","IconComponent","label","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","Group","DropdownMenuPortal","DropdownMenuSub","Sub","DropdownMenuRadioGroup","RadioGroup","DropdownMenuSubTrigger","inset","SubTrigger","ChevronRight","DropdownMenuSubContent","SubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","CheckboxItem","DropdownMenuRadioItem","RadioItem","Circle","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","ActionMenuItems","onEdit","onDelete","onToggleStatus","isActive","canDelete","renderAs","items","editItem","Edit","toggleItem","PowerOff","Power","deleteItem","Trash2","TableRowActions","EllipsisVertical","align","stopPropagation","CrudTable","manager","onView","renderActions","isMobile","setIsMobile","contextMenu","setContextMenu","checkMobile","innerWidth","addEventListener","removeEventListener","handleClickOutside","document","columnWidths","totalMinWidth","columnConfigs","column","width","calculatedWidth","isFixed","minWidth","weight","style","calculateColumnWidths","onContextMenu","preventDefault","clientX","y","clientY","header","is_actived","left","top","sortable","columnKey","ArrowUpDown","ArrowUp","ArrowDown","colSpan","useBaseForm","fields","initialData","onFormDataChange","formData","setFormData","setErrors","memoizedFields","isValidDate","isNaN","getTime","getDefaultFieldValue","defaultValue","calculateComputedValue","currentFormData","computedValue","validateField","required","validation","validator","custom","result","getAllFields","fieldList","allFields","newFormData","fieldValue","date","validateForm","newErrors","updateField","fieldName","prevData","newData","updatedData","changedFieldName","dependsOn","updateDependentFields","prevErrors","handleSubmit","onSubmit","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","PRESET_COLORS","ColorPicker","backgroundColor","color","ScrollArea","ScrollAreaPrimitive","ScrollBar","Corner","orientation","ScrollAreaScrollbar","ScrollAreaThumb","ICONS","Star","Heart","Home","User","Settings","Mail","Phone","Calendar","MapPin","Camera","Image","Music","Video","Book","Bookmark","Filter","Plus","Minus","ChevronLeft","ArrowLeft","ArrowRight","Clock","Bell","Info","HelpCircle","Download","Upload","Share","Copy","Save","FileText","Folder","FolderOpen","Archive","Lock","Unlock","Eye","EyeOff","Shield","Key","Zap","Flame","Sparkles","Award","Trophy","Target","IconPicker","setSearchTerm","filteredIcons","toLowerCase","SelectedIcon","initialize","isAuthenticated","selectedUnit","userAlias","storedAccessToken","storedIdToken","extractUserFromIdToken","extractCompaniesFromIdToken","defaultAlias","extractAliasFromAccessToken","storedSelectedAlias","newSupabaseToken","company","loginDev","supabase","functions","invoke","environment","access_token","id_token","callbackUrl","hash","loginProd","redirectUri","processCallback","storedAccess","aliasFromAccess","aliasFallback","supa","hashParams","URLSearchParams","substring","getParam","firstAlias","logout","decodeToken","decoded","bytes","charCodeAt","utf8String","TextDecoder","decode","subNewId","email","identifier","AuthErrorInterceptor","errorMessage","isAuthenticationError","statusCode","lowerMessage","keyword","wrapAsync","promise","AuthContext","useAuth","context","useQualiexUsers","companyAlias","enabled","retry","retryDelay","QualiexUserField","users","onValueChange","QualiexResponsibleSelectField","BaseForm","sections","onCancel","submitButtonText","usersData","activeSection","setActiveSection","flatMap","section","availableSections","condition","validActiveSection","currentSection","firstAvailable","renderField","rawValue","layout","subField","newValue","option","selectedResponsible","iconName","inputValue","min","readOnly","renderSectionContent","fill","viewBox","stroke","strokeLinecap","strokeLinejoin","strokeWidth","component","SectionComponent","formContent","sectionId","handleSectionChange","openState","CrudForm","startItem","endItem","ChevronsLeft","max","ChevronsRight","CrudPage","formSections","onSave","FormComponent","TableComponent","isFormOpen","setIsFormOpen","editingEntity","setEditingEntity","deleteConfirmation","setDeleteConfirmation","isOpen","entityId","handleEdit","handleSaveWithClose","handleDeleteClick","onNew","newButtonText","useCustomRouting","BaseCrudPage","setSearchVisible","refreshData","generateCrudConfig","sampleEntity","overrides","endsWith","formatLabel","inferColumnType","searchable","searchPlaceholder","enableCreate","enableEdit","enableDelete","enableSearch","enableFilters","keyLower","toUpperCase","crudPresets","product","category","alertVariants","Alert","role","AlertTitle","AlertDescription","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","Header","AccordionContent","AspectRatio","AspectRatioPrimitive","Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","Fallback","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","MoreHorizontal","buildFormatLongFn","defaultWidth","formats","buildLocalizeFn","valuesArray","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","pattern","findKey","valueCallback","rest","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatLong","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","weekday","getDay","yesterday","today","tomorrow","nextWeek","ptBR","code","formatDistance","tokenValue","addSuffix","formatRelative","_baseDate","_options","localize","ordinalNumber","dirtyNumber","number","unit","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","any","weekStartsOn","firstWeekContainsDate","classNames","showOutsideDays","DayPicker","locale","months","caption","caption_label","nav","nav_button","nav_button_previous","nav_button_next","table","head_row","head_cell","row","cell","day_range_end","day_selected","day_today","day_outside","day_disabled","day_range_middle","day_hidden","components","IconLeft","_props","IconRight","CarouselContext","useCarousel","Carousel","opts","setApi","plugins","carouselRef","api","useEmblaCarousel","axis","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","on","off","onKeyDownCapture","CarouselContent","CarouselItem","CarouselPrevious","CarouselNext","THEMES","light","dark","ChartContext","useChart","ChartContainer","uniqueId","chartId","ChartStyle","RechartsPrimitive","ResponsiveContainer","colorConfig","theme","dangerouslySetInnerHTML","__html","itemConfig","ChartTooltip","Tooltip","ChartTooltipContent","active","indicator","hideLabel","hideIndicator","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","dataKey","getPayloadConfigFromPayload","nestLabel","indicatorColor","toLocaleString","ChartLegend","Legend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","DataList","Field","FeedbackDialog","setOpen","feedbackUrl","VITE_FEEDBACK_APP_URL","module","buildFeedbackUrl","TriggerButton","MessageCircle","src","height","loading","colsClasses","gapClasses","xs","xl","Grid","cols","gap","InputOTP","containerClassName","OTPInput","InputOTPGroup","InputOTPSlot","inputOTPContext","OTPInputContext","char","hasFakeCaret","slots","InputOTPSeparator","Dot","Pagination","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","PaginationNext","PaginationEllipsis","Progress","ProgressPrimitive","transform","RadioGroupPrimitive","RadioGroupItem","eq_1","_assocIndexOf","listCacheClear","_listCacheClear","__data__","listCacheDelete","assocIndexOf","_listCacheDelete","pop","listCacheGet","_listCacheGet","require$$2","listCacheHas","_listCacheHas","require$$3","listCacheSet","_listCacheSet","require$$4","ListCache","clear","entry","_ListCache","freeGlobal","_freeGlobal","freeSelf","root","_root","_Symbol","getRawTag","objectProto","nativeObjectToString","symToStringTag","_getRawTag","isOwn","unmasked","objectToString","_objectToString","_baseGetTag","isObject_1","baseGetTag","isObject","isFunction_1","uid","coreJsData","_coreJsData","maskSrcKey","exec","IE_PROTO","_isMasked","func","funcToString","_toSource","baseIsNative","isFunction","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","_baseIsNative","getValue","_getValue","_getNative","getNative","_Map","nativeCreate","_nativeCreate","hashClear","_hashClear","hashDelete","_hashDelete","hashGet","_hashGet","hashHas","_hashHas","hashSet","_hashSet","Hash","_Hash","isKeyable","_isKeyable","_getMapData","mapCacheClear","_mapCacheClear","mapCacheDelete","getMapData","_mapCacheDelete","mapCacheGet","_mapCacheGet","mapCacheHas","_mapCacheHas","mapCacheSet","_mapCacheSet","MapCache","_MapCache","stackClear","_stackClear","stackDelete","_stackDelete","stackGet","_stackGet","stackHas","_stackHas","stackSet","_stackSet","pairs","LARGE_ARRAY_SIZE","require$$5","Stack","_Stack","setCacheAdd","_setCacheAdd","setCacheHas","_setCacheHas","SetCache","add","_SetCache","arraySome","_arraySome","cacheHas","_cacheHas","cache","_equalArrays","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","_Uint8Array","equalArrays","mapToArray","_mapToArray","setToArray","_setToArray","symbolProto","symbolValueOf","valueOf","_equalByTag","byteLength","byteOffset","buffer","convert","stacked","isArray_1","arrayPush","_arrayPush","offset","_baseGetAllKeys","keysFunc","symbolsFunc","arrayFilter","_arrayFilter","resIndex","stubArray","stubArray_1","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","_getSymbols","symbol","isObjectLike_1","baseIsArguments","isObjectLike","_baseIsArguments","isArguments","isArguments_1","stubFalse","stubFalse_1","freeExports","nodeType","freeModule","Buffer","isBuffer","isLength_1","baseIsTypedArray","isLength","typedArrayTags","_baseIsTypedArray","baseUnary","_baseUnary","nodeUtil","freeProcess","require","types","binding","nodeIsTypedArray","isTypedArray","isTypedArray_1","baseTimes","_baseTimes","iteratee","isIndex","reIsUint","_isIndex","_arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","nativeKeys","_overArg","arg","_nativeKeys","isPrototype","_isPrototype","Ctor","_baseKeys","arrayLikeKeys","baseKeys","isArrayLike","isArrayLike_1","keys_1","getAllKeys","baseGetAllKeys","getSymbols","_getAllKeys","_equalObjects","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","DataView","_DataView","_Promise","Set","_Set","_WeakMap","require$$6","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","_getTag","baseIsEqualDeep","equalByTag","equalObjects","require$$7","argsTag","arrayTag","objectTag","_baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","_baseIsEqual","baseIsEqual","isEqual_1","factory","modules","installedModules","__webpack_require__","moduleId","o","__esModule","property","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","register","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","extendStatics","__extends","setPrototypeOf","__proto__","__","ParchmentError","_super","_this","attributes","classes","tags","ANY","Node","TEXT_NODE","LEVEL","BLOCK","INLINE","HTMLElement","names","getAttribute","tagName","TYPE","DATA_KEY","input","BlotClass","bubble","blot","parentNode","Definitions","_i","Definition","blotName","attrName","keyName","diff","equal","extend","op","NULL_CHARACTER","Delta","ops","text","newOp","retain","lastOp","chop","partition","passed","failed","initial","changeLength","elem","start","end","Infinity","iter","hasNext","nextOp","compose","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","delta","thisOp","otherOp","strings","diffResult","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","priority","transformPosition","nextType","hasOwn","toStr","gOPD","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","copy","copyIsArray","clone","deep","BlockEmbed","bubbleFormats","_createClass","descriptor","Constructor","protoProps","staticProps","_get","receiver","desc","parent","getPrototypeOf","_extend2","_interopRequireDefault","_quillDelta2","_parchment2","_break2","_inline2","_text2","_classCallCheck","TypeError","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","_Parchment$Embed","domNode","attribute","BLOCK_ATTRIBUTE","def","block","insertBefore","insertAt","BLOCK_BLOT","_Parchment$Block","_this2","descendants","leaf","lines","shift","tail","head","remove","force","statics","defaultChild","allowedChildren","overload","expandConfig","_typeof","_slicedToArray","_arr","_n","_d","_e","_s","sliceIterator","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","_defineProperty","debug","Quill","container","html","innerHTML","classList","__quill","addContainer","setAttribute","scrollingContainer","emitter","scroll","whitelist","editor","selection","keyboard","addModule","clipboard","history","events","EDITOR_CHANGE","TEXT_CHANGE","toggle","isBlank","SCROLL_UPDATE","mutations","lastRange","modify","contents","setContents","disable","imports","path","overwrite","refNode","createElement","setRange","_this3","_overload","_overload2","deleteText","enable","scrollTop","focus","scrollIntoView","_this4","sources","API","getSelection","change","formatLine","formatText","setSelection","SILENT","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","getBoundingClientRect","bottom","right","getLength","_overload7","_overload8","getContents","getFormat","MAX_VALUE","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","contains","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","applied","applyDelta","_overload15","_overload16","Range","USER","_this11","userConfig","DEFAULTS","import","themeConfig","moduleConfig","moduleClass","toolbar","querySelector","modifier","strict","isEnabled","oldDelta","shiftRange","_emitter","_emitter2","emit","_map","pos","_map2","_map3","_map4","version","parchment","_Parchment$Inline","compare","BLOT","isolate","wrap","moveChildren","selfIndex","otherIndex","_parchment","TextBlot","_Parchment$Text","_eventemitter2","eventName","_len","_key","querySelectorAll","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","_ref","handler","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","levels","_console","namespace","ns","logger","newLevel","pSlice","objectKeys","deepEqual","actual","expected","isUndefinedOrNull","ka","kb","objEquiv","attributeBit","ATTRIBUTE","canAdd","removeAttribute","Code","_block2","_Inline","CodeBlock","_Block","textContent","frag","_descendant","descendant","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","lastIndexOf","appendChild","prev","optimize","removeChild","unwrap","TAB","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","image","list","bullet","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","textBlot","oldValue","CONTENTS","oldText","newText","combined","merged","_toConsumableArray","arr2","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","_format","nativeRange","collapsed","after","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","normalizeNative","normalized","normalizedToRange","activeElement","positions","indexes","_position","startContainer","endContainer","childNodes","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","first","last","scrollBounds","removeAllRanges","addRange","blur","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","build","reverse","makeBlot","forEachAt","criteria","_a","lengthLeft","detach","childBlot","refBlot","insertInto","memo","targetParent","inclusive","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","replaceChild","FormatBlot","replaceWith","replacement","wrapper","move","LeafBlot","INLINE_BLOT","lib","keepNull","Iterator","retOp","substr","_instanceof","nativeMap","nativeSet","nativePromise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","proto","reject","__isArray","__isRegExp","__getRegExpFlags","lastIndex","__isDate","allocUnsafe","keyChild","valueChild","entryChild","attrs","symbols","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","ignoreCase","multiline","clonePrototype","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_newlineIndex","getLines","observer","takeRecords","SHORTKEY","_quill2","navigator","platform","Keyboard","_Module","bindings","addBinding","ENTER","shiftKey","handleEnter","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","handleBackspace","handleDelete","handleDeleteRange","listen","evt","normalize","which","keyCode","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","every","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLine11","_quill$getLine13","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine17","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","ESCAPE","UP","DOWN","bold","italic","underline","outdent","tab","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","createTextNode","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","sanitize","_inline","Link","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","protocol","_keyboard2","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","buildPicker","display","togglePicker","escape","tabIndex","hasAttribute","selectItem","buildItem","selected","buildLabel","buildOptions","close","trigger","selectedIndex","Event","dispatchEvent","createEvent","initEvent","_embed2","_scroll2","_clipboard2","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","camelize","part","StyleAttributor","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","center","justify","background","blockquote","clean","direction","rtl","float","formula","ordered","check","script","sub","super","strike","video","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","changeDelta","undoDelta","delay","maxStack","deleteLength","changeIndex","endsWithNewlineChange","BaseTooltip","_colorPicker2","_iconPicker2","_picker2","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","tooltip","textbox","hide","pickers","picker","extendToolbar","buttons","icons","button","selects","fillSelect","handlers","edit","fileInput","files","reader","FileReader","onload","readAsDataURL","click","_Tooltip","boundsContainer","save","cancel","mode","preview","linkRange","restoreFocus","extractVideoUrl","LinkedList","nodes","cur","curNode","ret","callback","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","MutationObserver","observe","disconnect","records","mark","markParent","remaining","previousSibling","grandChild","InlineBlot","obj1","obj2","prop","isEqual","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","searchString","subjectString","isFinite","thisArg","execCommand","DIFF_DELETE","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","text1_a","text1_b","text2_a","text2_b","hm1","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","diff_bisect_","diff_compute_","diff_cleanupMerge","norm","current_pos","next_pos","split_pos","d_left","d_right","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","fix_cursor","compact","starts_with_pair_end","str","ends_with_pair_start","fixed_diffs","fix_emoji","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","pointer","count_delete","count_insert","text_delete","text_insert","changes","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","Events","EE","EventEmitter","_events","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","deltaEndsWith","ELEMENT_NODE","fontStyle","computeStyle","fontWeight","applyFormat","parseFloat","textIndent","matchAlias","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","selector","matcher","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","traverse","paste","pair","_pair","getComputedStyle","endText","childrenDelta","nextElementSibling","nodeHeight","offsetHeight","marginTop","marginBottom","offsetTop","whiteSpace","replacer","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_quill$selection$getR","prompt","addButton","groups","addSelect","_picker","_Picker","colorLabel","defaultItem","TEMPLATE","reference","offsetWidth","rootBounds","verticalShift","_base","_base2","_link2","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","show","_core2","_indent","_blockquote2","_header2","_list","_list2","_bold2","_italic2","_script2","_strike2","_underline2","_image2","_video2","_code","_formula2","_syntax2","_toolbar2","_bubble2","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","List","_Container","listEventHandler","_bold","Italic","_Bold","Script","Strike","Underline","_link","ATTRIBUTES","_BlockEmbed","FormulaBlot","_Embed","katex","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","timer","clearTimeout","interval","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft","__assign","__spreadArrays","il","r","jl","__importDefault","mod","react_1","react_dom_1","quill_1","ReactQuill","dirtyProps","cleanProps","generation","onEditorChange","rangeOrDelta","oldRangeOrDelta","_b","_c","onEditorChangeText","unprivilegedEditor","onEditorChangeSelection","isControlled","validateProps","Children","only","lastDeltaChangeSet","shouldComponentUpdate","nextProps","nextState","prevContents","getEditorContents","nextContents","isEqualValue","setEditorContents","setEditorReadOnly","shouldComponentRegenerate","componentDidMount","instantiateEditor","componentWillUnmount","destroyEditor","componentDidUpdate","prevProps","prevState","regenerationSnapshot","selection_1","editor_1","postpone","setEditorSelection","hookEditor","createEditor","getEditingArea","getEditorConfig","unhookEditor","getEditor","setEditorTabIndex","makeUnprivilegedEditor","getEditorSelection","isDelta","nextValue","sel","length_1","getHTML","editingArea","findDOMNode","renderEditingArea","preserveWhitespace","properties","cloneElement","onKeyPress","onKeyDown","onKeyUp","nextSelection","_f","currentSelection","hasGainedFocus","hasLostFocus","onChangeSelection","onFocus","onBlur","Component","uploadImageToSession","async","file","sessionId","handleClipboardImageWithSession","clipboardData","imageFile","detectRemovedImages","previousContent","currentContent","previousImages","extractImageSrcs","currentImages","img","markImageForDeletion","imageSrcs","articleId","detectRestoredImages","restoreImageFromDeleted","imageSrc","extractExternalImageUrls","content","imgRegex","urls","extractDataUrls","processHtmlWithAllImages","srcs","RichTextEditor","previousContentRef","useRef","cleanupTimeoutRef","imageHandler","onchange","imageUrl","handleContentChange","newContent","restoredImages","restoredUrl","removedImages","dataUrls","externalImages","totalImages","processImagesInBackground","processedHtml","handlePaste","kind","editorElement","border","borderRadius","decorative","SeparatorPrimitive","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","sheetVariants","SheetContent","SheetHeader","SheetFooter","SheetTitle","SheetDescription","TooltipProvider","TooltipPrimitive","TooltipTrigger","TooltipContent","SIDEBAR_STORAGE_KEY","SidebarContext","useSidebar","SidebarProvider","defaultOpen","openProp","setOpenProp","openMobile","setOpenMobile","_open","_setOpen","stored","toggleSidebar","contextValue","delayDuration","Sidebar","collapsible","SidebarTrigger","PanelLeft","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","hidden","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","random","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","Slider","SliderPrimitive","Track","Thumb","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","setRef","useComposedRefs","refs","hasCleanup","cleanups","cleanup","composeRefs","composeContextScopes","scopes","baseScope","createScope","scopeHooks","createScope2","useScope","scopeName","overrideScopes","nextScopes","nextScopes2","useLayoutEffect2","globalThis","useLayoutEffect","useInsertionEffect","useControllableState","defaultProp","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","setValue","prevValueRef","useUncontrolledState","isControlledRef","wasControlled","value2","Primitive","primitive","createSlot","forwardedRef","primitiveProps","SWITCH_NAME","createSwitchContext","createContextScopeDeps","defaultContexts","scopeContexts","defaultContext","contexts","rootComponentName","BaseContext","Context","consumerName","createContextScope","SwitchProvider","useSwitchContext","Switch","__scopeSwitch","checkedProp","defaultChecked","onCheckedChange","form","switchProps","setButton","composedRefs","hasConsumerStoppedPropagationRef","isFormControl","closest","setChecked","getState","prevChecked","isPropagationStopped","SwitchBubbleInput","bubbles","THUMB_NAME","SwitchThumb","thumbProps","span","previous","usePrevious","controlSize","setSize","resizeObserver","ResizeObserver","borderSizeEntry","borderSize","box","unobserve","useSize","inputProto","HTMLInputElement","pointerEvents","opacity","margin","SwitchPrimitives.Root","SwitchPrimitives.Thumb","alignClasses","stretch","justifyClasses","between","around","evenly","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","ActionButton","createRoutingHandlers","navigate","useNavigate","newPath","basePath","editPath","UserInfo","propSelectedUnit","onUnitChange","switchUnit","defaultCompany","authSelectedUnit","availableUnits","currentUnit","handleUnitChange","uniqueSortedUnits","uniqueUnitsMap","uniqueUnits","currentUnitInList","otherUnits","UserContent","Building2","RefreshCw","LogOut","NavigationContext","NavigationProvider","navigation","appName","useNavigation","usePageTitle","useLocation","currentRoute","pathname","useDebounce","debouncedValue","setDebouncedValue","timeoutRef","AppHeader","actions","pageTitle","isSearchVisible","clearSearch","setInputValue","debouncedSearchValue","cancelDebounce","complementaryText","handleSearchChange","useActiveModules","DEFAULT_SUPABASE_PROJECT_ID","VITE_SUPABASE_PROJECT_ID","assets","logo","smallLogo","logoSrc","smallLogoSrc","SIDEBAR_PINNED_KEY","getSidebarPinnedPreference","saved","AppSidebar","dropdownOpen","setDropdownOpen","isPinned","setIsPinned","isHovered","setIsHovered","getColorVariant","colors","onMouseEnter","onMouseLeave","alt","newPinnedState","stringify","setSidebarPinnedPreference","moduleUrl","handleModuleClick","ExternalLink","ErrorBoundary","hasError","getDerivedStateFromError","componentDidCatch","errorInfo","fallback","AlertTriangle","reload","sidebar","sidebarConfig","showHeader","sidebarComponent","authState","setAuthState","setIsSearchVisible","refreshTrigger","setRefreshTrigger","updateAuthState","newState","setLoading","resetAuthState","newSelectedUnit","visible","mounted","setInterval","clearInterval","authResult","initializeAuth","setError","isRetrying","setIsRetrying","replaceState","returnUrl","handleCallback","handleRetry","handleGoHome","created_at","newWindow","closed","writeText","handleExternalLink","cardFields","filters","hasActiveFilters","CustomComponent","Controller","editTitle","transformData","processedData","maxItems","checkTokenValidity","isDev","performAutoLogin","crud","detail","useTheme","Sonner","toastOptions","actionButton","cancelButton","generatorConfig","crudConfig","entityNamePlural","createTransform","updateTransform","createData","useCrudHook","wait","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","dateString","parseISO","toLocaleDateString","year","toLocaleTimeString","hour","minute","QueryClient","defaultOptions","queries","refetchOnWindowFocus","pathSegments","Boolean","breadcrumbs","currentPath","segment","isLast","word","isCurrentPage","generateBreadcrumbs","preset","presetConfig"],"mappings":"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","x_google_ignoreList":[0,1,2,59,60,61,62,63,64,65,66,67,68,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,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,179,180,181,182,183,184,185,186,187]}