svelte-specma 1.1.4 → 1.1.5
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/CHANGELOG.md
CHANGED
|
@@ -495,7 +495,8 @@ function collSpecable(initialValue, {
|
|
|
495
495
|
const {
|
|
496
496
|
getAncestor
|
|
497
497
|
} = _extra;
|
|
498
|
-
const
|
|
498
|
+
const collDefiner = [fields, spec, initialValue].find(isColl);
|
|
499
|
+
const collType = typeOf(collDefiner);
|
|
499
500
|
const isRequired = required && !isOpt(required);
|
|
500
501
|
const spreadGetId = getSpread(getId);
|
|
501
502
|
const spreadSpec = getSpread(spec);
|
|
@@ -553,6 +554,7 @@ function collSpecable(initialValue, {
|
|
|
553
554
|
const $childrenValues = $childrenEntries.map(([key, state]) => [key, state.value]);
|
|
554
555
|
const childrenValue = fromEntries($childrenValues, collType);
|
|
555
556
|
const value = isSpread ? childrenValue : merge(collValue, childrenValue);
|
|
557
|
+
isUndef = value === undefined;
|
|
556
558
|
ownSpecable.set(value);
|
|
557
559
|
return value;
|
|
558
560
|
});
|
|
@@ -561,7 +563,6 @@ function collSpecable(initialValue, {
|
|
|
561
563
|
|
|
562
564
|
const status = flexDerived(aggregateStatusStores(), $statusStores => {
|
|
563
565
|
const [, $submitting, $ownSpecable, ...$children] = $statusStores;
|
|
564
|
-
const isUndef = $ownSpecable.value === undefined;
|
|
565
566
|
const combined = isUndef ? $ownSpecable : [$ownSpecable, ...$children].reduce(combineChildren);
|
|
566
567
|
if (combined.active !== false) ownSpecable.activate();
|
|
567
568
|
const {
|
|
@@ -606,8 +607,8 @@ function collSpecable(initialValue, {
|
|
|
606
607
|
}
|
|
607
608
|
|
|
608
609
|
function setValue(coll, partial = false) {
|
|
609
|
-
isUndef = coll === undefined;
|
|
610
610
|
collValue = partial && !isSpread ? merge(collValue, coll) : coll;
|
|
611
|
+
isUndef = collValue === undefined;
|
|
611
612
|
ownSpecable.set(collValue);
|
|
612
613
|
const childrenEntries = entries(childrenStores);
|
|
613
614
|
childrenEntries.forEach(([key, store]) => {
|
|
@@ -667,6 +668,7 @@ function collSpecable(initialValue, {
|
|
|
667
668
|
activate,
|
|
668
669
|
|
|
669
670
|
add(coll) {
|
|
671
|
+
if (coll !== undefined) isUndef = false;
|
|
670
672
|
addChildren(coll);
|
|
671
673
|
return this;
|
|
672
674
|
},
|
|
@@ -851,9 +853,14 @@ function normalizeArgs(storeOrArgs) {
|
|
|
851
853
|
|
|
852
854
|
function specable(initialValue, options = {}, _extra) {
|
|
853
855
|
if (isStore(initialValue)) return initialValue;
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
856
|
+
const collCandidate = options.fields || options.spec || initialValue;
|
|
857
|
+
|
|
858
|
+
if (isColl(collCandidate)) {
|
|
859
|
+
return collSpecable(initialValue, options, _extends({}, _extra, {
|
|
860
|
+
specable
|
|
861
|
+
}));
|
|
862
|
+
}
|
|
863
|
+
|
|
857
864
|
return predSpecable(initialValue, options, _extra);
|
|
858
865
|
}
|
|
859
866
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svelte-specma.modern.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writable(_initialValue);\n\n const store = derived(\n [active, value, context],\n ([$active, $value, $context], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n ownSpecable.set(value);\n return value;\n });\n\n const aggregateStatusStores = () => [\n derivedValue,\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [, $submitting, $ownSpecable, ...$children] = $statusStores;\n\n const isUndef = $ownSpecable.value === undefined;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, partial = false) {\n isUndef = coll === undefined;\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\n ownSpecable.set(collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store.set(newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildren = fromEntries(\n entries(coll).filter(([key]) => !childrenKeys.includes(key)),\n collType\n );\n addChildren(missingChildren);\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, false);\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, partial);\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: status.subscribe,\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n if (isColl(options.spec || initialValue))\n return collSpecable(initialValue, options, { ..._extra, specable });\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","args","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","changePred","id","required","spec","onSubmit","_extra","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","getStoreValue","currPromise","_initialValue","active","submitting","$active","$value","$context","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","activate","bool","tick","res","submit","currValue","reset","newValue","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","ownSpecable","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$submitting","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","childrenEntries","childrenKeys","missingChildren","collKeys","unusedIds","childStore","storesToActivate","promises","all","catch","add","getChild","reduced","getChildren","remove","newInitialValue","liftError","parentId","rest","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"svelte-specma.modern.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writable(_initialValue);\n\n const store = derived(\n [active, value, context],\n ([$active, $value, $context], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collDefiner = [fields, spec, initialValue].find(isColl);\n const collType = typeOf(collDefiner);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n isUndef = value === undefined;\n ownSpecable.set(value);\n return value;\n });\n\n const aggregateStatusStores = () => [\n derivedValue,\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [, $submitting, $ownSpecable, ...$children] = $statusStores;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, partial = false) {\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\n isUndef = collValue === undefined;\n ownSpecable.set(collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store.set(newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildren = fromEntries(\n entries(coll).filter(([key]) => !childrenKeys.includes(key)),\n collType\n );\n addChildren(missingChildren);\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n if (coll !== undefined) isUndef = false;\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, false);\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, partial);\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: status.subscribe,\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n const collCandidate = options.fields || options.spec || initialValue;\n\n if (isColl(collCandidate)) {\n return collSpecable(initialValue, options, { ..._extra, specable });\n }\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","args","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","changePred","id","required","spec","onSubmit","_extra","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","getStoreValue","currPromise","_initialValue","active","submitting","$active","$value","$context","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","activate","bool","tick","res","submit","currValue","reset","newValue","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","collDefiner","find","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","ownSpecable","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$submitting","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","childrenEntries","childrenKeys","missingChildren","collKeys","unusedIds","childStore","storesToActivate","promises","all","catch","add","getChild","reduced","getChildren","remove","newInitialValue","liftError","parentId","rest","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options","collCandidate"],"mappings":"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"}
|
|
@@ -707,7 +707,8 @@
|
|
|
707
707
|
var isUndef = collValue === undefined;
|
|
708
708
|
var _extra2 = _extra,
|
|
709
709
|
_getAncestor = _extra2.getAncestor;
|
|
710
|
-
var
|
|
710
|
+
var collDefiner = [fields, spec, initialValue].find(isColl);
|
|
711
|
+
var collType = typeOf(collDefiner);
|
|
711
712
|
var isRequired = required && !isOpt(required);
|
|
712
713
|
var spreadGetId = getSpread(getId);
|
|
713
714
|
var spreadSpec = getSpread(spec);
|
|
@@ -773,6 +774,7 @@
|
|
|
773
774
|
});
|
|
774
775
|
var childrenValue = fromEntries($childrenValues, collType);
|
|
775
776
|
var value = isSpread ? childrenValue : merge(collValue, childrenValue);
|
|
777
|
+
isUndef = value === undefined;
|
|
776
778
|
ownSpecable.set(value);
|
|
777
779
|
return value;
|
|
778
780
|
});
|
|
@@ -785,7 +787,6 @@
|
|
|
785
787
|
var $submitting = $statusStores[1],
|
|
786
788
|
$ownSpecable = $statusStores[2],
|
|
787
789
|
$children = $statusStores.slice(3);
|
|
788
|
-
var isUndef = $ownSpecable.value === undefined;
|
|
789
790
|
var combined = isUndef ? $ownSpecable : [$ownSpecable].concat($children).reduce(combineChildren);
|
|
790
791
|
if (combined.active !== false) ownSpecable.activate();
|
|
791
792
|
var value = $ownSpecable.value,
|
|
@@ -844,8 +845,8 @@
|
|
|
844
845
|
partial = false;
|
|
845
846
|
}
|
|
846
847
|
|
|
847
|
-
isUndef = coll === undefined;
|
|
848
848
|
collValue = partial && !isSpread ? merge(collValue, coll) : coll;
|
|
849
|
+
isUndef = collValue === undefined;
|
|
849
850
|
ownSpecable.set(collValue);
|
|
850
851
|
var childrenEntries = entries(childrenStores);
|
|
851
852
|
childrenEntries.forEach(function (_ref5) {
|
|
@@ -906,6 +907,7 @@
|
|
|
906
907
|
stores: childrenStores,
|
|
907
908
|
activate: activate,
|
|
908
909
|
add: function add(coll) {
|
|
910
|
+
if (coll !== undefined) isUndef = false;
|
|
909
911
|
addChildren(coll);
|
|
910
912
|
return this;
|
|
911
913
|
},
|
|
@@ -1114,9 +1116,14 @@
|
|
|
1114
1116
|
}
|
|
1115
1117
|
|
|
1116
1118
|
if (isStore(initialValue)) return initialValue;
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1119
|
+
var collCandidate = options.fields || options.spec || initialValue;
|
|
1120
|
+
|
|
1121
|
+
if (isColl(collCandidate)) {
|
|
1122
|
+
return collSpecable(initialValue, options, _extends({}, _extra, {
|
|
1123
|
+
specable: specable
|
|
1124
|
+
}));
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1120
1127
|
return predSpecable(initialValue, options, _extra);
|
|
1121
1128
|
}
|
|
1122
1129
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svelte-specma.umd.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writable(_initialValue);\n\n const store = derived(\n [active, value, context],\n ([$active, $value, $context], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n ownSpecable.set(value);\n return value;\n });\n\n const aggregateStatusStores = () => [\n derivedValue,\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [, $submitting, $ownSpecable, ...$children] = $statusStores;\n\n const isUndef = $ownSpecable.value === undefined;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, partial = false) {\n isUndef = coll === undefined;\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\n ownSpecable.set(collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store.set(newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildren = fromEntries(\n entries(coll).filter(([key]) => !childrenKeys.includes(key)),\n collType\n );\n addChildren(missingChildren);\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, false);\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, partial);\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: status.subscribe,\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n if (isColl(options.spec || initialValue))\n return collSpecable(initialValue, options, { ..._extra, specable });\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","_extra","submit","onSubmit","submitting","activate","currValue","getStoreValue","bool","active","tick","currPromise","res","changePred","id","required","spec","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","_initialValue","$active","$value","$context","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","reset","newValue","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","ownSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$submitting","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","childrenEntries","childrenKeys","missingChildren","collKeys","unusedIds","childStore","storesToActivate","promises","all","add","getChild","reduced","getChildren","remove","newInitialValue","liftError","parentId","rest","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","args","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEA,IAAMA,UAAQ,GAAG,SAAXA,QAAW,CAACC,CAAD;EAAA,SAAOA,CAAP;EAAA,CAAjB;;EACA,IAAMC,IAAI,GAAG,SAAPA,IAAO,GAAM,EAAnB;;EAEA,SAASC,WAAT,CAAqBC,aAArB,EAAyCC,EAAzC,EAAwDC,YAAxD,EAAsE;EAAA,MAAjDF,aAAiD;EAAjDA,IAAAA,aAAiD,GAAjC,EAAiC;EAAA;;EAAA,MAA7BC,EAA6B;EAA7BA,IAAAA,EAA6B,GAAxBL,UAAwB;EAAA;;EACpE;EACA,MAAIO,OAAO,GAAGH,aAAd;EACA;EACF;;EACE,MAAMI,OAAO,GAAGC,cAAQ,CAACL,aAAD,CAAxB;EAEA;EACF;EACA;EACA;;EACE,MAAMM,IAAI,GAAGL,EAAE,CAACM,MAAH,GAAY,CAAzB;EAEA;;EACA,MAAMC,SAAS,GAAGC,cAAQ,CAACP,YAAD,EAAe,UAACQ,OAAD,EAAa;EACpD,QAAIC,WAAW,GAAG,KAAlB;EAEA,QAAIC,OAAO,GAAGd,IAAd;EACA,QAAIe,OAAO,GAAG,CAAd;EACA,QAAIC,MAAM,GAAG,IAAIC,GAAJ,EAAb;EACA,QAAIC,MAAM,GAAG,IAAID,GAAJ,EAAb;EAEA;EACJ;;EACI,aAASE,YAAT,CAAsBC,MAAtB,EAAmC;EAAA,UAAbA,MAAa;EAAbA,QAAAA,MAAa,GAAJ,EAAI;EAAA;;EACjCC,MAAAA,cAAc,CAACD,MAAD,CAAd;EACAJ,MAAAA,MAAM,GAAG,IAAIC,GAAJ,CAAQG,MAAM,CAACE,GAAP,CAAW,UAACC,KAAD;EAAA,eAAW,CAACA,KAAD,EAAQP,MAAM,CAACQ,GAAP,CAAWD,KAAX,CAAR,CAAX;EAAA,OAAX,CAAR,CAAT;EACD;;EAED,aAASF,cAAT,CAAwBI,UAAxB,EAAyC;EAAA,UAAjBA,UAAiB;EAAjBA,QAAAA,UAAiB,GAAJ,EAAI;EAAA;;EACvCT,MAAAA,MAAM,CAACU,OAAP,CAAe,UAACC,KAAD,EAAQJ,KAAR,EAAkB;EAC/B,YAAI,CAACE,UAAU,CAACG,QAAX,CAAoBL,KAApB,CAAD,IAA+BI,KAAnC,EAA0CA,KAAK;EAChD,OAFD;EAGD;;EAED,aAASE,iBAAT,GAA6B;EAC3Bb,MAAAA,MAAM,CAACU,OAAP,CAAe,UAACC,KAAD;EAAA,eAAWA,KAAK,IAAIA,KAAK,EAAzB;EAAA,OAAf;EACD;EAED;;;EACA,aAASG,YAAT,CAAsBV,MAAtB,EAAmC;EAAA,UAAbA,MAAa;EAAbA,QAAAA,MAAa,GAAJ,EAAI;EAAA;;EACjCF,MAAAA,MAAM,GAAG,IAAID,GAAJ,CAAQG,MAAM,CAACE,GAAP,CAAW,UAACC,KAAD;EAAA,eAAW,CAACA,KAAD,EAAQL,MAAM,CAACM,GAAP,CAAWD,KAAX,CAAR,CAAX;EAAA,OAAX,CAAR,CAAT;EACD;EAED;EACJ;;;EACI,aAASQ,IAAT,GAAgB;EACd,UAAIhB,OAAJ,EAAa;EACbD,MAAAA,OAAO;;EACP,UAAMkB,IAAI,GAAG3B,OAAO,CAAC4B,MAAR,CACX,UAACC,GAAD,EAAMX,KAAN;EAAA,eAAiBL,MAAM,CAACiB,GAAP,CAAWZ,KAAX,cAAwBW,GAAxB,GAA6BhB,MAAM,CAACM,GAAP,CAAWD,KAAX,CAA7B,KAAkDW,GAAnE;EAAA,OADW,EAEX,EAFW,CAAb;;EAIA,UAAME,MAAM,GAAGjC,EAAE,CAAC6B,IAAD,EAAOpB,OAAP,CAAjB;;EAEA,UAAIJ,IAAJ,EAAU;EACRI,QAAAA,OAAO,CAACwB,MAAD,CAAP;EACD,OAFD,MAEO;EACLtB,QAAAA,OAAO,GAAG,OAAOsB,MAAP,KAAkB,UAAlB,GAA+BA,MAA/B,GAAwCpC,IAAlD;EACD;EACF;;EAED,QAAMqC,WAAW,GAAG/B,OAAO,CAACgC,SAAR,CAAkB,UAAClB,MAAD,EAAY;EAChDD,MAAAA,YAAY,CAACC,MAAD,CAAZ;EACAU,MAAAA,YAAY,CAACV,MAAD,CAAZ;EAEA;EACN;EACA;;EACMf,MAAAA,OAAO,GAAG,EAAV;EACAe,MAAAA,MAAM,CAACM,OAAP,CAAe,UAACH,KAAD,EAAQgB,CAAR,EAAc;EAC3BlC,QAAAA,OAAO,CAACkC,CAAD,CAAP,GAAahB,KAAb;;EAEA,YAAI,CAACP,MAAM,CAACQ,GAAP,CAAWD,KAAX,CAAL,EAAwB;EACtBP,UAAAA,MAAM,CAACwB,GAAP,CACEjB,KADF,EAEEA,KAAK,CAACe,SAAN,CACE,UAACG,KAAD,EAAW;EACTvB,YAAAA,MAAM,CAACsB,GAAP,CAAWjB,KAAX,EAAkBkB,KAAlB;EACA1B,YAAAA,OAAO,IAAI,EAAE,KAAKwB,CAAP,CAAX;EACA,gBAAI1B,WAAJ,EAAiBkB,IAAI;EACtB,WALH,EAME,YAAM;EACJhB,YAAAA,OAAO,IAAI,KAAKwB,CAAhB;EACD,WARH,CAFF;EAaD;EACF,OAlBD;EAmBA,UAAI1B,WAAJ,EAAiBkB,IAAI;EACtB,KA5BmB,CAApB;EA8BAlB,IAAAA,WAAW,GAAG,IAAd;EACAkB,IAAAA,IAAI;EAEJ,WAAO,SAASW,IAAT,GAAgB;EACrBL,MAAAA,WAAW;EACXR,MAAAA,iBAAiB;EACjBf,MAAAA,OAAO;EACR,KAJD;EAKD,GAtFyB,CAA1B;EAwFA;;EACA,WAAS6B,OAAT,GAA4B;EAAA;EAC1BrC,IAAAA,OAAO,CAACsC,MAAR,CAAe,UAACC,IAAD;EAAA,aAAUA,IAAI,CAACC,MAAL,CAAY,UAACvB,KAAD;EAAA,eAAW,CAAC,0BAAOK,QAAP,CAAgBL,KAAhB,CAAZ;EAAA,OAAZ,CAAV;EAAA,KAAf;EACD;EAED;;;EACA,WAASwB,OAAT,GAA4B;EAAA;EAC1BzC,IAAAA,OAAO,CAACsC,MAAR,CAAe,UAACC,IAAD;EAAA,uBAAcA,IAAd;EAAA,KAAf;EACD;;EAED,SAAO;EACLF,IAAAA,OAAO,EAAPA,OADK;EAELI,IAAAA,OAAO,EAAPA,OAFK;EAGLP,IAAAA,GAAG,EAAElC,OAAO,CAACkC,GAHR;EAILpB,IAAAA,MAAM,EAAEd,OAJH;EAKLgC,IAAAA,SAAS,EAAE5B,SAAS,CAAC4B,SALhB;EAMLM,IAAAA,MAAM,EAAEtC,OAAO,CAACsC;EANX,GAAP;EAQD;;EC3HM,IAAM9C,QAAQ,GAAG,SAAXA,QAAW,CAACC,CAAD;EAAA,SAAOA,CAAP;EAAA,CAAjB;EACA,IAAMiD,MAAM,GAAG,SAATA,MAAS,CAACjD,CAAD;EAAA,SAAO,CAAC,OAAD,EAAU,KAAV,EAAiB,QAAjB,EAA2B6B,QAA3B,CAAoCqB,MAAM,CAAClD,CAAD,CAA1C,CAAP;EAAA,CAAf;EACA,IAAMmD,MAAM,GAAG,SAATA,MAAS,CAACnD,CAAD;EAAA,SAAO,OAAOA,CAAP,KAAa,UAApB;EAAA,CAAf;EACA,IAAMoD,OAAO,GAAG,SAAVA,OAAU,CAACpD,CAAD;EAAA,SAAOA,CAAC,IAAIA,CAAC,CAACuC,SAAP,IAAoBY,MAAM,CAACnD,CAAC,CAACuC,SAAH,CAAjC;EAAA,CAAhB;EAEA,IAAMW,MAAM,GAAG,SAATA,MAAS,CAACG,GAAD;EAAA,SACnB,GAAGC,QAAH,CAAYC,IAAZ,CAAiBF,GAAjB,EAAsBG,KAAtB,CAA4B,GAA5B,EAAiC,CAAjC,EAAoCC,KAApC,CAA0C,CAA1C,EAA6C,CAAC,CAA9C,EAAiDC,WAAjD,EADmB;EAAA,CAAf;EAGA,SAASC,OAAT,CAAiBC,IAAjB,EAAuB;EAC5B,MAAMxD,EAAE,GAAG;EACTyD,IAAAA,KAAK,EAAE;EAAA,aAAMD,IAAI,CAACrC,GAAL,CAAS,UAACuC,CAAD,EAAItB,CAAJ;EAAA,eAAU,CAACA,CAAD,EAAIsB,CAAJ,CAAV;EAAA,OAAT,CAAN;EAAA,KADE;EAETvC,IAAAA,GAAG,EAAE;EAAA,uBAAUqC,IAAI,CAACD,OAAL,EAAV;EAAA,KAFI;EAGTI,IAAAA,MAAM,EAAE;EAAA,aAAMC,MAAM,CAACL,OAAP,CAAeC,IAAf,CAAN;EAAA;EAHC,IAITV,MAAM,CAACU,IAAD,CAJG,CAAX;EAMA,SAAOxD,EAAE,GAAGA,EAAE,CAACwD,IAAD,CAAL,GAAc,EAAvB;EACD;EAEM,SAASK,WAAT,CAAqBN,OAArB,EAA8BO,MAA9B,EAAsC;EAC3C,MAAM9D,EAAE,GAAG;EACTyD,IAAAA,KAAK,EAAE;EAAA,aAAMF,OAAO,CAACpC,GAAR,CAAY;EAAA,YAAI4C,GAAJ;EAAA,eAAaA,GAAb;EAAA,OAAZ,CAAN;EAAA,KADE;EAET5C,IAAAA,GAAG,EAAE;EAAA,aAAM,IAAIL,GAAJ,CAAQyC,OAAR,CAAN;EAAA,KAFI;EAGTI,IAAAA,MAAM,EAAE;EAAA,aAAMC,MAAM,CAACC,WAAP,CAAmBN,OAAnB,CAAN;EAAA;EAHC,IAITO,MAJS,CAAX;EAKA,SAAO9D,EAAE,GAAGA,EAAE,EAAL,GAAU6D,WAAW,CAACN,OAAD,EAAU,KAAV,CAA9B;EACD;EAEM,SAASxC,MAAT,CAAgByC,IAAhB,EAAsB;EAC3B,MAAMxD,EAAE,GAAG;EACTyD,IAAAA,KAAK,EAAE;EAAA,uBAAUD,IAAV;EAAA,KADE;EAETrC,IAAAA,GAAG,EAAE;EAAA,uBAAUqC,IAAI,CAACzC,MAAL,EAAV;EAAA,KAFI;EAGT4C,IAAAA,MAAM,EAAE;EAAA,aAAMC,MAAM,CAAC7C,MAAP,CAAcyC,IAAd,CAAN;EAAA;EAHC,IAITV,MAAM,CAACU,IAAD,CAJG,CAAX;EAMA,SAAOxD,EAAE,GAAGA,EAAE,CAACwD,IAAD,CAAL,GAAc,EAAvB;EACD;EAEM,SAASQ,IAAT,CAAcR,IAAd,EAAoB;EACzB,MAAMxD,EAAE,GAAG;EACTyD,IAAAA,KAAK,EAAE;EAAA,aAAMD,IAAI,CAACrC,GAAL,CAAS,UAACuC,CAAD,EAAItB,CAAJ;EAAA,eAAUA,CAAV;EAAA,OAAT,CAAN;EAAA,KADE;EAETjB,IAAAA,GAAG,EAAE;EAAA,uBAAUqC,IAAI,CAACQ,IAAL,EAAV;EAAA,KAFI;EAGTL,IAAAA,MAAM,EAAE;EAAA,aAAMC,MAAM,CAACI,IAAP,CAAYR,IAAZ,CAAN;EAAA;EAHC,IAITV,MAAM,CAACU,IAAD,CAJG,CAAX;EAMA,SAAOxD,EAAE,GAAGA,EAAE,CAACwD,IAAD,CAAL,GAAc,EAAvB;EACD;EAED;;EACO,SAASS,KAAT,GAAwB;EAC7B,MAAMC,KAAK,GAAG,yBAAKvB,MAAL,CAAYE,MAAZ,CAAd;EACA,MAAMsB,IAAI,GAAGrB,MAAM,CAACoB,KAAK,CAAC,CAAD,CAAN,CAAnB;;EACA,MAAI,CAACA,KAAK,CAACE,KAAN,CAAY,UAACZ,IAAD;EAAA,WAAUV,MAAM,CAACU,IAAD,CAAN,KAAiBW,IAA3B;EAAA,GAAZ,CAAL,EAAmD;EACjD,QAAME,SAAS,GAAGH,KAAK,CAAC/C,GAAN,CAAU2B,MAAV,EAAkBwB,IAAlB,CAAuB,IAAvB,CAAlB;EACA,UAAM,IAAIC,SAAJ,kDAC2CF,SAD3C,QAAN;EAGD;;EAED,MAAMrE,EAAE,GAAG;EACTyD,IAAAA,KAAK,EAAE;EAAA,aACLS,KAAK,CAACpC,MAAN,CAAa,UAACC,GAAD,EAAMyB,IAAN,EAAe;EAC1B,YAAIA,IAAI,CAAClD,MAAL,IAAeyB,GAAG,CAACzB,MAAvB,EAA+B,OAAOkD,IAAP;EAC/B,yBAAWA,IAAX,EAAoBzB,GAAG,CAACsB,KAAJ,CAAUG,IAAI,CAAClD,MAAf,CAApB;EACD,OAHD,EAGG,EAHH,CADK;EAAA,KADE;EAMTa,IAAAA,GAAG,EAAE;EAAA,aAAM,IAAIL,GAAJ,CAAQoD,KAAK,CAAC/C,GAAN,CAAU,UAACqC,IAAD;EAAA,eAAUA,IAAI,CAACD,OAAL,EAAV;EAAA,OAAV,CAAR,CAAN;EAAA,KANI;EAOTI,IAAAA,MAAM,EAAE;EAAA,aAAMC,MAAM,CAACY,MAAP,OAAAZ,MAAM,GAAQ,EAAR,SAAeM,KAAf,EAAZ;EAAA;EAPC,IAQTC,IARS,CAAX;EAUA,MAAI,CAACnE,EAAL,EAAS,MAAM,IAAIyE,KAAJ,sCAA6CN,IAA7C,CAAN;EAET,SAAOnE,EAAE,EAAT;EACD;EAEM,SAAS0E,WAAT,GAAuB;EAC5B,SAAO,CAACC,IAAI,CAACC,MAAL,KAAgB,GAAjB,EAAsBC,OAAtB,CAA8B,CAA9B,CAAP;EACD;EAEM,SAASxD,GAAT,CAAayD,GAAb,EAAkBtB,IAAlB,EAAwB;EAC7B,MAAMxD,EAAE,GAAG;EACTyD,IAAAA,KAAK,EAAE;EAAA,aAAMD,IAAI,CAACsB,GAAD,CAAV;EAAA,KADE;EAET3D,IAAAA,GAAG,EAAE;EAAA,aAAMqC,IAAI,CAACnC,GAAL,CAASyD,GAAT,CAAN;EAAA,KAFI;EAGTnB,IAAAA,MAAM,EAAE;EAAA,aAAMH,IAAI,CAACsB,GAAD,CAAV;EAAA;EAHC,IAIThC,MAAM,CAACU,IAAD,CAJG,CAAX;EAMA,SAAOxD,EAAE,GAAGA,EAAE,CAAC8E,GAAD,EAAMtB,IAAN,CAAL,GAAmBuB,SAA5B;EACD;EAEM,SAASC,OAAT,CAAiBC,IAAjB,EAA4B3C,KAA5B,EAAmC;EAAA,MAAlB2C,IAAkB;EAAlBA,IAAAA,IAAkB,GAAX,EAAW;EAAA;;EACxC,SAAOA,IAAI,CAACnD,MAAL,CAAY,UAACoD,MAAD,EAASJ,GAAT;EAAA,WAAiBzD,GAAG,CAACyD,GAAD,EAAMI,MAAN,CAApB;EAAA,GAAZ,EAA+C5C,KAA/C,CAAP;EACD;EAEM,SAAS6C,kBAAT,CAA4BC,GAA5B,EAAsC;EAAA,MAAVA,GAAU;EAAVA,IAAAA,GAAU,GAAJ,EAAI;EAAA;;EAC3C,SAAO,CAACA,GAAG,CAACC,KAAJ,CAAU,eAAV,KAA8B,EAA/B,EAAmC/E,MAA1C;EACD;EAEM,SAASgF,eAAT,CAAyBF,GAAzB,EAAmC;EAAA,MAAVA,GAAU;EAAVA,IAAAA,GAAU,GAAJ,EAAI;EAAA;;EACxC,SAAOA,GAAG,CAAChC,KAAJ,CAAU,GAAV,EAAetB,MAAf,CAAsB,UAACC,GAAD,EAAMwD,IAAN,EAAe;EAC1C,QAAI,CAACA,IAAD,IAASA,IAAI,CAACC,UAAL,CAAgB,GAAhB,CAAb,EAAmC,OAAOzD,GAAP;EACnC,QAAM0D,KAAK,GAAGC,QAAQ,CAACH,IAAD,EAAO,EAAP,CAAtB;EACA,qBAAWxD,GAAX,GAAgB4D,KAAK,CAACF,KAAD,CAAL,GAAeF,IAAf,GAAsBE,KAAtC;EACD,GAJM,EAIJ,EAJI,CAAP;EAKD;EAEM,SAASG,MAAT,CAAgBC,CAAhB,EAAmBC,CAAnB,EAAsBC,IAAtB,EAA0C;EAAA,MAApBA,IAAoB;EAApBA,IAAAA,IAAoB,GAAbC,WAAa;EAAA;;EAC/C,aAAiB,CAACH,CAAD,EAAIC,CAAJ,EAAO3E,GAAP,CAAW4E,IAAX,CAAjB;EAAA,MAAOE,EAAP;EAAA,MAAWC,EAAX;;EACA,SAAOD,EAAE,KAAKC,EAAP,IAAaC,8BAAU,CAACF,EAAD,EAAKC,EAAL,CAA9B;EACD;;EAED,SAASF,WAAT,CAAqBpG,CAArB,EAAwB;EACtB,MAAIA,CAAC,YAAYwG,IAAjB,EAAuB,OAAOxG,CAAC,CAACyG,OAAF,EAAP;EACvB,MAAIxD,MAAM,CAACjD,CAAD,CAAV,EAAe,OAAO0G,eAAe,CAAC1G,CAAD,CAAtB;EACf,SAAOA,CAAP;EACD;;EAED,SAAS0G,eAAT,CAAyB1G,CAAzB,EAA4B;EAC1B,MAAI,CAACiD,MAAM,CAACjD,CAAD,CAAX,EAAgB,OAAOA,CAAP;EAChB,SAAOiE,WAAW,CAChBN,OAAO,CAAC3D,CAAD,CAAP,CAAWkC,MAAX,CACE,UAACC,GAAD;EAAA,QAAO+C,GAAP;EAAA,QAAYf,GAAZ;EAAA,WACEA,GAAG,KAAKgB,SAAR,GAAoBhD,GAApB,aAA8BA,GAA9B,GAAmC,CAAC+C,GAAD,EAAMwB,eAAe,CAACvC,GAAD,CAArB,CAAnC,EADF;EAAA,GADF,EAGE,EAHF,CADgB,EAMhBjB,MAAM,CAAClD,CAAD,CANU,CAAlB;EAQD;;EC3HD,SAAS2G,WAAT,CAAqB/C,IAArB,EAA2B;EACzB,MAAMgD,aAAa,GAAGjD,OAAO,CAACC,IAAD,CAA7B;EACA,SAAO;EACLA,IAAAA,IAAI,EAAJA,IADK;EAELiD,IAAAA,QAAQ,EAAE3D,MAAM,CAACU,IAAD,CAFX;EAGLgD,IAAAA,aAAa,EAAbA,aAHK;EAILxC,IAAAA,IAAI,EAAEwC,aAAa,CAACrF,GAAd,CAAkB;EAAA,UAAE2D,GAAF;EAAA,aAAWA,GAAX;EAAA,KAAlB,CAJD;EAKL7D,IAAAA,MAAM,EAAEuF,aAAa,CAACrF,GAAd,CAAkB;EAAA,UAAIC,KAAJ;EAAA,aAAeA,KAAf;EAAA,KAAlB;EALH,GAAP;EAOD;;EAED,SAASsF,WAAT,CAAqBC,WAArB,EAAkC3G,EAAlC,EAAiDC,YAAjD,EAA+D;EAAA,MAA7BD,EAA6B;EAA7BA,IAAAA,EAA6B,GAAxBL,QAAwB;EAAA;;EAC7D,MAAIiH,KAAK,GAAGL,WAAW,CAACI,WAAD,CAAvB;EAEA;EACF;EACA;EACA;;EACE,MAAMtG,IAAI,GAAGL,EAAE,CAACM,MAAH,GAAY,CAAzB;;EACA,MAAMuG,YAAY,GAAG,SAAfA,YAAe,CAAC1G,OAAD;EAAA,WACnB0D,WAAW,CACT1D,OAAO,CAACgB,GAAR,CAAY,UAACC,KAAD,EAAQ0F,GAAR;EAAA,aAAgB,CAACF,KAAK,CAAC5C,IAAN,CAAW8C,GAAX,CAAD,EAAkB1F,KAAlB,CAAhB;EAAA,KAAZ,CADS,EAETwF,KAAK,CAACH,QAFG,CADQ;EAAA,GAArB;;EAMA,MAAM1F,MAAM,GAAGjB,WAAW,CACxB8G,KAAK,CAAC3F,MADkB,EAExBZ,IAAI,GACA,UAACF,OAAD;EAAA,WAAaH,EAAE,CAAC6G,YAAY,CAAC1G,OAAD,CAAb,CAAf;EAAA,GADA,GAEA,UAACA,OAAD,EAAU4G,IAAV;EAAA,WAAmB/G,EAAE,CAAC6G,YAAY,CAAC1G,OAAD,CAAb,EAAwB4G,IAAxB,CAArB;EAAA,GAJoB,EAKxB9G,YALwB,CAA1B;;EAQA,WAASoC,GAAT,CAAa2E,OAAb,EAAsB;EACpBJ,IAAAA,KAAK,GAAGL,WAAW,CAACS,OAAD,CAAnB;EACAjG,IAAAA,MAAM,CAACsB,GAAP,CAAWuE,KAAK,CAAC3F,MAAjB;EACD;;EAED,SAAO;EACLoB,IAAAA,GAAG,EAAHA,GADK;EAELF,IAAAA,SAAS,EAAEpB,MAAM,CAACoB;EAFb,GAAP;EAID;;EC7CM,IAAM8E,YAAY,GAAG;EAAEC,EAAAA,KAAK,EAAE;EAAT,CAArB;;ECAP,IAAMC,mBAAmB,GAAG,CAC1B,KAD0B,EAE1B,YAF0B,EAG1B,SAH0B,EAI1B,WAJ0B,EAK1B,OAL0B,EAM1B,cAN0B,CAA5B;EASA,IAAMC,gBAAgB,GACpB,8DADF;EAGO,IAAIC,MAAM,GAAGtC,SAAb;EAEA,SAASuC,gBAAT,GAA4B;EACjC,MAAI,CAACD,MAAL,EAAa;EACX,UAAM,IAAI9C,SAAJ,CAAc6C,gBAAd,CAAN;EACD;EACF;EAEc,SAASG,SAAT,CAAmBC,SAAnB,EAA8B;EAC3C,MACE,CAACA,SAAD,IACAL,mBAAmB,CAACM,IAApB,CAAyB,UAAC3C,GAAD;EAAA,WAAS,OAAO0C,SAAS,CAAC1C,GAAD,CAAhB,KAA0B,UAAnC;EAAA,GAAzB,CAFF,EAGE;EACA,UAAM,IAAIP,SAAJ,CAAc6C,gBAAd,CAAN;EACD;;EACDC,EAAAA,MAAM,GAAGG,SAAT;EACD;;ECrBD,IAAME,UAAU,GAAG,SAAbA,UAAa;EAAA,SAAM,IAAN;EAAA,CAAnB;;EACA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAC/H,CAAD;EAAA,SAAO,CAACmF,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsBtD,QAAtB,CAA+B7B,CAA/B,CAAP;EAAA,CAAlB;;EACA,IAAMgI,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC/B,CAAD,EAAIC,CAAJ;EAAA,SAAU,CAACF,MAAM,CAACC,CAAD,EAAIC,CAAJ,CAAjB;EAAA,CAA1B;;EAEA,IAAM+B,OAAO,GAAG,SAAVA,OAAU,CAACjI,CAAD;EAAA,SAAO,CAAC+H,SAAS,CAAC/H,CAAD,CAAV,IAAiByH,MAAM,CAACS,UAAP,CAAkB,YAAlB,CAAxB;EAAA,CAAhB;;EAEe,SAASC,YAAT,CACb9H,YADa,SAGb+H,MAHa,EAIb;EAAA,MAgGeC,MAhGf,YAgGeA,MAhGf;EAAA,QAgGwB;EACtB,UAAI,CAACC,QAAL,EAAe;EACfC,MAAAA,UAAU,CAAC9F,GAAX,CAAe,IAAf;EAFsB,6BAGF+F,QAAQ,EAHN,iBAGhBlB,KAHgB;EAAA;EAQtBiB,UAAAA,UAAU,CAAC9F,GAAX,CAAe,KAAf;EARsB;;EAAA;EAAA,cAIlB6E,KAJkB;EAKpB,gBAAMmB,SAAS,GAAGC,SAAa,CAAChG,KAAD,CAA/B;EALoB,mCAMd4F,QAAQ,CAACG,SAAD,CANM;EAAA;EAAA;;EAAA;EAAA;EASvB,KAzGD;EAAA;EAAA;EAAA;;EAAA,MAyFeD,QAzFf,YAyFeA,QAzFf,CAyFwBG,IAzFxB;EAAA,QAyFwBA,IAzFxB;EAyFwBA,MAAAA,IAzFxB,GAyF+B,IAzF/B;EAAA;;EAAA,QAyFqC;EACnCC,MAAAA,MAAM,CAACnG,GAAP,CAAWkG,IAAX;EADmC,6BAE7BE,WAAI,EAFyB;EAAA,+BAGjBC,WAHiB,iBAG7BC,GAH6B;EAInC,iBAAOA,GAAG,CAACzB,KAAX;EAJmC;EAAA;EAKpC,KA9FD;EAAA;EAAA;EAAA;;EAAA,gCAFmE,EAEnE;EAAA,6BAFE0B,UAEF;EAAA,MAFEA,UAEF,gCAFehB,iBAEf;EAAA,MAFkCiB,EAElC,QAFkCA,EAElC;EAAA,MAFsCC,QAEtC,QAFsCA,QAEtC;EAAA,MAFgDC,IAEhD,QAFgDA,IAEhD;EAAA,MAFsDb,QAEtD,QAFsDA,QAEtD;;EAAA,MADAF,MACA;EADAA,IAAAA,MACA,GADS,EACT;EAAA;;EACAV,EAAAA,gBAAgB;EAChB,MAAQ0B,GAAR,GAAuC3B,MAAvC,CAAQ2B,GAAR;EAAA,MAAaC,OAAb,GAAuC5B,MAAvC,CAAa4B,OAAb;EAAA,MAAsBC,YAAtB,GAAuC7B,MAAvC,CAAsB6B,YAAtB;EAEA,gBAAwBlB,MAAxB;EAAA,MAAQmB,WAAR,WAAQA,WAAR;EACA,MAAMC,IAAI,GAAGH,OAAO,CAACF,IAAD,CAAP,IAAiBrB,UAA9B;EACA,MAAM2B,UAAU,GAAG,CAAC,CAACP,QAArB;EACA,MAAMQ,OAAO,GAAGD,UAAU,GAAGL,GAAG,CAACnB,OAAD,EAAUuB,IAAV,CAAN,GAAwBA,IAAlD;EAEA,MAAMG,aAAa,GAAG,EAAtB;EACA,MAAMC,OAAO,GAAG9C,WAAW,CAAC6C,aAAD,CAA3B;;EAEA,WAASE,UAAT,CAAoBC,OAApB,EAA6B;EAC3B;EACJ;EACI,QAAIH,aAAa,CAACG,OAAD,CAAjB,EAA4B;EAE5B,QAAMC,QAAQ,GAAGR,WAAW,CAAChE,kBAAkB,CAACuE,OAAD,CAAnB,CAA5B;EACA,QAAI,CAACC,QAAL,EAAe;EAEf,QAAMC,iBAAiB,GAAGtE,eAAe,CAACoE,OAAD,CAAzC;EAEAH,IAAAA,aAAa,CAACG,OAAD,CAAb,GAAyBG,aAAO,CAACF,QAAD,EAAW,UAACG,SAAD,EAAYzH,GAAZ,EAAoB;EAC7D,UAAM0H,aAAa,GAAGD,SAAS,CAACxH,KAAhC;EACA,UAAI,CAACyH,aAAL,EAAoB;EAEpB,UAAMC,IAAI,GAAGT,aAAa,CAACG,OAAD,CAAb,CAAuBpH,KAApC;EACA,UAAM2H,IAAI,GAAGjF,OAAO,CAAC4E,iBAAD,EAAoBG,aAApB,CAApB;;EACA,UAAI,CAACnE,MAAM,CAACoE,IAAD,EAAOC,IAAP,CAAX,EAAyB;EACvBV,QAAAA,aAAa,CAACG,OAAD,CAAb,CAAuBpH,KAAvB,GAA+B2H,IAA/B;EACA5H,QAAAA,GAAG,CAAC4H,IAAD,CAAH;EACD;EACF,KAV+B,CAAhC;EAWAT,IAAAA,OAAO,CAACnH,GAAR,CAAYkH,aAAZ;EAEA;EACJ;EACA;;EACI,WAAOvE,OAAO,CAAC4E,iBAAD,EAAoBtB,SAAa,CAACqB,QAAD,CAAb,CAAwBrH,KAA5C,CAAd;EACD;;EAED,MAAIoG,WAAJ;EACA,MAAIwB,aAAa,GAAGjK,YAApB;EAEA,MAAMuI,MAAM,GAAGpI,cAAQ,CAAC,KAAD,CAAvB;EACA,MAAM+H,UAAU,GAAG/H,cAAQ,CAAC,KAAD,CAA3B;EACA,MAAMkC,KAAK,GAAGlC,cAAQ,CAAC8J,aAAD,CAAtB;EAEA,MAAM9I,OAAK,GAAGyI,aAAO,CACnB,CAACrB,MAAD,EAASlG,KAAT,EAAgBkH,OAAhB,CADmB,EAEnB,iBAA8BnH,GAA9B,EAAsC;EAAA,QAApC8H,OAAoC;EAAA,QAA3BC,MAA2B;EAAA,QAAnBC,QAAmB;EACpC3B,IAAAA,WAAW,GAAG3D,SAAd;;EAEA,aAASuF,OAAT,CAAiBZ,OAAjB,EAA0B;EACxB,UAAI,CAACH,aAAa,CAACG,OAAD,CAAlB,EAA6B;EAC3B,eAAOD,UAAU,CAACC,OAAD,CAAjB;EACD;;EACD,aAAOW,QAAQ,CAACX,OAAD,CAAf;EACD;;EAED,QAAMa,cAAc,GAAGJ,OAAO,KAAKC,MAAM,KAAKrF,SAAX,IAAwB+D,QAA7B,CAA9B;EAEA,QAAM7G,MAAM,GAAGuI,aAAa,CAC1BD,cAAc,GAAGrB,YAAY,CAACI,OAAD,EAAUc,MAAV,EAAkBE,OAAlB,CAAf,GAA4CrD,YADhC,CAA5B;EAGA,QAAMwD,QAAQ,GAAG;EACfjC,MAAAA,MAAM,EAAE2B,OADO;EAEfvB,MAAAA,UAAU,EAAVA,UAFe;EAGf3I,MAAAA,YAAY,EAAEiK,aAHC;EAIfrB,MAAAA,EAAE,EAAFA,EAJe;EAKf5G,MAAAA,MAAM,EAANA,MALe;EAMfK,MAAAA,KAAK,EAAE8H;EANQ,KAAjB;EASA1B,IAAAA,WAAW,GAAGzG,MAAM,CAACyI,OAArB;EAEArI,IAAAA,GAAG,CAACsI,cAAc,CAACF,QAAD,CAAf,CAAH;;EAEA,QAAIxI,MAAM,CAACiF,KAAP,KAAiB,IAArB,EAA2B;EACzBjF,MAAAA,MAAM,CAACyI,OAAP,CAAeE,IAAf,CAAoB,UAACC,cAAD,EAAoB;EACtC;EACA,YAAI5I,MAAM,CAACyI,OAAP,KAAmBhC,WAAvB,EAAoC;EAEpCrG,QAAAA,GAAG,CAACsI,cAAc,cAAMF,QAAN;EAAgBxI,UAAAA,MAAM,EAAE4I;EAAxB,WAAf,CAAH;EACD,OALD;EAMD;EACF,GAtCkB,CAArB;EA2DA,SAAO;EACLhC,IAAAA,EAAE,EAAFA,EADK;EAELQ,IAAAA,UAAU,EAAVA,UAFK;EAGLN,IAAAA,IAAI,EAAEK,IAHD;EAKLhB,IAAAA,QAAQ,EAARA,QALK;EAOL0C,IAAAA,KAPK,iBAOCC,QAPD,EAO2B;EAAA,UAA1BA,QAA0B;EAA1BA,QAAAA,QAA0B,GAAfb,aAAe;EAAA;;EAC9BA,MAAAA,aAAa,GAAGa,QAAhB;EACA,WAAK3C,QAAL,CAAc,KAAd;EACA,WAAK/F,GAAL,CAAS0I,QAAT;EACD,KAXI;EAaL1I,IAAAA,GAAG,EAAE,aAAC0I,QAAD,EAAWC,cAAX,EAAsC;EAAA,UAA3BA,cAA2B;EAA3BA,QAAAA,cAA2B,GAAV,KAAU;EAAA;;EACzC1I,MAAAA,KAAK,CAACD,GAAN,CAAU0I,QAAV;EACA,UAAIC,cAAJ,EAAoB5C,QAAQ;EAC7B,KAhBI;EAkBLH,IAAAA,MAAM,EAANA,MAlBK;EAoBL9F,IAAAA,SAAS,EAAEf,OAAK,CAACe;EApBZ,GAAP;EAsBD;;EAED,SAASqI,aAAT,CAAuB7B,GAAvB,EAA4B;EAC1B,sBACKA,GADL;EAEE+B,IAAAA,OAAO,EAAE/B,GAAG,CAAC+B,OAAJ,GACL/B,GAAG,CAAC+B,OAAJ,CAAYE,IAAZ,CAAiB,UAACK,QAAD;EAAA,aAAcT,aAAa,CAACS,QAAD,CAA3B;EAAA,KAAjB,CADK,GAELC,OAAO,CAACC,OAAR,CAAgBxC,GAAhB;EAJN;EAMD;;EAED,SAASgC,cAAT,QAOG;EAAA,MANDnC,MAMC,SANDA,MAMC;EAAA,MALDI,UAKC,SALDA,UAKC;EAAA,MAJDC,EAIC,SAJDA,EAIC;EAAA,MAHD5I,YAGC,SAHDA,YAGC;EAAA,MAFDgC,MAEC,SAFDA,MAEC;EAAA,MADDK,KACC,SADDA,KACC;EACD,MAAM8I,OAAO,GAAGxC,UAAU,CAACtG,KAAD,EAAQrC,YAAR,CAA1B;EACA,SAAO;EACLuI,IAAAA,MAAM,EAANA,MADK;EAEL4C,IAAAA,OAAO,EAAPA,OAFK;EAGLC,IAAAA,KAAK,EAAEpJ,MAAM,CAACiF,KAAP,KAAiB,KAAjB,IAA0BjF,MAAM,CAACqJ,MAHnC;EAILzC,IAAAA,EAAE,EAAFA,EAJK;EAKL5I,IAAAA,YAAY,EAAZA,YALK;EAMLyK,IAAAA,OAAO,EAAEzI,MAAM,CAACyI,OAAP,IAAkBQ,OAAO,CAACC,OAAR,CAAgBlJ,MAAhB,CANtB;EAOLiF,IAAAA,KAAK,EAAE,CAAC,CAACjF,MAAM,CAACiF,KAPX;EAQLqE,IAAAA,UAAU,EAAEtJ,MAAM,CAACiF,KAAP,KAAiB,IARxB;EASL5E,IAAAA,KAAK,EAAE8I,OAAO,GAAG9I,KAAH,GAAWrC;EATpB,GAAP;EAWD;;EChKc,SAASuL,YAAT,CACbvL,YADa,SAGb+H,MAHa,EAIb;EAAA;;EAAA,MA4NeC,MA5Nf,YA4NeA,MA5Nf;EAAA,QA4NwB;EACtB,UAAI,CAACC,QAAL,EAAe;EACfC,MAAAA,UAAU,CAAC9F,GAAX,CAAe,IAAf;EAFsB,6BAGF+F,QAAQ,EAHN,iBAGhBlB,KAHgB;EAAA;EAQtBiB,UAAAA,UAAU,CAAC9F,GAAX,CAAe,KAAf;EARsB;;EAAA;EAAA,cAIlB6E,KAJkB;EAKpB,gBAAMmB,SAAS,GAAGC,SAAa,CAACmD,WAAD,CAAb,CAA2BnJ,KAA7C;EALoB,mCAMd4F,QAAQ,CAACG,SAAD,CANM;EAAA;EAAA;;EAAA;EAAA;EASvB,KArOD;EAAA;EAAA;EAAA;;EAAA,gCAF8D,EAE9D;EAAA,MAFEO,UAEF,QAFEA,UAEF;EAAA,MAFc8C,MAEd,QAFcA,MAEd;EAAA,MAFsBC,KAEtB,QAFsBA,KAEtB;EAAA,MAF6B9C,EAE7B,QAF6BA,EAE7B;EAAA,MAFiCC,QAEjC,QAFiCA,QAEjC;EAAA,MAF2CC,IAE3C,QAF2CA,IAE3C;EAAA,MAFiDb,QAEjD,QAFiDA,QAEjD;;EAAA,MADAF,MACA;EADAA,IAAAA,MACA,GADS,EACT;EAAA;;EACAV,EAAAA,gBAAgB;EAChB,MAAQ2B,OAAR,GAAsC5B,MAAtC,CAAQ4B,OAAR;EAAA,MAAiB2C,SAAjB,GAAsCvE,MAAtC,CAAiBuE,SAAjB;EAAA,MAA4BC,KAA5B,GAAsCxE,MAAtC,CAA4BwE,KAA5B;EAEA,MAAIC,SAAS,GAAG7L,YAAhB,CAJA;;EAKA,MAAI8L,OAAO,GAAGD,SAAS,KAAK/G,SAA5B;EAEA,gBAAwBiD,MAAxB;EAAA,MAAQmB,YAAR,WAAQA,WAAR;EACA,MAAM1C,QAAQ,GAAG5D,MAAM,CAACkG,IAAD,CAAN,GAAejG,MAAM,CAACiG,IAAD,CAArB,GAA8BjG,MAAM,CAAC7C,YAAD,CAArD;EACA,MAAMoJ,UAAU,GAAGP,QAAQ,IAAI,CAAC+C,KAAK,CAAC/C,QAAD,CAArC;EACA,MAAMkD,WAAW,GAAGJ,SAAS,CAACD,KAAD,CAA7B;EACA,MAAMM,UAAU,GAAGL,SAAS,CAAC7C,IAAD,CAA5B;EACA,MAAMmD,YAAY,GAAGN,SAAS,CAACF,MAAD,CAA9B;EACA,MAAMS,cAAc,GAAGP,SAAS,CAAC9C,QAAD,CAAhC;EACA,MAAMsD,QAAQ,GACZH,UAAU,IACVC,YADA,IAEAC,cAFA,IAGAH,WAHA,IAIAvF,QAAQ,KAAK,OALf;EAOA,MAAM4F,SAAS,GAAGD,QAAQ,GAAGpI,IAAI,CAAC/D,YAAD,CAAP,GAAwB,EAAlD;EACA,MAAMqM,OAAO,GAAG,IAAIC,GAAJ,CACdb,MAAM,aACE1H,IAAI,CAAC0H,MAAD,CADN,EACmBW,SADnB,cAEErI,IAAI,CAAC+E,IAAD,CAFN,EAEiB/E,IAAI,CAAC8E,QAAD,CAFrB,EAEoCuD,SAFpC,CADQ,CAAhB;EAMA,MAAMG,QAAQ,GAAGvD,OAAO,CAAC0C,KAAD,CAAxB;;EACA,MAAMc,KAAK,GAAG,SAARA,KAAQ,CAAC/I,CAAD,EAAIgJ,CAAJ,EAAU;EACtB,QAAIF,QAAJ,EAAc,OAAOA,QAAQ,CAAC9I,CAAD,EAAIgJ,CAAJ,CAAf;EACd,QAAIjG,QAAQ,KAAK,OAAjB,EAA0B,OAAO/B,WAAW,EAAlB;EAC1B,WAAOgI,CAAP;EACD,GAJD;;EAMA,MAAMjB,WAAW,GAAG1D,YAAY,CAC9B9H,YAD8B,EAE9B;EACE2I,IAAAA,UAAU,EAAEK,OAAO,CAACL,UAAD,CADrB;EAEEC,IAAAA,EAAE,EAAFA,EAFF;EAGEC,IAAAA,QAAQ,EAAEO,UAHZ;EAIEN,IAAAA,IAAI,EAAJA;EAJF,GAF8B,EAQ9Bf,MAR8B,CAAhC;;EAWA,MAAM2E,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAC7H,GAAD,EAAMf,GAAN,EAAc;EACrC,QAAM6I,aAAa,GAAGvL,GAAG,CAACyD,GAAD,EAAM8D,UAAN,CAAH,IAAwBgD,SAAS,CAAChD,UAAD,CAAvD;EACA,QAAMiE,MAAM,GAAG9I,GAAf;EACA,QAAM+I,OAAO,GAAGzL,GAAG,CAACyD,GAAD,EAAMiE,IAAN,CAAH,IAAkBkD,UAAlC;EACA,QAAMc,QAAQ,GAAG1L,GAAG,CAACyD,GAAD,EAAM6G,KAAN,CAAH,IAAmBK,WAApC;EACA,QAAMgB,KAAK,GAAGP,KAAK,CAACI,MAAD,EAAS/H,GAAT,CAAnB;EACA,QAAMmI,SAAS,GAAG5L,GAAG,CAACyD,GAAD,EAAM4G,MAAN,CAAH,IAAoBQ,YAAtC;EACA,QAAMgB,WAAW,GAAG7L,GAAG,CAACyD,GAAD,EAAMgE,QAAN,CAAH,IAAsBqD,cAA1C;;EAEA,QAAMgB,QAAQ,GAAGnF,MAAM,CAACoF,QAAP,CACfP,MADe,EAEf;EACE9D,MAAAA,IAAI,EAAE+D,OADR;EAEElE,MAAAA,UAAU,EAAEgE,aAFd;EAGE/D,MAAAA,EAAE,EAAEmE,KAHN;EAIErB,MAAAA,KAAK,EAAEoB,QAJT;EAKErB,MAAAA,MAAM,EAAEuB,SALV;EAMEnE,MAAAA,QAAQ,EAAEoE;EANZ,KAFe,EAUf;EACE/D,MAAAA,WAAW,EAAE,qBAACkE,CAAD;EAAA,eACXA,CAAC,IAAI,CAAL,IAAU,CAAClE,YAAX,GAAyBsC,WAAzB,GAAuCtC,YAAW,CAACkE,CAAC,GAAG,CAAL,CADvC;EAAA;EADf,KAVe,CAAjB;;EAgBA,WAAO,CAACvI,GAAD,eAAWqI,QAAX;EAAqBtE,MAAAA,EAAE,EAAEmE;EAAzB,OAAP;EACD,GA1BD;;EA4BA,MAAIM,cAAc,GAAGzJ,WAAW,CAC9B,UAAIyI,OAAJ,EAAanL,GAAb,CAAiB,UAAC2D,GAAD;EAAA,WAAS6H,gBAAgB,CAAC7H,GAAD,EAAMzD,GAAG,CAACyD,GAAD,EAAM7E,YAAN,CAAT,CAAzB;EAAA,GAAjB,CAD8B,EAE9BwG,QAF8B,CAAhC;EAIA,MAAM8G,QAAQ,GAAGnN,cAAQ,CAACkN,cAAD,CAAzB;EACA,MAAMnF,UAAU,GAAG/H,cAAQ,CAAC,KAAD,CAA3B;EAEA,MAAMoN,YAAY,GAAG9G,WAAW,CAAC4G,cAAD,EAAiB,UAACG,eAAD,EAAqB;EACpE,QAAI1B,OAAJ,EAAa,OAAOhH,SAAP;EAEb,QAAM2I,gBAAgB,GAAGnK,OAAO,CAACkK,eAAD,CAAhC;EACA,QAAME,eAAe,GAAGD,gBAAgB,CAACvM,GAAjB,CAAqB;EAAA,UAAE2D,GAAF;EAAA,UAAO8B,KAAP;EAAA,aAAkB,CAC7D9B,GAD6D,EAE7D8B,KAAK,CAACtE,KAFuD,CAAlB;EAAA,KAArB,CAAxB;EAIA,QAAMsL,aAAa,GAAG/J,WAAW,CAAC8J,eAAD,EAAkBlH,QAAlB,CAAjC;EACA,QAAMnE,KAAK,GAAG8J,QAAQ,GAAGwB,aAAH,GAAmB3J,KAAK,CAAC6H,SAAD,EAAY8B,aAAZ,CAA9C;EACAnC,IAAAA,WAAW,CAACpJ,GAAZ,CAAgBC,KAAhB;EACA,WAAOA,KAAP;EACD,GAZ+B,CAAhC;;EAcA,MAAMuL,qBAAqB,GAAG,SAAxBA,qBAAwB;EAAA,YAC5BL,YAD4B,EAE5BrF,UAF4B,EAG5BsD,WAH4B,SAIzB1K,MAAM,CAACuM,cAAD,CAJmB;EAAA,GAA9B;;EAOA,MAAMQ,MAAM,GAAGhO,WAAW,CAAC+N,qBAAqB,EAAtB,EAA0B,UAACE,aAAD,EAAmB;EACrE,QAASC,WAAT,GAAoDD,aAApD;EAAA,QAAsBE,YAAtB,GAAoDF,aAApD;EAAA,QAAuCG,SAAvC,GAAoDH,aAApD;EAEA,QAAMhC,OAAO,GAAGkC,YAAY,CAAC3L,KAAb,KAAuByC,SAAvC;EAEA,QAAMoJ,QAAQ,GAAGpC,OAAO,GACpBkC,YADoB,GAEpB,CAACA,YAAD,SAAkBC,SAAlB,EAA6BpM,MAA7B,CAAoCsM,eAApC,CAFJ;EAIA,QAAID,QAAQ,CAAC3F,MAAT,KAAoB,KAAxB,EAA+BiD,WAAW,CAACrD,QAAZ;EAE/B,QAAQ9F,KAAR,GAAyB2L,YAAzB,CAAQ3L,KAAR;EAAA,QAAe+I,KAAf,GAAyB4C,YAAzB,CAAe5C,KAAf;EAEA,QAAMgD,OAAO,GAAGzK,MAAM,CAACC,WAAP,EACd,CAAC,GAAD,EAAMoK,YAAN,CADc,SAEVlC,OAAO,GAAG,EAAH,GAAQmC,SAAS,CAAC/M,GAAV,CAAc,UAACmN,KAAD;EAAA,aAAW,CAACA,KAAK,CAACzF,EAAP,EAAWyF,KAAX,CAAX;EAAA,KAAd,CAFL,EAAhB;EAKA,QAAMC,MAAM,GAAGC,eAAe,CAACH,OAAD,EAAUxF,EAAV,CAA9B;EACA,QAAM4F,UAAU,GAAGF,MAAM,CAAC5L,MAAP,CAAc;EAAA,UAAGE,MAAH,SAAGA,MAAH;EAAA,aAAgBA,MAAhB;EAAA,KAAd,CAAnB;EAEA,wBACKsL,QADL;EAEEtF,MAAAA,EAAE,EAAFA,EAFF;EAGE5I,MAAAA,YAAY,EAAEgO,YAAY,CAAChO,YAH7B;EAIEqC,MAAAA,KAAK,EAALA,KAJF;EAKE+I,MAAAA,KAAK,EAALA,KALF;EAMEkD,MAAAA,MAAM,EAANA,MANF;EAOEE,MAAAA,UAAU,EAAVA,UAPF;EAQEJ,MAAAA,OAAO,EAAPA,OARF;EASElG,MAAAA,UAAU,EAAE6F;EATd;EAWD,GAhCyB,CAA1B;;EAkCA,WAASU,iBAAT,CAA2BC,iBAA3B,EAA8C;EAC5CrB,IAAAA,cAAc,GAAGqB,iBAAjB;EACApB,IAAAA,QAAQ,CAAClL,GAAT,CAAasM,iBAAb;EACAnB,IAAAA,YAAY,CAACnL,GAAb,CAAiBsM,iBAAjB;EACAb,IAAAA,MAAM,CAACzL,GAAP,CAAWwL,qBAAqB,EAAhC;EACD;;EAED,WAASe,WAAT,CAAqBpL,IAArB,EAA2B;EACzB,QAAI,CAACA,IAAL,EAAW;EAEX,QAAMqL,UAAU,GAAG7K,IAAI,CAACR,IAAD,CAAJ,CAAWrC,GAAX,CAAe,UAAC2D,GAAD;EAAA,aAChC6H,gBAAgB,CAAC7H,GAAD,EAAMzD,GAAG,CAACyD,GAAD,EAAMtB,IAAN,CAAT,CADgB;EAAA,KAAf,CAAnB;EAGA,QAAMsL,aAAa,GAAGjL,WAAW,WAC3BN,OAAO,CAAC+J,cAAD,CADoB,EACCuB,UADD,GAE/BpI,QAF+B,CAAjC;EAIAiI,IAAAA,iBAAiB,CAACI,aAAD,CAAjB;EACD;;EAED,WAASC,kBAAT,CAA4BC,WAA5B,EAA8C;EAAA,QAAlBA,WAAkB;EAAlBA,MAAAA,WAAkB,GAAJ,EAAI;EAAA;;EAC5C,QAAIA,WAAW,CAAC1O,MAAZ,GAAqB,CAAzB,EAA4B;EAE5B,QAAMwO,aAAa,GAAGjL,WAAW,CAC/BN,OAAO,CAAC+J,cAAD,CAAP,CAAwB3K,MAAxB,CACE;EAAA,UAAIvB,KAAJ;EAAA,aAAe,CAAC4N,WAAW,CAACvN,QAAZ,CAAqBL,KAAK,CAACyH,EAA3B,CAAhB;EAAA,KADF,CAD+B,EAI/BpC,QAJ+B,CAAjC;EAMAiI,IAAAA,iBAAiB,CAACI,aAAD,CAAjB;EACD;;EAED,WAASG,QAAT,CAAkBzL,IAAlB,EAAwB0L,OAAxB,EAAyC;EAAA,QAAjBA,OAAiB;EAAjBA,MAAAA,OAAiB,GAAP,KAAO;EAAA;;EACvCnD,IAAAA,OAAO,GAAGvI,IAAI,KAAKuB,SAAnB;EACA+G,IAAAA,SAAS,GAAGoD,OAAO,IAAI,CAAC9C,QAAZ,GAAuBnI,KAAK,CAAC6H,SAAD,EAAYtI,IAAZ,CAA5B,GAAgDA,IAA5D;EACAiI,IAAAA,WAAW,CAACpJ,GAAZ,CAAgByJ,SAAhB;EAEA,QAAMqD,eAAe,GAAG5L,OAAO,CAAC+J,cAAD,CAA/B;EAEA6B,IAAAA,eAAe,CAAC5N,OAAhB,CAAwB,iBAAkB;EAAA,UAAhBuD,GAAgB;EAAA,UAAX1D,KAAW;EACxC,UAAM2J,QAAQ,GAAG1J,GAAG,CAACyD,GAAD,EAAMtB,IAAN,CAApB;EACA,UAAI0L,OAAO,IAAInE,QAAQ,KAAKhG,SAA5B,EAAuC;EACvC3D,MAAAA,KAAK,CAACiB,GAAN,CAAU0I,QAAV,EAAoBmE,OAApB;EACD,KAJD;EAKA,QAAI,CAAC9C,QAAL,EAAe;EAEf;;EAEA;;EACA,QAAMgD,YAAY,GAAGpL,IAAI,CAACsJ,cAAD,CAAzB;EACA,QAAM+B,eAAe,GAAGxL,WAAW,CACjCN,OAAO,CAACC,IAAD,CAAP,CAAcb,MAAd,CAAqB;EAAA,UAAEmC,GAAF;EAAA,aAAW,CAACsK,YAAY,CAAC3N,QAAb,CAAsBqD,GAAtB,CAAZ;EAAA,KAArB,CADiC,EAEjC2B,QAFiC,CAAnC;EAIAmI,IAAAA,WAAW,CAACS,eAAD,CAAX;EAEA,QAAIH,OAAJ,EAAa;EAEb;EACJ;;EACI,QAAMI,QAAQ,GAAGtL,IAAI,CAACR,IAAD,CAArB;EACA,QAAM+L,SAAS,GAAGJ,eAAe,CAACrN,MAAhB,CAAuB,UAACC,GAAD,SAA4B;EAAA,UAArB+C,GAAqB;EAAA,UAAhB0K,UAAgB;EACnE,aAAOF,QAAQ,CAAC7N,QAAT,CAAkBqD,GAAlB,IAAyB/C,GAAzB,aAAmCA,GAAnC,GAAwCyN,UAAU,CAAC3G,EAAnD,EAAP;EACD,KAFiB,EAEf,EAFe,CAAlB;EAGAkG,IAAAA,kBAAkB,CAACQ,SAAD,CAAlB;EACD;;EAED,WAASnH,QAAT,CAAkBG,IAAlB,EAA+B;EAAA,QAAbA,IAAa;EAAbA,MAAAA,IAAa,GAAN,IAAM;EAAA;;EAC7B,QAAMkH,gBAAgB,IACpBhE,WADoB,SAEhBM,OAAO,GAAG,EAAH,GAAQhL,MAAM,CAACuM,cAAD,CAFL,CAAtB;EAIA,QAAMoC,QAAQ,GAAGD,gBAAgB,CAACtO,GAAjB,CAAqB,UAACC,KAAD,EAAW;EAC/C,UAAMsJ,OAAO,GAAGtJ,KAAK,CAACgH,QAAN,CAAeG,IAAf,CAAhB;EACA,aAAOmC,OAAO,CAACE,IAAR,CAAa,UAAC1D,KAAD,EAAW;EAC7B,YAAIA,KAAJ,EAAW,OAAOA,KAAP;EACX,cAAMA,KAAN;EACD,OAHM,CAAP;EAID,KANgB,CAAjB;EAOA,WAAOgE,OAAO,CAACyE,GAAR,CAAYD,QAAZ,EACJ9E,IADI,CACC;EAAA,aAAM,IAAN;EAAA,KADD,WAEE;EAAA,aAAM,KAAN;EAAA,KAFF,CAAP;EAGD;;EAaD,SAAO;EACL/B,IAAAA,EAAE,EAAFA,EADK;EAELQ,IAAAA,UAAU,EAAVA,UAFK;EAGLN,IAAAA,IAAI,EAAJA,IAHK;EAIL9H,IAAAA,MAAM,EAAEqM,cAJH;EAMLlF,IAAAA,QAAQ,EAARA,QANK;EAQLwH,IAAAA,GARK,eAQDpM,IARC,EAQK;EACRoL,MAAAA,WAAW,CAACpL,IAAD,CAAX;EACA,aAAO,IAAP;EACD,KAXI;EAaLqM,IAAAA,QAbK,oBAaI5K,IAbJ,EAae;EAAA,UAAXA,IAAW;EAAXA,QAAAA,IAAW,GAAJ,EAAI;EAAA;;EAClB,UAAM6K,OAAO,GAAG7K,IAAI,CAACnD,MAAL,CACd,UAACC,GAAD,EAAM+C,GAAN,EAAc;EACZ,YAAQyI,QAAR,GAAqBxL,GAArB,CAAQwL,QAAR;EACA,YAAI,CAACA,QAAL,EAAe,OAAO;EAAE5E,UAAAA,GAAG,EAAE;EAAP,SAAP;EACf,YAAM6G,UAAU,GAAGnO,GAAG,CAACyD,GAAD,EAAMyI,QAAN,CAAtB;EACA,YAAI,CAACiC,UAAL,EAAiB,OAAO;EAAE7G,UAAAA,GAAG,EAAE;EAAP,SAAP;EACjB,eAAO;EACLA,UAAAA,GAAG,EAAE6G,UADA;EAELjC,UAAAA,QAAQ,EAAEiC,UAAU,CAACO,WAAX,GAAyBP,UAAU,CAACO,WAAX,EAAzB,GAAoD;EAFzD,SAAP;EAID,OAVa,EAWd;EAAExC,QAAAA,QAAQ,EAAED;EAAZ,OAXc,CAAhB;EAaA,aAAOwC,OAAO,CAACnH,GAAf;EACD,KA5BI;EA8BLoH,IAAAA,WA9BK,yBA8BS;EACZ,aAAOzC,cAAP;EACD,KAhCI;EAkCL0C,IAAAA,MAlCK,kBAkCEhB,WAlCF,EAkCoB;EAAA,UAAlBA,WAAkB;EAAlBA,QAAAA,WAAkB,GAAJ,EAAI;EAAA;;EACvBD,MAAAA,kBAAkB,CAACC,WAAD,CAAlB;EACA,aAAO,IAAP;EACD,KArCI;EAuCLlE,IAAAA,KAvCK,iBAuCCmF,eAvCD,EAuCiC;EAAA,UAAhCA,eAAgC;EAAhCA,QAAAA,eAAgC,GAAdhQ,YAAc;EAAA;;EACpCgP,MAAAA,QAAQ,CAACgB,eAAD,EAAkB,KAAlB,CAAR;EACA7H,MAAAA,QAAQ,CAAC,KAAD,CAAR;EACA,aAAO,IAAP;EACD,KA3CI;EA6CL/F,IAAAA,GA7CK,eA6CDmB,IA7CC,EA6CK0L,OA7CL,EA6CsBlE,cA7CtB,EA6C8C;EAAA,UAAzCkE,OAAyC;EAAzCA,QAAAA,OAAyC,GAA/B,KAA+B;EAAA;;EAAA,UAAxBlE,cAAwB;EAAxBA,QAAAA,cAAwB,GAAP,KAAO;EAAA;;EACjDiE,MAAAA,QAAQ,CAACzL,IAAD,EAAO0L,OAAP,CAAR;EACA,UAAIlE,cAAJ,EAAoB5C,QAAQ;EAC5B,aAAO,IAAP;EACD,KAjDI;EAmDL3F,IAAAA,MAAM,EAAE,gBAACzC,EAAD,EAAQ;EACd0O,MAAAA,iBAAiB,CAAC1O,EAAE,CAACsN,cAAD,CAAH,CAAjB;EACA,aAAO,KAAP;EACD,KAtDI;EAwDLC,IAAAA,QAAQ,EAAE;EACRpL,MAAAA,SAAS,EAAEoL,QAAQ,CAACpL;EADZ,KAxDL;EA4DL8F,IAAAA,MAAM,EAANA,MA5DK;EA8DL9F,IAAAA,SAAS,EAAE2L,MAAM,CAAC3L;EA9Db,GAAP;EAgED;;EAED,SAASiM,eAAT,CAAyBvI,CAAzB,EAA4BC,CAA5B,EAA+B;EAC7B,MAAMyF,UAAU,GAAG1F,CAAC,CAAC0F,UAAF,IAAgBzF,CAAC,CAACyF,UAArC;EACA,SAAO;EACL/C,IAAAA,MAAM,EAAE3C,CAAC,CAAC2C,MAAF,KAAa1C,CAAC,CAAC0C,MAAf,GAAwB1C,CAAC,CAAC0C,MAA1B,GAAmC,IADtC;EAEL4C,IAAAA,OAAO,EAAEvF,CAAC,CAACuF,OAAF,IAAatF,CAAC,CAACsF,OAFnB;EAGLlE,IAAAA,KAAK,EAAEqE,UAAU,GAAG,IAAH,GAAU1F,CAAC,CAACqB,KAAF,IAAWpB,CAAC,CAACoB,KAHnC;EAILqE,IAAAA,UAAU,EAAVA;EAJK,GAAP;EAMD;;EAED,IAAM2E,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;EAAA,SAAc,iBAA8B;EAAA,QAA3BlL,IAA2B,SAA3BA,IAA2B;EAAA,QAArBoG,KAAqB,SAArBA,KAAqB;EAAA,QAAX+E,IAAW;;EAC5D,QAAMC,OAAO,GAAGF,QAAQ,KAAKpL,SAAb,GAAyBE,IAAzB,IAAiCkL,QAAjC,SAA8ClL,IAA9C,CAAhB;EACA,wBACKmL,IADL;EAEEnL,MAAAA,IAAI,EAAEoL,OAFR;EAGEC,MAAAA,KAAK,EAAED,OAAO,CAAC/L,IAAR,CAAa,GAAb,CAHT;EAIE+G,MAAAA,KAAK,EAALA;EAJF;EAMD,GARiB;EAAA,CAAlB;;EAUA,SAASmD,eAAT,CAAyBH,OAAzB,EAAkC8B,QAAlC,EAA4C;EAC1C,SAAOvM,MAAM,CAACL,OAAP,CAAe8K,OAAf,EACJkC,OADI,CACI,iBAAmB;EAAA,QAAjBzL,GAAiB;EAAA,QAAZgJ,MAAY;;EAC1B,QAAI,CAACA,MAAM,CAACO,OAAZ,EAAqB;EACnB,UAAI,CAACP,MAAM,CAACzC,KAAZ,EAAmB,OAAO,EAAP;;EACnB,UAAIvG,GAAG,KAAK,GAAZ,EAAiB;EACf,eAAO,CAAC;EAAEG,UAAAA,IAAI,EAAE,EAAR;EAAYoG,UAAAA,KAAK,EAAEyC,MAAM,CAACzC,KAA1B;EAAiCxI,UAAAA,MAAM,EAAE;EAAzC,SAAD,CAAP;EACD;;EACD,aAAO,CAAC2N,oBAAoB,CAAC1C,MAAD,CAArB,CAAP;EACD;;EAED,QAAM2C,SAAS,GAAGjC,eAAe,CAACV,MAAM,CAACO,OAAR,EAAiBA,OAAO,CAACxF,EAAzB,CAAjC;EACA,WAAO4H,SAAS,CAACtP,GAAV,CAAc+O,SAAS,CAACpC,MAAM,CAACjF,EAAR,CAAvB,CAAP;EACD,GAZI,EAaJ1H,GAbI,CAaA+O,SAAS,CAACC,QAAD,CAbT,CAAP;EAcD;;EAED,SAASK,oBAAT,SAA6C;EAAA,MAAb3H,EAAa,UAAbA,EAAa;EAAA,MAATwC,KAAS,UAATA,KAAS;EAC3C,SAAO;EAAEpG,IAAAA,IAAI,EAAE,CAAC4D,EAAD,CAAR;EAAcyH,IAAAA,KAAK,EAAEzH,EAArB;EAAyBwC,IAAAA,KAAK,EAALA;EAAzB,GAAP;EACD;;ECnWc,SAASqF,QAAT,CAAkBC,EAAlB,EAAsBC,WAAtB,EAAmC;EAChD,MAAIC,IAAI,GAAGC,aAAa,CAACF,WAAD,CAAxB;EACA,MAAI,CAACD,EAAD,IAAO,CAACE,IAAI,CAACzP,KAAjB,EAAwB;EAExB,MAAII,KAAJ;EACAuP,EAAAA,MAAM;;EAEN,WAASC,WAAT,GAAuB;EACrBH,IAAAA,IAAI,CAACzP,KAAL,CAAWgH,QAAX;EACD;;EAED,WAAS6I,YAAT,CAAsBC,CAAtB,EAAyB;EACvBL,IAAAA,IAAI,CAACzP,KAAL,CAAWiB,GAAX,CAAewO,IAAI,CAACM,OAAL,CAAaD,CAAC,CAACE,MAAF,CAAS9O,KAAtB,CAAf;EACD;;EAED,WAASyO,MAAT,GAAkB;EAChBvP,IAAAA,KAAK,GAAGqP,IAAI,CAACzP,KAAL,CAAWe,SAAX,CAAqB,gBAAe;EAAA,UAAZG,KAAY,QAAZA,KAAY;EAC1C,UAAM+O,OAAO,GAAGR,IAAI,CAACS,OAAL,CAAahP,KAAb,CAAhB;EACA,UAAIqO,EAAE,CAACrO,KAAH,KAAa+O,OAAjB,EAA0BV,EAAE,CAACrO,KAAH,GAAW+O,OAAX;EAC3B,KAHO,CAAR;EAIAV,IAAAA,EAAE,CAACY,gBAAH,CAAoB,MAApB,EAA4BP,WAA5B;EACAL,IAAAA,EAAE,CAACY,gBAAH,CAAoB,OAApB,EAA6BN,YAA7B;EACD;;EAED,WAASO,QAAT,GAAoB;EAClBhQ,IAAAA,KAAK;EACLmP,IAAAA,EAAE,CAACc,mBAAH,CAAuB,MAAvB,EAA+BT,WAA/B;EACAL,IAAAA,EAAE,CAACc,mBAAH,CAAuB,OAAvB,EAAgCR,YAAhC;EACD;;EAED,SAAO;EACLS,IAAAA,OAAO,EAAEF,QADJ;EAEL/O,IAAAA,MAFK,kBAEEkP,OAFF,EAEW;EACdH,MAAAA,QAAQ;EACR,UAAI,CAACG,OAAL,EAAc;EACdd,MAAAA,IAAI,GAAGC,aAAa,CAACa,OAAD,CAApB;EACAZ,MAAAA,MAAM;EACP;EAPI,GAAP;EASD;;EAED,SAASD,aAAT,CAAuBF,WAAvB,EAAoC;EAClC,MAAI,CAACA,WAAL,EAAkB,OAAO,EAAP;;EAElB,MAAI,CAACgB,KAAK,CAACC,OAAN,CAAcjB,WAAd,CAAL,EAAiC;EAC/B,WAAO;EACLxP,MAAAA,KAAK,EAAEwP,WADF;EAELU,MAAAA,OAAO,EAAE,iBAAC1R,CAAD;EAAA,YAACA,CAAD;EAACA,UAAAA,CAAD,GAAK,EAAL;EAAA;;EAAA,eAAYA,CAAZ;EAAA,OAFJ;EAGLuR,MAAAA,OAAO,EAAExR;EAHJ,KAAP;EAKD;;EAED,MAAOyB,KAAP,GAAiEwP,WAAjE;EAAA,sBAAiEA,WAAjE;EAAA,6CAA2D,EAA3D;EAAA,4CAAgBU,OAAhB;EAAA,MAAgBA,OAAhB,sCAA0B3R,QAA1B;EAAA,4CAAoCwR,OAApC;EAAA,MAAoCA,OAApC,sCAA8CxR,QAA9C;EACA,SAAO;EAAEyB,IAAAA,KAAK,EAALA,KAAF;EAASkQ,IAAAA,OAAO,EAAPA,OAAT;EAAkBH,IAAAA,OAAO,EAAPA;EAAlB,GAAP;EACD;;ECpDc,SAAS/D,QAAT,CAAkBnN,YAAlB,EAAgC6R,OAAhC,EAA8C9J,MAA9C,EAAsD;EAAA,MAAtB8J,OAAsB;EAAtBA,IAAAA,OAAsB,GAAZ,EAAY;EAAA;;EACnE,MAAI9O,OAAO,CAAC/C,YAAD,CAAX,EAA2B,OAAOA,YAAP;EAE3B,MAAI4C,MAAM,CAACiP,OAAO,CAAC/I,IAAR,IAAgB9I,YAAjB,CAAV,EACE,OAAOuL,YAAY,CAACvL,YAAD,EAAe6R,OAAf,eAA6B9J,MAA7B;EAAqCoF,IAAAA,QAAQ,EAARA;EAArC,KAAnB;EAEF,SAAOrF,YAAY,CAAC9H,YAAD,EAAe6R,OAAf,EAAwB9J,MAAxB,CAAnB;EACD;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"svelte-specma.umd.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writable(_initialValue);\n\n const store = derived(\n [active, value, context],\n ([$active, $value, $context], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collDefiner = [fields, spec, initialValue].find(isColl);\n const collType = typeOf(collDefiner);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n isUndef = value === undefined;\n ownSpecable.set(value);\n return value;\n });\n\n const aggregateStatusStores = () => [\n derivedValue,\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [, $submitting, $ownSpecable, ...$children] = $statusStores;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, partial = false) {\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\n isUndef = collValue === undefined;\n ownSpecable.set(collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store.set(newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildren = fromEntries(\n entries(coll).filter(([key]) => !childrenKeys.includes(key)),\n collType\n );\n addChildren(missingChildren);\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n if (coll !== undefined) isUndef = false;\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, false);\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, partial);\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: status.subscribe,\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n const collCandidate = options.fields || options.spec || initialValue;\n\n if (isColl(collCandidate)) {\n return collSpecable(initialValue, options, { ..._extra, specable });\n }\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","_extra","submit","onSubmit","submitting","activate","currValue","getStoreValue","bool","active","tick","currPromise","res","changePred","id","required","spec","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","_initialValue","$active","$value","$context","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","reset","newValue","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","ownSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","collDefiner","find","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$submitting","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","childrenEntries","childrenKeys","missingChildren","collKeys","unusedIds","childStore","storesToActivate","promises","all","add","getChild","reduced","getChildren","remove","newInitialValue","liftError","parentId","rest","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","args","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options","collCandidate"],"mappings":"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"}
|