Files
2026-02-09 10:48:21 +01:00

1 line
12 KiB
JavaScript

define(["exports"],function(_exports){function _createForOfIteratorHelper(r,e){var o,a,u,n,t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return u=!(a=!0),{s:function(){t=t.call(r)},n:function(){var r=t.next();return a=r.done,r},e:function(r){u=!0,o=r},f:function(){try{a||null==t.return||t.return()}finally{if(u)throw o}}};if(Array.isArray(r)||(t=function(r,a){{var t;if(r)return"string"==typeof r?_arrayLikeToArray(r,a):"Map"===(t="Object"===(t={}.toString.call(r).slice(8,-1))&&r.constructor?r.constructor.name:t)||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r))||e&&r&&"number"==typeof r.length)return t&&(r=t),n=0,{s:e=function(){},n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:e};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.toRange=_exports.toElement=_exports.parse=_exports.joinIndir=_exports.isCFI=_exports.fromRange=_exports.fromElements=_exports.fromCalibrePos=_exports.fromCalibreHighlight=_exports.fake=_exports.compare=_exports.collapse=void 0;function escapeCFI(str){return str.replace(/[\^[\](),;=]/g,"^$&")}function tokenizer(str){function push(x){tokens.push(x),state=null,value=""}function cat(x){value+=x,escape=!1}var state,escape,_step,tokens=[],value="",_iterator=_createForOfIteratorHelper(Array.from(str.trim()).concat(""));try{for(_iterator.s();!(_step=_iterator.n()).done;){var char=_step.value;if("^"!==char||escape){if("!"===state)push(["!"]);else if(","===state)push([","]);else if("/"===state||":"===state){if(isNumber.test(char)){cat(char);continue}push([state,parseInt(value)])}else if("~"===state){if(isNumber.test(char)||"."===char){cat(char);continue}push(["~",parseFloat(value)])}else if("@"===state){if(":"===char){push(["@",parseFloat(value)]),state="@";continue}if(isNumber.test(char)||"."===char){cat(char);continue}push(["@",parseFloat(value)])}else{if("["===state){";"!==char||escape?","!==char||escape?"]"!==char||escape?cat(char):push(["[",value]):(push(["[",value]),state="["):(push(["[",value]),state=";");continue}if(null!=state&&state.startsWith(";")){"="!==char||escape?";"!==char||escape?"]"!==char||escape?cat(char):push([state,value]):(push([state,value]),state=";"):(state=";".concat(value),value="");continue}}"/"!==char&&":"!==char&&"~"!==char&&"@"!==char&&"["!==char&&"!"!==char&&","!==char||(state=char)}else escape=!0}}catch(err){_iterator.e(err)}finally{_iterator.f()}return tokens}function parserIndir(tokens){return splitAt(tokens,findTokens(tokens,"!")).map(parser)}function partToString(_ref4){var index=_ref4.index,id=_ref4.id,offset=_ref4.offset,temporal=_ref4.temporal,spatial=_ref4.spatial,text=_ref4.text,param=(_ref4=_ref4.side)?";s=".concat(_ref4):"";return"/".concat(index)+(id?"[".concat(escapeCFI(id)).concat(param,"]"):"")+(null!=offset&&index%2?":".concat(offset):"")+(temporal?"~".concat(temporal):"")+(spatial?"@".concat(spatial.join(":")):"")+(text||!id&&_ref4?"["+(null!=(offset=null==text||null==(index=text.map(escapeCFI))?void 0:index.join(","))?offset:"")+param+"]":"")}function buildRange(from,to){"string"==typeof from&&(from=parse(from)),"string"==typeof to&&(to=parse(to)),from=collapse(from),to=collapse(to,!0);for(var localFrom=from[from.length-1],localTo=to[to.length-1],localParent=[],localStart=[],localEnd=[],pushToParent=!0,len=Math.max(localFrom.length,localTo.length),i=0;i<len;i++){var a=localFrom[i],b=localTo[i];(pushToParent=pushToParent&&!((null==a?void 0:a.index)!==(null==b?void 0:b.index)||null!=a&&a.offset||null!=b&&b.offset))?localParent.push(a):(a&&localStart.push(a),b&&localEnd.push(b))}return to=from.slice(0,-1).concat([localParent]),toString({parent:to,start:[localStart],end:[localEnd]})}function compare(a,b){if("string"==typeof a&&(a=parse(a)),"string"==typeof b&&(b=parse(b)),a.start||b.start)return compare(collapse(a),collapse(b))||compare(collapse(a,!0),collapse(b,!0));for(var i=0;i<Math.max(a.length,b.length);i++)for(var _a$i,p=null!=(_a$i=a[i])?_a$i:[],q=null!=(_a$i=b[i])?_a$i:[],maxIndex=Math.max(p.length,q.length)-1,_i=0;_i<=maxIndex;_i++){var x=p[_i],y=q[_i];if(!x)return-1;if(!y)return 1;if(x.index>y.index)return 1;if(x.index<y.index)return-1;if(_i===maxIndex){if(x.offset>y.offset)return 1;if(x.offset<y.offset)return-1}}return 0}function partsToNode(node,parts,filter){var id=parts[parts.length-1].id;if(id){id=node.ownerDocument.getElementById(id);if(id)return{node:id,offset:0}}var _step3,_iterator3=_createForOfIteratorHelper(parts);try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var _node$firstChild,_node$lastChild,index=_step3.value.index,newNode=node?indexChildNodes(node,filter)[index]:null;if("first"===newNode)return{node:null!=(_node$firstChild=node.firstChild)?_node$firstChild:node};if("last"===newNode)return{node:null!=(_node$lastChild=node.lastChild)?_node$lastChild:node};if("before"===newNode)return{node:node,before:!0};if("after"===newNode)return{node:node,after:!0};node=newNode}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}var offset=parts[parts.length-1].offset;if(!Array.isArray(node))return{node:node,offset:offset};var _step4,sum=0,_iterator4=_createForOfIteratorHelper(node);try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var n=_step4.value,length=n.nodeValue.length;if(offset<=sum+length)return{node:n,offset:offset-sum};sum+=length}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}}var f,findIndices=function(arr,f){return arr.map(function(x,i,a){return f(x,i,a)?i:null}).filter(function(x){return null!=x})},splitAt=function(arr,is){return[-1].concat(babelHelpers.toConsumableArray(is),[arr.length]).reduce(function(_ref,b){var xs=_ref.xs,_ref=_ref.a;return{xs:null!=(xs=null==xs?void 0:xs.concat([arr.slice(_ref+1,b)]))?xs:[],a:b}},{}).xs},isNumber=/\d/,isCFI=_exports.isCFI=/^epubcfi\((.*)\)$/,wrap=function(x){return isCFI.test(x)?x:"epubcfi(".concat(x,")")},findTokens=(_exports.joinIndir=(f=function(){for(var _len2=arguments.length,xs=new Array(_len2),_key2=0;_key2<_len2;_key2++)xs[_key2]=arguments[_key2];return xs.join("!")},function(){for(var _len=arguments.length,xs=new Array(_len),_key=0;_key<_len;_key++)xs[_key]=arguments[_key];return"epubcfi(".concat(f.apply(void 0,babelHelpers.toConsumableArray(xs.map(function(x){var _x$match2;return null!=(_x$match2=null==(_x$match2=x.match(isCFI))?void 0:_x$match2[1])?_x$match2:x}))),")")}),function(tokens,x){return findIndices(tokens,function(_ref2){return babelHelpers.slicedToArray(_ref2,1)[0]===x})}),parser=function(tokens){var state,_step2,parts=[],_iterator2=_createForOfIteratorHelper(tokens);try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var _step2$value=babelHelpers.slicedToArray(_step2.value,2),type=_step2$value[0],val=_step2$value[1];if("/"===type)parts.push({index:val});else{var _last$spatial,_last$text,last=parts[parts.length-1];if(":"===type)last.offset=val;else if("~"===type)last.temporal=val;else if("@"===type)last.spatial=(null!=(_last$spatial=last.spatial)?_last$spatial:[]).concat(val);else if(";s"===type)last.side=val;else if("["===type){if("/"!==state||!val){last.text=(null!=(_last$text=last.text)?_last$text:[]).concat(val);continue}last.id=val}}state=type}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}return parts},parse=function(cfi){var _x$match=tokenizer(null!=(_x$match=null==(_x$match=(cfi=cfi).match(isCFI))?void 0:_x$match[1])?_x$match:cfi),cfi=findTokens(_x$match,",");return cfi.length?(cfi=splitAt(_x$match,cfi).map(parserIndir),{parent:(cfi=babelHelpers.slicedToArray(cfi,3))[0],start:cfi[1],end:cfi[2]}):parserIndir(_x$match)},toInnerString=(_exports.parse=parse,function(parsed){return parsed.parent?[parsed.parent,parsed.start,parsed.end].map(toInnerString).join(","):parsed.map(function(parts){return parts.map(partToString).join("")}).join("!")}),toString=function(parsed){return wrap(toInnerString(parsed))},collapse=function(x,toEnd){return"string"==typeof x?toString(collapse(parse(x),toEnd)):x.parent?(a=x.parent,toEnd=x[toEnd?"end":"start"],a.slice(0,-1).concat([a[a.length-1].concat(toEnd[0])]).concat(toEnd.slice(1))):x;var a},isTextNode=(_exports.collapse=collapse,_exports.compare=compare,function(_ref5){_ref5=_ref5.nodeType;return 3===_ref5||4===_ref5}),isElementNode=function(_ref6){return 1===_ref6.nodeType},getChildNodes=function(node,filter){node=Array.from(node.childNodes).filter(function(node){return isTextNode(node)||isElementNode(node)});return filter?node.map(function(node){var accept=filter(node);return accept===NodeFilter.FILTER_REJECT?null:accept===NodeFilter.FILTER_SKIP?getChildNodes(node,filter):node}).flat().filter(function(x){return x}):node},indexChildNodes=function(node,filter){node=getChildNodes(node,filter).reduce(function(arr,node){var last=arr[arr.length-1];return last?isTextNode(node)?Array.isArray(last)?last.push(node):isTextNode(last)?arr[arr.length-1]=[last,node]:arr.push(node):isElementNode(last)?arr.push(null,node):arr.push(node):arr.push(node),arr},[]);return isElementNode(node[0])&&node.unshift("first"),isElementNode(node[node.length-1])&&node.push("last"),node.unshift("before"),node.push("after"),node},nodeToParts=function(node,offset,filter){var parentNode=node.parentNode,id=node.id,indexed=indexChildNodes(parentNode,filter),index=indexed.findIndex(function(x){return Array.isArray(x)?x.some(function(x){return x===node}):x===node}),indexed=indexed[index];if(Array.isArray(indexed)){var _step5,sum=0,_iterator5=_createForOfIteratorHelper(indexed);try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var x=_step5.value;if(x===node){sum+=offset;break}sum+=x.nodeValue.length}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}offset=sum}indexed={id:id,index:index,offset:offset};return(parentNode!==node.ownerDocument.documentElement?nodeToParts(parentNode,null,filter).concat(indexed):[indexed]).filter(function(x){return-1!==x.index})},fake=(_exports.fromRange=function(range,filter){var startContainer=range.startContainer,startOffset=range.startOffset,endContainer=range.endContainer,endOffset=range.endOffset,startContainer=nodeToParts(startContainer,startOffset,filter);return range.collapsed?toString([startContainer]):(startOffset=nodeToParts(endContainer,endOffset,filter),buildRange([startContainer],[startOffset]))},_exports.toRange=function(doc,parts,filter){var startParts=collapse(parts),parts=collapse(parts,!0),root=doc.documentElement,startParts=partsToNode(root,startParts[0],filter),root=partsToNode(root,parts[0],filter),parts=doc.createRange();return startParts.before?parts.setStartBefore(startParts.node):startParts.after?parts.setStartAfter(startParts.node):parts.setStart(startParts.node,startParts.offset),root.before?parts.setEndBefore(root.node):root.after?parts.setEndAfter(root.node):parts.setEnd(root.node,root.offset),parts},_exports.fromElements=function(elements){var _step6,results=[],parentNode=elements[0].parentNode,parts=nodeToParts(parentNode),_iterator6=_createForOfIteratorHelper(indexChildNodes(parentNode).entries());try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var _step6$value=babelHelpers.slicedToArray(_step6.value,2),index=_step6$value[0],node=_step6$value[1],el=elements[results.length];node===el&&results.push(toString([parts.concat({id:el.id,index:index})]))}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}return results},_exports.toElement=function(doc,parts){return partsToNode(doc.documentElement,collapse(parts)).node},_exports.fake={fromIndex:function(index){return wrap("/6/".concat(2*(index+1)))},toIndex:function(parts){return(null==parts?void 0:parts.at(-1).index)/2-1}});_exports.fromCalibrePos=function(pos){var pos=parse(pos),pos=babelHelpers.slicedToArray(pos,1)[0],item=pos.shift();return pos.shift(),toString([[{index:6},item],pos])};_exports.fromCalibreHighlight=function(_ref7){var spine_index=_ref7.spine_index,start_cfi=_ref7.start_cfi,_ref7=_ref7.end_cfi,spine_index=fake.fromIndex(spine_index)+"!";return buildRange(spine_index+start_cfi.slice(2),spine_index+_ref7.slice(2))}});