@pie-element/extended-text-entry 15.1.1-next.11 → 15.1.2-next.0
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/configure.js +2 -0
- package/controller.js +1 -0
- package/dist/author/defaults.d.ts +166 -0
- package/dist/author/defaults.js +209 -0
- package/dist/author/index.d.ts +52 -0
- package/dist/author/index.js +74 -0
- package/dist/author/main.d.ts +26 -0
- package/dist/author/main.js +166 -0
- package/dist/browser/author/index.js +495 -0
- package/dist/browser/author/index.js.map +1 -0
- package/dist/browser/browser-kkT1XVKw.js +210 -0
- package/dist/browser/browser-kkT1XVKw.js.map +1 -0
- package/dist/browser/controller/index.js +184 -0
- package/dist/browser/controller/index.js.map +1 -0
- package/dist/browser/delivery/index.js +98 -0
- package/dist/browser/delivery/index.js.map +1 -0
- package/dist/browser/dist-D8VooYkz.js +49034 -0
- package/dist/browser/dist-D8VooYkz.js.map +1 -0
- package/dist/browser/extended-text-entry.css +2 -0
- package/dist/browser/main-C2oHx_V9.js +714 -0
- package/dist/browser/main-C2oHx_V9.js.map +1 -0
- package/dist/browser/print/index.js +53 -0
- package/dist/browser/print/index.js.map +1 -0
- package/dist/controller/defaults.d.ts +33 -0
- package/dist/controller/defaults.js +104 -0
- package/dist/controller/index.d.ts +59 -0
- package/dist/controller/index.js +72 -0
- package/dist/delivery/annotation/annotation-editor.d.ts +47 -0
- package/dist/delivery/annotation/annotation-editor.js +296 -0
- package/dist/delivery/annotation/annotation-menu.d.ts +25 -0
- package/dist/delivery/annotation/annotation-menu.js +113 -0
- package/dist/delivery/annotation/annotation-utils.d.ts +20 -0
- package/dist/delivery/annotation/annotation-utils.js +65 -0
- package/dist/delivery/annotation/freeform-editor.d.ts +30 -0
- package/dist/delivery/annotation/freeform-editor.js +143 -0
- package/dist/delivery/index.d.ts +23 -0
- package/dist/delivery/index.js +68 -0
- package/dist/delivery/main.d.ts +27 -0
- package/dist/delivery/main.js +134 -0
- package/dist/extended-text-entry.css +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.iife.d.ts +8 -0
- package/dist/index.iife.js +403 -0
- package/dist/index.js +2 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js +16 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js +16 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Map.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js +16 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Set.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js +14 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js +5 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js +5 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js +10 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js +15 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assignValue.js +10 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssign.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignIn.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignValue.js +12 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseClone.js +57 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseCreate.js +14 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js +10 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMap.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js +11 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsSet.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js +11 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js +12 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js +13 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTrim.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneArrayBuffer.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneBuffer.js +10 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneDataView.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneRegExp.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneSymbol.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneTypedArray.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyArray.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyObject.js +14 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbols.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbolsIn.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js +5 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js +10 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js +4 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeysIn.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getPrototype.js +5 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js +14 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js +10 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbolsIn.js +11 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js +23 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js +13 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneArray.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneByTag.js +33 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneObject.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js +11 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js +13 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js +5 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js +5 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_root.js +5 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js +16 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js +15 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_trimmedEndIndex.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/debounce.js +50 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/eq.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js +10 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArray.js +4 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js +8 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js +11 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isLength.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isMap.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObject.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSet.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keys.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js +9 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/now.js +7 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js +6 -0
- package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toNumber.js +19 -0
- package/dist/print/index.d.ts +15 -0
- package/dist/print/index.js +49 -0
- package/package.json +83 -21
- package/CHANGELOG.json +0 -1282
- package/CHANGELOG.md +0 -2260
- package/LICENSE.md +0 -5
- package/README.md +0 -1
- package/configure/CHANGELOG.json +0 -922
- package/configure/CHANGELOG.md +0 -1949
- package/configure/lib/defaults.js +0 -224
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/index.js +0 -125
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/main.js +0 -247
- package/configure/lib/main.js.map +0 -1
- package/configure/package.json +0 -23
- package/controller/CHANGELOG.json +0 -362
- package/controller/CHANGELOG.md +0 -1179
- package/controller/lib/defaults.js +0 -91
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -101
- package/controller/lib/index.js.map +0 -1
- package/controller/package.json +0 -16
- package/docs/config-schema.json +0 -1782
- package/docs/config-schema.json.md +0 -1333
- package/docs/demo/config.js +0 -7
- package/docs/demo/generate.js +0 -14
- package/docs/demo/index.html +0 -3
- package/docs/demo/session.js +0 -7
- package/docs/pie-schema.json +0 -954
- package/docs/pie-schema.json.md +0 -717
- package/lib/annotation/annotation-editor.js +0 -636
- package/lib/annotation/annotation-editor.js.map +0 -1
- package/lib/annotation/annotation-menu.js +0 -147
- package/lib/annotation/annotation-menu.js.map +0 -1
- package/lib/annotation/annotation-utils.js +0 -205
- package/lib/annotation/annotation-utils.js.map +0 -1
- package/lib/annotation/freeform-editor.js +0 -241
- package/lib/annotation/freeform-editor.js.map +0 -1
- package/lib/index.js +0 -108
- package/lib/index.js.map +0 -1
- package/lib/main.js +0 -205
- package/lib/main.js.map +0 -1
- package/lib/print.js +0 -86
- package/lib/print.js.map +0 -1
- package/module/configure.js +0 -1
- package/module/controller.js +0 -139
- package/module/demo.js +0 -38
- package/module/element.js +0 -1
- package/module/index.html +0 -21
- package/module/manifest.json +0 -22
- package/module/print-demo.js +0 -76
- package/module/print.html +0 -18
- package/module/print.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-C2oHx_V9.js","names":[],"sources":["../../src/delivery/annotation/annotation-utils.ts","../../src/delivery/annotation/freeform-editor.tsx","../../src/delivery/annotation/annotation-menu.tsx","../../src/delivery/annotation/annotation-editor.tsx","../../src/delivery/main.tsx"],"sourcesContent":["// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/extended-text-entry/src/annotation/annotation-utils.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\n// returns DOM Nodes before the stopOffset\nconst getAllTextNodesBeforePosition = (node, stopOffset, nodeArray) => {\n const nodes = nodeArray ? nodeArray : [];\n const offset = nodes.reduce((acc, node) => acc + node.textContent.length, 0);\n let keepWalking = true;\n\n if (offset > stopOffset) {\n return false;\n }\n\n if (node) {\n // 3 = HTML DOM node value for text nodes\n if (node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {\n nodes.push(node);\n }\n\n node = node.firstChild;\n }\n\n while (node && keepWalking) {\n keepWalking = getAllTextNodesBeforePosition(node, stopOffset, nodes);\n node = node.nextSibling;\n }\n\n return nodes;\n};\n\n// returns DOM Nodes that overlap the start or end position\nexport const getDOMNodes = (startOffset, endOffset, rootNode) => {\n const textNodesToEnd = getAllTextNodesBeforePosition(rootNode, endOffset);\n const domNodes = [];\n let start = 0;\n\n textNodesToEnd.forEach((node) => {\n const end = start + node.textContent.length;\n\n [startOffset, endOffset].forEach((offset) => {\n if (start <= offset && offset < end) {\n domNodes.push({\n node,\n offset: offset - start,\n });\n }\n });\n\n start = end;\n });\n\n return domNodes;\n};\n\n// returns [ textNodes, text ]\n// textNodes = DOM Text Nodes between start range and end range node\n// text = plain text in range\nconst getTextNodesBetween = (range) => {\n const {\n commonAncestorContainer: rootNode,\n startContainer: startNode,\n endContainer: endNode,\n startOffset,\n endOffset,\n } = range;\n const textNodes = [];\n let pastStartNode = false;\n let reachedEndNode = false;\n let text = '';\n\n const getTextNodes = (node) => {\n const { nodeValue: value, childNodes } = node;\n\n if (node === startNode && node === endNode) {\n if (value) {\n text += value.substring(startOffset, endOffset);\n }\n\n pastStartNode = reachedEndNode = true;\n } else if (node === startNode) {\n if (value) {\n text += value.substring(startOffset);\n }\n\n pastStartNode = true;\n } else if (node === endNode) {\n if (value) {\n text += value.substring(0, endOffset);\n }\n\n reachedEndNode = true;\n } else if (node && node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {\n // 3 = HTML DOM node value for text nodes\n if (value && pastStartNode && !reachedEndNode) {\n text += value;\n textNodes.push(node);\n }\n }\n\n childNodes.forEach((childNode) => {\n if (!reachedEndNode) {\n getTextNodes(childNode);\n } else {\n return;\n }\n });\n };\n\n getTextNodes(rootNode);\n\n return [textNodes, text];\n};\n\nconst surroundContent = (range) => {\n const wrapper = document.createElement('SPAN');\n\n range.surroundContents(wrapper);\n\n return wrapper;\n};\n\n// wrap each DOM Text Node in range into a span\nexport const wrapRange = (range) => {\n if (range.startContainer === range.endContainer) {\n return [surroundContent(range)];\n }\n\n const [nodesBetween] = getTextNodesBetween(range);\n\n // wrap the start node\n const startRange = document.createRange();\n\n startRange.selectNodeContents(range.startContainer);\n startRange.setStart(range.startContainer, range.startOffset);\n\n const startWrapper = surroundContent(startRange);\n\n // wrap the end node\n const endRange = document.createRange();\n\n endRange.selectNode(range.endContainer);\n endRange.setEnd(range.endContainer, range.endOffset);\n\n const endWrapper = surroundContent(endRange);\n\n // wrap the nodes between start and end nodes, if any\n const centerWrappers = nodesBetween.map((node) => {\n const wrapper = document.createElement('SPAN');\n\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n });\n\n return [startWrapper, ...centerWrappers, endWrapper];\n};\n\n// returns text in range with start and end position in rootNode\nexport const getRangeDetails = (range, rootNode) => {\n const rangeBefore = document.createRange();\n\n rangeBefore.setStart(rootNode, 0);\n rangeBefore.setEnd(range.startContainer, range.startOffset);\n\n const [, text] = getTextNodesBetween(rangeBefore);\n const [, textSelected] = getTextNodesBetween(range);\n const start = text.length;\n const end = start + textSelected.length;\n\n return {\n quote: textSelected,\n start,\n end,\n };\n};\n\n// removes the annotation spans without changing the content inside\nexport const removeElemsWrapping = (elems, container) => {\n (elems || []).forEach((elem) => {\n const parent = elem.parentNode;\n const childNodes = elem.childNodes;\n const childNodesLength = childNodes.length;\n\n if (childNodesLength > 0) {\n for (let i = 0; i < childNodesLength; i++) {\n parent.insertBefore(childNodes[0], elem);\n }\n } else {\n parent.insertBefore(document.createTextNode(elem.textContent), elem);\n }\n\n parent.removeChild(elem);\n });\n\n container.normalize();\n};\n\n// also used in select-text\nexport const clearSelection = () => {\n if (document.getSelection) {\n // for all new browsers (IE9+, Chrome, Firefox)\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(document.createRange());\n } else if (window.getSelection) {\n // equals with the document.getSelection (MSDN info)\n if (window.getSelection().removeAllRanges) {\n // for all new browsers (IE9+, Chrome, Firefox)\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(document.createRange());\n } else if (window.getSelection().empty) {\n // Chrome supports this as well\n window.getSelection().empty();\n }\n } else if (document.selection) {\n // IE8-\n document.selection.empty();\n }\n};\n\n// check if annotation label contains line breaks or its length >= 20 characters\nexport const isSideLabel = (text) => text.length >= 20 || text.search(/\\n|\\r|\\r\\n/) !== -1;\n\nexport const getAnnotationElements = (id) => Array.from(document.querySelectorAll(`[data-id='${id}']`));\n\nexport const getLabelElement = (id) => document.querySelector(`[data-ann-id='${id}']`);\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/extended-text-entry/src/annotation/freeform-editor.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Popover, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst StyledPopover: any = styled(Popover)(({ theme, annotationType }) => ({\n '& .MuiPaper-root': {\n overflowX: 'unset',\n overflowY: 'unset',\n marginLeft: '16px',\n '&::before': {\n position: 'absolute',\n right: '100%',\n top: '13px',\n border: 'solid transparent',\n content: '\"\"',\n height: 0,\n width: 0,\n pointerEvents: 'none',\n borderWidth: '7px',\n borderRightColor: theme.palette.grey[100],\n },\n ...(annotationType === 'negative' && {\n '&::before': {\n borderRightColor: 'rgb(255, 204, 238) !important',\n },\n }),\n ...(annotationType === 'positive' && {\n '&::before': {\n borderRightColor: 'rgb(153, 255, 153) !important',\n },\n }),\n },\n}));\n\nconst Wrapper: any = styled('div')(({ theme, annotationType }) => ({\n width: '200px',\n overflow: 'hidden',\n borderRadius: '4px',\n backgroundColor: '#ffffff',\n border: `4px solid ${theme.palette.grey[100]}`,\n ...(annotationType === 'negative' && {\n borderColor: 'rgb(255, 204, 238) !important',\n }),\n ...(annotationType === 'positive' && {\n borderColor: 'rgb(153, 255, 153) !important',\n }),\n}));\n\nconst Holder: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n borderTop: `2px solid ${theme.palette.grey[100]}`,\n}));\n\nconst Button: any = styled('div')(({ theme, variant, annotationType }) => ({\n flexGrow: 1,\n width: '28%',\n textAlign: 'center',\n padding: '4px',\n cursor: 'pointer',\n '&:not(:nth-child(3n))': {\n borderRight: `1px solid ${theme.palette.grey[100]}`,\n },\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n ...(variant === 'positive' && {\n backgroundColor: 'rgb(153, 255, 153) !important',\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n ...(variant === 'negative' && {\n backgroundColor: 'rgb(255, 204, 238) !important',\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n ...(variant === 'typeChange' && annotationType === 'negative' && {\n '&:hover': {\n backgroundColor: 'rgb(153, 255, 153) !important',\n },\n }),\n ...(variant === 'typeChange' && annotationType === 'positive' && {\n '&:hover': {\n backgroundColor: 'rgb(255, 204, 238) !important',\n },\n }),\n}));\n\nclass FreeformEditor extends React.Component {\n static propTypes = {\n anchorEl: PropTypes.object,\n open: PropTypes.bool,\n offset: PropTypes.number,\n value: PropTypes.string,\n type: PropTypes.string,\n onClose: PropTypes.func,\n onDelete: PropTypes.func,\n onSave: PropTypes.func,\n onTypeChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.state = { value: props.value };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { value } = nextProps;\n const { value: propsValue } = this.props;\n\n if (value !== propsValue) {\n this.setState({ value });\n }\n }\n\n onValueChange = (event) => this.setState({ value: event.target.value });\n\n handleSave: any = () => {\n const { value: oldValue, onSave, onClose, onDelete } = this.props;\n const { value } = this.state;\n\n if (value === '') {\n onDelete();\n }\n\n if (oldValue !== value) {\n onSave(oldValue, value);\n }\n\n this.setState({ value: '' });\n onClose();\n };\n\n handleTypeChange: any = () => {\n const { onTypeChange, onDelete } = this.props;\n const { value } = this.state;\n\n if (value === '') {\n onDelete();\n } else {\n onTypeChange(value);\n }\n\n this.setState({ value: '' });\n };\n\n render() {\n const { anchorEl, offset, onDelete, open, type } = this.props;\n const { value } = this.state;\n\n return (\n <StyledPopover\n anchorEl={anchorEl}\n elevation={2}\n open={open}\n onClose={this.handleSave}\n annotationType={type}\n style={{ marginTop: `${offset}px`, transition: 'margin-top 2s ease-out' }}\n transitionDuration={{ enter: 225, exit: 195 }}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n >\n <Wrapper annotationType={type}>\n <TextField\n id=\"annotation-editor\"\n style={{\n padding: '2px 5px',\n width: '95%',\n }}\n autoFocus\n multiline\n rows={1}\n maxRows={4}\n value={value}\n onChange={this.onValueChange}\n InputProps={{ disableUnderline: true }}\n />\n <Holder>\n <Button onClick={onDelete}>\n Delete\n </Button>\n <Button variant=\"typeChange\" annotationType={type} onClick={this.handleTypeChange}>\n {type === 'negative' ? 'Green' : 'Pink'}\n </Button>\n <Button onClick={this.handleSave}>\n Save\n </Button>\n </Holder>\n </Wrapper>\n </StyledPopover>\n );\n }\n}\n\nexport default FreeformEditor;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/extended-text-entry/src/annotation/annotation-menu.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { Popover } from '@mui/material';\n\nconst StyledPopover: any = styled(Popover)({\n '& .MuiPaper-root': {\n overflowX: 'unset',\n overflowY: 'unset',\n marginTop: '-16px',\n '&::after': {\n position: 'absolute',\n left: 'calc(50% - 7px)',\n border: 'solid transparent',\n content: '\"\"',\n height: 0,\n width: 0,\n pointerEvents: 'none',\n borderWidth: '7px',\n borderTopColor: 'black',\n },\n },\n});\n\nconst MainWrapper: any = styled('div')(({ theme }) => ({\n width: '300px',\n overflow: 'hidden',\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n border: `2px solid ${theme.palette.grey[100]}`,\n}));\n\nconst AnnotationsWrapper: any = styled('div')({\n display: 'flex',\n flexWrap: 'wrap',\n});\n\nconst ControlsWrapper: any = styled('div')(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n borderTop: `2px solid ${theme.palette.grey[100]}`,\n}));\n\nconst Button: any = styled('div')(({ theme, variant }) => ({\n width: '22%',\n textAlign: 'center',\n padding: '4px',\n cursor: 'pointer',\n borderBottom: `1px solid ${theme.palette.grey[100]}`,\n '&:not(:nth-child(4n))': {\n borderRight: `1px solid ${theme.palette.grey[100]}`,\n },\n '&:nth-child(4n)': {\n flexGrow: 1,\n },\n '&:hover': {\n backgroundColor: theme.palette.grey[100],\n },\n ...(variant === 'positive' && {\n backgroundColor: 'rgb(153, 255, 153) !important',\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n ...(variant === 'negative' && {\n backgroundColor: 'rgb(255, 204, 238) !important',\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n}));\n\nclass AnnotationMenu extends React.Component {\n static propTypes = {\n anchorEl: PropTypes.object,\n open: PropTypes.bool,\n annotations: PropTypes.array,\n isNewAnnotation: PropTypes.bool,\n onClose: PropTypes.func,\n onDelete: PropTypes.func,\n onEdit: PropTypes.func,\n onWrite: PropTypes.func,\n onAnnotate: PropTypes.func,\n };\n\n render() {\n const { anchorEl, annotations, isNewAnnotation, onAnnotate, onClose, onEdit, onDelete, onWrite, open } =\n this.props;\n\n return (\n <StyledPopover\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n elevation={5}\n transitionDuration={{ enter: 225, exit: 195 }}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n >\n <MainWrapper>\n <AnnotationsWrapper>\n {annotations.map((annotation, index) => (\n <Button\n key={`annotation-${index}`}\n variant={annotation.type}\n onClick={() => onAnnotate(annotation)}\n >\n {annotation.label}\n </Button>\n ))}\n </AnnotationsWrapper>\n <ControlsWrapper>\n <Button onClick={onClose}>\n Cancel\n </Button>\n <Button style={{ pointerEvents: 'none' }} />\n {isNewAnnotation ? (\n <React.Fragment>\n <Button variant=\"positive\" onClick={() => onWrite('positive')}>\n Write\n </Button>\n <Button variant=\"negative\" onClick={() => onWrite('negative')}>\n Write\n </Button>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={onDelete}>\n Delete\n </Button>\n <Button onClick={onEdit}>\n Edit\n </Button>\n </React.Fragment>\n )}\n </ControlsWrapper>\n </MainWrapper>\n </StyledPopover>\n );\n }\n}\n\nexport default AnnotationMenu;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/extended-text-entry/src/annotation/annotation-editor.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\n\nimport {\n clearSelection,\n isSideLabel,\n getAnnotationElements,\n getDOMNodes,\n getLabelElement,\n getRangeDetails,\n removeElemsWrapping,\n wrapRange,\n} from './annotation-utils.js';\nimport FreeformEditor from './freeform-editor.js';\nimport AnnotationMenu from './annotation-menu.js';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer } from '@pie-lib/config-ui';\n\nconst TextContainer: any = styled('div')({\n padding: '10px 120px 10px 16px',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n border: '1px solid #ccc',\n borderRadius: '4px',\n overflowY: 'scroll',\n lineHeight: '36px',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n '& p': {\n margin: 0,\n },\n '& span[data-latex]': {\n userSelect: 'none',\n '-webkit-user-select': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n },\n});\n\nconst LabelsContainer: any = styled('div')({\n width: '230px',\n});\n\nconst Wrapper: any = styled('div')({\n position: 'relative',\n overflowX: 'hidden',\n display: 'flex',\n});\n\nconst CommentContainer: any = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n width: '100%',\n}));\n\n// Global styles for pseudo-elements that can't be applied inline\nconst globalStyles = `\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: \"\";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n`;\n\n// Inject styles if not already injected\nif (!document.getElementById('annotation-editor-styles')) {\n const styleElement = document.createElement('style');\n styleElement.id = 'annotation-editor-styles';\n styleElement.textContent = globalStyles;\n document.head.appendChild(styleElement);\n}\n\nclass AnnotationEditor extends React.Component {\n static propTypes = {\n text: PropTypes.string,\n comment: PropTypes.string,\n annotations: PropTypes.array,\n predefinedAnnotations: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n width: PropTypes.number,\n height: PropTypes.number,\n maxHeight: PropTypes.string,\n disabled: PropTypes.bool,\n disabledMath: PropTypes.bool,\n customKeys: PropTypes.array,\n keypadMode: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotation: null,\n annotationIndex: null,\n };\n }\n\n componentDidMount() {\n const { annotations, text } = this.props;\n\n if (text) {\n annotations.forEach((annotation) => {\n const [domStart, domEnd] = getDOMNodes(annotation.start, annotation.end, this.textRef);\n\n if (domStart && domEnd) {\n const range = document.createRange();\n\n range.setStart(domStart.node, domStart.offset);\n range.setEnd(domEnd.node, domEnd.offset);\n\n const spans = wrapRange(range);\n\n this.createDOMAnnotation(spans, annotation);\n }\n });\n }\n\n if (this.textRef) {\n this.adjustAnnotationsPosition();\n this.textRef.addEventListener('scroll', this.adjustAnnotationsPosition);\n }\n }\n\n adjustAnnotationsPosition: any = () => {\n if (this.textRef && this.labelsRef) {\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n Array.from(this.labelsRef.children).forEach((label) => {\n const spans = getAnnotationElements(label.dataset.annId);\n const spanOffset = spans[0].offsetTop ? spans[0].offsetTop : spans[0].offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop - 6;\n\n label.style.top = `${top}px`;\n label.style.left = `${left}px`;\n });\n }\n };\n\n handleClick: any = (event) => {\n const { annotations } = this.props;\n const { selectionDetails } = this.state;\n\n if (selectionDetails) {\n // new selection was made inside another annotation and should not update that annotation\n return;\n }\n\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const annotationIndex = annotations.findIndex((annotation) => annotation.id === annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n if (isSideLabel) {\n labelElem.style.zIndex = '10';\n }\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: !!id || (!!annId && !isSideLabel), // true if the annotation or the label was clicked\n openedEditor: !!annId && isSideLabel, // true if the side label was clicked\n selectedElems,\n labelElem,\n annotationIndex,\n annotation: annotations[annotationIndex],\n selectionDetails: null,\n });\n };\n\n handleHover: any = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '20';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.7)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.55)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(128, 255, 128)';\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 179, 230)';\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 179, 230)');\n }\n } else {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 77, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(153, 0, 102)';\n }\n }\n };\n\n handleCancelHover: any = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n labelElem.style.removeProperty('--before-border-color');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n labelElem.style.removeProperty('--before-border-color');\n }\n } else {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n }\n };\n\n handleClose: any = (event) => {\n const { selectedElems, labelElem } = this.state;\n\n if (selectedElems.length && !selectedElems[0].hasAttribute('data-id')) {\n removeElemsWrapping(selectedElems, this.textRef);\n }\n\n if (labelElem) {\n labelElem.style.zIndex = '';\n }\n\n this.setState({\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotationIndex: null,\n annotation: null,\n });\n\n clearSelection();\n };\n\n handleSelection: any = (event) => {\n const selection = window.getSelection();\n\n // prevent unwanted selections\n if (event.detail > 2) {\n clearSelection();\n return;\n }\n\n if (selection && selection.rangeCount > 0) {\n const selectedRange = selection.getRangeAt(0);\n const selectedText = selectedRange.toString();\n const isSelectionInside = this.textRef.contains(selectedRange.commonAncestorContainer);\n\n if (!selection.isCollapsed && selectedText !== '' && isSelectionInside) {\n const selectionDetails = getRangeDetails(selectedRange, this.textRef);\n const selectedElems = wrapRange(selectedRange);\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: true,\n selectedElems,\n selectionDetails,\n });\n }\n }\n };\n\n deleteAnnotation: any = () => {\n const { annotations, onChange } = this.props;\n const { selectedElems, labelElem, annotationIndex, annotation } = this.state;\n const parentRef = isSideLabel(annotation.label) ? this.labelsRef : selectedElems[0];\n\n parentRef.removeChild(labelElem);\n removeElemsWrapping(selectedElems, this.textRef);\n annotations.splice(annotationIndex, 1);\n\n onChange(annotations);\n this.handleClose();\n };\n\n createDOMAnnotation: any = (elems, annotation) => {\n const { disabled } = this.props;\n const { id, label, type } = annotation;\n\n (elems || []).forEach((elem) => {\n elem.dataset.id = id;\n elem.className = `annotation ${type}`;\n // Apply annotation styles directly\n elem.style.position = 'relative';\n elem.style.cursor = 'pointer';\n if (type === 'positive') {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (type === 'negative') {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n elem.onclick = !disabled && this.handleClick;\n elem.onmouseover = this.handleHover;\n elem.onmouseout = this.handleCancelHover;\n });\n\n const firstSpan = (elems && elems[0]) || {};\n const labelElem = document.createElement('SPAN');\n\n labelElem.dataset.annId = id;\n labelElem.innerHTML = label;\n labelElem.onclick = !disabled && this.handleClick;\n labelElem.onmouseover = this.handleHover;\n labelElem.onmouseout = this.handleCancelHover;\n\n if (isSideLabel(label)) {\n const spanOffset = firstSpan.offsetTop ? firstSpan.offsetTop : firstSpan.offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop;\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n labelElem.dataset.freeform = true;\n labelElem.className = `sideAnnotation ${type}`;\n \n // Apply side annotation styles directly\n labelElem.style.position = 'absolute';\n labelElem.style.padding = '4px';\n labelElem.style.borderRadius = '4px';\n labelElem.style.marginLeft = '8px';\n labelElem.style.width = '180px';\n labelElem.style.whiteSpace = 'pre-wrap';\n labelElem.style.wordBreak = 'break-word';\n labelElem.style.border = '2px solid #ffffff';\n labelElem.style.fontSize = '14px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.top = `${top}px`;\n labelElem.style.left = `${left}px`;\n \n if (type === 'negative') {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n } else if (type === 'positive') {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n }\n \n // Add pseudo-element styles via CSS\n labelElem.style.setProperty('--before-border-width', '7px');\n labelElem.style.setProperty('--before-top', '5px');\n labelElem.style.setProperty('--before-right', '100%');\n if (type === 'negative') {\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 204, 238)');\n } else if (type === 'positive') {\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n }\n\n this.labelsRef.appendChild(labelElem);\n } else {\n labelElem.className = `annotationLabel ${type}`;\n \n // Apply annotation label styles directly\n labelElem.style.backgroundColor = 'rgb(242, 242, 242)';\n labelElem.style.padding = '2px';\n labelElem.style.position = 'absolute';\n labelElem.style.userSelect = 'none';\n labelElem.style.whiteSpace = 'nowrap';\n labelElem.style.top = '-10px';\n labelElem.style.left = '-2px';\n labelElem.style.fontSize = '12px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.lineHeight = '6px';\n labelElem.style.webkitUserSelect = 'none';\n labelElem.style.mozUserSelect = 'none';\n labelElem.style.msUserSelect = 'none';\n \n if (type === 'positive') {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (type === 'negative') {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n \n firstSpan.appendChild(labelElem);\n }\n };\n\n createNewAnnotation: any = (label, type) => {\n const { selectedElems, selectionDetails } = this.state;\n const annotation = {\n id: [selectionDetails.start, selectionDetails.end, new Date().getTime()].join('-'),\n label,\n type,\n ...selectionDetails,\n };\n\n this.createDOMAnnotation(selectedElems, annotation);\n\n return annotation;\n };\n\n handleMenuClick: any = (newAnnotation) => {\n const { annotations, onChange } = this.props;\n const { annotation, annotationIndex } = this.state;\n const { type, text: label } = newAnnotation;\n\n if (annotation) {\n const updatedAnnotation = { ...annotation, label, type };\n const { type: oldType, label: oldLabel } = annotation;\n\n this.updateLabel(oldLabel, updatedAnnotation, type !== oldType && oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n } else {\n const newAnnotation = this.createNewAnnotation(label, type);\n\n annotations.push(newAnnotation);\n }\n\n onChange(annotations);\n this.handleClose();\n };\n\n editAnnotation: any = () => {\n this.setState({\n openedMenu: false,\n openedEditor: true,\n });\n };\n\n addAnnotation: any = (type) => {\n const { annotations, onChange } = this.props;\n const annotation = this.createNewAnnotation('', type);\n const labelElem = getLabelElement(annotation.id);\n\n annotations.push(annotation);\n\n this.setState({\n openedMenu: false,\n openedEditor: true,\n annotationIndex: annotations.length - 1,\n annotation,\n labelElem,\n });\n\n onChange(annotations);\n };\n\n updateLabel: any = (oldLabel, annotation, oldType) => {\n const { selectedElems, labelElem } = this.state;\n const { label, type } = annotation;\n\n if ((isSideLabel(label) && isSideLabel(oldLabel)) || (!isSideLabel(label) && !isSideLabel(oldLabel))) {\n labelElem.innerHTML = label;\n\n if (oldType) {\n labelElem.classList.remove(oldType);\n labelElem.classList.add(type);\n\n selectedElems.forEach((elem) => {\n elem.classList.remove(oldType);\n elem.classList.add(type);\n });\n }\n } else if (isSideLabel(label) && !isSideLabel(oldLabel)) {\n selectedElems[0].removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n } else if (!isSideLabel(label) && isSideLabel(oldLabel)) {\n this.labelsRef.removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n }\n };\n\n changeAnnotationType: any = (newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex, selectedElems } = this.state;\n const { type: oldType, label: oldLabel } = annotations[annotationIndex];\n const type = oldType === 'positive' ? 'negative' : 'positive';\n const updatedAnnotation = { ...annotations[annotationIndex], type, label: newLabel };\n\n selectedElems.forEach((span) => {\n span.classList.remove(oldType);\n span.classList.add(type);\n });\n\n this.updateLabel(oldLabel, updatedAnnotation, oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n this.handleClose();\n };\n\n updateAnnotation: any = (oldLabel, newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex } = this.state;\n const updatedAnnotation = { ...annotations[annotationIndex], label: newLabel };\n\n this.updateLabel(oldLabel, updatedAnnotation);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n };\n\n componentWillUnmount() {\n this.textRef.removeEventListener('scroll', this.adjustAnnotationsPosition);\n }\n\n render() {\n const {\n comment,\n customKeys,\n disabled,\n disabledMath,\n keypadMode,\n height,\n width,\n maxHeight,\n onCommentChange,\n predefinedAnnotations,\n text,\n } = this.props;\n const { anchorEl, annotation, openedMenu, openedEditor, selectionDetails } = this.state;\n\n const anchorOffset = anchorEl && (anchorEl.offsetTop ? anchorEl.offsetTop : anchorEl.offsetParent.offsetTop);\n const topOffset = this.textRef && anchorOffset ? anchorOffset - this.textRef.scrollTop - 8 : 0;\n\n return (\n <div>\n <Wrapper>\n <TextContainer\n style={{ width: width - 34, minHeight: height, maxHeight: maxHeight }}\n ref={(r) => (this.textRef = r)}\n onMouseDown={!disabled ? clearSelection : () => {}}\n onMouseUp={!disabled ? this.handleSelection : () => {}}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n <LabelsContainer ref={(r) => (this.labelsRef = r)} />\n </Wrapper>\n\n <CommentContainer label={'Comment'}>\n <EditableHtml\n className=\"prompt\"\n markup={comment || ''}\n onChange={onCommentChange}\n width={width && (width + 104).toString()}\n disabled={disabled}\n pluginProps={{\n math: {\n disabled: disabledMath,\n customKeys: customKeys,\n keypadMode: keypadMode,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n h3: {\n disabled: true,\n },\n }}\n />\n </CommentContainer>\n\n <AnnotationMenu\n anchorEl={anchorEl}\n open={openedMenu && !disabled}\n annotations={predefinedAnnotations}\n isNewAnnotation={!!selectionDetails}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onEdit={this.editAnnotation}\n onWrite={this.addAnnotation}\n onAnnotate={this.handleMenuClick}\n />\n\n <FreeformEditor\n anchorEl={this.textRef}\n open={openedEditor && !disabled}\n offset={topOffset}\n value={(annotation && annotation.label) || ''}\n type={annotation && annotation.type}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onSave={this.updateAnnotation}\n onTypeChange={this.changeAnnotationType}\n />\n </div>\n );\n }\n}\n\nexport default AnnotationEditor;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/extended-text-entry/src/main.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { debounce } from 'lodash-es';\nimport debug from 'debug';\n\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { color, Feedback as FeedbackImport, Collapsible as CollapsibleImport, PreviewPrompt as PreviewPromptImport, UiLayout as UiLayoutImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst UiLayout = unwrapReactInteropSymbol(UiLayoutImport, 'UiLayout') || unwrapReactInteropSymbol(renderUi.UiLayout, 'UiLayout');\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nconst Feedback = unwrapReactInteropSymbol(FeedbackImport, 'Feedback') || unwrapReactInteropSymbol(renderUi.Feedback, 'Feedback');\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nimport AnnotationEditor from './annotation/annotation-editor.js';\n\nconst log = debug('@pie-ui:extended-text-entry');\n\nconst MainContainer: any = styled(UiLayout)({\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst StyledPrompt: any = styled(Typography)(({ theme }) => ({\n width: '100%',\n color: color.text(),\n marginBottom: theme.spacing(2),\n fontSize: 'inherit',\n}));\n\nconst TeacherInstructions: any = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst Editor: any = styled(EditableHtml)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n borderRadius: '4px',\n}));\n\nconst SrOnly: any = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n onValueChange: PropTypes.func.isRequired,\n onAnnotationsChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n model: PropTypes.object,\n session: PropTypes.shape({\n value: PropTypes.string,\n annotations: PropTypes.array,\n comment: PropTypes.string,\n }).isRequired,\n };\n\n changeSessionValue = debounce(this.props.onValueChange, 1500);\n\n changeSessionComment = debounce(this.props.onCommentChange, 1500);\n\n render() {\n const { model, session, onAnnotationsChange } = this.props;\n const {\n animationsDisabled,\n annotatorMode,\n customKeys,\n dimensions,\n disabled,\n disabledAnnotator,\n equationEditor,\n extraCSSRules,\n feedback,\n mathInput,\n playersToolbarPosition,\n predefinedAnnotations,\n prompt,\n spanishInput,\n specialInput,\n spellCheckEnabled,\n teacherInstructions,\n } = model;\n const { annotations, comment, value } = session;\n const { width, height } = dimensions || {};\n const maxHeight = '40vh';\n const toolbarOpts = { position: playersToolbarPosition === 'top' ? 'top' : 'bottom' };\n\n log('[render] disabled? ', disabled);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const languageCharactersProps = [];\n\n if (spanishInput) {\n languageCharactersProps.push({ language: 'spanish' });\n }\n\n if (specialInput) {\n languageCharactersProps.push({ language: 'special' });\n }\n\n return (\n <MainContainer\n extraCSSRules={extraCSSRules}\n ref={(ref) => {\n this.containerRef = ref;\n }}\n >\n <SrOnly>Constructed Response Question</SrOnly>\n\n {teacherInstructions && (\n <TeacherInstructions>\n {!animationsDisabled ? (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </TeacherInstructions>\n )}\n\n {prompt && (\n <StyledPrompt component={'span'}>\n <PreviewPrompt defaultClassName=\"prompt\" prompt={model.prompt} />\n </StyledPrompt>\n )}\n\n {annotatorMode ? (\n <AnnotationEditor\n text={value || ''}\n annotations={annotations || []}\n comment={comment || ''}\n predefinedAnnotations={predefinedAnnotations || []}\n onChange={onAnnotationsChange}\n onCommentChange={this.changeSessionComment}\n width={width}\n height={height}\n maxHeight={maxHeight}\n disabled={disabledAnnotator}\n disabledMath={!mathInput}\n customKeys={customKeys}\n keypadMode={equationEditor}\n />\n ) : (\n <Editor\n className=\"response-area-editor\"\n onChange={this.changeSessionValue}\n markup={value || ''}\n maxWidth={width && width.toString()}\n minWidth={'100px'}\n minHeight={height && height.toString()}\n maxHeight={maxHeight}\n disabled={disabled}\n highlightShape={true}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n charactersLimit={50000}\n autoWidthToolbar\n pluginProps={{\n math: {\n disabled: !mathInput,\n customKeys: this.props.model.customKeys,\n keypadMode: this.props.model.equationEditor,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n table: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n h3: {\n disabled: true,\n },\n separateParagraphs: { disabled: false },\n ul_list: { disabled: true },\n ol_list: { disabled: true },\n }}\n languageCharactersProps={languageCharactersProps}\n />\n )}\n\n {feedback && <Feedback correctness=\"correct\" feedback={feedback} />}\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { a as e, t } from "../browser-kkT1XVKw.js";
|
|
2
|
+
import { d as n, v as r, y as i } from "../dist-D8VooYkz.js";
|
|
3
|
+
import { t as a } from "../main-C2oHx_V9.js";
|
|
4
|
+
import o from "react";
|
|
5
|
+
import { createRoot as s } from "react-dom/client";
|
|
6
|
+
//#region ../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js
|
|
7
|
+
var c = 1, l = 4;
|
|
8
|
+
function u(e) {
|
|
9
|
+
return i(e, c | l);
|
|
10
|
+
}
|
|
11
|
+
var d = (0, (/* @__PURE__ */ e(t(), 1)).default)("pie-element:extended-text-entry:print"), f = (e, t) => {
|
|
12
|
+
let n = t.role === "instructor", r = u(e);
|
|
13
|
+
return r.prompt = r.promptEnabled === !1 ? void 0 : r.prompt, r.teacherInstructions = n && r.teacherInstructionsEnabled !== !1 ? r.teacherInstructions : void 0, r.showTeacherInstructions = n, r.mode = n ? "evaluate" : r.mode, r.dimensions = {
|
|
14
|
+
height: 100,
|
|
15
|
+
width: 500,
|
|
16
|
+
...r.dimensions
|
|
17
|
+
}, r.disabled = !0, r.feedback = void 0, r.animationsDisabled = !0, r;
|
|
18
|
+
}, p = class extends HTMLElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(), this._options = null, this._model = null, this._session = [], this._root = null, this._rerender = r(() => {
|
|
21
|
+
if (this._model && this._session && this._options) {
|
|
22
|
+
let e = f(this._model, this._options), t = o.createElement(a, {
|
|
23
|
+
model: e,
|
|
24
|
+
session: {},
|
|
25
|
+
onChange: () => {},
|
|
26
|
+
onValueChange: () => {},
|
|
27
|
+
onAnnotationsChange: () => {},
|
|
28
|
+
onCommentChange: () => {}
|
|
29
|
+
});
|
|
30
|
+
this._root ||= s(this), this._root.render(t), queueMicrotask(() => {
|
|
31
|
+
d("render complete - render math"), n(this);
|
|
32
|
+
});
|
|
33
|
+
} else d("skip");
|
|
34
|
+
}, 50, {
|
|
35
|
+
leading: !1,
|
|
36
|
+
trailing: !0
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
set options(e) {
|
|
40
|
+
this._options = e, this._rerender();
|
|
41
|
+
}
|
|
42
|
+
set model(e) {
|
|
43
|
+
this._model = e, this._rerender();
|
|
44
|
+
}
|
|
45
|
+
connectedCallback() {}
|
|
46
|
+
disconnectedCallback() {
|
|
47
|
+
this._root && this._root.unmount();
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
//#endregion
|
|
51
|
+
export { p as default };
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js","../../../src/print/index.tsx"],"sourcesContent":["import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/extended-text-entry/src/print.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { cloneDeep, debounce } from 'lodash-es';\nimport Main from '../delivery/main.js';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\n\nimport debug from 'debug';\n\nconst log = debug('pie-element:extended-text-entry:print');\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n const printModel = cloneDeep(model);\n\n printModel.prompt = printModel.promptEnabled !== false ? printModel.prompt : undefined;\n printModel.teacherInstructions =\n instr && printModel.teacherInstructionsEnabled !== false ? printModel.teacherInstructions : undefined;\n printModel.showTeacherInstructions = instr;\n printModel.mode = instr ? 'evaluate' : printModel.mode;\n\n const defaultDimensions = { height: 100, width: 500 };\n\n printModel.dimensions = {\n ...defaultDimensions,\n ...printModel.dimensions,\n };\n\n printModel.disabled = true;\n printModel.feedback = undefined;\n printModel.animationsDisabled = true;\n\n return printModel;\n};\n\nexport default class ExtendedTextEntryPrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._root = null;\n this._rerender = debounce(\n () => {\n if (this._model && this._session && this._options) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element = React.createElement(Main, {\n model: printModel,\n session: {},\n onChange: () => {},\n onValueChange: () => {},\n onAnnotationsChange: () => {},\n onCommentChange: () => {},\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(element);\n queueMicrotask(() => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n set options(o) {\n this._options = o;\n // re-render so role changes (student/instructor) propagate\n this._rerender();\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"x_google_ignoreList":[0],"mappings":";;;;;;AAGA,IAAI,IAAkB,GAClB,IAAqB;AAoBzB,SAAS,EAAU,GAAO;CACxB,OAAO,EAAU,GAAO,IAAkB,CAAkB;AAC9D;ACRA,IAAM,KAAA,IAAA,wBAAA,GAAA,SAAY,uCAAuC,GAEnD,KAAqB,GAAO,MAAS;CACzC,IAAM,IAAQ,EAAK,SAAS,cACtB,IAAa,EAAU,CAAK;CAmBlC,OAjBA,EAAW,SAAS,EAAW,kBAAkB,KAA4B,KAAA,IAApB,EAAW,QACpE,EAAW,sBACT,KAAS,EAAW,+BAA+B,KAAQ,EAAW,sBAAsB,KAAA,GAC9F,EAAW,0BAA0B,GACrC,EAAW,OAAO,IAAQ,aAAa,EAAW,MAIlD,EAAW,aAAa;EAFI,QAAQ;EAAK,OAAO;EAI9C,GAAG,EAAW;CAChB,GAEA,EAAW,WAAW,IACtB,EAAW,WAAW,KAAA,GACtB,EAAW,qBAAqB,IAEzB;AACT,GAEqB,IAArB,cAAoD,YAAY;CAC9D,cAAc;EAMZ,AALA,MAAM,GACN,KAAK,WAAW,MAChB,KAAK,SAAS,MACd,KAAK,WAAW,CAAC,GACjB,KAAK,QAAQ,MACb,KAAK,YAAY,QACT;GACJ,IAAI,KAAK,UAAU,KAAK,YAAY,KAAK,UAAU;IACjD,IAAM,IAAa,EAAkB,KAAK,QAAQ,KAAK,QAAQ,GAEzD,IAAU,EAAM,cAAc,GAAM;KACxC,OAAO;KACP,SAAS,CAAC;KACV,gBAAgB,CAAC;KACjB,qBAAqB,CAAC;KACtB,2BAA2B,CAAC;KAC5B,uBAAuB,CAAC;IAC1B,CAAC;IAMD,AAJA,AACE,KAAK,UAAQ,EAAW,IAAI,GAE9B,KAAK,MAAM,OAAO,CAAO,GACzB,qBAAqB;KAEnB,AADA,EAAI,+BAA+B,GACnC,EAAW,IAAI;IACjB,CAAC;GACH,OACE,EAAI,MAAM;EAEd,GACA,IACA;GAAE,SAAS;GAAO,UAAU;EAAK,CACnC;CACF;CACA,IAAI,QAAQ,GAAG;EAGb,AAFA,KAAK,WAAW,GAEhB,KAAK,UAAU;CACjB;CAEA,IAAI,MAAM,GAAG;EAEX,AADA,KAAK,SAAS,GACd,KAAK,UAAU;CACjB;CAEA,oBAAoB,CAAC;CAErB,uBAAuB;EACrB,AAAI,KAAK,SACP,KAAK,MAAM,QAAQ;CAEvB;AACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @synced-from pie-elements/packages/extended-text-entry/controller/src/defaults.js
|
|
3
|
+
* @auto-generated
|
|
4
|
+
*
|
|
5
|
+
* This file is automatically synced from pie-elements and converted to TypeScript.
|
|
6
|
+
* Manual edits will be overwritten on next sync.
|
|
7
|
+
* To make changes, edit the upstream JavaScript file and run sync again.
|
|
8
|
+
*/
|
|
9
|
+
declare const _default: {
|
|
10
|
+
annotationsEnabled: boolean;
|
|
11
|
+
dimensions: {
|
|
12
|
+
height: number;
|
|
13
|
+
width: number;
|
|
14
|
+
};
|
|
15
|
+
equationEditor: string;
|
|
16
|
+
feedbackEnabled: boolean;
|
|
17
|
+
mathInput: boolean;
|
|
18
|
+
playerSpellCheckDisabled: boolean;
|
|
19
|
+
predefinedAnnotations: {
|
|
20
|
+
label: string;
|
|
21
|
+
text: string;
|
|
22
|
+
type: string;
|
|
23
|
+
}[];
|
|
24
|
+
prompt: string;
|
|
25
|
+
promptEnabled: boolean;
|
|
26
|
+
rationale: string;
|
|
27
|
+
rationaleEnabled: boolean;
|
|
28
|
+
studentInstructionsEnabled: boolean;
|
|
29
|
+
teacherInstructions: string;
|
|
30
|
+
teacherInstructionsEnabled: boolean;
|
|
31
|
+
toolbarEditorPosition: string;
|
|
32
|
+
};
|
|
33
|
+
export default _default;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
//#region src/controller/defaults.ts
|
|
2
|
+
var e = {
|
|
3
|
+
annotationsEnabled: !1,
|
|
4
|
+
dimensions: {
|
|
5
|
+
height: 100,
|
|
6
|
+
width: 500
|
|
7
|
+
},
|
|
8
|
+
equationEditor: "Grade 8 - HS",
|
|
9
|
+
feedbackEnabled: !1,
|
|
10
|
+
mathInput: !1,
|
|
11
|
+
playerSpellCheckDisabled: !0,
|
|
12
|
+
predefinedAnnotations: [
|
|
13
|
+
{
|
|
14
|
+
label: "good",
|
|
15
|
+
text: "good",
|
|
16
|
+
type: "positive"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: "★",
|
|
20
|
+
text: "★",
|
|
21
|
+
type: "positive"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: ":-)",
|
|
25
|
+
text: ":-)",
|
|
26
|
+
type: "positive"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: "creative",
|
|
30
|
+
text: "creative",
|
|
31
|
+
type: "positive"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: "run-on",
|
|
35
|
+
text: "run-on",
|
|
36
|
+
type: "negative"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: "frag",
|
|
40
|
+
text: "fragment",
|
|
41
|
+
type: "negative"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
label: "tran",
|
|
45
|
+
text: "transition",
|
|
46
|
+
type: "negative"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
label: "supp",
|
|
50
|
+
text: "support needed",
|
|
51
|
+
type: "negative"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
label: "punc",
|
|
55
|
+
text: "punctuation",
|
|
56
|
+
type: "negative"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
label: "agr",
|
|
60
|
+
text: "agreement wrong",
|
|
61
|
+
type: "negative"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
label: "unclear",
|
|
65
|
+
text: "unclear",
|
|
66
|
+
type: "negative"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
label: "cut",
|
|
70
|
+
text: "cut",
|
|
71
|
+
type: "negative"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
label: "sp",
|
|
75
|
+
text: "spelling",
|
|
76
|
+
type: "negative"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
label: "cap",
|
|
80
|
+
text: "capitalization",
|
|
81
|
+
type: "negative"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
label: "inf",
|
|
85
|
+
text: "informal",
|
|
86
|
+
type: "negative"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
label: "awk",
|
|
90
|
+
text: "awkward",
|
|
91
|
+
type: "negative"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
prompt: "",
|
|
95
|
+
promptEnabled: !0,
|
|
96
|
+
rationale: "",
|
|
97
|
+
rationaleEnabled: !0,
|
|
98
|
+
studentInstructionsEnabled: !0,
|
|
99
|
+
teacherInstructions: "",
|
|
100
|
+
teacherInstructionsEnabled: !0,
|
|
101
|
+
toolbarEditorPosition: "bottom"
|
|
102
|
+
};
|
|
103
|
+
//#endregion
|
|
104
|
+
export { e as default };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @synced-from pie-elements/packages/extended-text-entry/controller/src/index.js
|
|
3
|
+
* @auto-generated
|
|
4
|
+
*
|
|
5
|
+
* This file is automatically synced from pie-elements and converted to TypeScript.
|
|
6
|
+
* Manual edits will be overwritten on next sync.
|
|
7
|
+
* To make changes, edit the upstream JavaScript file and run sync again.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createDefaultModel(model?: {}): Promise<{
|
|
10
|
+
annotationsEnabled: boolean;
|
|
11
|
+
dimensions: {
|
|
12
|
+
height: number;
|
|
13
|
+
width: number;
|
|
14
|
+
};
|
|
15
|
+
equationEditor: string;
|
|
16
|
+
feedbackEnabled: boolean;
|
|
17
|
+
mathInput: boolean;
|
|
18
|
+
playerSpellCheckDisabled: boolean;
|
|
19
|
+
predefinedAnnotations: {
|
|
20
|
+
label: string;
|
|
21
|
+
text: string;
|
|
22
|
+
type: string;
|
|
23
|
+
}[];
|
|
24
|
+
prompt: string;
|
|
25
|
+
promptEnabled: boolean;
|
|
26
|
+
rationale: string;
|
|
27
|
+
rationaleEnabled: boolean;
|
|
28
|
+
studentInstructionsEnabled: boolean;
|
|
29
|
+
teacherInstructions: string;
|
|
30
|
+
teacherInstructionsEnabled: boolean;
|
|
31
|
+
toolbarEditorPosition: string;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const normalize: (question: any) => any;
|
|
34
|
+
export declare function model(question: any, session: any, env: any): Promise<{
|
|
35
|
+
prompt: any;
|
|
36
|
+
dimensions: any;
|
|
37
|
+
customKeys: any;
|
|
38
|
+
id: any;
|
|
39
|
+
disabled: boolean;
|
|
40
|
+
feedback: string | undefined;
|
|
41
|
+
teacherInstructions: any;
|
|
42
|
+
language: any;
|
|
43
|
+
mathInput: any;
|
|
44
|
+
spanishInput: any;
|
|
45
|
+
specialInput: any;
|
|
46
|
+
equationEditor: any;
|
|
47
|
+
spellCheckEnabled: boolean;
|
|
48
|
+
playersToolbarPosition: any;
|
|
49
|
+
annotatorMode: any;
|
|
50
|
+
disabledAnnotator: boolean;
|
|
51
|
+
predefinedAnnotations: any;
|
|
52
|
+
extraCSSRules: any;
|
|
53
|
+
}>;
|
|
54
|
+
export declare function outcome(): Promise<{
|
|
55
|
+
score: number;
|
|
56
|
+
completed: string;
|
|
57
|
+
note: string;
|
|
58
|
+
}>;
|
|
59
|
+
export declare const validate: (model?: {}, config?: {}) => {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import e from "./defaults.js";
|
|
2
|
+
import t from "debug";
|
|
3
|
+
import { getFeedback as n } from "@pie-element/shared-feedback";
|
|
4
|
+
//#region src/controller/index.ts
|
|
5
|
+
var r = t("@pie-element:extended-text-entry:controller");
|
|
6
|
+
async function i(t = {}) {
|
|
7
|
+
return r("[createDefaultModel]", t), {
|
|
8
|
+
...e,
|
|
9
|
+
...t
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
var a = (t) => ({
|
|
13
|
+
...e,
|
|
14
|
+
...t
|
|
15
|
+
});
|
|
16
|
+
async function o(e, t, i) {
|
|
17
|
+
r("[question]", e);
|
|
18
|
+
let o = a(e), s = i.mode === "evaluate" && o.feedbackEnabled ? n(o.feedback, "Your answer has been submitted") : Promise.resolve(void 0), c = null;
|
|
19
|
+
c = i.role === "instructor" && (i.mode === "view" || i.mode === "evaluate") && o.teacherInstructionsEnabled ? o.teacherInstructions : null;
|
|
20
|
+
let l = o.equationEditor || "miscellaneous";
|
|
21
|
+
switch (o.equationEditor) {
|
|
22
|
+
case "Grade 1 - 2":
|
|
23
|
+
l = 1;
|
|
24
|
+
break;
|
|
25
|
+
case "Grade 3 - 5":
|
|
26
|
+
l = 3;
|
|
27
|
+
break;
|
|
28
|
+
case "Grade 6 - 7":
|
|
29
|
+
l = 6;
|
|
30
|
+
break;
|
|
31
|
+
case "Grade 8 - HS":
|
|
32
|
+
l = 8;
|
|
33
|
+
break;
|
|
34
|
+
default: break;
|
|
35
|
+
}
|
|
36
|
+
let u = o.annotationsEnabled && (i.role === "instructor" || i.mode === "evaluate");
|
|
37
|
+
return s.then((e) => ({
|
|
38
|
+
prompt: o.promptEnabled ? o.prompt : null,
|
|
39
|
+
dimensions: o.dimensions,
|
|
40
|
+
customKeys: o.customKeys || [],
|
|
41
|
+
id: o.id,
|
|
42
|
+
disabled: i.mode !== "gather",
|
|
43
|
+
feedback: e,
|
|
44
|
+
teacherInstructions: c,
|
|
45
|
+
language: o.language,
|
|
46
|
+
mathInput: o.mathInput,
|
|
47
|
+
spanishInput: o.spanishInput,
|
|
48
|
+
specialInput: o.specialInput,
|
|
49
|
+
equationEditor: l,
|
|
50
|
+
spellCheckEnabled: !o.playerSpellCheckDisabled,
|
|
51
|
+
playersToolbarPosition: o.playersToolbarPosition || "bottom",
|
|
52
|
+
annotatorMode: u,
|
|
53
|
+
disabledAnnotator: o.annotationsEnabled ? i.role !== "instructor" : !0,
|
|
54
|
+
predefinedAnnotations: o.annotationsEnabled ? o.predefinedAnnotations : [],
|
|
55
|
+
extraCSSRules: o.extraCSSRules
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
async function s() {
|
|
59
|
+
return {
|
|
60
|
+
score: 0,
|
|
61
|
+
completed: "n/a",
|
|
62
|
+
note: "Requires manual scoring"
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
var c = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), l = (e = {}, t = {}) => {
|
|
66
|
+
let n = {};
|
|
67
|
+
return ["teacherInstructions", "prompt"].forEach((r) => {
|
|
68
|
+
t[r]?.required && !c(e[r]) && (n[r] = "This field is required.");
|
|
69
|
+
}), n;
|
|
70
|
+
};
|
|
71
|
+
//#endregion
|
|
72
|
+
export { i as createDefaultModel, o as model, a as normalize, s as outcome, l as validate };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @synced-from pie-elements/packages/extended-text-entry/src/annotation/annotation-editor.jsx
|
|
3
|
+
* @auto-generated
|
|
4
|
+
*
|
|
5
|
+
* This file is automatically synced from pie-elements and converted to TypeScript.
|
|
6
|
+
* Manual edits will be overwritten on next sync.
|
|
7
|
+
* To make changes, edit the upstream JavaScript file and run sync again.
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
11
|
+
declare class AnnotationEditor extends React.Component {
|
|
12
|
+
static propTypes: {
|
|
13
|
+
text: PropTypes.Requireable<string>;
|
|
14
|
+
comment: PropTypes.Requireable<string>;
|
|
15
|
+
annotations: PropTypes.Requireable<any[]>;
|
|
16
|
+
predefinedAnnotations: PropTypes.Requireable<any[]>;
|
|
17
|
+
onChange: PropTypes.Validator<(...args: any[]) => any>;
|
|
18
|
+
onCommentChange: PropTypes.Validator<(...args: any[]) => any>;
|
|
19
|
+
width: PropTypes.Requireable<number>;
|
|
20
|
+
height: PropTypes.Requireable<number>;
|
|
21
|
+
maxHeight: PropTypes.Requireable<string>;
|
|
22
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
23
|
+
disabledMath: PropTypes.Requireable<boolean>;
|
|
24
|
+
customKeys: PropTypes.Requireable<any[]>;
|
|
25
|
+
keypadMode: PropTypes.Requireable<string>;
|
|
26
|
+
};
|
|
27
|
+
constructor(props: any);
|
|
28
|
+
componentDidMount(): void;
|
|
29
|
+
adjustAnnotationsPosition: any;
|
|
30
|
+
handleClick: any;
|
|
31
|
+
handleHover: any;
|
|
32
|
+
handleCancelHover: any;
|
|
33
|
+
handleClose: any;
|
|
34
|
+
handleSelection: any;
|
|
35
|
+
deleteAnnotation: any;
|
|
36
|
+
createDOMAnnotation: any;
|
|
37
|
+
createNewAnnotation: any;
|
|
38
|
+
handleMenuClick: any;
|
|
39
|
+
editAnnotation: any;
|
|
40
|
+
addAnnotation: any;
|
|
41
|
+
updateLabel: any;
|
|
42
|
+
changeAnnotationType: any;
|
|
43
|
+
updateAnnotation: any;
|
|
44
|
+
componentWillUnmount(): void;
|
|
45
|
+
render(): React.JSX.Element;
|
|
46
|
+
}
|
|
47
|
+
export default AnnotationEditor;
|