@xom11/whiteboard 0.27.0 → 0.28.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/dist/ai.d.mts +1 -1
- package/dist/ai.d.ts +1 -1
- package/dist/ai.js +54 -23
- package/dist/ai.js.map +1 -1
- package/dist/ai.mjs +54 -23
- package/dist/ai.mjs.map +1 -1
- package/dist/catalog.json +4 -4
- package/dist/{chunk-D5JLJ3PT.mjs → chunk-5JM35CXV.mjs} +4 -4
- package/dist/{chunk-D5JLJ3PT.mjs.map → chunk-5JM35CXV.mjs.map} +1 -1
- package/dist/{chunk-KYMBUTPO.mjs → chunk-BU5KLO3P.mjs} +3 -3
- package/dist/{chunk-KYMBUTPO.mjs.map → chunk-BU5KLO3P.mjs.map} +1 -1
- package/dist/{chunk-AYJPOHCI.mjs → chunk-H22OZYTW.mjs} +3 -3
- package/dist/{chunk-AYJPOHCI.mjs.map → chunk-H22OZYTW.mjs.map} +1 -1
- package/dist/{chunk-I3L56GVH.mjs → chunk-OQIQNKPQ.mjs} +3 -3
- package/dist/{chunk-I3L56GVH.mjs.map → chunk-OQIQNKPQ.mjs.map} +1 -1
- package/dist/{chunk-KZGPSTZI.mjs → chunk-QCZVFEN4.mjs} +4 -4
- package/dist/{chunk-KZGPSTZI.mjs.map → chunk-QCZVFEN4.mjs.map} +1 -1
- package/dist/{chunk-4ETJ4CDY.mjs → chunk-QRUAEXLR.mjs} +4 -4
- package/dist/{chunk-4ETJ4CDY.mjs.map → chunk-QRUAEXLR.mjs.map} +1 -1
- package/dist/{chunk-HLAOGXEK.mjs → chunk-V3YJ6JFL.mjs} +3 -3
- package/dist/{chunk-HLAOGXEK.mjs.map → chunk-V3YJ6JFL.mjs.map} +1 -1
- package/dist/{chunk-D5LWSN2Y.mjs → chunk-ZTQBUKLJ.mjs} +30 -13
- package/dist/chunk-ZTQBUKLJ.mjs.map +1 -0
- package/dist/geometry-2d.d.mts +1 -1
- package/dist/geometry-2d.d.ts +1 -1
- package/dist/geometry-2d.js +143 -33
- package/dist/geometry-2d.js.map +1 -1
- package/dist/geometry-2d.mjs +3 -3
- package/dist/geometry-3d.d.mts +1 -1
- package/dist/geometry-3d.d.ts +1 -1
- package/dist/geometry-3d.js +28 -11
- package/dist/geometry-3d.js.map +1 -1
- package/dist/geometry-3d.mjs +3 -3
- package/dist/graph-2d.d.mts +1 -1
- package/dist/graph-2d.d.ts +1 -1
- package/dist/graph-2d.js +28 -11
- package/dist/graph-2d.js.map +1 -1
- package/dist/graph-2d.mjs +3 -3
- package/dist/{host-M26FS244.mjs → host-2ISGVO7O.mjs} +5 -5
- package/dist/{host-M26FS244.mjs.map → host-2ISGVO7O.mjs.map} +1 -1
- package/dist/{host-HAYCJJ2T.mjs → host-4P766V4J.mjs} +110 -27
- package/dist/host-4P766V4J.mjs.map +1 -0
- package/dist/{host-LTJHAY5A.mjs → host-HOSJHQ5H.mjs} +6 -6
- package/dist/{host-LTJHAY5A.mjs.map → host-HOSJHQ5H.mjs.map} +1 -1
- package/dist/index.d.mts +9 -4
- package/dist/index.d.ts +9 -4
- package/dist/index.js +147 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +17 -15
- package/dist/index.mjs.map +1 -1
- package/dist/latex.d.mts +1 -1
- package/dist/latex.d.ts +1 -1
- package/dist/serialize-N4G6RFBB.mjs +9 -0
- package/dist/{serialize-C3LSUMSA.mjs.map → serialize-N4G6RFBB.mjs.map} +1 -1
- package/dist/{types-zc_Pa0mp.d.mts → types-BHYC2Fiw.d.mts} +25 -1
- package/dist/{types-zc_Pa0mp.d.ts → types-BHYC2Fiw.d.ts} +25 -1
- package/package.json +1 -1
- package/dist/chunk-D5LWSN2Y.mjs.map +0 -1
- package/dist/host-HAYCJJ2T.mjs.map +0 -1
- package/dist/serialize-C3LSUMSA.mjs +0 -9
package/dist/ai.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as State, D as DslInputT, b as AiFigureUiResult } from './types-BHYC2Fiw.mjs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { A as AIProvider, P as ProviderRequest, a as ProviderOutput, V as VisionRequest, S as SelectProviderOptions, I as ImagePart } from './handleExtractProblem-C-U5KluK.mjs';
|
|
4
4
|
export { b as ExtractProblemFailure, c as ExtractProblemOptions, d as ExtractProblemOutcome, e as ExtractProblemSuccess, E as ExtractUiResult, H as HandleExtractProblemOptions, f as ProviderTokenUsage, g as extractProblemFromImage, h as handleExtractProblem, p as pickVisionModel, s as selectProvider } from './handleExtractProblem-C-U5KluK.mjs';
|
package/dist/ai.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as State, D as DslInputT, b as AiFigureUiResult } from './types-BHYC2Fiw.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { A as AIProvider, P as ProviderRequest, a as ProviderOutput, V as VisionRequest, S as SelectProviderOptions, I as ImagePart } from './handleExtractProblem-C-U5KluK.js';
|
|
4
4
|
export { b as ExtractProblemFailure, c as ExtractProblemOptions, d as ExtractProblemOutcome, e as ExtractProblemSuccess, E as ExtractUiResult, H as HandleExtractProblemOptions, f as ProviderTokenUsage, g as extractProblemFromImage, h as handleExtractProblem, p as pickVisionModel, s as selectProvider } from './handleExtractProblem-C-U5KluK.js';
|
package/dist/ai.js
CHANGED
|
@@ -3359,6 +3359,7 @@ var GEOMETRY_KEYWORDS = [
|
|
|
3359
3359
|
// Base shapes
|
|
3360
3360
|
"tam gi\xE1c",
|
|
3361
3361
|
"\u0111\u01B0\u1EDDng tr\xF2n",
|
|
3362
|
+
"\u0111\u01B0\u01A1ng tr\xF2n",
|
|
3362
3363
|
"h\xECnh ch\u1EEF nh\u1EADt",
|
|
3363
3364
|
"h\xECnh vu\xF4ng",
|
|
3364
3365
|
"h\xECnh b\xECnh h\xE0nh",
|
|
@@ -3373,11 +3374,13 @@ var GEOMETRY_KEYWORDS = [
|
|
|
3373
3374
|
"b\xE1n k\xEDnh",
|
|
3374
3375
|
"t\xE2m",
|
|
3375
3376
|
"\u0111\u01B0\u1EDDng k\xEDnh",
|
|
3377
|
+
"\u0111\u01B0\u01A1ng k\xEDnh",
|
|
3376
3378
|
// Segments / on-segment
|
|
3377
3379
|
"\u0111o\u1EA1n",
|
|
3378
3380
|
// Derived points
|
|
3379
3381
|
"trung \u0111i\u1EC3m",
|
|
3380
3382
|
"ch\xE2n \u0111\u01B0\u1EDDng cao",
|
|
3383
|
+
"ch\xE2n \u0111\u01B0\u01A1ng cao",
|
|
3381
3384
|
"h\xECnh chi\u1EBFu",
|
|
3382
3385
|
"tr\u1ECDng t\xE2m",
|
|
3383
3386
|
"tr\u1EF1c t\xE2m",
|
|
@@ -3385,6 +3388,7 @@ var GEOMETRY_KEYWORDS = [
|
|
|
3385
3388
|
"t\xE2m ngo\u1EA1i ti\u1EBFp",
|
|
3386
3389
|
// Cevian names
|
|
3387
3390
|
"\u0111\u01B0\u1EDDng cao",
|
|
3391
|
+
"\u0111\u01B0\u01A1ng cao",
|
|
3388
3392
|
"trung tuy\u1EBFn",
|
|
3389
3393
|
"ph\xE2n gi\xE1c",
|
|
3390
3394
|
"trung tr\u1EF1c",
|
|
@@ -3421,6 +3425,8 @@ var GEOMETRY_KEYWORDS = [
|
|
|
3421
3425
|
"vu\xF4ng g\xF3c",
|
|
3422
3426
|
"giao \u0111i\u1EC3m",
|
|
3423
3427
|
"c\u1EAFt",
|
|
3428
|
+
"\u0111\u01B0\u1EDDng th\u1EB3ng",
|
|
3429
|
+
"\u0111\u01B0\u01A1ng th\u1EB3ng",
|
|
3424
3430
|
// Ký hiệu (symbol-only phrasing tương đương từ chữ): "⊥" ≡ "vuông góc".
|
|
3425
3431
|
// perpFoot rule đã nhận "⊥" ở tầng construct (PERP_DRAW), nhưng gate
|
|
3426
3432
|
// hasGeometry trước đây CHỈ nhận chữ "vuông góc" → clause mà "⊥" là tín hiệu
|
|
@@ -3586,6 +3592,8 @@ function pairFromToken(token) {
|
|
|
3586
3592
|
return m ? [m[1], m[2]] : [];
|
|
3587
3593
|
}
|
|
3588
3594
|
var SIDE_PREFIX = "(?:c\u1EA1nh(?:\\s+huy\u1EC1n)?\\s+|\u0111o\u1EA1n(?:\\s+th\u1EB3ng)?\\s+)?";
|
|
3595
|
+
var DUONG_KW = "[\u0110\u0111]\u01B0[\u1EDD\u01A1]ng";
|
|
3596
|
+
var CIRCLE_KW = DUONG_KW + "\\s*tr\xF2n";
|
|
3589
3597
|
|
|
3590
3598
|
// src/stamps/geometry-2d/ai/rules/triangle.ts
|
|
3591
3599
|
var TRI_G = /tam giác\s+(?:(đều|vuông|cân)\s+)?([A-Z])([A-Z])([A-Z])(?![A-Z])/gu;
|
|
@@ -4560,12 +4568,15 @@ var centersRule = {
|
|
|
4560
4568
|
};
|
|
4561
4569
|
|
|
4562
4570
|
// src/stamps/geometry-2d/ai/rules/perpFoot.ts
|
|
4563
|
-
var PREFILTER5 =
|
|
4571
|
+
var PREFILTER5 = new RegExp(
|
|
4572
|
+
"h\xECnh\\s*chi\u1EBFu|ch\xE2n\\s+(?:c\u1EE7a\\s+)?" + DUONG_KW + "\\s+(?:cao|vu\xF4ng\\s*g\xF3c)|\u22A5|vu\xF4ng\\s*g\xF3c",
|
|
4573
|
+
"u"
|
|
4574
|
+
);
|
|
4564
4575
|
var PREFILTER_EN = /projection|perpendicular|foot\s+of/i;
|
|
4565
|
-
var LINE = "(
|
|
4576
|
+
var LINE = "(?:" + DUONG_KW + "\\s*th\u1EB3ng\\s+|c\u1EA1nh\\s+|\u0111o\u1EA1n\\s+)?([A-Z]{1,2})(?![A-Z])";
|
|
4566
4577
|
var PREP = "(?:tr\xEAn|l\xEAn|xu\u1ED1ng|\u0111\u1EBFn|t\u1EDBi)";
|
|
4567
4578
|
var PROJ_CORE = `h\xECnh\\s*chi\u1EBFu\\s+(?:vu\xF4ng\\s*g\xF3c\\s+)?(?:c\u1EE7a\\s+)?([A-Z])\\s+${PREP}\\s+${LINE}`;
|
|
4568
|
-
var FOOT_CORE = `ch\xE2n\\s+(?:c\u1EE7a\\s+)
|
|
4579
|
+
var FOOT_CORE = `ch\xE2n\\s+(?:c\u1EE7a\\s+)?${DUONG_KW}\\s+(?:vu\xF4ng\\s*g\xF3c|cao)\\s*(?:h\u1EA1\\s+|k\u1EBB\\s+|v\u1EBD\\s+|d\u1EF1ng\\s+)?(?:t\u1EEB\\s+)?([A-Z])\\s+${PREP}\\s+${LINE}`;
|
|
4569
4580
|
var LANLUOT = new RegExp(
|
|
4570
4581
|
`([A-Z])(?:[\u2032'])?\\s*,\\s*([A-Z])(?:[\u2032'])?\\s+l\u1EA7n\\s+l\u01B0\u1EE3t\\s+l\xE0\\s+(?:${PROJ_CORE}|${FOOT_CORE})\\s+v\xE0\\s+(?:c\u1EE7a\\s+|t\u1EEB\\s+)?([A-Z])\\s+${PREP}\\s+${LINE}`,
|
|
4571
4582
|
"gu"
|
|
@@ -4692,13 +4703,22 @@ var perpFootRule = {
|
|
|
4692
4703
|
};
|
|
4693
4704
|
|
|
4694
4705
|
// src/stamps/geometry-2d/ai/rules/circleRadius.ts
|
|
4695
|
-
var CENTER_RADIUS_WORDS_G =
|
|
4696
|
-
|
|
4706
|
+
var CENTER_RADIUS_WORDS_G = new RegExp(
|
|
4707
|
+
CIRCLE_KW + "\\s*(?:\\(\\s*)?(?:t\xE2m\\s+)?([^\\s;,).:]+)(?:\\s*\\))?(?:(?!\u0111\u01B0\u1EDDng|v\xE0\\s)[^A-Z])*?b\xE1n\\s*k\xEDnh\\s+(\\d+(?:[.,]\\d+)?)",
|
|
4708
|
+
"gu"
|
|
4709
|
+
);
|
|
4710
|
+
var CENTER_THROUGH_G = new RegExp(
|
|
4711
|
+
CIRCLE_KW + "\\s*(?:\\(\\s*)?(?:t\xE2m\\s+)?([^\\s;,).:]+)(?:\\s*\\))?\\s+\u0111i\\s+qua\\s+([A-Z])",
|
|
4712
|
+
"gu"
|
|
4713
|
+
);
|
|
4697
4714
|
var THROUGH_MULTI = /đi\s+qua\s+[A-Z]\s*(?:và|,)\s*[A-Z]/u;
|
|
4698
4715
|
var CENTER_RADIUS_PAREN_G = /\(\s*([A-Z])\s*[;,]\s*(\d+(?:[.,]\d+)?)\s*\)/gu;
|
|
4699
4716
|
var SYMBOLIC_RADIUS = 3;
|
|
4700
4717
|
var CENTER_RADIUS_LETTER_PAREN_G = /\(\s*([A-Z])\s*[;,]\s*[Rr]\s*\)/gu;
|
|
4701
|
-
var CENTER_RADIUS_LETTER_WORDS_G =
|
|
4718
|
+
var CENTER_RADIUS_LETTER_WORDS_G = new RegExp(
|
|
4719
|
+
CIRCLE_KW + "\\s*(?:\\(\\s*)?(?:t\xE2m\\s+)?([^\\s;,).:]+)(?:\\s*\\))?(?:(?!\u0111\u01B0\u1EDDng|v\xE0\\s)[^A-Z])*?b\xE1n\\s*k\xEDnh\\s+[Rr](?![A-Za-z])",
|
|
4720
|
+
"gu"
|
|
4721
|
+
);
|
|
4702
4722
|
var CIRCLE_CENTER_EN = "[Cc]ircle\\s+(?:with\\s+|of\\s+)?cent(?:er|re)(?:ed)?\\s+(?:at\\s+|of\\s+)?([A-Z])(?![A-Za-z])";
|
|
4703
4723
|
var EN_GAP = "(?:(?![Cc]ircle)[^A-Z])*?";
|
|
4704
4724
|
var CIRCLE_CR_EN_G = new RegExp(
|
|
@@ -4860,21 +4880,21 @@ var circleRadiusRule = {
|
|
|
4860
4880
|
|
|
4861
4881
|
// src/stamps/geometry-2d/ai/rules/circleTriangle.ts
|
|
4862
4882
|
var HAS_INSCRIBE = /(?<!\p{L})(?:nội|ngoại)\s*tiếp(?!\p{L})/iu;
|
|
4863
|
-
var CENTER2 = "(?:\\(\\s*([
|
|
4883
|
+
var CENTER2 = "(?:\\(\\s*([^\\s;,).:]+)\\s*\\)|t\xE2m\\s+([A-Z]))?";
|
|
4864
4884
|
var CIRCUM_TRI = new RegExp(
|
|
4865
|
-
"
|
|
4885
|
+
CIRCLE_KW + "\\s*" + CENTER2 + "\\s*ngo\u1EA1i\\s*ti\u1EBFp\\s+tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])",
|
|
4866
4886
|
"giu"
|
|
4867
4887
|
);
|
|
4868
4888
|
var INCIRCLE_TRI = new RegExp(
|
|
4869
|
-
"
|
|
4889
|
+
CIRCLE_KW + "\\s*" + CENTER2 + "\\s*n\u1ED9i\\s*ti\u1EBFp\\s+tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])",
|
|
4870
4890
|
"giu"
|
|
4871
4891
|
);
|
|
4872
4892
|
var TRI_INSCRIBED_IN_CIRCLE = new RegExp(
|
|
4873
|
-
"tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])[^.]{0,40}?n\u1ED9i\\s*ti\u1EBFp\\s+(?:trong\\s+)
|
|
4893
|
+
"tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])[^.]{0,40}?n\u1ED9i\\s*ti\u1EBFp\\s+(?:trong\\s+)?" + CIRCLE_KW + "\\s*" + CENTER2,
|
|
4874
4894
|
"giu"
|
|
4875
4895
|
);
|
|
4876
4896
|
var TRI_CIRCUMSCRIBES_CIRCLE = new RegExp(
|
|
4877
|
-
"tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])[^.]{0,40}?ngo\u1EA1i\\s*ti\u1EBFp\\s
|
|
4897
|
+
"tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])[^.]{0,40}?ngo\u1EA1i\\s*ti\u1EBFp\\s+" + CIRCLE_KW + "\\s*" + CENTER2,
|
|
4878
4898
|
"giu"
|
|
4879
4899
|
);
|
|
4880
4900
|
var TRI_INSCRIBED_IN_PAREN = new RegExp(
|
|
@@ -4885,7 +4905,7 @@ var TRI_CIRCUMSCRIBES_PAREN = new RegExp(
|
|
|
4885
4905
|
"tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])[^.]{0,40}?ngo\u1EA1i\\s*ti\u1EBFp\\s+\\(\\s*([A-Z])\\s*\\)",
|
|
4886
4906
|
"giu"
|
|
4887
4907
|
);
|
|
4888
|
-
var PAREN_CENTER = "(
|
|
4908
|
+
var PAREN_CENTER = "(?:" + CIRCLE_KW + "\\s*)?\\(\\s*([A-Z])\\s*[;,]\\s*(?![^)]*[A-Z]\\s*[;,])[^()]*?\\)\\s*";
|
|
4889
4909
|
var CIRCUM_TRI_PAREN = new RegExp(
|
|
4890
4910
|
PAREN_CENTER + "ngo\u1EA1i\\s*ti\u1EBFp\\s+tam\\s*gi\xE1c\\s+([A-Z])([A-Z])([A-Z])(?![A-Z])",
|
|
4891
4911
|
"giu"
|
|
@@ -5768,7 +5788,7 @@ var ninePointRule = {
|
|
|
5768
5788
|
|
|
5769
5789
|
// src/stamps/geometry-2d/ai/rules/diameterCirclePairwise.ts
|
|
5770
5790
|
var CIRCLE_CENTER2 = /\(\s*([A-Z])\s*\)/u;
|
|
5771
|
-
var KW_DIAMETER =
|
|
5791
|
+
var KW_DIAMETER = new RegExp(DUONG_KW + "\\s*k\xEDnh", "u");
|
|
5772
5792
|
var KW_PAIRWISE = /đôi một|cắt nhau/u;
|
|
5773
5793
|
var APEX_THETA = 2;
|
|
5774
5794
|
var OTHER_THETAS = [5.5, 4, 0.6, 3.3, 1.1, 5];
|
|
@@ -5776,7 +5796,7 @@ function parse(problem) {
|
|
|
5776
5796
|
const cm = CIRCLE_CENTER2.exec(problem);
|
|
5777
5797
|
if (!cm) return void 0;
|
|
5778
5798
|
const center = cm[1];
|
|
5779
|
-
const dm =
|
|
5799
|
+
const dm = new RegExp(DUONG_KW + "\\s*k\xEDnh\\s+([^.;\n]*)", "u").exec(problem);
|
|
5780
5800
|
if (!dm) return void 0;
|
|
5781
5801
|
let region = dm[1];
|
|
5782
5802
|
const cut = region.search(/đôi một|cắt nhau/u);
|
|
@@ -5901,7 +5921,7 @@ var angleBisectorFootRule = {
|
|
|
5901
5921
|
};
|
|
5902
5922
|
|
|
5903
5923
|
// src/stamps/geometry-2d/ai/rules/intersection.ts
|
|
5904
|
-
var REF = "(
|
|
5924
|
+
var REF = "(?:" + DUONG_KW + "\\s*th\u1EB3ng\\s+|\u0111o\u1EA1n(?:\\s+th\u1EB3ng)?\\s+|tia\\s+|c\u1EA1nh\\s+)?([A-Z]\\s*[A-Z])(?![A-Z])";
|
|
5905
5925
|
var CONN = "(?:v\xE0|v\u1EDBi)";
|
|
5906
5926
|
var GIAO_DIEM = new RegExp(`giao\\s*\u0111i\u1EC3m\\s+(?:c\u1EE7a\\s+)?${REF}\\s*${CONN}\\s*${REF}`, "gu");
|
|
5907
5927
|
var CAT_TAI = new RegExp(`${REF}\\s+c\u1EAFt\\s+${REF}\\s+t\u1EA1i\\s+([A-Z])(?![A-Z])`, "gu");
|
|
@@ -5916,6 +5936,8 @@ var DISTRIB_TWO = new RegExp(
|
|
|
5916
5936
|
var NAME_BEFORE6 = /([A-Z])(?:['′]?)\s+là\s+$/u;
|
|
5917
5937
|
var PREFILTER8 = /giao\s*điểm|cắt|giao\s+nhau/u;
|
|
5918
5938
|
function makeIntent(name, ref1, ref2) {
|
|
5939
|
+
ref1 = ref1.replace(/\s+/g, "");
|
|
5940
|
+
ref2 = ref2.replace(/\s+/g, "");
|
|
5919
5941
|
const ends = [ref1[0], ref1[1], ref2[0], ref2[1]];
|
|
5920
5942
|
if (new Set(ends).size !== 4) return null;
|
|
5921
5943
|
if (ends.includes(name)) return null;
|
|
@@ -5961,15 +5983,15 @@ var intersectionRule = {
|
|
|
5961
5983
|
};
|
|
5962
5984
|
|
|
5963
5985
|
// src/stamps/geometry-2d/ai/rules/chord.ts
|
|
5964
|
-
var CIRCLE_WORDS2 =
|
|
5965
|
-
var CIRCLE_PAREN2 = /\(\s*([
|
|
5986
|
+
var CIRCLE_WORDS2 = new RegExp(CIRCLE_KW + "\\s*(?:\\(\\s*)?(?:t\xE2m\\s+)?([^\\s;,).:]+)(?![A-Z])", "u");
|
|
5987
|
+
var CIRCLE_PAREN2 = /\(\s*([^\\s;,).:]+)\s*\)/u;
|
|
5966
5988
|
var CHORD_FWD = /[Dd]ây\s+(?:cung\s+)?([A-Z])([A-Z])(?![A-Z])/gu;
|
|
5967
5989
|
var CHORD_REV = /([A-Z])([A-Z])(?![A-Z])\s+là\s+(?:một\s+)?dây(?:\s+cung)?(?!\p{L})/gu;
|
|
5968
5990
|
var THETA_A = 2.3;
|
|
5969
5991
|
var THETA_B = 0.7;
|
|
5970
5992
|
var PREFILTER9 = /[Dd]ây/u;
|
|
5971
5993
|
function findCircleClauseId(clauses, circle) {
|
|
5972
|
-
const frag = new RegExp(
|
|
5994
|
+
const frag = new RegExp(CIRCLE_KW + `|\\(\\s*${circle}\\s*\\)`, "u");
|
|
5973
5995
|
for (const c of clauses) if (frag.test(c.text)) return c.id;
|
|
5974
5996
|
return void 0;
|
|
5975
5997
|
}
|
|
@@ -6081,8 +6103,14 @@ var incircleTangencyRule = {
|
|
|
6081
6103
|
// src/stamps/geometry-2d/ai/rules/altitudeDiameterCircles.ts
|
|
6082
6104
|
var TRI6 = /tam\s*giác(?:[^A-Z.;\n]*)\s+([A-Z])([A-Z])([A-Z])(?![A-Z])/u;
|
|
6083
6105
|
var ALTITUDES = /các\s+đường\s*cao\s+([A-Z])([A-Z])\s*,\s*([A-Z])([A-Z])(?![A-Z])/u;
|
|
6084
|
-
var DIAMETER_INTERSECTION =
|
|
6085
|
-
|
|
6106
|
+
var DIAMETER_INTERSECTION = new RegExp(
|
|
6107
|
+
CIRCLE_KW + "\\s+" + DUONG_KW + "\\s*k\xEDnh\\s+([A-Z])([A-Z])\\s+v\xE0\\s+" + CIRCLE_KW + "\\s+" + DUONG_KW + "\\s*k\xEDnh\\s+([A-Z])([A-Z])[^.;\n]*?t\u1EA1i\\s+c\xE1c\\s+\u0111i\u1EC3m\\s+([A-Z])\\s*,\\s*([A-Z])(?![A-Z])",
|
|
6108
|
+
"u"
|
|
6109
|
+
);
|
|
6110
|
+
var SEGMENT_CIRCLE = new RegExp(
|
|
6111
|
+
"[\u0110\u0111]o\u1EA1n\\s+th\u1EB3ng\\s+([A-Z])([A-Z])\\s+c\u1EAFt\\s+" + CIRCLE_KW + "\\s+" + DUONG_KW + "\\s*k\xEDnh\\s+([A-Z])([A-Z])\\s+t\u1EA1i\\s+\u0111i\u1EC3m\\s+([A-Z])(?![A-Z])",
|
|
6112
|
+
"gu"
|
|
6113
|
+
);
|
|
6086
6114
|
var LINE_LINE = /[Cc]ác\s+đường\s+thẳng\s+([A-Z])([A-Z])\s+và\s+([A-Z])([A-Z])\s+cắt\s+nhau\s+tại\s+([A-Z])(?![A-Z])/u;
|
|
6087
6115
|
function opposite3(triangle, apex) {
|
|
6088
6116
|
const rest = triangle.filter((v) => v !== apex);
|
|
@@ -6092,7 +6120,7 @@ var altitudeDiameterCirclesRule = {
|
|
|
6092
6120
|
id: "altitude-diameter-circles",
|
|
6093
6121
|
priority: 67,
|
|
6094
6122
|
languages: ["vi"],
|
|
6095
|
-
patterns: [
|
|
6123
|
+
patterns: [new RegExp(DUONG_KW + "\\s*cao", "u"), new RegExp(DUONG_KW + "\\s*k\xEDnh", "u")],
|
|
6096
6124
|
match(ctx) {
|
|
6097
6125
|
const tri = TRI6.exec(ctx.problem);
|
|
6098
6126
|
const alts = ALTITUDES.exec(ctx.problem);
|
|
@@ -6163,8 +6191,11 @@ var altitudeDiameterCirclesRule = {
|
|
|
6163
6191
|
};
|
|
6164
6192
|
|
|
6165
6193
|
// src/stamps/geometry-2d/ai/rules/diameterCircleCutsSides.ts
|
|
6166
|
-
var PATTERN =
|
|
6167
|
-
|
|
6194
|
+
var PATTERN = new RegExp(
|
|
6195
|
+
CIRCLE_KW + "\\s+" + DUONG_KW + "\\s*k\xEDnh\\s+([A-Z])([A-Z])(?![A-Z])\\s+c\u1EAFt\\s+([^.;\\n]*?)\\s+(?:l\u1EA7n\\s*l\u01B0\u1EE3t\\s+)?t\u1EA1i\\s+([^.;\n]*)",
|
|
6196
|
+
"u"
|
|
6197
|
+
);
|
|
6198
|
+
var PREFILTER11 = new RegExp(DUONG_KW + "\\s*k\xEDnh", "u");
|
|
6168
6199
|
function sharedVertex(line, dia) {
|
|
6169
6200
|
const shared = [line[0], line[1]].filter((ch) => dia.includes(ch));
|
|
6170
6201
|
return shared.length === 1 ? shared[0] : void 0;
|