type-on-strap 2.4.13 → 2.5.1

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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -44
  3. data/_includes/blog/blog.liquid +3 -3
  4. data/_includes/blog/blog_nav.liquid +1 -1
  5. data/_includes/blog/post_footer.liquid +1 -0
  6. data/_includes/blog/post_nav.liquid +2 -2
  7. data/_includes/default/category_list.liquid +22 -0
  8. data/_includes/default/head.liquid +17 -12
  9. data/_includes/default/navbar.liquid +2 -2
  10. data/_includes/default/tags_list.liquid +2 -2
  11. data/_includes/gallery.html +5 -7
  12. data/_includes/portfolio.html +5 -5
  13. data/_includes/social/cusdis.liquid +5 -5
  14. data/_includes/social/disqus.liquid +6 -11
  15. data/_includes/social/giscus.liquid +17 -17
  16. data/_includes/social/share_buttons.liquid +9 -9
  17. data/_includes/social/utterances.liquid +8 -8
  18. data/_layouts/categories.liquid +79 -17
  19. data/_layouts/default.html +3 -3
  20. data/_layouts/page.liquid +11 -11
  21. data/_layouts/post.liquid +11 -6
  22. data/_layouts/search.liquid +10 -3
  23. data/_sass/base/_global.scss +7 -11
  24. data/_sass/base/_utility.scss +8 -29
  25. data/_sass/base/_variables.scss +43 -2
  26. data/_sass/external/_font-awesome.scss +1 -1
  27. data/_sass/external/_katex.scss +1 -1
  28. data/_sass/external/_pacifico.scss +3 -6
  29. data/_sass/external/font-awesome/_core.scss +1 -1
  30. data/_sass/external/font-awesome/_icons.scss +0 -1
  31. data/_sass/external/font-awesome/brands.scss +1 -1
  32. data/_sass/external/font-awesome/fontawesome.scss +1 -1
  33. data/_sass/external/font-awesome/regular.scss +1 -1
  34. data/_sass/external/font-awesome/solid.scss +1 -1
  35. data/_sass/external/font-awesome/v4-shims.scss +1 -1
  36. data/_sass/external/katex/katex.scss +151 -266
  37. data/_sass/includes/_blog_nav.scss +0 -4
  38. data/_sass/includes/_gallery.scss +12 -24
  39. data/_sass/includes/_navbar.scss +1 -7
  40. data/_sass/includes/_portfolio.scss +2 -4
  41. data/_sass/layouts/_blog.scss +7 -23
  42. data/_sass/layouts/_categories.scss +80 -38
  43. data/_sass/layouts/_page.scss +1 -1
  44. data/_sass/layouts/_posts.scss +19 -12
  45. data/_sass/layouts/_search.scss +11 -14
  46. data/_sass/layouts/_tags.scss +12 -1
  47. data/_sass/type-on-strap.scss +10 -0
  48. data/assets/fonts/Pacifico/Pacifico.woff +0 -0
  49. data/assets/fonts/Pacifico/Pacifico.woff2 +0 -0
  50. data/assets/fonts/font-awesome/fa-brands-400.ttf +0 -0
  51. data/assets/fonts/font-awesome/fa-brands-400.woff2 +0 -0
  52. data/assets/fonts/font-awesome/fa-regular-400.ttf +0 -0
  53. data/assets/fonts/font-awesome/fa-regular-400.woff2 +0 -0
  54. data/assets/fonts/font-awesome/fa-solid-900.ttf +0 -0
  55. data/assets/fonts/font-awesome/fa-solid-900.woff2 +0 -0
  56. data/assets/js/comments-lazy-load.min.js +1 -0
  57. data/assets/js/main.min.js +1 -6
  58. data/assets/js/vendor/katex.auto-render.min.js +1 -1
  59. data/assets/js/vendor/katex.min.js +1 -1
  60. data/assets/js/vendor/mermaid.min.js +534 -323
  61. data/assets/js/vendor/simple-jekyll-search.min.js +3 -3
  62. metadata +18 -41
  63. data/assets/css/bootstrap-iso.less +0 -12
  64. data/assets/css/vendor/bootstrap-iso.css +0 -9121
  65. data/assets/css/vendor/bootstrap-iso.min.css +0 -6
  66. data/assets/css/vendor/bootstrap.css +0 -10007
  67. data/assets/fonts/Pacifico/Pacifico.eot +0 -0
  68. data/assets/fonts/Pacifico/Pacifico.svg +0 -10833
  69. data/assets/fonts/Pacifico/Pacifico.ttf +0 -0
  70. data/assets/fonts/Pacifico/original-pacifico-regular.ttf +0 -0
  71. data/assets/fonts/font-awesome/fa-v4compatibility.ttf +0 -0
  72. data/assets/fonts/font-awesome/fa-v4compatibility.woff2 +0 -0
  73. data/assets/fonts/katex/KaTeX_AMS-Regular.ttf +0 -0
  74. data/assets/fonts/katex/KaTeX_Caligraphic-Bold.ttf +0 -0
  75. data/assets/fonts/katex/KaTeX_Caligraphic-Regular.ttf +0 -0
  76. data/assets/fonts/katex/KaTeX_Fraktur-Bold.ttf +0 -0
  77. data/assets/fonts/katex/KaTeX_Fraktur-Regular.ttf +0 -0
  78. data/assets/fonts/katex/KaTeX_Main-Bold.ttf +0 -0
  79. data/assets/fonts/katex/KaTeX_Main-BoldItalic.ttf +0 -0
  80. data/assets/fonts/katex/KaTeX_Main-Italic.ttf +0 -0
  81. data/assets/fonts/katex/KaTeX_Main-Regular.ttf +0 -0
  82. data/assets/fonts/katex/KaTeX_Math-BoldItalic.ttf +0 -0
  83. data/assets/fonts/katex/KaTeX_Math-Italic.ttf +0 -0
  84. data/assets/fonts/katex/KaTeX_SansSerif-Bold.ttf +0 -0
  85. data/assets/fonts/katex/KaTeX_SansSerif-Italic.ttf +0 -0
  86. data/assets/fonts/katex/KaTeX_SansSerif-Regular.ttf +0 -0
  87. data/assets/fonts/katex/KaTeX_Script-Regular.ttf +0 -0
  88. data/assets/fonts/katex/KaTeX_Size1-Regular.ttf +0 -0
  89. data/assets/fonts/katex/KaTeX_Size2-Regular.ttf +0 -0
  90. data/assets/fonts/katex/KaTeX_Size3-Regular.ttf +0 -0
  91. data/assets/fonts/katex/KaTeX_Size4-Regular.ttf +0 -0
  92. data/assets/fonts/katex/KaTeX_Typewriter-Regular.ttf +0 -0
  93. data/assets/js/partials/cookie_consent_init.js +0 -60
  94. data/assets/js/partials/dark-mode.js +0 -57
  95. data/assets/js/partials/masonry_init.js +0 -22
  96. data/assets/js/partials/navbar.js +0 -26
  97. data/assets/js/vendor/imagesloaded.pkgd.min.js +0 -12
  98. data/assets/js/vendor/masonry.pkgd.min.js +0 -9
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * Simple-Jekyll-Search v1.15.1
2
+ * Simple-Jekyll-Search v2.1.3
3
3
  * Copyright 2015-2022, Christian Fei
