rumious 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.cjs.js +2437 -14
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +505 -9
- package/dist/index.esm.js +2437 -15
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +505 -10
- package/dist/index.js +2437 -14
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +505 -9
- package/package.json +4 -4
package/dist/index.esm.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/render/context.js","../src/component/component.js","../src/dom/element.js","../src/jsx/index.js","../src/utils/checker.js","../src/component/element.js","../src/component/render.js","../src/render/index.js","../src/app/index.js","../src/state/reactive.js","../src/state/state.js","../src/state/watcher.js"],"sourcesContent":["export class RumiousRenderContext{\n constructor(target){\n this.target = target\n }\n \n \n}","import { RumiousRenderContext } from '../render/context.js';\n\nexport class RumiousComponent {\n constructor() {\n this.element = null;\n this.props = {};\n this.renderContext = new RumiousRenderContext(this);\n this.renderer = null;\n this.wrapped= null;\n }\n\n prepare(element, props, wrapped={}, renderer = null) {\n this.element = element;\n this.props = props;\n this.renderer = renderer;\n this.wrapped = wrapped;\n }\n\n template() { return {}; }\n\n requestRender() {\n let template = this.template();\n let fragment = this.renderer(template, document.createDocumentFragment(), this.renderContext);\n this.element.appendChild(fragment);\n this.onRender();\n }\n\n onCreate() {}\n onRender() {}\n onUpdate() {}\n onDestroy() {}\n}\n\nexport function isComponent(constructor) {\n return Object.getPrototypeOf(constructor) === RumiousComponent;\n}","export class RumiousElement {\n constructor(type, props, children = []) {\n this.type = type;\n this.props = props;\n this.children = children;\n }\n}\n\nexport class RumiousElementList{\n constructor(list){\n this.type = \"ELEMENT_LIST\"\n this.children = list\n }\n \n forEach(callback ){\n this.children.forEach(callback)\n }\n}","import { isComponent } from '../component/component.js';\nimport {RumiousElement,RumiousElementList} from '../dom/element.js';\n\n\nfunction createElement(type, props, ...children) {\n if (isComponent(type)) {\n return createComponent(type, props, children);\n }\n\n if (type === createFragment) {\n return createFragment(...children);\n }\n\n return new RumiousElement(type, props || {}, normalizeChildren(children));\n}\n\nfunction createTextElement(text) {\n return new RumiousElement(\"TEXT_ELEMENT\", { nodeValue: text }, []);\n}\n\nfunction createComponent(type, props, children) {\n return new RumiousElement(\"COMPONENT\", { component: type, ...props },new RumiousElementList(normalizeChildren(children)));\n}\n\nfunction createFragment(...children) {\n return new RumiousElement(\"FRAGMENT\", {}, normalizeChildren(children));\n}\n\nfunction normalizeChildren(children) {\n return children.map(child => (typeof child === \"object\" ? child : createTextElement(child)));\n}\n\nwindow.RUMIOUS_JSX_SUPPORT = {\n createElement,\n createFragment,\n};","export function isCamelCase(str) {\n const camelCaseRegex = /^[a-z]+([A-Z][a-z]*)*$/;\n return camelCaseRegex.test(str);\n}","export class RumiousComponentElement extends HTMLElement{\n constructor(){\n super();\n this.instance = null;\n }\n \n init(componentConstructor,props,wrapped={},renderer){\n this.instance = new componentConstructor();\n this.instance.prepare(this,props,wrapped,renderer);\n }\n \n connectedCallback(){\n this.instance.onCreate();\n this.instance.requestRender();\n }\n}\n\nexport function createComponentElement(){\n return document.createElement(\"a-component\");\n}\n\nwindow.customElements.define(\"a-component\",RumiousComponentElement);","import { createComponentElement } from './element.js';\n\nexport function renderComponent(componentConstructor, props, wrapped, renderer) {\n const componentElement = createComponentElement();\n componentElement.init(componentConstructor, props,wrapped, renderer);\n return componentElement;\n}\n","import { isCamelCase } from '../utils/checker.js';\nimport { renderComponent } from '../component/render.js';\nimport { isComponent } from '../component/component.js';\n\nexport function render(element, container, renderContext = {}) {\n if (!element) return container;\n\n let dom;\n\n if (element.type === \"COMPONENT\") {\n dom = renderComponent(element.props.component, element.props, element.children, render);\n container.appendChild(dom);\n return container;\n }\n\n if (element.type === \"FRAGMENT\" || element.type === \"ELEMENT_LIST\") {\n element.children.forEach(child => render(child, container, renderContext));\n return container;\n }\n\n if (element.type === \"TEXT_ELEMENT\") {\n dom = document.createTextNode(element.props.nodeValue);\n } else {\n dom = document.createElement(element.type);\n }\n\n Object.entries(element.props || {}).forEach(([name, value]) => {\n if (name === \"ref\") {\n renderContext.addRef?.(value);\n } else if (name.startsWith(\"on\") && isCamelCase(name)) {\n dom.addEventListener(name.substring(2).toLowerCase(), value);\n } else if (dom.nodeType === Node.TEXT_NODE) {\n dom.nodeValue = value;\n } else {\n dom.setAttribute(name, value);\n }\n });\n\n element.children.forEach(child => render(child, dom, renderContext));\n container.appendChild(dom);\n return container;\n}","import { RumiousRenderContext } from '../render/context.js';\nimport { render } from '../render/index.js';\n\nexport class RumiousApp {\n constructor(root = document.createElement(\"span\"), configs = {}) {\n this.root = root;\n this.configs = configs;\n this.renderContext = new RumiousRenderContext(this);\n }\n\n render(element) {\n render(element, this.root, this.renderContext);\n }\n\n}","export class RumiousReactor {\n constructor(target = null, bindings = []) {\n this.target = target;\n this.bindings = bindings;\n }\n\n react() {\n this.bindings.forEach((callback) => callback());\n }\n\n addBinding(fn) {\n this.bindings.push(fn);\n }\n}","import { RumiousReactor } from './reactive.js';\n\nexport class RumiousState {\n constructor(target, reactor = null) {\n this.target = target;\n this.reactor = reactor ?? new RumiousReactor(this, []);\n if (target && typeof target === 'object') {\n this.wrapProxy(target)\n } else {\n this._value = target;\n }\n }\n\n wrapProxy(target) {\n this._value = new Proxy(target, {\n get: (target, prop) => {\n const value = target[prop];\n return value && typeof value === 'object' ? new RumiousState(value, this.reactor).value : value;\n },\n set: (target, prop, value) => {\n if (value && typeof value === 'object') {\n value = new RumiousState(value, this.reactor).proxy;\n }\n this.reactor.react();\n target[prop] = value;\n return true;\n }\n });\n }\n\n\n set value(val) {\n if (val && typeof val === \"object\") {\n this.wrapProxy(val);\n } else {\n this._value = val;\n }\n this.reactor.react();\n }\n\n get value() {\n return this._value;\n }\n}\n\nexport function createState(value) {\n return new RumiousState(value);\n}","export function watcher(state, callback){\n state.reactor.addBinding(callback);\n}"],"names":["RumiousRenderContext","_createClass","target","_classCallCheck","RumiousComponent","element","props","renderContext","renderer","wrapped","key","value","prepare","arguments","length","undefined","template","requestRender","fragment","document","createDocumentFragment","appendChild","onRender","onCreate","onUpdate","onDestroy","isComponent","constructor","Object","getPrototypeOf","RumiousElement","type","children","RumiousElementList","list","forEach","callback","createElement","_len","Array","_key","createComponent","createFragment","apply","normalizeChildren","createTextElement","text","nodeValue","_objectSpread","component","_len2","_key2","map","child","_typeof","window","RUMIOUS_JSX_SUPPORT","isCamelCase","str","camelCaseRegex","test","RumiousComponentElement","_HTMLElement","_this","_callSuper","instance","_inherits","init","componentConstructor","connectedCallback","_wrapNativeSuper","HTMLElement","createComponentElement","customElements","define","renderComponent","componentElement","render","container","dom","createTextNode","entries","_ref","_ref2","_slicedToArray","name","_renderContext$addRef","addRef","call","startsWith","addEventListener","substring","toLowerCase","nodeType","Node","TEXT_NODE","setAttribute","RumiousApp","root","configs","RumiousReactor","bindings","react","addBinding","fn","push","RumiousState","reactor","wrapProxy","_value","Proxy","get","prop","set","proxy","val","createState","watcher","state"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/render/context.js","../src/component/component.js","../src/dom/element.js","../src/utils/checker.js","../src/render/directives.js","../src/jsx/index.js","../src/component/element.js","../src/component/render.js","../src/render/index.js","../src/app/index.js","../src/state/reactive.js","../src/state/reducer.js","../node_modules/mutative/dist/mutative.esm.mjs","../src/state/produce.js","../src/state/state.js","../src/state/watcher.js"],"sourcesContent":["export class RumiousRenderContext{\n constructor(target){\n this.target = target;\n }\n \n find(name){\n return this.target[name];\n }\n \n get(name){\n return this.target[name];\n }\n}","import {RumiousRenderContext} from '../render/context.js';\n\nexport class RumiousComponent {\n constructor() {\n this.element = null;\n this.props = {};\n this.renderContext = new RumiousRenderContext(this);\n this.renderer = null;\n this.wrapped = null;\n }\n\n prepare(element, props, wrapped = {}, renderer = null) {\n this.element = element;\n this.props = props;\n this.renderer = renderer;\n this.wrapped = wrapped;\n }\n\n template() {\n return {};\n }\n\n requestRender() {\n let template = this.template();\n let fragment = this.renderer(template, document.createDocumentFragment(), this.renderContext);\n this.element.appendChild(fragment);\n this.onRender();\n }\n\n async requestCleanUp() {\n if (this.element) {\n let cloned = this.element.cloneNode(true);\n this.element.replaceWith(cloned);\n this.element = cloned;\n\n while (this.element.firstChild) {\n this.element.removeChild(this.element.firstChild);\n }\n }\n }\n\n onInit() {}\n onCreate() {}\n onRender() {}\n onUpdate() {}\n onDestroy() {}\n}\n\nexport function isComponent(component){\n return Object.getPrototypeOf(component) === RumiousComponent;\n}","export class RumiousElement {\n constructor(type, props, children = []) {\n this.type = type;\n this.props = props;\n this.children = children;\n }\n}\n\nexport class RumiousElementList{\n constructor(list){\n this.type = \"ELEMENT_LIST\"\n this.children = list\n }\n \n forEach(callback ){\n this.children.forEach(callback)\n }\n}\n","export function isCamelCase(str) {\n const camelCaseRegex = /^[a-zA-Z]+([A-Z][a-z]*)*$/;\n return camelCaseRegex.test(str);\n}\n\nexport function isFunction(object) {\n return typeof object === 'function';\n}","import { isFunction } from '../utils/checker.js';\n\nexport class RumiousDirective {\n constructor(type, name, value) {\n this.type = type;\n this.name = name;\n this.value = value;\n }\n\n init() {\n console.warn(\"Directive haven't handler !\");\n }\n}\n\nexport class RumiousEventBindingDirective extends RumiousDirective {\n async init(dom, renderContext) {\n let fn = null;\n\n const getHandler = (value) => {\n if (!renderContext.find(value)) {\n console.warn(`Missing event handler for event: ${this.name}`);\n return null;\n }\n const handler = renderContext.get(value);\n if (!isFunction(handler)) {\n throw `${value} is not a function!`;\n }\n return handler.bind(renderContext.target);\n };\n\n if (this.value.type === \"string\") {\n fn = getHandler(this.value.value);\n } else if (this.value.type === \"expression\") {\n fn = this.value.value;\n if (!isFunction(fn)) {\n throw \"Event handler requires a function!\";\n }\n } else if (this.value.type === \"dynamic_value\") {\n fn = getHandler(this.value.value.objectName);\n }\n\n if (fn) {\n dom.addEventListener(this.name, fn);\n }\n }\n}\n\nexport class RumiousPropsBindingDirective extends RumiousDirective {\n async init(dom, renderContext) {\n let fn = null;\n\n if (this.value.type === \"expression\") {\n\n } else if (this.value.type === \"dynamic_value\") {\n let currentStateValue = this.value.evaluator?.(renderContext.target)\n let currentState = renderContext.find(this.value.value.objectName);\n if (!currentState) {\n throw \"Invalid props value: Directive bind: require a RumiousState Object !\"\n } else {\n currentState.reactor.addBinding(() => {\n let currentStateValue = this.value.evaluator?.(renderContext.target)\n this.bindAttr(dom,currentStateValue);\n })\n }\n\n this.bindAttr(dom,currentStateValue);\n }\n }\n \n normalizeValue(value){\n if(typeof value === \"object\"){\n return value.toString?.() ?? \"\"\n }\n return value;\n }\n \n async bindAttr(dom,value) {\n switch(this.name){\n case \"html\":\n dom.innerHTML = this.normalizeValue(value);\n break;\n \n \n }\n }\n}\n\n\nconst directives = {\n on(event, value) {\n return new RumiousEventBindingDirective(\"on\", event, value);\n },\n bind(attr, value) {\n return new RumiousPropsBindingDirective(\"bind\", attr, value);\n }\n};\n\n\nexport function registerDirective(type, name, value) {\n return directives[type]?.(name, value);\n}","import { isComponent } from '../component/component.js';\nimport {RumiousElement,RumiousElementList} from '../dom/element.js';\nimport {registerDirective} from '../render/directives.js';\n\n\n\nfunction createDirective(type,name,value) {\n return registerDirective(type,name,value)\n}\n\nfunction createElement(type, props, ...children) {\n if (isComponent(type)) {\n return createComponent(type, props, children);\n }\n\n if (type === createFragment) {\n return createFragment(...children);\n }\n\n return new RumiousElement(type, props || {}, normalizeChildren(children));\n}\n\nfunction createTextElement(text) {\n return new RumiousElement(\"TEXT_ELEMENT\", { nodeValue: text }, []);\n}\n\nfunction createComponent(type, props, children) {\n return new RumiousElement(\"COMPONENT\", { component: type, ...props },new RumiousElementList(normalizeChildren(children)));\n}\n\nfunction createFragment(...children) {\n return new RumiousElement(\"FRAGMENT\", {}, normalizeChildren(children));\n}\n\nfunction normalizeChildren(children) {\n return children.map(child => (typeof child === \"object\" ? child : createTextElement(child)));\n}\n\nwindow.RUMIOUS_JSX_SUPPORT = {\n createElement,\n createFragment,\n createDirective\n};","export class RumiousComponentElement extends HTMLElement{\n constructor(){\n super();\n this.instance = null;\n }\n \n init(componentConstructor,props,wrapped={},renderer){\n this.instance = new componentConstructor();\n this.instance.prepare(this,props,wrapped,renderer);\n this.instance.onInit()\n }\n \n connectedCallback(){\n this.instance.onCreate();\n this.instance.requestRender();\n }\n \n \n disconnectCallback(){\n this.instance.onDestroy()\n this.instance.requestCleanUp()\n }\n}\n\nexport function createComponentElement(){\n return document.createElement(\"a-component\");\n}\n\nwindow.customElements.define(\"a-component\",RumiousComponentElement);","import { createComponentElement } from './element.js';\n\nexport function renderComponent(componentConstructor, props, wrapped, renderer) {\n const componentElement = createComponentElement();\n componentElement.init(componentConstructor, props,wrapped, renderer);\n return componentElement;\n}\n","import { isCamelCase } from '../utils/checker.js';\nimport { renderComponent } from '../component/render.js';\nimport { isComponent } from '../component/component.js';\nimport { RumiousDirective } from './directives.js';\n\nfunction handleComponentElement(element, container, render) {\n const dom = renderComponent(element.props.component, element.props, element.children, render);\n container.appendChild(dom);\n return container;\n}\n\nfunction handleFragmentOrElementList(element, container, renderContext) {\n element.children.forEach(child => render(child, container, renderContext));\n return container;\n}\n\nfunction handleTextElement(element) {\n return document.createTextNode(element.props.nodeValue);\n}\n\nfunction handleRegularElement(element, renderContext) {\n const dom = document.createElement(element.type);\n Object.entries(element.props || {}).forEach(([name, propValue]) => {\n if (name.startsWith(\"on\") && isCamelCase(name)) {\n dom.addEventListener(name.substring(2).toLowerCase(), propValue);\n } else {\n setElementProps(dom, name, propValue,renderContext);\n }\n });\n return dom;\n}\n\nfunction handleDirective(dom,directive,renderContext){\n directive.init(dom,renderContext);\n}\n\nfunction setElementProps(dom, name, propValue,renderContext) {\n if (dom.nodeType === Node.TEXT_NODE) {\n dom.nodeValue = propValue;\n } else if (propValue instanceof RumiousDirective) {\n handleDirective(dom,propValue,renderContext);\n } else {\n dom.setAttribute(name, propValue);\n }\n}\n\nexport function render(element, container, renderContext = {}) {\n if (!element) return container;\n\n let dom;\n\n if (element.type === \"COMPONENT\") {\n return handleComponentElement(element, container, render);\n }\n\n if (element.type === \"FRAGMENT\" || element.type === \"ELEMENT_LIST\") {\n return handleFragmentOrElementList(element, container, renderContext);\n }\n\n if (element.type === \"TEXT_ELEMENT\") {\n dom = handleTextElement(element);\n } else {\n dom = handleRegularElement(element, renderContext);\n }\n\n element.children.forEach(child => render(child, dom, renderContext));\n container.appendChild(dom);\n return container;\n}","import { RumiousRenderContext } from '../render/context.js';\nimport { render } from '../render/index.js';\n\nexport class RumiousApp {\n constructor(root = document.createElement(\"span\"), configs = {}) {\n this.root = root;\n this.configs = configs;\n this.renderContext = new RumiousRenderContext(this);\n }\n\n render(element) {\n render(element, this.root, this.renderContext);\n }\n\n}","export class RumiousReactor {\n constructor(target = null, bindings = []) {\n this.target = target;\n this.bindings = bindings;\n }\n\n react() {\n this.bindings.forEach((callback) => callback());\n }\n\n addBinding(fn) {\n this.bindings.push(fn);\n }\n}","export class RumiousReducer{\n constructor(state,path=\"\",fn){\n this.state = state;\n this.path = path;\n this.fn = fn;\n }\n \n trigger(...args){\n let value = this.fn(...args);\n this.state.set(this.path,value);\n }\n}\n\n","const Operation = {\n Remove: 'remove',\n Replace: 'replace',\n Add: 'add',\n};\n\n// Don't use `Symbol()` just for 3rd party access the draft\nconst PROXY_DRAFT = Symbol.for('__MUTATIVE_PROXY_DRAFT__');\nconst RAW_RETURN_SYMBOL = Symbol('__MUTATIVE_RAW_RETURN_SYMBOL__');\nconst iteratorSymbol = Symbol.iterator;\nconst dataTypes = {\n mutable: 'mutable',\n immutable: 'immutable',\n};\n\nconst internal = {};\n\nfunction has(target, key) {\n return target instanceof Map\n ? target.has(key)\n : Object.prototype.hasOwnProperty.call(target, key);\n}\nfunction getDescriptor(target, key) {\n if (key in target) {\n let prototype = Reflect.getPrototypeOf(target);\n while (prototype) {\n const descriptor = Reflect.getOwnPropertyDescriptor(prototype, key);\n if (descriptor)\n return descriptor;\n prototype = Reflect.getPrototypeOf(prototype);\n }\n }\n return;\n}\nfunction isBaseSetInstance(obj) {\n return Object.getPrototypeOf(obj) === Set.prototype;\n}\nfunction isBaseMapInstance(obj) {\n return Object.getPrototypeOf(obj) === Map.prototype;\n}\n\nfunction latest(proxyDraft) {\n var _a;\n return (_a = proxyDraft.copy) !== null && _a !== void 0 ? _a : proxyDraft.original;\n}\n/**\n * Check if the value is a draft\n */\nfunction isDraft(target) {\n return !!getProxyDraft(target);\n}\nfunction getProxyDraft(value) {\n if (typeof value !== 'object')\n return null;\n return value === null || value === void 0 ? void 0 : value[PROXY_DRAFT];\n}\nfunction getValue(value) {\n var _a;\n const proxyDraft = getProxyDraft(value);\n return proxyDraft ? (_a = proxyDraft.copy) !== null && _a !== void 0 ? _a : proxyDraft.original : value;\n}\n/**\n * Check if a value is draftable\n */\nfunction isDraftable(value, options) {\n if (!value || typeof value !== 'object')\n return false;\n let markResult;\n return (Object.getPrototypeOf(value) === Object.prototype ||\n Array.isArray(value) ||\n value instanceof Map ||\n value instanceof Set ||\n (!!(options === null || options === void 0 ? void 0 : options.mark) &&\n ((markResult = options.mark(value, dataTypes)) === dataTypes.immutable ||\n typeof markResult === 'function')));\n}\nfunction getPath(target, path = []) {\n if (Object.hasOwnProperty.call(target, 'key')) {\n // check if the parent is a draft and the original value is not equal to the current value\n const parentCopy = target.parent.copy;\n const proxyDraft = getProxyDraft(get(parentCopy, target.key));\n if (proxyDraft !== null && (proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.original) !== target.original) {\n return null;\n }\n const isSet = target.parent.type === 3 /* DraftType.Set */;\n const key = isSet\n ? Array.from(target.parent.setMap.keys()).indexOf(target.key)\n : target.key;\n // check if the key is still in the next state parent\n if (!((isSet && parentCopy.size > key) || has(parentCopy, key)))\n return null;\n path.push(key);\n }\n if (target.parent) {\n return getPath(target.parent, path);\n }\n // `target` is root draft.\n path.reverse();\n try {\n // check if the path is valid\n resolvePath(target.copy, path);\n }\n catch (e) {\n return null;\n }\n return path;\n}\nfunction getType(target) {\n if (Array.isArray(target))\n return 1 /* DraftType.Array */;\n if (target instanceof Map)\n return 2 /* DraftType.Map */;\n if (target instanceof Set)\n return 3 /* DraftType.Set */;\n return 0 /* DraftType.Object */;\n}\nfunction get(target, key) {\n return getType(target) === 2 /* DraftType.Map */ ? target.get(key) : target[key];\n}\nfunction set(target, key, value) {\n const type = getType(target);\n if (type === 2 /* DraftType.Map */) {\n target.set(key, value);\n }\n else {\n target[key] = value;\n }\n}\nfunction peek(target, key) {\n const state = getProxyDraft(target);\n const source = state ? latest(state) : target;\n return source[key];\n}\nfunction isEqual(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n }\n else {\n return x !== x && y !== y;\n }\n}\nfunction revokeProxy(proxyDraft) {\n if (!proxyDraft)\n return;\n while (proxyDraft.finalities.revoke.length > 0) {\n const revoke = proxyDraft.finalities.revoke.pop();\n revoke();\n }\n}\n// handle JSON Pointer path with spec https://www.rfc-editor.org/rfc/rfc6901\nfunction escapePath(path, pathAsArray) {\n return pathAsArray\n ? path\n : ['']\n .concat(path)\n .map((_item) => {\n const item = `${_item}`;\n if (item.indexOf('/') === -1 && item.indexOf('~') === -1)\n return item;\n return item.replace(/~/g, '~0').replace(/\\//g, '~1');\n })\n .join('/');\n}\nfunction unescapePath(path) {\n if (Array.isArray(path))\n return path;\n return path\n .split('/')\n .map((_item) => _item.replace(/~1/g, '/').replace(/~0/g, '~'))\n .slice(1);\n}\nfunction resolvePath(base, path) {\n for (let index = 0; index < path.length - 1; index += 1) {\n const key = path[index];\n // use `index` in Set draft\n base = get(getType(base) === 3 /* DraftType.Set */ ? Array.from(base) : base, key);\n if (typeof base !== 'object') {\n throw new Error(`Cannot resolve patch at '${path.join('/')}'.`);\n }\n }\n return base;\n}\n\nfunction strictCopy(target) {\n const copy = Object.create(Object.getPrototypeOf(target));\n Reflect.ownKeys(target).forEach((key) => {\n let desc = Reflect.getOwnPropertyDescriptor(target, key);\n if (desc.enumerable && desc.configurable && desc.writable) {\n copy[key] = target[key];\n return;\n }\n // for freeze\n if (!desc.writable) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n desc = {\n configurable: true,\n writable: true,\n enumerable: desc.enumerable,\n value: target[key],\n };\n Reflect.defineProperty(copy, key, desc);\n });\n return copy;\n}\nconst propIsEnum = Object.prototype.propertyIsEnumerable;\nfunction shallowCopy(original, options) {\n let markResult;\n if (Array.isArray(original)) {\n return Array.prototype.concat.call(original);\n }\n else if (original instanceof Set) {\n if (!isBaseSetInstance(original)) {\n const SubClass = Object.getPrototypeOf(original).constructor;\n return new SubClass(original.values());\n }\n return Set.prototype.difference\n ? Set.prototype.difference.call(original, new Set())\n : new Set(original.values());\n }\n else if (original instanceof Map) {\n if (!isBaseMapInstance(original)) {\n const SubClass = Object.getPrototypeOf(original).constructor;\n return new SubClass(original);\n }\n return new Map(original);\n }\n else if ((options === null || options === void 0 ? void 0 : options.mark) &&\n ((markResult = options.mark(original, dataTypes)),\n markResult !== undefined) &&\n markResult !== dataTypes.mutable) {\n if (markResult === dataTypes.immutable) {\n return strictCopy(original);\n }\n else if (typeof markResult === 'function') {\n if ((options.enablePatches || options.enableAutoFreeze)) {\n throw new Error(`You can't use mark and patches or auto freeze together.`);\n }\n return markResult();\n }\n throw new Error(`Unsupported mark result: ${markResult}`);\n }\n else if (typeof original === 'object' &&\n Object.getPrototypeOf(original) === Object.prototype) {\n // For best performance with shallow copies,\n // don't use `Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));` by default.\n const copy = {};\n Object.keys(original).forEach((key) => {\n copy[key] = original[key];\n });\n Object.getOwnPropertySymbols(original).forEach((key) => {\n if (propIsEnum.call(original, key)) {\n copy[key] = original[key];\n }\n });\n return copy;\n }\n else {\n throw new Error(`Please check mark() to ensure that it is a stable marker draftable function.`);\n }\n}\nfunction ensureShallowCopy(target) {\n if (target.copy)\n return;\n target.copy = shallowCopy(target.original, target.options);\n}\nfunction deepClone(target) {\n if (!isDraftable(target))\n return getValue(target);\n if (Array.isArray(target))\n return target.map(deepClone);\n if (target instanceof Map) {\n const iterable = Array.from(target.entries()).map(([k, v]) => [\n k,\n deepClone(v),\n ]);\n if (!isBaseMapInstance(target)) {\n const SubClass = Object.getPrototypeOf(target).constructor;\n return new SubClass(iterable);\n }\n return new Map(iterable);\n }\n if (target instanceof Set) {\n const iterable = Array.from(target).map(deepClone);\n if (!isBaseSetInstance(target)) {\n const SubClass = Object.getPrototypeOf(target).constructor;\n return new SubClass(iterable);\n }\n return new Set(iterable);\n }\n const copy = Object.create(Object.getPrototypeOf(target));\n for (const key in target)\n copy[key] = deepClone(target[key]);\n return copy;\n}\nfunction cloneIfNeeded(target) {\n return isDraft(target) ? deepClone(target) : target;\n}\n\nfunction markChanged(proxyDraft) {\n var _a;\n proxyDraft.assignedMap = (_a = proxyDraft.assignedMap) !== null && _a !== void 0 ? _a : new Map();\n if (!proxyDraft.operated) {\n proxyDraft.operated = true;\n if (proxyDraft.parent) {\n markChanged(proxyDraft.parent);\n }\n }\n}\n\nfunction throwFrozenError() {\n throw new Error('Cannot modify frozen object');\n}\nfunction deepFreeze(target, subKey, updatedValues, stack, keys) {\n {\n updatedValues = updatedValues !== null && updatedValues !== void 0 ? updatedValues : new WeakMap();\n stack = stack !== null && stack !== void 0 ? stack : [];\n keys = keys !== null && keys !== void 0 ? keys : [];\n const value = updatedValues.has(target)\n ? updatedValues.get(target)\n : target;\n if (stack.length > 0) {\n const index = stack.indexOf(value);\n if (value && typeof value === 'object' && index !== -1) {\n if (stack[0] === value) {\n throw new Error(`Forbids circular reference`);\n }\n throw new Error(`Forbids circular reference: ~/${keys\n .slice(0, index)\n .map((key, index) => {\n if (typeof key === 'symbol')\n return `[${key.toString()}]`;\n const parent = stack[index];\n if (typeof key === 'object' &&\n (parent instanceof Map || parent instanceof Set))\n return Array.from(parent.keys()).indexOf(key);\n return key;\n })\n .join('/')}`);\n }\n stack.push(value);\n keys.push(subKey);\n }\n else {\n stack.push(value);\n }\n }\n if (Object.isFrozen(target) || isDraft(target)) {\n {\n stack.pop();\n keys.pop();\n }\n return;\n }\n const type = getType(target);\n switch (type) {\n case 2 /* DraftType.Map */:\n for (const [key, value] of target) {\n deepFreeze(key, key, updatedValues, stack, keys);\n deepFreeze(value, key, updatedValues, stack, keys);\n }\n target.set = target.clear = target.delete = throwFrozenError;\n break;\n case 3 /* DraftType.Set */:\n for (const value of target) {\n deepFreeze(value, value, updatedValues, stack, keys);\n }\n target.add = target.clear = target.delete = throwFrozenError;\n break;\n case 1 /* DraftType.Array */:\n Object.freeze(target);\n let index = 0;\n for (const value of target) {\n deepFreeze(value, index, updatedValues, stack, keys);\n index += 1;\n }\n break;\n default:\n Object.freeze(target);\n // ignore non-enumerable or symbol properties\n Object.keys(target).forEach((name) => {\n const value = target[name];\n deepFreeze(value, name, updatedValues, stack, keys);\n });\n }\n {\n stack.pop();\n keys.pop();\n }\n}\n\nfunction forEach(target, iter) {\n const type = getType(target);\n if (type === 0 /* DraftType.Object */) {\n Reflect.ownKeys(target).forEach((key) => {\n iter(key, target[key], target);\n });\n }\n else if (type === 1 /* DraftType.Array */) {\n let index = 0;\n for (const entry of target) {\n iter(index, entry, target);\n index += 1;\n }\n }\n else {\n target.forEach((entry, index) => iter(index, entry, target));\n }\n}\n\nfunction handleValue(target, handledSet, options) {\n if (isDraft(target) ||\n !isDraftable(target, options) ||\n handledSet.has(target) ||\n Object.isFrozen(target))\n return;\n const isSet = target instanceof Set;\n const setMap = isSet ? new Map() : undefined;\n handledSet.add(target);\n forEach(target, (key, value) => {\n var _a;\n if (isDraft(value)) {\n const proxyDraft = getProxyDraft(value);\n ensureShallowCopy(proxyDraft);\n // A draft where a child node has been changed, or assigned a value\n const updatedValue = ((_a = proxyDraft.assignedMap) === null || _a === void 0 ? void 0 : _a.size) || proxyDraft.operated\n ? proxyDraft.copy\n : proxyDraft.original;\n // final update value\n set(isSet ? setMap : target, key, updatedValue);\n }\n else {\n handleValue(value, handledSet, options);\n }\n });\n if (setMap) {\n const set = target;\n const values = Array.from(set);\n set.clear();\n values.forEach((value) => {\n set.add(setMap.has(value) ? setMap.get(value) : value);\n });\n }\n}\nfunction finalizeAssigned(proxyDraft, key) {\n // handle the draftable assigned values, and the value is not a draft\n const copy = proxyDraft.type === 3 /* DraftType.Set */ ? proxyDraft.setMap : proxyDraft.copy;\n if (proxyDraft.finalities.revoke.length > 1 &&\n proxyDraft.assignedMap.get(key) &&\n copy) {\n handleValue(get(copy, key), proxyDraft.finalities.handledSet, proxyDraft.options);\n }\n}\nfunction finalizeSetValue(target) {\n if (target.type === 3 /* DraftType.Set */ && target.copy) {\n target.copy.clear();\n target.setMap.forEach((value) => {\n target.copy.add(getValue(value));\n });\n }\n}\nfunction finalizePatches(target, generatePatches, patches, inversePatches) {\n const shouldFinalize = target.operated &&\n target.assignedMap &&\n target.assignedMap.size > 0 &&\n !target.finalized;\n if (shouldFinalize) {\n if (patches && inversePatches) {\n const basePath = getPath(target);\n if (basePath) {\n generatePatches(target, basePath, patches, inversePatches);\n }\n }\n target.finalized = true;\n }\n}\nfunction markFinalization(target, key, value, generatePatches) {\n const proxyDraft = getProxyDraft(value);\n if (proxyDraft) {\n // !case: assign the draft value\n if (!proxyDraft.callbacks) {\n proxyDraft.callbacks = [];\n }\n proxyDraft.callbacks.push((patches, inversePatches) => {\n var _a;\n const copy = target.type === 3 /* DraftType.Set */ ? target.setMap : target.copy;\n if (isEqual(get(copy, key), value)) {\n let updatedValue = proxyDraft.original;\n if (proxyDraft.copy) {\n updatedValue = proxyDraft.copy;\n }\n finalizeSetValue(target);\n finalizePatches(target, generatePatches, patches, inversePatches);\n if (target.options.enableAutoFreeze) {\n target.options.updatedValues =\n (_a = target.options.updatedValues) !== null && _a !== void 0 ? _a : new WeakMap();\n target.options.updatedValues.set(updatedValue, proxyDraft.original);\n }\n // final update value\n set(copy, key, updatedValue);\n }\n });\n if (target.options.enableAutoFreeze) {\n // !case: assign the draft value in cross draft tree\n if (proxyDraft.finalities !== target.finalities) {\n target.options.enableAutoFreeze = false;\n }\n }\n }\n if (isDraftable(value, target.options)) {\n // !case: assign the non-draft value\n target.finalities.draft.push(() => {\n const copy = target.type === 3 /* DraftType.Set */ ? target.setMap : target.copy;\n if (isEqual(get(copy, key), value)) {\n finalizeAssigned(target, key);\n }\n });\n }\n}\n\nfunction generateArrayPatches(proxyState, basePath, patches, inversePatches, pathAsArray) {\n let { original, assignedMap, options } = proxyState;\n let copy = proxyState.copy;\n if (copy.length < original.length) {\n [original, copy] = [copy, original];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let index = 0; index < original.length; index += 1) {\n if (assignedMap.get(index.toString()) && copy[index] !== original[index]) {\n const _path = basePath.concat([index]);\n const path = escapePath(_path, pathAsArray);\n patches.push({\n op: Operation.Replace,\n path,\n // If it is a draft, it needs to be deep cloned, and it may also be non-draft.\n value: cloneIfNeeded(copy[index]),\n });\n inversePatches.push({\n op: Operation.Replace,\n path,\n // If it is a draft, it needs to be deep cloned, and it may also be non-draft.\n value: cloneIfNeeded(original[index]),\n });\n }\n }\n for (let index = original.length; index < copy.length; index += 1) {\n const _path = basePath.concat([index]);\n const path = escapePath(_path, pathAsArray);\n patches.push({\n op: Operation.Add,\n path,\n // If it is a draft, it needs to be deep cloned, and it may also be non-draft.\n value: cloneIfNeeded(copy[index]),\n });\n }\n if (original.length < copy.length) {\n // https://www.rfc-editor.org/rfc/rfc6902#appendix-A.4\n // For performance, here we only generate an operation that replaces the length of the array,\n // which is inconsistent with JSON Patch specification\n const { arrayLengthAssignment = true } = options.enablePatches;\n if (arrayLengthAssignment) {\n const _path = basePath.concat(['length']);\n const path = escapePath(_path, pathAsArray);\n inversePatches.push({\n op: Operation.Replace,\n path,\n value: original.length,\n });\n }\n else {\n for (let index = copy.length; original.length < index; index -= 1) {\n const _path = basePath.concat([index - 1]);\n const path = escapePath(_path, pathAsArray);\n inversePatches.push({\n op: Operation.Remove,\n path,\n });\n }\n }\n }\n}\nfunction generatePatchesFromAssigned({ original, copy, assignedMap }, basePath, patches, inversePatches, pathAsArray) {\n assignedMap.forEach((assignedValue, key) => {\n const originalValue = get(original, key);\n const value = cloneIfNeeded(get(copy, key));\n const op = !assignedValue\n ? Operation.Remove\n : has(original, key)\n ? Operation.Replace\n : Operation.Add;\n if (isEqual(originalValue, value) && op === Operation.Replace)\n return;\n const _path = basePath.concat(key);\n const path = escapePath(_path, pathAsArray);\n patches.push(op === Operation.Remove ? { op, path } : { op, path, value });\n inversePatches.push(op === Operation.Add\n ? { op: Operation.Remove, path }\n : op === Operation.Remove\n ? { op: Operation.Add, path, value: originalValue }\n : { op: Operation.Replace, path, value: originalValue });\n });\n}\nfunction generateSetPatches({ original, copy }, basePath, patches, inversePatches, pathAsArray) {\n let index = 0;\n original.forEach((value) => {\n if (!copy.has(value)) {\n const _path = basePath.concat([index]);\n const path = escapePath(_path, pathAsArray);\n patches.push({\n op: Operation.Remove,\n path,\n value,\n });\n inversePatches.unshift({\n op: Operation.Add,\n path,\n value,\n });\n }\n index += 1;\n });\n index = 0;\n copy.forEach((value) => {\n if (!original.has(value)) {\n const _path = basePath.concat([index]);\n const path = escapePath(_path, pathAsArray);\n patches.push({\n op: Operation.Add,\n path,\n value,\n });\n inversePatches.unshift({\n op: Operation.Remove,\n path,\n value,\n });\n }\n index += 1;\n });\n}\nfunction generatePatches(proxyState, basePath, patches, inversePatches) {\n const { pathAsArray = true } = proxyState.options.enablePatches;\n switch (proxyState.type) {\n case 0 /* DraftType.Object */:\n case 2 /* DraftType.Map */:\n return generatePatchesFromAssigned(proxyState, basePath, patches, inversePatches, pathAsArray);\n case 1 /* DraftType.Array */:\n return generateArrayPatches(proxyState, basePath, patches, inversePatches, pathAsArray);\n case 3 /* DraftType.Set */:\n return generateSetPatches(proxyState, basePath, patches, inversePatches, pathAsArray);\n }\n}\n\nlet readable = false;\nconst checkReadable = (value, options, ignoreCheckDraftable = false) => {\n if (typeof value === 'object' &&\n value !== null &&\n (!isDraftable(value, options) || ignoreCheckDraftable) &&\n !readable) {\n throw new Error(`Strict mode: Mutable data cannot be accessed directly, please use 'unsafe(callback)' wrap.`);\n }\n};\n/**\n * `unsafe(callback)` to access mutable data directly in strict mode.\n *\n * ## Example\n *\n * ```ts\n * import { create, unsafe } from '../index';\n *\n * class Foobar {\n * bar = 1;\n * }\n *\n * const baseState = { foobar: new Foobar() };\n * const state = create(\n * baseState,\n * (draft) => {\n * unsafe(() => {\n * draft.foobar.bar = 2;\n * });\n * },\n * {\n * strict: true,\n * }\n * );\n *\n * expect(state).toBe(baseState);\n * expect(state.foobar).toBe(baseState.foobar);\n * expect(state.foobar.bar).toBe(2);\n * ```\n */\nfunction unsafe(callback) {\n readable = true;\n let result;\n try {\n result = callback();\n }\n finally {\n readable = false;\n }\n return result;\n}\n\nconst mapHandler = {\n get size() {\n const current = latest(getProxyDraft(this));\n return current.size;\n },\n has(key) {\n return latest(getProxyDraft(this)).has(key);\n },\n set(key, value) {\n const target = getProxyDraft(this);\n const source = latest(target);\n if (!source.has(key) || !isEqual(source.get(key), value)) {\n ensureShallowCopy(target);\n markChanged(target);\n target.assignedMap.set(key, true);\n target.copy.set(key, value);\n markFinalization(target, key, value, generatePatches);\n }\n return this;\n },\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const target = getProxyDraft(this);\n ensureShallowCopy(target);\n markChanged(target);\n if (target.original.has(key)) {\n target.assignedMap.set(key, false);\n }\n else {\n target.assignedMap.delete(key);\n }\n target.copy.delete(key);\n return true;\n },\n clear() {\n const target = getProxyDraft(this);\n if (!this.size)\n return;\n ensureShallowCopy(target);\n markChanged(target);\n target.assignedMap = new Map();\n for (const [key] of target.original) {\n target.assignedMap.set(key, false);\n }\n target.copy.clear();\n },\n forEach(callback, thisArg) {\n const target = getProxyDraft(this);\n latest(target).forEach((_value, _key) => {\n callback.call(thisArg, this.get(_key), _key, this);\n });\n },\n get(key) {\n var _a, _b;\n const target = getProxyDraft(this);\n const value = latest(target).get(key);\n const mutable = ((_b = (_a = target.options).mark) === null || _b === void 0 ? void 0 : _b.call(_a, value, dataTypes)) === dataTypes.mutable;\n if (target.options.strict) {\n checkReadable(value, target.options, mutable);\n }\n if (mutable) {\n return value;\n }\n if (target.finalized || !isDraftable(value, target.options)) {\n return value;\n }\n // drafted or reassigned\n if (value !== target.original.get(key)) {\n return value;\n }\n const draft = internal.createDraft({\n original: value,\n parentDraft: target,\n key,\n finalities: target.finalities,\n options: target.options,\n });\n ensureShallowCopy(target);\n target.copy.set(key, draft);\n return draft;\n },\n keys() {\n return latest(getProxyDraft(this)).keys();\n },\n values() {\n const iterator = this.keys();\n return {\n [iteratorSymbol]: () => this.values(),\n next: () => {\n const result = iterator.next();\n if (result.done)\n return result;\n const value = this.get(result.value);\n return {\n done: false,\n value,\n };\n },\n };\n },\n entries() {\n const iterator = this.keys();\n return {\n [iteratorSymbol]: () => this.entries(),\n next: () => {\n const result = iterator.next();\n if (result.done)\n return result;\n const value = this.get(result.value);\n return {\n done: false,\n value: [result.value, value],\n };\n },\n };\n },\n [iteratorSymbol]() {\n return this.entries();\n },\n};\nconst mapHandlerKeys = Reflect.ownKeys(mapHandler);\n\nconst getNextIterator = (target, iterator, { isValuesIterator }) => () => {\n var _a, _b;\n const result = iterator.next();\n if (result.done)\n return result;\n const key = result.value;\n let value = target.setMap.get(key);\n const currentDraft = getProxyDraft(value);\n const mutable = ((_b = (_a = target.options).mark) === null || _b === void 0 ? void 0 : _b.call(_a, value, dataTypes)) === dataTypes.mutable;\n if (target.options.strict) {\n checkReadable(key, target.options, mutable);\n }\n if (!mutable &&\n !currentDraft &&\n isDraftable(key, target.options) &&\n !target.finalized &&\n target.original.has(key)) {\n // draft a draftable original set item\n const proxy = internal.createDraft({\n original: key,\n parentDraft: target,\n key,\n finalities: target.finalities,\n options: target.options,\n });\n target.setMap.set(key, proxy);\n value = proxy;\n }\n else if (currentDraft) {\n // drafted\n value = currentDraft.proxy;\n }\n return {\n done: false,\n value: isValuesIterator ? value : [value, value],\n };\n};\nconst setHandler = {\n get size() {\n const target = getProxyDraft(this);\n return target.setMap.size;\n },\n has(value) {\n const target = getProxyDraft(this);\n // reassigned or non-draftable values\n if (target.setMap.has(value))\n return true;\n ensureShallowCopy(target);\n const valueProxyDraft = getProxyDraft(value);\n // drafted\n if (valueProxyDraft && target.setMap.has(valueProxyDraft.original))\n return true;\n return false;\n },\n add(value) {\n const target = getProxyDraft(this);\n if (!this.has(value)) {\n ensureShallowCopy(target);\n markChanged(target);\n target.assignedMap.set(value, true);\n target.setMap.set(value, value);\n markFinalization(target, value, value, generatePatches);\n }\n return this;\n },\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const target = getProxyDraft(this);\n ensureShallowCopy(target);\n markChanged(target);\n const valueProxyDraft = getProxyDraft(value);\n if (valueProxyDraft && target.setMap.has(valueProxyDraft.original)) {\n // delete drafted\n target.assignedMap.set(valueProxyDraft.original, false);\n return target.setMap.delete(valueProxyDraft.original);\n }\n if (!valueProxyDraft && target.setMap.has(value)) {\n // non-draftable values\n target.assignedMap.set(value, false);\n }\n else {\n // reassigned\n target.assignedMap.delete(value);\n }\n // delete reassigned or non-draftable values\n return target.setMap.delete(value);\n },\n clear() {\n if (!this.size)\n return;\n const target = getProxyDraft(this);\n ensureShallowCopy(target);\n markChanged(target);\n for (const value of target.original) {\n target.assignedMap.set(value, false);\n }\n target.setMap.clear();\n },\n values() {\n const target = getProxyDraft(this);\n ensureShallowCopy(target);\n const iterator = target.setMap.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: getNextIterator(target, iterator, { isValuesIterator: true }),\n };\n },\n entries() {\n const target = getProxyDraft(this);\n ensureShallowCopy(target);\n const iterator = target.setMap.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: getNextIterator(target, iterator, {\n isValuesIterator: false,\n }),\n };\n },\n keys() {\n return this.values();\n },\n [iteratorSymbol]() {\n return this.values();\n },\n forEach(callback, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n callback.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n },\n};\nif (Set.prototype.difference) {\n // for compatibility with new Set methods\n // https://github.com/tc39/proposal-set-methods\n // And `https://github.com/tc39/proposal-set-methods/blob/main/details.md#symbolspecies` has some details about the `@@species` symbol.\n // So we can't use SubSet instance constructor to get the constructor of the SubSet instance.\n Object.assign(setHandler, {\n intersection(other) {\n return Set.prototype.intersection.call(new Set(this.values()), other);\n },\n union(other) {\n return Set.prototype.union.call(new Set(this.values()), other);\n },\n difference(other) {\n return Set.prototype.difference.call(new Set(this.values()), other);\n },\n symmetricDifference(other) {\n return Set.prototype.symmetricDifference.call(new Set(this.values()), other);\n },\n isSubsetOf(other) {\n return Set.prototype.isSubsetOf.call(new Set(this.values()), other);\n },\n isSupersetOf(other) {\n return Set.prototype.isSupersetOf.call(new Set(this.values()), other);\n },\n isDisjointFrom(other) {\n return Set.prototype.isDisjointFrom.call(new Set(this.values()), other);\n },\n });\n}\nconst setHandlerKeys = Reflect.ownKeys(setHandler);\n\nconst draftsCache = new WeakSet();\nconst proxyHandler = {\n get(target, key, receiver) {\n var _a, _b;\n const copy = (_a = target.copy) === null || _a === void 0 ? void 0 : _a[key];\n // Improve draft reading performance by caching the draft copy.\n if (copy && draftsCache.has(copy)) {\n return copy;\n }\n if (key === PROXY_DRAFT)\n return target;\n let markResult;\n if (target.options.mark) {\n // handle `Uncaught TypeError: Method get Map.prototype.size called on incompatible receiver #<Map>`\n // or `Uncaught TypeError: Method get Set.prototype.size called on incompatible receiver #<Set>`\n const value = key === 'size' &&\n (target.original instanceof Map || target.original instanceof Set)\n ? Reflect.get(target.original, key)\n : Reflect.get(target.original, key, receiver);\n markResult = target.options.mark(value, dataTypes);\n if (markResult === dataTypes.mutable) {\n if (target.options.strict) {\n checkReadable(value, target.options, true);\n }\n return value;\n }\n }\n const source = latest(target);\n if (source instanceof Map && mapHandlerKeys.includes(key)) {\n if (key === 'size') {\n return Object.getOwnPropertyDescriptor(mapHandler, 'size').get.call(target.proxy);\n }\n const handle = mapHandler[key];\n if (handle) {\n return handle.bind(target.proxy);\n }\n }\n if (source instanceof Set && setHandlerKeys.includes(key)) {\n if (key === 'size') {\n return Object.getOwnPropertyDescriptor(setHandler, 'size').get.call(target.proxy);\n }\n const handle = setHandler[key];\n if (handle) {\n return handle.bind(target.proxy);\n }\n }\n if (!has(source, key)) {\n const desc = getDescriptor(source, key);\n return desc\n ? `value` in desc\n ? desc.value\n : // !case: support for getter\n (_b = desc.get) === null || _b === void 0 ? void 0 : _b.call(target.proxy)\n : undefined;\n }\n const value = source[key];\n if (target.options.strict) {\n checkReadable(value, target.options);\n }\n if (target.finalized || !isDraftable(value, target.options)) {\n return value;\n }\n // Ensure that the assigned values are not drafted\n if (value === peek(target.original, key)) {\n ensureShallowCopy(target);\n target.copy[key] = createDraft({\n original: target.original[key],\n parentDraft: target,\n key: target.type === 1 /* DraftType.Array */ ? Number(key) : key,\n finalities: target.finalities,\n options: target.options,\n });\n // !case: support for custom shallow copy function\n if (typeof markResult === 'function') {\n const subProxyDraft = getProxyDraft(target.copy[key]);\n ensureShallowCopy(subProxyDraft);\n // Trigger a custom shallow copy to update to a new copy\n markChanged(subProxyDraft);\n return subProxyDraft.copy;\n }\n return target.copy[key];\n }\n return value;\n },\n set(target, key, value) {\n var _a;\n if (target.type === 3 /* DraftType.Set */ || target.type === 2 /* DraftType.Map */) {\n throw new Error(`Map/Set draft does not support any property assignment.`);\n }\n let _key;\n if (target.type === 1 /* DraftType.Array */ &&\n key !== 'length' &&\n !(Number.isInteger((_key = Number(key))) &&\n _key >= 0 &&\n (key === 0 || _key === 0 || String(_key) === String(key)))) {\n throw new Error(`Only supports setting array indices and the 'length' property.`);\n }\n const desc = getDescriptor(latest(target), key);\n if (desc === null || desc === void 0 ? void 0 : desc.set) {\n // !case: cover the case of setter\n desc.set.call(target.proxy, value);\n return true;\n }\n const current = peek(latest(target), key);\n const currentProxyDraft = getProxyDraft(current);\n if (currentProxyDraft && isEqual(currentProxyDraft.original, value)) {\n // !case: ignore the case of assigning the original draftable value to a draft\n target.copy[key] = value;\n target.assignedMap = (_a = target.assignedMap) !== null && _a !== void 0 ? _a : new Map();\n target.assignedMap.set(key, false);\n return true;\n }\n // !case: handle new props with value 'undefined'\n if (isEqual(value, current) &&\n (value !== undefined || has(target.original, key)))\n return true;\n ensureShallowCopy(target);\n markChanged(target);\n if (has(target.original, key) && isEqual(value, target.original[key])) {\n // !case: handle the case of assigning the original non-draftable value to a draft\n target.assignedMap.delete(key);\n }\n else {\n target.assignedMap.set(key, true);\n }\n target.copy[key] = value;\n markFinalization(target, key, value, generatePatches);\n return true;\n },\n has(target, key) {\n return key in latest(target);\n },\n ownKeys(target) {\n return Reflect.ownKeys(latest(target));\n },\n getOwnPropertyDescriptor(target, key) {\n const source = latest(target);\n const descriptor = Reflect.getOwnPropertyDescriptor(source, key);\n if (!descriptor)\n return descriptor;\n return {\n writable: true,\n configurable: target.type !== 1 /* DraftType.Array */ || key !== 'length',\n enumerable: descriptor.enumerable,\n value: source[key],\n };\n },\n getPrototypeOf(target) {\n return Reflect.getPrototypeOf(target.original);\n },\n setPrototypeOf() {\n throw new Error(`Cannot call 'setPrototypeOf()' on drafts`);\n },\n defineProperty() {\n throw new Error(`Cannot call 'defineProperty()' on drafts`);\n },\n deleteProperty(target, key) {\n var _a;\n if (target.type === 1 /* DraftType.Array */) {\n return proxyHandler.set.call(this, target, key, undefined, target.proxy);\n }\n if (peek(target.original, key) !== undefined || key in target.original) {\n // !case: delete an existing key\n ensureShallowCopy(target);\n markChanged(target);\n target.assignedMap.set(key, false);\n }\n else {\n target.assignedMap = (_a = target.assignedMap) !== null && _a !== void 0 ? _a : new Map();\n // The original non-existent key has been deleted\n target.assignedMap.delete(key);\n }\n if (target.copy)\n delete target.copy[key];\n return true;\n },\n};\nfunction createDraft(createDraftOptions) {\n const { original, parentDraft, key, finalities, options } = createDraftOptions;\n const type = getType(original);\n const proxyDraft = {\n type,\n finalized: false,\n parent: parentDraft,\n original,\n copy: null,\n proxy: null,\n finalities,\n options,\n // Mapping of draft Set items to their corresponding draft values.\n setMap: type === 3 /* DraftType.Set */\n ? new Map(original.entries())\n : undefined,\n };\n // !case: undefined as a draft map key\n if (key || 'key' in createDraftOptions) {\n proxyDraft.key = key;\n }\n const { proxy, revoke } = Proxy.revocable(type === 1 /* DraftType.Array */ ? Object.assign([], proxyDraft) : proxyDraft, proxyHandler);\n finalities.revoke.push(revoke);\n draftsCache.add(proxy);\n proxyDraft.proxy = proxy;\n if (parentDraft) {\n const target = parentDraft;\n target.finalities.draft.push((patches, inversePatches) => {\n var _a, _b;\n const oldProxyDraft = getProxyDraft(proxy);\n // if target is a Set draft, `setMap` is the real Set copies proxy mapping.\n let copy = target.type === 3 /* DraftType.Set */ ? target.setMap : target.copy;\n const draft = get(copy, key);\n const proxyDraft = getProxyDraft(draft);\n if (proxyDraft) {\n // assign the updated value to the copy object\n let updatedValue = proxyDraft.original;\n if (proxyDraft.operated) {\n updatedValue = getValue(draft);\n }\n finalizeSetValue(proxyDraft);\n finalizePatches(proxyDraft, generatePatches, patches, inversePatches);\n if (target.options.enableAutoFreeze) {\n target.options.updatedValues =\n (_a = target.options.updatedValues) !== null && _a !== void 0 ? _a : new WeakMap();\n target.options.updatedValues.set(updatedValue, proxyDraft.original);\n }\n // final update value\n set(copy, key, updatedValue);\n }\n // !case: handle the deleted key\n (_b = oldProxyDraft.callbacks) === null || _b === void 0 ? void 0 : _b.forEach((callback) => {\n callback(patches, inversePatches);\n });\n });\n }\n else {\n // !case: handle the root draft\n const target = getProxyDraft(proxy);\n target.finalities.draft.push((patches, inversePatches) => {\n finalizeSetValue(target);\n finalizePatches(target, generatePatches, patches, inversePatches);\n });\n }\n return proxy;\n}\ninternal.createDraft = createDraft;\nfunction finalizeDraft(result, returnedValue, patches, inversePatches, enableAutoFreeze) {\n var _a;\n const proxyDraft = getProxyDraft(result);\n const original = (_a = proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.original) !== null && _a !== void 0 ? _a : result;\n const hasReturnedValue = !!returnedValue.length;\n if (proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.operated) {\n while (proxyDraft.finalities.draft.length > 0) {\n const finalize = proxyDraft.finalities.draft.pop();\n finalize(patches, inversePatches);\n }\n }\n const state = hasReturnedValue\n ? returnedValue[0]\n : proxyDraft\n ? proxyDraft.operated\n ? proxyDraft.copy\n : proxyDraft.original\n : result;\n if (proxyDraft)\n revokeProxy(proxyDraft);\n if (enableAutoFreeze) {\n deepFreeze(state, state, proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.options.updatedValues);\n }\n return [\n state,\n patches && hasReturnedValue\n ? [{ op: Operation.Replace, path: [], value: returnedValue[0] }]\n : patches,\n inversePatches && hasReturnedValue\n ? [{ op: Operation.Replace, path: [], value: original }]\n : inversePatches,\n ];\n}\n\nfunction draftify(baseState, options) {\n var _a;\n const finalities = {\n draft: [],\n revoke: [],\n handledSet: new WeakSet(),\n };\n let patches;\n let inversePatches;\n if (options.enablePatches) {\n patches = [];\n inversePatches = [];\n }\n const isMutable = ((_a = options.mark) === null || _a === void 0 ? void 0 : _a.call(options, baseState, dataTypes)) === dataTypes.mutable ||\n !isDraftable(baseState, options);\n const draft = isMutable\n ? baseState\n : createDraft({\n original: baseState,\n parentDraft: null,\n finalities,\n options,\n });\n return [\n draft,\n (returnedValue = []) => {\n const [finalizedState, finalizedPatches, finalizedInversePatches] = finalizeDraft(draft, returnedValue, patches, inversePatches, options.enableAutoFreeze);\n return (options.enablePatches\n ? [finalizedState, finalizedPatches, finalizedInversePatches]\n : finalizedState);\n },\n ];\n}\n\nfunction handleReturnValue(options) {\n const { rootDraft, value, useRawReturn = false, isRoot = true } = options;\n forEach(value, (key, item, source) => {\n const proxyDraft = getProxyDraft(item);\n // just handle the draft which is created by the same rootDraft\n if (proxyDraft &&\n rootDraft &&\n proxyDraft.finalities === rootDraft.finalities) {\n options.isContainDraft = true;\n const currentValue = proxyDraft.original;\n // final update value, but just handle return value\n if (source instanceof Set) {\n const arr = Array.from(source);\n source.clear();\n arr.forEach((_item) => source.add(key === _item ? currentValue : _item));\n }\n else {\n set(source, key, currentValue);\n }\n }\n else if (typeof item === 'object' && item !== null) {\n options.value = item;\n options.isRoot = false;\n handleReturnValue(options);\n }\n });\n if (isRoot) {\n if (!options.isContainDraft)\n console.warn(`The return value does not contain any draft, please use 'rawReturn()' to wrap the return value to improve performance.`);\n if (useRawReturn) {\n console.warn(`The return value contains drafts, please don't use 'rawReturn()' to wrap the return value.`);\n }\n }\n}\nfunction getCurrent(target) {\n var _a;\n const proxyDraft = getProxyDraft(target);\n if (!isDraftable(target, proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.options))\n return target;\n const type = getType(target);\n if (proxyDraft && !proxyDraft.operated)\n return proxyDraft.original;\n let currentValue;\n function ensureShallowCopy() {\n currentValue =\n type === 2 /* DraftType.Map */\n ? !isBaseMapInstance(target)\n ? new (Object.getPrototypeOf(target).constructor)(target)\n : new Map(target)\n : type === 3 /* DraftType.Set */\n ? Array.from(proxyDraft.setMap.values())\n : shallowCopy(target, proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.options);\n }\n if (proxyDraft) {\n // It's a proxy draft, let's create a shallow copy eagerly\n proxyDraft.finalized = true;\n try {\n ensureShallowCopy();\n }\n finally {\n proxyDraft.finalized = false;\n }\n }\n else {\n // It's not a proxy draft, let's use the target directly and let's see\n // lazily if we need to create a shallow copy\n currentValue = target;\n }\n forEach(currentValue, (key, value) => {\n if (proxyDraft && isEqual(get(proxyDraft.original, key), value))\n return;\n const newValue = getCurrent(value);\n if (newValue !== value) {\n if (currentValue === target)\n ensureShallowCopy();\n set(currentValue, key, newValue);\n }\n });\n if (type === 3 /* DraftType.Set */) {\n const value = (_a = proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.original) !== null && _a !== void 0 ? _a : currentValue;\n return !isBaseSetInstance(value)\n ? new (Object.getPrototypeOf(value).constructor)(currentValue)\n : new Set(currentValue);\n }\n return currentValue;\n}\nfunction current(target) {\n if (!isDraft(target)) {\n throw new Error(`current() is only used for Draft, parameter: ${target}`);\n }\n return getCurrent(target);\n}\n\n/**\n * `makeCreator(options)` to make a creator function.\n *\n * ## Example\n *\n * ```ts\n * import { makeCreator } from '../index';\n *\n * const baseState = { foo: { bar: 'str' }, arr: [] };\n * const create = makeCreator({ enableAutoFreeze: true });\n * const state = create(\n * baseState,\n * (draft) => {\n * draft.foo.bar = 'str2';\n * },\n * );\n *\n * expect(state).toEqual({ foo: { bar: 'str2' }, arr: [] });\n * expect(state).not.toBe(baseState);\n * expect(state.foo).not.toBe(baseState.foo);\n * expect(state.arr).toBe(baseState.arr);\n * expect(Object.isFrozen(state)).toBeTruthy();\n * ```\n */\nconst makeCreator = (arg) => {\n if (arg !== undefined &&\n Object.prototype.toString.call(arg) !== '[object Object]') {\n throw new Error(`Invalid options: ${String(arg)}, 'options' should be an object.`);\n }\n return function create(arg0, arg1, arg2) {\n var _a, _b, _c;\n if (typeof arg0 === 'function' && typeof arg1 !== 'function') {\n return function (base, ...args) {\n return create(base, (draft) => arg0.call(this, draft, ...args), arg1);\n };\n }\n const base = arg0;\n const mutate = arg1;\n let options = arg2;\n if (typeof arg1 !== 'function') {\n options = arg1;\n }\n if (options !== undefined &&\n Object.prototype.toString.call(options) !== '[object Object]') {\n throw new Error(`Invalid options: ${options}, 'options' should be an object.`);\n }\n options = Object.assign(Object.assign({}, arg), options);\n const state = isDraft(base) ? current(base) : base;\n const mark = Array.isArray(options.mark)\n ? ((value, types) => {\n for (const mark of options.mark) {\n if (typeof mark !== 'function') {\n throw new Error(`Invalid mark: ${mark}, 'mark' should be a function.`);\n }\n const result = mark(value, types);\n if (result) {\n return result;\n }\n }\n return;\n })\n : options.mark;\n const enablePatches = (_a = options.enablePatches) !== null && _a !== void 0 ? _a : false;\n const strict = (_b = options.strict) !== null && _b !== void 0 ? _b : false;\n const enableAutoFreeze = (_c = options.enableAutoFreeze) !== null && _c !== void 0 ? _c : false;\n const _options = {\n enableAutoFreeze,\n mark,\n strict,\n enablePatches,\n };\n if (!isDraftable(state, _options) &&\n typeof state === 'object' &&\n state !== null) {\n throw new Error(`Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.`);\n }\n const [draft, finalize] = draftify(state, _options);\n if (typeof arg1 !== 'function') {\n if (!isDraftable(state, _options)) {\n throw new Error(`Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.`);\n }\n return [draft, finalize];\n }\n let result;\n try {\n result = mutate(draft);\n }\n catch (error) {\n revokeProxy(getProxyDraft(draft));\n throw error;\n }\n const returnValue = (value) => {\n const proxyDraft = getProxyDraft(draft);\n if (!isDraft(value)) {\n if (value !== undefined &&\n !isEqual(value, draft) &&\n (proxyDraft === null || proxyDraft === void 0 ? void 0 : proxyDraft.operated)) {\n throw new Error(`Either the value is returned as a new non-draft value, or only the draft is modified without returning any value.`);\n }\n const rawReturnValue = value === null || value === void 0 ? void 0 : value[RAW_RETURN_SYMBOL];\n if (rawReturnValue) {\n const _value = rawReturnValue[0];\n if (_options.strict && typeof value === 'object' && value !== null) {\n handleReturnValue({\n rootDraft: proxyDraft,\n value,\n useRawReturn: true,\n });\n }\n return finalize([_value]);\n }\n if (value !== undefined) {\n if (typeof value === 'object' && value !== null) {\n handleReturnValue({ rootDraft: proxyDraft, value });\n }\n return finalize([value]);\n }\n }\n if (value === draft || value === undefined) {\n return finalize([]);\n }\n const returnedProxyDraft = getProxyDraft(value);\n if (_options === returnedProxyDraft.options) {\n if (returnedProxyDraft.operated) {\n throw new Error(`Cannot return a modified child draft.`);\n }\n return finalize([current(value)]);\n }\n return finalize([value]);\n };\n if (result instanceof Promise) {\n return result.then(returnValue, (error) => {\n revokeProxy(getProxyDraft(draft));\n throw error;\n });\n }\n return returnValue(result);\n };\n};\n\n/**\n * `create(baseState, callback, options)` to create the next state\n *\n * ## Example\n *\n * ```ts\n * import { create } from '../index';\n *\n * const baseState = { foo: { bar: 'str' }, arr: [] };\n * const state = create(\n * baseState,\n * (draft) => {\n * draft.foo.bar = 'str2';\n * },\n * );\n *\n * expect(state).toEqual({ foo: { bar: 'str2' }, arr: [] });\n * expect(state).not.toBe(baseState);\n * expect(state.foo).not.toBe(baseState.foo);\n * expect(state.arr).toBe(baseState.arr);\n * ```\n */\nconst create = makeCreator();\n\n/**\n * `apply(state, patches)` to apply patches to state\n *\n * ## Example\n *\n * ```ts\n * import { create, apply } from '../index';\n *\n * const baseState = { foo: { bar: 'str' }, arr: [] };\n * const [state, patches] = create(\n * baseState,\n * (draft) => {\n * draft.foo.bar = 'str2';\n * },\n * { enablePatches: true }\n * );\n * expect(state).toEqual({ foo: { bar: 'str2' }, arr: [] });\n * expect(patches).toEqual([{ op: 'replace', path: ['foo', 'bar'], value: 'str2' }]);\n * expect(state).toEqual(apply(baseState, patches));\n * ```\n */\nfunction apply(state, patches, applyOptions) {\n let i;\n for (i = patches.length - 1; i >= 0; i -= 1) {\n const { value, op, path } = patches[i];\n if ((!path.length && op === Operation.Replace) ||\n (path === '' && op === Operation.Add)) {\n state = value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const mutate = (draft) => {\n patches.forEach((patch) => {\n const { path: _path, op } = patch;\n const path = unescapePath(_path);\n let base = draft;\n for (let index = 0; index < path.length - 1; index += 1) {\n const parentType = getType(base);\n let key = path[index];\n if (typeof key !== 'string' && typeof key !== 'number') {\n key = String(key);\n }\n if (((parentType === 0 /* DraftType.Object */ ||\n parentType === 1 /* DraftType.Array */) &&\n (key === '__proto__' || key === 'constructor')) ||\n (typeof base === 'function' && key === 'prototype')) {\n throw new Error(`Patching reserved attributes like __proto__ and constructor is not allowed.`);\n }\n // use `index` in Set draft\n base = get(parentType === 3 /* DraftType.Set */ ? Array.from(base) : base, key);\n if (typeof base !== 'object') {\n throw new Error(`Cannot apply patch at '${path.join('/')}'.`);\n }\n }\n const type = getType(base);\n // ensure the original patch is not modified.\n const value = deepClone(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case Operation.Replace:\n switch (type) {\n case 2 /* DraftType.Map */:\n return base.set(key, value);\n case 3 /* DraftType.Set */:\n throw new Error(`Cannot apply replace patch to set.`);\n default:\n return (base[key] = value);\n }\n case Operation.Add:\n switch (type) {\n case 1 /* DraftType.Array */:\n // If the \"-\" character is used to\n // index the end of the array (see [RFC6901](https://datatracker.ietf.org/doc/html/rfc6902)),\n // this has the effect of appending the value to the array.\n return key === '-'\n ? base.push(value)\n : base.splice(key, 0, value);\n case 2 /* DraftType.Map */:\n return base.set(key, value);\n case 3 /* DraftType.Set */:\n return base.add(value);\n default:\n return (base[key] = value);\n }\n case Operation.Remove:\n switch (type) {\n case 1 /* DraftType.Array */:\n return base.splice(key, 1);\n case 2 /* DraftType.Map */:\n return base.delete(key);\n case 3 /* DraftType.Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n throw new Error(`Unsupported patch operation: ${op}.`);\n }\n });\n };\n if (isDraft(state)) {\n if (applyOptions !== undefined) {\n throw new Error(`Cannot apply patches with options to a draft.`);\n }\n mutate(state);\n return state;\n }\n return create(state, mutate, Object.assign(Object.assign({}, applyOptions), { enablePatches: false }));\n}\n\n/**\n * `original(draft)` to get original state in the draft mutation function.\n *\n * ## Example\n *\n * ```ts\n * import { create, original } from '../index';\n *\n * const baseState = { foo: { bar: 'str' }, arr: [] };\n * const state = create(\n * baseState,\n * (draft) => {\n * draft.foo.bar = 'str2';\n * expect(original(draft.foo)).toEqual({ bar: 'str' });\n * }\n * );\n * ```\n */\nfunction original(target) {\n const proxyDraft = getProxyDraft(target);\n if (!proxyDraft) {\n throw new Error(`original() is only used for a draft, parameter: ${target}`);\n }\n return proxyDraft.original;\n}\n\n/**\n * Use rawReturn() to wrap the return value to skip the draft check and thus improve performance.\n *\n * ## Example\n *\n * ```ts\n * import { create, rawReturn } from '../index';\n *\n * const baseState = { foo: { bar: 'str' }, arr: [] };\n * const state = create(\n * baseState,\n * (draft) => {\n * return rawReturn(baseState);\n * },\n * );\n * expect(state).toBe(baseState);\n * ```\n */\nfunction rawReturn(value) {\n if (arguments.length === 0) {\n throw new Error('rawReturn() must be called with a value.');\n }\n if (arguments.length > 1) {\n throw new Error('rawReturn() must be called with one argument.');\n }\n if (value !== undefined &&\n (typeof value !== 'object' || value === null)) {\n console.warn('rawReturn() must be called with an object(including plain object, arrays, Set, Map, etc.) or `undefined`, other types do not need to be returned via rawReturn().');\n }\n return {\n [RAW_RETURN_SYMBOL]: [value],\n };\n}\n\nconst constructorString = Object.prototype.constructor.toString();\n/**\n * Check if the value is a simple object(No prototype chain object or iframe same-origin object),\n * support case: https://github.com/unadlib/mutative/issues/17\n */\nconst isSimpleObject = (value) => {\n if (!value || typeof value !== 'object')\n return false;\n const prototype = Object.getPrototypeOf(value);\n if (prototype === null) {\n return true;\n }\n const constructor = Object.hasOwnProperty.call(prototype, 'constructor') &&\n prototype.constructor;\n if (constructor === Object)\n return true;\n return (typeof constructor === 'function' &&\n Function.toString.call(constructor) === constructorString);\n};\nconst markSimpleObject = (value) => {\n if (isSimpleObject(value)) {\n return dataTypes.immutable;\n }\n return;\n};\n\n/**\n * Cast a value to an Draft type value.\n */\nfunction castDraft(value) {\n return value;\n}\n/**\n * Cast a value to an Immutable type value.\n */\nfunction castImmutable(value) {\n return value;\n}\n/**\n * Cast a value to an Mutable type value.\n */\nfunction castMutable(draft) {\n return draft;\n}\n\nexport { apply, castDraft, castImmutable, castMutable, create, current, isDraft, isDraftable, makeCreator, markSimpleObject, original, rawReturn, unsafe };\n//# sourceMappingURL=mutative.esm.mjs.map\n","import { create } from 'mutative';\n\nexport function produceState(state, fn) {\n state.set(create(state.get(), fn));\n}","import { RumiousReactor } from './reactive.js';\nimport { RumiousReducer } from './reducer.js';\nimport { produceState } from './produce.js';\n\nconst ROOT_STATE = Symbol('ROOT_STATE');\n\nexport class RumiousState {\n constructor(target, reactor = null) {\n this.value = target;\n this.reactor = reactor ?? new RumiousReactor(this, []);\n }\n\n produce(recipe) {\n return produceState(this, recipe);\n }\n\n\n reducer(...args) {\n let computedObj;\n if (args.length === 1) {\n computedObj = new RumiousReducer(this, \"\", args[0])\n } else {\n computedObj = new RumiousReducer(this, args[0], args[1])\n }\n return computedObj.trigger.bind(computedObj);\n }\n\n setObjectByPath(path = \"\", value) {\n if (path.length == 0) {\n this.value = value;\n return;\n }\n \n if (typeof path !== 'string' || !path) {\n throw new Error('Invalid path');\n }\n\n let keys = path.split('.');\n let obj = this.value;\n\n for (let i = 0; i < keys.length - 1; i++) {\n let key = keys[i];\n if (!(key in obj)) {\n obj[key] = {};\n }\n obj = obj[key];\n }\n\n obj[keys[keys.length - 1]] = value;\n }\n\n set(...args) {\n if (args.length === 1) {\n this.value = args[0];\n } else {\n let path = args[0];\n let value = args[1];\n this.setObjectByPath(path, value);\n }\n\n this.reactor.react();\n }\n\n get() {\n return this.value;\n }\n}\n\nexport function createState(value) {\n return new RumiousState(value);\n}\n\nexport function isState(obj) {\n return obj instanceof RumiousState;\n}","export function watcher(state, callback){\n state.reactor.addBinding(callback);\n}"],"names":["RumiousRenderContext","target","_classCallCheck","_createClass","key","value","find","name","get","RumiousComponent","element","props","renderContext","renderer","wrapped","prepare","arguments","length","undefined","template","requestRender","fragment","document","createDocumentFragment","appendChild","onRender","_requestCleanUp","_asyncToGenerator","_regeneratorRuntime","mark","_callee","cloned","wrap","_callee$","_context","prev","next","cloneNode","replaceWith","firstChild","removeChild","stop","requestCleanUp","apply","onInit","onCreate","onUpdate","onDestroy","isComponent","component","Object","getPrototypeOf","RumiousElement","type","children","RumiousElementList","list","forEach","callback","isCamelCase","str","camelCaseRegex","test","isFunction","object","RumiousDirective","init","console","warn","RumiousEventBindingDirective","_RumiousDirective","_callSuper","_inherits","_init","dom","_this","fn","getHandler","concat","handler","bind","objectName","addEventListener","_x","_x2","RumiousPropsBindingDirective","_RumiousDirective2","_init2","_callee2","_this2","_this$value$evaluator","_this$value","currentStateValue","currentState","_callee2$","_context2","evaluator","call","reactor","addBinding","_this2$value$evaluato","_this2$value","bindAttr","_x3","_x4","normalizeValue","_typeof","_value$toString","_value$toString2","toString","_bindAttr","_callee3","_callee3$","_context3","t0","innerHTML","abrupt","_x5","_x6","directives","on","event","attr","registerDirective","_directives$type","createDirective","createElement","_len","Array","_key","createComponent","createFragment","normalizeChildren","createTextElement","text","nodeValue","_objectSpread","_len2","_key2","map","child","window","RUMIOUS_JSX_SUPPORT","RumiousComponentElement","_HTMLElement","instance","componentConstructor","connectedCallback","disconnectCallback","_wrapNativeSuper","HTMLElement","createComponentElement","customElements","define","renderComponent","componentElement","handleComponentElement","container","render","handleFragmentOrElementList","handleTextElement","createTextNode","handleRegularElement","entries","_ref","_ref2","_slicedToArray","propValue","startsWith","substring","toLowerCase","setElementProps","handleDirective","directive","nodeType","Node","TEXT_NODE","setAttribute","RumiousApp","root","configs","RumiousReactor","bindings","react","push","RumiousReducer","state","path","trigger","set","Operation","Remove","Replace","Add","produceState","create","RumiousState","produce","recipe","reducer","computedObj","setObjectByPath","Error","keys","split","obj","i","createState","isState","watcher"],"mappings":"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","x_google_ignoreList":[12]}
|