palt-typesetting 0.7.4 → 0.9.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/README.md +44 -20
- package/bundle/typesetter.min.js +1 -1
- package/dist/apply-style.d.ts +2 -1
- package/dist/apply-style.d.ts.map +1 -1
- package/dist/apply-style.js +28 -0
- package/dist/html-processor.d.ts +1 -5
- package/dist/html-processor.d.ts.map +1 -1
- package/dist/html-processor.js +36 -73
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/win.d.ts +0 -2
- package/dist/win.d.ts.map +1 -1
- package/package.json +9 -9
- package/types/index.d.ts +19 -0
package/README.md
CHANGED
|
@@ -43,12 +43,12 @@ WordPress や jQuery などの環境で使用する場合
|
|
|
43
43
|
```html
|
|
44
44
|
<head>
|
|
45
45
|
<!-- head タグ内でスタイルの読み込み -->
|
|
46
|
-
<link rel="stylesheet" type="text/css" href="https://unpkg.com/palt-typesetting@0.
|
|
46
|
+
<link rel="stylesheet" type="text/css" href="https://unpkg.com/palt-typesetting@0.9.0/bundle/typesetter.min.css" />
|
|
47
47
|
</head>
|
|
48
48
|
|
|
49
49
|
<body>
|
|
50
50
|
<!-- body 閉じタグの前でスクリプトの読み込み -->
|
|
51
|
-
<script src="https://unpkg.com/palt-typesetting@0.
|
|
51
|
+
<script src="https://unpkg.com/palt-typesetting@0.9.0/bundle/typesetter.min.js"></script>
|
|
52
52
|
</body>
|
|
53
53
|
```
|
|
54
54
|
|
|
@@ -133,6 +133,20 @@ const options = {
|
|
|
133
133
|
// 英数を `.typesetting-latin` でラップします。
|
|
134
134
|
wrapLatin: true,
|
|
135
135
|
|
|
136
|
+
// 特例文字 `char` を `.typesetting-char-[label]` でラップします。
|
|
137
|
+
wrapChars: [
|
|
138
|
+
{
|
|
139
|
+
char: 'あ',
|
|
140
|
+
label: 'hira-a',
|
|
141
|
+
// output: <span class="typesetting-char-hira-a">あ</span>
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
char: '」',
|
|
145
|
+
// output: <span class="typesetting-char-」">」</span>
|
|
146
|
+
// label が未指定の場合は、char の値がそのまま label として使用されます。
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
|
|
136
150
|
// 罫線などの分離禁則文字を `.typesetting-no-breaks` でラップし、文字間を 0 に設定します。
|
|
137
151
|
noSpaceBetweenNoBreaks: true,
|
|
138
152
|
|
|
@@ -182,7 +196,7 @@ typesetter.renderToElements(elements)
|
|
|
182
196
|
*/
|
|
183
197
|
const srcHtml = '「日本語」とEnglish'
|
|
184
198
|
console.log('output: ' + typesetter.render(srcHtml))
|
|
185
|
-
// output: <span class="typeset typesetting-wrapper typesetting-word-break"
|
|
199
|
+
// output: <span class="typeset typesetting-wrapper typesetting-word-break">「日本語<span class="typesetting-char-」">」</span><span class="typesetting-thin-space" style="letter-spacing: 0.2em;" data-content=" "></span>と<span class="typesetting-thin-space" style="letter-spacing: 0.2em;" data-content=" "></span><span class="typesetting-latin">English </span></span>
|
|
186
200
|
```
|
|
187
201
|
|
|
188
202
|
### コンストラクタ
|
|
@@ -201,25 +215,27 @@ console.log('output: ' + typesetter.render(srcHtml))
|
|
|
201
215
|
|
|
202
216
|
### オプション
|
|
203
217
|
|
|
204
|
-
| オプション名 | 説明
|
|
205
|
-
| ------------------------ |
|
|
206
|
-
| `useWordBreak` | 単語や助詞など、単語区切りでの改行を行います。
|
|
207
|
-
| `wrapLatin` | 英数を `span.typesetting-latin` でラップします。
|
|
208
|
-
| `
|
|
209
|
-
| `
|
|
210
|
-
| `
|
|
211
|
-
| `
|
|
218
|
+
| オプション名 | 説明 | オプションの型 | デフォルト値 |
|
|
219
|
+
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------ |
|
|
220
|
+
| `useWordBreak` | 単語や助詞など、単語区切りでの改行を行います。 | `boolean` | `true` |
|
|
221
|
+
| `wrapLatin` | 英数を `span.typesetting-latin` でラップします。 | `boolean` | `true` |
|
|
222
|
+
| `wrapChars` | 特例文字の設定です。指定された文字 `char` をラッピングし、`<span>` タグで囲みます。ラッピングされた文字には、`typesetting-char-[label]` の形式で CSS クラスが付与されます。<br>※ `label` が未指定の場合は、`char` の値がそのままクラス名に使用されます。 | `{char: string, label?: string}[]` | `[]` |
|
|
223
|
+
| `noSpaceBetweenNoBreaks` | 罫線などの分離禁則文字を `span.typesetting-no-breaks` でラップし、文字間を 0 に設定します。 | `boolean` | `true` |
|
|
224
|
+
| `insertThinSpaces` | 四分アキスペースを自動で挿入します。 | `boolean` | `true` |
|
|
225
|
+
| `thinSpaceWidth` | 四分アキスペースの幅を設定します。<br>※四分アキは本来 0.25em ですが、視覚上の補正としてデフォルト値を 0.2em に設定しています。 | `string` | `'0.2em'` |
|
|
226
|
+
| `kerningRules` | 特定の文字間のカーニングルールを設定します。 | `{between: [string, string], value: string \| number}[]` | `[]` |
|
|
212
227
|
|
|
213
228
|
### 生成される CSS クラス
|
|
214
229
|
|
|
215
|
-
| CSS クラス名
|
|
216
|
-
|
|
|
217
|
-
| `.typesetting-wrapper`
|
|
218
|
-
| `.typesetting-word-break`
|
|
219
|
-
| `.typesetting-latin`
|
|
220
|
-
| `.typesetting-
|
|
221
|
-
| `.typesetting-
|
|
222
|
-
| `.typesetting-
|
|
230
|
+
| CSS クラス名 | 説明 |
|
|
231
|
+
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
232
|
+
| `.typesetting-wrapper` | HTML 文字列中のテキストコンテンツをラップします。<br>オプションの指定に関わらず、常に生成されます。 |
|
|
233
|
+
| `.typesetting-word-break` | HTML 文字列中のテキストコンテンツをラップします。<br>`useWordBreak: true` のときに生成されます。 |
|
|
234
|
+
| `.typesetting-latin` | テキストコンテンツ中の英数をラップします。<br>`wrapLatin: true` のときに生成されます。 |
|
|
235
|
+
| `.typesetting-char-[label]` | `wrapChars` で指定された特例文字に付与されるクラスです。<br>※ `label` が未指定の場合、`char` の値を `label` として使用します。 |
|
|
236
|
+
| `.typesetting-no-breaks` | テキストコンテンツ中の分離禁則文字をラップします。<br>`noSpaceBetweenNoBreaks: true` のときに生成されます。 |
|
|
237
|
+
| `.typesetting-thin-space` | 挿入される四分アキスペースエレメントの CSS クラスです。<br>`insertThinSpaces: true` のときに生成されます。 |
|
|
238
|
+
| `.typesetting-kerning` | 挿入されるカーニングエレメントの CSS クラスです。<br>有効な `kerningRules` が存在するときに生成されます。 |
|
|
223
239
|
|
|
224
240
|
---
|
|
225
241
|
|
|
@@ -231,9 +247,16 @@ TypeScript の型定義を提供しています。完全な型定義は[こち
|
|
|
231
247
|
|
|
232
248
|
```typescript
|
|
233
249
|
import Typesetter from 'palt-typesetting'
|
|
234
|
-
import type { TypesettingOptions, KerningRule } from 'palt-typesetting/types'
|
|
250
|
+
import type { TypesettingOptions, KerningRule, WrapChar } from 'palt-typesetting/types'
|
|
235
251
|
import 'palt-typesetting/dist/typesetter.css'
|
|
236
252
|
|
|
253
|
+
const chars: WrapChar[] = [
|
|
254
|
+
{
|
|
255
|
+
char: 'あ',
|
|
256
|
+
label: 'hira-a',
|
|
257
|
+
},
|
|
258
|
+
]
|
|
259
|
+
|
|
237
260
|
const kerning: KerningRule[] = [
|
|
238
261
|
{
|
|
239
262
|
between: ['し', 'ま'],
|
|
@@ -244,6 +267,7 @@ const kerning: KerningRule[] = [
|
|
|
244
267
|
const options: TypesettingOptions = {
|
|
245
268
|
thinSpaceWidth: '0.25em',
|
|
246
269
|
kerningRules: kerning,
|
|
270
|
+
wrapChars: chars,
|
|
247
271
|
}
|
|
248
272
|
|
|
249
273
|
const typeset = new Typesetter(options)
|
package/bundle/typesetter.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typesetter=e():t.Typesetter=e()}(this,(()=>(()=>{var t={954:(t,e)=>{!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,r="+".charCodeAt(0),n="/".charCodeAt(0),o="0".charCodeAt(0),a="a".charCodeAt(0),u="A".charCodeAt(0),i="-".charCodeAt(0),s="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===r||e===i?62:e===n||e===s?63:e<o?-1:e<o+10?e-o+26+26:e<u+26?e-u:e<a+26?e-a+26:void 0}t.toByteArray=function(t){var r,n,o,a,u,i;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var s=t.length;u="="===t.charAt(s-2)?2:"="===t.charAt(s-1)?1:0,i=new e(3*t.length/4-u),o=u>0?t.length-4:t.length;var f=0;function l(t){i[f++]=t}for(r=0,n=0;r<o;r+=4,n+=3)l((16711680&(a=c(t.charAt(r))<<18|c(t.charAt(r+1))<<12|c(t.charAt(r+2))<<6|c(t.charAt(r+3))))>>16),l((65280&a)>>8),l(255&a);return 2===u?l(255&(a=c(t.charAt(r))<<2|c(t.charAt(r+1))>>4)):1===u&&(l((a=c(t.charAt(r))<<10|c(t.charAt(r+1))<<4|c(t.charAt(r+2))>>2)>>8&255),l(255&a)),i},t.fromByteArray=function(t){var e,r,n,o,a=t.length%3,u="";function i(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}for(e=0,n=t.length-a;e<n;e+=3)u+=i((o=r=(t[e]<<16)+(t[e+1]<<8)+t[e+2])>>18&63)+i(o>>12&63)+i(o>>6&63)+i(63&o);switch(a){case 1:u+=i((r=t[t.length-1])>>2),u+=i(r<<4&63),u+="==";break;case 2:u+=i((r=(t[t.length-2]<<8)+t[t.length-1])>>10),u+=i(r>>4&63),u+=i(r<<2&63),u+="="}return u}}(e)},741:t=>{function e(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,r){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=r,this.destLen=0,this.ltree=new e,this.dtree=new e}var n=new e,o=new e,a=new Uint8Array(30),u=new Uint16Array(30),i=new Uint8Array(30),s=new Uint16Array(30),c=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=new e,l=new Uint8Array(320);function h(t,e,r,n){var o,a;for(o=0;o<r;++o)t[o]=0;for(o=0;o<30-r;++o)t[o+r]=o/r|0;for(a=n,o=0;o<30;++o)e[o]=a,a+=1<<t[o]}var d=new Uint16Array(16);function p(t,e,r,n){var o,a;for(o=0;o<16;++o)t.table[o]=0;for(o=0;o<n;++o)t.table[e[r+o]]++;for(t.table[0]=0,a=0,o=0;o<16;++o)d[o]=a,a+=t.table[o];for(o=0;o<n;++o)e[r+o]&&(t.trans[d[e[r+o]]++]=o)}function b(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function v(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function y(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=0,n=0,o=0,a=t.tag;do{n=2*n+(1&a),a>>>=1,++o,r+=e.table[o],n-=e.table[o]}while(n>=0);return t.tag=a,t.bitcount-=o,e.trans[r+n]}function g(t,e,r){var n,o,a,u,i,s;for(n=v(t,5,257),o=v(t,5,1),a=v(t,4,4),u=0;u<19;++u)l[u]=0;for(u=0;u<a;++u){var h=v(t,3,0);l[c[u]]=h}for(p(f,l,0,19),i=0;i<n+o;){var d=y(t,f);switch(d){case 16:var b=l[i-1];for(s=v(t,2,3);s;--s)l[i++]=b;break;case 17:for(s=v(t,3,3);s;--s)l[i++]=0;break;case 18:for(s=v(t,7,11);s;--s)l[i++]=0;break;default:l[i++]=d}}p(e,l,0,n),p(r,l,n,o)}function A(t,e,r){for(;;){var n,o,c,f,l=y(t,e);if(256===l)return 0;if(l<256)t.dest[t.destLen++]=l;else for(n=v(t,a[l-=257],u[l]),o=y(t,r),f=c=t.destLen-v(t,i[o],s[o]);f<c+n;++f)t.dest[t.destLen++]=t.dest[f]}}function w(t){for(var e,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return-3;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,0}!function(t,e){var r;for(r=0;r<7;++r)t.table[r]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,r=0;r<24;++r)t.trans[r]=256+r;for(r=0;r<144;++r)t.trans[24+r]=r;for(r=0;r<8;++r)t.trans[168+r]=280+r;for(r=0;r<112;++r)t.trans[176+r]=144+r;for(r=0;r<5;++r)e.table[r]=0;for(e.table[5]=32,r=0;r<32;++r)e.trans[r]=r}(n,o),h(a,u,4,3),h(i,s,2,1),a[28]=0,u[28]=258,t.exports=function(t,e){var a,u,i=new r(t,e);do{switch(a=b(i),v(i,2,0)){case 0:u=w(i);break;case 1:u=A(i,n,o);break;case 2:g(i,i.ltree,i.dtree),u=A(i,i.ltree,i.dtree);break;default:u=-3}if(0!==u)throw new Error("Data error")}while(!a);return i.destLen<i.dest.length?"function"==typeof i.dest.slice?i.dest.slice(0,i.destLen):i.dest.subarray(0,i.destLen):i.dest}},667:(t,e,r)=>{const n=r(741),{swap32LE:o}=r(288);t.exports=class{constructor(t){const e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice;if(e||t instanceof Uint8Array){let r;if(e)this.highStart=t.readUInt32LE(0),this.errorValue=t.readUInt32LE(4),r=t.readUInt32LE(8),t=t.slice(12);else{const e=new DataView(t.buffer);this.highStart=e.getUint32(0,!0),this.errorValue=e.getUint32(4,!0),r=e.getUint32(8,!0),t=t.subarray(12)}t=n(t,new Uint8Array(r)),t=n(t,new Uint8Array(r)),o(t),this.data=new Uint32Array(t.buffer)}else({data:this.data,highStart:this.highStart,errorValue:this.errorValue}=t)}get(t){let e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=this.data[e+(t>>5&63)],e=(e<<2)+(31&t),this.data[e]):this.data[this.data.length-4]}}},288:t=>{const e=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],r=(t,e,r)=>{let n=t[e];t[e]=t[r],t[r]=n};t.exports={swap32LE:t=>{e&&(t=>{const e=t.length;for(let n=0;n<e;n+=4)r(t,n,n+3),r(t,n+1,n+2)})(t)}}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};return(()=>{"use strict";r.d(n,{default:()=>M});var t=window;function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,"string");if("object"!=e(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(r)?r:r+""}var u,i=function(){return e=function e(r,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.replaceNode=function(e,r){var n=t.document.createRange();n.selectNode(e);var o=n.createContextualFragment(r);e.parentNode&&(e.parentNode.insertBefore(o,e),e.parentNode.removeChild(e))},this.transformFunctions=r,this.options=n},(r=[{key:"processHtmlWithFunctions",value:function(t){var e=this;return""===t?t:this.transformFunctions.reduce((function(t,r){return e.processHtml(t,r)}),t)}},{key:"processHtml",value:function(t,e){var r=this;if(""===t)return t;var n=s(t),o=c(n.body);return o.forEach((function(t,n){var a=o[n+1]||null,u=r.getTransformedHtml(t,a,e);r.replaceNode(t,u)})),n.body.innerHTML}},{key:"getTransformedHtml",value:function(t,e,r){return r(t.nodeValue||"",e&&e.nodeValue||"",this.options)}}])&&o(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r}(),s=function(e){return(new t.DOMParser).parseFromString(e,"text/html")},c=function(e){for(var r=t.document.createTreeWalker(e,t.NodeFilter.SHOW_TEXT),n=r.nextNode(),o=[];n;)n.nodeValue&&""!==n.nodeValue.trim()&&o.push(n),n=r.nextNode();return o},f=i,l=r(667),h=r(954);const d=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,1,1,1,0,0,4,2,4,1,1,1,1,1,0,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,4,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,1,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0]],p=new l(h.toByteArray("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")),b=function(t){switch(t){case 33:case 39:case 40:case 42:return 12;case 35:return 5;default:return t}},v=function(t){switch(t){case 37:case 38:return 34;case 41:return 22;default:return t}};class y{constructor(t,e=!1){this.position=t,this.required=e}}u=class{nextCodePoint(){const t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos);return 55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t}nextCharClass(){return b(p.get(this.nextCodePoint()))}getSimpleBreak(){switch(this.nextClass){case 41:return!1;case 34:case 37:case 38:return this.curClass=34,!1;case 36:return this.curClass=36,!1}return null}getPairTableBreak(t){let e=!1;switch(d[this.curClass][this.nextClass]){case 0:e=!0;break;case 1:e=41===t;break;case 2:if(e=41===t,!e)return e=!1,e;break;case 3:if(41!==t)return e}return this.LB8a&&(e=!1),!this.LB21a||16!==this.curClass&&17!==this.curClass?this.LB21a=13===this.curClass:(e=!1,this.LB21a=!1),28===this.curClass?(this.LB30a++,2==this.LB30a&&28===this.nextClass&&(e=!0,this.LB30a=0)):this.LB30a=0,this.curClass=this.nextClass,e}nextBreak(){if(null==this.curClass){let t=this.nextCharClass();this.curClass=v(t),this.nextClass=t,this.LB8a=31===t,this.LB30a=0}for(;this.pos<this.string.length;){this.lastPos=this.pos;const t=this.nextClass;if(this.nextClass=this.nextCharClass(),34===this.curClass||36===this.curClass&&37!==this.nextClass)return this.curClass=v(b(this.nextClass)),new y(this.lastPos,!0);let e=this.getSimpleBreak();if(null===e&&(e=this.getPairTableBreak(t)),this.LB8a=31===this.nextClass,e)return new y(this.lastPos)}return this.lastPos<this.string.length?(this.lastPos=this.string.length,new y(this.string.length)):null}constructor(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null,this.LB8a=!1,this.LB21a=!1,this.LB30a=0}};var g=/(?:[\t-\r -~\xA0-\xA5\xAA\xAC\xB1-\xB3\xB9\xBA\xBF-\u02B8\u02E0-\u02E4\u0363-\u036F\u0485\u0486\u0951\u0952\u10FB\u1680\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2000-\u200A\u2018\u2019\u201C\u201D\u2028\u2029\u202F\u2030\u205F\u2070\u2071\u2074-\u208E\u2090-\u209C\u20AC\u20F0\u212A\u212B\u2132\u214E\u2160-\u2188\u2202\u2205\u220F\u2211\u2212\u221A\u221E\u222B\u2248\u2260\u2264\u2265\u2C60-\u2C7F\u3000\uA700-\uA707\uA722-\uA787\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA7FF\uA92E\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uFB00-\uFB06\uFEFF\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A])+/g,A=/(|[|{|〔|〈|《|「|『|【|〘|〖|“|‘/,w=/)|]|}|〕|〉|》|」|』|】|〙|〗|”|’/,m=/・|:|;/,P=/、|,/,x=/。|./,B=new RegExp("[\\p{scx=Hiragana}\\p{scx=Katakana}|ヲ-゚\\p{scx=Han}".concat(A.source).concat(w.source).concat(m.source).concat(P.source).concat(x.source,"]+"),"u"),O=new RegExp("[".concat("—‥…_",String.fromCharCode(9472),"-").concat(String.fromCharCode(9599),"]+"),"g"),S=/[\s\u00A0]/,L=new RegExp("".concat(/,/.source,"|").concat(/\./.source,"|").concat(A.source,"|").concat(w.source,"|").concat(m.source,"|").concat(P.source,"|").concat(x.source),"u"),j={isLatin:function(t){return g.test(t)},isJapanese:function(t){return B.test(t)},hasLanguageTransition:function(t,e){return j.isJapanese(t)!==j.isJapanese(e)},shouldAddThinSpace:function(t,e){return j.hasLanguageTransition(t,e)}},F="typesetting",C=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=r?' style="'.concat(r,'"'):"";return'<span class="'.concat(e,'"').concat(o).concat(n,">").concat(t,"</span>")},H=function(t,e,r,n){var o="letter-spacing: ".concat(r,";"),a=' data-content="'.concat(n?" ":" ",'"');return C(t,e,o,a)},D=function(t){var e=new Intl.Segmenter("ja-JP",{granularity:"word"});return Array.from(e.segment(t),(function(t){return t.segment}))},X=function(t,e){return!S.test(t)&&!S.test(e)&&(function(t,e){return L.test(t)||L.test(e)}(t,e)?function(t,e){for(var r=new RegExp("(".concat(w.source,"|").concat(P.source,"|").concat(x.source,")")),n={spaceBefore:{regex:A,hasSpaceBefore:!0,hasSpaceAfter:!1},spaceAfter:{regex:r,hasSpaceBefore:!1,hasSpaceAfter:!0},spaceBoth:{regex:m,hasSpaceBefore:!0,hasSpaceAfter:!0}},o=0,a=Object.values(n);o<a.length;o++){var u=a[o],i=u.regex,s=u.hasSpaceBefore,c=u.hasSpaceAfter;if(s&&i.test(e)&&!i.test(t))return!0;if(c&&i.test(t)&&!i.test(e))return!0}return!1}(t,e):j.shouldAddThinSpace(t,e))},k=function(t,e){var r=t.slice(-1)+e.slice(0,1),n=new u(r).nextBreak();return!!n&&1===n.position},W=function(t,e,r){var n=D(t),o=D(e);return n.reduce((function(t,e,n,a){return t+function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0;if(!e)return t;var n,o=r.insertThinSpaces&&X(t,e),a=k(t,e);return o?t+function(t,e){var r="".concat(F,"-thin-space");return H("",r,t,e)}(m.test(t)||m.test(e)?"calc(".concat(r.thinSpaceWidth," / 2.0)"):null!==(n=r.thinSpaceWidth)&&void 0!==n?n:"",a):r.useWordBreak&&a?t+"<wbr>":t}(e,a[n+1]||o[0],r)}),"")};function z(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var T=function(t,e,r){return" "===t?t:(n=t,o=r.useWordBreak,a="".concat(F,"-wrapper"),u="".concat(F,"-word-break"),i=o?"".concat(a," ").concat(u):a,C(n,i));var n,o,a,u,i},U=function(t,e,r){return" "===t?t:r.wrapLatin&&j.isLatin(t)?t.replace(g,(function(t){return e=t,r="".concat(F,"-latin"),C(e,r);var e,r})):r.noSpaceBetweenNoBreaks&&(n=t,O.test(n))?t.replace(O,(function(t){return e=t,r="".concat(F,"-no-breaks"),C(e,r);var e,r})):t;var n},V=function(t,e,r){var n,o=function(t){if(Array.isArray(t))return z(t)}(n=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return z(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?z(t,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return o.map((function(t,n){var a,u=o[n+1]||e[0]||"",i=null===(a=r.kerningRules)||void 0===a?void 0:a.find((function(e){return e.between[0]===t&&e.between[1]===u}));if(i){var s="number"==typeof i.value?i.value:parseInt(i.value,10),c=!r.useWordBreak&&k(t,u);return t+function(t,e){if(0===t)return"";var r="".concat(F,"-kerning");if(t<0){var n="margin: ".concat(t/1e3/2+"em",";");return C("",r,n)}return H("",r,t/1e3+"em",e)}(s,c)}return t})).join("")};function E(t){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},E(t)}function N(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function I(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?N(Object(r),!0).forEach((function(e){Z(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):N(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function Z(t,e,r){return(e=R(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function q(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,R(n.key),n)}}function R(t){var e=function(t,e){if("object"!=E(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=E(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==E(e)?e:e+""}function K(t,e,r){return e=Q(e),function(t,e){if(e&&("object"==E(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,J()?Reflect.construct(e,r||[],Q(t).constructor):e.apply(t,r))}function J(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(J=function(){return!!t})()}function Q(t){return Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Q(t)}function G(t,e){return G=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},G(t,e)}var M=function(e){function r(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);var e=void 0!==Intl.Segmenter;e||console.warn("Intl.Segmenter is not supported in this environment. \nTherefore, the options `useWordBreak` and `insertThinSpaces` will be ignored. \nFor more information about Intl.Segmenter, please visit:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter");var n=e?[T,W,U,V]:[U,V],o=r.validateOptions(t);return K(this,r,[n,o])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&G(t,e)}(r,e),n=r,a=[{key:"getDefaultOptions",value:function(){return{useWordBreak:!0,wrapLatin:!0,noSpaceBetweenNoBreaks:!0,insertThinSpaces:!0,thinSpaceWidth:"0.2em",kerningRules:[]}}},{key:"validateOptions",value:function(t){return t.kerningRules&&(t.kerningRules=t.kerningRules.filter(r.isValidKerningRule)),I(I({},r.getDefaultOptions()),t)}},{key:"isValidKerningRule",value:function(t){return 1===t.between[0].length&&1===t.between[1].length||(console.warn("Kerning rule between '".concat(t.between[0],"' and '").concat(t.between[1],"' must be single characters.")),!1)}}],(o=[{key:"render",value:function(t){return t?this.processHtmlWithFunctions(t):""}},{key:"renderToElements",value:function(t){var e=this;t&&(Array.isArray(t)||(t=[t]),t.forEach((function(t){var r=e.render(t.innerHTML);t.innerHTML=r})))}},{key:"renderToSelector",value:function(e){if(e){var r=t.document.querySelectorAll(e);this.renderToElements(Array.from(r))}}}])&&q(n.prototype,o),a&&q(n,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o,a}(f)})(),n.default})()));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typesetter=e():t.Typesetter=e()}(this,(()=>(()=>{var t={288:t=>{const e=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],r=(t,e,r)=>{let n=t[e];t[e]=t[r],t[r]=n};t.exports={swap32LE:t=>{e&&(t=>{const e=t.length;for(let n=0;n<e;n+=4)r(t,n,n+3),r(t,n+1,n+2)})(t)}}},667:(t,e,r)=>{const n=r(741),{swap32LE:o}=r(288);t.exports=class{constructor(t){const e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice;if(e||t instanceof Uint8Array){let r;if(e)this.highStart=t.readUInt32LE(0),this.errorValue=t.readUInt32LE(4),r=t.readUInt32LE(8),t=t.slice(12);else{const e=new DataView(t.buffer);this.highStart=e.getUint32(0,!0),this.errorValue=e.getUint32(4,!0),r=e.getUint32(8,!0),t=t.subarray(12)}t=n(t,new Uint8Array(r)),t=n(t,new Uint8Array(r)),o(t),this.data=new Uint32Array(t.buffer)}else({data:this.data,highStart:this.highStart,errorValue:this.errorValue}=t)}get(t){let e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>5]<<2)+(31&t),this.data[e]):t<=65535?(e=(this.data[2048+(t-55296>>5)]<<2)+(31&t),this.data[e]):t<this.highStart?(e=this.data[2080+(t>>11)],e=this.data[e+(t>>5&63)],e=(e<<2)+(31&t),this.data[e]):this.data[this.data.length-4]}}},741:t=>{function e(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,r){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=r,this.destLen=0,this.ltree=new e,this.dtree=new e}var n=new e,o=new e,a=new Uint8Array(30),u=new Uint16Array(30),i=new Uint8Array(30),s=new Uint16Array(30),c=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=new e,l=new Uint8Array(320);function h(t,e,r,n){var o,a;for(o=0;o<r;++o)t[o]=0;for(o=0;o<30-r;++o)t[o+r]=o/r|0;for(a=n,o=0;o<30;++o)e[o]=a,a+=1<<t[o]}var p=new Uint16Array(16);function b(t,e,r,n){var o,a;for(o=0;o<16;++o)t.table[o]=0;for(o=0;o<n;++o)t.table[e[r+o]]++;for(t.table[0]=0,a=0,o=0;o<16;++o)p[o]=a,a+=t.table[o];for(o=0;o<n;++o)e[r+o]&&(t.trans[p[e[r+o]]++]=o)}function d(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function v(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function y(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=0,n=0,o=0,a=t.tag;do{n=2*n+(1&a),a>>>=1,++o,r+=e.table[o],n-=e.table[o]}while(n>=0);return t.tag=a,t.bitcount-=o,e.trans[r+n]}function g(t,e,r){var n,o,a,u,i,s;for(n=v(t,5,257),o=v(t,5,1),a=v(t,4,4),u=0;u<19;++u)l[u]=0;for(u=0;u<a;++u){var h=v(t,3,0);l[c[u]]=h}for(b(f,l,0,19),i=0;i<n+o;){var p=y(t,f);switch(p){case 16:var d=l[i-1];for(s=v(t,2,3);s;--s)l[i++]=d;break;case 17:for(s=v(t,3,3);s;--s)l[i++]=0;break;case 18:for(s=v(t,7,11);s;--s)l[i++]=0;break;default:l[i++]=p}}b(e,l,0,n),b(r,l,n,o)}function A(t,e,r){for(;;){var n,o,c,f,l=y(t,e);if(256===l)return 0;if(l<256)t.dest[t.destLen++]=l;else for(n=v(t,a[l-=257],u[l]),o=y(t,r),f=c=t.destLen-v(t,i[o],s[o]);f<c+n;++f)t.dest[t.destLen++]=t.dest[f]}}function w(t){for(var e,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if((e=256*(e=t.source[t.sourceIndex+1])+t.source[t.sourceIndex])!==(65535&~(256*t.source[t.sourceIndex+3]+t.source[t.sourceIndex+2])))return-3;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,0}!function(t,e){var r;for(r=0;r<7;++r)t.table[r]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,r=0;r<24;++r)t.trans[r]=256+r;for(r=0;r<144;++r)t.trans[24+r]=r;for(r=0;r<8;++r)t.trans[168+r]=280+r;for(r=0;r<112;++r)t.trans[176+r]=144+r;for(r=0;r<5;++r)e.table[r]=0;for(e.table[5]=32,r=0;r<32;++r)e.trans[r]=r}(n,o),h(a,u,4,3),h(i,s,2,1),a[28]=0,u[28]=258,t.exports=function(t,e){var a,u,i=new r(t,e);do{switch(a=d(i),v(i,2,0)){case 0:u=w(i);break;case 1:u=A(i,n,o);break;case 2:g(i,i.ltree,i.dtree),u=A(i,i.ltree,i.dtree);break;default:u=-3}if(0!==u)throw new Error("Data error")}while(!a);return i.destLen<i.dest.length?"function"==typeof i.dest.slice?i.dest.slice(0,i.destLen):i.dest.subarray(0,i.destLen):i.dest}},954:(t,e)=>{!function(t){"use strict";var e="undefined"!=typeof Uint8Array?Uint8Array:Array,r="+".charCodeAt(0),n="/".charCodeAt(0),o="0".charCodeAt(0),a="a".charCodeAt(0),u="A".charCodeAt(0),i="-".charCodeAt(0),s="_".charCodeAt(0);function c(t){var e=t.charCodeAt(0);return e===r||e===i?62:e===n||e===s?63:e<o?-1:e<o+10?e-o+26+26:e<u+26?e-u:e<a+26?e-a+26:void 0}t.toByteArray=function(t){var r,n,o,a,u,i;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var s=t.length;u="="===t.charAt(s-2)?2:"="===t.charAt(s-1)?1:0,i=new e(3*t.length/4-u),o=u>0?t.length-4:t.length;var f=0;function l(t){i[f++]=t}for(r=0,n=0;r<o;r+=4,n+=3)l((16711680&(a=c(t.charAt(r))<<18|c(t.charAt(r+1))<<12|c(t.charAt(r+2))<<6|c(t.charAt(r+3))))>>16),l((65280&a)>>8),l(255&a);return 2===u?l(255&(a=c(t.charAt(r))<<2|c(t.charAt(r+1))>>4)):1===u&&(l((a=c(t.charAt(r))<<10|c(t.charAt(r+1))<<4|c(t.charAt(r+2))>>2)>>8&255),l(255&a)),i},t.fromByteArray=function(t){var e,r,n,o,a=t.length%3,u="";function i(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}for(e=0,n=t.length-a;e<n;e+=3)u+=i((o=r=(t[e]<<16)+(t[e+1]<<8)+t[e+2])>>18&63)+i(o>>12&63)+i(o>>6&63)+i(63&o);switch(a){case 1:u+=i((r=t[t.length-1])>>2),u+=i(r<<4&63),u+="==";break;case 2:u+=i((r=(t[t.length-2]<<8)+t[t.length-1])>>10),u+=i(r>>4&63),u+=i(r<<2&63),u+="="}return u}}(e)}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};return(()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function o(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function a(e){var r=function(e){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=t(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(r)?r:r+""}r.d(n,{default:()=>Q});var u,i=function(){return t=function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.transformFunctions=e,this.options=r},(r=[{key:"processHtmlWithFunctions",value:function(t){if(""===t)return t;var r,n=t,o=function(t,r){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}(t))||r&&t&&"number"==typeof t.length){n&&(t=n);var o=0,a=function(){};return{s:a,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,i=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){s=!0,u=t},f:function(){try{i||null==n.return||n.return()}finally{if(s)throw u}}}}(this.transformFunctions);try{for(o.s();!(r=o.n()).done;){var a=r.value;n=this.processHtml(n,a)}}catch(t){o.e(t)}finally{o.f()}return n}},{key:"processHtml",value:function(t,e){if(""===t)return t;for(var r,n=/(<[^>]+>)|([^<]+)/g,o=[];null!==(r=n.exec(t));)r[1]?o.push({type:"tag",value:r[1]}):r[2]&&o.push({type:"text",value:r[2]});for(var a=0;a<o.length;a++)if("text"===o[a].type){for(var u="",i=a+1;i<o.length;i++)if("text"===o[i].type){u=o[i].value;break}var s=o[a].value;s=e(s,u,this.options),o[a].value=s}return o.map((function(t){return t.value})).join("")}}])&&o(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r}(),s=r(667),c=r(954);const f=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,1,1,1,0,0,4,2,4,1,1,1,1,1,0,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,4,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,1,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0]],l=new s(c.toByteArray("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")),h=function(t){switch(t){case 33:case 39:case 40:case 42:return 12;case 35:return 5;default:return t}},p=function(t){switch(t){case 37:case 38:return 34;case 41:return 22;default:return t}};class b{constructor(t,e=!1){this.position=t,this.required=e}}u=class{nextCodePoint(){const t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos);return 55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t}nextCharClass(){return h(l.get(this.nextCodePoint()))}getSimpleBreak(){switch(this.nextClass){case 41:return!1;case 34:case 37:case 38:return this.curClass=34,!1;case 36:return this.curClass=36,!1}return null}getPairTableBreak(t){let e=!1;switch(f[this.curClass][this.nextClass]){case 0:e=!0;break;case 1:e=41===t;break;case 2:if(e=41===t,!e)return e=!1,e;break;case 3:if(41!==t)return e}return this.LB8a&&(e=!1),!this.LB21a||16!==this.curClass&&17!==this.curClass?this.LB21a=13===this.curClass:(e=!1,this.LB21a=!1),28===this.curClass?(this.LB30a++,2==this.LB30a&&28===this.nextClass&&(e=!0,this.LB30a=0)):this.LB30a=0,this.curClass=this.nextClass,e}nextBreak(){if(null==this.curClass){let t=this.nextCharClass();this.curClass=p(t),this.nextClass=t,this.LB8a=31===t,this.LB30a=0}for(;this.pos<this.string.length;){this.lastPos=this.pos;const t=this.nextClass;if(this.nextClass=this.nextCharClass(),34===this.curClass||36===this.curClass&&37!==this.nextClass)return this.curClass=p(h(this.nextClass)),new b(this.lastPos,!0);let e=this.getSimpleBreak();if(null===e&&(e=this.getPairTableBreak(t)),this.LB8a=31===this.nextClass,e)return new b(this.lastPos)}return this.lastPos<this.string.length?(this.lastPos=this.string.length,new b(this.string.length)):null}constructor(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null,this.LB8a=!1,this.LB21a=!1,this.LB30a=0}};var d=/(?:[\t-\r -~\xA0-\xA5\xAA\xAC\xB1-\xB3\xB7\xB9\xBA\xBF-\u02B8\u02BC\u02C7\u02C9-\u02CB\u02CD\u02D7\u02D9\u02E0-\u02E4\u0300-\u030E\u0310\u0311\u0313\u0320\u0323-\u0325\u032D\u032E\u0330\u0331\u0358\u035E\u0363-\u036F\u0485\u0486\u0951\u0952\u10FB\u1680\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1DF8\u1E00-\u1EFF\u2000-\u200A\u2018\u2019\u201C\u201D\u2028\u2029\u202F\u2030\u205F\u2070\u2071\u2074-\u208E\u2090-\u209C\u20AC\u20F0\u212A\u212B\u2132\u214E\u2160-\u2188\u2202\u2205\u220F\u2211\u2212\u221A\u221E\u222B\u2248\u2260\u2264\u2265\u2C60-\u2C7F\u2E17\u3000\uA700-\uA707\uA722-\uA787\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA7FF\uA92E\uAB30-\uAB5A\uAB5C-\uAB64\uAB66-\uAB69\uFB00-\uFB06\uFEFF\uFF21-\uFF3A\uFF41-\uFF5A]|\uD801[\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A])+/g,v=/(|[|{|〔|〈|《|「|『|【|〘|〖|“|‘/,y=/)|]|}|〕|〉|》|」|』|】|〙|〗|”|’/,g=/・|:|;/,A=/、|,/,w=/。|./,m=new RegExp("[\\p{scx=Hiragana}\\p{scx=Katakana}|ヲ-゚\\p{scx=Han}".concat(v.source).concat(y.source).concat(g.source).concat(A.source).concat(w.source,"]+"),"u"),P=new RegExp("[".concat("—‥…_",String.fromCharCode(9472),"-").concat(String.fromCharCode(9599),"]+"),"g"),x=/[\s\u00A0]/,B=new RegExp("".concat(/,/.source,"|").concat(/\./.source,"|").concat(v.source,"|").concat(y.source,"|").concat(g.source,"|").concat(A.source,"|").concat(w.source),"u"),S={isLatin:function(t){return d.test(t)},isJapanese:function(t){return m.test(t)},hasLanguageTransition:function(t,e){return S.isJapanese(t)!==S.isJapanese(e)},shouldAddThinSpace:function(t,e){return S.hasLanguageTransition(t,e)}},O="typesetting",C=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=r?' style="'.concat(r,'"'):"";return'<span class="'.concat(e,'"').concat(o).concat(n,">").concat(t,"</span>")},j=function(t,e,r,n){var o="letter-spacing: ".concat(r,";"),a=' data-content="'.concat(n?" ":" ",'"');return C(t,e,o,a)},L=function(t){var e=new Intl.Segmenter("ja-JP",{granularity:"word"});return Array.from(e.segment(t),(function(t){return t.segment}))},D=function(t,e){return!x.test(t)&&!x.test(e)&&(function(t,e){return B.test(t)||B.test(e)}(t,e)?function(t,e){for(var r=new RegExp("(".concat(y.source,"|").concat(A.source,"|").concat(w.source,")")),n={spaceBefore:{regex:v,hasSpaceBefore:!0,hasSpaceAfter:!1},spaceAfter:{regex:r,hasSpaceBefore:!1,hasSpaceAfter:!0},spaceBoth:{regex:g,hasSpaceBefore:!0,hasSpaceAfter:!0}},o=0,a=Object.values(n);o<a.length;o++){var u=a[o],i=u.regex,s=u.hasSpaceBefore,c=u.hasSpaceAfter;if(s&&i.test(e)&&!i.test(t))return!0;if(c&&i.test(t)&&!i.test(e))return!0}return!1}(t,e):S.shouldAddThinSpace(t,e))},F=function(t,e){var r=t.slice(-1)+e.slice(0,1),n=new u(r).nextBreak();return!!n&&1===n.position},k=function(t,e,r){var n=L(t),o=L(e);return n.reduce((function(t,e,n,a){return t+function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0;if(!e)return t;var n,o=r.insertThinSpaces&&D(t,e),a=F(t,e);return o?t+function(t,e){var r="".concat(O,"-thin-space");return j("",r,t,e)}(g.test(t)||g.test(e)?"calc(".concat(r.thinSpaceWidth," / 2.0)"):null!==(n=r.thinSpaceWidth)&&void 0!==n?n:"",a):r.useWordBreak&&a?t+"<wbr>":t}(e,a[n+1]||o[0],r)}),"")};function X(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var H=function(t,e,r){return" "===t?t:(n=t,o=r.useWordBreak,a="".concat(O,"-wrapper"),u="".concat(O,"-word-break"),i=o?"".concat(a," ").concat(u):a,C(n,i));var n,o,a,u,i},z=function(t,e,r){return" "===t?t:r.wrapLatin&&S.isLatin(t)?t.replace(d,(function(t){return e=t,r="".concat(O,"-latin"),C(e,r);var e,r})):r.noSpaceBetweenNoBreaks&&(n=t,P.test(n))?t.replace(P,(function(t){return e=t,r="".concat(O,"-no-breaks"),C(e,r);var e,r})):t;var n},W=function(t,e,r){var n,o=function(t){if(Array.isArray(t))return X(t)}(n=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return X(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?X(t,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return o.map((function(t,n){var a,u=o[n+1]||e[0]||"",i=null===(a=r.kerningRules)||void 0===a?void 0:a.find((function(e){return e.between[0]===t&&e.between[1]===u}));if(i){var s="number"==typeof i.value?i.value:parseInt(i.value,10),c=!r.useWordBreak&&F(t,u);return t+function(t,e){if(0===t)return"";var r="".concat(O,"-kerning");if(t<0){var n="margin: ".concat(t/1e3/2+"em",";");return C("",r,n)}return j("",r,t/1e3+"em",e)}(s,c)}return t})).join("")},U=function(t,e,r){if(!r.wrapChars||0===r.wrapChars.length)return t;var n=t;return r.wrapChars.forEach((function(t){var e=t.char;if(1===Array.from(e).length){var r=t.label?t.label:e;if(/^[^"'<>\s]+$/.test(r)){var o="typesetting-char-".concat(r),a=e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),u=new RegExp("(".concat(a,"+)"),"gu");n=n.replace(u,(function(t){return'<span class="'.concat(o,'">').concat(t,"</span>")}))}else console.error("Invalid configuration in wrapChars: '".concat(e,"' is used. To be used as a CSS class, the 'label' property must not contain spaces, quotes, '<' or '>'. Skipping this wrapping rule."))}else console.error("Invalid configuration in wrapChars: '".concat(e,"' is not valid. 'char' must be a single character."))})),n},E=window;function T(t){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},T(t)}function V(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function I(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?V(Object(r),!0).forEach((function(e){N(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):V(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function N(t,e,r){return(e=q(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Z(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,q(n.key),n)}}function q(t){var e=function(t){if("object"!=T(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=T(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==T(e)?e:e+""}function R(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(R=function(){return!!t})()}function K(t){return K=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},K(t)}function J(t,e){return J=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},J(t,e)}var Q=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=void 0!==Intl.Segmenter;r||console.warn("Intl.Segmenter is not supported in this environment. \nTherefore, the options `useWordBreak` and `insertThinSpaces` will be ignored. \nFor more information about Intl.Segmenter, please visit:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter");var n=r?[H,k,z,W,U]:[z,W,U],o=e.validateOptions(t);return function(t,e,r){return e=K(e),function(t,e){if(e&&("object"==T(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,R()?Reflect.construct(e,r||[],K(t).constructor):e.apply(t,r))}(this,e,[n,o])}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&J(t,e)}(e,t),r=e,o=[{key:"getDefaultOptions",value:function(){return{useWordBreak:!0,wrapLatin:!0,wrapChars:[],noSpaceBetweenNoBreaks:!0,insertThinSpaces:!0,thinSpaceWidth:"0.2em",kerningRules:[]}}},{key:"validateOptions",value:function(t){return t.kerningRules&&(t.kerningRules=t.kerningRules.filter(e.isValidKerningRule)),I(I({},e.getDefaultOptions()),t)}},{key:"isValidKerningRule",value:function(t){return 1===t.between[0].length&&1===t.between[1].length||(console.warn("Kerning rule between '".concat(t.between[0],"' and '").concat(t.between[1],"' must be single characters.")),!1)}}],(n=[{key:"render",value:function(t){return t?this.processHtmlWithFunctions(t):""}},{key:"renderToElements",value:function(t){var e=this;t&&(Array.isArray(t)||(t=[t]),t.forEach((function(t){var r=e.render(t.innerHTML);t.innerHTML=r})))}},{key:"renderToSelector",value:function(t){if(t){var e=E.document.querySelectorAll(t);this.renderToElements(Array.from(e))}}}])&&Z(r.prototype,n),o&&Z(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(i)})(),n.default})()));
|
package/dist/apply-style.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ import { TypesettingOptions } from '../types';
|
|
|
2
2
|
declare const applyStyleToText: (currentNodeValue: string, nextNodeValue: string, options: TypesettingOptions) => string;
|
|
3
3
|
declare const applyStyleToSegment: (currentSegment: string, nextSegment: string, options: TypesettingOptions) => string;
|
|
4
4
|
declare const applyKerningToSegment: (currentSegment: string, nextSegment: string, options: TypesettingOptions) => string;
|
|
5
|
-
|
|
5
|
+
declare const applyStyleToChar: (currentSegment: string, nextSegment: string, options: TypesettingOptions) => string;
|
|
6
|
+
export { applyStyleToText, applyStyleToSegment, applyKerningToSegment, applyStyleToChar };
|
|
6
7
|
//# sourceMappingURL=apply-style.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-style.d.ts","sourceRoot":"","sources":["../src/apply-style.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"apply-style.d.ts","sourceRoot":"","sources":["../src/apply-style.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAU7C,QAAA,MAAM,gBAAgB,qBAAsB,MAAM,iBAAiB,MAAM,WAAW,kBAAkB,KAAG,MAKxG,CAAA;AAWD,QAAA,MAAM,mBAAmB,mBAAoB,MAAM,eAAe,MAAM,WAAW,kBAAkB,KAAG,MAgBvG,CAAA;AAUD,QAAA,MAAM,qBAAqB,mBAAoB,MAAM,eAAe,MAAM,WAAW,kBAAkB,KAAG,MAmBzG,CAAA;AAkBD,QAAA,MAAM,gBAAgB,mBAAoB,MAAM,eAAe,MAAM,WAAW,kBAAkB,KAAG,MAyCpG,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAA"}
|
package/dist/apply-style.js
CHANGED
|
@@ -36,8 +36,36 @@ const applyKerningToSegment = (currentSegment, nextSegment, options) => {
|
|
|
36
36
|
});
|
|
37
37
|
return kernedChars.join("");
|
|
38
38
|
};
|
|
39
|
+
const escapeRegExp = (str) => str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
|
|
40
|
+
const applyStyleToChar = (currentSegment, nextSegment, options) => {
|
|
41
|
+
if (!options.wrapChars || options.wrapChars.length === 0) {
|
|
42
|
+
return currentSegment;
|
|
43
|
+
}
|
|
44
|
+
let updatedSegment = currentSegment;
|
|
45
|
+
options.wrapChars.forEach((rule) => {
|
|
46
|
+
const rawChar = rule.char;
|
|
47
|
+
if (Array.from(rawChar).length !== 1) {
|
|
48
|
+
console.error(`Invalid configuration in wrapChars: '${rawChar}' is not valid. 'char' must be a single character.`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const label = rule.label ? rule.label : rawChar;
|
|
52
|
+
const validClassRegex = /^[^"'<>\s]+$/;
|
|
53
|
+
if (!validClassRegex.test(label)) {
|
|
54
|
+
console.error(
|
|
55
|
+
`Invalid configuration in wrapChars: '${rawChar}' is used. To be used as a CSS class, the 'label' property must not contain spaces, quotes, '<' or '>'. Skipping this wrapping rule.`
|
|
56
|
+
);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const className = `typesetting-char-${label}`;
|
|
60
|
+
const escapedChar = escapeRegExp(rawChar);
|
|
61
|
+
const regex = new RegExp(`(${escapedChar}+)`, "gu");
|
|
62
|
+
updatedSegment = updatedSegment.replace(regex, (match) => `<span class="${className}">${match}</span>`);
|
|
63
|
+
});
|
|
64
|
+
return updatedSegment;
|
|
65
|
+
};
|
|
39
66
|
export {
|
|
40
67
|
applyKerningToSegment,
|
|
68
|
+
applyStyleToChar,
|
|
41
69
|
applyStyleToSegment,
|
|
42
70
|
applyStyleToText
|
|
43
71
|
};
|
package/dist/html-processor.d.ts
CHANGED
|
@@ -5,11 +5,7 @@ declare class HTMLProcessor {
|
|
|
5
5
|
constructor(transformFunctions: TransformFunction[], options: TypesettingOptions);
|
|
6
6
|
processHtmlWithFunctions(srcHtml: string): string;
|
|
7
7
|
private processHtml;
|
|
8
|
-
private getTransformedHtml;
|
|
9
|
-
private replaceNode;
|
|
10
8
|
}
|
|
11
|
-
declare const parseFromString: (html: string) => Document;
|
|
12
|
-
declare const getTextNodes: (element: HTMLElement) => Node[];
|
|
13
9
|
export default HTMLProcessor;
|
|
14
|
-
export {
|
|
10
|
+
export type { TransformFunction, TypesettingOptions };
|
|
15
11
|
//# sourceMappingURL=html-processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-processor.d.ts","sourceRoot":"","sources":["../src/html-processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"html-processor.d.ts","sourceRoot":"","sources":["../src/html-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAKrE,cAAM,aAAa;IACjB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,OAAO,CAAoB;gBAEvB,kBAAkB,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,kBAAkB;IAYhF,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAiBjD,OAAO,CAAC,WAAW;CAoCpB;AAED,eAAe,aAAa,CAAA;AAC5B,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAA"}
|
package/dist/html-processor.js
CHANGED
|
@@ -1,97 +1,60 @@
|
|
|
1
|
-
import win from "./win.js";
|
|
2
1
|
class HTMLProcessor {
|
|
3
2
|
constructor(transformFunctions, options) {
|
|
4
|
-
/**
|
|
5
|
-
* 指定されたノードを、新しいHTMLコンテンツで置き換えます。
|
|
6
|
-
*
|
|
7
|
-
* @param node - 置き換えるノード。
|
|
8
|
-
* @param transformedHtml - ノードに挿入される変換後のHTMLコンテンツ。
|
|
9
|
-
*/
|
|
10
|
-
this.replaceNode = (node, transformedHtml) => {
|
|
11
|
-
const range = win.document.createRange();
|
|
12
|
-
range.selectNode(node);
|
|
13
|
-
const fragment = range.createContextualFragment(transformedHtml);
|
|
14
|
-
if (node.parentNode) {
|
|
15
|
-
node.parentNode.insertBefore(fragment, node);
|
|
16
|
-
node.parentNode.removeChild(node);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
3
|
this.transformFunctions = transformFunctions;
|
|
20
4
|
this.options = options;
|
|
21
5
|
}
|
|
22
6
|
/**
|
|
23
|
-
* 与えられたHTML
|
|
24
|
-
*
|
|
7
|
+
* 与えられたHTML文字列に対して、各変換関数を順次適用し、変換されたHTML文字列を返します。
|
|
8
|
+
* DOM パーサやツリー操作は用いず、すべての処理を文字列操作で実現しています。
|
|
25
9
|
*
|
|
26
10
|
* @param srcHtml - 変換を適用する元のHTML文字列。
|
|
27
|
-
* @param functions - 順番に適用する変換関数の配列。
|
|
28
11
|
* @return 変換後のHTML文字列。
|
|
29
12
|
*/
|
|
30
13
|
processHtmlWithFunctions(srcHtml) {
|
|
31
|
-
if (srcHtml === "")
|
|
32
|
-
|
|
14
|
+
if (srcHtml === "") return srcHtml;
|
|
15
|
+
let processedHtml = srcHtml;
|
|
16
|
+
for (const transformFunction of this.transformFunctions) {
|
|
17
|
+
processedHtml = this.processHtml(processedHtml, transformFunction);
|
|
33
18
|
}
|
|
34
|
-
return
|
|
35
|
-
(currentHtml, transformFunction) => this.processHtml(currentHtml, transformFunction),
|
|
36
|
-
srcHtml
|
|
37
|
-
);
|
|
19
|
+
return processedHtml;
|
|
38
20
|
}
|
|
39
21
|
/**
|
|
40
|
-
* HTML
|
|
41
|
-
* 変換されたHTMLを文字列として返します。
|
|
22
|
+
* HTML文字列を正規表現で「タグ」と「テキスト」に分割し、テキスト部分に対して指定された変換関数を適用します。
|
|
42
23
|
*
|
|
43
24
|
* @param html - 解析および変換するHTML文字列。
|
|
44
|
-
* @param transformFunction -
|
|
45
|
-
* @return 変換後のHTML
|
|
25
|
+
* @param transformFunction - テキスト部分に適用する変換関数。
|
|
26
|
+
* @return 変換後のHTML文字列。
|
|
46
27
|
*/
|
|
47
28
|
processHtml(html, transformFunction) {
|
|
48
|
-
if (html === "")
|
|
49
|
-
|
|
29
|
+
if (html === "") return html;
|
|
30
|
+
const tokenRegex = /(<[^>]+>)|([^<]+)/g;
|
|
31
|
+
const tokens = [];
|
|
32
|
+
let match;
|
|
33
|
+
while ((match = tokenRegex.exec(html)) !== null) {
|
|
34
|
+
if (match[1]) {
|
|
35
|
+
tokens.push({ type: "tag", value: match[1] });
|
|
36
|
+
} else if (match[2]) {
|
|
37
|
+
tokens.push({ type: "text", value: match[2] });
|
|
38
|
+
}
|
|
50
39
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
* @param nextNode - 次のノード、または存在しない場合は null。
|
|
65
|
-
* @param transformFunction - ノードの値を変換するための関数。
|
|
66
|
-
* @return 変換されたHTMLコンテンツを含む文字列。
|
|
67
|
-
*/
|
|
68
|
-
getTransformedHtml(currentNode, nextNode, transformFunction) {
|
|
69
|
-
const transformedHtml = transformFunction(
|
|
70
|
-
currentNode.nodeValue || "",
|
|
71
|
-
nextNode ? nextNode.nodeValue || "" : "",
|
|
72
|
-
this.options
|
|
73
|
-
);
|
|
74
|
-
return transformedHtml;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const parseFromString = (html) => {
|
|
78
|
-
return new win.DOMParser().parseFromString(html, "text/html");
|
|
79
|
-
};
|
|
80
|
-
const getTextNodes = (element) => {
|
|
81
|
-
const walk = win.document.createTreeWalker(element, win.NodeFilter.SHOW_TEXT);
|
|
82
|
-
let textNode = walk.nextNode();
|
|
83
|
-
const textNodes = [];
|
|
84
|
-
while (textNode) {
|
|
85
|
-
if (textNode.nodeValue && textNode.nodeValue.trim() !== "") {
|
|
86
|
-
textNodes.push(textNode);
|
|
40
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
41
|
+
if (tokens[i].type === "text") {
|
|
42
|
+
let nextText = "";
|
|
43
|
+
for (let j = i + 1; j < tokens.length; j++) {
|
|
44
|
+
if (tokens[j].type === "text") {
|
|
45
|
+
nextText = tokens[j].value;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
let transformed = tokens[i].value;
|
|
50
|
+
transformed = transformFunction(transformed, nextText, this.options);
|
|
51
|
+
tokens[i].value = transformed;
|
|
52
|
+
}
|
|
87
53
|
}
|
|
88
|
-
|
|
54
|
+
return tokens.map((token) => token.value).join("");
|
|
89
55
|
}
|
|
90
|
-
|
|
91
|
-
};
|
|
56
|
+
}
|
|
92
57
|
var html_processor_default = HTMLProcessor;
|
|
93
58
|
export {
|
|
94
|
-
html_processor_default as default
|
|
95
|
-
getTextNodes,
|
|
96
|
-
parseFromString
|
|
59
|
+
html_processor_default as default
|
|
97
60
|
};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAI/C,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,UAAU,CAAA;AAM/D,cAAM,UAAW,SAAQ,aAAa;IAIpC,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAI/C,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,UAAU,CAAA;AAM/D,cAAM,UAAW,SAAQ,aAAa;IAIpC,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;gBAY5C,OAAO,GAAE,kBAAuB;IAgC5C,OAAO,CAAC,MAAM,CAAC,eAAe;IAkB9B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAY/B,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI;IAmB5D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAMhD;AAED,eAAe,UAAU,CAAA;AACzB,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import HTMLProcessor from "./html-processor.js";
|
|
2
2
|
import insertSeparatorsToText from "./insert-separators.js";
|
|
3
|
-
import { applyStyleToText, applyStyleToSegment, applyKerningToSegment } from "./apply-style.js";
|
|
3
|
+
import { applyStyleToText, applyStyleToSegment, applyKerningToSegment, applyStyleToChar } from "./apply-style.js";
|
|
4
4
|
import win from "./win.js";
|
|
5
5
|
class Typesetter extends HTMLProcessor {
|
|
6
6
|
/**
|
|
@@ -10,6 +10,7 @@ class Typesetter extends HTMLProcessor {
|
|
|
10
10
|
return {
|
|
11
11
|
useWordBreak: true,
|
|
12
12
|
wrapLatin: true,
|
|
13
|
+
wrapChars: [],
|
|
13
14
|
noSpaceBetweenNoBreaks: true,
|
|
14
15
|
insertThinSpaces: true,
|
|
15
16
|
thinSpaceWidth: "0.2em",
|
|
@@ -23,7 +24,7 @@ class Typesetter extends HTMLProcessor {
|
|
|
23
24
|
"Intl.Segmenter is not supported in this environment. \nTherefore, the options `useWordBreak` and `insertThinSpaces` will be ignored. \nFor more information about Intl.Segmenter, please visit:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter"
|
|
24
25
|
);
|
|
25
26
|
}
|
|
26
|
-
const transformFunctions = isIntlSegmenterSupported ? [applyStyleToText, insertSeparatorsToText, applyStyleToSegment, applyKerningToSegment] : [applyStyleToSegment, applyKerningToSegment];
|
|
27
|
+
const transformFunctions = isIntlSegmenterSupported ? [applyStyleToText, insertSeparatorsToText, applyStyleToSegment, applyKerningToSegment, applyStyleToChar] : [applyStyleToSegment, applyKerningToSegment, applyStyleToChar];
|
|
27
28
|
const validatedOptions = Typesetter.validateOptions(options);
|
|
28
29
|
super(transformFunctions, validatedOptions);
|
|
29
30
|
}
|
|
@@ -95,7 +96,7 @@ class Typesetter extends HTMLProcessor {
|
|
|
95
96
|
this.renderToElements(Array.from(elements));
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
var
|
|
99
|
+
var index_default = Typesetter;
|
|
99
100
|
export {
|
|
100
|
-
|
|
101
|
+
index_default as default
|
|
101
102
|
};
|
package/dist/win.d.ts
CHANGED
package/dist/win.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"win.d.ts","sourceRoot":"","sources":["../src/win.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"win.d.ts","sourceRoot":"","sources":["../src/win.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,GAAG,2BAAqB,CAAA;AAE9B,eAAe,GAAG,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "palt-typesetting",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Typesetting Library for Proportional Spacing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,23 +34,23 @@
|
|
|
34
34
|
"./dist/win.js": "./dist/win-browser.js"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"jsdom": "^
|
|
37
|
+
"jsdom": "^26.0.0",
|
|
38
38
|
"linebreak": "^1.1.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@babel/core": "^7.23.9",
|
|
42
42
|
"@babel/preset-env": "^7.23.9",
|
|
43
43
|
"@types/jsdom": "^21.1.6",
|
|
44
|
-
"@types/node": "^
|
|
45
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
46
|
-
"@typescript-eslint/parser": "^
|
|
44
|
+
"@types/node": "^22",
|
|
45
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
46
|
+
"@typescript-eslint/parser": "^8.0.0",
|
|
47
47
|
"babel-loader": "^9.1.3",
|
|
48
48
|
"clean-css-cli": "^5.6.3",
|
|
49
|
-
"esbuild": "^0.
|
|
50
|
-
"eslint": "^
|
|
49
|
+
"esbuild": "^0.25.0",
|
|
50
|
+
"eslint": "^9",
|
|
51
51
|
"typescript": "^5",
|
|
52
|
-
"vitest": "^
|
|
52
|
+
"vitest": "^3.0.5",
|
|
53
53
|
"webpack": "^5.90.3",
|
|
54
|
-
"webpack-cli": "^
|
|
54
|
+
"webpack-cli": "^6.0.1"
|
|
55
55
|
}
|
|
56
56
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -24,6 +24,14 @@ export interface TypesettingOptions {
|
|
|
24
24
|
*/
|
|
25
25
|
wrapLatin?: boolean
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* 特例文字の設定。
|
|
29
|
+
* 指定された char をラップします。
|
|
30
|
+
* ラップされた文字は、.typesetting-char-[label] というクラス名でラップされます。
|
|
31
|
+
* label が未設定の場合は、char の値がそのままクラス名の一部として使用されます。
|
|
32
|
+
*/
|
|
33
|
+
wrapChars?: WrapChar[]
|
|
34
|
+
|
|
27
35
|
/**
|
|
28
36
|
* 分離禁則文字を .typesetting-no-breaks でラップし、文字間を 0 に設定します。
|
|
29
37
|
* useWordBreak が true の場合にのみ有効です。
|
|
@@ -59,3 +67,14 @@ export interface KerningRule {
|
|
|
59
67
|
between: [string, string]
|
|
60
68
|
value: string | number
|
|
61
69
|
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 特例文字の設定を定義するインターフェース。
|
|
73
|
+
* char: ラッピング対象の文字を指定します。
|
|
74
|
+
* label: ラッピング時に使用するクラス名の一部となる文字列(任意)。
|
|
75
|
+
* label が未設定の場合は、char の値がそのままクラス名の一部として使用されます。
|
|
76
|
+
*/
|
|
77
|
+
export interface WrapChar {
|
|
78
|
+
char: string
|
|
79
|
+
label?: string
|
|
80
|
+
}
|