4
- * Copyright 2025-2025, Sylhare
4
+ * Copyright 2025-2026, Sylhare
5
5
  * Licensed under the MIT License.
6
6
  */
7
- (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,factory(global.SimpleJekyllSearch={}))})(this,(function(exports2){"use strict";function load(location,callback){const xhr=getXHR();xhr.open("GET",location,true);xhr.onreadystatechange=createStateChangeListener(xhr,callback);xhr.send()}function createStateChangeListener(xhr,callback){return function(){if(xhr.readyState===4&&xhr.status===200){try{callback(null,JSON.parse(xhr.responseText))}catch(err){callback(err instanceof Error?err:new Error(String(err)),null)}}}}function getXHR(){return window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP")}class OptionsValidator{constructor(params){if(!this.validateParams(params)){throw new Error("-- OptionsValidator: required options missing")}this.requiredOptions=params.required}getRequiredOptions(){return this.requiredOptions}validate(parameters){const errors=[];this.requiredOptions.forEach((requiredOptionName=>{if(typeof parameters[requiredOptionName]==="undefined"){errors.push(requiredOptionName)}}));return errors}validateParams(params){if(!params){return false}return typeof params.required!=="undefined"&&Array.isArray(params.required)}}function fuzzySearch(text,pattern){pattern=pattern.trimEnd();if(pattern.length===0)return true;pattern=pattern.toLowerCase();text=text.toLowerCase();let remainingText=text,currentIndex=-1;for(const char of pattern){const nextIndex=remainingText.indexOf(char);if(nextIndex===-1||currentIndex!==-1&&remainingText.slice(0,nextIndex).split(" ").length-1>2){return false}currentIndex=nextIndex;remainingText=remainingText.slice(nextIndex+1)}return true}function literalSearch(text,criteria){text=text.trim().toLowerCase();const pattern=criteria.endsWith(" ")?[criteria.toLowerCase()]:criteria.trim().toLowerCase().split(" ");return pattern.filter((word=>text.indexOf(word)>=0)).length===pattern.length}function levenshtein(a,b){const lenA=a.length;const lenB=b.length;const distanceMatrix=Array.from({length:lenA+1},(()=>Array(lenB+1).fill(0)));for(let i=0;i<=lenA;i++)distanceMatrix[i][0]=i;for(let j=0;j<=lenB;j++)distanceMatrix[0][j]=j;for(let i=1;i<=lenA;i++){for(let j=1;j<=lenB;j++){const cost=a[i-1]===b[j-1]?0:1;distanceMatrix[i][j]=Math.min(distanceMatrix[i-1][j]+1,distanceMatrix[i][j-1]+1,distanceMatrix[i-1][j-1]+cost)}}return distanceMatrix[lenA][lenB]}function levenshteinSearch(text,pattern){const distance=levenshtein(pattern,text);const similarity=1-distance/Math.max(pattern.length,text.length);return similarity>=.3}function wildcardSearch(text,pattern){const regexPattern=pattern.replace(/\*/g,".*");const regex=new RegExp(`^${regexPattern}$`,"i");if(regex.test(text))return true;return levenshteinSearch(text,pattern)}class SearchStrategy{constructor(matchFunction){this.matchFunction=matchFunction}matches(text,criteria){if(text===null||text.trim()===""||!criteria){return false}return this.matchFunction(text,criteria)}}const LiteralSearchStrategy=new SearchStrategy(literalSearch);const FuzzySearchStrategy=new SearchStrategy(((text,criteria)=>fuzzySearch(text,criteria)||literalSearch(text,criteria)));const WildcardSearchStrategy=new SearchStrategy(((text,criteria)=>wildcardSearch(text,criteria)||literalSearch(text,criteria)));function merge(target,source){return{...target,...source}}function isJSON(json){try{return!!(json instanceof Object&&JSON.parse(JSON.stringify(json)))}catch(_err){return false}}function NoSort(){return 0}function isObject(obj){return Boolean(obj)&&Object.prototype.toString.call(obj)==="[object Object]"}function clone(input){if(input===null||typeof input!=="object"){return input}if(Array.isArray(input)){return input.map((item=>clone(item)))}const output={};for(const key in input){if(Object.prototype.hasOwnProperty.call(input,key)){output[key]=clone(input[key])}}return output}const DEFAULT_OPTIONS={searchInput:null,resultsContainer:null,json:[],success:function(){},searchResultTemplate:'<li><a href="{url}" title="{desc}">{title}</a></li>',templateMiddleware:(_prop,_value,_template)=>void 0,sortMiddleware:NoSort,noResultsText:"No results found",limit:10,fuzzy:false,strategy:"literal",debounceTime:null,exclude:[],onSearch:()=>{}};const REQUIRED_OPTIONS=["searchInput","resultsContainer","json"];const WHITELISTED_KEYS=new Set(["Enter","Shift","CapsLock","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Meta"]);class Repository{constructor(initialOptions={}){this.data=[];this.setOptions(initialOptions)}put(input){if(isObject(input)){return this.addObject(input)}if(Array.isArray(input)){return this.addArray(input)}return void 0}clear(){this.data.length=0;return this.data}search(criteria){if(!criteria){return[]}return clone(this.findMatches(this.data,criteria).sort(this.options.sortMiddleware))}setOptions(newOptions){this.options={fuzzy:(newOptions==null?void 0:newOptions.fuzzy)||DEFAULT_OPTIONS.fuzzy,limit:(newOptions==null?void 0:newOptions.limit)||DEFAULT_OPTIONS.limit,searchStrategy:this.searchStrategy((newOptions==null?void 0:newOptions.strategy)||newOptions.fuzzy&&"fuzzy"||DEFAULT_OPTIONS.strategy),sortMiddleware:(newOptions==null?void 0:newOptions.sortMiddleware)||DEFAULT_OPTIONS.sortMiddleware,exclude:(newOptions==null?void 0:newOptions.exclude)||DEFAULT_OPTIONS.exclude,strategy:(newOptions==null?void 0:newOptions.strategy)||DEFAULT_OPTIONS.strategy}}addObject(obj){this.data.push(obj);return this.data}addArray(arr){const added=[];this.clear();for(const item of arr){if(isObject(item)){added.push(this.addObject(item)[0])}}return added}findMatches(data,criteria){const matches=[];for(let i=0;i<data.length&&matches.length<this.options.limit;i++){const match=this.findMatchesInObject(data[i],criteria);if(match){matches.push(match)}}return matches}findMatchesInObject(obj,criteria){for(const key in obj){if(!this.isExcluded(obj[key])&&this.options.searchStrategy.matches(obj[key],criteria)){return obj}}return void 0}isExcluded(term){for(const excludedTerm of this.options.exclude){if(new RegExp(excludedTerm).test(String(term))){return true}}return false}searchStrategy(strategy){switch(strategy){case"fuzzy":return FuzzySearchStrategy;case"wildcard":return WildcardSearchStrategy;default:return LiteralSearchStrategy}}}const options={pattern:/\{(.*?)\}/g,template:"",middleware:function(){return void 0}};function setOptions(_options){if(_options.pattern){options.pattern=_options.pattern}if(_options.template){options.template=_options.template}if(typeof _options.middleware==="function"){options.middleware=_options.middleware}}function compile(data){return options.template.replace(options.pattern,(function(match,prop){const value=options.middleware(prop,data[prop],options.template);if(typeof value!=="undefined"){return value}return data[prop]||match}))}let SimpleJekyllSearch$1=class SimpleJekyllSearch{constructor(){this.debounceTimerHandle=null;this.options={...DEFAULT_OPTIONS};this.repository=new Repository;this.optionsValidator=new OptionsValidator({required:REQUIRED_OPTIONS})}debounce(func,delayMillis){if(delayMillis){if(this.debounceTimerHandle){clearTimeout(this.debounceTimerHandle)}this.debounceTimerHandle=setTimeout(func,delayMillis)}else{func()}}throwError(message){throw new Error(`SimpleJekyllSearch --- ${message}`)}emptyResultsContainer(){this.options.resultsContainer.innerHTML=""}initWithJSON(json){this.repository.put(json);this.registerInput()}initWithURL(url){load(url,((err,json)=>{if(err){this.throwError(`Failed to load JSON from ${url}: ${err.message}`)}this.initWithJSON(json)}))}registerInput(){this.options.searchInput.addEventListener("input",(e=>{const inputEvent=e;if(!WHITELISTED_KEYS.has(inputEvent.key)){this.emptyResultsContainer();this.debounce((()=>{this.search(e.target.value)}),this.options.debounceTime??null)}}))}search(query){var _a,_b;if((query==null?void 0:query.trim().length)>0){this.emptyResultsContainer();const results=this.repository.search(query);this.render(results,query);(_b=(_a=this.options).onSearch)==null?void 0:_b.call(_a)}}render(results,query){if(results.length===0){this.options.resultsContainer.insertAdjacentHTML("beforeend",this.options.noResultsText);return}const fragment=document.createDocumentFragment();results.forEach((result=>{result.query=query;const div=document.createElement("div");div.innerHTML=compile(result);fragment.appendChild(div)}));this.options.resultsContainer.appendChild(fragment)}init(_options){var _a;const errors=this.optionsValidator.validate(_options);if(errors.length>0){this.throwError(`Missing required options: ${REQUIRED_OPTIONS.join(", ")}`)}this.options=merge(this.options,_options);setOptions({template:this.options.searchResultTemplate,middleware:this.options.templateMiddleware});this.repository.setOptions({fuzzy:this.options.fuzzy,limit:this.options.limit,sortMiddleware:this.options.sortMiddleware,strategy:this.options.strategy,exclude:this.options.exclude});if(isJSON(this.options.json)){this.initWithJSON(this.options.json)}else{this.initWithURL(this.options.json)}const rv={search:this.search.bind(this)};(_a=this.options.success)==null?void 0:_a.call(rv);return rv}};function SimpleJekyllSearch(options2){const instance=new SimpleJekyllSearch$1;return instance.init(options2)}if(typeof window!=="undefined"){window.SimpleJekyllSearch=SimpleJekyllSearch}exports2.default=SimpleJekyllSearch;Object.defineProperties(exports2,{__esModule:{value:true},[Symbol.toStringTag]:{value:"Module"}})}));
7
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).SimpleJekyllSearch={})}(this,function(t){Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e=class{constructor(t){if(!this.validateParams(t))throw new Error("-- OptionsValidator: required options missing");this.requiredOptions=t.required}getRequiredOptions(){return this.requiredOptions}validate(t){const e=[];return this.requiredOptions.forEach(n=>{void 0===t[n]&&e.push(n)}),e}validateParams(t){return!!t&&void 0!==t.required&&Array.isArray(t.required)}};function n(t,e){const n=t.trim().toLowerCase(),r=e.endsWith(" ")?[e.toLowerCase()]:e.trim().toLowerCase().split(" ");if(r.filter(t=>n.indexOf(t)>=0).length!==r.length)return[];const i=[];for(const s of r){if(!s||0===s.length)continue;let e=0;for(;-1!==(e=n.indexOf(s,e));)i.push({start:e,end:e+s.length,text:t.substring(e,e+s.length),type:"exact"}),e+=s.length}return i}function r(t,e){if(0===(e=e.trimEnd()).length)return[];const n=t.toLowerCase(),r=e.toLowerCase();let i=0,s=0;const a=[];for(;i<t.length&&s<e.length;)n[i]===r[s]&&(a.push(i),s++),i++;if(s!==e.length)return[];const o=a[0],h=a[a.length-1]+1;return[{start:o,end:h,text:t.substring(o,h),type:"fuzzy"}]}function i(t,e,n={}){const r=e.replace(/\*/g,function(t){const e="number"!=typeof(n=t.maxSpaces)||Number.isNaN(n)||n<=0?0:Number.isFinite(n)?Math.floor(n):1/0;var n;return 0===e?"[^ ]*":e===1/0?"[^ ]*(?: [^ ]*)*":`[^ ]*(?: [^ ]*){0,${e}}`}(n)),i=new RegExp(r,"gi"),s=[];let a;for(;null!==(a=i.exec(t));)s.push({start:a.index,end:a.index+a[0].length,text:a[0],type:"wildcard"}),i.lastIndex===a.index&&i.lastIndex++;return s}var s=class{constructor(t){this.findMatchesFunction=t}matches(t,e){return!(null===t||""===t.trim()||!e)&&this.findMatchesFunction(t,e).length>0}findMatches(t,e){return null!==t&&""!==t.trim()&&e?this.findMatchesFunction(t,e):[]}},a=new s(n),o=new s((t,e)=>{const i=r(t,e);return i.length>0?i:n(t,e)}),h=class extends s{constructor(t={}){const e={...t};super((t,r)=>{const s=i(t,r,e);return s.length>0?s:n(t,r)}),this.config=e}getConfig(){return{...this.config}}};function l(t){return Boolean(t)&&"[object Object]"===Object.prototype.toString.call(t)}var c={searchInput:null,resultsContainer:null,json:[],success:function(){},searchResultTemplate:'<li><a href="{url}" title="{desc}">{title}</a></li>',templateMiddleware:(t,e,n)=>{},sortMiddleware:function(){return 0},noResultsText:"No results found",limit:10,strategy:"literal",debounceTime:null,exclude:[],onSearch:()=>{},onError:t=>console.error("SimpleJekyllSearch error:",t),fuzzy:!1},u=["searchInput","resultsContainer","json"],d=new Set(["Enter","Shift","CapsLock","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Meta"]),p=class{constructor(t={},e=()=>a){this.data=[],this.excludePatterns=[],this.strategyResolver=e,this.setOptions(t)}put(t){return l(t)?this.addObject(t):Array.isArray(t)?this.addArray(t):void 0}clear(){return this.data.length=0,this.data}search(t){return t?this.findMatches(this.data,t).sort(this.options.sortMiddleware).map(t=>({...t})):[]}setOptions(t){let e=this.normalizeStrategyOption(t?.strategy??c.strategy);t?.fuzzy&&!t?.strategy&&(console.warn('[Simple Jekyll Search] Warning: fuzzy option is deprecated. Use strategy: "fuzzy" instead.'),e={type:"fuzzy"});const n=t?.exclude||c.exclude;this.excludePatterns=n.map(t=>new RegExp(t)),this.options={limit:t?.limit||c.limit,searchStrategy:this.searchStrategy(e),sortMiddleware:t?.sortMiddleware||c.sortMiddleware,exclude:n,strategy:e}}addObject(t){return this.data.push(t),this.data}addArray(t){const e=[];this.clear();for(const n of t)l(n)&&e.push(this.addObject(n)[0]);return e}findMatches(t,e){const n=[];for(let r=0;r<t.length&&n.length<this.options.limit;r++){const i=this.findMatchesInObject(t[r],e);i&&n.push(i)}return n}findMatchesInObject(t,e){let n=!1;const r={...t};r._matchInfo={};for(const i in t)if(!this.isExcluded(t[i])&&this.options.searchStrategy.matches(t[i],e)&&(n=!0,this.options.searchStrategy.findMatches)){const n=this.options.searchStrategy.findMatches(t[i],e);n&&n.length>0&&(r._matchInfo[i]=n)}return n?r:void 0}isExcluded(t){const e=String(t);return this.excludePatterns.some(t=>t.test(e))}searchStrategy(t){return this.strategyResolver(t)}normalizeStrategyOption(t){return t?"string"==typeof t?{type:t}:t:this.getDefaultStrategyConfig()}getDefaultStrategyConfig(){const t=c.strategy;return"string"==typeof t?{type:t}:t}},g={pattern:/\{(.*?)\}/g,template:"",middleware:function(){}},f=class{constructor(t){this.debounceTimerHandle=null,this.eventHandler=null,this.pageShowHandler=null,this.pendingRequest=null,this.isInitialized=!1,this.STORAGE_KEY="sjs-search-state",this.options={...c},this.repository=new p({},t),this.optionsValidator=new e({required:u})}debounce(t,e){e?(this.debounceTimerHandle&&clearTimeout(this.debounceTimerHandle),this.debounceTimerHandle=setTimeout(t,e)):t()}throwError(t){throw new Error(`SimpleJekyllSearch --- ${t}`)}emptyResultsContainer(){this.options.resultsContainer.innerHTML=""}initWithJSON(t){this.repository.put(t),this.registerInput()}initWithURL(t){!function(t,e){const n=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");n.open("GET",t,!0),n.onreadystatechange=function(t,e){return function(){if(4===t.readyState&&200===t.status)try{e(null,JSON.parse(t.responseText))}catch(n){e(n instanceof Error?n:new Error(String(n)),null)}}}(n,e),n.send()}(t,(e,n)=>{e&&this.throwError(`Failed to load JSON from ${t}: ${e.message}`),this.initWithJSON(n)})}registerInput(){this.eventHandler=t=>{try{const e=t;d.has(e.key)||(this.emptyResultsContainer(),this.debounce(()=>{try{this.search(t.target.value)}catch(e){console.error("Search error:",e),this.options.onError?.(e)}},this.options.debounceTime??null))}catch(e){console.error("Input handler error:",e),this.options.onError?.(e)}},this.options.searchInput.addEventListener("input",this.eventHandler),this.pageShowHandler=()=>{this.restoreSearchState()},window.addEventListener("pageshow",this.pageShowHandler),this.restoreSearchState()}saveSearchState(t){if(t?.trim())try{const e={query:t.trim(),timestamp:Date.now(),path:window.location.pathname};sessionStorage.setItem(this.STORAGE_KEY,JSON.stringify(e))}catch{}else this.clearSearchState()}getStoredSearchState(){try{const t=sessionStorage.getItem(this.STORAGE_KEY);if(!t)return null;const e=JSON.parse(t);return"string"!=typeof e?.query?null:Date.now()-e.timestamp>18e5||e.path&&e.path!==window.location.pathname?(this.clearSearchState(),null):e.query}catch{return this.clearSearchState(),null}}clearSearchState(){try{sessionStorage.removeItem(this.STORAGE_KEY)}catch{}}restoreSearchState(){if(this.options.resultsContainer.children.length>0)return;let t=this.options.searchInput.value?.trim();t||(t=this.getStoredSearchState()||""),t.length>0&&(this.options.searchInput.value=t,this.search(t))}search(t){if(t?.trim().length>0){this.saveSearchState(t),this.emptyResultsContainer();const e=this.repository.search(t);this.render(e,t),this.options.onSearch?.()}else this.clearSearchState()}render(t,e){if(0===t.length)return void this.options.resultsContainer.insertAdjacentHTML("beforeend",this.options.noResultsText);const n=document.createDocumentFragment();t.forEach(t=>{t.query=e;const r=document.createElement("div");r.innerHTML=function(t,e){return g.template.replace(g.pattern,function(n,r){const i=t._matchInfo?.[r];if(i&&i.length>0&&e){const n=g.middleware(r,t[r],g.template,e,i);if(void 0!==n)return n}if(e){const n=g.middleware(r,t[r],g.template,e);if(void 0!==n)return n}const s=g.middleware(r,t[r],g.template);return void 0!==s?s:t[r]||n})}(t,e),n.appendChild(r)}),this.options.resultsContainer.appendChild(n)}destroy(){this.eventHandler&&(this.options.searchInput.removeEventListener("input",this.eventHandler),this.eventHandler=null),this.pageShowHandler&&(window.removeEventListener("pageshow",this.pageShowHandler),this.pageShowHandler=null),this.debounceTimerHandle&&(clearTimeout(this.debounceTimerHandle),this.debounceTimerHandle=null),this.clearSearchState()}init(t){var e,n,r;this.optionsValidator.validate(t).length>0&&this.throwError(`Missing required options: ${u.join(", ")}`),this.options=(e=this.options,n=t,{...e,...n}),function(t){t.pattern&&(g.pattern=t.pattern),t.template&&(g.template=t.template),"function"==typeof t.middleware&&(g.middleware=t.middleware)}({template:this.options.searchResultTemplate,middleware:this.options.templateMiddleware}),this.repository.setOptions({limit:this.options.limit,sortMiddleware:this.options.sortMiddleware,strategy:this.options.strategy,exclude:this.options.exclude}),r=this.options.json,Array.isArray(r)||null!==r&&"object"==typeof r?this.initWithJSON(this.options.json):this.initWithURL(this.options.json);const i={search:this.search.bind(this),destroy:this.destroy.bind(this)};return this.options.success?.call(i),i}},m=class extends s{constructor(t={}){super((t,e)=>this.hybridFind(t,e)),this.config={...t,preferFuzzy:t.preferFuzzy??!1,wildcardPriority:t.wildcardPriority??!0,minFuzzyLength:t.minFuzzyLength??4,maxExtraFuzzyChars:t.maxExtraFuzzyChars??2,maxSpaces:t.maxSpaces??1}}hybridFind(t,e){if(this.config.wildcardPriority&&e.includes("*")){const n=i(t,e,this.config);if(n.length>0)return n}if(e.includes(" ")||e.length<this.config.minFuzzyLength){const r=n(t,e);if(r.length>0)return r}if(this.config.preferFuzzy||e.length>=this.config.minFuzzyLength){const n=r(t,e);if(n.length>0){const t=this.applyFuzzyConstraints(n,e);if(t.length>0)return t}}return n(t,e)}applyFuzzyConstraints(t,e){const n=this.config.maxExtraFuzzyChars;if(!Number.isFinite(n)||n<0)return t;const r=this.normalizeLength(e);return 0===r?t:t.filter(t=>{const e=this.normalizeLength(t.text);return Math.max(0,e-r)<=n})}normalizeLength(t){return t.replace(/\s+/g,"").length}},y=new m,S=class{static create(t={type:"literal"}){const{options:e}=t;switch(this.isValidStrategy(t.type)?t.type:"literal"){case"literal":default:return a;case"fuzzy":return o;case"wildcard":return new h(e);case"hybrid":return new m(e)}}static getAvailableStrategies(){return["literal","fuzzy","wildcard","hybrid"]}static isValidStrategy(t){return this.getAvailableStrategies().includes(t)}};function w(t){const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};return t.replace(/[&<>"']/g,t=>e[t])}function x(t){if(0===t.length)return[];const e=[...t].sort((t,e)=>t.start-e.start),n=[{...e[0]}];for(let r=1;r<e.length;r++){const t=e[r],i=n[n.length-1];t.start<=i.end?i.end=Math.max(i.end,t.end):n.push({...t})}return n}function b(t,e,n={}){if(!t||0===e.length)return w(t);const r=n.className||"search-highlight",i=n.maxLength,s=x(e);let a="",o=0;for(const h of s)a+=w(t.substring(o,h.start)),a+=`<span class="${r}">${w(t.substring(h.start,h.end))}</span>`,o=h.end;return a+=w(t.substring(o)),i&&a.length>i&&(a=function(t,e,n,r,i){if(0===e.length)return w(t.substring(0,n-3))+"...";const s=e[0],a=Math.max(0,s.start-r),o=Math.min(t.length,s.end+r);let h="";a>0&&(h+="...");const l=t.substring(a,o),c=e.filter(t=>t.start<o&&t.end>a).map(t=>({...t,start:Math.max(0,t.start-a),end:Math.min(l.length,t.end-a)}));let u=0;for(const d of c)h+=w(l.substring(u,d.start)),h+=`<span class="${i}">${w(l.substring(d.start,d.end))}</span>`,u=d.end;return h+=w(l.substring(u)),o<t.length&&(h+="..."),h}(t,s,i,n.contextLength||30,r)),a}var v=["content","desc","description"],z=["url","link","href","query"];function M(t={}){const e={className:t.className||"search-highlight",maxLength:t.maxLength,contextLength:t.contextLength||30},n=t.truncateFields||v,r=t.noHighlightFields||z;return function(t,i,s,a,o){if("string"!=typeof i)return;if(r.includes(t))return;const h=n.includes(t);if(o&&o.length>0&&a){const t=b(i,o,{...e,maxLength:h?e.maxLength:void 0});return t!==i?t:void 0}return h&&e.maxLength&&i.length>e.maxLength?w(i.substring(0,e.maxLength-3)+"..."):void 0}}function L(t){return new f(t=>S.create(t)).init(t)}"undefined"!=typeof window&&(window.SimpleJekyllSearch=L,window.createHighlightTemplateMiddleware=M),t.DefaultHybridSearchStrategy=y,t.HybridSearchStrategy=m,t.StrategyFactory=S,t.createHighlightTemplateMiddleware=M,t.default=L,t.defaultHighlightMiddleware=function(t,e,n,r,i){return M()(t,e,n,r,i)},t.escapeHtml=w,t.highlightWithMatchInfo=b,t.mergeOverlappingMatches=x});
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: type-on-strap
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.13
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylhare
8
8
  - Rohan Chandra
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-11-03 00:00:00.000000000 Z
11
+ date: 2026-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -84,6 +84,20 @@ dependencies:
84
84
  - - "<="
85
85
  - !ruby/object:Gem::Version
86
86
  version: '2.8'
87
+ - !ruby/object:Gem::Dependency
88
+ name: kramdown-parser-gfm
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 1.1.0
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 1.1.0
87
101
  description: A simple and responsive jekyll theme template based on type-theme. Great
88
102
  for blogs, easy to customize and responsive.
89
103
  email:
@@ -106,6 +120,7 @@ files:
106
120
  - _includes/blog/post_info.liquid
107
121
  - _includes/blog/post_nav.liquid
108
122
  - _includes/citation.html
123
+ - _includes/default/category_list.liquid
109
124
  - _includes/default/footer.liquid
110
125
  - _includes/default/head.liquid
111
126
  - _includes/default/navbar.liquid
@@ -172,99 +187,64 @@ files:
172
187
  - _sass/layouts/_search.scss
173
188
  - _sass/layouts/_tags.scss
174
189
  - _sass/type-on-strap.scss
175
- - assets/css/bootstrap-iso.less
176
190
  - assets/css/main.scss
177
- - assets/css/vendor/bootstrap-iso.css
178
- - assets/css/vendor/bootstrap-iso.min.css
179
- - assets/css/vendor/bootstrap.css
180
191
  - assets/data/search.liquid
181
- - assets/fonts/Pacifico/Pacifico.eot
182
- - assets/fonts/Pacifico/Pacifico.svg
183
- - assets/fonts/Pacifico/Pacifico.ttf
184
192
  - assets/fonts/Pacifico/Pacifico.woff
185
193
  - assets/fonts/Pacifico/Pacifico.woff2
186
- - assets/fonts/Pacifico/original-pacifico-regular.ttf
187
194
  - assets/fonts/font-awesome/fa-brands-400.ttf
188
195
  - assets/fonts/font-awesome/fa-brands-400.woff2
189
196
  - assets/fonts/font-awesome/fa-regular-400.ttf
190
197
  - assets/fonts/font-awesome/fa-regular-400.woff2
191
198
  - assets/fonts/font-awesome/fa-solid-900.ttf
192
199
  - assets/fonts/font-awesome/fa-solid-900.woff2
193
- - assets/fonts/font-awesome/fa-v4compatibility.ttf
194
- - assets/fonts/font-awesome/fa-v4compatibility.woff2
195
- - assets/fonts/katex/KaTeX_AMS-Regular.ttf
196
200
  - assets/fonts/katex/KaTeX_AMS-Regular.woff
197
201
  - assets/fonts/katex/KaTeX_AMS-Regular.woff2
198
- - assets/fonts/katex/KaTeX_Caligraphic-Bold.ttf
199
202
  - assets/fonts/katex/KaTeX_Caligraphic-Bold.woff
200
203
  - assets/fonts/katex/KaTeX_Caligraphic-Bold.woff2
201
- - assets/fonts/katex/KaTeX_Caligraphic-Regular.ttf
202
204
  - assets/fonts/katex/KaTeX_Caligraphic-Regular.woff
203
205
  - assets/fonts/katex/KaTeX_Caligraphic-Regular.woff2
204
- - assets/fonts/katex/KaTeX_Fraktur-Bold.ttf
205
206
  - assets/fonts/katex/KaTeX_Fraktur-Bold.woff
206
207
  - assets/fonts/katex/KaTeX_Fraktur-Bold.woff2
207
- - assets/fonts/katex/KaTeX_Fraktur-Regular.ttf
208
208
  - assets/fonts/katex/KaTeX_Fraktur-Regular.woff
209
209
  - assets/fonts/katex/KaTeX_Fraktur-Regular.woff2
210
- - assets/fonts/katex/KaTeX_Main-Bold.ttf
211
210
  - assets/fonts/katex/KaTeX_Main-Bold.woff
212
211
  - assets/fonts/katex/KaTeX_Main-Bold.woff2
213
- - assets/fonts/katex/KaTeX_Main-BoldItalic.ttf
214
212
  - assets/fonts/katex/KaTeX_Main-BoldItalic.woff
215
213
  - assets/fonts/katex/KaTeX_Main-BoldItalic.woff2
216
- - assets/fonts/katex/KaTeX_Main-Italic.ttf
217
214
  - assets/fonts/katex/KaTeX_Main-Italic.woff
218
215
  - assets/fonts/katex/KaTeX_Main-Italic.woff2
219
- - assets/fonts/katex/KaTeX_Main-Regular.ttf
220
216
  - assets/fonts/katex/KaTeX_Main-Regular.woff
221
217
  - assets/fonts/katex/KaTeX_Main-Regular.woff2
222
- - assets/fonts/katex/KaTeX_Math-BoldItalic.ttf
223
218
  - assets/fonts/katex/KaTeX_Math-BoldItalic.woff
224
219
  - assets/fonts/katex/KaTeX_Math-BoldItalic.woff2
225
- - assets/fonts/katex/KaTeX_Math-Italic.ttf
226
220
  - assets/fonts/katex/KaTeX_Math-Italic.woff
227
221
  - assets/fonts/katex/KaTeX_Math-Italic.woff2
228
- - assets/fonts/katex/KaTeX_SansSerif-Bold.ttf
229
222
  - assets/fonts/katex/KaTeX_SansSerif-Bold.woff
230
223
  - assets/fonts/katex/KaTeX_SansSerif-Bold.woff2
231
- - assets/fonts/katex/KaTeX_SansSerif-Italic.ttf
232
224
  - assets/fonts/katex/KaTeX_SansSerif-Italic.woff
233
225
  - assets/fonts/katex/KaTeX_SansSerif-Italic.woff2
234
- - assets/fonts/katex/KaTeX_SansSerif-Regular.ttf
235
226
  - assets/fonts/katex/KaTeX_SansSerif-Regular.woff
236
227
  - assets/fonts/katex/KaTeX_SansSerif-Regular.woff2
237
- - assets/fonts/katex/KaTeX_Script-Regular.ttf
238
228
  - assets/fonts/katex/KaTeX_Script-Regular.woff
239
229
  - assets/fonts/katex/KaTeX_Script-Regular.woff2
240
- - assets/fonts/katex/KaTeX_Size1-Regular.ttf
241
230
  - assets/fonts/katex/KaTeX_Size1-Regular.woff
242
231
  - assets/fonts/katex/KaTeX_Size1-Regular.woff2
243
- - assets/fonts/katex/KaTeX_Size2-Regular.ttf
244
232
  - assets/fonts/katex/KaTeX_Size2-Regular.woff
245
233
  - assets/fonts/katex/KaTeX_Size2-Regular.woff2
246
- - assets/fonts/katex/KaTeX_Size3-Regular.ttf
247
234
  - assets/fonts/katex/KaTeX_Size3-Regular.woff
248
235
  - assets/fonts/katex/KaTeX_Size3-Regular.woff2
249
- - assets/fonts/katex/KaTeX_Size4-Regular.ttf
250
236
  - assets/fonts/katex/KaTeX_Size4-Regular.woff
251
237
  - assets/fonts/katex/KaTeX_Size4-Regular.woff2
252
- - assets/fonts/katex/KaTeX_Typewriter-Regular.ttf
253
238
  - assets/fonts/katex/KaTeX_Typewriter-Regular.woff
254
239
  - assets/fonts/katex/KaTeX_Typewriter-Regular.woff2
255
240
  - assets/fonts/source-sans-pro/source-sans-pro-bold-italic.woff2
256
241
  - assets/fonts/source-sans-pro/source-sans-pro-bold.woff2
257
242
  - assets/fonts/source-sans-pro/source-sans-pro-italic.woff2
258
243
  - assets/fonts/source-sans-pro/source-sans-pro-regular.woff2
244
+ - assets/js/comments-lazy-load.min.js
259
245
  - assets/js/main.min.js
260
- - assets/js/partials/cookie_consent_init.js
261
- - assets/js/partials/dark-mode.js
262
- - assets/js/partials/masonry_init.js
263
- - assets/js/partials/navbar.js
264
- - assets/js/vendor/imagesloaded.pkgd.min.js
265
246
  - assets/js/vendor/katex.auto-render.min.js
266
247
  - assets/js/vendor/katex.min.js
267
- - assets/js/vendor/masonry.pkgd.min.js
268
248
  - assets/js/vendor/mermaid.min.js
269
249
  - assets/js/vendor/simple-jekyll-search.min.js
270
250
  homepage: https://github.com/sylhare/Type-on-Strap
@@ -284,9 +264,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
284
264
  - - ">="
285
265
  - !ruby/object:Gem::Version
286
266
  version: 2.7.2
287
- - - "<"
288
- - !ruby/object:Gem::Version
289
- version: '4.0'
290
267
  required_rubygems_version: !ruby/object:Gem::Requirement
291
268
  requirements:
292
269
  - - ">="
@@ -1,12 +0,0 @@
1
- /*
2
- To create an isolated version of Bootstrap
3
- Use Gulp (npm install) in order to compile it:
4
-
5
- gulp isolate-bootstrap-css
6
-
7
- */
8
-
9
- .bootstrap-iso {
10
- @import (less) 'vendor/bootstrap.css';
11
- /*@import (less) 'vendor/bootstrap-theme.css'; //optional */
12
- }