@mhmo91/schmancy 0.9.18 → 0.9.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.es-Dymj8REP.js +489 -0
- package/dist/agent/index.es-Dymj8REP.js.map +1 -0
- package/dist/agent/schmancy.agent.js +70 -557
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{flow-BGkHnOnd.js.map → flow-BPDtbhLe.js.map} +1 -1
- package/dist/{flow-ClAJ6Qby.cjs.map → flow-Dn9AZktE.cjs.map} +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.es-BgmFX1JM.cjs +1 -0
- package/dist/index.es-BgmFX1JM.cjs.map +1 -0
- package/dist/index.es-CLyb_o3Y.js +489 -0
- package/dist/index.es-CLyb_o3Y.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/{splash-screen-COg3Z6n8.js.map → splash-screen-BHgb3c3Q.js.map} +1 -1
- package/dist/{splash-screen-C9HqX2nR.cjs.map → splash-screen-DteUfSV3.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-C7niWYur.js → src-BGj6ufWS.js} +4 -4
- package/dist/{src-C7niWYur.js.map → src-BGj6ufWS.js.map} +1 -1
- package/dist/{src-I4M33WK2.cjs → src-BPKGdQdp.cjs} +1 -1
- package/dist/{src-I4M33WK2.cjs.map → src-BPKGdQdp.cjs.map} +1 -1
- package/dist/{table-B-DsOqzT.cjs → table-DFlJhG5E.cjs} +1 -1
- package/dist/{table-B-DsOqzT.cjs.map → table-DFlJhG5E.cjs.map} +1 -1
- package/dist/{table-hBEZRxM_.js → table-Dwt66SR6.js} +1 -1
- package/dist/{table-hBEZRxM_.js.map → table-Dwt66SR6.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/typewriter.cjs +123 -1
- package/dist/typewriter.cjs.map +1 -0
- package/dist/typewriter.js +214 -2
- package/dist/typewriter.js.map +1 -0
- package/dist/{utils-xBXLvebz.js.map → utils-Bp2jhyZc.js.map} +1 -1
- package/dist/{utils-2qrmPb78.cjs.map → utils-CBPQvxNW.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/src/typewriter/typewriter.ts +26 -4
- package/types/src/typewriter/typewriter.d.ts +4 -1
- package/dist/typewriter-DyN7xa0n.js +0 -701
- package/dist/typewriter-DyN7xa0n.js.map +0 -1
- package/dist/typewriter-LK0S4NEr.cjs +0 -123
- package/dist/typewriter-LK0S4NEr.cjs.map +0 -1
- /package/dist/{flow-BGkHnOnd.js → flow-BPDtbhLe.js} +0 -0
- /package/dist/{flow-ClAJ6Qby.cjs → flow-Dn9AZktE.cjs} +0 -0
- /package/dist/{splash-screen-COg3Z6n8.js → splash-screen-BHgb3c3Q.js} +0 -0
- /package/dist/{splash-screen-C9HqX2nR.cjs → splash-screen-DteUfSV3.cjs} +0 -0
- /package/dist/{utils-xBXLvebz.js → utils-Bp2jhyZc.js} +0 -0
- /package/dist/{utils-2qrmPb78.cjs → utils-CBPQvxNW.cjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es-BgmFX1JM.cjs","names":["#buildOptions","#setUpCursor","#generateQueue","#attachCursor","#fire","#removeNode","#elementIsInput","#generateTemporaryOptionQueueItems","#type","#getPace","#queueAndReturn","#derivedCursorPosition","#move","#updateOptions","#delete","#empty","#allChars","#fireItemWithContext","#wait","#prepLoop","#shouldRenderCursor","#maybeAppendPause","#addSplitPause","#prependHardcodedStrings","#isInput"],"sources":["../node_modules/typeit/dist/index.es.js"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nconst isArray = (thing) => Array.isArray(thing);\n\nconst asArray = (value) => isArray(value) ? value : [value];\n\nlet Queue = function(initialItems) {\n let add = function(steps) {\n asArray(steps).forEach((step) => {\n return _q.set(Symbol(step.char?.innerText), buildQueueItem({ ...step }));\n });\n return this;\n };\n let getTypeable = () => rawValues().filter((value) => value.typeable);\n let set = function(index, item) {\n let keys = [..._q.keys()];\n _q.set(keys[index], buildQueueItem(item));\n };\n let buildQueueItem = (queueItem) => {\n queueItem.shouldPauseCursor = function() {\n return Boolean(this.typeable || this.cursorable || this.deletable);\n };\n return queueItem;\n };\n let reset = function() {\n _q.forEach((item) => delete item.done);\n };\n let wipe = function() {\n _q = /* @__PURE__ */ new Map();\n add(initialItems);\n };\n let getQueue = () => _q;\n let rawValues = () => Array.from(_q.values());\n let destroy = (key) => _q.delete(key);\n let getPendingQueueItems = () => {\n const pending = [];\n for (let [, value] of getQueue()) {\n if (!value.done) {\n pending.push(value);\n }\n }\n return pending;\n };\n let getItems = (all = false) => all ? rawValues() : rawValues().filter((i) => !i.done);\n let done = (key, shouldDestroy = false) => shouldDestroy ? _q.delete(key) : _q.get(key).done = true;\n let _q = /* @__PURE__ */ new Map();\n add(initialItems);\n return {\n add,\n set,\n wipe,\n done,\n reset,\n destroy,\n getItems,\n getQueue,\n getTypeable,\n getPendingQueueItems\n };\n};\n\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: {\n autoPause: true,\n autoPauseDelay: 500,\n animation: {\n frames: [0, 0, 1].map((n) => {\n return { opacity: n };\n }),\n options: {\n iterations: Infinity,\n easing: \"steps(2, start)\",\n fill: \"forwards\"\n }\n }\n },\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nconst PLACEHOLDER_CSS = `[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;\n\nconst createElement = (el) => document.createElement(el);\n\nconst createTextNode = (content) => document.createTextNode(content);\n\nconst appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nconst calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\n\nconst randomInRange = (value, range) => {\n return Math.abs(\n Math.random() * (value + range - (value - range)) + (value - range)\n );\n};\n\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\n\nconst toArray = (val) => Array.from(val);\n\nlet expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\n\nconst getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\n\nfunction walkElementNodes(element, shouldReverse = false, shouldIncludeCursor = false) {\n let cursor = element.querySelector(`.${CURSOR_CLASS}`);\n let walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n if (cursor && shouldIncludeCursor) {\n if (node.classList?.contains(CURSOR_CLASS)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n if (cursor.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return node.classList?.contains(CURSOR_CLASS) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n if (!nextNode.originalParent) {\n nextNode.originalParent = nextNode.parentNode;\n }\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\n\nconst cleanUpSkipped = ({\n index,\n newIndex,\n queueItems,\n cleanUp\n}) => {\n for (let i = index + 1; i < newIndex + 1; i++) {\n cleanUp(queueItems[i][0]);\n }\n};\n\nconst isNumber = (value) => Number.isInteger(value);\n\nconst countStepsToSelector = ({\n queueItems,\n selector,\n cursorPosition,\n to\n}) => {\n if (isNumber(selector)) {\n return selector * -1;\n }\n let isMovingToEnd = new RegExp(END, \"i\").test(to);\n let selectorIndex = selector ? [...queueItems].reverse().findIndex(({ char }) => {\n let parentElement = char.parentElement;\n let parentMatches = parentElement.matches(selector);\n if (isMovingToEnd && parentMatches) {\n return true;\n }\n return parentMatches && parentElement.firstChild.isSameNode(char);\n }) : -1;\n if (selectorIndex < 0) {\n selectorIndex = isMovingToEnd ? 0 : queueItems.length - 1;\n }\n let offset = isMovingToEnd ? 0 : 1;\n return selectorIndex - cursorPosition + offset;\n};\n\nconst destroyTimeouts = (timeouts) => {\n timeouts.forEach(clearTimeout);\n return [];\n};\n\nconst duplicate = (value, times) => new Array(times).fill(value);\n\nlet beforePaint = (cb) => {\n return new Promise((resolve) => {\n requestAnimationFrame(async () => {\n resolve(await cb());\n });\n });\n};\n\nlet getAnimationFromElement = (element) => {\n return element?.getAnimations().find((animation) => {\n return animation.id === element.dataset.tiAnimationId;\n });\n};\n\nlet setCursorAnimation = ({\n cursor,\n frames,\n options\n}) => {\n let animation = cursor.animate(frames, options);\n animation.pause();\n animation.id = cursor.dataset.tiAnimationId;\n beforePaint(() => {\n beforePaint(() => {\n animation.play();\n });\n });\n return animation;\n};\n\nlet rebuildCursorAnimation = ({\n cursor,\n options,\n cursorOptions\n}) => {\n if (!cursor || !cursorOptions) return;\n let animation = getAnimationFromElement(cursor);\n let oldCurrentTime;\n if (animation) {\n options.delay = animation.effect.getComputedTiming().delay;\n oldCurrentTime = animation.currentTime;\n animation.cancel();\n }\n let newAnimation = setCursorAnimation({\n cursor,\n frames: cursorOptions.animation.frames,\n options\n });\n if (oldCurrentTime) {\n newAnimation.currentTime = oldCurrentTime;\n }\n return newAnimation;\n};\n\nlet execute = (queueItem) => queueItem.func?.call(null);\nlet fireItem = async ({\n index,\n queueItems,\n wait,\n cursor,\n cursorOptions\n}) => {\n let queueItem = queueItems[index][1];\n let instantQueue = [];\n let tempIndex = index;\n let futureItem = queueItem;\n let shouldBeGrouped = () => futureItem && !futureItem.delay;\n let shouldPauseCursor = queueItem.shouldPauseCursor() && cursorOptions.autoPause;\n while (shouldBeGrouped()) {\n instantQueue.push(futureItem);\n shouldBeGrouped() && tempIndex++;\n futureItem = queueItems[tempIndex] ? queueItems[tempIndex][1] : null;\n }\n if (instantQueue.length) {\n await beforePaint(async () => {\n for (let q of instantQueue) {\n await execute(q);\n }\n });\n return tempIndex - 1;\n }\n let animation = getAnimationFromElement(cursor);\n let options;\n if (animation) {\n options = {\n ...animation.effect.getComputedTiming(),\n delay: shouldPauseCursor ? cursorOptions.autoPauseDelay : 0\n };\n }\n await wait(async () => {\n if (animation && shouldPauseCursor) {\n animation.cancel();\n }\n await beforePaint(() => {\n execute(queueItem);\n });\n }, queueItem.delay);\n await rebuildCursorAnimation({\n cursor,\n options,\n cursorOptions\n });\n return index;\n};\n\nconst fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver(\n (entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n },\n { threshold: 1 }\n );\n observer.observe(element);\n};\n\nconst generateHash = () => Math.random().toString().substring(2, 9);\n\nconst isInput = (el) => {\n return \"value\" in el;\n};\n\nlet getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter(\n (c) => !(c.childNodes.length > 0)\n );\n};\n\nlet handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\n\nlet select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\n\nlet isBodyElement = (node) => /body/i.test(node?.tagName);\n\nlet insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : (\n // If we add one-off fresh elements, there will be no\n // \"originalParent\", so always fall back to the default target.\n character.originalParent || originalTarget\n );\n let cursorNode = select(\".\" + CURSOR_CLASS, target) || null;\n if (cursorNode && cursorNode.parentElement !== target) {\n target = cursorNode.parentElement;\n }\n target.insertBefore(character, cursorNode);\n};\n\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\n\nconst merge = (originalObj, newObj) => Object.assign({}, originalObj, newObj);\n\nlet processCursorOptions = (cursorOptions) => {\n if (typeof cursorOptions === \"object\") {\n let newOptions = {};\n let { frames: defaultFrames, options: defaultOptions } = DEFAULT_OPTIONS.cursor.animation;\n newOptions.animation = cursorOptions.animation || {};\n newOptions.animation.frames = cursorOptions.animation?.frames || defaultFrames;\n newOptions.animation.options = merge(\n defaultOptions,\n cursorOptions.animation?.options || {}\n );\n newOptions.autoPause = cursorOptions.autoPause ?? DEFAULT_OPTIONS.cursor.autoPause;\n newOptions.autoPauseDelay = cursorOptions.autoPauseDelay || DEFAULT_OPTIONS.cursor.autoPauseDelay;\n return newOptions;\n }\n if (cursorOptions === true) {\n return DEFAULT_OPTIONS.cursor;\n }\n return cursorOptions;\n};\n\nconst removeNode = (node, rootElement) => {\n if (!node) return;\n let nodeParent = node.parentNode;\n let nodeToRemove = nodeParent.childNodes.length > 1 || nodeParent.isSameNode(rootElement) ? (\n // This parent still needs to exist.\n node\n ) : (\n // There's nothing else in there, so just delete the entire thing.\n // By doing this, we clean up markup as we go along.\n nodeParent\n );\n nodeToRemove.remove();\n};\n\nconst repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = nodeToInsertBefore?.parentNode || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\n\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\n\nlet cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n transform: \"translateX(-.125em)\"\n};\nlet setCursorStyles = (id, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce(\n (accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n },\n \"\"\n );\n appendStyleBlock(\n `${cursorSelector} { display: inline-block; width: 0; ${customProperties} }`,\n id\n );\n};\n\nfunction splitOnBreak(str) {\n return str.replace(/<!--(.+?)-->/g, \"\").trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n}\n\nlet updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(\n Math.max(cursorPosition + steps, 0),\n printedCharacters.length\n );\n};\n\nlet wait = (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n let cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay || 0));\n });\n};\n\nclass TypeIt {\n element;\n timeouts;\n cursorPosition;\n predictedCursorPosition;\n statuses = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false,\n firing: false\n };\n opts;\n id;\n queue;\n cursor;\n flushCallback = null;\n unfreeze = () => {\n };\n constructor(element, options = {}) {\n this.opts = merge(DEFAULT_OPTIONS, options);\n this.element = selectorToElement(element);\n this.timeouts = [];\n this.cursorPosition = 0;\n this.unfreeze = () => {\n };\n this.predictedCursorPosition = null;\n this.statuses = merge({}, DEFAULT_STATUSES);\n this.id = generateHash();\n this.queue = Queue([{ delay: this.opts.startDelay }]);\n this.#buildOptions(options);\n this.cursor = this.#setUpCursor();\n this.element.dataset.typeitId = this.id;\n appendStyleBlock(PLACEHOLDER_CSS);\n if (this.opts.strings.length) {\n this.#generateQueue();\n }\n }\n /**\n * Can only be called once.\n */\n go() {\n if (this.statuses.started) {\n return this;\n }\n this.#attachCursor();\n if (!this.opts.waitUntilVisible) {\n this.#fire();\n return this;\n }\n fireWhenVisible(this.element, this.#fire.bind(this));\n return this;\n }\n destroy(shouldRemoveCursor = true) {\n this.timeouts = destroyTimeouts(this.timeouts);\n handleFunctionalArg(shouldRemoveCursor) && this.cursor && this.#removeNode(this.cursor);\n this.statuses.destroyed = true;\n }\n reset(rebuild) {\n !this.is(\"destroyed\") && this.destroy();\n if (rebuild) {\n this.queue.wipe();\n rebuild(this);\n } else {\n this.queue.reset();\n }\n this.cursorPosition = 0;\n for (let property in this.statuses) {\n this.statuses[property] = false;\n }\n this.element[this.#elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n }\n is = function(key) {\n return this.statuses[key];\n };\n type(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let { instant } = actionOpts;\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, this.opts.html);\n let charsAsQueueItems = chars.map((char) => {\n return {\n func: () => this.#type(char),\n char,\n delay: instant || isNonVoidElement(char) ? 0 : this.#getPace(),\n typeable: char.nodeType === Node.TEXT_NODE\n };\n });\n let itemsToQueue = [\n bookEndQueueItems[0],\n { func: async () => await this.opts.beforeString(string, this) },\n ...charsAsQueueItems,\n { func: async () => await this.opts.afterString(string, this) },\n bookEndQueueItems[1]\n ];\n return this.#queueAndReturn(itemsToQueue, actionOpts);\n }\n break(actionOpts = {}) {\n return this.#queueAndReturn(\n {\n func: () => this.#type(createElement(\"BR\")),\n typeable: true\n },\n actionOpts\n );\n }\n move(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let numberOfSteps = countStepsToSelector({\n queueItems: this.queue.getTypeable(),\n selector: movementArg === null ? \"\" : movementArg,\n to,\n cursorPosition: this.#derivedCursorPosition\n });\n let directionalStep = numberOfSteps < 0 ? -1 : 1;\n this.predictedCursorPosition = this.#derivedCursorPosition + numberOfSteps;\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: () => this.#move(directionalStep),\n delay: instant ? 0 : this.#getPace(),\n cursorable: true\n },\n Math.abs(numberOfSteps)\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n exec(func, actionOpts = {}) {\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n return this.#queueAndReturn(\n [bookEndQueueItems[0], { func: () => func(this) }, bookEndQueueItems[1]],\n actionOpts\n );\n }\n options(opts, actionOpts = {}) {\n opts = handleFunctionalArg(opts);\n this.#updateOptions(opts);\n return this.#queueAndReturn({}, actionOpts);\n }\n pause(milliseconds, actionOpts = {}) {\n return this.#queueAndReturn(\n { delay: handleFunctionalArg(milliseconds) },\n actionOpts\n );\n }\n delete(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n let typeableQueueItems = this.queue.getTypeable();\n let rounds = (() => {\n if (num === null) {\n return typeableQueueItems.length;\n }\n if (isNumber(num)) {\n return num;\n }\n return countStepsToSelector({\n queueItems: typeableQueueItems,\n selector: num,\n cursorPosition: this.#derivedCursorPosition,\n to\n });\n })();\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: this.#delete.bind(this),\n delay: instant ? 0 : this.#getPace(1),\n deletable: true\n },\n rounds\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n freeze() {\n this.statuses.frozen = true;\n }\n /**\n * Like `.go()`, but more... \"off the grid.\"\n *\n * - won't trigger `afterComplete` callback\n * - items won't be replayed after `.reset()`\n *\n * When called, all non-done items will be \"flushed\" --\n * that is, executed, but not remembered.\n */\n flush(cb = null) {\n this.flushCallback = cb || this.flushCallback;\n if (this.statuses.firing) {\n return this;\n }\n this.#attachCursor();\n this.#fire(false).then(() => {\n if (this.queue.getPendingQueueItems().length > 0) {\n return this.flush();\n }\n this.flushCallback();\n this.flushCallback = null;\n });\n return this;\n }\n getQueue() {\n return this.queue;\n }\n getOptions() {\n return this.opts;\n }\n updateOptions(options) {\n return this.#updateOptions(options);\n }\n getElement() {\n return this.element;\n }\n empty(actionOpts = {}) {\n return this.#queueAndReturn({ func: this.#empty.bind(this) }, actionOpts);\n }\n async #empty() {\n if (this.#elementIsInput()) {\n this.element.value = \"\";\n return;\n }\n this.#allChars.forEach(this.#removeNode.bind(this));\n return;\n }\n /**\n * Execute items in the queue.\n *\n * @param remember If false, each queue item will be destroyed once executed.\n * @returns\n */\n async #fire(remember = true) {\n this.statuses.started = true;\n this.statuses.firing = true;\n let cleanUp = (qKey) => {\n this.queue.done(qKey, !remember);\n };\n try {\n let queueItems = [...this.queue.getQueue()];\n for (let index = 0; index < queueItems.length; index++) {\n let [queueKey, queueItem] = queueItems[index];\n if (queueItem.done) continue;\n if (!queueItem.deletable || queueItem.deletable && this.#allChars.length) {\n let newIndex = await this.#fireItemWithContext(index, queueItems);\n cleanUpSkipped({\n index,\n newIndex,\n queueItems,\n cleanUp\n });\n index = newIndex;\n }\n cleanUp(queueKey);\n }\n if (!remember) {\n this.statuses.firing = false;\n return this;\n }\n this.statuses.completed = true;\n this.statuses.firing = false;\n await this.opts.afterComplete(this);\n if (!this.opts.loop) {\n throw \"\";\n }\n let delay = this.opts.loopDelay;\n this.#wait(async () => {\n await this.#prepLoop(delay[0]);\n this.#fire();\n }, delay[1]);\n } catch (e) {\n }\n this.statuses.firing = false;\n return this;\n }\n async #move(step) {\n this.cursorPosition = updateCursorPosition(\n step,\n this.cursorPosition,\n this.#allChars\n );\n repositionCursor(this.element, this.#allChars, this.cursorPosition);\n }\n /**\n * 1. Reset queue.\n * 2. Reset initial pause.\n */\n async #prepLoop(delay) {\n let derivedCursorPosition = this.#derivedCursorPosition;\n derivedCursorPosition && await this.#move({ value: derivedCursorPosition });\n let queueItems = this.#allChars.map((c) => {\n return [\n Symbol(),\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true,\n shouldPauseCursor: () => true\n }\n ];\n });\n for (let index = 0; index < queueItems.length; index++) {\n await this.#fireItemWithContext(index, queueItems);\n }\n this.queue.reset();\n this.queue.set(0, { delay });\n }\n #fireItemWithContext(index, queueItems) {\n return fireItem({\n index,\n queueItems,\n wait: this.#wait.bind(this),\n cursor: this.cursor,\n cursorOptions: this.opts.cursor\n });\n }\n async #wait(callback, delay, silent = false) {\n if (this.statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n this.statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await this.opts.beforeStep(this);\n await wait(callback, delay, this.timeouts);\n silent || await this.opts.afterStep(this);\n }\n /**\n * Attach it to the DOM so, along with the required CSS transition.\n */\n async #attachCursor() {\n !this.#elementIsInput() && this.cursor && this.element.appendChild(this.cursor);\n if (this.#shouldRenderCursor) {\n setCursorStyles(this.id, this.element);\n this.cursor.dataset.tiAnimationId = this.id;\n let { animation } = this.opts.cursor;\n let { frames, options } = animation;\n setCursorAnimation({\n frames,\n cursor: this.cursor,\n options: {\n duration: this.opts.cursorSpeed,\n ...options\n }\n });\n }\n }\n #elementIsInput() {\n return isInput(this.element);\n }\n #queueAndReturn(steps, opts) {\n this.queue.add(steps);\n this.#maybeAppendPause(opts);\n return this;\n }\n #maybeAppendPause(opts = {}) {\n let delay = opts.delay;\n delay && this.queue.add({ delay });\n }\n #generateTemporaryOptionQueueItems(newOptions = {}) {\n return [\n { func: () => this.#updateOptions(newOptions) },\n { func: () => this.#updateOptions(this.opts) }\n ];\n }\n async #updateOptions(opts) {\n this.opts = merge(this.opts, opts);\n }\n /**\n * Based on provided strings, generate a TypeIt queue\n * to be fired for each character in the string.\n */\n #generateQueue() {\n let strings = this.opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n this.type(string);\n if (index + 1 === strings.length) {\n return;\n }\n let splitItems = this.opts.breakLines ? [{ func: () => this.#type(createElement(\"BR\")), typeable: true }] : duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1)\n },\n this.queue.getTypeable().length\n );\n this.#addSplitPause(splitItems);\n });\n }\n #buildOptions = (options) => {\n this.opts.cursor = processCursorOptions(\n options.cursor ?? DEFAULT_OPTIONS.cursor\n );\n this.opts.strings = this.#prependHardcodedStrings(\n asArray(this.opts.strings)\n );\n this.opts = merge(this.opts, {\n html: !this.#isInput && this.opts.html,\n nextStringDelay: calculateDelay(this.opts.nextStringDelay),\n loopDelay: calculateDelay(this.opts.loopDelay)\n });\n };\n #prependHardcodedStrings(strings) {\n let existingMarkup = this.element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n this.element.innerHTML = \"\";\n if (this.opts.startDelete) {\n this.element.innerHTML = existingMarkup;\n expandTextNodes(this.element);\n this.#addSplitPause(\n duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true\n },\n this.#allChars.length\n )\n );\n return strings;\n }\n return splitOnBreak(existingMarkup).concat(strings);\n }\n /**\n * Provided it's a non-form element and the options is provided,\n * set up the cursor element for the animation.\n */\n #setUpCursor() {\n if (this.#isInput) {\n return null;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!this.#shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(this.opts.cursorChar).innerHTML;\n return cursor;\n }\n #addSplitPause(items) {\n let delay = this.opts.nextStringDelay;\n this.queue.add([{ delay: delay[0] }, ...items, { delay: delay[1] }]);\n }\n #type(char) {\n insertIntoElement(this.element, char);\n }\n #delete() {\n if (!this.#allChars.length) return;\n if (this.#isInput) {\n this.element.value = this.element.value.slice(0, -1);\n } else {\n this.#removeNode(this.#allChars[this.cursorPosition]);\n }\n }\n #removeNode(node) {\n removeNode(node, this.element);\n }\n #getPace(index = 0) {\n return calculatePace(this.opts)[index];\n }\n get #derivedCursorPosition() {\n return this.predictedCursorPosition ?? this.cursorPosition;\n }\n get #isInput() {\n return isInput(this.element);\n }\n get #shouldRenderCursor() {\n return !!this.opts.cursor && !this.#isInput;\n }\n get #allChars() {\n return getAllChars(this.element);\n }\n}\n\nexport { TypeIt as default };\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
var e = (e) => Array.isArray(e), t = (t) => e(t) ? t : [t], n = "data-typeit-id", r = "ti-cursor", i = {
|
|
2
|
+
started: !1,
|
|
3
|
+
completed: !1,
|
|
4
|
+
frozen: !1,
|
|
5
|
+
destroyed: !1
|
|
6
|
+
}, a = {
|
|
7
|
+
breakLines: !0,
|
|
8
|
+
cursor: {
|
|
9
|
+
autoPause: !0,
|
|
10
|
+
autoPauseDelay: 500,
|
|
11
|
+
animation: {
|
|
12
|
+
frames: [
|
|
13
|
+
0,
|
|
14
|
+
0,
|
|
15
|
+
1
|
|
16
|
+
].map((e) => ({ opacity: e })),
|
|
17
|
+
options: {
|
|
18
|
+
iterations: Infinity,
|
|
19
|
+
easing: "steps(2, start)",
|
|
20
|
+
fill: "forwards"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
cursorChar: "|",
|
|
25
|
+
cursorSpeed: 1e3,
|
|
26
|
+
deleteSpeed: null,
|
|
27
|
+
html: !0,
|
|
28
|
+
lifeLike: !0,
|
|
29
|
+
loop: !1,
|
|
30
|
+
loopDelay: 750,
|
|
31
|
+
nextStringDelay: 750,
|
|
32
|
+
speed: 100,
|
|
33
|
+
startDelay: 250,
|
|
34
|
+
startDelete: !1,
|
|
35
|
+
strings: [],
|
|
36
|
+
waitUntilVisible: !1,
|
|
37
|
+
beforeString: () => {},
|
|
38
|
+
afterString: () => {},
|
|
39
|
+
beforeStep: () => {},
|
|
40
|
+
afterStep: () => {},
|
|
41
|
+
afterComplete: () => {}
|
|
42
|
+
}, o = `[${n}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`, s = (e) => document.createElement(e), c = (e) => document.createTextNode(e), l = (e, t = "") => {
|
|
43
|
+
let n = s("style");
|
|
44
|
+
n.id = t, n.appendChild(c(e)), document.head.appendChild(n);
|
|
45
|
+
}, u = (t) => (e(t) || (t = [t / 2, t / 2]), t), d = (e, t) => Math.abs(Math.random() * (e + t - (e - t)) + (e - t)), f = (e) => e / 2, p = (e) => Array.from(e), m = (e) => ([...e.childNodes].forEach((e) => {
|
|
46
|
+
if (e.nodeValue) return [...e.nodeValue].forEach((t) => {
|
|
47
|
+
e.parentNode.insertBefore(c(t), e);
|
|
48
|
+
}), void e.remove();
|
|
49
|
+
m(e);
|
|
50
|
+
}), e), h = (e) => {
|
|
51
|
+
let t = document.implementation.createHTMLDocument();
|
|
52
|
+
return t.body.innerHTML = e, m(t.body);
|
|
53
|
+
};
|
|
54
|
+
function g(e, t = !1, n = !1) {
|
|
55
|
+
let i, a = e.querySelector(`.${r}`), o = document.createTreeWalker(e, NodeFilter.SHOW_ALL, { acceptNode: (e) => {
|
|
56
|
+
if (a && n) {
|
|
57
|
+
if (e.classList?.contains(r)) return NodeFilter.FILTER_ACCEPT;
|
|
58
|
+
if (a.contains(e)) return NodeFilter.FILTER_REJECT;
|
|
59
|
+
}
|
|
60
|
+
return e.classList?.contains(r) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
|
|
61
|
+
} }), s = [];
|
|
62
|
+
for (; i = o.nextNode();) i.originalParent ||= i.parentNode, s.push(i);
|
|
63
|
+
return t ? s.reverse() : s;
|
|
64
|
+
}
|
|
65
|
+
function _(e, t = !0) {
|
|
66
|
+
return t ? g(h(e)) : p(e).map(c);
|
|
67
|
+
}
|
|
68
|
+
var v = ({ index: e, newIndex: t, queueItems: n, cleanUp: r }) => {
|
|
69
|
+
for (let i = e + 1; i < t + 1; i++) r(n[i][0]);
|
|
70
|
+
}, y = (e) => Number.isInteger(e), b = ({ queueItems: e, selector: t, cursorPosition: n, to: r }) => {
|
|
71
|
+
if (y(t)) return -1 * t;
|
|
72
|
+
let i = (/* @__PURE__ */ RegExp("END", "i")).test(r), a = t ? [...e].reverse().findIndex(({ char: e }) => {
|
|
73
|
+
let n = e.parentElement, r = n.matches(t);
|
|
74
|
+
return !(!i || !r) || r && n.firstChild.isSameNode(e);
|
|
75
|
+
}) : -1;
|
|
76
|
+
return a < 0 && (a = i ? 0 : e.length - 1), a - n + +!i;
|
|
77
|
+
}, x = (e, t) => Array(t).fill(e), S = (e) => new Promise((t) => {
|
|
78
|
+
requestAnimationFrame(async () => {
|
|
79
|
+
t(await e());
|
|
80
|
+
});
|
|
81
|
+
}), C = (e) => e?.getAnimations().find((t) => t.id === e.dataset.tiAnimationId), w = ({ cursor: e, frames: t, options: n }) => {
|
|
82
|
+
let r = e.animate(t, n);
|
|
83
|
+
return r.pause(), r.id = e.dataset.tiAnimationId, S(() => {
|
|
84
|
+
S(() => {
|
|
85
|
+
r.play();
|
|
86
|
+
});
|
|
87
|
+
}), r;
|
|
88
|
+
}, T = (e) => e.func?.call(null), E = async ({ index: e, queueItems: t, wait: n, cursor: r, cursorOptions: i }) => {
|
|
89
|
+
let a = t[e][1], o = [], s = e, c = a, l = () => c && !c.delay, u = a.shouldPauseCursor() && i.autoPause;
|
|
90
|
+
for (; l();) o.push(c), l() && s++, c = t[s] ? t[s][1] : null;
|
|
91
|
+
if (o.length) return await S(async () => {
|
|
92
|
+
for (let e of o) await T(e);
|
|
93
|
+
}), s - 1;
|
|
94
|
+
let d, f = C(r);
|
|
95
|
+
return f && (d = {
|
|
96
|
+
...f.effect.getComputedTiming(),
|
|
97
|
+
delay: u ? i.autoPauseDelay : 0
|
|
98
|
+
}), await n(async () => {
|
|
99
|
+
f && u && f.cancel(), await S(() => {
|
|
100
|
+
T(a);
|
|
101
|
+
});
|
|
102
|
+
}, a.delay), await (({ cursor: e, options: t, cursorOptions: n }) => {
|
|
103
|
+
if (!e || !n) return;
|
|
104
|
+
let r, i = C(e);
|
|
105
|
+
i && (t.delay = i.effect.getComputedTiming().delay, r = i.currentTime, i.cancel());
|
|
106
|
+
let a = w({
|
|
107
|
+
cursor: e,
|
|
108
|
+
frames: n.animation.frames,
|
|
109
|
+
options: t
|
|
110
|
+
});
|
|
111
|
+
return r && (a.currentTime = r), a;
|
|
112
|
+
})({
|
|
113
|
+
cursor: r,
|
|
114
|
+
options: d,
|
|
115
|
+
cursorOptions: i
|
|
116
|
+
}), e;
|
|
117
|
+
}, D = (e) => "value" in e, O = (e) => typeof e == "function" ? e() : e, k = (e, t = document, n = !1) => t["querySelector" + (n ? "All" : "")](e), A = (e, t) => Object.assign({}, e, t), j = {
|
|
118
|
+
"font-family": "",
|
|
119
|
+
"font-weight": "",
|
|
120
|
+
"font-size": "",
|
|
121
|
+
"font-style": "",
|
|
122
|
+
"line-height": "",
|
|
123
|
+
color: "",
|
|
124
|
+
transform: "translateX(-.125em)"
|
|
125
|
+
}, M = class {
|
|
126
|
+
element;
|
|
127
|
+
timeouts;
|
|
128
|
+
cursorPosition;
|
|
129
|
+
predictedCursorPosition;
|
|
130
|
+
statuses = {
|
|
131
|
+
started: !1,
|
|
132
|
+
completed: !1,
|
|
133
|
+
frozen: !1,
|
|
134
|
+
destroyed: !1,
|
|
135
|
+
firing: !1
|
|
136
|
+
};
|
|
137
|
+
opts;
|
|
138
|
+
id;
|
|
139
|
+
queue;
|
|
140
|
+
cursor;
|
|
141
|
+
flushCallback = null;
|
|
142
|
+
unfreeze = () => {};
|
|
143
|
+
constructor(e, n = {}) {
|
|
144
|
+
var r;
|
|
145
|
+
this.opts = A(a, n), this.element = typeof (r = e) == "string" ? k(r) : r, this.timeouts = [], this.cursorPosition = 0, this.unfreeze = () => {}, this.predictedCursorPosition = null, this.statuses = A({}, i), this.id = Math.random().toString().substring(2, 9), this.queue = function(e) {
|
|
146
|
+
let n = function(e) {
|
|
147
|
+
return t(e).forEach((e) => o.set(Symbol(e.char?.innerText), r({ ...e }))), this;
|
|
148
|
+
}, r = (e) => (e.shouldPauseCursor = function() {
|
|
149
|
+
return !!(this.typeable || this.cursorable || this.deletable);
|
|
150
|
+
}, e), i = () => o, a = () => Array.from(o.values()), o = /* @__PURE__ */ new Map();
|
|
151
|
+
return n(e), {
|
|
152
|
+
add: n,
|
|
153
|
+
set: function(e, t) {
|
|
154
|
+
let n = [...o.keys()];
|
|
155
|
+
o.set(n[e], r(t));
|
|
156
|
+
},
|
|
157
|
+
wipe: function() {
|
|
158
|
+
o = /* @__PURE__ */ new Map(), n(e);
|
|
159
|
+
},
|
|
160
|
+
done: (e, t = !1) => t ? o.delete(e) : o.get(e).done = !0,
|
|
161
|
+
reset: function() {
|
|
162
|
+
o.forEach((e) => delete e.done);
|
|
163
|
+
},
|
|
164
|
+
destroy: (e) => o.delete(e),
|
|
165
|
+
getItems: (e = !1) => e ? a() : a().filter((e) => !e.done),
|
|
166
|
+
getQueue: i,
|
|
167
|
+
getTypeable: () => a().filter((e) => e.typeable),
|
|
168
|
+
getPendingQueueItems: () => {
|
|
169
|
+
let e = [];
|
|
170
|
+
for (let [, t] of i()) t.done || e.push(t);
|
|
171
|
+
return e;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
}([{ delay: this.opts.startDelay }]), this.#p(n), this.cursor = this.#h(), this.element.dataset.typeitId = this.id, l(o), this.opts.strings.length && this.#f();
|
|
175
|
+
}
|
|
176
|
+
go() {
|
|
177
|
+
return this.statuses.started ? this : (this.#o(), this.opts.waitUntilVisible ? (e = this.element, t = this.#t.bind(this), new IntersectionObserver((n, r) => {
|
|
178
|
+
n.forEach((n) => {
|
|
179
|
+
n.isIntersecting && (t(), r.unobserve(e));
|
|
180
|
+
});
|
|
181
|
+
}, { threshold: 1 }).observe(e), this) : (this.#t(), this));
|
|
182
|
+
var e, t;
|
|
183
|
+
}
|
|
184
|
+
destroy(e = !0) {
|
|
185
|
+
this.timeouts = (this.timeouts.forEach(clearTimeout), []), O(e) && this.cursor && this.#y(this.cursor), this.statuses.destroyed = !0;
|
|
186
|
+
}
|
|
187
|
+
reset(e) {
|
|
188
|
+
!this.is("destroyed") && this.destroy(), e ? (this.queue.wipe(), e(this)) : this.queue.reset(), this.cursorPosition = 0;
|
|
189
|
+
for (let e in this.statuses) this.statuses[e] = !1;
|
|
190
|
+
return this.element[this.#s() ? "value" : "innerHTML"] = "", this;
|
|
191
|
+
}
|
|
192
|
+
is = function(e) {
|
|
193
|
+
return this.statuses[e];
|
|
194
|
+
};
|
|
195
|
+
type(e, t = {}) {
|
|
196
|
+
e = O(e);
|
|
197
|
+
let { instant: n } = t, r = this.#u(t), i = _(e, this.opts.html).map((e) => {
|
|
198
|
+
return {
|
|
199
|
+
func: () => this.#_(e),
|
|
200
|
+
char: e,
|
|
201
|
+
delay: n || (t = e, /<(.+)>(.*?)<\/(.+)>/.test(t.outerHTML)) ? 0 : this.#b(),
|
|
202
|
+
typeable: e.nodeType === Node.TEXT_NODE
|
|
203
|
+
};
|
|
204
|
+
var t;
|
|
205
|
+
}), a = [
|
|
206
|
+
r[0],
|
|
207
|
+
{ func: async () => await this.opts.beforeString(e, this) },
|
|
208
|
+
...i,
|
|
209
|
+
{ func: async () => await this.opts.afterString(e, this) },
|
|
210
|
+
r[1]
|
|
211
|
+
];
|
|
212
|
+
return this.#c(a, t);
|
|
213
|
+
}
|
|
214
|
+
break(e = {}) {
|
|
215
|
+
return this.#c({
|
|
216
|
+
func: () => this.#_(s("BR")),
|
|
217
|
+
typeable: !0
|
|
218
|
+
}, e);
|
|
219
|
+
}
|
|
220
|
+
move(e, t = {}) {
|
|
221
|
+
e = O(e);
|
|
222
|
+
let n = this.#u(t), { instant: r, to: i } = t, a = b({
|
|
223
|
+
queueItems: this.queue.getTypeable(),
|
|
224
|
+
selector: e === null ? "" : e,
|
|
225
|
+
to: i,
|
|
226
|
+
cursorPosition: this.#x
|
|
227
|
+
}), o = a < 0 ? -1 : 1;
|
|
228
|
+
return this.predictedCursorPosition = this.#x + a, this.#c([
|
|
229
|
+
n[0],
|
|
230
|
+
...x({
|
|
231
|
+
func: () => this.#n(o),
|
|
232
|
+
delay: r ? 0 : this.#b(),
|
|
233
|
+
cursorable: !0
|
|
234
|
+
}, Math.abs(a)),
|
|
235
|
+
n[1]
|
|
236
|
+
], t);
|
|
237
|
+
}
|
|
238
|
+
exec(e, t = {}) {
|
|
239
|
+
let n = this.#u(t);
|
|
240
|
+
return this.#c([
|
|
241
|
+
n[0],
|
|
242
|
+
{ func: () => e(this) },
|
|
243
|
+
n[1]
|
|
244
|
+
], t);
|
|
245
|
+
}
|
|
246
|
+
options(e, t = {}) {
|
|
247
|
+
return e = O(e), this.#d(e), this.#c({}, t);
|
|
248
|
+
}
|
|
249
|
+
pause(e, t = {}) {
|
|
250
|
+
return this.#c({ delay: O(e) }, t);
|
|
251
|
+
}
|
|
252
|
+
delete(e = null, t = {}) {
|
|
253
|
+
e = O(e);
|
|
254
|
+
let n = this.#u(t), r = e, { instant: i, to: a } = t, o = this.queue.getTypeable(), s = r === null ? o.length : y(r) ? r : b({
|
|
255
|
+
queueItems: o,
|
|
256
|
+
selector: r,
|
|
257
|
+
cursorPosition: this.#x,
|
|
258
|
+
to: a
|
|
259
|
+
});
|
|
260
|
+
return this.#c([
|
|
261
|
+
n[0],
|
|
262
|
+
...x({
|
|
263
|
+
func: this.#v.bind(this),
|
|
264
|
+
delay: i ? 0 : this.#b(1),
|
|
265
|
+
deletable: !0
|
|
266
|
+
}, s),
|
|
267
|
+
n[1]
|
|
268
|
+
], t);
|
|
269
|
+
}
|
|
270
|
+
freeze() {
|
|
271
|
+
this.statuses.frozen = !0;
|
|
272
|
+
}
|
|
273
|
+
flush(e = null) {
|
|
274
|
+
return this.flushCallback = e || this.flushCallback, this.statuses.firing || (this.#o(), this.#t(!1).then(() => {
|
|
275
|
+
if (this.queue.getPendingQueueItems().length > 0) return this.flush();
|
|
276
|
+
this.flushCallback(), this.flushCallback = null;
|
|
277
|
+
})), this;
|
|
278
|
+
}
|
|
279
|
+
getQueue() {
|
|
280
|
+
return this.queue;
|
|
281
|
+
}
|
|
282
|
+
getOptions() {
|
|
283
|
+
return this.opts;
|
|
284
|
+
}
|
|
285
|
+
updateOptions(e) {
|
|
286
|
+
return this.#d(e);
|
|
287
|
+
}
|
|
288
|
+
getElement() {
|
|
289
|
+
return this.element;
|
|
290
|
+
}
|
|
291
|
+
empty(e = {}) {
|
|
292
|
+
return this.#c({ func: this.#e.bind(this) }, e);
|
|
293
|
+
}
|
|
294
|
+
async #e() {
|
|
295
|
+
this.#s() ? this.element.value = "" : this.#w.forEach(this.#y.bind(this));
|
|
296
|
+
}
|
|
297
|
+
async #t(e = !0) {
|
|
298
|
+
this.statuses.started = !0, this.statuses.firing = !0;
|
|
299
|
+
let t = (t) => {
|
|
300
|
+
this.queue.done(t, !e);
|
|
301
|
+
};
|
|
302
|
+
try {
|
|
303
|
+
let n = [...this.queue.getQueue()];
|
|
304
|
+
for (let e = 0; e < n.length; e++) {
|
|
305
|
+
let [r, i] = n[e];
|
|
306
|
+
if (!i.done) {
|
|
307
|
+
if (!i.deletable || i.deletable && this.#w.length) {
|
|
308
|
+
let r = await this.#i(e, n);
|
|
309
|
+
v({
|
|
310
|
+
index: e,
|
|
311
|
+
newIndex: r,
|
|
312
|
+
queueItems: n,
|
|
313
|
+
cleanUp: t
|
|
314
|
+
}), e = r;
|
|
315
|
+
}
|
|
316
|
+
t(r);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (!e) return this.statuses.firing = !1, this;
|
|
320
|
+
if (this.statuses.completed = !0, this.statuses.firing = !1, await this.opts.afterComplete(this), !this.opts.loop) throw "";
|
|
321
|
+
let r = this.opts.loopDelay;
|
|
322
|
+
this.#a(async () => {
|
|
323
|
+
await this.#r(r[0]), this.#t();
|
|
324
|
+
}, r[1]);
|
|
325
|
+
} catch {}
|
|
326
|
+
return this.statuses.firing = !1, this;
|
|
327
|
+
}
|
|
328
|
+
async #n(e) {
|
|
329
|
+
var t, n, i;
|
|
330
|
+
this.cursorPosition = (t = e, n = this.cursorPosition, i = this.#w, Math.min(Math.max(n + t, 0), i.length)), ((e, t, n) => {
|
|
331
|
+
let i = t[n - 1], a = k(`.${r}`, e);
|
|
332
|
+
(e = i?.parentNode || e).insertBefore(a, i || null);
|
|
333
|
+
})(this.element, this.#w, this.cursorPosition);
|
|
334
|
+
}
|
|
335
|
+
async #r(e) {
|
|
336
|
+
let t = this.#x;
|
|
337
|
+
t && await this.#n({ value: t });
|
|
338
|
+
let n = this.#w.map((e) => [Symbol(), {
|
|
339
|
+
func: this.#v.bind(this),
|
|
340
|
+
delay: this.#b(1),
|
|
341
|
+
deletable: !0,
|
|
342
|
+
shouldPauseCursor: () => !0
|
|
343
|
+
}]);
|
|
344
|
+
for (let e = 0; e < n.length; e++) await this.#i(e, n);
|
|
345
|
+
this.queue.reset(), this.queue.set(0, { delay: e });
|
|
346
|
+
}
|
|
347
|
+
#i(e, t) {
|
|
348
|
+
return E({
|
|
349
|
+
index: e,
|
|
350
|
+
queueItems: t,
|
|
351
|
+
wait: this.#a.bind(this),
|
|
352
|
+
cursor: this.cursor,
|
|
353
|
+
cursorOptions: this.opts.cursor
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
async #a(e, t, n = !1) {
|
|
357
|
+
this.statuses.frozen && await new Promise((e) => {
|
|
358
|
+
this.unfreeze = () => {
|
|
359
|
+
this.statuses.frozen = !1, e();
|
|
360
|
+
};
|
|
361
|
+
}), n || await this.opts.beforeStep(this), await ((e, t, n) => new Promise((r) => {
|
|
362
|
+
n.push(setTimeout(async () => {
|
|
363
|
+
await e(), r();
|
|
364
|
+
}, t || 0));
|
|
365
|
+
}))(e, t, this.timeouts), n || await this.opts.afterStep(this);
|
|
366
|
+
}
|
|
367
|
+
async #o() {
|
|
368
|
+
if (!this.#s() && this.cursor && this.element.appendChild(this.cursor), this.#C) {
|
|
369
|
+
((e, t) => {
|
|
370
|
+
let i = `[${n}='${e}'] .${r}`, a = getComputedStyle(t);
|
|
371
|
+
l(`${i} { display: inline-block; width: 0; ${Object.entries(j).reduce((e, [t, n]) => `${e} ${t}: var(--ti-cursor-${t}, ${n || a[t]});`, "")} }`, e);
|
|
372
|
+
})(this.id, this.element), this.cursor.dataset.tiAnimationId = this.id;
|
|
373
|
+
let { animation: e } = this.opts.cursor, { frames: t, options: i } = e;
|
|
374
|
+
w({
|
|
375
|
+
frames: t,
|
|
376
|
+
cursor: this.cursor,
|
|
377
|
+
options: {
|
|
378
|
+
duration: this.opts.cursorSpeed,
|
|
379
|
+
...i
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
#s() {
|
|
385
|
+
return D(this.element);
|
|
386
|
+
}
|
|
387
|
+
#c(e, t) {
|
|
388
|
+
return this.queue.add(e), this.#l(t), this;
|
|
389
|
+
}
|
|
390
|
+
#l(e = {}) {
|
|
391
|
+
let t = e.delay;
|
|
392
|
+
t && this.queue.add({ delay: t });
|
|
393
|
+
}
|
|
394
|
+
#u(e = {}) {
|
|
395
|
+
return [{ func: () => this.#d(e) }, { func: () => this.#d(this.opts) }];
|
|
396
|
+
}
|
|
397
|
+
async #d(e) {
|
|
398
|
+
this.opts = A(this.opts, e);
|
|
399
|
+
}
|
|
400
|
+
#f() {
|
|
401
|
+
let e = this.opts.strings.filter((e) => !!e);
|
|
402
|
+
e.forEach((t, n) => {
|
|
403
|
+
if (this.type(t), n + 1 === e.length) return;
|
|
404
|
+
let r = this.opts.breakLines ? [{
|
|
405
|
+
func: () => this.#_(s("BR")),
|
|
406
|
+
typeable: !0
|
|
407
|
+
}] : x({
|
|
408
|
+
func: this.#v.bind(this),
|
|
409
|
+
delay: this.#b(1)
|
|
410
|
+
}, this.queue.getTypeable().length);
|
|
411
|
+
this.#g(r);
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
#p = (e) => {
|
|
415
|
+
this.opts.cursor = ((e) => {
|
|
416
|
+
if (typeof e == "object") {
|
|
417
|
+
let t = {}, { frames: n, options: r } = a.cursor.animation;
|
|
418
|
+
return t.animation = e.animation || {}, t.animation.frames = e.animation?.frames || n, t.animation.options = A(r, e.animation?.options || {}), t.autoPause = e.autoPause ?? a.cursor.autoPause, t.autoPauseDelay = e.autoPauseDelay || a.cursor.autoPauseDelay, t;
|
|
419
|
+
}
|
|
420
|
+
return !0 === e ? a.cursor : e;
|
|
421
|
+
})(e.cursor ?? a.cursor), this.opts.strings = this.#m(t(this.opts.strings)), this.opts = A(this.opts, {
|
|
422
|
+
html: !this.#S && this.opts.html,
|
|
423
|
+
nextStringDelay: u(this.opts.nextStringDelay),
|
|
424
|
+
loopDelay: u(this.opts.loopDelay)
|
|
425
|
+
});
|
|
426
|
+
};
|
|
427
|
+
#m(e) {
|
|
428
|
+
let t = this.element.innerHTML;
|
|
429
|
+
return t ? (this.element.innerHTML = "", this.opts.startDelete ? (this.element.innerHTML = t, m(this.element), this.#g(x({
|
|
430
|
+
func: this.#v.bind(this),
|
|
431
|
+
delay: this.#b(1),
|
|
432
|
+
deletable: !0
|
|
433
|
+
}, this.#w.length)), e) : (n = t, n.replace(/<!--(.+?)-->/g, "").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)) : e;
|
|
434
|
+
var n;
|
|
435
|
+
}
|
|
436
|
+
#h() {
|
|
437
|
+
if (this.#S) return null;
|
|
438
|
+
let e = s("span");
|
|
439
|
+
return e.className = r, this.#C ? (e.innerHTML = h(this.opts.cursorChar).innerHTML, e) : (e.style.visibility = "hidden", e);
|
|
440
|
+
}
|
|
441
|
+
#g(e) {
|
|
442
|
+
let t = this.opts.nextStringDelay;
|
|
443
|
+
this.queue.add([
|
|
444
|
+
{ delay: t[0] },
|
|
445
|
+
...e,
|
|
446
|
+
{ delay: t[1] }
|
|
447
|
+
]);
|
|
448
|
+
}
|
|
449
|
+
#_(e) {
|
|
450
|
+
((e, t) => {
|
|
451
|
+
if (D(e)) return void (e.value = `${e.value}${t.textContent}`);
|
|
452
|
+
t.innerHTML = "";
|
|
453
|
+
let n = (i = t.originalParent, /body/i.test(i?.tagName) ? e : t.originalParent || e);
|
|
454
|
+
var i;
|
|
455
|
+
let a = k("." + r, n) || null;
|
|
456
|
+
a && a.parentElement !== n && (n = a.parentElement), n.insertBefore(t, a);
|
|
457
|
+
})(this.element, e);
|
|
458
|
+
}
|
|
459
|
+
#v() {
|
|
460
|
+
this.#w.length && (this.#S ? this.element.value = this.element.value.slice(0, -1) : this.#y(this.#w[this.cursorPosition]));
|
|
461
|
+
}
|
|
462
|
+
#y(e) {
|
|
463
|
+
((e, t) => {
|
|
464
|
+
if (!e) return;
|
|
465
|
+
let n = e.parentNode;
|
|
466
|
+
(n.childNodes.length > 1 || n.isSameNode(t) ? e : n).remove();
|
|
467
|
+
})(e, this.element);
|
|
468
|
+
}
|
|
469
|
+
#b(e = 0) {
|
|
470
|
+
return function(e) {
|
|
471
|
+
let { speed: t, deleteSpeed: n, lifeLike: r } = e;
|
|
472
|
+
return n = n === null ? t / 3 : n, r ? [d(t, f(t)), d(n, f(n))] : [t, n];
|
|
473
|
+
}(this.opts)[e];
|
|
474
|
+
}
|
|
475
|
+
get #x() {
|
|
476
|
+
return this.predictedCursorPosition ?? this.cursorPosition;
|
|
477
|
+
}
|
|
478
|
+
get #S() {
|
|
479
|
+
return D(this.element);
|
|
480
|
+
}
|
|
481
|
+
get #C() {
|
|
482
|
+
return !!this.opts.cursor && !this.#S;
|
|
483
|
+
}
|
|
484
|
+
get #w() {
|
|
485
|
+
return e = this.element, D(e) ? p(e.value) : g(e, !0).filter((e) => !(e.childNodes.length > 0));
|
|
486
|
+
var e;
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
export { M as default };
|