diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..b33ab6d --- /dev/null +++ b/App.vue @@ -0,0 +1,68 @@ + + + \ No newline at end of file diff --git a/component/LevelProgress.vue b/component/LevelProgress.vue new file mode 100644 index 0000000..f6d7249 --- /dev/null +++ b/component/LevelProgress.vue @@ -0,0 +1,128 @@ + + + \ No newline at end of file diff --git a/component/MiddlePopup.vue b/component/MiddlePopup.vue new file mode 100644 index 0000000..bd0ffa7 --- /dev/null +++ b/component/MiddlePopup.vue @@ -0,0 +1,50 @@ + + + + + \ No newline at end of file diff --git a/component/avatar.vue b/component/avatar.vue new file mode 100644 index 0000000..d20248e --- /dev/null +++ b/component/avatar.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/component/demo.json b/component/demo.json new file mode 100644 index 0000000..4be9ddc --- /dev/null +++ b/component/demo.json @@ -0,0 +1,3089 @@ +{ + "info": { + "v": 2, + "f": 200, + "w": 1504, + "h": 672, + "videoW": 1504, + "videoH": 1024, + "orien": 0, + "fps": 20, + "isVapx": 1, + "aFrame": [4, 684, 752, 336], + "rgbFrame": [0, 4, 1504, 672] + }, + "src": [{ + "srcId": "1", + "srcType": "img", + "loadType": "net", + "srcTag": "[imgUser]", + "w": 98, + "h": 98, + "fitType": "fitXY" + }, { + "srcId": "2", + "srcType": "img", + "loadType": "net", + "srcTag": "[imgAnchor]", + "w": 80, + "h": 80, + "fitType": "fitXY" + }, { + "srcId": "3", + "srcType": "txt", + "loadType": "local", + "srcTag": "[textUser]", + "color": "#FFF1AE", + "style": "b", + "w": 323, + "h": 40, + "fitType": "fitXY" + }, { + "srcId": "4", + "srcType": "txt", + "loadType": "local", + "srcTag": "[textAnchor]", + "color": "#FFF1AE", + "style": "b", + "w": 324, + "h": 41, + "fitType": "fitXY" + }], + "frame": [{ + "i": 144, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 49, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [799, 349, 95, 83], + "mFrame": [764, 734, 95, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [707, 359, 74, 67], + "mFrame": [867, 734, 74, 67], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 98, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 147, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 52, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 348, 95, 81], + "mFrame": [764, 734, 95, 81], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [709, 358, 73, 65], + "mFrame": [867, 734, 73, 65], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 101, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1097, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 150, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 55, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [802, 347, 94, 82], + "mFrame": [764, 734, 94, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [712, 359, 72, 68], + "mFrame": [866, 734, 72, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 104, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 153, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 58, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 347, 94, 82], + "mFrame": [764, 734, 94, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [715, 360, 68, 68], + "mFrame": [866, 734, 68, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 107, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 156, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 61, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 348, 87, 82], + "mFrame": [764, 734, 87, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [714, 361, 66, 69], + "mFrame": [859, 734, 66, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 110, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 159, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 64, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [798, 349, 83, 82], + "mFrame": [764, 734, 83, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [710, 362, 66, 69], + "mFrame": [855, 734, 66, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 113, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 162, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 67, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [793, 351, 83, 82], + "mFrame": [764, 734, 83, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [706, 364, 66, 69], + "mFrame": [855, 734, 66, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 116, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 165, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 70, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [786, 353, 83, 83], + "mFrame": [764, 734, 83, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [699, 367, 66, 68], + "mFrame": [855, 734, 66, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 119, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 24, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [1059, 315, 69, 64], + "mFrame": [764, 684, 69, 64], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [990, 323, 54, 54], + "mFrame": [841, 684, 54, 54], + "mt": 0 + }] + }, { + "i": 168, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 73, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [777, 356, 84, 84], + "mFrame": [764, 734, 84, 84], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [690, 369, 67, 70], + "mFrame": [856, 734, 67, 70], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 122, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 27, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [881, 338, 82, 77], + "mFrame": [764, 684, 82, 77], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [802, 349, 60, 63], + "mFrame": [854, 684, 60, 63], + "mt": 0 + }] + }, { + "i": 171, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 76, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [765, 360, 85, 84], + "mFrame": [764, 734, 85, 84], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [678, 373, 67, 70], + "mFrame": [857, 734, 67, 70], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 125, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 30, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [819, 345, 92, 80], + "mFrame": [764, 684, 92, 80], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [734, 357, 65, 67], + "mFrame": [864, 684, 65, 67], + "mt": 0 + }] + }, { + "i": 174, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 79, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [733, 382, 86, 86], + "mFrame": [764, 734, 86, 86], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [640, 394, 68, 71], + "mFrame": [858, 734, 68, 71], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 128, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 33, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [793, 349, 94, 81], + "mFrame": [764, 684, 94, 81], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [707, 361, 68, 66], + "mFrame": [866, 684, 68, 66], + "mt": 0 + }] + }, { + "i": 177, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 82, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 131, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 36, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [783, 355, 97, 82], + "mFrame": [764, 684, 97, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [695, 367, 73, 68], + "mFrame": [869, 684, 73, 68], + "mt": 0 + }] + }, { + "i": 180, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 85, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 134, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 39, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [783, 361, 96, 82], + "mFrame": [764, 733, 96, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [696, 375, 75, 66], + "mFrame": [868, 733, 75, 66], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [334, 195, 323, 40], + "mFrame": [1096, 684, 323, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [844, 323, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 183, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 195, 324, 40], + "mFrame": [1096, 684, 324, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 88, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 137, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 42, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [787, 359, 96, 82], + "mFrame": [764, 734, 96, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [699, 374, 75, 66], + "mFrame": [868, 734, 75, 66], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [435, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [739, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 186, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 195, 324, 40], + "mFrame": [1096, 684, 324, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 91, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 140, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 45, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [793, 355, 95, 82], + "mFrame": [764, 734, 95, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [703, 371, 74, 66], + "mFrame": [867, 734, 74, 66], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [523, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [646, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 189, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [585, 195, 323, 40], + "mFrame": [764, 684, 323, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [585, 324, 323, 39], + "mFrame": [1095, 684, 323, 39], + "mt": 0 + }] + }, { + "i": 94, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 143, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 48, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [798, 351, 95, 82], + "mFrame": [764, 734, 95, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [707, 361, 74, 68], + "mFrame": [867, 734, 74, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [579, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [589, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 97, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 146, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 51, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 348, 94, 82], + "mFrame": [764, 734, 94, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [708, 358, 74, 65], + "mFrame": [866, 734, 74, 65], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 100, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 149, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 54, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [802, 347, 94, 82], + "mFrame": [764, 734, 94, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [711, 359, 72, 67], + "mFrame": [866, 734, 72, 67], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 103, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 152, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 57, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 347, 94, 82], + "mFrame": [764, 734, 94, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [715, 360, 69, 67], + "mFrame": [866, 734, 69, 67], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 106, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 155, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 60, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 348, 90, 82], + "mFrame": [764, 734, 90, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [715, 361, 66, 68], + "mFrame": [862, 734, 66, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 109, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 158, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 63, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [799, 349, 84, 82], + "mFrame": [764, 734, 84, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [712, 362, 65, 68], + "mFrame": [856, 734, 65, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 112, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 161, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 66, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [795, 350, 83, 83], + "mFrame": [764, 734, 83, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [708, 364, 65, 68], + "mFrame": [855, 734, 65, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 115, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 164, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 69, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [788, 352, 83, 83], + "mFrame": [764, 734, 83, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [701, 366, 67, 69], + "mFrame": [855, 734, 67, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 118, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 23, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [1253, 288, 62, 54], + "mFrame": [764, 684, 62, 54], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [1188, 296, 49, 46], + "mFrame": [834, 684, 49, 46], + "mt": 0 + }] + }, { + "i": 167, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 72, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [780, 355, 84, 83], + "mFrame": [764, 734, 84, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [693, 369, 66, 68], + "mFrame": [856, 734, 66, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 121, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 26, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [912, 335, 77, 74], + "mFrame": [764, 684, 77, 74], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [835, 344, 60, 62], + "mFrame": [849, 684, 60, 62], + "mt": 0 + }] + }, { + "i": 170, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 75, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [769, 359, 84, 84], + "mFrame": [764, 734, 84, 84], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [682, 372, 67, 69], + "mFrame": [856, 734, 67, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 124, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 29, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [836, 342, 89, 80], + "mFrame": [764, 684, 89, 80], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [752, 355, 63, 66], + "mFrame": [861, 684, 63, 66], + "mt": 0 + }] + }, { + "i": 173, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 78, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [757, 365, 84, 82], + "mFrame": [764, 734, 84, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [669, 377, 66, 68], + "mFrame": [856, 734, 66, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 127, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 32, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [799, 348, 94, 80], + "mFrame": [764, 684, 94, 80], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [713, 360, 67, 67], + "mFrame": [866, 684, 67, 67], + "mt": 0 + }] + }, { + "i": 176, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 81, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [514, 536, 121, 124], + "mFrame": [764, 684, 121, 124], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [380, 542, 92, 99], + "mFrame": [764, 816, 92, 99], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [893, 734, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [893, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 130, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 35, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [786, 351, 96, 84], + "mFrame": [764, 684, 96, 84], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [698, 364, 71, 69], + "mFrame": [868, 684, 71, 69], + "mt": 0 + }] + }, { + "i": 179, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 84, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 133, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 38, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [782, 361, 97, 82], + "mFrame": [764, 684, 97, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [694, 374, 76, 66], + "mFrame": [869, 684, 76, 66], + "mt": 0 + }] + }, { + "i": 182, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 87, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 136, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 41, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [785, 361, 96, 81], + "mFrame": [764, 734, 96, 81], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [698, 375, 75, 65], + "mFrame": [868, 734, 75, 65], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [402, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [773, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 185, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 195, 324, 40], + "mFrame": [1096, 684, 324, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 90, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 139, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 44, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [791, 356, 95, 82], + "mFrame": [764, 734, 95, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [702, 372, 74, 66], + "mFrame": [867, 734, 74, 66], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [496, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [674, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 188, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 195, 324, 40], + "mFrame": [764, 684, 324, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 40], + "mFrame": [1096, 684, 324, 40], + "mt": 0 + }] + }, { + "i": 93, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 142, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 47, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [796, 351, 95, 83], + "mFrame": [764, 734, 95, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [706, 365, 74, 67], + "mFrame": [867, 734, 74, 67], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [567, 194, 323, 41], + "mFrame": [1096, 684, 323, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [603, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 96, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 145, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 50, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [800, 349, 95, 81], + "mFrame": [764, 734, 95, 81], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [708, 358, 73, 65], + "mFrame": [867, 734, 73, 65], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 99, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 148, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 53, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [802, 347, 94, 82], + "mFrame": [764, 734, 94, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [710, 359, 73, 66], + "mFrame": [866, 734, 73, 66], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 102, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 151, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 56, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 347, 95, 82], + "mFrame": [764, 734, 95, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [713, 360, 71, 67], + "mFrame": [867, 734, 71, 67], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 105, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 154, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 59, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [801, 348, 92, 81], + "mFrame": [764, 734, 92, 81], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [715, 361, 67, 68], + "mFrame": [864, 734, 67, 68], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 108, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 157, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 62, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [800, 348, 85, 82], + "mFrame": [764, 734, 85, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [713, 361, 66, 69], + "mFrame": [857, 734, 66, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 111, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 160, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 65, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [796, 349, 83, 83], + "mFrame": [764, 734, 83, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [709, 363, 66, 69], + "mFrame": [855, 734, 66, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 114, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 163, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 68, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [791, 351, 83, 83], + "mFrame": [764, 734, 83, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [704, 365, 66, 69], + "mFrame": [855, 734, 66, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 117, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 22, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [1444, 261, 54, 43], + "mFrame": [764, 684, 54, 43], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [1386, 268, 44, 38], + "mFrame": [826, 684, 44, 38], + "mt": 0 + }] + }, { + "i": 166, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 71, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [783, 354, 84, 83], + "mFrame": [764, 734, 84, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [696, 367, 66, 69], + "mFrame": [856, 734, 66, 69], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 120, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 25, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [947, 331, 73, 71], + "mFrame": [764, 684, 73, 71], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [874, 339, 57, 59], + "mFrame": [845, 684, 57, 59], + "mt": 0 + }] + }, { + "i": 169, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 74, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [773, 357, 85, 84], + "mFrame": [764, 734, 85, 84], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [686, 370, 67, 70], + "mFrame": [857, 734, 67, 70], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 123, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 28, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [857, 340, 85, 79], + "mFrame": [764, 684, 85, 79], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [774, 352, 62, 65], + "mFrame": [857, 684, 62, 65], + "mt": 0 + }] + }, { + "i": 172, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 77, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [761, 361, 85, 84], + "mFrame": [764, 734, 85, 84], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [673, 375, 67, 70], + "mFrame": [857, 734, 67, 70], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 126, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 31, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [807, 346, 93, 81], + "mFrame": [764, 684, 93, 81], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [721, 359, 66, 66], + "mFrame": [865, 684, 66, 66], + "mt": 0 + }] + }, { + "i": 175, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 80, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [663, 431, 97, 98], + "mFrame": [764, 734, 97, 98], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [557, 441, 75, 80], + "mFrame": [869, 734, 75, 80], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 129, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 34, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [789, 350, 95, 82], + "mFrame": [764, 684, 95, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [703, 362, 69, 68], + "mFrame": [867, 684, 69, 68], + "mt": 0 + }] + }, { + "i": 178, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 83, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1097, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [583, 323, 325, 42], + "mFrame": [764, 684, 325, 42], + "mt": 0 + }] + }, { + "i": 132, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 37, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [783, 357, 96, 84], + "mFrame": [764, 684, 96, 84], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [694, 370, 75, 68], + "mFrame": [868, 684, 75, 68], + "mt": 0 + }] + }, { + "i": 181, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 86, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 135, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 40, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [783, 361, 97, 82], + "mFrame": [764, 734, 97, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [697, 375, 75, 66], + "mFrame": [869, 734, 75, 66], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [367, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [809, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 184, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 195, 324, 40], + "mFrame": [1096, 684, 324, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 89, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 138, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 43, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [789, 357, 96, 83], + "mFrame": [764, 734, 96, 83], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [700, 373, 75, 66], + "mFrame": [868, 734, 75, 66], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [467, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [706, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 187, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 195, 324, 40], + "mFrame": [1096, 684, 324, 40], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 41], + "mFrame": [764, 684, 324, 41], + "mt": 0 + }] + }, { + "i": 92, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 141, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [583, 194, 325, 41], + "mFrame": [1096, 684, 325, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 46, + "obj": [{ + "srcId": "1", + "z": 0, + "frame": [794, 353, 95, 82], + "mFrame": [764, 734, 95, 82], + "mt": 0 + }, { + "srcId": "2", + "z": 1, + "frame": [705, 368, 74, 67], + "mFrame": [867, 734, 74, 67], + "mt": 0 + }, { + "srcId": "3", + "z": 2, + "frame": [547, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [622, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }, { + "i": 95, + "obj": [{ + "srcId": "3", + "z": 2, + "frame": [584, 194, 324, 41], + "mFrame": [1096, 684, 324, 41], + "mt": 0 + }, { + "srcId": "4", + "z": 3, + "frame": [584, 323, 324, 42], + "mFrame": [764, 684, 324, 42], + "mt": 0 + }] + }] +} \ No newline at end of file diff --git a/component/headerHeight.vue b/component/headerHeight.vue new file mode 100644 index 0000000..7c25572 --- /dev/null +++ b/component/headerHeight.vue @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/component/nav.vue b/component/nav.vue new file mode 100644 index 0000000..e1b0354 --- /dev/null +++ b/component/nav.vue @@ -0,0 +1,63 @@ + + + + + \ No newline at end of file diff --git a/component/newTable.vue b/component/newTable.vue new file mode 100644 index 0000000..ec549e5 --- /dev/null +++ b/component/newTable.vue @@ -0,0 +1,217 @@ + + + + + \ No newline at end of file diff --git a/component/swiper.vue b/component/swiper.vue new file mode 100644 index 0000000..9fba8d1 --- /dev/null +++ b/component/swiper.vue @@ -0,0 +1,178 @@ + + + + + \ No newline at end of file diff --git a/component/tab.vue b/component/tab.vue new file mode 100644 index 0000000..49dc796 --- /dev/null +++ b/component/tab.vue @@ -0,0 +1,187 @@ + + + + + \ No newline at end of file diff --git a/component/table.vue b/component/table.vue new file mode 100644 index 0000000..0a3108a --- /dev/null +++ b/component/table.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/component/uploadImage.vue b/component/uploadImage.vue new file mode 100644 index 0000000..4a94396 --- /dev/null +++ b/component/uploadImage.vue @@ -0,0 +1,109 @@ + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..97fd51c --- /dev/null +++ b/index.html @@ -0,0 +1,28 @@ + + + + + + + + + + +
+ + + + + + + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..af68a47 --- /dev/null +++ b/main.js @@ -0,0 +1,27 @@ + +// #ifndef VUE3 +import Vue from 'vue' +import App from './App' +import config from '@/until/config.js' +Vue.config.productionTip = false + +App.mpType = 'app' +Vue.prototype.$config = config; +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { createSSRApp } from 'vue' +import config from '@/until/config.js' +import App from './App.vue' +export function createApp() { + const app = createSSRApp(App) + app.config.globalProperties.$config = config + return { + app + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..b8efbd1 --- /dev/null +++ b/manifest.json @@ -0,0 +1,93 @@ +{ + "name" : "Vespa", + "appid" : "__UNI__A4B5AED", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + "app-plus" : { + "background" : "transparent", // 关键配置 + "backgroundColor" : "#00000000", + "webview" : { + "transparent" : "always" // 确保 Webview 透明 + }, + "packOptions" : { + "ignore" : [ + { + "type" : "folder", + "value" : "node_modules" + } + ] + }, + /* 5+App特有相关 */ + "usingComponents" : true, + "nvueCompiler" : "uni-app", + "nvueStyleCompiler" : "uni-app", + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "modules" : {}, + /* 模块配置 */ + "distribute" : { + /* 应用发布信息 */ + "android" : { + /* android打包配置 */ + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : {}, + /* ios打包配置 */ + "sdkConfigs" : {} + } + }, + /* SDK配置 */ + "quickapp" : {}, + /* 快应用特有相关 */ + "mp-weixin" : { + /* 小程序特有相关 */ + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "h5" : { + "devServer" : { + "port" : 8080, //浏览器运行端口 + "disableHostCheck" : true, //设置跳过host检查 + "proxy" : { + "/api" : { + "target" : "https://my.qixing2.top", //目标接口域名 + "changeOrigin" : true, //是否跨域 + "secure" : false, // 设置支持https协议的代理 + "pathRewrite" : { + "^/api" : "" + } + } + } + }, + "router" : { + "base" : "/web" + } + }, + "vueVersion" : "3" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5279ac0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,657 @@ +{ + "name": "fanyin-h5", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "axios": "^1.9.0", + "video-animation-player": "^1.0.5", + "vue-i18n": "^11.1.5" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.4", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.4.tgz", + "integrity": "sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.3", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@intlify/core-base": { + "version": "11.1.5", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.1.5.tgz", + "integrity": "sha512-xGRkISwV/2Trqb8yVQevlHm5roaQqy+75qwUzEQrviaQF0o4c5VDhjBW7WEGEoKFx09HSgq7NkvK/DAyuerTDg==", + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "11.1.5", + "@intlify/shared": "11.1.5" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "11.1.5", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.1.5.tgz", + "integrity": "sha512-YLSBbjD7qUdShe3ZAat9Hnf9E8FRpN6qmNFD/x5Xg5JVXjsks0kJ90Zj6aAuyoppJQA/YJdWZ8/bB7k3dg2TjQ==", + "license": "MIT", + "dependencies": { + "@intlify/shared": "11.1.5", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/shared": { + "version": "11.1.5", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-11.1.5.tgz", + "integrity": "sha512-+I4vRzHm38VjLr/CAciEPJhGYFzWWW4HMTm+6H3WqknXLh0ozNX9oC8ogMUwTSXYR/wGUb1/lTpNziiCH5MybQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.16.tgz", + "integrity": "sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.27.2", + "@vue/shared": "3.5.16", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz", + "integrity": "sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-core": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz", + "integrity": "sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.27.2", + "@vue/compiler-core": "3.5.16", + "@vue/compiler-dom": "3.5.16", + "@vue/compiler-ssr": "3.5.16", + "@vue/shared": "3.5.16", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.3", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz", + "integrity": "sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.16.tgz", + "integrity": "sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.16.tgz", + "integrity": "sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz", + "integrity": "sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.16", + "@vue/runtime-core": "3.5.16", + "@vue/shared": "3.5.16", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.16.tgz", + "integrity": "sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-ssr": "3.5.16", + "@vue/shared": "3.5.16" + }, + "peerDependencies": { + "vue": "3.5.16" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.16.tgz", + "integrity": "sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==", + "license": "MIT", + "peer": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT", + "peer": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT", + "peer": true + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC", + "peer": true + }, + "node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/video-animation-player": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/video-animation-player/-/video-animation-player-1.0.5.tgz", + "integrity": "sha512-KLz+uL6zojOYXEPFxL2AB0iKSLHnmKQPBnXmFWHpGtAdB6/j9EWCbWcUDCg0KVOBTFRHa2UfiSNK0y1I+LEfpA==", + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.16.tgz", + "integrity": "sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.16", + "@vue/compiler-sfc": "3.5.16", + "@vue/runtime-dom": "3.5.16", + "@vue/server-renderer": "3.5.16", + "@vue/shared": "3.5.16" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-i18n": { + "version": "11.1.5", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-11.1.5.tgz", + "integrity": "sha512-XCwuaEA5AF97g1frvH/EI1zI9uo1XKTf2/OCFgts7NvUWRsjlgeHPrkJV+a3gpzai2pC4quZ4AnOHFO8QK9hsg==", + "license": "MIT", + "dependencies": { + "@intlify/core-base": "11.1.5", + "@intlify/shared": "11.1.5", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0907b21 --- /dev/null +++ b/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "axios": "^1.9.0", + "video-animation-player": "^1.0.5", + "vue-i18n": "^11.1.5" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..f01a1d0 --- /dev/null +++ b/pages.json @@ -0,0 +1,202 @@ +{ + "pages": [{ + "path": "pages/union/index", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "公会中心" + } + }, + { + "path": "pages/union/detail", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "公会详情", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/union/roomAndflow", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "公会房间及流水", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/union/unionMembers", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "公会成员", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/union/exitApplication", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "退出审核", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/union/subsidy", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "公会补贴", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/union/historyRecord", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "公会补贴历史记录", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/union/setGroup", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "群聊设置" + } + }, + { + "path": "pages/union/memberList", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "群聊成员" + } + }, + { + "path": "pages/other/taskDesc", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "规则说明", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + + } + }, + { + "path": "pages/prop/propMall", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "道具商城" + } + }, + { + "path": "pages/other/grade", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "等级" + } + }, + { + "path": "pages/other/gradeRule", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "等级规则", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/other/income", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "邀请收益" + } + }, { + "path": "pages/feedback/help", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "帮助与反馈", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/feedback/customerService", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "在线客服", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/feedback/feedback", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "反馈问题", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/feedback/teenage", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "青少年" + } + }, + { + "path": "pages/feedback/teenageDetail", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "青少年详情", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/feedback/problemDetail", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "问题详情", + "app-plus": { + "popGesture": "none" // 禁用 iOS 左滑返回 + } + } + }, + { + "path": "pages/feedback/report", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "举报" + } + }, + { + "path": "pages/other/aboutUs", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "关于我们" + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "transparent" + } +} \ No newline at end of file diff --git a/pages/feedback/customerService.vue b/pages/feedback/customerService.vue new file mode 100644 index 0000000..3eda853 --- /dev/null +++ b/pages/feedback/customerService.vue @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/pages/feedback/feedback.vue b/pages/feedback/feedback.vue new file mode 100644 index 0000000..0585cb5 --- /dev/null +++ b/pages/feedback/feedback.vue @@ -0,0 +1,388 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/ani.css b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/ani.css new file mode 100644 index 0000000..56ad651 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/ani.css @@ -0,0 +1,7 @@ +.keywordBoradAni { + transition-duration: 0.1s; + transition-timing-function: ease-in; + transition-delay: 0ms; + transition-property: transform; + transform: scale(0.95); +} diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/card.ts b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/card.ts new file mode 100644 index 0000000..4c83f62 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/card.ts @@ -0,0 +1,117 @@ +export function validateIdCard(idCard: string) { + var vcity = { + 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", + 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", + 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", + 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", + 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", + 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" + }; + //是否为空 + if (idCard === '') { + return false; + } + //校验长度,类型 + if (isCardNo(idCard) === false) { + return false; + } + //检查省份 + if (checkProvince(idCard, vcity) === false) { + return false; + } + //校验生日 + if (checkBirthday(idCard) === false) { + return false; + } + //检验位的检测 + if (checkParity(idCard) === false) { + return false; + } + return true; +} +function isCardNo(card) { + //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X + var reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/; + if (reg.test(card) === false) { + return false; + } + return true; +} +function checkProvince(card, vcity) { + var province = card.substr(0, 2); + if (vcity[province] == undefined) { + return false; + } + return true; +}; +function checkBirthday(card) { + var len = card.length; + //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 + if (len == '15') { + var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/; + var arr_data = card.match(re_fifteen); + var year = arr_data[2]; + var month = arr_data[3]; + var day = arr_data[4]; + var birthday = new Date('19' + year + '/' + month + '/' + day); + return verifyBirthday('19' + year, month, day, birthday); + } + //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X + if (len == '18') { + var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X|x)$/; + var arr_data = card.match(re_eighteen); + var year = arr_data[2]; + var month = arr_data[3]; + var day = arr_data[4]; + var birthday = new Date(year + '/' + month + '/' + day); + return verifyBirthday(year, month, day, birthday); + } + return false; +}; +function verifyBirthday(year, month, day, birthday) { + var now = new Date(); + var now_year = now.getFullYear(); + //年月日是否合理 + if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) { + //判断年份的范围(0岁到100岁之间) + var time = now_year - year; + if (time >= 0 && time <= 100) { + return true; + } + return false; + } + return false; +} +function checkParity(card) { + //15位转18位 + card = changeFivteenToEighteen(card); + var len = card.length; + if (len == '18') { + var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); + var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); + var cardTemp = 0, i, valnum; + for (i = 0; i < 17; i++) { + cardTemp += card.substr(i, 1) * arrInt[i]; + } + valnum = arrCh[cardTemp % 11]; + if (valnum == card.substr(17, 1).toLocaleUpperCase()) { + return true; + } + return false; + } + return false; +} +function changeFivteenToEighteen(card) { + if (card.length == '15') { + var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); + var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); + var cardTemp = 0, i; + card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6); + for (i = 0; i < 17; i++) { + cardTemp += card.substr(i, 1) * arrInt[i]; + } + card += arrCh[cardTemp % 11]; + return card; + } + return card; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-car.vue b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-car.vue new file mode 100644 index 0000000..18c319a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-car.vue @@ -0,0 +1,290 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-card.vue b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-card.vue new file mode 100644 index 0000000..12d03d0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-card.vue @@ -0,0 +1,160 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-number.vue b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-number.vue new file mode 100644 index 0000000..de55dc0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-number.vue @@ -0,0 +1,225 @@ + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-pass.vue b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-pass.vue new file mode 100644 index 0000000..d918b05 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/keyboard-pass.vue @@ -0,0 +1,254 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/props.ts b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/props.ts new file mode 100644 index 0000000..21e0f31 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/props.ts @@ -0,0 +1,46 @@ +export const propsCutom = { + followTheme: { + type: [Boolean, String], + default: true + }, + /** 是否随机键盘 */ + random: { + type: Boolean, + default: false + }, + dark: { + type: Boolean, + default: false + }, + modelValue: { + type: String, + default: '' + }, + color: { + type: String, + default: "primary" + }, + //是否需要显示小数点。 + decimal: { + type: Boolean, + default: false + }, + // 是否显示输入内容在键盘顶部。 + showInputContent: { + type: Boolean, + default: false + }, + /** 最大长度 */ + maxLength: { + type: Number, + default: 0 + }, + round: { + type: Number, + default: 2 + }, + title:{ + type:String, + default:'安全键盘放心输入' + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/tm-keyboard.vue b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/tm-keyboard.vue new file mode 100644 index 0000000..021cec6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-keyboard/tm-keyboard.vue @@ -0,0 +1,244 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-message/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-message/interface.ts new file mode 100644 index 0000000..a4d8250 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-message/interface.ts @@ -0,0 +1,10 @@ +export type modelType = "load" | "error" | "info" | "warn" | "quest" | "success" | "disabled" | "wait" +export interface config { + duration?: number, //显示的时长 + icon?: string, //显示的图标 + text?: string, //显示的文本 + color?: string, //显示的主题 + dark?: boolean, //是否暗黑 + model?: modelType,//模式见上方modelType + mask?: boolean //是否显示黑色遮罩。 +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-message/tm-message.vue b/uni_modules/UniDevTools/src/tmui/components/tm-message/tm-message.vue new file mode 100644 index 0000000..1b5e732 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-message/tm-message.vue @@ -0,0 +1,337 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-modal/tm-modal.vue b/uni_modules/UniDevTools/src/tmui/components/tm-modal/tm-modal.vue new file mode 100644 index 0000000..60a47d1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-modal/tm-modal.vue @@ -0,0 +1,549 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-more/tm-more.vue b/uni_modules/UniDevTools/src/tmui/components/tm-more/tm-more.vue new file mode 100644 index 0000000..139b0f7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-more/tm-more.vue @@ -0,0 +1,172 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-navbar/tm-navbar.vue b/uni_modules/UniDevTools/src/tmui/components/tm-navbar/tm-navbar.vue new file mode 100644 index 0000000..c29ab8d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-navbar/tm-navbar.vue @@ -0,0 +1,284 @@ + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-notification/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-notification/interface.ts new file mode 100644 index 0000000..c452d7c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-notification/interface.ts @@ -0,0 +1,6 @@ +export interface showOpts { + label?: string, + icon?: string, + duration?: number, + color?: string +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-notification/tm-notification.vue b/uni_modules/UniDevTools/src/tmui/components/tm-notification/tm-notification.vue new file mode 100644 index 0000000..1fca780 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-notification/tm-notification.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-overlay/tm-overlay.vue b/uni_modules/UniDevTools/src/tmui/components/tm-overlay/tm-overlay.vue new file mode 100644 index 0000000..070e9fe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-overlay/tm-overlay.vue @@ -0,0 +1,366 @@ + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-pag/pag.esm.js b/uni_modules/UniDevTools/src/tmui/components/tm-pag/pag.esm.js new file mode 100644 index 0000000..02eccf9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-pag/pag.esm.js @@ -0,0 +1,3975 @@ +///////////////////////////////////////////////////////////////////////////////////////////////// +// +// Tencent is pleased to support the open source community by making libpag available. +// +// Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file +// except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// unless required by applicable law or agreed to in writing, software distributed under the +// license is distributed on an "as is" basis, without warranties or conditions of any kind, +// either express or implied. see the license for the specific language governing permissions +// and limitations under the license. +// +///////////////////////////////////////////////////////////////////////////////////////////////// + +let getTime; +try { + getTime = performance.now.bind(performance); +} catch (e) { + getTime = Date.now; +} +class Clock { + constructor() { + this.startTime = getTime(); + this.markers = {}; + } + reset() { + this.startTime = getTime(); + this.markers = {}; + } + mark(key) { + if (!key) { + console.log("Clock.mark(): An empty marker name was specified!"); + return; + } + if (Object.keys(this.markers).find((markerKey) => markerKey === key)) { + console.log(`Clock.mark(): The specified marker name '${key}' already exists!`); + return; + } + this.markers[key] = getTime(); + } + measure(makerFrom, makerTo) { + let start; + let end; + if (!makerFrom) { + start = this.startTime; + } else { + if (!Object.keys(this.markers).find((markerKey) => markerKey === makerFrom)) { + console.log(`Clock.measure(): The specified makerFrom '${makerFrom}' does not exist!`); + return 0; + } + start = this.markers[makerFrom]; + } + if (!makerTo) { + end = getTime(); + } else { + if (!Object.keys(this.markers).find((markerKey) => markerKey === makerTo)) { + console.log(`Clock.measure(): The specified makerTo '${makerTo}' does not exist!`); + return 0; + } + end = this.markers[makerTo]; + } + return end - start; + } +} + +var CompositionType = /* @__PURE__ */ ((CompositionType2) => { + CompositionType2[CompositionType2["Unknown"] = 0] = "Unknown"; + CompositionType2[CompositionType2["Vector"] = 1] = "Vector"; + CompositionType2[CompositionType2["Bitmap"] = 2] = "Bitmap"; + CompositionType2[CompositionType2["Video"] = 3] = "Video"; + return CompositionType2; +})(CompositionType || {}); +var TagCode = /* @__PURE__ */ ((TagCode2) => { + TagCode2[TagCode2["End"] = 0] = "End"; + TagCode2[TagCode2["FontTables"] = 1] = "FontTables"; + TagCode2[TagCode2["VectorCompositionBlock"] = 2] = "VectorCompositionBlock"; + TagCode2[TagCode2["CompositionAttributes"] = 3] = "CompositionAttributes"; + TagCode2[TagCode2["ImageTables"] = 4] = "ImageTables"; + TagCode2[TagCode2["LayerBlock"] = 5] = "LayerBlock"; + TagCode2[TagCode2["LayerAttributes"] = 6] = "LayerAttributes"; + TagCode2[TagCode2["SolidColor"] = 7] = "SolidColor"; + TagCode2[TagCode2["TextSource"] = 8] = "TextSource"; + TagCode2[TagCode2["TextPathOption"] = 9] = "TextPathOption"; + TagCode2[TagCode2["TextMoreOption"] = 10] = "TextMoreOption"; + TagCode2[TagCode2["ImageReference"] = 11] = "ImageReference"; + TagCode2[TagCode2["CompositionReference"] = 12] = "CompositionReference"; + TagCode2[TagCode2["Transform2D"] = 13] = "Transform2D"; + TagCode2[TagCode2["MaskBlock"] = 14] = "MaskBlock"; + TagCode2[TagCode2["ShapeGroup"] = 15] = "ShapeGroup"; + TagCode2[TagCode2["Rectangle"] = 16] = "Rectangle"; + TagCode2[TagCode2["Ellipse"] = 17] = "Ellipse"; + TagCode2[TagCode2["PolyStar"] = 18] = "PolyStar"; + TagCode2[TagCode2["ShapePath"] = 19] = "ShapePath"; + TagCode2[TagCode2["Fill"] = 20] = "Fill"; + TagCode2[TagCode2["Stroke"] = 21] = "Stroke"; + TagCode2[TagCode2["GradientFill"] = 22] = "GradientFill"; + TagCode2[TagCode2["GradientStroke"] = 23] = "GradientStroke"; + TagCode2[TagCode2["MergePaths"] = 24] = "MergePaths"; + TagCode2[TagCode2["TrimPaths"] = 25] = "TrimPaths"; + TagCode2[TagCode2["Repeater"] = 26] = "Repeater"; + TagCode2[TagCode2["RoundCorners"] = 27] = "RoundCorners"; + TagCode2[TagCode2["Performance"] = 28] = "Performance"; + TagCode2[TagCode2["DropShadowStyle"] = 29] = "DropShadowStyle"; + TagCode2[TagCode2["InnerShadowStyle"] = 30] = "InnerShadowStyle"; + TagCode2[TagCode2["OuterGlowStyle"] = 31] = "OuterGlowStyle"; + TagCode2[TagCode2["InnerGlowStyle"] = 32] = "InnerGlowStyle"; + TagCode2[TagCode2["BevelAndEmbossStyle"] = 33] = "BevelAndEmbossStyle"; + TagCode2[TagCode2["SatinStyle"] = 34] = "SatinStyle"; + TagCode2[TagCode2["ColorOverlayStyle"] = 35] = "ColorOverlayStyle"; + TagCode2[TagCode2["GradientOverlayStyle"] = 36] = "GradientOverlayStyle"; + TagCode2[TagCode2["StrokeStyle"] = 37] = "StrokeStyle"; + TagCode2[TagCode2["TintEffect"] = 38] = "TintEffect"; + TagCode2[TagCode2["FillEffect"] = 39] = "FillEffect"; + TagCode2[TagCode2["StrokeEffect"] = 40] = "StrokeEffect"; + TagCode2[TagCode2["TritoneEffect"] = 41] = "TritoneEffect"; + TagCode2[TagCode2["DropShadowEffect"] = 42] = "DropShadowEffect"; + TagCode2[TagCode2["RadialWipeEffect"] = 43] = "RadialWipeEffect"; + TagCode2[TagCode2["DisplacementMapEffect"] = 44] = "DisplacementMapEffect"; + TagCode2[TagCode2["BitmapCompositionBlock"] = 45] = "BitmapCompositionBlock"; + TagCode2[TagCode2["BitmapSequence"] = 46] = "BitmapSequence"; + TagCode2[TagCode2["ImageBytes"] = 47] = "ImageBytes"; + TagCode2[TagCode2["ImageBytes2"] = 48] = "ImageBytes2"; + TagCode2[TagCode2["ImageBytes3"] = 49] = "ImageBytes3"; + TagCode2[TagCode2["VideoCompositionBlock"] = 50] = "VideoCompositionBlock"; + TagCode2[TagCode2["VideoSequence"] = 51] = "VideoSequence"; + TagCode2[TagCode2["LayerAttributesV2"] = 52] = "LayerAttributesV2"; + TagCode2[TagCode2["Count"] = 53] = "Count"; + return TagCode2; +})(TagCode || {}); + +const readTagHeader = (byteBuffer) => { + const codeAndLength = byteBuffer.readUint16(); + let length = (codeAndLength & 63) >>> 0; + const code = codeAndLength >> 6; + if (length === 63) { + length = byteBuffer.readUint32(); + } + if (byteBuffer.context.tagLevel < code) { + byteBuffer.context.tagLevel = code; + } + return { code, length }; +}; +function readTags(byteArray, parameter, reader) { + let header = readTagHeader(byteArray); + while (header.code !== TagCode.End) { + const tagBytes = byteArray.readBytes(header.length); + reader(tagBytes, header.code, parameter); + if (byteArray.context.tagLevel < tagBytes.context.tagLevel) { + byteArray.context.tagLevel = tagBytes.context.tagLevel; + } + header = readTagHeader(byteArray); + } +} + +const ZERO_ID = 0; +const ZERO_TIME = 0; +const OPAQUE = 255; +const WEBGL_CONTEXT_ATTRIBUTES = { + alpha: true, + depth: false, + stencil: false, + antialias: false +}; +var BlendMode = /* @__PURE__ */ ((BlendMode2) => { + BlendMode2[BlendMode2["Normal"] = 0] = "Normal"; + BlendMode2[BlendMode2["Multiply"] = 1] = "Multiply"; + BlendMode2[BlendMode2["Screen"] = 2] = "Screen"; + BlendMode2[BlendMode2["Overlay"] = 3] = "Overlay"; + BlendMode2[BlendMode2["Darken"] = 4] = "Darken"; + BlendMode2[BlendMode2["Lighten"] = 5] = "Lighten"; + BlendMode2[BlendMode2["ColorDodge"] = 6] = "ColorDodge"; + BlendMode2[BlendMode2["ColorBurn"] = 7] = "ColorBurn"; + BlendMode2[BlendMode2["HardLight"] = 8] = "HardLight"; + BlendMode2[BlendMode2["SoftLight"] = 9] = "SoftLight"; + BlendMode2[BlendMode2["Difference"] = 10] = "Difference"; + BlendMode2[BlendMode2["Exclusion"] = 11] = "Exclusion"; + BlendMode2[BlendMode2["Hue"] = 12] = "Hue"; + BlendMode2[BlendMode2["Saturation"] = 13] = "Saturation"; + BlendMode2[BlendMode2["Color"] = 14] = "Color"; + BlendMode2[BlendMode2["Luminosity"] = 15] = "Luminosity"; + BlendMode2[BlendMode2["DestinationIn"] = 21] = "DestinationIn"; + BlendMode2[BlendMode2["DestinationOut"] = 22] = "DestinationOut"; + BlendMode2[BlendMode2["DestinationATop"] = 23] = "DestinationATop"; + BlendMode2[BlendMode2["SourceIn"] = 24] = "SourceIn"; + BlendMode2[BlendMode2["SourceOut"] = 25] = "SourceOut"; + BlendMode2[BlendMode2["Xor"] = 26] = "Xor"; + return BlendMode2; +})(BlendMode || {}); +var KeyframeInterpolationType = /* @__PURE__ */ ((KeyframeInterpolationType2) => { + KeyframeInterpolationType2[KeyframeInterpolationType2["None"] = 0] = "None"; + KeyframeInterpolationType2[KeyframeInterpolationType2["Linear"] = 1] = "Linear"; + KeyframeInterpolationType2[KeyframeInterpolationType2["Bezier"] = 2] = "Bezier"; + KeyframeInterpolationType2[KeyframeInterpolationType2["Hold"] = 3] = "Hold"; + return KeyframeInterpolationType2; +})(KeyframeInterpolationType || {}); +const IS_IOS = navigator && /(ios|ipad|iphone)/.test(navigator.userAgent.toLowerCase()); + +const Black = { red: 0, green: 0, blue: 0 }; +const White = { red: 255, green: 255, blue: 255 }; + +const verifyFailed = () => { + console.error("PAG Verify Failed!"); +}; +const verifyAndReturn = (expression) => { + if (expression) { + return true; + } + console.error("PAG Verify Failed!"); + return false; +}; + +const _Composition = class { + constructor() { + this.id = ZERO_ID; + this.width = 0; + this.height = 0; + this.duration = ZERO_TIME; + this.frameRate = 30; + this.backgroundColor = White; + this.cacheID = 0; + this.cacheID = _Composition.cacheIDCount; + _Composition.cacheIDCount += 1; + } + type() { + return CompositionType.Unknown; + } + getStaticTimeRanges() { + return []; + } + verify() { + return verifyAndReturn(this.width > 0 && this.height > 0 && this.duration > 0 && this.frameRate > 0); + } +}; +let Composition = _Composition; +Composition.cacheIDCount = 1; + +class VideoComposition extends Composition { + constructor() { + super(...arguments); + this.hasAlpha = false; + this.sequences = []; + this.staticTimeRanges = []; + this.staticTimeRangeUpdated = false; + } + type() { + return CompositionType.Video; + } + getStaticTimeRanges() { + if (!this.staticTimeRangeUpdated) { + this.staticTimeRangeUpdated = true; + this.updateStaticTimeRanges(); + } + return this.staticTimeRanges; + } + updateStaticTimeRanges() { + if (this.duration <= 1) + return; + if (this.sequences.length > 0) { + let sequence = this.sequences[0]; + for (let i = 1; i < this.sequences.length; i++) { + const item = this.sequences[i]; + if (item.frameRate > sequence.frameRate) + sequence = item; + } + const timeScale = this.frameRate / sequence.frameRate; + for (const timeRange of sequence.staticTimeRanges) { + timeRange.start = Math.round(timeRange.start * timeScale); + timeRange.end = Math.round(timeRange.end * timeScale); + this.staticTimeRanges.push(timeRange); + } + } else { + const range = { start: 0, end: this.duration - 1 }; + this.staticTimeRanges.push(range); + } + } + hasImageContent() { + return true; + } + verify() { + if (!super.verify() || this.sequences.length <= 0) { + verifyFailed(); + return false; + } + for (const sequence of this.sequences) { + if (!sequence || !sequence.verify()) { + verifyFailed(); + return false; + } + } + return true; + } +} + +class Ratio { + constructor(numerator, denominator) { + this.numerator = 1; + this.denominator = 1; + this.numerator = numerator; + this.denominator = denominator; + } + value() { + return this.numerator / this.denominator; + } +} +const DefaultRatio = new Ratio(1, 1); + +class Point { + constructor(x, y) { + this.x = x; + this.y = y; + } +} +const ZERO_POINT = new Point(0, 0); + +var TrackMatteType = /* @__PURE__ */ ((TrackMatteType2) => { + TrackMatteType2[TrackMatteType2["None"] = 0] = "None"; + TrackMatteType2[TrackMatteType2["Alpha"] = 1] = "Alpha"; + TrackMatteType2[TrackMatteType2["AlphaInverted"] = 2] = "AlphaInverted"; + TrackMatteType2[TrackMatteType2["Luma"] = 3] = "Luma"; + TrackMatteType2[TrackMatteType2["LumaInverted"] = 4] = "LumaInverted"; + return TrackMatteType2; +})(TrackMatteType || {}); +var LayerType = /* @__PURE__ */ ((LayerType2) => { + LayerType2[LayerType2["Unknown"] = 0] = "Unknown"; + LayerType2[LayerType2["undefined"] = 1] = "undefined"; + LayerType2[LayerType2["Solid"] = 2] = "Solid"; + LayerType2[LayerType2["Text"] = 3] = "Text"; + LayerType2[LayerType2["Shape"] = 4] = "Shape"; + LayerType2[LayerType2["Image"] = 5] = "Image"; + LayerType2[LayerType2["PreCompose"] = 6] = "PreCompose"; + return LayerType2; +})(LayerType || {}); +class Layer { + constructor() { + this.id = 0; + this.parent = void 0; + this.containingComposition = void 0; + this.stretch = DefaultRatio; + this.startTime = ZERO_ID; + this.duration = ZERO_TIME; + this.autoOrientation = false; + this.transform = void 0; + this.isActive = true; + this.blendMode = BlendMode.Normal; + this.trackMatteType = 0 /* None */; + this.trackMatteLayer = void 0; + this.timeRemap = void 0; + this.masks = void 0; + this.effects = void 0; + this.layerStyles = void 0; + this.layerCache = void 0; + this.maxScale = void 0; + } + type() { + return 0 /* Unknown */; + } + excludeVaryingRanges(timeRanges) { + var _a; + (_a = this.transform) == null ? void 0 : _a.excludeVaryingRanges(timeRanges); + if (this.timeRemap !== void 0) { + this.timeRemap.excludeVaryingRanges(timeRanges); + } + if (this.masks !== void 0) { + for (const mask of this.masks) { + mask.excludeVaryingRanges(timeRanges); + } + } + if (this.effects !== void 0 && this.effects.length > 0) { + for (const effect of this.effects) { + effect.excludeVaryingRanges(timeRanges); + } + } + if (this.layerStyles !== void 0 && this.layerStyles.length > 0) { + for (const layerStyle of this.layerStyles) { + layerStyle.excludeVaryingRanges(timeRanges); + } + } + } + gotoFrame(frame) { + var _a; + (_a = this.transform) == null ? void 0 : _a.gotoFrame(frame); + if (this.timeRemap !== void 0) { + this.timeRemap.gotoFrame(frame); + } + if (this.masks !== void 0 && this.masks.length > 0) { + for (const mask of this.masks) { + mask.gotoFrame(frame); + } + } + if (this.effects !== void 0 && this.effects.length > 0) { + for (const effect of this.effects) { + effect.gotoFrame(frame); + } + } + if (this.layerStyles !== void 0 && this.layerStyles.length > 0) { + for (const layerStyle of this.layerStyles) { + layerStyle.gotoFrame(frame); + } + } + } + verify() { + if (!this.containingComposition || this.duration <= 0 || !this.transform) { + verifyFailed(); + return false; + } + if (!this.transform.verify()) { + verifyFailed(); + return false; + } + if (this.masks && this.masks.length > 0) { + for (const mask of this.masks) { + if (!mask || !mask.verify()) { + verifyFailed(); + return false; + } + } + } + if (this.layerStyles && this.layerStyles.length > 0) { + for (const layerStyle of this.layerStyles) { + if (!layerStyle || !layerStyle.verify()) { + verifyFailed(); + return false; + } + } + } + if (this.effects && this.effects.length > 0) { + for (const effect of this.effects) { + if (!effect || !effect.verify()) { + verifyFailed(); + return false; + } + } + } + return true; + } + getMaxScaleFactor() { + if (this.maxScale !== void 0) { + return this.maxScale; + } + this.maxScale = new Point(1, 1); + const property = this.transform.scale; + if (property.animatable()) { + const { keyframes } = property; + let scaleX = Math.abs(keyframes[0].startValue.x); + let scaleY = Math.abs(keyframes[0].startValue.y); + if (keyframes !== void 0 && keyframes.length > 0) { + for (const keyframe of keyframes) { + const x = Math.abs(keyframe.endValue.x); + const y = Math.abs(keyframe.endValue.y); + if (scaleX < x) { + scaleX = x; + } + if (scaleY < y) { + scaleY = y; + } + } + } + this.maxScale.x = scaleX; + this.maxScale.y = scaleY; + } else { + this.maxScale.x = Math.abs(property.value.x); + this.maxScale.y = Math.abs(property.value.y); + } + if (this.parent !== void 0) { + const parentScale = this.parent.getMaxScaleFactor(); + this.maxScale.x *= parentScale.x; + this.maxScale.y *= parentScale.y; + } + return this.maxScale; + } +} + +const SPATIAL_PRECISION = 0.05; +const BEZIER_PRECISION = 5e-3; +const readRatio = (byteArray) => { + const numeratorValue = byteArray.readEncodeInt32(); + const denominatorValue = byteArray.readEncodedUint32(); + const ration = new Ratio(numeratorValue, denominatorValue); + return ration; +}; +const readColor = (byteArray) => { + const redNum = byteArray.readUint8(); + const greenNum = byteArray.readUint8(); + const blueNum = byteArray.readUint8(); + const color = { red: redNum, green: greenNum, blue: blueNum }; + return color; +}; +const readTime = (byteArray) => byteArray.readEncodedUint64(); +const readLayerID = (byteArray) => { + const id = byteArray.readEncodedUint32(); + if (id === 0) + throw new Error("Layer ID is 0"); + const layer = new Layer(); + layer.id = id; + return layer; +}; +const readPoint = (byteArray) => { + const x = byteArray.readFloat32(); + const y = byteArray.readFloat32(); + return new Point(x, y); +}; + +const readCompositionAttributes = (byteArray, composition) => { + composition.width = byteArray.readEncodeInt32(); + composition.height = byteArray.readEncodeInt32(); + composition.duration = readTime(byteArray); + composition.frameRate = byteArray.readFloat32(); + composition.backgroundColor = readColor(byteArray); +}; + +class Context$1 { + constructor() { + this.tagLevel = 0; + this.compositions = []; + this.errorMessages = []; + } + throwException(message) { + this.errorMessages.push(message); + } + releaseCompositions() { + const compositions = this.compositions.slice(); + this.compositions = []; + return compositions; + } +} + +const ErrorMessage = { + PAGDecodeError: "PAG file decode error!" +}; + +const LENGTH_FOR_STORE_NUM_BITS = 5; +class ByteArray { + constructor(buffer, littleEndian) { + this._position = 0; + this.bitPosition = 0; + this.dataView = new DataView(buffer); + this.littleEndian = !!littleEndian; + this.context = new Context$1(); + } + get length() { + return this.dataView.byteLength; + } + get bytesAvailable() { + return this.dataView.byteLength - this._position; + } + data() { + return this.dataView.buffer; + } + get position() { + return this._position; + } + alignWithBytes() { + this.bitPosition = this._position * 8; + } + readBoolean() { + const value = this.dataView.getInt8(this._position); + this._position += 1; + this.positonChanged(); + return Boolean(value); + } + readChar() { + if (this._position >= this.length) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getInt8(this._position); + this._position += 1; + this.positonChanged(); + return String.fromCharCode(value); + } + readUint8() { + if (this._position >= this.length) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getUint8(this._position); + this._position += 1; + this.positonChanged(); + return value; + } + readInt8() { + if (this._position >= this.length) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getInt8(this._position); + this._position += 1; + this.positonChanged(); + return value; + } + readInt16() { + if (this._position >= this.length - 1) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getInt16(this._position, this.littleEndian); + this._position += 2; + this.positonChanged(); + return value; + } + readUint16() { + if (this._position >= this.length - 1) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getUint16(this._position, this.littleEndian); + this._position += 2; + this.positonChanged(); + return value; + } + readInt24() { + if (this._position >= this.length - 2) + throw new Error(ErrorMessage.PAGDecodeError); + const left = this.dataView.getInt16(this._position, this.littleEndian); + const right = this.dataView.getInt8(this._position + 2); + this._position += 3; + this.positonChanged(); + return this.littleEndian ? left + 2 ** 16 * right : 2 ** 16 * left + right; + } + readUint24() { + if (this._position >= this.length - 2) + throw new Error(ErrorMessage.PAGDecodeError); + const left = this.dataView.getUint16(this._position, this.littleEndian); + const right = this.dataView.getUint8(this._position + 2); + this._position += 3; + this.positonChanged(); + return this.littleEndian ? left + 2 ** 16 * right : 2 ** 16 * left + right; + } + readInt32() { + if (this._position >= this.length - 3) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getInt32(this._position, this.littleEndian); + this._position += 4; + this.positonChanged(); + return value; + } + readUint32() { + if (this._position >= this.length - 3) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getUint32(this._position, this.littleEndian); + this._position += 4; + this.positonChanged(); + return value; + } + readInt64() { + if (this._position >= this.length - 7) + throw new Error(ErrorMessage.PAGDecodeError); + const left = this.dataView.getInt32(this._position, this.littleEndian); + const right = this.dataView.getInt32(this._position + 4, this.littleEndian); + this._position += 8; + this.positonChanged(); + return this.littleEndian ? left + 2 ** 32 * right : 2 ** 32 * left + right; + } + readUint64() { + if (this._position >= this.length - 7) + throw new Error(ErrorMessage.PAGDecodeError); + const left = this.dataView.getUint32(this._position, this.littleEndian); + const right = this.dataView.getUint32(this._position + 4, this.littleEndian); + this._position += 8; + this.positonChanged(); + return this.littleEndian ? left + 2 ** 32 * right : 2 ** 32 * left + right; + } + readFloat32() { + if (this._position >= this.length - 3) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getFloat32(this._position, this.littleEndian); + this._position += 4; + this.positonChanged(); + return value; + } + readDouble() { + if (this._position >= this.length - 7) + throw new Error(ErrorMessage.PAGDecodeError); + const value = this.dataView.getFloat64(this._position, this.littleEndian); + this._position += 8; + this.positonChanged(); + return value; + } + readUTF8String() { + if (this._position >= this.length) + throw new Error(ErrorMessage.PAGDecodeError); + let encoded = ""; + let dataLength = 0; + for (let i = this._position; i < this.length; i++) { + if (this.dataView.getUint8(i) === 0) { + break; + } + encoded += `%${this.dataView.getUint8(i).toString(16)}`; + dataLength += 1; + } + this._position += dataLength; + this.positonChanged(); + return decodeURIComponent(encoded); + } + readEncodedUint32() { + const valueMask = 127; + const hasNext = 128; + let value = 0; + let byte = 0; + for (let i = 0; i < 32; i += 7) { + if (this._position >= this.length) { + throw Error("readEncodedUint32 End of file was encountered."); + } + byte = this.dataView.getUint8(this._position); + this._position += 1; + value |= (byte & valueMask) << i; + if ((byte & hasNext) === 0) { + break; + } + } + this.positonChanged(); + return value; + } + readEncodeInt32() { + const data = this.readEncodedUint32(); + const value = data >> 1; + return (data & 1) > 0 ? -value : value; + } + readEncodedUint64() { + const valueMask = 127; + const hasNext = 128; + let value = 0; + let byte = 0; + for (let i = 0; i < 64; i += 7) { + if (this._position >= this.length) { + throw Error("readEncodedUint64 End of file was encountered."); + } + byte = this.dataView.getUint8(this._position); + this._position += 1; + value |= (byte & valueMask) << i; + if ((byte & hasNext) === 0) { + break; + } + } + this.positonChanged(); + return value; + } + readEncodeInt64() { + const data = this.readEncodedUint64(); + const value = data << 0; + return (data & 1) > 0 ? -value : value; + } + readBytes(length) { + const len = length || this.length - this._position; + if (this._position > this.length - len) + throw new Error(ErrorMessage.PAGDecodeError); + const newBuffer = this.dataView.buffer.slice(this._position, this._position + len); + this._position += len; + this.positonChanged(); + return new ByteArray(newBuffer, this.littleEndian); + } + readUBits(numBits) { + const bitMasks = [0, 1, 3, 7, 15, 31, 63, 127, 255]; + let value = 0; + if (this.bitPosition > this.length * 8 - numBits) + throw new Error(ErrorMessage.PAGDecodeError); + let pos = 0; + while (pos < numBits) { + const bytePosition = Math.floor(this.bitPosition * 0.125); + const bitPosition = this.bitPosition % 8; + let byte = this.dataView.getUint8(bytePosition) >> bitPosition; + const bitLength = Math.min(8 - bitPosition, numBits - pos); + byte &= bitMasks[bitLength]; + value |= byte << pos; + pos += bitLength; + this.bitPosition += bitLength; + } + this.bitPositionChanged(); + return value; + } + readBits(numBits) { + let value = this.readUBits(numBits); + value <<= 32 - numBits; + const data = value << 0; + return data >> 32 - numBits; + } + readNumBits() { + return this.readUBits(LENGTH_FOR_STORE_NUM_BITS) + 1; + } + readInt32List(count) { + const numBits = this.readNumBits(); + const value = new Array(count); + for (let i = 0; i < count; i++) { + value[i] = this.readBits(numBits); + } + return value; + } + readUint32List(count) { + const numBits = this.readNumBits(); + const value = new Array(count); + for (let i = 0; i < count; i++) { + value[i] = this.readUBits(numBits); + } + return value; + } + readBitBoolean() { + return this.readUBits(1) !== 0; + } + readFloatList(count, precision) { + const numBits = this.readNumBits(); + const value = new Array(count); + for (let i = 0; i < count; i++) { + value[i] = this.readBits(numBits) * precision; + } + return value; + } + bitPositionChanged() { + this._position = Math.ceil(this.bitPosition * 0.125); + } + positonChanged() { + this.bitPosition = this._position * 8; + } +} + +class ByteData { + constructor(data, length) { + this.length = 0; + this.data = data; + this.length = length; + } +} + +class VideoFrame { + constructor() { + this.isKeyframe = false; + this.frame = 0; + this.fileBytes = new ByteData(new ByteArray(new ArrayBuffer(0)), 0); + } +} + +class Sequence { + constructor() { + this.composition = void 0; + this.id = 0; + this.width = 0; + this.height = 0; + this.frameRate = 0; + this.frameCount = 0; + this.isKeyFrameFlags = []; + } + verify() { + return verifyAndReturn(this.composition !== void 0 && this.width > 0 && this.height > 0 && this.frameRate > 0); + } +} + +class VideoSequence extends Sequence { + constructor() { + super(...arguments); + this.alphaStartX = 0; + this.alphaStartY = 0; + this.frames = []; + this.headers = []; + this.staticTimeRanges = []; + } + verify() { + if (!super.verify() || this.frames.length <= 0) { + verifyFailed(); + return false; + } + for (const frame of this.frames) { + if (!frame || !frame.fileBytes) { + verifyFailed(); + return false; + } + } + for (const header of this.headers) { + if (!header) { + verifyFailed(); + return false; + } + } + return true; + } + getVideoWidth() { + let videoWidth = this.alphaStartX + this.width; + if (videoWidth % 2 === 1) { + videoWidth += 1; + } + return videoWidth; + } + getVideoHeight() { + let videoHeight = this.alphaStartY + this.height; + if (videoHeight % 2 === 1) { + videoHeight += 1; + } + return videoHeight; + } +} + +const memcpy = (dst, dstOffset, src, srcOffset, num) => { + if (dstOffset >= dst.byteLength || srcOffset >= src.byteLength || src.byteLength - srcOffset > dst.byteLength - dstOffset || num > src.byteLength) + return; + const dstUint8Array = new Uint8Array(dst); + const srcUint8Array = new Uint8Array(src, srcOffset, num); + dstUint8Array.set(srcUint8Array, dstOffset); +}; +const concatUint8Arrays = (arrays) => { + let totalLength = 0; + for (const arr of arrays) { + totalLength += arr.byteLength; + } + const result = new Uint8Array(totalLength); + let offset = 0; + for (const arr of arrays) { + result.set(arr, offset); + offset += arr.byteLength; + } + return result; +}; + +const readByteDataWithStartCode = (byteArray) => { + const length = byteArray.readEncodedUint32(); + const bytes = byteArray.readBytes(length); + if (length === 0) + throw new Error("Read start code with length 0!"); + const data = new ArrayBuffer(length + 4); + const dataView = new DataView(data); + dataView.setUint32(0, length); + memcpy(data, 4, bytes.data(), 0, length); + return new ByteData(new ByteArray(data), length + 4); +}; + +const readVideoSequence = (byteArray, hasAlpha) => { + const videoSequence = new VideoSequence(); + videoSequence.width = byteArray.readEncodeInt32(); + videoSequence.height = byteArray.readEncodeInt32(); + videoSequence.frameRate = byteArray.readFloat32(); + if (hasAlpha) { + videoSequence.alphaStartX = byteArray.readEncodeInt32(); + videoSequence.alphaStartY = byteArray.readEncodeInt32(); + } + const sps = readByteDataWithStartCode(byteArray); + const pps = readByteDataWithStartCode(byteArray); + videoSequence.headers.push(sps, pps); + videoSequence.frameCount = byteArray.readEncodedUint32(); + for (let i = 0; i < videoSequence.frameCount; i++) { + const videoFrame = new VideoFrame(); + videoFrame.isKeyframe = byteArray.readBitBoolean(); + videoSequence.frames.push(videoFrame); + } + for (let i = 0; i < videoSequence.frameCount; i++) { + const videoFrame = videoSequence.frames[i]; + videoFrame.frame = readTime(byteArray); + videoFrame.fileBytes = readByteDataWithStartCode(byteArray); + } + if (byteArray.bytesAvailable > 0) { + const count = byteArray.readEncodedUint32(); + for (let i = 0; i < count; i++) { + const staticTimeRange = { start: 0, end: 0 }; + staticTimeRange.start = readTime(byteArray); + staticTimeRange.end = readTime(byteArray); + videoSequence.staticTimeRanges.push(staticTimeRange); + } + } + return videoSequence; +}; + +const readVideoComposition = (byteArray) => { + const composition = new VideoComposition(); + composition.id = byteArray.readEncodedUint32(); + composition.hasAlpha = byteArray.readBoolean(); + const parameter = { composition, hasAlpha: composition.hasAlpha }; + readTags(byteArray, parameter, ReadTagsOfVideoComposition); + return composition; +}; +const ReadTagsOfVideoComposition = (byteArray, code, parameter) => { + const { composition } = parameter; + switch (code) { + case TagCode.CompositionAttributes: + readCompositionAttributes(byteArray, composition); + break; + case TagCode.VideoSequence: { + const sequence = readVideoSequence(byteArray, parameter.hasAlpha); + sequence.composition = composition; + composition.sequences.push(sequence); + break; + } + } +}; + +var EffectType = /* @__PURE__ */ ((EffectType2) => { + EffectType2[EffectType2["Unknown"] = 0] = "Unknown"; + EffectType2[EffectType2["Tint"] = 1] = "Tint"; + EffectType2[EffectType2["Fill"] = 2] = "Fill"; + EffectType2[EffectType2["Stroke"] = 3] = "Stroke"; + EffectType2[EffectType2["Tritone"] = 4] = "Tritone"; + EffectType2[EffectType2["DropShadow"] = 5] = "DropShadow"; + EffectType2[EffectType2["RadialWipe"] = 6] = "RadialWipe"; + EffectType2[EffectType2["DisplacementMap"] = 7] = "DisplacementMap"; + return EffectType2; +})(EffectType || {}); + +function subtractFromTimeRanges(timeRanges, startTime, endTime) { + if (endTime < startTime) { + return; + } + const size = timeRanges.length; + for (let i = size - 1; i >= 0; i--) { + const timeRange = timeRanges[i]; + if (timeRange.end < startTime || timeRange.start > endTime) { + continue; + } + if (timeRange.start < startTime && timeRange.end > endTime) { + const range = { start: endTime + 1, end: timeRange.end }; + timeRange.end = startTime - 1; + if (range.end > range.start) { + timeRanges.splice(i + 1, 0, range); + } + if (timeRange.end <= timeRange.start) { + timeRanges.splice(i, 1); + } + break; + } + if (timeRange.start >= startTime && timeRange.end <= endTime) { + timeRanges.splice(i, 1); + } else if (timeRange.start < startTime) { + timeRange.end = startTime - 1; + if (timeRange.end <= timeRange.start) { + timeRanges.splice(i, 1); + } + } else { + timeRange.start = endTime + 1; + if (timeRange.end <= timeRange.start) { + timeRanges.splice(i, 1); + } + } + } +} +function splitTimeRangesAt(timeRanges, startTime) { + const size = timeRanges.length; + for (let i = size - 1; i >= 0; i--) { + const timeRange = timeRanges[i]; + if (timeRange.start === startTime || timeRange.end <= startTime) { + break; + } + if (timeRange.start < startTime && timeRange.end > startTime) { + const range = { start: startTime, end: timeRange.end }; + timeRange.end = startTime - 1; + if (range.end > range.start) { + timeRanges.splice(i + 1, 0, range); + } + if (timeRange.end <= timeRange.start) { + timeRanges.splice(i, 1); + } + break; + } + } +} + +class VectorComposition extends Composition { + constructor() { + super(...arguments); + this.layers = []; + this.staticTimeRanges = []; + this.staticTimeRangeUpdated = false; + } + type() { + return CompositionType.Vector; + } + getStaticTimeRanges() { + if (!this.staticTimeRangeUpdated) { + this.staticTimeRangeUpdated = true; + this.updateStaticTimeRanges(); + } + return this.staticTimeRanges; + } + verify() { + if (!super.verify()) { + verifyFailed(); + return false; + } + for (const layer of this.layers) { + if (!layer || !layer.verify()) { + verifyFailed(); + return false; + } + } + return true; + } + updateStaticTimeRanges() { + if (this.duration > 1) { + const range = { start: 0, end: this.duration - 1 }; + this.staticTimeRanges = [range]; + for (const layer of this.layers) { + if (this.staticTimeRanges.length <= 0) { + break; + } + layer.excludeVaryingRanges(this.staticTimeRanges); + splitTimeRangesAt(this.staticTimeRanges, layer.startTime); + splitTimeRangesAt(this.staticTimeRanges, layer.startTime + layer.duration); + } + } + } +} + +class Property { + constructor(value) { + this.value = value; + } + animatable() { + return false; + } + excludeVaryingRanges(_timeRanges) { + } + gotoFrame(_time) { + } +} + +class Transform2D { + static createDefaultTransform2D() { + const transform = new Transform2D(); + return transform; + } + constructor() { + this.anchorPoint = new Property(ZERO_POINT); + this.position = new Property(ZERO_POINT); + this.xPosition = new Property(0); + this.yPosition = new Property(0); + this.scale = new Property(new Point(1, 1)); + this.rotation = new Property(0); + this.opacity = new Property(OPAQUE); + } + excludeVaryingRanges(timeRanges) { + this.anchorPoint.excludeVaryingRanges(timeRanges); + if (this.position !== void 0) { + this.position.excludeVaryingRanges(timeRanges); + } else { + this.xPosition.excludeVaryingRanges(timeRanges); + this.yPosition.excludeVaryingRanges(timeRanges); + } + this.scale.excludeVaryingRanges(timeRanges); + this.rotation.excludeVaryingRanges(timeRanges); + this.opacity.excludeVaryingRanges(timeRanges); + } + gotoFrame(frame) { + this.anchorPoint.gotoFrame(frame); + if (this.position !== void 0) { + this.position.gotoFrame(frame); + } else { + this.xPosition.gotoFrame(frame); + this.yPosition.gotoFrame(frame); + } + this.scale.gotoFrame(frame); + this.rotation.gotoFrame(frame); + this.opacity.gotoFrame(frame); + } + verify() { + return this.anchorPoint !== void 0 && (this.position !== void 0 || this.xPosition !== void 0 && this.yPosition !== void 0) && this.scale !== void 0 && this.rotation !== void 0 && this.opacity !== void 0; + } +} + +class PreComposeLayer extends Layer { + constructor() { + super(...arguments); + this.composition = void 0; + this.compositionStartTime = ZERO_TIME; + this.staticTimeRanges = void 0; + this.staticTimeRangeUpdated = false; + } + static wrap(composition) { + const layer = new PreComposeLayer(); + layer.duration = composition.duration; + const transform = new Transform2D(); + layer.transform = transform; + layer.composition = composition; + return layer; + } + type() { + return LayerType.PreCompose; + } + excludeVaryingRanges(timeRanges) { + super.excludeVaryingRanges(timeRanges); + if (!timeRanges || timeRanges.length === 0) { + return; + } + this.updateStaticTimeRanges(); + } + gotoFrame(frame) { + super.gotoFrame(frame); + } + verify() { + if (!super.verify()) { + return false; + } + if (this.composition) { + return true; + } + return false; + } + updateStaticTimeRanges() { + var _a; + if (this.staticTimeRangeUpdated) { + return; + } + this.staticTimeRangeUpdated = true; + const ranges = (_a = this.composition) == null ? void 0 : _a.getStaticTimeRanges(); + if (!ranges) + return; + for (let i = ranges.length - 1; i >= 0; i--) { + const range = ranges[i]; + range.start += this.compositionStartTime; + range.end += this.compositionStartTime; + if (range.end <= this.startTime) { + ranges.pop(); + } else if (range.start < this.startTime) { + range.start = 0; + } else if (range.start >= this.startTime + this.duration - 1) { + ranges.pop(); + } else if (range.end > this.startTime + this.duration - 1) { + range.end = this.startTime + this.duration - 1; + } + } + this.staticTimeRanges = ranges; + } +} + +class ShapeLayer extends Layer { + constructor() { + super(...arguments); + this.contents = []; + } + type() { + return LayerType.Shape; + } + excludeVaryingRanges(timeRanges) { + super.excludeVaryingRanges(timeRanges); + for (const element of this.contents) { + element.excludeVaryingRanges(timeRanges); + } + } + gotoFrame(frame) { + super.gotoFrame(frame); + for (const element of this.contents) { + element.gotoFrame(frame); + } + } + verify() { + if (!super.verify()) { + return false; + } + for (const element of this.contents) { + if (element === void 0 || !element.verify()) { + return false; + } + } + return true; + } +} + +class SolidLayer extends Layer { + constructor() { + super(...arguments); + this.solidColor = Black; + this.width = 0; + this.height = 0; + } + type() { + return LayerType.Solid; + } + excludeVaryingRanges(timeRanges) { + super.excludeVaryingRanges(timeRanges); + } + gotoFrame(frame) { + super.gotoFrame(frame); + } + verify() { + if (!super.verify()) { + verifyFailed(); + return false; + } + return verifyAndReturn(this.width > 0 && this.height > 0); + } +} + +class UnDefinedLayer extends Layer { + type() { + return LayerType.undefined; + } +} + +class Keyframe { + constructor() { + this.startTime = 0; + this.endTime = 0; + this.interpolationType = KeyframeInterpolationType.Hold; + this.bezierOut = []; + this.bezierIn = []; + this.spatialOut = ZERO_POINT; + this.spatialIn = ZERO_POINT; + } + initialize() { + } + getValue(_time) { + return this.startValue; + } + containsTime(time) { + return time >= this.startTime && time < this.endTime; + } +} + +class AnimatableProperty extends Property { + constructor(keyframes) { + if (!keyframes || keyframes.length === 0) + throw new Error("keyframes is required"); + if (keyframes[0].startValue === void 0) + throw new Error("startValue is required"); + super(keyframes[0].startValue); + this.keyframes = keyframes; + this.lastKeyframeIndex = 0; + for (const keyframe of keyframes) { + keyframe.initialize(); + } + } + animatable() { + return true; + } + excludeVaryingRanges(timeRanges) { + for (const keyframe of this.keyframes) { + switch (keyframe.interpolationType) { + case KeyframeInterpolationType.Bezier: + case KeyframeInterpolationType.Linear: + subtractFromTimeRanges(timeRanges, keyframe.startTime, keyframe.endTime - 1); + break; + default: + splitTimeRangesAt(timeRanges, keyframe.startTime); + splitTimeRangesAt(timeRanges, keyframe.endTime); + break; + } + } + } + gotoFrame(frame) { + let lastKeyframe = this.keyframes[this.lastKeyframeIndex]; + if (lastKeyframe.containsTime(frame)) { + this.value = lastKeyframe.getValue(frame); + return; + } + if (frame < lastKeyframe.startTime) { + while (this.lastKeyframeIndex > 0) { + this.lastKeyframeIndex -= 1; + if (this.keyframes[this.lastKeyframeIndex].containsTime(frame)) { + break; + } + } + } else { + while (this.lastKeyframeIndex < this.keyframes.length - 1) { + this.lastKeyframeIndex += 1; + if (this.keyframes[this.lastKeyframeIndex].containsTime(frame)) { + break; + } + } + } + lastKeyframe = this.keyframes[this.lastKeyframeIndex]; + if (lastKeyframe.startValue !== void 0 && frame <= lastKeyframe.startTime) { + this.value = lastKeyframe.startValue; + } else if (lastKeyframe.endValue !== void 0 && frame >= lastKeyframe.endTime) { + this.value = lastKeyframe.endValue; + } else { + this.value = lastKeyframe.getValue(frame); + } + } +} + +var AttributeType = /* @__PURE__ */ ((AttributeType2) => { + AttributeType2[AttributeType2["Value"] = 0] = "Value"; + AttributeType2[AttributeType2["FixedValue"] = 1] = "FixedValue"; + AttributeType2[AttributeType2["SimpleProperty"] = 2] = "SimpleProperty"; + AttributeType2[AttributeType2["DiscreteProperty"] = 3] = "DiscreteProperty"; + AttributeType2[AttributeType2["MultiDimensionProperty"] = 4] = "MultiDimensionProperty"; + AttributeType2[AttributeType2["SpatialProperty"] = 5] = "SpatialProperty"; + AttributeType2[AttributeType2["BitFlag"] = 6] = "BitFlag"; + AttributeType2[AttributeType2["Custom"] = 7] = "Custom"; + return AttributeType2; +})(AttributeType || {}); +const readTagBlock = (byteArray, parameter, blockConfig) => { + const tagConfig = blockConfig; + const flags = []; + if (!tagConfig.configs || tagConfig.configs.length === 0) { + return parameter; + } + for (const config of tagConfig.configs) { + const flag = readAttributeFlag(byteArray, config); + flags.push(flag); + } + byteArray.alignWithBytes(); + let index = 0; + for (const config of tagConfig.configs) { + const flag = flags[index]; + const target = config.key; + config.readAttribute(byteArray, flag, parameter, target); + index += 1; + } + return parameter; +}; +class BaseAttribute { + constructor(key, attributeType, defaultValue) { + this.attributeType = attributeType; + this.defaultValue = defaultValue; + this.key = key; + } + readAttribute(_byteArray, _flag, _targetClass, _target) { + } + readValue(_byteArray) { + return void 0; + } + readValueList(_byteArray, _list, _count) { + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new Keyframe(); + } +} +const readAttribute = (byteArray, flag, targetClass, target, config) => { + if (config.attributeType === 6 /* BitFlag */) { + targetClass[target] = flag.exist; + } else if (config.attributeType === 1 /* FixedValue */) { + targetClass[target] = config.readValue(byteArray); + } else if (config.attributeType === 0 /* Value */) { + targetClass[target] = readValue(byteArray, config, flag); + } else { + targetClass[target] = readProperty(byteArray, config, flag); + } +}; +const readProperty = (byteArray, config, flag) => { + let property; + if (flag.exist) { + if (flag.animatable) { + const keyframes = readKeyframes(byteArray, config, flag); + if (!keyframes || keyframes.length === 0) { + throw new Error("Wrong number of keyframes!"); + } + readTimeAndValue(byteArray, keyframes, config); + readTimeEase(byteArray, keyframes, config); + if (flag.hasSpatial); + property = new AnimatableProperty(keyframes); + } else { + property = new Property(readValue(byteArray, config, flag)); + } + } else { + property = new Property(config.defaultValue); + } + return property; +}; +const readValue = (byteArray, config, flag) => { + if (flag.exist) { + return config.readValue(byteArray); + } + return config.defaultValue; +}; +const readAttributeFlag = (byteArray, config) => { + const flag = { exist: false, animatable: false, hasSpatial: false }; + const { attributeType } = config; + if (attributeType === 1 /* FixedValue */) { + flag.exist = true; + return flag; + } + flag.exist = byteArray.readBitBoolean(); + if (!flag.exist || attributeType === 0 /* Value */ || attributeType === 6 /* BitFlag */ || attributeType === 7 /* Custom */) { + return flag; + } + flag.animatable = byteArray.readBitBoolean(); + if (!flag.animatable || attributeType !== 5 /* SpatialProperty */) { + return flag; + } + flag.hasSpatial = byteArray.readBitBoolean(); + return flag; +}; +const readKeyframes = (byteArray, config, flag) => { + const keyframes = []; + const numFrames = byteArray.readEncodedUint32(); + for (let i = 0; i < numFrames; i++) { + let keyframe; + if (config.attributeType === 3 /* DiscreteProperty */) { + keyframe = new Keyframe(); + } else { + const interpolationType = byteArray.readUBits(2); + if (interpolationType === KeyframeInterpolationType.Hold) { + keyframe = new Keyframe(); + } else { + keyframe = config.newKeyframe(flag); + keyframe.interpolationType = interpolationType; + } + } + keyframes.push(keyframe); + } + return keyframes; +}; +const readTimeAndValue = (byteArray, keyframes, config) => { + const numFrames = keyframes.length; + keyframes[0].startTime = readTime(byteArray); + for (let i = 0; i < numFrames; i++) { + const time = readTime(byteArray); + keyframes[i].endTime = time; + if (i < numFrames - 1) { + keyframes[i + 1].startTime = time; + } + } + const list = []; + config.readValueList(byteArray, list, numFrames + 1); + let index = 0; + keyframes[0].startValue = list[index]; + index += 1; + for (let i = 0; i < numFrames; i++) { + const value = list[index]; + index += 1; + keyframes[i].endValue = value; + if (i < numFrames - 1) { + keyframes[i + 1].startValue = value; + } + } +}; +const readTimeEase = (byteArray, keyframes, config) => { + const dimensionality = config.attributeType === 4 /* MultiDimensionProperty */ ? config.dimensionality() : 1; + const numBits = byteArray.readNumBits(); + for (const keyframe of keyframes) { + if (keyframe.interpolationType !== KeyframeInterpolationType.Bezier) { + continue; + } + let x; + let y; + for (let i = 0; i < dimensionality; i++) { + x = byteArray.readBits(numBits) * BEZIER_PRECISION; + y = byteArray.readBits(numBits) * BEZIER_PRECISION; + keyframe.bezierOut.push({ x, y }); + x = byteArray.readBits(numBits) * BEZIER_PRECISION; + y = byteArray.readBits(numBits) * BEZIER_PRECISION; + keyframe.bezierIn.push({ x, y }); + } + } +}; + +function readSolidColor(byteArray, layer) { + layer.solidColor = readColor(byteArray); + layer.width = byteArray.readEncodeInt32(); + layer.height = byteArray.readEncodeInt32(); +} + +function interpolateFloat(a, b, t) { + return a + (b - a) * t; +} + +class Interpolator { + getInterpolation(input) { + return input; + } +} + +class MultiDimensionPointKeyframe extends Keyframe { + initialize() { + super.initialize(); + if (this.interpolationType === KeyframeInterpolationType.Bezier); else { + this.xInterpolator = new Interpolator(); + this.yInterpolator = new Interpolator(); + } + } + getValue(time) { + var _a, _b, _c, _d; + const progress = (time - this.startTime) / (this.endTime - this.startTime); + const xProgress = (_b = (_a = this.xInterpolator) == null ? void 0 : _a.getInterpolation(progress)) != null ? _b : progress; + const yProgress = (_d = (_c = this.yInterpolator) == null ? void 0 : _c.getInterpolation(progress)) != null ? _d : progress; + const x = interpolateFloat(this.startValue.x, this.endValue.x, xProgress); + const y = interpolateFloat(this.startValue.y, this.endValue.y, yProgress); + return { x, y }; + } +} + +class SingleEaseKeyframe extends Keyframe { + initialize() { + if (this.interpolationType === KeyframeInterpolationType.Bezier); else { + this.interpolator = new Interpolator(); + } + } + getProgress(time) { + var _a, _b; + const progress = (time - this.startTime) / (this.endTime - this.startTime); + return (_b = (_a = this.interpolator) == null ? void 0 : _a.getInterpolation(progress)) != null ? _b : progress; + } + getValue(time) { + const progress = this.getProgress(time); + return interpolateFloat(this.startValue, this.endValue, progress); + } +} + +class FloatAttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return byteArray.readFloat32(); + } + readValueList(byteArray, list, count) { + for (let i = 0; i < count; i++) { + list.push(this.readValue(byteArray)); + } + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new SingleEaseKeyframe(); + } +} +class BOOLAttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return byteArray.readBoolean(); + } + readValueList(byteArray, list, count) { + for (let i = 0; i < count; i++) { + list.push(byteArray.readBitBoolean()); + } + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new Keyframe(); + } +} +class Uint8AttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return byteArray.readUint8(); + } + readValueList(byteArray, list, count) { + const valueList = byteArray.readUint32List(count); + for (let i = 0; i < count; i++) { + list.push(valueList[i]); + } + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new SingleEaseKeyframe(); + } +} +class TimeAttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return readTime(byteArray); + } + readValueList(byteArray, list, count) { + for (let i = 0; i < count; i++) { + list[i] = this.readValue(byteArray); + } + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new SingleEaseKeyframe(); + } +} +class PointAttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return readPoint(byteArray); + } + readValueList(byteArray, list, count) { + if (this.attributeType === AttributeType.SpatialProperty) { + const values = byteArray.readFloatList(count * 2, SPATIAL_PRECISION); + for (let i = 0; i < count; i++) { + list[i] || (list[i] = new Point(0, 0)); + list[i].x = values[i]; + } + } else { + for (let i = 0; i < count; i++) { + list[i] = readPoint(byteArray); + } + } + } + dimensionality() { + return 2; + } + newKeyframe(_flag) { + switch (this.attributeType) { + case AttributeType.MultiDimensionProperty: + return new MultiDimensionPointKeyframe(); + default: + return new SingleEaseKeyframe(); + } + } +} +class RatioAttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return readRatio(byteArray); + } + readValueList(byteArray, list, count) { + for (let i = 0; i < count; i++) { + list[i] = this.readValue(byteArray); + } + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new SingleEaseKeyframe(); + } +} +class StringAttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return byteArray.readUTF8String(); + } + readValueList(byteArray, list, count) { + for (let i = 0; i < count; i++) { + list[i] = this.readValue(byteArray); + } + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new SingleEaseKeyframe(); + } +} +class LayerAttributeConfig extends BaseAttribute { + constructor(key, attributeType, defaultValue) { + super(key, attributeType, defaultValue); + } + readAttribute(byteArray, flag, targetClass, target) { + readAttribute(byteArray, flag, targetClass, target, this); + } + readValue(byteArray) { + return readLayerID(byteArray); + } + readValueList(byteArray, list, count) { + for (let i = 0; i < count; i++) { + list[i] = this.readValue(byteArray); + } + } + dimensionality() { + return 1; + } + newKeyframe(_flag) { + return new SingleEaseKeyframe(); + } +} + +const readBlockConfigOfLayerAttributes = { + tagCode: TagCode.LayerAttributes, + configs: [ + new BOOLAttributeConfig("isActive", AttributeType.BitFlag, true), + new BOOLAttributeConfig("autoOrientation", AttributeType.BitFlag, false), + new LayerAttributeConfig("parent", AttributeType.Value, void 0), + new RatioAttributeConfig("stretch", AttributeType.Value, DefaultRatio), + new TimeAttributeConfig("startTime", AttributeType.Value, ZERO_TIME), + new Uint8AttributeConfig("blendMode", AttributeType.Value, BlendMode.Normal), + new Uint8AttributeConfig("trackMatteType", AttributeType.Value, TrackMatteType.None), + new FloatAttributeConfig("timeRemap", AttributeType.SimpleProperty, 0), + new TimeAttributeConfig("duration", AttributeType.FixedValue, ZERO_TIME) + ] +}; +const readBlockConfigOfLayerAttributesV2 = { + tagCode: TagCode.LayerAttributesV2, + configs: [ + new BOOLAttributeConfig("isActive", AttributeType.BitFlag, true), + new BOOLAttributeConfig("autoOrientation", AttributeType.BitFlag, false), + new LayerAttributeConfig("parent", AttributeType.Value, void 0), + new RatioAttributeConfig("stretch", AttributeType.Value, DefaultRatio), + new TimeAttributeConfig("startTime", AttributeType.Value, ZERO_TIME), + new Uint8AttributeConfig("blendMode", AttributeType.Value, BlendMode.Normal), + new Uint8AttributeConfig("trackMatteType", AttributeType.Value, TrackMatteType.None), + new FloatAttributeConfig("timeRemap", AttributeType.SimpleProperty, 0), + new TimeAttributeConfig("duration", AttributeType.FixedValue, ZERO_TIME), + new StringAttributeConfig("name", AttributeType.Value, "") + ] +}; +const readBlockConfigOfTransform2D = { + tagCode: TagCode.Transform2D, + configs: [ + new PointAttributeConfig("anchorPoint", AttributeType.SpatialProperty, ZERO_POINT), + new PointAttributeConfig("position", AttributeType.SpatialProperty, ZERO_POINT), + new FloatAttributeConfig("xPosition", AttributeType.SimpleProperty, 0), + new FloatAttributeConfig("yPosition", AttributeType.SimpleProperty, 0), + new PointAttributeConfig("scale", AttributeType.MultiDimensionProperty, new Point(1, 1)), + new FloatAttributeConfig("rotation", AttributeType.SimpleProperty, 0), + new Uint8AttributeConfig("opacity", AttributeType.SimpleProperty, OPAQUE) + ] +}; +({ + tagCode: TagCode.MaskBlock, + configs: [] +}); + +function readCompositionReference(byteArray, layer) { + const id = byteArray.readEncodedUint32(); + if (id > 0) { + layer.composition = new Composition(); + layer.composition.id = id; + } + layer.compositionStartTime = readTime(byteArray); +} + +const readLayer = (byteArray) => { + const layerType = byteArray.readUint8(); + let layer; + switch (layerType) { + case LayerType.undefined: + layer = new UnDefinedLayer(); + break; + case LayerType.Solid: + layer = new SolidLayer(); + break; + case LayerType.Shape: + layer = new ShapeLayer(); + break; + case LayerType.PreCompose: + layer = new PreComposeLayer(); + break; + default: + layer = new Layer(); + break; + } + layer.id = byteArray.readEncodedUint32(); + readTags(byteArray, layer, readTagsOfLayer); + return layer; +}; +const readTagsOfLayer = (byteArray, code, layer) => { + switch (code) { + case TagCode.LayerAttributes: + readTagBlock(byteArray, layer, readBlockConfigOfLayerAttributes); + if (layer.duration <= 0) + layer.duration = 1; + break; + case TagCode.LayerAttributesV2: + readTagBlock(byteArray, layer, readBlockConfigOfLayerAttributesV2); + if (layer.duration <= 0) + layer.duration = 1; + break; + case TagCode.Transform2D: + layer.transform = new Transform2D(); + readTagBlock(byteArray, layer.transform, readBlockConfigOfTransform2D); + if (layer.transform.position.animatable() || layer.transform.position.value !== ZERO_POINT || !(layer.transform.xPosition.animatable() || layer.transform.xPosition.value !== 0) && !(layer.transform.yPosition.animatable() || layer.transform.yPosition.value !== 0)) { + layer.transform.xPosition = new Property(0); + layer.transform.yPosition = new Property(0); + } else { + layer.transform.position = new Property(ZERO_POINT); + } + break; + case TagCode.SolidColor: + if (layer.type() === LayerType.Solid) { + readSolidColor(byteArray, layer); + } + break; + case TagCode.CompositionReference: + if (layer.type() === LayerType.PreCompose) { + readCompositionReference(byteArray, layer); + } + break; + } +}; + +const readVectorComposition = (byteArray) => { + const composition = new VectorComposition(); + composition.id = byteArray.readEncodedUint32(); + readTags(byteArray, composition, readTagsOfVectorComposition); + installArrayLayerReference(composition.layers); + return composition; +}; +const readTagsOfVectorComposition = (byteArray, code, composition) => { + switch (code) { + case TagCode.CompositionAttributes: + readCompositionAttributes(byteArray, composition); + break; + case TagCode.LayerBlock: + composition.layers.push(readLayer(byteArray)); + break; + } +}; +const installArrayLayerReference = (layers) => { + if (layers && layers.length === 0) { + return; + } + const layerMap = /* @__PURE__ */ new Map(); + for (const layer of layers) { + if (!layer) { + continue; + } + installLayerReference(layer); + layerMap.set(layer.id, layer); + } + let index = 0; + for (const layer of layers) { + if (!layer) { + continue; + } + if (layer.parent !== void 0) { + const ID = layer.parent.id; + const result = layerMap.get(ID); + if (result !== void 0) { + layer.parent = result; + } + } + if (index > 0 && hasTrackMatte(layer.trackMatteType)) { + layer.trackMatteLayer = layers[index - 1]; + } + if (layer.effects !== void 0 && layer.effects.length > 0) { + for (const effect of layer.effects) { + if (!effect) { + continue; + } + if (effect.type() === EffectType.DisplacementMap); + } + } + index += 1; + } +}; +const installLayerReference = (layer) => { + var _a; + if (!layer || !layer.masks || layer.masks.length === 0) + return; + const maskMap = /* @__PURE__ */ new Map(); + for (const mask of layer.masks) { + if (!mask) { + continue; + } + maskMap.set(mask.id, mask); + } + (_a = layer.effects) == null ? void 0 : _a.forEach((effect) => { + if (!effect) + return; + if (effect.maskReferences !== void 0 && effect.maskReferences.length > 0) { + const maskReferences = new Array(); + effect.maskReferences.forEach((mask) => { + const ID = mask.id; + const result = maskMap.get(ID); + if (result !== void 0) { + maskReferences.push(result); + } + }); + effect.maskReferences = maskReferences; + } + switch (effect.type()) { + case EffectType.Fill: + if (effect.fillMask !== void 0) { + const ID = effect.fillMask.id; + const result = maskMap.get(ID); + if (result !== void 0) { + effect.fillMask = result; + } + } + break; + case EffectType.Stroke: { + const strokeEffect = effect; + if (strokeEffect.path !== void 0) { + const ID = strokeEffect.path.id; + const result = maskMap.get(ID); + if (result !== void 0) { + strokeEffect.path = result; + } + } + break; + } + } + }); + if (layer.type() === LayerType.Text) { + const { pathOption } = layer; + if (pathOption == null ? void 0 : pathOption.path) { + const ID = pathOption.path.id; + const result = maskMap.get(ID); + if (result !== void 0) { + pathOption.path = result; + } + } + } +}; +const hasTrackMatte = (type) => { + switch (type) { + case TrackMatteType.Alpha: + case TrackMatteType.AlphaInverted: + return true; + default: + return false; + } +}; + +function readTagsOfFile(byteArray, code, context) { + switch (code) { + case TagCode.VectorCompositionBlock: + context.compositions.push(readVectorComposition(byteArray)); + break; + case TagCode.VideoCompositionBlock: + context.compositions.push(readVideoComposition(byteArray)); + break; + } +} + +const verifyAndMake = (compositions) => { + let success = compositions.length > 0; + for (const composition of compositions) { + if (!composition || !composition.verify()) { + success = false; + break; + } + } + if (!success) { + throw new Error("Verify composition failed!"); + } +}; +function installReference(compositions) { + if (!compositions || compositions.length === 0) + return; + const compositionMap = /* @__PURE__ */ new Map(); + compositions.forEach((composition) => { + if (composition) { + compositionMap.set(composition.id, composition); + } + }); + compositions.forEach((composition) => { + if (composition && composition.type() === CompositionType.Vector) { + const vectorComposition = composition; + if (vectorComposition.layers && vectorComposition.layers.length > 0) { + vectorComposition.layers.forEach((layer) => { + layer.containingComposition = vectorComposition; + const preComposeLayer = layer; + if (preComposeLayer.type() === LayerType.PreCompose && preComposeLayer.composition) { + const res = compositionMap.get(preComposeLayer.composition.id); + if (res) { + preComposeLayer.composition = res; + } + } + }); + } + } + }); +} +const decode = (byteArray) => { + const bodyByteArray = readBodyBytes(byteArray); + const { context } = bodyByteArray; + readTags(bodyByteArray, context, readTagsOfFile); + installReference(context.compositions); + const compositions = context.releaseCompositions(); + verifyAndMake(compositions); + return { compositions, tagLevel: context.tagLevel }; +}; +const readBodyBytes = (byteArray) => { + if (byteArray.length < 11) + throw new Error("PAG file is invalid!"); + const P = byteArray.readInt8(); + const A = byteArray.readInt8(); + const G = byteArray.readInt8(); + if (P !== 80 || A !== 65 || G !== 71) + throw new Error("invalid PAG header!"); + byteArray.readInt8(); + byteArray.readUint32(); + byteArray.readInt8(); + return byteArray.readBytes(); +}; + +class PAGFile { + constructor(compositions, tagLevel) { + this.tagLevel = 1; + this.compositions = []; + this.numLayers = 0; + this.scaledTimeRange = { start: 0, end: 0 }; + this.mainComposition = compositions[compositions.length - 1]; + this.scaledTimeRange.start = 0; + this.scaledTimeRange.end = this.mainComposition.duration; + this.compositions = compositions; + this.duration = this.mainComposition.duration; + this.implDuration = this.mainComposition.duration * 1e3 / this.mainComposition.frameRate; + for (const composition of compositions) { + if (composition.type() !== CompositionType.Vector) { + this.numLayers += 1; + continue; + } + for (const layer of composition.layers) { + if (layer.type() === LayerType.PreCompose) { + continue; + } + this.numLayers += 1; + } + } + this.tagLevel = tagLevel; + } + static fromArrayBuffer(arrayBuffer) { + if (!arrayBuffer || arrayBuffer.byteLength === 0) + throw new Error("Can't read empty array buffer!"); + const byteArray = new ByteArray(arrayBuffer, true); + const { compositions, tagLevel } = decode(byteArray); + return new PAGFile(compositions, tagLevel); + } + getVideoSequence() { + const compositionType = this.mainComposition.type(); + if (compositionType === CompositionType.Video) { + return getVideoSequenceFromVideoComposition(this.mainComposition); + } else if (compositionType === CompositionType.Vector) { + return getVideoSequenceFromVectorComposition(this.mainComposition); + } + } +} +const getVideoSequenceFromVideoComposition = (videoComposition) => { + if (!videoComposition.sequences || videoComposition.sequences.length === 0) { + throw new Error("PAGFile has no BMP video sequence!"); + } + return videoComposition.sequences[videoComposition.sequences.length - 1]; +}; +const getVideoSequenceFromVectorComposition = (vectorComposition) => { + const videoCompositions = getVideoComposition(vectorComposition); + if (videoCompositions.length > 1) + throw new Error("PAGFile has more than one BMP video sequence!"); + if (videoCompositions.length < 1) + throw new Error("PAGFile has no BMP video sequence!"); + const videoComposition = videoCompositions[0]; + return getVideoSequenceFromVideoComposition(videoComposition); +}; +const getVideoComposition = (vectorComposition) => { + const videoCompositions = []; + vectorComposition.layers.forEach((layer) => { + if (layer.type() !== LayerType.PreCompose) + return; + const { composition } = layer; + if ((composition == null ? void 0 : composition.type()) === CompositionType.Video) { + videoCompositions.push(composition); + return; + } + if ((composition == null ? void 0 : composition.type()) === CompositionType.Vector) { + videoCompositions.push(...getVideoComposition(composition)); + } + }); + return videoCompositions; +}; + +var RenderingMode = /* @__PURE__ */ ((RenderingMode2) => { + RenderingMode2["Canvas2D"] = "2d"; + RenderingMode2["WebGL"] = "WebGL"; + return RenderingMode2; +})(RenderingMode || {}); +var EventName = /* @__PURE__ */ ((EventName2) => { + EventName2["onAnimationStart"] = "onAnimationStart"; + EventName2["onAnimationEnd"] = "onAnimationEnd"; + EventName2["onAnimationCancel"] = "onAnimationCancel"; + EventName2["onAnimationRepeat"] = "onAnimationRepeat"; + EventName2["onAnimationUpdate"] = "onAnimationUpdate"; + EventName2["onAnimationPlay"] = "onAnimationPlay"; + EventName2["onAnimationPause"] = "onAnimationPause"; + return EventName2; +})(EventName || {}); +var ScaleMode = /* @__PURE__ */ ((ScaleMode2) => { + ScaleMode2["None"] = "None"; + ScaleMode2["Stretch"] = "Stretch"; + ScaleMode2["LetterBox"] = "LetterBox"; + ScaleMode2["Zoom"] = "Zoom"; + return ScaleMode2; +})(ScaleMode || {}); + +var types = /*#__PURE__*/Object.freeze({ + __proto__: null, + RenderingMode: RenderingMode, + EventName: EventName, + ScaleMode: ScaleMode +}); + +function destroyVerify(constructor) { + let functions = Object.getOwnPropertyNames(constructor.prototype).filter( + (name) => name !== "constructor" && typeof constructor.prototype[name] === "function" + ); + const proxyFn = (target, methodName) => { + const fn = target[methodName]; + target[methodName] = function (...args) { + if (this["destroyed"]) { + console.error(`Don't call ${methodName} of the PAGView that is destroyed.`); + return; + } + return fn.call(this, ...args); + }; + }; + functions.forEach((name) => proxyFn(constructor.prototype, name)); +} + +const detectWebGLContext = () => { + const canvas = document.createElement("canvas"); + const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"); + return !!gl; +}; +const createProgram = (gl, vertexShaderSource, fragmentShaderSource) => { + const program = gl.createProgram(); + if (!program) + throw new Error("Failed to create program."); + const vShader = createShader(gl, vertexShaderSource, gl.VERTEX_SHADER); + if (!vShader) + throw new Error("Failed to create vertex shader."); + gl.attachShader(program, vShader); + const fShader = createShader(gl, fragmentShaderSource, gl.FRAGMENT_SHADER); + if (!fShader) + throw new Error("Failed to create fragment shader."); + gl.attachShader(program, fShader); + gl.linkProgram(program); + const programMessage = gl.getProgramInfoLog(program); + if (programMessage) + console.log(programMessage); + const vShaderMessage = gl.getShaderInfoLog(vShader); + if (vShaderMessage) + console.log(vShaderMessage); + const fShaderMessage = gl.getShaderInfoLog(fShader); + if (fShaderMessage) + console.log(fShaderMessage); + return program; +}; +const createShader = (gl, source, type) => { + const shader = gl.createShader(type); + if (!shader) + throw new Error("Failed to create shader."); + gl.shaderSource(shader, source); + gl.compileShader(shader); + return shader; +}; +const getShaderSourceFromString = (str) => str.replace(/^\s+|\s+$/g, ""); +const getVideoParam = (pagFile, videoSequence) => { + const attribute = { + width: pagFile.mainComposition.width, + height: pagFile.mainComposition.height, + hasAlpha: videoSequence.alphaStartX > 0 || videoSequence.alphaStartY > 0, + alphaStartX: videoSequence.alphaStartX, + alphaStartY: videoSequence.alphaStartY, + sequenceWidth: videoSequence.width, + sequenceHeight: videoSequence.height, + MP4Width: (videoSequence.width + videoSequence.alphaStartX) % 2 === 0 ? videoSequence.width + videoSequence.alphaStartX : videoSequence.width + videoSequence.alphaStartX + 1, + MP4Height: (videoSequence.height + videoSequence.alphaStartY) % 2 === 0 ? videoSequence.height + videoSequence.alphaStartY : videoSequence.height + videoSequence.alphaStartY + 1 + }; + return attribute; +}; +const createAndSetupTexture = (gl) => { + const texture = gl.createTexture(); + if (!texture) + throw new Error("Failed to create texture."); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + return texture; +}; +const getWechatNetwork = () => { + return new Promise((resolve) => { + window.WeixinJSBridge.invoke( + "getNetworkType", + {}, + () => { + resolve(); + }, + () => { + resolve(); + } + ); + }); +}; + +class EventManager { + constructor() { + this.listenersMap = {}; + } + on(eventName, listener) { + if (this.listenersMap[eventName] === void 0) { + this.listenersMap[eventName] = []; + } + this.listenersMap[eventName].push(listener); + return; + } + off(eventName, listener) { + const listenerList = this.listenersMap[eventName]; + if (listenerList === void 0) + return; + if (listener === void 0) { + delete this.listenersMap[eventName]; + return; + } + const index = listenerList.findIndex((fn) => fn === listener); + listenerList.splice(index, 1); + return; + } + emit(eventName, ...payload) { + const listenerList = this.listenersMap[eventName]; + if (listenerList === void 0 || listenerList.length < 1) + return false; + for (const listener of listenerList) { + listener(...payload); + } + return true; + } +} + +var __defProp$6 = Object.defineProperty; +var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor; +var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols; +var __hasOwnProp$3 = Object.prototype.hasOwnProperty; +var __propIsEnum$3 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$3 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + if (__getOwnPropSymbols$3) + for (var prop of __getOwnPropSymbols$3(b)) { + if (__propIsEnum$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + } + return a; +}; +var __decorateClass$4 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) + __defProp$6(target, key, result); + return result; +}; +let Context = class { + constructor(pagFile, canvas, options) { + this.canvasSize = { width: 0, height: 0 }; + this.playing = false; + this.viewportSize = { x: 0, y: 0, width: 0, height: 0, scaleX: 1, scaleY: 1 }; + this.destroyed = false; + this.renderTimer = null; + this.repeatCount = 0; + this.viewScaleMode = ScaleMode.LetterBox; + this.debugData = { + FPS: 0, + decodePAGFile: 0, + createDir: 0, + coverMP4: 0, + writeFile: 0, + createDecoder: 0, + getFrame: 0, + draw: 0 + }; + const videoSequence = pagFile.getVideoSequence(); + if (!videoSequence) + throw new Error("PAGFile has no BMP video sequence!"); + delete videoSequence.composition; + this.videoSequence = videoSequence; + this.canvas = canvas; + this.videoParam = getVideoParam(pagFile, videoSequence); + this.eventManager = new EventManager(); + this.renderingMode = options.renderingMode || RenderingMode.WebGL; + this.updateSize(options.useScale); + this.setScaleMode(); + } + isPlaying() { + return this.playing; + } + isDestroyed() { + return this.destroyed; + } + duration() { + return this.videoSequence.frameCount / this.videoSequence.frameRate; + } + frameRate() { + return this.videoSequence.frameRate; + } + setRepeatCount(repeatCount = 1) { + this.repeatCount = repeatCount < 0 ? -1 : repeatCount - 1; + } + addListener(eventName, listener) { + return this.eventManager.on(eventName, listener); + } + removeListener(eventName, listener) { + return this.eventManager.off(eventName, listener); + } + scaleMode() { + return this.viewScaleMode; + } + setScaleMode(scaleMode = ScaleMode.LetterBox) { + this.viewScaleMode = scaleMode; + switch (scaleMode) { + case ScaleMode.None: + this.viewportSize = { + x: 0, + y: this.renderingMode === RenderingMode.WebGL ? this.canvas.height - this.videoParam.height : 0, + width: this.videoParam.width, + height: this.videoParam.height, + scaleX: 1, + scaleY: 1 + }; + break; + case ScaleMode.Stretch: + this.viewportSize = { + x: 0, + y: 0, + width: this.canvas.width, + height: this.canvas.height, + scaleX: this.canvas.width / this.videoParam.sequenceWidth, + scaleY: this.canvas.height / this.videoParam.sequenceHeight + }; + break; + case ScaleMode.LetterBox: + { + const scaleX = this.canvas.width / this.videoParam.sequenceWidth; + const scaleY = this.canvas.height / this.videoParam.sequenceHeight; + const scale = Math.min(scaleX, scaleY); + this.viewportSize = { + x: (this.canvas.width - this.videoParam.sequenceWidth * scale) / 2, + y: (this.canvas.height - this.videoParam.sequenceHeight * scale) / 2, + width: this.videoParam.sequenceWidth * scale, + height: this.videoParam.sequenceHeight * scale, + scaleX: scale, + scaleY: scale + }; + } + break; + case ScaleMode.Zoom: + { + const scaleX = this.canvas.width / this.videoParam.sequenceWidth; + const scaleY = this.canvas.height / this.videoParam.sequenceHeight; + const scale = Math.max(scaleX, scaleY); + this.viewportSize = { + x: (this.canvas.width - this.videoParam.sequenceWidth * scale) / 2, + y: (this.canvas.height - this.videoParam.sequenceHeight * scale) / 2, + width: this.videoParam.sequenceWidth * scale, + height: this.videoParam.sequenceHeight * scale, + scaleX: scale, + scaleY: scale + }; + } + break; + } + } + updateSize(useScale = true) { + if (!this.canvas) { + throw new Error("Canvas element is not found!"); + } + let displaySize; + const styleDeclaration = getComputedStyle(this.canvas); + const computedSize = { + width: Number(styleDeclaration.width.replace("px", "")), + height: Number(styleDeclaration.height.replace("px", "")) + }; + if (computedSize.width > 0 && computedSize.height > 0) { + displaySize = computedSize; + } else { + const styleSize = { + width: Number(this.canvas.style.width.replace("px", "")), + height: Number(this.canvas.style.height.replace("px", "")) + }; + if (styleSize.width > 0 && styleSize.height > 0) { + displaySize = styleSize; + } else { + displaySize = { + width: this.canvas.width, + height: this.canvas.height + }; + } + } + if (!useScale) { + this.canvas.width = this.canvas.width || displaySize.width; + this.canvas.height = this.canvas.height || displaySize.height; + return; + } + this.canvas.style.width = `${displaySize.width}px`; + this.canvas.style.height = `${displaySize.height}px`; + this.canvas.width = displaySize.width * window.devicePixelRatio; + this.canvas.height = displaySize.height * window.devicePixelRatio; + } + getDebugData() { + return this.debugData; + } + setDebugData(data) { + this.debugData = __spreadValues$3(__spreadValues$3({}, this.debugData), data); + } + loadContext() { + } + clearRender() { + } +}; +Context = __decorateClass$4([ + destroyVerify +], Context); + +const CORRECTION_UTC = 2082873600; +const DEFAULT_VOLUME = 1; +const getCharCode = (name) => { + const res = []; + for (let index = 0; index < name.length; index++) { + res.push(name.charCodeAt(index)); + } + return res; +}; +const toHexadecimal = (num) => [num >> 24, num >> 16 & 255, num >> 8 & 255, num & 255]; +const makeBox = (type, ...payload) => { + let size = 8; + let i = payload.length; + const len = i; + while (i) { + i -= 1; + size += payload[i].byteLength; + } + const result = new Uint8Array(size); + result[0] = size >> 24 & 255; + result[1] = size >> 16 & 255; + result[2] = size >> 8 & 255; + result[3] = size & 255; + result.set(type, 4); + for (i = 0, size = 8; i < len; ++i) { + result.set(payload[i], size); + size += payload[i].byteLength; + } + return result; +}; +class MP4Generator { + constructor(boxParam) { + this.param = boxParam; + } + ftyp() { + return makeBox( + getCharCode("ftyp"), + new Uint8Array(getCharCode("isom")), + new Uint8Array([0, 0, 0, 1]), + new Uint8Array(getCharCode("isom")), + new Uint8Array(getCharCode("iso2")), + new Uint8Array(getCharCode("avc1")), + new Uint8Array(getCharCode("mp41")) + ); + } + moov() { + const traks = this.param.tracks.map((track) => this.trak(track)).reverse(); + return makeBox(getCharCode("moov"), this.mvhd(), ...traks, this.mvex()); + } + moof() { + return makeBox(getCharCode("moof"), this.mfhd(), this.traf()); + } + mdat() { + const buffer = new Uint8Array(this.param.track.len); + let offset = 0; + this.param.videoSequence.headers.forEach((header) => { + buffer.set(new Uint8Array(header.data.data()), offset); + offset += header.length; + }); + this.param.videoSequence.frames.forEach((frame, index) => { + buffer.set(new Uint8Array(frame.fileBytes.data.data()), offset); + offset += frame.fileBytes.length; + }); + return makeBox(getCharCode("mdat"), buffer); + } + mvhd() { + return makeBox( + getCharCode("mvhd"), + new Uint8Array([ + 0, + 0, + 0, + 0, + ...toHexadecimal(CORRECTION_UTC), + ...toHexadecimal(CORRECTION_UTC), + ...toHexadecimal(this.param.timescale), + ...toHexadecimal(this.param.duration), + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ]) + ); + } + trak(track) { + return makeBox(getCharCode("trak"), this.tkhd(track), this.edts(track), this.mdia(track)); + } + tkhd(track) { + return makeBox( + getCharCode("tkhd"), + new Uint8Array([ + 0, + 0, + 0, + 1, + ...toHexadecimal(CORRECTION_UTC), + ...toHexadecimal(CORRECTION_UTC), + ...toHexadecimal(track.id), + 0, + 0, + 0, + 0, + ...toHexadecimal(track.duration), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + DEFAULT_VOLUME >> 0 & 255, + DEFAULT_VOLUME % 1 * 10 >> 0 & 255, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 0, + 0, + 0, + track.width >> 8 & 255, + track.width & 255, + 0, + 0, + track.height >> 8 & 255, + track.height & 255, + 0, + 0 + ]) + ); + } + edts(track) { + return makeBox(getCharCode("edts"), this.elst(track)); + } + elst(track) { + return makeBox( + getCharCode("elst"), + new Uint8Array([ + 0, + 0, + 0, + 0, + ...toHexadecimal(1), + ...toHexadecimal(track.duration), + ...toHexadecimal(track.implicitOffset * Math.floor(track.duration / track.samples.length)), + 0, + 1, + 0, + 0 + ]) + ); + } + mdia(track) { + return makeBox(getCharCode("mdia"), this.mdhd(), this.hdlr(), this.minf(track)); + } + mdhd() { + return makeBox( + getCharCode("mdhd"), + new Uint8Array([ + 0, + 0, + 0, + 0, + ...toHexadecimal(CORRECTION_UTC), + ...toHexadecimal(CORRECTION_UTC), + ...toHexadecimal(this.param.timescale), + ...toHexadecimal(0), + 85, + 196, + 0, + 0 + ]) + ); + } + hdlr() { + return makeBox( + getCharCode("hdlr"), + new Uint8Array([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 118, + 105, + 100, + 101, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 86, + 105, + 100, + 101, + 111, + 72, + 97, + 110, + 100, + 108, + 101, + 114, + 0 + ]) + ); + } + minf(track) { + return makeBox(getCharCode("minf"), this.vmhd(), this.dinf(), this.stbl(track)); + } + vmhd() { + return makeBox( + getCharCode("vmhd"), + new Uint8Array([ + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]) + ); + } + dinf() { + return makeBox(getCharCode("dinf"), this.dref()); + } + dref() { + return makeBox( + getCharCode("dref"), + new Uint8Array([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 12, + 117, + 114, + 108, + 32, + 0, + 0, + 0, + 1 + ]) + ); + } + stbl(track) { + return makeBox( + getCharCode("stbl"), + this.stsd(track), + this.stts(track), + this.ctts(track), + this.stss(track), + this.stsc(), + this.stsz(), + this.stco() + ); + } + stsd(track) { + const data = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1 + ]; + return makeBox(getCharCode("stsd"), new Uint8Array(data), this.avc1(track)); + } + avc1(track) { + const data = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + track.width >> 8 & 255, + track.width & 255, + track.height >> 8 & 255, + track.height & 255, + 0, + 72, + 0, + 0, + 0, + 72, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 18, + 98, + 105, + 110, + 101, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 24, + 255, + 255 + ]; + return makeBox(getCharCode("avc1"), new Uint8Array(data), this.avcc(track)); + } + avcc(track) { + let sps = []; + let pps = []; + track.sps.forEach((byteData) => { + const len = byteData.length - 4; + sps.push(len >>> 8 & 255); + sps.push(len & 255); + sps = sps.concat(Array.prototype.slice.call(new Uint8Array(byteData.data.data(), 4))); + }); + track.pps.forEach((byteData) => { + const len = byteData.length - 4; + pps.push(len >>> 8 & 255); + pps.push(len & 255); + pps = pps.concat(Array.prototype.slice.call(new Uint8Array(byteData.data.data(), 4))); + }); + const data = [ + 1, + sps[3], + sps[4], + sps[5], + 252 | 3, + 224 | track.sps.length + ].concat(sps).concat([track.pps.length]).concat(pps); + return makeBox(getCharCode("avcC"), new Uint8Array(data)); + } + stts(track) { + return makeBox( + getCharCode("stts"), + new Uint8Array([ + 0, + 0, + 0, + 0, + ...toHexadecimal(1), + ...toHexadecimal(track.samples.length), + ...toHexadecimal(Math.floor(track.duration / track.samples.length)) + ]) + ); + } + ctts(track) { + const sampleCount = track.pts.length; + const sampleDelta = Math.floor(track.duration / sampleCount); + const data = [ + 0, + 0, + 0, + 0, + ...toHexadecimal(sampleCount) + ]; + for (let i = 0; i < sampleCount; i++) { + data.push(...toHexadecimal(1)); + const dts = i * sampleDelta; + const pts = (track.pts[i] + track.implicitOffset) * sampleDelta; + data.push(...toHexadecimal(pts - dts)); + } + return makeBox(getCharCode("ctts"), new Uint8Array(data)); + } + stss(track) { + const iFrames = track.samples.filter((sample) => sample.flags.isKeyFrame).map((sample) => sample.index + 1); + const data = [ + 0, + 0, + 0, + 0, + ...toHexadecimal(iFrames.length) + ]; + iFrames.forEach((iFrame) => { + data.push(...toHexadecimal(iFrame)); + }); + return makeBox(getCharCode("stss"), new Uint8Array(data)); + } + stsc() { + return makeBox( + getCharCode("stsc"), + new Uint8Array([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]) + ); + } + stsz() { + return makeBox( + getCharCode("stsz"), + new Uint8Array([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]) + ); + } + stco() { + return makeBox( + getCharCode("stco"), + new Uint8Array([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]) + ); + } + mvex() { + const trexs = this.param.tracks.map((track) => this.trex(track)).reverse(); + return makeBox(getCharCode("mvex"), ...trexs); + } + trex(track) { + return makeBox( + getCharCode("trex"), + new Uint8Array([ + 0, + 0, + 0, + 0, + track.id >> 24, + track.id >> 16 & 255, + track.id >> 8 & 255, + track.id & 255, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1 + ]) + ); + } + mfhd() { + return makeBox( + getCharCode("mfhd"), + new Uint8Array([ + 0, + 0, + 0, + 0, + this.param.sequenceNumber >> 24, + this.param.sequenceNumber >> 16 & 255, + this.param.sequenceNumber >> 8 & 255, + this.param.sequenceNumber & 255 + ]) + ); + } + traf() { + const sdtp = this.sdtp(); + this.param.offset = sdtp.length + 72; + return makeBox(getCharCode("traf"), this.tfhd(), this.tfdt(), this.trun(), sdtp); + } + tfhd() { + return makeBox( + getCharCode("tfhd"), + new Uint8Array([ + 0, + 0, + 0, + 0, + ...toHexadecimal(this.param.track.id) + ]) + ); + } + tfdt() { + return makeBox( + getCharCode("tfdt"), + new Uint8Array([ + 0, + 0, + 0, + 0, + ...toHexadecimal(this.param.baseMediaDecodeTime) + ]) + ); + } + trun() { + const samples = this.param.track.samples || []; + const len = samples.length; + const arraylen = 12 + 16 * len; + this.param.offset += 8 + arraylen; + const data = [ + 0, + 0, + 15, + 1, + ...toHexadecimal(len), + ...toHexadecimal(this.param.offset) + ]; + this.param.track.samples.forEach((sample) => { + const paddingValue = 0; + const { duration, size, flags, cts } = sample; + data.push(...toHexadecimal(duration)); + data.push(...toHexadecimal(size)); + data.push(flags.isLeading << 2 | flags.dependsOn); + data.push(flags.isDependedOn << 6 | flags.hasRedundancy << 4 | paddingValue << 1 | flags.isNonSync); + data.push(flags.degradPrio & 240 << 8); + data.push(flags.degradPrio & 15); + data.push(...toHexadecimal(cts)); + }); + return makeBox(getCharCode("trun"), new Uint8Array(data)); + } + sdtp() { + const buffer = new Uint8Array(4 + this.param.track.samples.length); + this.param.track.samples.forEach((sample, index) => { + buffer[index + 4] = sample.flags.dependsOn << 4 | sample.flags.isDependedOn << 2 | sample.flags.hasRedundancy; + }); + return makeBox(getCharCode("sdtp"), buffer); + } +} + +var __defProp$5 = Object.defineProperty; +var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols; +var __hasOwnProp$2 = Object.prototype.hasOwnProperty; +var __propIsEnum$2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$2 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + if (__getOwnPropSymbols$2) + for (var prop of __getOwnPropSymbols$2(b)) { + if (__propIsEnum$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + } + return a; +}; +const SEQUENCE_NUMBER = 1; +const BASE_MEDIA_DECODE_TIME = 0; +const BASE_MEDIA_TIME_SCALE = 6e3; +const coverToMp4 = (videoSequence) => { + const sequence = IS_IOS ? getVirtualSequence(videoSequence) : videoSequence; + const mp4Track = makeMp4Track(sequence); + if (!mp4Track || mp4Track.len === 0) + throw new Error("mp4Track is empty"); + const boxParam = { + offset: 0, + tracks: [mp4Track], + track: mp4Track, + duration: mp4Track.duration, + timescale: mp4Track.timescale, + sequenceNumber: SEQUENCE_NUMBER, + baseMediaDecodeTime: BASE_MEDIA_DECODE_TIME, + nalusBytesLen: mp4Track.len, + videoSequence: sequence + }; + const mp4Generator = new MP4Generator(boxParam); + const ftyp = mp4Generator.ftyp(); + const moov = mp4Generator.moov(); + const moof = mp4Generator.moof(); + const mdat = mp4Generator.mdat(); + return concatUint8Arrays([ftyp, moov, moof, mdat]); +}; +const makeMp4Track = (videoSequence) => { + if (videoSequence.headers.length < 2) + throw new Error("Bad header data in video sequence!"); + if (videoSequence.frames.length === 0) + throw new Error("There is no frame data in the video sequence!"); + const mp4Track = { + id: 1, + type: "video", + timescale: BASE_MEDIA_TIME_SCALE, + duration: Math.floor(videoSequence.frames.length * BASE_MEDIA_TIME_SCALE / videoSequence.frameRate), + width: videoSequence.getVideoWidth(), + height: videoSequence.getVideoHeight(), + sps: [videoSequence.headers[0]], + pps: [videoSequence.headers[1]], + implicitOffset: getImplicitOffset(videoSequence.frames), + len: 0, + pts: [], + samples: [] + }; + const headerLen = videoSequence.headers.reduce((pre, cur) => pre + cur.length, 0); + const sampleDelta = mp4Track.duration / videoSequence.frames.length; + videoSequence.frames.forEach((frame, index) => { + var _a; + let sampleSize = (_a = frame.fileBytes.length) != null ? _a : 0; + if (index === 0) { + sampleSize += headerLen; + } + mp4Track.len += sampleSize; + mp4Track.pts.push(frame.frame); + mp4Track.samples.push({ + index, + size: sampleSize, + duration: sampleDelta, + cts: (frame.frame + mp4Track.implicitOffset - index) * sampleDelta, + flags: { + isKeyFrame: frame.isKeyframe, + isNonSync: frame.isKeyframe ? 0 : 1, + dependsOn: frame.isKeyframe ? 2 : 1, + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0 + } + }); + }); + return mp4Track; +}; +const getImplicitOffset = (videoFrames) => { + return Math.max(...videoFrames.map((videoFrame, index) => index - videoFrame.frame)); +}; +const getVirtualSequence = (videoSequence) => { + const len = videoSequence.frames.length; + for (let index = 0; index < videoSequence.frames.length; index++) { + const frame = __spreadValues$2({}, videoSequence.frames[index]); + if (frame.isKeyframe && index > 0) { + break; + } + frame.frame += len; + videoSequence.frames.push(frame); + } + return videoSequence; +}; + +let eventHandlers = {}; +const addListener = (node, event, handler, capture = false) => { + var _a; + if (!(event in eventHandlers)) { + eventHandlers[event] = []; + } + (_a = eventHandlers[event]) == null ? void 0 : _a.push({ node, handler, capture }); + node.addEventListener(event, handler, capture); +}; +const removeListener = (targetNode, event, targetHandler) => { + var _a, _b, _c, _d; + if (!(event in eventHandlers)) + return; + if (targetHandler) { + (_a = eventHandlers[event]) == null ? void 0 : _a.filter(({ node, handler }) => node === targetNode && handler === targetHandler).forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture)); + eventHandlers[event] = (_b = eventHandlers[event]) == null ? void 0 : _b.filter( + ({ node, handler }) => !(node === targetNode && handler === targetHandler) + ); + } else { + (_c = eventHandlers[event]) == null ? void 0 : _c.filter(({ node }) => node === targetNode).forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture)); + eventHandlers[event] = (_d = eventHandlers[event]) == null ? void 0 : _d.filter(({ node }) => node !== targetNode); + } +}; +const removeAllListeners = (targetNode) => { + Object.keys(eventHandlers).forEach((event) => { + var _a, _b; + const videoEvent = event; + (_a = eventHandlers[videoEvent]) == null ? void 0 : _a.filter(({ node }) => node === targetNode).forEach(({ node, handler, capture }) => node.removeEventListener(videoEvent, handler, capture)); + eventHandlers[videoEvent] = (_b = eventHandlers[videoEvent]) == null ? void 0 : _b.filter(({ node }) => node !== targetNode); + }); +}; + +var __defProp$4 = Object.defineProperty; +var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor; +var __decorateClass$3 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) + __defProp$4(target, key, result); + return result; +}; +const IS_WECHAT = navigator && /MicroMessenger/i.test(navigator.userAgent); +const playVideoElement = async (videoElement) => { + if (IS_WECHAT && window.WeixinJSBridge) { + await getWechatNetwork(); + } + try { + await videoElement.play(); + } catch (error) { + throw new Error(error.message); + } +}; +let VideoReader = class { + constructor(videoSequence) { + this.destroyed = false; + this.frameRate = 0; + this._duration = videoSequence.frameCount / videoSequence.frameRate; + this.frameRate = videoSequence.frameRate; + } + static create(videoSequence) { + const videoReader = new VideoReader(videoSequence); + const debugData = videoReader.load(videoSequence); + return { videoReader, debugData }; + } + getVideoElement() { + return this.videoElement; + } + progress() { + return Math.round(this.videoElement.currentTime / this._duration * 100) / 100; + } + duration() { + return this._duration; + } + currentTime() { + return this.videoElement.currentTime || 0; + } + start() { + return playVideoElement(this.videoElement); + } + pause() { + var _a; + (_a = this.videoElement) == null ? void 0 : _a.pause(); + } + seek(time) { + return new Promise((resolve) => { + const seekCallback = () => { + removeListener(this.videoElement, "seeked", seekCallback); + resolve(); + }; + addListener(this.videoElement, "seeked", seekCallback); + this.videoElement.currentTime = time; + }); + } + addListener(event, handler) { + addListener(this.videoElement, event, handler); + } + removeAllListeners() { + removeAllListeners(this.videoElement); + } + getFrameData(callback) { + } + clearCallback() { + } + destroy() { + this.removeAllListeners(); + this.videoElement = void 0; + this.destroyed = true; + } + load(videoSequence) { + this.videoElement = document.createElement("video"); + this.videoElement.style.display = "none"; + this.videoElement.muted = true; + this.videoElement.playsInline = true; + const clock = new Clock(); + const mp4Data = coverToMp4(videoSequence); + clock.mark("coverMP4"); + this.videoElement.src = URL.createObjectURL(new Blob([mp4Data], { type: "video/mp4" })); + this.videoElement.load(); + return { + coverMP4: clock.measure("", "coverMP4") + }; + } +}; +VideoReader = __decorateClass$3([ + destroyVerify +], VideoReader); + +var __defProp$3 = Object.defineProperty; +var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor; +var __decorateClass$2 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) + __defProp$3(target, key, result); + return result; +}; +navigator && /MicroMessenger/i.test(navigator.userAgent); +let View = class extends Context { + constructor(pagFile, canvas, options) { + super(pagFile, canvas, options); + this.fpsBuffer = []; + this.currentFrame = -1; + this.needSeek = false; + this.videoReader = this.createVideoReader(this.videoSequence); + } + async play() { + if (this.playing) + return; + this.playing = true; + await this.videoReader.start(); + await this.flushLoop(); + if (this.getProgress() === 0) { + this.eventManager.emit(EventName.onAnimationStart); + } + this.eventManager.emit(EventName.onAnimationPlay); + } + pause() { + if (!this.playing) + return; + this.videoReader.pause(); + this.clearTimer(); + this.playing = false; + this.eventManager.emit(EventName.onAnimationPause); + } + stop() { + this.videoReader.pause(); + this.videoReader.seek(0); + this.clearRender(); + this.playing = false; + this.eventManager.emit(EventName.onAnimationCancel); + } + destroy() { + this.clearTimer(); + this.clearRender(); + this.canvas = null; + this.videoReader.destroy(); + this.destroyed = true; + } + getProgress() { + return this.currentFrame / this.videoSequence.frameCount; + } + setProgress(progress) { + if (progress < 0 || progress > 1) + throw new Error("progress must be between 0.0 and 1.0!"); + const currentFrame = Math.round(progress * this.videoSequence.frameCount); + if (this.currentFrame !== currentFrame) { + this.needSeek = true; + this.currentFrame = currentFrame; + } + } + flush() { + return this.flushInternal(true); + } + draw() { + } + createVideoReader(videoSequence) { + const { videoReader, debugData } = VideoReader.create(videoSequence); + this.setDebugData(debugData); + if (!IS_IOS) { + videoReader.addListener("ended", () => { + this.repeat(); + }); + } + return videoReader; + } + async repeat() { + if (this.repeatCount === 0) { + this.setProgress(1); + await this.flushInternal(true); + this.videoReader.pause(); + this.clearTimer(); + this.playing = false; + this.eventManager.emit("onAnimationEnd"); + return false; + } + this.repeatCount -= 1; + if (IS_IOS) { + await this.videoReader.seek(0); + } else { + this.videoReader.start(); + } + this.eventManager.emit("onAnimationRepeat"); + return true; + } + flushLoop() { + this.renderTimer = window.requestAnimationFrame(() => { + this.flushLoop(); + }); + if (IS_IOS && this.duration() - this.videoReader.currentTime() <= 1 / this.frameRate()) { + this.repeat(); + } + return this.flushInternal(false); + } + clearTimer() { + if (this.renderTimer) { + window.cancelAnimationFrame(this.renderTimer); + this.renderTimer = null; + } + } + updateFPS() { + let now; + try { + now = performance.now(); + } catch (e) { + now = Date.now(); + } + this.fpsBuffer = this.fpsBuffer.filter((value) => now - value <= 1e3); + this.fpsBuffer.push(now); + this.setDebugData({ FPS: this.fpsBuffer.length }); + } + async flushInternal(sync) { + const clock = new Clock(); + if (this.needSeek) { + if (sync) { + await this.videoReader.seek(this.currentFrame / this.frameRate()); + } else { + this.videoReader.seek(this.currentFrame / this.frameRate()); + } + this.needSeek = false; + } else { + this.currentFrame = Math.floor(this.videoReader.currentTime() * this.frameRate()); + } + this.draw(); + clock.mark("draw"); + this.setDebugData({ draw: clock.measure("", "draw") }); + this.updateFPS(); + this.eventManager.emit(EventName.onAnimationUpdate); + } +}; +View = __decorateClass$2([ + destroyVerify +], View); + +var __defProp$2 = Object.defineProperty; +var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor; +var __decorateClass$1 = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) + __defProp$2(target, key, result); + return result; +}; +let PAG2dView = class extends View { + constructor(pagFile, canvas, options) { + var _a; + super(pagFile, canvas, options); + const context = (_a = this.canvas) == null ? void 0 : _a.getContext("2d"); + if (!context) + throw new Error("Can't get 2d context!"); + this.context = context; + this.renderCanvas2D = document.createElement("canvas"); + this.renderCanvas2D.width = this.videoParam.MP4Width; + this.renderCanvas2D.height = this.videoParam.MP4Height; + const renderCanvas2DContext = this.renderCanvas2D.getContext("2d"); + if (!renderCanvas2DContext) + throw new Error("Can't get 2d context!"); + this.renderCanvas2DContext = renderCanvas2DContext; + } + draw() { + if (this.videoParam.hasAlpha) { + this.renderCanvas2DContext.clearRect(0, 0, this.renderCanvas2D.width, this.renderCanvas2D.height); + this.renderCanvas2DContext.drawImage( + this.videoReader.getVideoElement(), + 0, + 0, + this.renderCanvas2D.width, + this.renderCanvas2D.height + ); + const frameOne = this.renderCanvas2DContext.getImageData( + 0, + 0, + this.videoParam.sequenceWidth, + this.videoParam.sequenceHeight + ); + const frameTwo = this.renderCanvas2DContext.getImageData( + this.videoParam.alphaStartX, + this.videoParam.alphaStartY, + this.videoParam.sequenceWidth, + this.videoParam.sequenceHeight + ); + const length = frameOne.data.length / 4; + for (let i = 0; i < length; i++) { + frameOne.data[i * 4 + 3] = frameTwo.data[i * 4 + 0]; + } + this.renderCanvas2DContext.clearRect(0, 0, this.renderCanvas2D.width, this.renderCanvas2D.height); + this.renderCanvas2DContext.putImageData( + frameOne, + 0, + 0, + 0, + 0, + this.videoParam.sequenceWidth, + this.videoParam.sequenceHeight + ); + this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); + this.context.drawImage( + this.renderCanvas2D, + 0, + 0, + this.videoParam.sequenceWidth, + this.videoParam.sequenceHeight, + this.viewportSize.x, + this.viewportSize.y, + this.viewportSize.width, + this.viewportSize.height + ); + } else { + this.context.drawImage( + this.videoReader.getVideoElement(), + 0, + 0, + this.videoParam.MP4Width, + this.videoParam.MP4Height, + this.viewportSize.x, + this.viewportSize.y, + this.viewportSize.width, + this.viewportSize.height + ); + } + } + clearRender() { + this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); + } +}; +PAG2dView = __decorateClass$1([ + destroyVerify +], PAG2dView); + +const VERTEX_2D_SHADER = ` + attribute vec2 a_position; + attribute vec2 a_texCoord; + + uniform vec2 u_resolution; + uniform vec2 u_scale; + + varying vec2 v_texCoord; + + + void main() { + // convert the rectangle from pixels to 0.0 to 1.0 + vec2 zeroToOne = a_position / u_resolution; + + // convert from 0->1 to 0->2 + vec2 zeroToTwo = zeroToOne * 2.0; + + // convert from 0->2 to -1->+1 (clipspace) + vec2 clipSpace = zeroToTwo - 1.0; + + gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); + + // pass the texCoord to the fragment shader + // The GPU will interpolate this value between points. + v_texCoord = a_texCoord / u_scale; + } + `; +const FRAGMENT_2D_SHADER = ` + precision mediump float; + // our texture + uniform sampler2D u_image; + + // the texCoords passed in from the vertex shader. + varying vec2 v_texCoord; + + void main() { + gl_FragColor = texture2D(u_image, v_texCoord); + } + `; +const FRAGMENT_2D_SHADER_TRANSPARENT = ` + precision mediump float; + // our texture + uniform sampler2D u_image; + + // the texCoords passed in from the vertex shader. + varying vec2 v_texCoord; + uniform vec2 v_alphaStart; + + void main() { + vec4 color = texture2D(u_image, v_texCoord); + vec4 alpha = texture2D(u_image, vec2(v_texCoord.x + v_alphaStart.x, v_texCoord.y + v_alphaStart.y)); + gl_FragColor = vec4(color.rgb * alpha.r, alpha.r); + } + `; + +var __defProp$1 = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols; +var __hasOwnProp$1 = Object.prototype.hasOwnProperty; +var __propIsEnum$1 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$1 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + if (__getOwnPropSymbols$1) + for (var prop of __getOwnPropSymbols$1(b)) { + if (__propIsEnum$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + } + return a; +}; +var __decorateClass = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) + __defProp$1(target, key, result); + return result; +}; +let PAGWebGLView = class extends View { + constructor(pagFile, canvas, options) { + var _a; + super(pagFile, canvas, options); + this.scale = { x: 1, y: 1 }; + this.positionLocation = 0; + this.texcoordLocation = 0; + this.alphaStartLocation = null; + this.scaleLocation = null; + this.resolutionLocation = null; + this.positionBuffer = null; + this.texcoordBuffer = null; + this.originalVideoTexture = null; + this.renderingTexture = null; + this.renderingFbo = null; + const gl = (_a = this.canvas) == null ? void 0 : _a.getContext("webgl", __spreadValues$1({}, WEBGL_CONTEXT_ATTRIBUTES)); + if (!gl) + throw new Error("Can't get WebGL context!"); + this.gl = gl; + if (this.videoParam.hasAlpha) { + this.program = createProgram( + this.gl, + getShaderSourceFromString(VERTEX_2D_SHADER), + getShaderSourceFromString(FRAGMENT_2D_SHADER_TRANSPARENT) + ); + } else { + this.program = createProgram( + this.gl, + getShaderSourceFromString(VERTEX_2D_SHADER), + getShaderSourceFromString(FRAGMENT_2D_SHADER) + ); + } + this.loadContext(); + } + loadContext() { + if (!this.program) + throw new Error("program is not initialized"); + this.positionLocation = this.gl.getAttribLocation(this.program, "a_position"); + if (this.positionLocation === -1) + throw new Error("unable to get attribute location for a_position"); + this.scaleLocation = this.gl.getUniformLocation(this.program, "u_scale"); + if (this.scaleLocation === -1) + throw new Error("unable to get attribute location for u_scale"); + this.texcoordLocation = this.gl.getAttribLocation(this.program, "a_texCoord"); + if (this.texcoordLocation === -1) + throw new Error("unable to get attribute location for a_texCoord"); + if (this.videoParam.hasAlpha) { + this.alphaStartLocation = this.gl.getUniformLocation(this.program, "v_alphaStart"); + if (!this.alphaStartLocation) + throw new Error("unable to get attribute location for v_alphaStart"); + } + this.resolutionLocation = this.gl.getUniformLocation(this.program, "u_resolution"); + if (this.positionLocation === -1) + throw new Error("unable to get attribute location for u_resolution"); + this.positionBuffer = this.gl.createBuffer(); + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer); + this.setRectangle(this.gl, 0, 0, this.videoParam.MP4Width, this.videoParam.MP4Height); + this.texcoordBuffer = this.gl.createBuffer(); + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.texcoordBuffer); + this.gl.bufferData( + this.gl.ARRAY_BUFFER, + new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]), + this.gl.STATIC_DRAW + ); + this.renderingTexture = createAndSetupTexture(this.gl); + this.gl.texImage2D( + this.gl.TEXTURE_2D, + 0, + this.gl.RGBA, + this.videoParam.sequenceWidth, + this.videoParam.sequenceHeight, + 0, + this.gl.RGBA, + this.gl.UNSIGNED_BYTE, + null + ); + this.renderingFbo = this.gl.createFramebuffer(); + if (!this.renderingFbo) + throw new Error("unable to create framebuffer"); + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.renderingFbo); + this.gl.framebufferTexture2D( + this.gl.FRAMEBUFFER, + this.gl.COLOR_ATTACHMENT0, + this.gl.TEXTURE_2D, + this.renderingTexture, + 0 + ); + this.originalVideoTexture = createAndSetupTexture(this.gl); + } + draw() { + this.gl.bindTexture(this.gl.TEXTURE_2D, this.originalVideoTexture); + this.texImage2D(); + this.gl.clearColor(0, 0, 0, 0); + this.gl.clear(this.gl.COLOR_BUFFER_BIT); + this.gl.useProgram(this.program); + this.gl.enableVertexAttribArray(this.positionLocation); + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer); + const size = 2; + const type = this.gl.FLOAT; + const normalize = false; + const stride = 0; + const offset = 0; + this.gl.vertexAttribPointer(this.positionLocation, size, type, normalize, stride, offset); + this.gl.enableVertexAttribArray(this.texcoordLocation); + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.texcoordBuffer); + this.gl.vertexAttribPointer(this.texcoordLocation, size, type, normalize, stride, offset); + if (this.videoParam.hasAlpha) { + this.gl.uniform2f( + this.alphaStartLocation, + this.videoParam.alphaStartX / this.videoParam.MP4Width / this.scale.x, + this.videoParam.alphaStartY / this.videoParam.MP4Height / this.scale.y + ); + } + this.gl.bindTexture(this.gl.TEXTURE_2D, this.originalVideoTexture); + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.renderingFbo); + this.gl.uniform2f(this.resolutionLocation, this.videoParam.sequenceWidth, this.videoParam.sequenceHeight); + this.gl.uniform2f(this.scaleLocation, this.scale.x, this.scale.y); + this.gl.viewport(0, 0, this.videoParam.sequenceWidth, this.videoParam.sequenceHeight); + const primitiveType = this.gl.TRIANGLES; + const count = 6; + this.gl.drawArrays(primitiveType, offset, count); + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); + this.gl.uniform2f(this.resolutionLocation, this.videoParam.sequenceWidth, this.videoParam.sequenceHeight); + this.gl.viewport(this.viewportSize.x, this.viewportSize.y, this.viewportSize.width, this.viewportSize.height); + this.gl.drawArrays(primitiveType, offset, count); + } + clearRender() { + this.gl.clearColor(0, 0, 0, 0); + this.gl.clear(this.gl.COLOR_BUFFER_BIT); + } + detectWebGLContext() { + return detectWebGLContext(); + } + texImage2D() { + this.gl.texImage2D( + this.gl.TEXTURE_2D, + 0, + this.gl.RGBA, + this.gl.RGBA, + this.gl.UNSIGNED_BYTE, + this.videoReader.getVideoElement() + ); + } + setRectangle(gl, x, y, width, height) { + const x1 = x; + const x2 = x + width; + const y1 = y; + const y2 = y + height; + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([x1, y1, x2, y1, x1, y2, x1, y2, x2, y1, x2, y2]), gl.STATIC_DRAW); + } +}; +PAGWebGLView = __decorateClass([ + destroyVerify +], PAGWebGLView); + +var __defProp = Object.defineProperty; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +class PAGView { + static init(data, canvas, options = {}) { + const opts = __spreadValues({ + renderingMode: RenderingMode.WebGL + }, options); + const clock = new Clock(); + const pagFile = PAGFile.fromArrayBuffer(data); + clock.mark("decode"); + let pagView; + if (opts.renderingMode === RenderingMode.WebGL) { + pagView = new PAGWebGLView(pagFile, canvas, opts); + } else { + pagView = new PAG2dView(pagFile, canvas, opts); + } + pagView.setDebugData({ decodePAGFile: clock.measure("", "decode") }); + return pagView; + } +} + +export { PAGView, types }; + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-pag/pag.ts b/uni_modules/UniDevTools/src/tmui/components/tm-pag/pag.ts new file mode 100644 index 0000000..2cdd086 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-pag/pag.ts @@ -0,0 +1,2489 @@ + +const e = "android" === wx.getSystemInfoSync().platform, + t = `${wx.env.USER_DATA_PATH}/pag/`, + i = wx.getFileSystemManager(); +let r; +try { + r = performance.now.bind(performance) +} catch (e) { + r = Date.now +} +class s { + constructor() { + this.startTime = r(), this.markers = {} + } + reset() { + this.startTime = r(), this.markers = {} + } + mark(e) { + e ? Object.keys(this.markers).find((t => t === e)) ? console.log( + `Clock.mark(): The specified marker name '${e}' already exists!`) : this.markers[e] = r() : console + .log("Clock.mark(): An empty marker name was specified!") + } + measure(e, t) { + let i, s; + if (e) { + if (!Object.keys(this.markers).find((t => t === e))) return console.log( + `Clock.measure(): The specified makerFrom '${e}' does not exist!`), 0; + i = this.markers[e] + } else i = this.startTime; + if (t) { + if (!Object.keys(this.markers).find((e => e === t))) return console.log( + `Clock.measure(): The specified makerTo '${t}' does not exist!`), 0; + s = this.markers[t] + } else s = r(); + return s - i + } +} + +function a(e) { + let t = Object.getOwnPropertyNames(e.prototype).filter((t => "constructor" !== t && "function" == typeof e + .prototype[t])); + const i = (e, t) => { + const i = e[t]; + e[t] = function (...e) { + if (!this.destroyed) return i.call(this, ...e); + console.error(`Don't call ${t} of the PAGView that is destroyed.`) + } + }; + t.forEach((t => i(e.prototype, t))) +} +const n = { + alpha: !0, + depth: !1, + stencil: !1, + antialias: !1 +}; +var o = (e => (e[e.Normal = 0] = "Normal", e[e.Multiply = 1] = "Multiply", e[e.Screen = 2] = "Screen", e[e.Overlay = + 3] = "Overlay", e[e.Darken = 4] = "Darken", e[e.Lighten = 5] = "Lighten", e[e.ColorDodge = 6] = + "ColorDodge", e[e.ColorBurn = 7] = "ColorBurn", e[e.HardLight = 8] = "HardLight", e[e.SoftLight = 9] = + "SoftLight", e[e.Difference = 10] = "Difference", e[e.Exclusion = 11] = "Exclusion", e[e.Hue = 12] = "Hue", + e[e.Saturation = 13] = "Saturation", e[e.Color = 14] = "Color", e[e.Luminosity = 15] = "Luminosity", e[e + .DestinationIn = 21] = "DestinationIn", e[e.DestinationOut = 22] = "DestinationOut", e[e + .DestinationATop = 23] = "DestinationATop", e[e.SourceIn = 24] = "SourceIn", e[e.SourceOut = 25] = + "SourceOut", e[e.Xor = 26] = "Xor", e))(o || {}), + h = (e => (e[e.None = 0] = "None", e[e.Linear = 1] = "Linear", e[e.Bezier = 2] = "Bezier", e[e.Hold = 3] = "Hold", + e))(h || {}); +const l = navigator && /(ios|ipad|iphone)/.test(navigator.userAgent.toLowerCase()), + d = e => { + const t = []; + for (let i = 0; i < e.length; i++) t.push(e.charCodeAt(i)); + return t + }, + c = e => [e >> 24, e >> 16 & 255, e >> 8 & 255, 255 & e], + u = (e, ...t) => { + let i = 8, + r = t.length; + const s = r; + for (; r;) r -= 1, i += t[r].byteLength; + const a = new Uint8Array(i); + for (a[0] = i >> 24 & 255, a[1] = i >> 16 & 255, a[2] = i >> 8 & 255, a[3] = 255 & i, a.set(e, 4), r = 0, i = + 8; r < s; ++r) a.set(t[r], i), i += t[r].byteLength; + return a + }; +class m { + constructor(e) { + this.param = e + } + ftyp() { + return u(d("ftyp"), new Uint8Array(d("isom")), new Uint8Array([0, 0, 0, 1]), new Uint8Array(d("isom")), + new Uint8Array(d("iso2")), new Uint8Array(d("avc1")), new Uint8Array(d("mp41"))) + } + moov() { + const e = this.param.tracks.map((e => this.trak(e))).reverse(); + return u(d("moov"), this.mvhd(), ...e, this.mvex()) + } + moof() { + return u(d("moof"), this.mfhd(), this.traf()) + } + mdat() { + const e = new Uint8Array(this.param.track.len); + let t = 0; + return this.param.videoSequence.headers.forEach((i => { + e.set(new Uint8Array(i.data.data()), t), t += i.length + })), this.param.videoSequence.frames.forEach(((i, r) => { + e.set(new Uint8Array(i.fileBytes.data.data()), t), t += i.fileBytes.length + })), u(d("mdat"), e) + } + mvhd() { + return u(d("mvhd"), new Uint8Array([0, 0, 0, 0, ...c(2082873600), ...c(2082873600), ...c(this.param + .timescale), ...c(this.param.duration), 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2 + ])) + } + trak(e) { + return u(d("trak"), this.tkhd(e), this.edts(e), this.mdia(e)) + } + tkhd(e) { + return u(d("tkhd"), new Uint8Array([0, 0, 0, 1, ...c(2082873600), ...c(2082873600), ...c(e.id), 0, 0, 0, 0, + ...c(e.duration), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, e.width >> + 8 & 255, 255 & e.width, 0, 0, e.height >> 8 & 255, 255 & e.height, 0, 0 + ])) + } + edts(e) { + return u(d("edts"), this.elst(e)) + } + elst(e) { + return u(d("elst"), new Uint8Array([0, 0, 0, 0, ...c(1), ...c(e.duration), ...c(e.implicitOffset * Math + .floor(e.duration / e.samples.length)), 0, 1, 0, 0])) + } + mdia(e) { + return u(d("mdia"), this.mdhd(), this.hdlr(), this.minf(e)) + } + mdhd() { + return u(d("mdhd"), new Uint8Array([0, 0, 0, 0, ...c(2082873600), ...c(2082873600), ...c(this.param + .timescale), ...c(0), 85, 196, 0, 0])) + } + hdlr() { + return u(d("hdlr"), new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0 + ])) + } + minf(e) { + return u(d("minf"), this.vmhd(), this.dinf(), this.stbl(e)) + } + vmhd() { + return u(d("vmhd"), new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])) + } + dinf() { + return u(d("dinf"), this.dref()) + } + dref() { + return u(d("dref"), new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1])) + } + stbl(e) { + return u(d("stbl"), this.stsd(e), this.stts(e), this.ctts(e), this.stss(e), this.stsc(), this.stsz(), this + .stco()) + } + stsd(e) { + return u(d("stsd"), new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]), this.avc1(e)) + } + avc1(e) { + const t = [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, e.width >> 8 & 255, 255 & + e.width, e.height >> 8 & 255, 255 & e.height, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 18, 98, + 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 255, 255 + ]; + return u(d("avc1"), new Uint8Array(t), this.avcc(e)) + } + avcc(e) { + let t = [], + i = []; + e.sps.forEach((e => { + const i = e.length - 4; + t.push(i >>> 8 & 255), t.push(255 & i), t = t.concat(Array.prototype.slice.call( + new Uint8Array(e.data.data(), 4))) + })), e.pps.forEach((e => { + const t = e.length - 4; + i.push(t >>> 8 & 255), i.push(255 & t), i = i.concat(Array.prototype.slice.call( + new Uint8Array(e.data.data(), 4))) + })); + const r = [1, t[3], t[4], t[5], 255, 224 | e.sps.length].concat(t).concat([e.pps.length]).concat(i); + return u(d("avcC"), new Uint8Array(r)) + } + stts(e) { + return u(d("stts"), new Uint8Array([0, 0, 0, 0, ...c(1), ...c(e.samples.length), ...c(Math.floor(e + .duration / e.samples.length))])) + } + ctts(e) { + const t = e.pts.length, + i = Math.floor(e.duration / t), + r = [0, 0, 0, 0, ...c(t)]; + for (let s = 0; s < t; s++) { + r.push(...c(1)); + const t = s * i, + a = (e.pts[s] + e.implicitOffset) * i; + r.push(...c(a - t)) + } + return u(d("ctts"), new Uint8Array(r)) + } + stss(e) { + const t = e.samples.filter((e => e.flags.isKeyFrame)).map((e => e.index + 1)), + i = [0, 0, 0, 0, ...c(t.length)]; + return t.forEach((e => { + i.push(...c(e)) + })), u(d("stss"), new Uint8Array(i)) + } + stsc() { + return u(d("stsc"), new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])) + } + stsz() { + return u(d("stsz"), new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])) + } + stco() { + return u(d("stco"), new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])) + } + mvex() { + const e = this.param.tracks.map((e => this.trex(e))).reverse(); + return u(d("mvex"), ...e) + } + trex(e) { + return u(d("trex"), new Uint8Array([0, 0, 0, 0, e.id >> 24, e.id >> 16 & 255, e.id >> 8 & 255, 255 & e.id, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1 + ])) + } + mfhd() { + return u(d("mfhd"), new Uint8Array([0, 0, 0, 0, this.param.sequenceNumber >> 24, this.param + .sequenceNumber >> 16 & 255, this.param.sequenceNumber >> 8 & 255, 255 & this.param + .sequenceNumber + ])) + } + traf() { + const e = this.sdtp(); + return this.param.offset = e.length + 72, u(d("traf"), this.tfhd(), this.tfdt(), this.trun(), e) + } + tfhd() { + return u(d("tfhd"), new Uint8Array([0, 0, 0, 0, ...c(this.param.track.id)])) + } + tfdt() { + return u(d("tfdt"), new Uint8Array([0, 0, 0, 0, ...c(this.param.baseMediaDecodeTime)])) + } + trun() { + const e = (this.param.track.samples || []).length, + t = 12 + 16 * e; + this.param.offset += 8 + t; + const i = [0, 0, 15, 1, ...c(e), ...c(this.param.offset)]; + return this.param.track.samples.forEach((e => { + const { + duration: t, + size: r, + flags: s, + cts: a + } = e; + i.push(...c(t)), i.push(...c(r)), i.push(s.isLeading << 2 | s.dependsOn), i.push(s + .isDependedOn << 6 | s.hasRedundancy << 4 | 0 | s.isNonSync), i.push(61440 & s + .degradPrio), i.push(15 & s.degradPrio), i.push(...c(a)) + })), u(d("trun"), new Uint8Array(i)) + } + sdtp() { + const e = new Uint8Array(4 + this.param.track.samples.length); + return this.param.track.samples.forEach(((t, i) => { + e[i + 4] = t.flags.dependsOn << 4 | t.flags.isDependedOn << 2 | t.flags.hasRedundancy + })), u(d("sdtp"), e) + } +} +var f = Object.defineProperty, + p = Object.getOwnPropertySymbols, + g = Object.prototype.hasOwnProperty, + y = Object.prototype.propertyIsEnumerable, + w = (e, t, i) => t in e ? f(e, t, { + enumerable: !0, + configurable: !0, + writable: !0, + value: i + }) : e[t] = i, + v = (e, t) => { + for (var i in t || (t = {})) g.call(t, i) && w(e, i, t[i]); + if (p) + for (var i of p(t)) y.call(t, i) && w(e, i, t[i]); + return e + }; +const b = e => { + const t = l ? T(e) : e, + i = S(t); + if (!i || 0 === i.len) throw new Error("mp4Track is empty"); + const r = { + offset: 0, + tracks: [i], + track: i, + duration: i.duration, + timescale: i.timescale, + sequenceNumber: 1, + baseMediaDecodeTime: 0, + nalusBytesLen: i.len, + videoSequence: t + }, + s = new m(r); + return (e => { + let t = 0; + for (const i of e) t += i.byteLength; + const i = new Uint8Array(t); + let r = 0; + for (const t of e) i.set(t, r), r += t.byteLength; + return i + })([s.ftyp(), s.moov(), s.moof(), s.mdat()]) +}, + S = e => { + if (e.headers.length < 2) throw new Error("Bad header data in video sequence!"); + if (0 === e.frames.length) throw new Error("There is no frame data in the video sequence!"); + const t = { + id: 1, + type: "video", + timescale: 6e3, + duration: Math.floor(6e3 * e.frames.length / e.frameRate), + width: e.getVideoWidth(), + height: e.getVideoHeight(), + sps: [e.headers[0]], + pps: [e.headers[1]], + implicitOffset: E(e.frames), + len: 0, + pts: [], + samples: [] + }, + i = e.headers.reduce(((e, t) => e + t.length), 0), + r = t.duration / e.frames.length; + return e.frames.forEach(((e, s) => { + var a; + let n = null != (a = e.fileBytes.length) ? a : 0; + 0 === s && (n += i), t.len += n, t.pts.push(e.frame), t.samples.push({ + index: s, + size: n, + duration: r, + cts: (e.frame + t.implicitOffset - s) * r, + flags: { + isKeyFrame: e.isKeyframe, + isNonSync: e.isKeyframe ? 0 : 1, + dependsOn: e.isKeyframe ? 2 : 1, + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0 + } + }) + })), t + }, + E = e => Math.max(...e.map(((e, t) => t - e.frame))), + T = e => { + const t = e.frames.length; + for (let i = 0; i < e.frames.length; i++) { + const r = v({}, e.frames[i]); + if (r.isKeyframe && i > 0) break; + r.frame += t, e.frames.push(r) + } + return e + }, + x = (e, t, i) => { + const r = e.createProgram(); + if (!r) throw new Error("Failed to create program."); + const s = R(e, t, e.VERTEX_SHADER); + if (!s) throw new Error("Failed to create vertex shader."); + e.attachShader(r, s); + const a = R(e, i, e.FRAGMENT_SHADER); + if (!a) throw new Error("Failed to create fragment shader."); + e.attachShader(r, a), e.linkProgram(r); + const n = e.getProgramInfoLog(r); + n && console.log(n); + const o = e.getShaderInfoLog(s); + o && console.log(o); + const h = e.getShaderInfoLog(a); + return h && console.log(h), r + }, + R = (e, t, i) => { + const r = e.createShader(i); + if (!r) throw new Error("Failed to create shader."); + return e.shaderSource(r, t), e.compileShader(r), r + }, + P = e => e.replace(/^\s+|\s+$/g, ""), + A = e => { + const t = e.createTexture(); + if (!t) throw new Error("Failed to create texture."); + return e.bindTexture(e.TEXTURE_2D, t), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e + .texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e + .TEXTURE_MIN_FILTER, e.NEAREST), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.NEAREST), t + }; +let D = {}; +const k = (e, t, i, r = !1) => { + var s; + t in D || (D[t] = []), null == (s = D[t]) || s.push({ + node: e, + handler: i, + capture: r + }), e.addEventListener(t, i, r) +}; +var F = Object.defineProperty, + V = Object.getOwnPropertyDescriptor; +const C = navigator && /MicroMessenger/i.test(navigator.userAgent), + L = async e => { + C && window.WeixinJSBridge && await new Promise((e => { + window.WeixinJSBridge.invoke("getNetworkType", {}, (() => { + e() + }), (() => { + e() + })) + })); + try { + await e.play() + } catch (e) { + throw new Error(e.message) + } + }; +let B = class { + constructor(e) { + this.destroyed = !1, this.frameRate = 0, this._duration = e.frameCount / e.frameRate, this.frameRate = e + .frameRate + } + static create(e) { + const t = new B(e), + i = t.load(e); + return { + videoReader: t, + debugData: i + } + } + getVideoElement() { + return this.videoElement + } + progress() { + return Math.round(this.videoElement.currentTime / this._duration * 100) / 100 + } + duration() { + return this._duration + } + currentTime() { + return this.videoElement.currentTime || 0 + } + start() { + return L(this.videoElement) + } + pause() { + var e; + null == (e = this.videoElement) || e.pause() + } + seek(e) { + return new Promise((t => { + const i = () => { + var e, r, s, a, n, o, h; + e = this.videoElement, s = i, (r = "seeked") in D && (s ? (null == (a = D[r]) || + a.filter((({ + node: t, + handler: i + }) => t === e && i === s)).forEach((({ + node: e, + handler: t, + capture: i + }) => e.removeEventListener(r, t, i))), D[r] = null == (n = D[r]) ? + void 0 : n.filter((({ + node: t, + handler: i + }) => !(t === e && i === s)))) : (null == (o = D[r]) || o.filter((({ + node: t + }) => t === e)).forEach((({ + node: e, + handler: t, + capture: i + }) => e.removeEventListener(r, t, i))), D[r] = null == (h = D[r]) ? + void 0 : h.filter((({ + node: t + }) => t !== e)))), t() + }; + k(this.videoElement, "seeked", i), this.videoElement.currentTime = e + })) + } + addListener(e, t) { + k(this.videoElement, e, t) + } + removeAllListeners() { + var e; + e = this.videoElement, Object.keys(D).forEach((t => { + var i, r; + const s = t; + null == (i = D[s]) || i.filter((({ + node: t + }) => t === e)).forEach((({ + node: e, + handler: t, + capture: i + }) => e.removeEventListener(s, t, i))), D[s] = null == (r = D[s]) ? void 0 : r + .filter((({ + node: t + }) => t !== e)) + })) + } + getFrameData(e) { } + clearCallback() { } + destroy() { + this.removeAllListeners(), this.videoElement = void 0, this.destroyed = !0 + } + load(e) { + this.videoElement = document.createElement("video"), this.videoElement.style.display = "none", this + .videoElement.muted = !0, this.videoElement.playsInline = !0; + const t = new s, + i = b(e); + return t.mark("coverMP4"), this.videoElement.src = URL.createObjectURL(new Blob([i], { + type: "video/mp4" + })), this.videoElement.load(), { + coverMP4: t.measure("", "coverMP4") + } + } +}; +B = ((e, t, i, r) => { + for (var s, a = r > 1 ? void 0 : r ? V(t, i) : t, n = e.length - 1; n >= 0; n--)(s = e[n]) && (a = (r ? s(t, + i, a) : s(a)) || a); + return r && a && F(t, i, a), a +})([a], B); +var _ = Object.defineProperty, + U = Object.getOwnPropertyDescriptor; +const M = (e, t) => { + const i = new ArrayBuffer(t.data.byteLength); + return new Uint8Array(i).set(new Uint8Array(t.data)), { + id: e, + data: i, + width: t.width, + height: t.height + } +}; +let I = class extends B { + constructor() { + super(...arguments), this.started = !1, this.frameDataBuffers = [], this.getFrameDataLooping = !1, this + .getFrameDataCallback = null, this.getFrameDataLoopTimer = null, this.currentFrame = 0, this + .seeking = !1 + } + static create(e) { + const t = new I(e), + i = t.load(e); + return { + videoReader: t, + debugData: i + } + } + getVideoElement() { + throw new Error("WeChat mini program does not support video element as decoder!") + } + progress() { + return 0 + } + duration() { + return 0 + } + currentTime() { + return 0 + } + async start() { + this.started || (this.started = !0, await this.loadedPromise, this.startGetFrameDataLoop()) + } + pause() { } + async seek(e) { + var t; + const i = Math.floor(e * this.frameRate); + if (this.frameDataBuffers.length > 0) { + const e = this.frameDataBuffers.findIndex((e => e.id === i)); + if (-1 !== e) return void (this.frameDataBuffers = this.frameDataBuffers.slice(e)); + this.frameDataBuffers = [] + } + i !== this.currentFrame && (this.seeking = !0, await (null == (t = this.videoDecoder) ? void 0 : t.seek( + e)), this.seeking = !1, this.currentFrame = i) + } + getFrameData(e) { + if (this.frameDataBuffers.length <= 2 && !this.getFrameDataLooping && this.startGetFrameDataLoop(), + 0 === this.frameDataBuffers.length) return void (this.getFrameDataCallback = e); + const t = this.frameDataBuffers.shift(); + t ? e(t) : this.getFrameDataCallback = e + } + addListener(e, t) { + var i; + const r = e; + null == (i = this.videoDecoder) || i.on(r, t) + } + removeAllListeners() { } + destroy() { + var e; + this.clearFrameDataLoop(), this.clearCallback(), null == (e = this.videoDecoder) || e.remove(), this + .videoDecoder = void 0, this.mp4Path && (e => { + try { + i.accessSync(e), i.unlinkSync(e) + } catch (e) { + console.error(e) + } + })(this.mp4Path), this.destroyed = !0 + } + clearCallback() { + this.getFrameDataCallback = null + } + load(e) { + const r = new s; + this.mp4Path = `${t}${Date.now()}.mp4`, (e => { + try { + i.accessSync(e) + } catch (t) { + try { + i.mkdirSync(e) + } catch (e) { + console.error(t) + } + } + })(t), r.mark("createDir"); + const a = b(e); + return r.mark("coverMP4"), ((e, t) => { + try { + i.writeFileSync(e, t, "utf8") + } catch (e) { + throw new Error(e) + } + })(this.mp4Path, a.buffer), r.mark("writeFile"), this.videoDecoder = wx.createVideoDecoder(), r + .mark("createDecoder"), this.loadedPromise = this.videoDecoder.start({ + source: this.mp4Path, + mode: 1 + }), this.videoDecoder.on("ended", (() => { + var e; + null == (e = this.videoDecoder) || e.seek(0).then((() => { + this.currentFrame = 0 + })) + })), { + createDir: r.measure("", "createDir"), + coverMP4: r.measure("createDir", "coverMP4"), + writeFile: r.measure("coverMP4", "writeFile"), + createDecoder: r.measure("writeFile", "createDecoder") + } + } + startGetFrameDataLoop() { + this.getFrameDataLooping = !0, this.getFrameDataLoopTimer = setInterval((() => { + this.getFrameDataLoop() + }), 2) + } + getFrameDataLoop() { + if (this.seeking) return; + if (!this.videoDecoder) throw this.clearFrameDataLoop(), new Error("VideoDecoder is not ready!"); + if (this.frameDataBuffers.length >= 6) return this.getFrameDataLooping = !1, void this + .clearFrameDataLoop(); + const e = this.videoDecoder.getFrameData(); + null !== e && (this.getFrameDataCallback ? (this.getFrameDataCallback(M(this.currentFrame, e)), this + .getFrameDataCallback = null) : this.frameDataBuffers.push(M(this.currentFrame, e)), this + .currentFrame += 1) + } + clearFrameDataLoop() { + this.getFrameDataLoopTimer && (clearInterval(this.getFrameDataLoopTimer), this.getFrameDataLoopTimer = + null), this.getFrameDataLooping = !1 + } +}; +I = ((e, t, i, r) => { + for (var s, a = r > 1 ? void 0 : r ? U(t, i) : t, n = e.length - 1; n >= 0; n--)(s = e[n]) && (a = (r ? s(t, + i, a) : s(a)) || a); + return r && a && _(t, i, a), a +})([a], I); +var O = (e => (e.Canvas2D = "2d", e.WebGL = "WebGL", e))(O || {}), + q = (e => (e.onAnimationStart = "onAnimationStart", e.onAnimationEnd = "onAnimationEnd", e.onAnimationCancel = + "onAnimationCancel", e.onAnimationRepeat = "onAnimationRepeat", e.onAnimationUpdate = "onAnimationUpdate", e + .onAnimationPlay = "onAnimationPlay", e.onAnimationPause = "onAnimationPause", e))(q || {}), + G = (e => (e.None = "None", e.Stretch = "Stretch", e.LetterBox = "LetterBox", e.Zoom = "Zoom", e))(G || {}), + N = Object.freeze({ + __proto__: null, + RenderingMode: O, + EventName: q, + ScaleMode: G + }); +const z = + "\n attribute vec2 a_position;\n attribute vec2 a_texCoord;\n \n uniform vec2 u_resolution;\n uniform vec2 u_scale;\n \n varying vec2 v_texCoord;\n \n \n void main() {\n // convert the rectangle from pixels to 0.0 to 1.0\n vec2 zeroToOne = a_position / u_resolution;\n \n // convert from 0->1 to 0->2\n vec2 zeroToTwo = zeroToOne * 2.0;\n \n // convert from 0->2 to -1->+1 (clipspace)\n vec2 clipSpace = zeroToTwo - 1.0;\n \n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);\n \n // pass the texCoord to the fragment shader\n // The GPU will interpolate this value between points.\n v_texCoord = a_texCoord / u_scale;\n }\n "; +class W { + constructor() { + this.listenersMap = {} + } + on(e, t) { + void 0 === this.listenersMap[e] && (this.listenersMap[e] = []), this.listenersMap[e].push(t) + } + off(e, t) { + const i = this.listenersMap[e]; + if (void 0 === i) return; + if (void 0 === t) return void delete this.listenersMap[e]; + const r = i.findIndex((e => e === t)); + i.splice(r, 1) + } + emit(e, ...t) { + const i = this.listenersMap[e]; + if (void 0 === i || i.length < 1) return !1; + for (const e of i) e(...t); + return !0 + } +} +var X = Object.defineProperty, + H = Object.getOwnPropertyDescriptor, + j = Object.getOwnPropertySymbols, + K = Object.prototype.hasOwnProperty, + Y = Object.prototype.propertyIsEnumerable, + $ = (e, t, i) => t in e ? X(e, t, { + enumerable: !0, + configurable: !0, + writable: !0, + value: i + }) : e[t] = i, + Z = (e, t) => { + for (var i in t || (t = {})) K.call(t, i) && $(e, i, t[i]); + if (j) + for (var i of j(t)) Y.call(t, i) && $(e, i, t[i]); + return e + }; +let J = class { + constructor(e, t, i) { + this.canvasSize = { + width: 0, + height: 0 + }, this.playing = !1, this.viewportSize = { + x: 0, + y: 0, + width: 0, + height: 0, + scaleX: 1, + scaleY: 1 + }, this.destroyed = !1, this.renderTimer = null, this.repeatCount = 0, this.viewScaleMode = G + .LetterBox, this.debugData = { + FPS: 0, + decodePAGFile: 0, + createDir: 0, + coverMP4: 0, + writeFile: 0, + createDecoder: 0, + getFrame: 0, + draw: 0 + }; + const r = e.getVideoSequence(); + if (!r) throw new Error("PAGFile has no BMP video sequence!"); + delete r.composition, this.videoSequence = r, this.canvas = t, this.videoParam = ((e, t) => ({ + width: e.mainComposition.width, + height: e.mainComposition.height, + hasAlpha: t.alphaStartX > 0 || t.alphaStartY > 0, + alphaStartX: t.alphaStartX, + alphaStartY: t.alphaStartY, + sequenceWidth: t.width, + sequenceHeight: t.height, + MP4Width: (t.width + t.alphaStartX) % 2 == 0 ? t.width + t.alphaStartX : t.width + t + .alphaStartX + 1, + MP4Height: (t.height + t.alphaStartY) % 2 == 0 ? t.height + t.alphaStartY : t.height + t + .alphaStartY + 1 + }))(e, r), this.eventManager = new W, this.renderingMode = i.renderingMode || O.WebGL, this + .updateSize(i.useScale), this.setScaleMode() + } + isPlaying() { + return this.playing + } + isDestroyed() { + return this.destroyed + } + duration() { + return this.videoSequence.frameCount / this.videoSequence.frameRate + } + frameRate() { + return this.videoSequence.frameRate + } + setRepeatCount(e = 1) { + this.repeatCount = e < 0 ? -1 : e - 1 + } + addListener(e, t) { + return this.eventManager.on(e, t) + } + removeListener(e, t) { + return this.eventManager.off(e, t) + } + scaleMode() { + return this.viewScaleMode + } + setScaleMode(e = G.LetterBox) { + switch (this.viewScaleMode = e, e) { + case G.None: + this.viewportSize = { + x: 0, + y: this.renderingMode === O.WebGL ? this.canvas.height - this.videoParam.height : 0, + width: this.videoParam.width, + height: this.videoParam.height, + scaleX: 1, + scaleY: 1 + }; + break; + case G.Stretch: + this.viewportSize = { + x: 0, + y: 0, + width: this.canvas.width, + height: this.canvas.height, + scaleX: this.canvas.width / this.videoParam.sequenceWidth, + scaleY: this.canvas.height / this.videoParam.sequenceHeight + }; + break; + case G.LetterBox: { + const e = this.canvas.width / this.videoParam.sequenceWidth, + t = this.canvas.height / this.videoParam.sequenceHeight, + i = Math.min(e, t); + this.viewportSize = { + x: (this.canvas.width - this.videoParam.sequenceWidth * i) / 2, + y: (this.canvas.height - this.videoParam.sequenceHeight * i) / 2, + width: this.videoParam.sequenceWidth * i, + height: this.videoParam.sequenceHeight * i, + scaleX: i, + scaleY: i + } + } + break; + case G.Zoom: { + const e = this.canvas.width / this.videoParam.sequenceWidth, + t = this.canvas.height / this.videoParam.sequenceHeight, + i = Math.max(e, t); + this.viewportSize = { + x: (this.canvas.width - this.videoParam.sequenceWidth * i) / 2, + y: (this.canvas.height - this.videoParam.sequenceHeight * i) / 2, + width: this.videoParam.sequenceWidth * i, + height: this.videoParam.sequenceHeight * i, + scaleX: i, + scaleY: i + } + } + } + } + updateSize(e = !0) { + if (!this.canvas) throw new Error("Canvas element is not found!"); + let t; + const i = getComputedStyle(this.canvas), + r = { + width: Number(i.width.replace("px", "")), + height: Number(i.height.replace("px", "")) + }; + if (r.width > 0 && r.height > 0) t = r; + else { + const e = { + width: Number(this.canvas.style.width.replace("px", "")), + height: Number(this.canvas.style.height.replace("px", "")) + }; + t = e.width > 0 && e.height > 0 ? e : { + width: this.canvas.width, + height: this.canvas.height + } + } + if (!e) return this.canvas.width = this.canvas.width || t.width, void (this.canvas.height = this.canvas + .height || t.height); + this.canvas.style.width = `${t.width}px`, this.canvas.style.height = `${t.height}px`, this.canvas + .width = t.width * window.devicePixelRatio, this.canvas.height = t.height * window.devicePixelRatio + } + getDebugData() { + return this.debugData + } + setDebugData(e) { + this.debugData = Z(Z({}, this.debugData), e) + } + loadContext() { } + clearRender() { } +}; +J = ((e, t, i, r) => { + for (var s, a = r > 1 ? void 0 : r ? H(t, i) : t, n = e.length - 1; n >= 0; n--)(s = e[n]) && (a = (r ? s(t, + i, a) : s(a)) || a); + return r && a && X(t, i, a), a +})([a], J); +var Q = Object.defineProperty, + ee = Object.getOwnPropertyDescriptor; +navigator && /MicroMessenger/i.test(navigator.userAgent); +let te = class extends J { + constructor(e, t, i) { + super(e, t, i), this.fpsBuffer = [], this.currentFrame = -1, this.needSeek = !1, this.videoReader = this + .createVideoReader(this.videoSequence) + } + async play() { + this.playing || (this.playing = !0, await this.videoReader.start(), await this.flushLoop(), 0 === this + .getProgress() && this.eventManager.emit(q.onAnimationStart), this.eventManager.emit(q + .onAnimationPlay)) + } + pause() { + this.playing && (this.videoReader.pause(), this.clearTimer(), this.playing = !1, this.eventManager.emit( + q.onAnimationPause)) + } + stop() { + this.videoReader.pause(), this.videoReader.seek(0), this.clearRender(), this.playing = !1, this + .eventManager.emit(q.onAnimationCancel) + } + destroy() { + this.clearTimer(), this.clearRender(), this.canvas = null, this.videoReader.destroy(), this + .destroyed = !0 + } + getProgress() { + return this.currentFrame / this.videoSequence.frameCount + } + setProgress(e) { + if (e < 0 || e > 1) throw new Error("progress must be between 0.0 and 1.0!"); + const t = Math.round(e * this.videoSequence.frameCount); + this.currentFrame !== t && (this.needSeek = !0, this.currentFrame = t) + } + flush() { + return this.flushInternal(!0) + } + draw() { } + createVideoReader(e) { + const { + videoReader: t, + debugData: i + } = B.create(e); + return this.setDebugData(i), l || t.addListener("ended", (() => { + this.repeat() + })), t + } + async repeat() { + return 0 === this.repeatCount ? (this.setProgress(1), await this.flushInternal(!0), this.videoReader + .pause(), this.clearTimer(), this.playing = !1, this.eventManager.emit("onAnimationEnd"), !1) : + (this.repeatCount -= 1, l ? await this.videoReader.seek(0) : this.videoReader.start(), this + .eventManager.emit("onAnimationRepeat"), !0) + } + flushLoop() { + return this.renderTimer = window.requestAnimationFrame((() => { + this.flushLoop() + })), l && this.duration() - this.videoReader.currentTime() <= 1 / this.frameRate() && this.repeat(), + this.flushInternal(!1) + } + clearTimer() { + this.renderTimer && (window.cancelAnimationFrame(this.renderTimer), this.renderTimer = null) + } + updateFPS() { + let e; + try { + e = performance.now() + } catch (t) { + e = Date.now() + } + this.fpsBuffer = this.fpsBuffer.filter((t => e - t <= 1e3)), this.fpsBuffer.push(e), this.setDebugData({ + FPS: this.fpsBuffer.length + }) + } + async flushInternal(e) { + const t = new s; + this.needSeek ? (e ? await this.videoReader.seek(this.currentFrame / this.frameRate()) : this + .videoReader.seek(this.currentFrame / this.frameRate()), this.needSeek = !1) : this + .currentFrame = Math.floor(this.videoReader.currentTime() * this.frameRate()), this.draw(), t.mark( + "draw"), this.setDebugData({ + draw: t.measure("", "draw") + }), this.updateFPS(), this.eventManager.emit(q.onAnimationUpdate) + } +}; +te = ((e, t, i, r) => { + for (var s, a = r > 1 ? void 0 : r ? ee(t, i) : t, n = e.length - 1; n >= 0; n--)(s = e[n]) && (a = (r ? s( + t, i, a) : s(a)) || a); + return r && a && Q(t, i, a), a +})([a], te); +var ie = Object.defineProperty, + re = Object.getOwnPropertyDescriptor, + se = Object.getOwnPropertySymbols, + ae = Object.prototype.hasOwnProperty, + ne = Object.prototype.propertyIsEnumerable, + oe = (e, t, i) => t in e ? ie(e, t, { + enumerable: !0, + configurable: !0, + writable: !0, + value: i + }) : e[t] = i; +let he = class extends te { + constructor(e, t, i) { + var r; + super(e, t, i), this.scale = { + x: 1, + y: 1 + }, this.positionLocation = 0, this.texcoordLocation = 0, this.alphaStartLocation = null, this + .scaleLocation = null, this.resolutionLocation = null, this.positionBuffer = null, this + .texcoordBuffer = null, this.originalVideoTexture = null, this.renderingTexture = null, this + .renderingFbo = null; + const s = null == (r = this.canvas) ? void 0 : r.getContext("webgl", ((e, t) => { + for (var i in t || (t = {})) ae.call(t, i) && oe(e, i, t[i]); + if (se) + for (var i of se(t)) ne.call(t, i) && oe(e, i, t[i]); + return e + })({}, n)); + if (!s) throw new Error("Can't get WebGL context!"); + this.gl = s, this.videoParam.hasAlpha ? this.program = x(this.gl, P(z), P( + "\n precision mediump float;\n // our texture\n uniform sampler2D u_image;\n \n // the texCoords passed in from the vertex shader.\n varying vec2 v_texCoord;\n uniform vec2 v_alphaStart;\n \n void main() {\n vec4 color = texture2D(u_image, v_texCoord);\n vec4 alpha = texture2D(u_image, vec2(v_texCoord.x + v_alphaStart.x, v_texCoord.y + v_alphaStart.y));\n gl_FragColor = vec4(color.rgb * alpha.r, alpha.r);\n } \n " + )) : this.program = x(this.gl, P(z), P( + "\n precision mediump float;\n // our texture\n uniform sampler2D u_image;\n \n // the texCoords passed in from the vertex shader.\n varying vec2 v_texCoord;\n \n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord);\n }\n " + )), this.loadContext() + } + loadContext() { + if (!this.program) throw new Error("program is not initialized"); + if (this.positionLocation = this.gl.getAttribLocation(this.program, "a_position"), -1 === this + .positionLocation) throw new Error("unable to get attribute location for a_position"); + if (this.scaleLocation = this.gl.getUniformLocation(this.program, "u_scale"), -1 === this.scaleLocation) + throw new Error("unable to get attribute location for u_scale"); + if (this.texcoordLocation = this.gl.getAttribLocation(this.program, "a_texCoord"), -1 === this + .texcoordLocation) throw new Error("unable to get attribute location for a_texCoord"); + if (this.videoParam.hasAlpha && (this.alphaStartLocation = this.gl.getUniformLocation(this.program, + "v_alphaStart"), !this.alphaStartLocation)) throw new Error( + "unable to get attribute location for v_alphaStart"); + if (this.resolutionLocation = this.gl.getUniformLocation(this.program, "u_resolution"), -1 === this + .positionLocation) throw new Error("unable to get attribute location for u_resolution"); + if (this.positionBuffer = this.gl.createBuffer(), this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this + .positionBuffer), this.setRectangle(this.gl, 0, 0, this.videoParam.MP4Width, this.videoParam + .MP4Height), this.texcoordBuffer = this.gl.createBuffer(), this.gl.bindBuffer(this.gl + .ARRAY_BUFFER, this.texcoordBuffer), this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array([ + 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 + ]), this.gl.STATIC_DRAW), this.renderingTexture = A(this.gl), this.gl.texImage2D(this.gl.TEXTURE_2D, + 0, this.gl.RGBA, this.videoParam.sequenceWidth, this.videoParam.sequenceHeight, 0, this.gl.RGBA, + this.gl.UNSIGNED_BYTE, null), this.renderingFbo = this.gl.createFramebuffer(), !this + .renderingFbo) throw new Error("unable to create framebuffer"); + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.renderingFbo), this.gl.framebufferTexture2D(this.gl + .FRAMEBUFFER, this.gl.COLOR_ATTACHMENT0, this.gl.TEXTURE_2D, this.renderingTexture, 0), this + .originalVideoTexture = A(this.gl) + } + draw() { + this.gl.bindTexture(this.gl.TEXTURE_2D, this.originalVideoTexture), this.texImage2D(), this.gl + .clearColor(0, 0, 0, 0), this.gl.clear(this.gl.COLOR_BUFFER_BIT), this.gl.useProgram(this.program), + this.gl.enableVertexAttribArray(this.positionLocation), this.gl.bindBuffer(this.gl.ARRAY_BUFFER, + this.positionBuffer); + const e = this.gl.FLOAT; + this.gl.vertexAttribPointer(this.positionLocation, 2, e, false, 0, 0), this.gl.enableVertexAttribArray( + this.texcoordLocation), this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.texcoordBuffer), this.gl + .vertexAttribPointer(this.texcoordLocation, 2, e, false, 0, 0), this.videoParam.hasAlpha && this.gl + .uniform2f(this.alphaStartLocation, this.videoParam.alphaStartX / this.videoParam.MP4Width / this + .scale.x, this.videoParam.alphaStartY / this.videoParam.MP4Height / this.scale.y), this.gl + .bindTexture(this.gl.TEXTURE_2D, this.originalVideoTexture), this.gl.bindFramebuffer(this.gl + .FRAMEBUFFER, this.renderingFbo), this.gl.uniform2f(this.resolutionLocation, this.videoParam + .sequenceWidth, this.videoParam.sequenceHeight), this.gl.uniform2f(this.scaleLocation, this + .scale.x, this.scale.y), this.gl.viewport(0, 0, this.videoParam.sequenceWidth, this.videoParam + .sequenceHeight); + const t = this.gl.TRIANGLES; + this.gl.drawArrays(t, 0, 6), this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null), this.gl.uniform2f(this + .resolutionLocation, this.videoParam.sequenceWidth, this.videoParam.sequenceHeight), this.gl + .viewport(this.viewportSize.x, this.viewportSize.y, this.viewportSize.width, this.viewportSize + .height), this.gl.drawArrays(t, 0, 6) + } + clearRender() { + this.gl.clearColor(0, 0, 0, 0), this.gl.clear(this.gl.COLOR_BUFFER_BIT) + } + detectWebGLContext() { + return (() => { + const e = document.createElement("canvas"); + return !(!e.getContext("webgl") && !e.getContext("experimental-webgl")) + })() + } + texImage2D() { + this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this + .videoReader.getVideoElement()) + } + setRectangle(e, t, i, r, s) { + const a = t, + n = t + r, + o = i, + h = i + s; + e.bufferData(e.ARRAY_BUFFER, new Float32Array([a, o, n, o, a, h, a, h, n, o, n, h]), e.STATIC_DRAW) + } +}; +he = ((e, t, i, r) => { + for (var s, a = r > 1 ? void 0 : r ? re(t, i) : t, n = e.length - 1; n >= 0; n--)(s = e[n]) && (a = (r ? s( + t, i, a) : s(a)) || a); + return r && a && ie(t, i, a), a +})([a], he); +var le = (e => (e[e.Unknown = 0] = "Unknown", e[e.Vector = 1] = "Vector", e[e.Bitmap = 2] = "Bitmap", e[e.Video = 3] = + "Video", e))(le || {}), + de = (e => (e[e.End = 0] = "End", e[e.FontTables = 1] = "FontTables", e[e.VectorCompositionBlock = 2] = + "VectorCompositionBlock", e[e.CompositionAttributes = 3] = "CompositionAttributes", e[e.ImageTables = 4] = + "ImageTables", e[e.LayerBlock = 5] = "LayerBlock", e[e.LayerAttributes = 6] = "LayerAttributes", e[e + .SolidColor = 7] = "SolidColor", e[e.TextSource = 8] = "TextSource", e[e.TextPathOption = 9] = + "TextPathOption", e[e.TextMoreOption = 10] = "TextMoreOption", e[e.ImageReference = 11] = "ImageReference", + e[e.CompositionReference = 12] = "CompositionReference", e[e.Transform2D = 13] = "Transform2D", e[e + .MaskBlock = 14] = "MaskBlock", e[e.ShapeGroup = 15] = "ShapeGroup", e[e.Rectangle = 16] = "Rectangle", + e[e.Ellipse = 17] = "Ellipse", e[e.PolyStar = 18] = "PolyStar", e[e.ShapePath = 19] = "ShapePath", e[e + .Fill = 20] = "Fill", e[e.Stroke = 21] = "Stroke", e[e.GradientFill = 22] = "GradientFill", e[e + .GradientStroke = 23] = "GradientStroke", e[e.MergePaths = 24] = "MergePaths", e[e.TrimPaths = 25] = + "TrimPaths", e[e.Repeater = 26] = "Repeater", e[e.RoundCorners = 27] = "RoundCorners", e[e.Performance = + 28] = "Performance", e[e.DropShadowStyle = 29] = "DropShadowStyle", e[e.InnerShadowStyle = 30] = + "InnerShadowStyle", e[e.OuterGlowStyle = 31] = "OuterGlowStyle", e[e.InnerGlowStyle = 32] = + "InnerGlowStyle", e[e.BevelAndEmbossStyle = 33] = "BevelAndEmbossStyle", e[e.SatinStyle = 34] = + "SatinStyle", e[e.ColorOverlayStyle = 35] = "ColorOverlayStyle", e[e.GradientOverlayStyle = 36] = + "GradientOverlayStyle", e[e.StrokeStyle = 37] = "StrokeStyle", e[e.TintEffect = 38] = "TintEffect", e[e + .FillEffect = 39] = "FillEffect", e[e.StrokeEffect = 40] = "StrokeEffect", e[e.TritoneEffect = 41] = + "TritoneEffect", e[e.DropShadowEffect = 42] = "DropShadowEffect", e[e.RadialWipeEffect = 43] = + "RadialWipeEffect", e[e.DisplacementMapEffect = 44] = "DisplacementMapEffect", e[e.BitmapCompositionBlock = + 45] = "BitmapCompositionBlock", e[e.BitmapSequence = 46] = "BitmapSequence", e[e.ImageBytes = 47] = + "ImageBytes", e[e.ImageBytes2 = 48] = "ImageBytes2", e[e.ImageBytes3 = 49] = "ImageBytes3", e[e + .VideoCompositionBlock = 50] = "VideoCompositionBlock", e[e.VideoSequence = 51] = "VideoSequence", e[e + .LayerAttributesV2 = 52] = "LayerAttributesV2", e[e.Count = 53] = "Count", e))(de || {}); +const ce = e => { + const t = e.readUint16(); + let i = (63 & t) >>> 0; + const r = t >> 6; + return 63 === i && (i = e.readUint32()), e.context.tagLevel < r && (e.context.tagLevel = r), { + code: r, + length: i + } +}; + +function ue(e, t, i) { + let r = ce(e); + for (; r.code !== de.End;) { + const s = e.readBytes(r.length); + i(s, r.code, t), e.context.tagLevel < s.context.tagLevel && (e.context.tagLevel = s.context.tagLevel), r = ce(e) + } +} +const me = { + red: 0, + green: 0, + blue: 0 +}, + fe = { + red: 255, + green: 255, + blue: 255 + }, + pe = () => { + console.error("PAG Verify Failed!") + }, + ge = e => !!e || (console.error("PAG Verify Failed!"), !1), + ye = class { + constructor() { + this.id = 0, this.width = 0, this.height = 0, this.duration = 0, this.frameRate = 30, this + .backgroundColor = fe, this.cacheID = 0, this.cacheID = ye.cacheIDCount, ye.cacheIDCount += 1 + } + type() { + return le.Unknown + } + getStaticTimeRanges() { + return [] + } + verify() { + return ge(this.width > 0 && this.height > 0 && this.duration > 0 && this.frameRate > 0) + } + }; +let we = ye; +we.cacheIDCount = 1; +class ve extends we { + constructor() { + super(...arguments), this.hasAlpha = !1, this.sequences = [], this.staticTimeRanges = [], this + .staticTimeRangeUpdated = !1 + } + type() { + return le.Video + } + getStaticTimeRanges() { + return this.staticTimeRangeUpdated || (this.staticTimeRangeUpdated = !0, this.updateStaticTimeRanges()), + this.staticTimeRanges + } + updateStaticTimeRanges() { + if (!(this.duration <= 1)) + if (this.sequences.length > 0) { + let e = this.sequences[0]; + for (let t = 1; t < this.sequences.length; t++) { + const i = this.sequences[t]; + i.frameRate > e.frameRate && (e = i) + } + const t = this.frameRate / e.frameRate; + for (const i of e.staticTimeRanges) i.start = Math.round(i.start * t), i.end = Math.round(i.end * + t), this.staticTimeRanges.push(i) + } else { + const e = { + start: 0, + end: this.duration - 1 + }; + this.staticTimeRanges.push(e) + } + } + hasImageContent() { + return !0 + } + verify() { + if (!super.verify() || this.sequences.length <= 0) return pe(), !1; + for (const e of this.sequences) + if (!e || !e.verify()) return pe(), !1; + return !0 + } +} +class be { + constructor(e, t) { + this.numerator = 1, this.denominator = 1, this.numerator = e, this.denominator = t + } + value() { + return this.numerator / this.denominator + } +} +const Se = new be(1, 1); +class Ee { + constructor(e, t) { + this.x = e, this.y = t + } +} +const Te = new Ee(0, 0); +var xe = (e => (e[e.None = 0] = "None", e[e.Alpha = 1] = "Alpha", e[e.AlphaInverted = 2] = "AlphaInverted", e[e.Luma = + 3] = "Luma", e[e.LumaInverted = 4] = "LumaInverted", e))(xe || {}), + Re = (e => (e[e.Unknown = 0] = "Unknown", e[e[void 0] = 1] = "undefined", e[e.Solid = 2] = "Solid", e[e.Text = 3] = + "Text", e[e.Shape = 4] = "Shape", e[e.Image = 5] = "Image", e[e.PreCompose = 6] = "PreCompose", e))(Re || {}); +class Pe { + constructor() { + this.id = 0, this.parent = void 0, this.containingComposition = void 0, this.stretch = Se, this.startTime = + 0, this.duration = 0, this.autoOrientation = !1, this.transform = void 0, this.isActive = !0, this + .blendMode = o.Normal, this.trackMatteType = 0, this.trackMatteLayer = void 0, this.timeRemap = void 0, + this.masks = void 0, this.effects = void 0, this.layerStyles = void 0, this.layerCache = void 0, this + .maxScale = void 0 + } + type() { + return 0 + } + excludeVaryingRanges(e) { + var t; + if (null == (t = this.transform) || t.excludeVaryingRanges(e), void 0 !== this.timeRemap && this.timeRemap + .excludeVaryingRanges(e), void 0 !== this.masks) + for (const t of this.masks) t.excludeVaryingRanges(e); + if (void 0 !== this.effects && this.effects.length > 0) + for (const t of this.effects) t.excludeVaryingRanges(e); + if (void 0 !== this.layerStyles && this.layerStyles.length > 0) + for (const t of this.layerStyles) t.excludeVaryingRanges(e) + } + gotoFrame(e) { + var t; + if (null == (t = this.transform) || t.gotoFrame(e), void 0 !== this.timeRemap && this.timeRemap.gotoFrame( + e), void 0 !== this.masks && this.masks.length > 0) + for (const t of this.masks) t.gotoFrame(e); + if (void 0 !== this.effects && this.effects.length > 0) + for (const t of this.effects) t.gotoFrame(e); + if (void 0 !== this.layerStyles && this.layerStyles.length > 0) + for (const t of this.layerStyles) t.gotoFrame(e) + } + verify() { + if (!this.containingComposition || this.duration <= 0 || !this.transform) return pe(), !1; + if (!this.transform.verify()) return pe(), !1; + if (this.masks && this.masks.length > 0) + for (const e of this.masks) + if (!e || !e.verify()) return pe(), !1; + if (this.layerStyles && this.layerStyles.length > 0) + for (const e of this.layerStyles) + if (!e || !e.verify()) return pe(), !1; + if (this.effects && this.effects.length > 0) + for (const e of this.effects) + if (!e || !e.verify()) return pe(), !1; + return !0 + } + getMaxScaleFactor() { + if (void 0 !== this.maxScale) return this.maxScale; + this.maxScale = new Ee(1, 1); + const e = this.transform.scale; + if (e.animatable()) { + const { + keyframes: t + } = e; + let i = Math.abs(t[0].startValue.x), + r = Math.abs(t[0].startValue.y); + if (void 0 !== t && t.length > 0) + for (const e of t) { + const t = Math.abs(e.endValue.x), + s = Math.abs(e.endValue.y); + i < t && (i = t), r < s && (r = s) + } + this.maxScale.x = i, this.maxScale.y = r + } else this.maxScale.x = Math.abs(e.value.x), this.maxScale.y = Math.abs(e.value.y); + if (void 0 !== this.parent) { + const e = this.parent.getMaxScaleFactor(); + this.maxScale.x *= e.x, this.maxScale.y *= e.y + } + return this.maxScale + } +} +const Ae = e => ({ + red: e.readUint8(), + green: e.readUint8(), + blue: e.readUint8() +}), + De = e => e.readEncodedUint64(), + ke = e => { + const t = e.readFloat32(), + i = e.readFloat32(); + return new Ee(t, i) + }, + Fe = (e, t) => { + t.width = e.readEncodeInt32(), t.height = e.readEncodeInt32(), t.duration = De(e), t.frameRate = e + .readFloat32(), t.backgroundColor = Ae(e) + }; +class Ve { + constructor() { + this.tagLevel = 0, this.compositions = [], this.errorMessages = [] + } + throwException(e) { + this.errorMessages.push(e) + } + releaseCompositions() { + const e = this.compositions.slice(); + return this.compositions = [], e + } +} +const Ce = "PAG file decode error!"; +class Le { + constructor(e, t) { + this._position = 0, this.bitPosition = 0, this.dataView = new DataView(e), this.littleEndian = !!t, this + .context = new Ve + } + get length() { + return this.dataView.byteLength + } + get bytesAvailable() { + return this.dataView.byteLength - this._position + } + data() { + return this.dataView.buffer + } + get position() { + return this._position + } + alignWithBytes() { + this.bitPosition = 8 * this._position + } + readBoolean() { + const e = this.dataView.getInt8(this._position); + return this._position += 1, this.positonChanged(), Boolean(e) + } + readChar() { + if (this._position >= this.length) throw new Error(Ce); + const e = this.dataView.getInt8(this._position); + return this._position += 1, this.positonChanged(), String.fromCharCode(e) + } + readUint8() { + if (this._position >= this.length) throw new Error(Ce); + const e = this.dataView.getUint8(this._position); + return this._position += 1, this.positonChanged(), e + } + readInt8() { + if (this._position >= this.length) throw new Error(Ce); + const e = this.dataView.getInt8(this._position); + return this._position += 1, this.positonChanged(), e + } + readInt16() { + if (this._position >= this.length - 1) throw new Error(Ce); + const e = this.dataView.getInt16(this._position, this.littleEndian); + return this._position += 2, this.positonChanged(), e + } + readUint16() { + if (this._position >= this.length - 1) throw new Error(Ce); + const e = this.dataView.getUint16(this._position, this.littleEndian); + return this._position += 2, this.positonChanged(), e + } + readInt24() { + if (this._position >= this.length - 2) throw new Error(Ce); + const e = this.dataView.getInt16(this._position, this.littleEndian), + t = this.dataView.getInt8(this._position + 2); + return this._position += 3, this.positonChanged(), this.littleEndian ? e + 65536 * t : 65536 * e + t + } + readUint24() { + if (this._position >= this.length - 2) throw new Error(Ce); + const e = this.dataView.getUint16(this._position, this.littleEndian), + t = this.dataView.getUint8(this._position + 2); + return this._position += 3, this.positonChanged(), this.littleEndian ? e + 65536 * t : 65536 * e + t + } + readInt32() { + if (this._position >= this.length - 3) throw new Error(Ce); + const e = this.dataView.getInt32(this._position, this.littleEndian); + return this._position += 4, this.positonChanged(), e + } + readUint32() { + if (this._position >= this.length - 3) throw new Error(Ce); + const e = this.dataView.getUint32(this._position, this.littleEndian); + return this._position += 4, this.positonChanged(), e + } + readInt64() { + if (this._position >= this.length - 7) throw new Error(Ce); + const e = this.dataView.getInt32(this._position, this.littleEndian), + t = this.dataView.getInt32(this._position + 4, this.littleEndian); + return this._position += 8, this.positonChanged(), this.littleEndian ? e + 2 ** 32 * t : 2 ** 32 * e + t + } + readUint64() { + if (this._position >= this.length - 7) throw new Error(Ce); + const e = this.dataView.getUint32(this._position, this.littleEndian), + t = this.dataView.getUint32(this._position + 4, this.littleEndian); + return this._position += 8, this.positonChanged(), this.littleEndian ? e + 2 ** 32 * t : 2 ** 32 * e + t + } + readFloat32() { + if (this._position >= this.length - 3) throw new Error(Ce); + const e = this.dataView.getFloat32(this._position, this.littleEndian); + return this._position += 4, this.positonChanged(), e + } + readDouble() { + if (this._position >= this.length - 7) throw new Error(Ce); + const e = this.dataView.getFloat64(this._position, this.littleEndian); + return this._position += 8, this.positonChanged(), e + } + readUTF8String() { + if (this._position >= this.length) throw new Error(Ce); + let e = "", + t = 0; + for (let i = this._position; i < this.length && 0 !== this.dataView.getUint8(i); i++) e += + `%${this.dataView.getUint8(i).toString(16)}`, t += 1; + return this._position += t, this.positonChanged(), decodeURIComponent(e) + } + readEncodedUint32() { + let e = 0, + t = 0; + for (let i = 0; i < 32; i += 7) { + if (this._position >= this.length) throw Error("readEncodedUint32 End of file was encountered."); + if (t = this.dataView.getUint8(this._position), this._position += 1, e |= (127 & t) << i, 0 == (128 & + t)) break + } + return this.positonChanged(), e + } + readEncodeInt32() { + const e = this.readEncodedUint32(), + t = e >> 1; + return (1 & e) > 0 ? -t : t + } + readEncodedUint64() { + let e = 0, + t = 0; + for (let i = 0; i < 64; i += 7) { + if (this._position >= this.length) throw Error("readEncodedUint64 End of file was encountered."); + if (t = this.dataView.getUint8(this._position), this._position += 1, e |= (127 & t) << i, 0 == (128 & + t)) break + } + return this.positonChanged(), e + } + readEncodeInt64() { + const e = this.readEncodedUint64(), + t = e << 0; + return (1 & e) > 0 ? -t : t + } + readBytes(e) { + const t = e || this.length - this._position; + if (this._position > this.length - t) throw new Error(Ce); + const i = this.dataView.buffer.slice(this._position, this._position + t); + return this._position += t, this.positonChanged(), new Le(i, this.littleEndian) + } + readUBits(e) { + const t = [0, 1, 3, 7, 15, 31, 63, 127, 255]; + let i = 0; + if (this.bitPosition > 8 * this.length - e) throw new Error(Ce); + let r = 0; + for (; r < e;) { + const s = Math.floor(.125 * this.bitPosition), + a = this.bitPosition % 8; + let n = this.dataView.getUint8(s) >> a; + const o = Math.min(8 - a, e - r); + n &= t[o], i |= n << r, r += o, this.bitPosition += o + } + return this.bitPositionChanged(), i + } + readBits(e) { + let t = this.readUBits(e); + t <<= 32 - e; + return t << 0 >> 32 - e + } + readNumBits() { + return this.readUBits(5) + 1 + } + readInt32List(e) { + const t = this.readNumBits(), + i = new Array(e); + for (let r = 0; r < e; r++) i[r] = this.readBits(t); + return i + } + readUint32List(e) { + const t = this.readNumBits(), + i = new Array(e); + for (let r = 0; r < e; r++) i[r] = this.readUBits(t); + return i + } + readBitBoolean() { + return 0 !== this.readUBits(1) + } + readFloatList(e, t) { + const i = this.readNumBits(), + r = new Array(e); + for (let s = 0; s < e; s++) r[s] = this.readBits(i) * t; + return r + } + bitPositionChanged() { + this._position = Math.ceil(.125 * this.bitPosition) + } + positonChanged() { + this.bitPosition = 8 * this._position + } +} +class Be { + constructor(e, t) { + this.length = 0, this.data = e, this.length = t + } +} +class _e { + constructor() { + this.isKeyframe = !1, this.frame = 0, this.fileBytes = new Be(new Le(new ArrayBuffer(0)), 0) + } +} +class Ue extends class { + constructor() { + this.composition = void 0, this.id = 0, this.width = 0, this.height = 0, this.frameRate = 0, this + .frameCount = 0, this.isKeyFrameFlags = [] + } + verify() { + return ge(void 0 !== this.composition && this.width > 0 && this.height > 0 && this.frameRate > 0) + } +} { + constructor() { + super(...arguments), this.alphaStartX = 0, this.alphaStartY = 0, this.frames = [], this.headers = [], this + .staticTimeRanges = [] + } + verify() { + if (!super.verify() || this.frames.length <= 0) return pe(), !1; + for (const e of this.frames) + if (!e || !e.fileBytes) return pe(), !1; + for (const e of this.headers) + if (!e) return pe(), !1; + return !0 + } + getVideoWidth() { + let e = this.alphaStartX + this.width; + return e % 2 == 1 && (e += 1), e + } + getVideoHeight() { + let e = this.alphaStartY + this.height; + return e % 2 == 1 && (e += 1), e + } +} +const Me = e => { + const t = e.readEncodedUint32(), + i = e.readBytes(t); + if (0 === t) throw new Error("Read start code with length 0!"); + const r = new ArrayBuffer(t + 4); + return new DataView(r).setUint32(0, t), ((e, t, i, r, s) => { + if (t >= e.byteLength || r >= i.byteLength || i.byteLength - r > e.byteLength - t || s > i + .byteLength) return; + const a = new Uint8Array(e), + n = new Uint8Array(i, r, s); + a.set(n, t) + })(r, 4, i.data(), 0, t), new Be(new Le(r), t + 4) +}, + Ie = (e, t, i) => { + const { + composition: r + } = i; + switch (t) { + case de.CompositionAttributes: + Fe(e, r); + break; + case de.VideoSequence: { + const t = ((e, t) => { + const i = new Ue; + i.width = e.readEncodeInt32(), i.height = e.readEncodeInt32(), i.frameRate = e + .readFloat32(), t && (i.alphaStartX = e.readEncodeInt32(), i.alphaStartY = e + .readEncodeInt32()); + const r = Me(e), + s = Me(e); + i.headers.push(r, s), i.frameCount = e.readEncodedUint32(); + for (let t = 0; t < i.frameCount; t++) { + const t = new _e; + t.isKeyframe = e.readBitBoolean(), i.frames.push(t) + } + for (let t = 0; t < i.frameCount; t++) { + const r = i.frames[t]; + r.frame = De(e), r.fileBytes = Me(e) + } + if (e.bytesAvailable > 0) { + const t = e.readEncodedUint32(); + for (let r = 0; r < t; r++) { + const t = { + start: 0, + end: 0 + }; + t.start = De(e), t.end = De(e), i.staticTimeRanges.push(t) + } + } + return i + })(e, i.hasAlpha); + t.composition = r, r.sequences.push(t); + break + } + } + }; +var Oe = (e => (e[e.Unknown = 0] = "Unknown", e[e.Tint = 1] = "Tint", e[e.Fill = 2] = "Fill", e[e.Stroke = 3] = + "Stroke", e[e.Tritone = 4] = "Tritone", e[e.DropShadow = 5] = "DropShadow", e[e.RadialWipe = 6] = + "RadialWipe", e[e.DisplacementMap = 7] = "DisplacementMap", e))(Oe || {}); + +function qe(e, t, i) { + if (i < t) return; + for (let r = e.length - 1; r >= 0; r--) { + const s = e[r]; + if (!(s.end < t || s.start > i)) { + if (s.start < t && s.end > i) { + const a = { + start: i + 1, + end: s.end + }; + s.end = t - 1, a.end > a.start && e.splice(r + 1, 0, a), s.end <= s.start && e.splice(r, 1); + break + } + s.start >= t && s.end <= i ? e.splice(r, 1) : s.start < t ? (s.end = t - 1, s.end <= s.start && e.splice(r, + 1)) : (s.start = i + 1, s.end <= s.start && e.splice(r, 1)) + } + } +} + +function Ge(e, t) { + for (let i = e.length - 1; i >= 0; i--) { + const r = e[i]; + if (r.start === t || r.end <= t) break; + if (r.start < t && r.end > t) { + const s = { + start: t, + end: r.end + }; + r.end = t - 1, s.end > s.start && e.splice(i + 1, 0, s), r.end <= r.start && e.splice(i, 1); + break + } + } +} +class Ne extends we { + constructor() { + super(...arguments), this.layers = [], this.staticTimeRanges = [], this.staticTimeRangeUpdated = !1 + } + type() { + return le.Vector + } + getStaticTimeRanges() { + return this.staticTimeRangeUpdated || (this.staticTimeRangeUpdated = !0, this.updateStaticTimeRanges()), + this.staticTimeRanges + } + verify() { + if (!super.verify()) return pe(), !1; + for (const e of this.layers) + if (!e || !e.verify()) return pe(), !1; + return !0 + } + updateStaticTimeRanges() { + if (this.duration > 1) { + const e = { + start: 0, + end: this.duration - 1 + }; + this.staticTimeRanges = [e]; + for (const e of this.layers) { + if (this.staticTimeRanges.length <= 0) break; + e.excludeVaryingRanges(this.staticTimeRanges), Ge(this.staticTimeRanges, e.startTime), Ge(this + .staticTimeRanges, e.startTime + e.duration) + } + } + } +} +class ze { + constructor(e) { + this.value = e + } + animatable() { + return !1 + } + excludeVaryingRanges(e) { } + gotoFrame(e) { } +} +class We { + static createDefaultTransform2D() { + return new We + } + constructor() { + this.anchorPoint = new ze(Te), this.position = new ze(Te), this.xPosition = new ze(0), this.yPosition = + new ze(0), this.scale = new ze(new Ee(1, 1)), this.rotation = new ze(0), this.opacity = new ze(255) + } + excludeVaryingRanges(e) { + this.anchorPoint.excludeVaryingRanges(e), void 0 !== this.position ? this.position.excludeVaryingRanges(e) : + (this.xPosition.excludeVaryingRanges(e), this.yPosition.excludeVaryingRanges(e)), this.scale + .excludeVaryingRanges(e), this.rotation.excludeVaryingRanges(e), this.opacity.excludeVaryingRanges(e) + } + gotoFrame(e) { + this.anchorPoint.gotoFrame(e), void 0 !== this.position ? this.position.gotoFrame(e) : (this.xPosition + .gotoFrame(e), this.yPosition.gotoFrame(e)), this.scale.gotoFrame(e), this.rotation.gotoFrame(e), + this.opacity.gotoFrame(e) + } + verify() { + return void 0 !== this.anchorPoint && (void 0 !== this.position || void 0 !== this.xPosition && void 0 !== + this.yPosition) && void 0 !== this.scale && void 0 !== this.rotation && void 0 !== this.opacity + } +} +class Xe extends Pe { + constructor() { + super(...arguments), this.composition = void 0, this.compositionStartTime = 0, this.staticTimeRanges = + void 0, this.staticTimeRangeUpdated = !1 + } + static wrap(e) { + const t = new Xe; + t.duration = e.duration; + const i = new We; + return t.transform = i, t.composition = e, t + } + type() { + return Re.PreCompose + } + excludeVaryingRanges(e) { + super.excludeVaryingRanges(e), e && 0 !== e.length && this.updateStaticTimeRanges() + } + gotoFrame(e) { + super.gotoFrame(e) + } + verify() { + return !!super.verify() && !!this.composition + } + updateStaticTimeRanges() { + var e; + if (this.staticTimeRangeUpdated) return; + this.staticTimeRangeUpdated = !0; + const t = null == (e = this.composition) ? void 0 : e.getStaticTimeRanges(); + if (t) { + for (let e = t.length - 1; e >= 0; e--) { + const i = t[e]; + i.start += this.compositionStartTime, i.end += this.compositionStartTime, i.end <= this.startTime ? + t.pop() : i.start < this.startTime ? i.start = 0 : i.start >= this.startTime + this.duration - + 1 ? t.pop() : i.end > this.startTime + this.duration - 1 && (i.end = this.startTime + this + .duration - 1) + } + this.staticTimeRanges = t + } + } +} +class He extends Pe { + constructor() { + super(...arguments), this.contents = [] + } + type() { + return Re.Shape + } + excludeVaryingRanges(e) { + super.excludeVaryingRanges(e); + for (const t of this.contents) t.excludeVaryingRanges(e) + } + gotoFrame(e) { + super.gotoFrame(e); + for (const t of this.contents) t.gotoFrame(e) + } + verify() { + if (!super.verify()) return !1; + for (const e of this.contents) + if (void 0 === e || !e.verify()) return !1; + return !0 + } +} +class je extends Pe { + constructor() { + super(...arguments), this.solidColor = me, this.width = 0, this.height = 0 + } + type() { + return Re.Solid + } + excludeVaryingRanges(e) { + super.excludeVaryingRanges(e) + } + gotoFrame(e) { + super.gotoFrame(e) + } + verify() { + return super.verify() ? ge(this.width > 0 && this.height > 0) : (pe(), !1) + } +} +class Ke extends Pe { + type() { + return Re.undefined + } +} +class Ye { + constructor() { + this.startTime = 0, this.endTime = 0, this.interpolationType = h.Hold, this.bezierOut = [], this + .bezierIn = [], this.spatialOut = Te, this.spatialIn = Te + } + initialize() { } + getValue(e) { + return this.startValue + } + containsTime(e) { + return e >= this.startTime && e < this.endTime + } +} +class $e extends ze { + constructor(e) { + if (!e || 0 === e.length) throw new Error("keyframes is required"); + if (void 0 === e[0].startValue) throw new Error("startValue is required"); + super(e[0].startValue), this.keyframes = e, this.lastKeyframeIndex = 0; + for (const t of e) t.initialize() + } + animatable() { + return !0 + } + excludeVaryingRanges(e) { + for (const t of this.keyframes) switch (t.interpolationType) { + case h.Bezier: + case h.Linear: + qe(e, t.startTime, t.endTime - 1); + break; + default: + Ge(e, t.startTime), Ge(e, t.endTime) + } + } + gotoFrame(e) { + let t = this.keyframes[this.lastKeyframeIndex]; + if (t.containsTime(e)) this.value = t.getValue(e); + else { + if (e < t.startTime) + for (; this.lastKeyframeIndex > 0 && (this.lastKeyframeIndex -= 1, !this.keyframes[this + .lastKeyframeIndex].containsTime(e));); + else + for (; this.lastKeyframeIndex < this.keyframes.length - 1 && (this.lastKeyframeIndex += 1, !this + .keyframes[this.lastKeyframeIndex].containsTime(e));); + t = this.keyframes[this.lastKeyframeIndex], void 0 !== t.startValue && e <= t.startTime ? this.value = t + .startValue : void 0 !== t.endValue && e >= t.endTime ? this.value = t.endValue : this.value = t + .getValue(e) + } + } +} +var Ze = (e => (e[e.Value = 0] = "Value", e[e.FixedValue = 1] = "FixedValue", e[e.SimpleProperty = 2] = + "SimpleProperty", e[e.DiscreteProperty = 3] = "DiscreteProperty", e[e.MultiDimensionProperty = 4] = + "MultiDimensionProperty", e[e.SpatialProperty = 5] = "SpatialProperty", e[e.BitFlag = 6] = "BitFlag", e[e + .Custom = 7] = "Custom", e))(Ze || {}); +const Je = (e, t, i) => { + const r = i, + s = []; + if (!r.configs || 0 === r.configs.length) return t; + for (const t of r.configs) { + const i = rt(e, t); + s.push(i) + } + e.alignWithBytes(); + let a = 0; + for (const i of r.configs) { + const r = s[a], + n = i.key; + i.readAttribute(e, r, t, n), a += 1 + } + return t +}; +class Qe { + constructor(e, t, i) { + this.attributeType = t, this.defaultValue = i, this.key = e + } + readAttribute(e, t, i, r) { } + readValue(e) { } + readValueList(e, t, i) { } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new Ye + } +} +const et = (e, t, i, r, s) => { + 6 === s.attributeType ? i[r] = t.exist : 1 === s.attributeType ? i[r] = s.readValue(e) : 0 === s.attributeType ? + i[r] = it(e, s, t) : i[r] = tt(e, s, t) +}, + tt = (e, t, i) => { + let r; + if (i.exist) + if (i.animatable) { + const s = st(e, t, i); + if (!s || 0 === s.length) throw new Error("Wrong number of keyframes!"); + at(e, s, t), nt(e, s, t), i.hasSpatial, r = new $e(s) + } else r = new ze(it(e, t, i)); + else r = new ze(t.defaultValue); + return r + }, + it = (e, t, i) => i.exist ? t.readValue(e) : t.defaultValue, + rt = (e, t) => { + const i = { + exist: !1, + animatable: !1, + hasSpatial: !1 + }, + { + attributeType: r + } = t; + return 1 === r ? (i.exist = !0, i) : (i.exist = e.readBitBoolean(), i.exist && 0 !== r && 6 !== r && 7 !== r ? ( + i.animatable = e.readBitBoolean(), i.animatable && 5 === r ? (i.hasSpatial = e.readBitBoolean(), + i) : i) : i) + }, + st = (e, t, i) => { + const r = [], + s = e.readEncodedUint32(); + for (let a = 0; a < s; a++) { + let s; + if (3 === t.attributeType) s = new Ye; + else { + const r = e.readUBits(2); + r === h.Hold ? s = new Ye : (s = t.newKeyframe(i), s.interpolationType = r) + } + r.push(s) + } + return r + }, + at = (e, t, i) => { + const r = t.length; + t[0].startTime = De(e); + for (let i = 0; i < r; i++) { + const s = De(e); + t[i].endTime = s, i < r - 1 && (t[i + 1].startTime = s) + } + const s = []; + i.readValueList(e, s, r + 1); + let a = 0; + t[0].startValue = s[a], a += 1; + for (let e = 0; e < r; e++) { + const i = s[a]; + a += 1, t[e].endValue = i, e < r - 1 && (t[e + 1].startValue = i) + } + }, + nt = (e, t, i) => { + const r = 4 === i.attributeType ? i.dimensionality() : 1, + s = e.readNumBits(); + for (const i of t) { + if (i.interpolationType !== h.Bezier) continue; + let t, a; + for (let n = 0; n < r; n++) t = .005 * e.readBits(s), a = .005 * e.readBits(s), i.bezierOut.push({ + x: t, + y: a + }), t = .005 * e.readBits(s), a = .005 * e.readBits(s), i.bezierIn.push({ + x: t, + y: a + }) + } + }; + +function ot(e, t, i) { + return e + (t - e) * i +} +class ht { + getInterpolation(e) { + return e + } +} +class lt extends Ye { + initialize() { + super.initialize(), this.interpolationType === h.Bezier || (this.xInterpolator = new ht, this + .yInterpolator = new ht) + } + getValue(e) { + var t, i, r, s; + const a = (e - this.startTime) / (this.endTime - this.startTime), + n = null != (i = null == (t = this.xInterpolator) ? void 0 : t.getInterpolation(a)) ? i : a, + o = null != (s = null == (r = this.yInterpolator) ? void 0 : r.getInterpolation(a)) ? s : a; + return { + x: ot(this.startValue.x, this.endValue.x, n), + y: ot(this.startValue.y, this.endValue.y, o) + } + } +} +class dt extends Ye { + initialize() { + this.interpolationType === h.Bezier || (this.interpolator = new ht) + } + getProgress(e) { + var t, i; + const r = (e - this.startTime) / (this.endTime - this.startTime); + return null != (i = null == (t = this.interpolator) ? void 0 : t.getInterpolation(r)) ? i : r + } + getValue(e) { + const t = this.getProgress(e); + return ot(this.startValue, this.endValue, t) + } +} +class ct extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return e.readFloat32() + } + readValueList(e, t, i) { + for (let r = 0; r < i; r++) t.push(this.readValue(e)) + } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new dt + } +} +class ut extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return e.readBoolean() + } + readValueList(e, t, i) { + for (let r = 0; r < i; r++) t.push(e.readBitBoolean()) + } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new Ye + } +} +class mt extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return e.readUint8() + } + readValueList(e, t, i) { + const r = e.readUint32List(i); + for (let e = 0; e < i; e++) t.push(r[e]) + } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new dt + } +} +class ft extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return De(e) + } + readValueList(e, t, i) { + for (let r = 0; r < i; r++) t[r] = this.readValue(e) + } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new dt + } +} +class pt extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return ke(e) + } + readValueList(e, t, i) { + if (this.attributeType === Ze.SpatialProperty) { + const r = e.readFloatList(2 * i, .05); + for (let e = 0; e < i; e++) t[e] || (t[e] = new Ee(0, 0)), t[e].x = r[e] + } else + for (let r = 0; r < i; r++) t[r] = ke(e) + } + dimensionality() { + return 2 + } + newKeyframe(e) { + return this.attributeType === Ze.MultiDimensionProperty ? new lt : new dt + } +} +class gt extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return (e => { + const t = e.readEncodeInt32(), + i = e.readEncodedUint32(); + return new be(t, i) + })(e) + } + readValueList(e, t, i) { + for (let r = 0; r < i; r++) t[r] = this.readValue(e) + } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new dt + } +} +class yt extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return (e => { + const t = e.readEncodedUint32(); + if (0 === t) throw new Error("Layer ID is 0"); + const i = new Pe; + return i.id = t, i + })(e) + } + readValueList(e, t, i) { + for (let r = 0; r < i; r++) t[r] = this.readValue(e) + } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new dt + } +} +const wt = { + tagCode: de.LayerAttributes, + configs: [new ut("isActive", Ze.BitFlag, !0), new ut("autoOrientation", Ze.BitFlag, !1), new yt("parent", Ze + .Value, void 0), new gt("stretch", Ze.Value, Se), new ft("startTime", Ze.Value, 0), new mt( + "blendMode", Ze.Value, o.Normal), new mt("trackMatteType", Ze.Value, xe.None), new ct("timeRemap", + Ze.SimpleProperty, 0), new ft("duration", Ze.FixedValue, 0)] +}, + vt = { + tagCode: de.LayerAttributesV2, + configs: [new ut("isActive", Ze.BitFlag, !0), new ut("autoOrientation", Ze.BitFlag, !1), new yt("parent", Ze + .Value, void 0), new gt("stretch", Ze.Value, Se), new ft("startTime", Ze.Value, 0), new mt( + "blendMode", Ze.Value, o.Normal), new mt("trackMatteType", Ze.Value, xe.None), new ct("timeRemap", + Ze.SimpleProperty, 0), new ft("duration", Ze.FixedValue, 0), new class extends Qe { + constructor(e, t, i) { + super(e, t, i) + } + readAttribute(e, t, i, r) { + et(e, t, i, r, this) + } + readValue(e) { + return e.readUTF8String() + } + readValueList(e, t, i) { + for (let r = 0; r < i; r++) t[r] = this.readValue(e) + } + dimensionality() { + return 1 + } + newKeyframe(e) { + return new dt + } + }("name", Ze.Value, "")] + }, + bt = { + tagCode: de.Transform2D, + configs: [new pt("anchorPoint", Ze.SpatialProperty, Te), new pt("position", Ze.SpatialProperty, Te), new ct( + "xPosition", Ze.SimpleProperty, 0), new ct("yPosition", Ze.SimpleProperty, 0), new pt("scale", Ze + .MultiDimensionProperty, new Ee(1, 1)), new ct("rotation", Ze.SimpleProperty, 0), new mt("opacity", + Ze.SimpleProperty, 255)] + }; +de.MaskBlock; +const St = (e, t, i) => { + switch (t) { + case de.LayerAttributes: + Je(e, i, wt), i.duration <= 0 && (i.duration = 1); + break; + case de.LayerAttributesV2: + Je(e, i, vt), i.duration <= 0 && (i.duration = 1); + break; + case de.Transform2D: + i.transform = new We, Je(e, i.transform, bt), i.transform.position.animatable() || i.transform.position + .value !== Te || !i.transform.xPosition.animatable() && 0 === i.transform.xPosition.value && !i + .transform.yPosition.animatable() && 0 === i.transform.yPosition.value ? (i.transform.xPosition = + new ze(0), i.transform.yPosition = new ze(0)) : i.transform.position = new ze(Te); + break; + case de.SolidColor: + i.type() === Re.Solid && function (e, t) { + t.solidColor = Ae(e), t.width = e.readEncodeInt32(), t.height = e.readEncodeInt32() + }(e, i); + break; + case de.CompositionReference: + i.type() === Re.PreCompose && function (e, t) { + const i = e.readEncodedUint32(); + i > 0 && (t.composition = new we, t.composition.id = i), t.compositionStartTime = De(e) + }(e, i) + } +}, + Et = (e, t, i) => { + switch (t) { + case de.CompositionAttributes: + Fe(e, i); + break; + case de.LayerBlock: + i.layers.push((e => { + let t; + switch (e.readUint8()) { + case Re.undefined: + t = new Ke; + break; + case Re.Solid: + t = new je; + break; + case Re.Shape: + t = new He; + break; + case Re.PreCompose: + t = new Xe; + break; + default: + t = new Pe + } + return t.id = e.readEncodedUint32(), ue(e, t, St), t + })(e)) + } + }, + Tt = e => { + if (e && 0 === e.length) return; + const t = new Map; + for (const i of e) i && (xt(i), t.set(i.id, i)); + let i = 0; + for (const r of e) + if (r) { + if (void 0 !== r.parent) { + const e = r.parent.id, + i = t.get(e); + void 0 !== i && (r.parent = i) + } + if (i > 0 && Rt(r.trackMatteType) && (r.trackMatteLayer = e[i - 1]), void 0 !== r.effects && r.effects + .length > 0) + for (const e of r.effects) e && (e.type(), Oe.DisplacementMap); + i += 1 + } + }, + xt = e => { + var t; + if (!e || !e.masks || 0 === e.masks.length) return; + const i = new Map; + for (const t of e.masks) t && i.set(t.id, t); + if (null == (t = e.effects) || t.forEach((e => { + if (e) { + if (void 0 !== e.maskReferences && e.maskReferences.length > 0) { + const t = new Array; + e.maskReferences.forEach((e => { + const r = e.id, + s = i.get(r); + void 0 !== s && t.push(s) + })), e.maskReferences = t + } + switch (e.type()) { + case Oe.Fill: + if (void 0 !== e.fillMask) { + const t = e.fillMask.id, + r = i.get(t); + void 0 !== r && (e.fillMask = r) + } + break; + case Oe.Stroke: { + const t = e; + if (void 0 !== t.path) { + const e = t.path.id, + r = i.get(e); + void 0 !== r && (t.path = r) + } + break + } + } + } + })), e.type() === Re.Text) { + const { + pathOption: t + } = e; + if (null == t ? void 0 : t.path) { + const e = t.path.id, + r = i.get(e); + void 0 !== r && (t.path = r) + } + } + }, + Rt = e => { + switch (e) { + case xe.Alpha: + case xe.AlphaInverted: + return !0; + default: + return !1 + } + }; + +function Pt(e, t, i) { + switch (t) { + case de.VectorCompositionBlock: + i.compositions.push((e => { + const t = new Ne; + return t.id = e.readEncodedUint32(), ue(e, t, Et), Tt(t.layers), t + })(e)); + break; + case de.VideoCompositionBlock: + i.compositions.push((e => { + const t = new ve; + return t.id = e.readEncodedUint32(), t.hasAlpha = e.readBoolean(), ue(e, { + composition: t, + hasAlpha: t.hasAlpha + }, Ie), t + })(e)) + } +} +const At = e => { + const t = Dt(e), + { + context: i + } = t; + ue(t, i, Pt), + function (e) { + if (!e || 0 === e.length) return; + const t = new Map; + e.forEach((e => { + e && t.set(e.id, e) + })), e.forEach((e => { + if (e && e.type() === le.Vector) { + const i = e; + i.layers && i.layers.length > 0 && i.layers.forEach((e => { + e.containingComposition = i; + const r = e; + if (r.type() === Re.PreCompose && r.composition) { + const e = t.get(r.composition.id); + e && (r.composition = e) + } + })) + } + })) + }(i.compositions); + const r = i.releaseCompositions(); + return (e => { + let t = e.length > 0; + for (const i of e) + if (!i || !i.verify()) { + t = !1; + break + } if (!t) throw new Error("Verify composition failed!") + })(r), { + compositions: r, + tagLevel: i.tagLevel + } +}, + Dt = e => { + if (e.length < 11) throw new Error("PAG file is invalid!"); + const t = e.readInt8(), + i = e.readInt8(), + r = e.readInt8(); + if (80 !== t || 65 !== i || 71 !== r) throw new Error("invalid PAG header!"); + return e.readInt8(), e.readUint32(), e.readInt8(), e.readBytes() + }; +class kt { + constructor(e, t) { + this.tagLevel = 1, this.compositions = [], this.numLayers = 0, this.scaledTimeRange = { + start: 0, + end: 0 + }, this.mainComposition = e[e.length - 1], this.scaledTimeRange.start = 0, this.scaledTimeRange.end = + this.mainComposition.duration, this.compositions = e, this.duration = this.mainComposition.duration, + this.implDuration = 1e3 * this.mainComposition.duration / this.mainComposition.frameRate; + for (const t of e) + if (t.type() === le.Vector) + for (const e of t.layers) e.type() !== Re.PreCompose && (this.numLayers += 1); + else this.numLayers += 1; + this.tagLevel = t + } + static fromArrayBuffer(e) { + if (!e || 0 === e.byteLength) throw new Error("Can't read empty array buffer!"); + const t = new Le(e, !0), + { + compositions: i, + tagLevel: r + } = At(t); + return new kt(i, r) + } + getVideoSequence() { + const e = this.mainComposition.type(); + return e === le.Video ? Ft(this.mainComposition) : e === le.Vector ? Vt(this.mainComposition) : void 0 + } +} +const Ft = e => { + if (!e.sequences || 0 === e.sequences.length) throw new Error("PAGFile has no BMP video sequence!"); + return e.sequences[e.sequences.length - 1] +}, + Vt = e => { + const t = Ct(e); + if (t.length > 1) throw new Error("PAGFile has more than one BMP video sequence!"); + if (t.length < 1) throw new Error("PAGFile has no BMP video sequence!"); + const i = t[0]; + return Ft(i) + }, + Ct = e => { + const t = []; + return e.layers.forEach((e => { + if (e.type() !== Re.PreCompose) return; + const { + composition: i + } = e; + (null == i ? void 0 : i.type()) !== le.Video ? (null == i ? void 0 : i.type()) === le.Vector && + t.push(...Ct(i)) : t.push(i) + })), t + }; +class Lt extends he { + constructor(e, t) { + super(e, t, { + renderingMode: O.WebGL + }), this.frameData = void 0, this.needGetFrame = !1, this.flushBaseTime = Math.floor(1e3 / this + .videoSequence.frameRate), this.videoReader.start() + } + static init(e, t) { + const i = new s, + r = kt.fromArrayBuffer(e); + i.mark("decode"); + const a = new Lt(r, t); + return a.setDebugData({ + decodePAGFile: i.measure("", "decode") + }), a + } + async play() { + this.playing || (this.playing = !0, await this.videoReader.start(), this.flushLoop(), 0 === this + .getProgress() && this.eventManager.emit(q.onAnimationStart), this.eventManager.emit(q + .onAnimationPlay)) + } + pause() { + this.playing && (this.clearTimer(), this.playing = !1, this.eventManager.emit(q.onAnimationPause)) + } + stop() { + this.clearTimer(), this.seekToStart(), this.clearRender(), this.playing = !1, this.eventManager.emit(q + .onAnimationCancel) + } + destroy() { + this.clearTimer(), this.videoReader.destroy(), this.clearRender(), this.canvas = null, this.destroyed = !0 + } + updateSize() { } + setProgress(e) { + if (e < 0 || e > 1) throw new Error("progress must be between 0.0 and 1.0!"); + const t = Math.round(e * this.videoSequence.frameCount); + if (this.currentFrame !== t) return t !== this.currentFrame + 1 && (this.needSeek = !0), this + .needGetFrame = !0, void (this.currentFrame = t); + this.needSeek = !1, this.needGetFrame = !1 + } + async flushInternal() { + const t = () => { + const e = Date.now(); + this.draw(), this.setDebugData({ + draw: Date.now() - e + }), this.updateFPS(), this.eventManager.emit(q.onAnimationUpdate) + }; + if (this.needSeek && (this.needSeek = !1, await this.videoReader.seek(this.currentFrame / this.frameRate() * + 1e3)), this.needGetFrame) { + this.needGetFrame = !1; + const i = Date.now(); + this.videoReader.getFrameData((r => { + this.frameData = r, this.currentFrame = r.id, this.setDebugData({ + getFrame: Date.now() - i + }), e && (this.scale = { + x: 16 * Math.ceil(this.frameData.width / 16) / this.frameData.width, + y: 16 * Math.ceil(this.frameData.height / 16) / this.frameData.height + }), t(), this.currentFrame === this.videoSequence.frameCount - 1 && this.repeat() + })) + } else t() + } + flushLoop() { + return this.renderTimer = setInterval((async () => { + this.needGetFrame = !0, this.flushInternal() + }), this.flushBaseTime), Promise.resolve() + } + detectWebGLContext() { + return !0 + } + createVideoReader(e) { + const { + videoReader: t, + debugData: i + } = I.create(e); + return this.setDebugData(i), t + } + texImage2D() { + this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.frameData.width, this.frameData.height, 0, this + .gl.RGBA, this.gl.UNSIGNED_BYTE, new Uint8Array(this.frameData.data)) + } + repeat() { + return 0 === this.repeatCount ? (this.clearTimer(), this.seekToStart(), this.playing = !1, this.eventManager + .emit("onAnimationEnd"), Promise.resolve(!1)) : (this.repeatCount -= 1, this.seekToStart(), this + .eventManager.emit("onAnimationRepeat"), Promise.resolve(!0)) + } + clearTimer() { + this.renderTimer && (clearTimeout(this.renderTimer), this.renderTimer = null), this.videoReader + .clearCallback() + } + async seekToStart() { + this.videoReader.seek(0), this.currentFrame = -1 + } +} +export const PAGView = Lt; +export const clearCache = () => (e => { + try { + const t = i.readdirSync(e); + return t.length > 0 && t.forEach((t => { + i.unlinkSync(`${e}${t}`) + })), !0 + } catch (e) { + return console.error(e), !1 + } +})(t); export const types = N; diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-pag/tm-pag.vue b/uni_modules/UniDevTools/src/tmui/components/tm-pag/tm-pag.vue new file mode 100644 index 0000000..dd834a5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-pag/tm-pag.vue @@ -0,0 +1,98 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-pagination/ani.css b/uni_modules/UniDevTools/src/tmui/components/tm-pagination/ani.css new file mode 100644 index 0000000..831a65c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-pagination/ani.css @@ -0,0 +1,7 @@ +.keywordBoradAni { + transition-duration: 0.02s; + transition-timing-function: linear; + transition-delay: 0ms; + transition-property: transform; + transform: scale(0.85); +} diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-pagination/tm-pagination.vue b/uni_modules/UniDevTools/src/tmui/components/tm-pagination/tm-pagination.vue new file mode 100644 index 0000000..7ae0b67 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-pagination/tm-pagination.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/interface.ts new file mode 100644 index 0000000..ea09fa9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/interface.ts @@ -0,0 +1,8 @@ +export interface columnsItem { + children?: Array,//当前列表的数据列表 + text?: string | number, + id?: string | number, + disabled?: boolean,//禁用后,将滑动时选中不了本项。 + // defaultIndex?:number//当前列表的默认选中的值。 + [key: string]: any; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/picker-panel.vue b/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/picker-panel.vue new file mode 100644 index 0000000..0c5de8d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/picker-panel.vue @@ -0,0 +1,252 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/tm-picker-view.vue b/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/tm-picker-view.vue new file mode 100644 index 0000000..aec810a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-picker-view/tm-picker-view.vue @@ -0,0 +1,198 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-picker/tm-picker.vue b/uni_modules/UniDevTools/src/tmui/components/tm-picker/tm-picker.vue new file mode 100644 index 0000000..6458918 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-picker/tm-picker.vue @@ -0,0 +1,400 @@ + + \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-popover/tm-popover.vue b/uni_modules/UniDevTools/src/tmui/components/tm-popover/tm-popover.vue new file mode 100644 index 0000000..7c26d12 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-popover/tm-popover.vue @@ -0,0 +1,504 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-progress/tm-progress.vue b/uni_modules/UniDevTools/src/tmui/components/tm-progress/tm-progress.vue new file mode 100644 index 0000000..b3b1eba --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-progress/tm-progress.vue @@ -0,0 +1,513 @@ + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/drawing.ts b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/drawing.ts new file mode 100644 index 0000000..68a6cda --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/drawing.ts @@ -0,0 +1,192 @@ +/** + * canvas-qr + * create qrcode steam based on node-canvas + * core code is from https://github.com/neocotic/qr.js + */ + +//globs +import { generateFrame } from "./qrcode" +import { qrOpts, qrOptsDefault } from "./interface"; +var Canvas = null + , Image = null; + + +/** + * @param size {Number} canvassize + * @param lw {Number} logo width + * @param lh {Number} logo height + * return {Object} + */ +function computeLogoPos(size, lw, lh) { + return { + x: (size - lw) / 2 + , y: (size - lh) / 2 + , w: lw + , h: lh + } +} + +/** + * @param option {Object} + * return {WriteSteam} + */ +export async function qr(ctx, option, canvas2d) { + + if (!ctx) return; + + + var defaults = Object.assign({ + ...qrOptsDefault + }, option) + , size = defaults.size + , borderWidth = size * defaults.border + , qrSize = size - borderWidth * 2 + , backgroundColor = defaults.backgroundColor + , backgroundImage = defaults.backgroundImage + , logoImage = defaults.logoImage + , i + , j + , points + , width + , fo + , px + , logoPos + , linearDir = defaults.linearDir + + // var cvs = ctx + var c2d = ctx + if (!c2d?.width) { + c2d.width = size + } + if (!c2d?.height) { + c2d.height = size + } + //base background + fillStyle(c2d, defaults.baseColor, linearDir) + c2d.fillRect(0, 0, size, size) + c2d.save() + //draw background color + if (backgroundColor) { + fillStyle(c2d, backgroundColor, linearDir) + c2d.fillRect(0, 0, size, size) + } + c2d.restore() + //draw backgroundImage + if (backgroundImage) { + + if (canvas2d) { + await drawImage(canvas2d, c2d, { width: size, height: size, src: backgroundImage, x: 0, y: 0 }) + } else { + c2d.drawImage(backgroundImage, 0, 0, size, size) + } + + } + + //now draw qrcode + fo = generateFrame(defaults.str, defaults.ecc, qrSize) + points = fo.frameBuffer + width = fo.width + px = qrSize / width + + fillStyle(c2d, defaults.forgroundColor, linearDir, linearDir) + for (i = 0; i < width; i++) { + for (j = 0; j < width; j++) { + if (points[j * width + i]) { + c2d.fillRect(borderWidth + px * i, borderWidth + px * j, px, px) + } + } + } + + //draw logo image + if (logoImage) { + logoPos = computeLogoPos(size, defaults.logoWidth, defaults.logoHeight) + + if (canvas2d) { + await drawImage(canvas2d, c2d, { width: defaults.logoWidth, height: defaults.logoHeight, src: logoImage, x: logoPos.x, y: logoPos.y }) + } else { + c2d.drawImage(logoImage, logoPos.x, logoPos.y, defaults.logoWidth, defaults.logoHeight) + } + + } + + + //非2d类需要draw。2d无需draw + if (!canvas2d) { + c2d.draw() + } + uni.hideLoading() + return ctx + +} + +function fillStyle(ctx, value, linearDir = "left") { + //绘制渐变 + if (typeof value == 'object' && Array.isArray(value)) { + let w2w = parseInt(String(ctx.width / 2)) + + var gradient = ctx.createLinearGradient(w2w, 0, w2w, ctx.width); + if (linearDir == "left") { + gradient = ctx.createLinearGradient(ctx.width, w2w, 0, w2w); + } else if (linearDir == "bottom") { + gradient = ctx.createLinearGradient(w2w, 0, w2w, ctx.width); + } else if (linearDir == "top") { + gradient = ctx.createLinearGradient(w2w, ctx.width, w2w, 0); + } else if (linearDir == "right") { + gradient = ctx.createLinearGradient(0, w2w, ctx.width, w2w); + } else if (linearDir == "tlbr") { + gradient = ctx.createLinearGradient(0, 0, ctx.width, ctx.width); + } else if (linearDir == "trbl") { + gradient = ctx.createLinearGradient(ctx.width, 0, 0, ctx.width); + } else if (linearDir == "bltr") { + gradient = ctx.createLinearGradient(0, ctx.width, ctx.width, 0); + } else if (linearDir == "brtl") { + gradient = ctx.createLinearGradient(ctx.width, ctx.width, 0, 0); + } + for (let i = 0, len = value.length; i < len; i++) { + let stop = i / len; + if (i == 0) stop = 0; + if (i == len - 1) stop = 1; + gradient.addColorStop(stop, value[i]); + } + console.log(gradient) + // gradient.addColorStop(1, value[1]); + // #ifdef APP-NVUE || MP-WEIXIN || MP-ALIPAY || MP-QQ + ctx.strokeStyle = gradient; + ctx.fillStyle = gradient; + // #endif + // #ifndef APP-NVUE || MP-WEIXIN || MP-ALIPAY || MP-QQ + ctx.setStrokeStyle(gradient) + ctx.setFillStyle(gradient) + // #endif + } else { + // #ifdef APP-NVUE || MP-WEIXIN || MP-ALIPAY || MP-QQ + ctx.fillStyle = value + // #endif + // #ifndef APP-NVUE || MP-WEIXIN || MP-ALIPAY || MP-QQ + ctx.setFillStyle(value) + // #endif + } + + +} + +function drawImage(canvas2d, ctx, opts) { + uni.showLoading({ + title: "..." + }) + let img = canvas2d.createImage() + try{ + img.width = opts.width; + img.height = opts.height; + }catch(e){ + //TODO handle the exception + } + img.src = opts.src; + return new Promise(res => { + img.onload = function () { + ctx.drawImage(img, opts.x, opts.y, opts.width, opts.height) + uni.hideLoading() + res(true) + } + }) +} diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/interface.ts new file mode 100644 index 0000000..45dc90c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/interface.ts @@ -0,0 +1,29 @@ +export interface qrOpts { + baseColor?: string //背景色,可以是数组颜色,将产生渐变。,渐变方向见下方:linearDir + , backgroundImage?: string //使用图片作为二维码背景。 + , backgroundColor?: string | Array // 背景色,可以是数组颜色,将产生渐变。,渐变方向见下方:linearDir + , size?: number //图片大小 + , border?: number //边 width = size * border,比如二维码是200,那么想要让边为10那么 border = 200*0.05 + , str?: string //内容 + , forgroundColor?: string | Array //前景色,也可以是["#FF0000","#FFFF00"]如果提供数组,将会绘制渐变色。 + , logoImage?: string //logo图片 + , logoWidth?: number + , logoHeight?: number + , ecc?: string // 容错等级[ 'L', 'M', 'Q', 'H' ] + //left,right,bottom,top,tlbr:左顶点至底右下点,trbl,右顶点底右左点,bltr右底左点至顶右点。brtl底右点至顶左点。 + , linearDir?: string //如果forgroundColor是数组渐变色,则此可以更改渐变方向。 +} +export const qrOptsDefault = { + baseColor: '#fff' + , backgroundImage: null + , backgroundColor: null + , size: 300 + , border: 0.05 + , str: 'tmui' + , forgroundColor: '#000' + , logoImage: null + , logoWidth: 20 + , logoHeight: 20 + , ecc: 'M' + , linearDir: "tlbr" +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/qrcode.ts b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/qrcode.ts new file mode 100644 index 0000000..8658811 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/qrcode.ts @@ -0,0 +1,910 @@ +/** + * qr frame data generator + * from https://github.com/neocotic/qr.js + */ + + + +// Private constants +// ----------------- + +// Alignment pattern. +var ALIGNMENT_DELTA = [ + 0, 11, 15, 19, 23, 27, 31, + 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24, + 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28 +] + +// There are four elements per version. The first two indicate the number of blocks, then the +// data width, and finally the ECC width. +var ECC_BLOCKS = [ + 1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17, + 1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22, 22, 1, 0, 16, 28, + 1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22, + 1, 0, 80, 20, 2, 0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16, + 1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11, 22, + 2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28, + 2, 0, 78, 20, 4, 0, 31, 18, 2, 4, 14, 18, 4, 1, 13, 26, + 2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26, + 2, 0, 116, 30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24, + 2, 2, 68, 18, 4, 1, 43, 26, 6, 2, 19, 24, 6, 2, 15, 28, + 4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24, + 2, 2, 92, 24, 6, 2, 36, 22, 4, 6, 20, 26, 7, 4, 14, 28, + 4, 0, 107, 26, 8, 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22, + 3, 1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24, + 5, 1, 87, 22, 5, 5, 41, 24, 5, 7, 24, 30, 11, 7, 12, 24, + 5, 1, 98, 24, 7, 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30, + 1, 5, 107, 28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28, + 5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28, 2, 19, 14, 28, + 3, 4, 113, 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26, + 3, 5, 107, 28, 3, 13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28, + 4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19, 6, 16, 30, + 2, 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24, + 4, 5, 121, 30, 4, 14, 47, 28, 11, 14, 24, 30, 16, 14, 15, 30, + 6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2, 16, 30, + 8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30, + 10, 2, 114, 28, 19, 4, 46, 28, 28, 6, 22, 28, 33, 4, 16, 30, + 8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23, 30, 12, 28, 15, 30, + 3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30, + 7, 7, 116, 30, 21, 7, 45, 28, 1, 37, 23, 30, 19, 26, 15, 30, + 5, 10, 115, 30, 19, 10, 47, 28, 15, 25, 24, 30, 23, 25, 15, 30, + 13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30, + 17, 0, 115, 30, 10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30, + 17, 1, 115, 30, 14, 21, 46, 28, 29, 19, 24, 30, 11, 46, 15, 30, + 13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30, + 12, 7, 121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22, 41, 15, 30, + 6, 14, 121, 30, 6, 34, 47, 28, 46, 10, 24, 30, 2, 64, 15, 30, + 17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30, + 4, 18, 122, 30, 13, 32, 46, 28, 48, 14, 24, 30, 42, 32, 15, 30, + 20, 4, 117, 30, 40, 7, 47, 28, 43, 22, 24, 30, 10, 67, 15, 30, + 19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61, 15, 30 +] + +// Map of human-readable ECC levels. +var ECC_LEVELS = { + L: 1 + , M: 2 + , Q: 3 + , H: 4 +} + +// Final format bits with mask (level << 3 | mask). +var FINAL_FORMAT = [ + 0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976, /* L */ + 0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0, /* M */ + 0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed, /* Q */ + 0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b /* H */ +] + +// Galois field exponent table. +var GALOIS_EXPONENT = [ + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, + 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, + 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, + 0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, + 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, + 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, + 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, + 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, + 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, + 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, + 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, + 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, + 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, + 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09, + 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16, + 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x00 +] + +// Galois field log table. +var GALOIS_LOG = [ + 0xff, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b, + 0x04, 0x64, 0xe0, 0x0e, 0x34, 0x8d, 0xef, 0x81, 0x1c, 0xc1, 0x69, 0xf8, 0xc8, 0x08, 0x4c, 0x71, + 0x05, 0x8a, 0x65, 0x2f, 0xe1, 0x24, 0x0f, 0x21, 0x35, 0x93, 0x8e, 0xda, 0xf0, 0x12, 0x82, 0x45, + 0x1d, 0xb5, 0xc2, 0x7d, 0x6a, 0x27, 0xf9, 0xb9, 0xc9, 0x9a, 0x09, 0x78, 0x4d, 0xe4, 0x72, 0xa6, + 0x06, 0xbf, 0x8b, 0x62, 0x66, 0xdd, 0x30, 0xfd, 0xe2, 0x98, 0x25, 0xb3, 0x10, 0x91, 0x22, 0x88, + 0x36, 0xd0, 0x94, 0xce, 0x8f, 0x96, 0xdb, 0xbd, 0xf1, 0xd2, 0x13, 0x5c, 0x83, 0x38, 0x46, 0x40, + 0x1e, 0x42, 0xb6, 0xa3, 0xc3, 0x48, 0x7e, 0x6e, 0x6b, 0x3a, 0x28, 0x54, 0xfa, 0x85, 0xba, 0x3d, + 0xca, 0x5e, 0x9b, 0x9f, 0x0a, 0x15, 0x79, 0x2b, 0x4e, 0xd4, 0xe5, 0xac, 0x73, 0xf3, 0xa7, 0x57, + 0x07, 0x70, 0xc0, 0xf7, 0x8c, 0x80, 0x63, 0x0d, 0x67, 0x4a, 0xde, 0xed, 0x31, 0xc5, 0xfe, 0x18, + 0xe3, 0xa5, 0x99, 0x77, 0x26, 0xb8, 0xb4, 0x7c, 0x11, 0x44, 0x92, 0xd9, 0x23, 0x20, 0x89, 0x2e, + 0x37, 0x3f, 0xd1, 0x5b, 0x95, 0xbc, 0xcf, 0xcd, 0x90, 0x87, 0x97, 0xb2, 0xdc, 0xfc, 0xbe, 0x61, + 0xf2, 0x56, 0xd3, 0xab, 0x14, 0x2a, 0x5d, 0x9e, 0x84, 0x3c, 0x39, 0x53, 0x47, 0x6d, 0x41, 0xa2, + 0x1f, 0x2d, 0x43, 0xd8, 0xb7, 0x7b, 0xa4, 0x76, 0xc4, 0x17, 0x49, 0xec, 0x7f, 0x0c, 0x6f, 0xf6, + 0x6c, 0xa1, 0x3b, 0x52, 0x29, 0x9d, 0x55, 0xaa, 0xfb, 0x60, 0x86, 0xb1, 0xbb, 0xcc, 0x3e, 0x5a, + 0xcb, 0x59, 0x5f, 0xb0, 0x9c, 0xa9, 0xa0, 0x51, 0x0b, 0xf5, 0x16, 0xeb, 0x7a, 0x75, 0x2c, 0xd7, + 0x4f, 0xae, 0xd5, 0xe9, 0xe6, 0xe7, 0xad, 0xe8, 0x74, 0xd6, 0xf4, 0xea, 0xa8, 0x50, 0x58, 0xaf +] + +// *Badness* coefficients. +var N1 = 3 +var N2 = 3 +var N3 = 40 +var N4 = 10 + +// Version pattern. +var VERSION_BLOCK = [ + 0xc94, 0x5bc, 0xa99, 0x4d3, 0xbf6, 0x762, 0x847, 0x60d, 0x928, 0xb78, 0x45d, 0xa17, 0x532, + 0x9a6, 0x683, 0x8c9, 0x7ec, 0xec4, 0x1e1, 0xfab, 0x08e, 0xc1a, 0x33f, 0xd75, 0x250, 0x9d5, + 0x6f0, 0x8ba, 0x79f, 0xb0b, 0x42e, 0xa64, 0x541, 0xc69 +] + + +// Generate the encoded QR image for the string provided. +export function generateFrame(_str, ecc) { + var i, j, k, m, t, v, x, y, version + , eccLevel = ECC_LEVELS[ecc || 'L'] || 1 + , str = _str || '' + , width + + // Run lengths for badness. + var badBuffer = [] + + // Data block. + var dataBlock + + // ECC data blocks and tables. + var eccBlock, neccBlock1, neccBlock2 + + // ECC buffer. + var eccBuffer = [] + + // Image buffer. + var frameBuffer = [] + + // Fixed part of the image. + var frameMask = [] + + // Generator polynomial. + var polynomial = [] + + // Data input buffer. + var stringBuffer = [] + + + // functions + + // Set bit to indicate cell in frame is immutable (symmetric around diagonal). + function setMask(_x, _y) { + var bit + , x = _x + , y = _y + + if (x > y) { + bit = x + x = y + y = bit + } + + bit = y + bit *= y + bit += y + bit >>= 1 + bit += x + + frameMask[bit] = 1 + } + + // Enter alignment pattern. Foreground colour to frame, background to mask. Frame will be merged + // with mask later. + function addAlignment(_x, _y) { + var i + , x = _x + , y = _y + + frameBuffer[x + width * y] = 1 + + for (i = -2; i < 2; i++) { + frameBuffer[(x + i) + width * (y - 2)] = 1 + frameBuffer[(x - 2) + width * (y + i + 1)] = 1 + frameBuffer[(x + 2) + width * (y + i)] = 1 + frameBuffer[(x + i + 1) + width * (y + 2)] = 1 + } + + for (i = 0; i < 2; i++) { + setMask(x - 1, y + i) + setMask(x + 1, y - i) + setMask(x - i, y - 1) + setMask(x + i, y + 1) + } + } + + // Exponentiation mod N. + function modN(_x) { + var x = _x + while (x >= 255) { + x -= 255 + x = (x >> 8) + (x & 255) + } + + return x + } + + // Calculate and append `ecc` data to the `data` block. If block is in the string buffer the + // indices to buffers are used. + function appendData(_data, _dataLength, _ecc, _eccLength) { + var bit, i, j + , data = _data + , dataLength = _dataLength + , ecc = _ecc + , eccLength = _eccLength + + for (i = 0; i < eccLength; i++) { + stringBuffer[ecc + i] = 0 + } + + for (i = 0; i < dataLength; i++) { + bit = GALOIS_LOG[stringBuffer[data + i] ^ stringBuffer[ecc]] + + if (bit !== 255) { + for (j = 1; j < eccLength; j++) { + stringBuffer[ecc + j - 1] = stringBuffer[ecc + j] ^ + GALOIS_EXPONENT[modN(bit + polynomial[eccLength - j])] + } + } else { + for (j = ecc; j < ecc + eccLength; j++) { + stringBuffer[j] = stringBuffer[j + 1] + } + } + + stringBuffer[ecc + eccLength - 1] = bit === 255 ? 0 : + GALOIS_EXPONENT[modN(bit + polynomial[0])] + } + } + + // Check mask since symmetricals use half. + function isMasked(_x, _y) { + var bit + , x = _x + , y = _y + + if (x > y) { + bit = x + x = y + y = bit + } + + bit = y + bit += y * y + bit >>= 1 + bit += x + + return frameMask[bit] === 1 + } + + // Apply the selected mask out of the 8 options. + function applyMask(_mask) { + var x, y, r3x, r3y + , mask = _mask + + if (mask === 0) + for (y = 0; y < width; y++) { + for (x = 0; x < width; x++) { + if (!((x + y) & 1) && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + if (mask === 1) + for (y = 0; y < width; y++) { + for (x = 0; x < width; x++) { + if (!(y & 1) && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + if (mask === 2) + for (y = 0; y < width; y++) { + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x === 3) r3x = 0 + + if (!r3x && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + if (mask === 3) + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y === 3) r3y = 0 + + for (r3x = r3y, x = 0; x < width; x++, r3x++) { + if (r3x === 3) r3x = 0 + + if (!r3x && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + if (mask === 4) + for (y = 0; y < width; y++) { + for (r3x = 0, r3y = ((y >> 1) & 1), x = 0; x < width; x++, r3x++) { + if (r3x === 3) { + r3x = 0 + r3y = !r3y + } + + if (!r3y && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + if (mask === 5) + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y === 3) r3y = 0 + + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x === 3) r3x = 0 + + if (!((x & y & 1) + !(!r3x | !r3y)) && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + if (mask === 6) + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y === 3) r3y = 0 + + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x === 3) r3x = 0 + + if (!(((x & y & 1) + (r3x && (r3x === r3y))) & 1) && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + if (mask === 7) + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y === 3) r3y = 0 + + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x === 3) r3x = 0 + + if (!(((r3x && (r3x === r3y)) + ((x + y) & 1)) & 1) && !isMasked(x, y)) { + frameBuffer[x + y * width] ^= 1 + } + } + } + + } + + // Using the table for the length of each run, calculate the amount of bad image. Long runs or + // those that look like finders are called twice once for X and Y. + function getBadRuns(_length) { + var badRuns = 0 + var i + var length = _length + + for (i = 0; i <= length; i++) { + if (badBuffer[i] >= 5) { + badRuns += N1 + badBuffer[i] - 5 + } + } + + // FBFFFBF as in finder. + for (i = 3; i < length - 1; i += 2) { + if (badBuffer[i - 2] === badBuffer[i + 2] && + badBuffer[i + 2] === badBuffer[i - 1] && + badBuffer[i - 1] === badBuffer[i + 1] && + badBuffer[i - 1] * 3 === badBuffer[i] && + // Background around the foreground pattern? Not part of the specs. + (badBuffer[i - 3] === 0 || i + 3 > length || + badBuffer[i - 3] * 3 >= badBuffer[i] * 4 || + badBuffer[i + 3] * 3 >= badBuffer[i] * 4)) { + badRuns += N3 + } + } + + return badRuns + } + + // Calculate how bad the masked image is (e.g. blocks, imbalance, runs, or finders). + function checkBadness() { + var b, b1, bad, big, bw, count, h, x, y + + bad = bw = count = 0 + + // Blocks of same colour. + for (y = 0; y < width - 1; y++) { + for (x = 0; x < width - 1; x++) { + // All foreground colour. + if ((frameBuffer[x + width * y] && + frameBuffer[(x + 1) + width * y] && + frameBuffer[x + width * (y + 1)] && + frameBuffer[(x + 1) + width * (y + 1)]) || + // All background colour. + !(frameBuffer[x + width * y] || + frameBuffer[(x + 1) + width * y] || + frameBuffer[x + width * (y + 1)] || + frameBuffer[(x + 1) + width * (y + 1)])) { + bad += N2 + } + } + } + + // X runs. + for (y = 0; y < width; y++) { + badBuffer[0] = 0 + + for (h = b = x = 0; x < width; x++) { + if ((b1 = frameBuffer[x + width * y]) === b) { + badBuffer[h]++ + } else { + badBuffer[++h] = 1 + } + + b = b1 + bw += b ? 1 : -1 + } + + bad += getBadRuns(h) + } + + if (bw < 0) bw = -bw + + big = bw + big += big << 2 + big <<= 1 + + while (big > width * width) { + big -= width * width + count++ + } + + bad += count * N4 + + // Y runs. + for (x = 0; x < width; x++) { + badBuffer[0] = 0 + + for (h = b = y = 0; y < width; y++) { + if ((b1 = frameBuffer[x + width * y]) === b) { + badBuffer[h]++ + } else { + badBuffer[++h] = 1 + } + + b = b1 + } + + bad += getBadRuns(h) + } + + return bad + } + function toUtf8(str) { + var out, i, len, c; + out = ""; + len = str.length; + for (i = 0; i < len; i++) { + c = str.charCodeAt(i); + if ((c >= 0x0001) && (c <= 0x007F)) { + out += str.charAt(i); + } else if (c > 0x07FF) { + out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); + out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } else { + out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } + } + return out; + } + + //end functions + + // Find the smallest version that fits the string. + str = toUtf8(str) + t = str.length + + version = 0 + + do { + version++ + + k = (eccLevel - 1) * 4 + (version - 1) * 16 + + neccBlock1 = ECC_BLOCKS[k++] + neccBlock2 = ECC_BLOCKS[k++] + dataBlock = ECC_BLOCKS[k++] + eccBlock = ECC_BLOCKS[k] + + k = dataBlock * (neccBlock1 + neccBlock2) + neccBlock2 - 3 + (version <= 9) + + if (t <= k) break + } while (version < 40) + + // FIXME: Ensure that it fits insted of being truncated. + width = 17 + 4 * version + + // Allocate, clear and setup data structures. + v = dataBlock + (dataBlock + eccBlock) * (neccBlock1 + neccBlock2) + neccBlock2 + + for (t = 0; t < v; t++) { + eccBuffer[t] = 0 + } + + stringBuffer = str.slice(0) + + for (t = 0; t < width * width; t++) { + frameBuffer[t] = 0 + } + + for (t = 0; t < (width * (width + 1) + 1) / 2; t++) { + frameMask[t] = 0 + } + + // Insert finders: Foreground colour to frame and background to mask. + for (t = 0; t < 3; t++) { + k = y = 0 + + if (t === 1) k = (width - 7) + if (t === 2) y = (width - 7) + + frameBuffer[(y + 3) + width * (k + 3)] = 1 + + for (x = 0; x < 6; x++) { + frameBuffer[(y + x) + width * k] = 1 + frameBuffer[y + width * (k + x + 1)] = 1 + frameBuffer[(y + 6) + width * (k + x)] = 1 + frameBuffer[(y + x + 1) + width * (k + 6)] = 1 + } + + for (x = 1; x < 5; x++) { + setMask(y + x, k + 1) + setMask(y + 1, k + x + 1) + setMask(y + 5, k + x) + setMask(y + x + 1, k + 5) + } + + for (x = 2; x < 4; x++) { + frameBuffer[(y + x) + width * (k + 2)] = 1 + frameBuffer[(y + 2) + width * (k + x + 1)] = 1 + frameBuffer[(y + 4) + width * (k + x)] = 1 + frameBuffer[(y + x + 1) + width * (k + 4)] = 1 + } + } + + // Alignment blocks. + if (version > 1) { + t = ALIGNMENT_DELTA[version] + y = width - 7 + + for (; ;) { + x = width - 7 + + while (x > t - 3) { + addAlignment(x, y) + + if (x < t) break + + x -= t + } + + if (y <= t + 9) break + + y -= t + + addAlignment(6, y) + addAlignment(y, 6) + } + } + + // Single foreground cell. + frameBuffer[8 + width * (width - 8)] = 1 + + // Timing gap (mask only). + for (y = 0; y < 7; y++) { + setMask(7, y, width) + setMask(width - 8, y) + setMask(7, y + width - 7) + } + + for (x = 0; x < 8; x++) { + setMask(x, 7) + setMask(x + width - 8, 7) + setMask(x, width - 8) + } + + // Reserve mask, format area. + for (x = 0; x < 9; x++) { + setMask(x, 8) + } + + for (x = 0; x < 8; x++) { + setMask(x + width - 8, 8) + setMask(8, x) + } + + for (y = 0; y < 7; y++) { + setMask(8, y + width - 7) + } + + // Timing row/column. + for (x = 0; x < width - 14; x++) { + if (x & 1) { + setMask(8 + x, 6) + setMask(6, 8 + x) + } else { + frameBuffer[(8 + x) + width * 6] = 1 + frameBuffer[6 + width * (8 + x)] = 1 + } + } + + // Version block. + if (version > 6) { + t = VERSION_BLOCK[version - 7] + k = 17 + + for (x = 0; x < 6; x++) { + for (y = 0; y < 3; y++, k--) { + if (1 & (k > 11 ? version >> (k - 12) : t >> k)) { + frameBuffer[(5 - x) + width * (2 - y + width - 11)] = 1 + frameBuffer[(2 - y + width - 11) + width * (5 - x)] = 1 + } else { + setMask(5 - x, 2 - y + width - 11) + setMask(2 - y + width - 11, 5 - x) + } + } + } + } + + // Sync mask bits. Only set above for background cells, so now add the foreground. + for (y = 0; y < width; y++) { + for (x = 0; x <= y; x++) { + if (frameBuffer[x + width * y]) { + setMask(x, y) + } + } + } + + // Convert string to bit stream. 8-bit data to QR-coded 8-bit data (numeric, alphanum, or kanji + // not supported). + v = stringBuffer.length + + // String to array. + for (i = 0; i < v; i++) { + eccBuffer[i] = stringBuffer.charCodeAt(i) + } + + stringBuffer = eccBuffer.slice(0) + + // Calculate max string length. + x = dataBlock * (neccBlock1 + neccBlock2) + neccBlock2 + + if (v >= x - 2) { + v = x - 2 + + if (version > 9) v-- + } + + // Shift and re-pack to insert length prefix. + i = v + + if (version > 9) { + stringBuffer[i + 2] = 0 + stringBuffer[i + 3] = 0 + + while (i--) { + t = stringBuffer[i] + + stringBuffer[i + 3] |= 255 & (t << 4) + stringBuffer[i + 2] = t >> 4 + } + + stringBuffer[2] |= 255 & (v << 4) + stringBuffer[1] = v >> 4 + stringBuffer[0] = 0x40 | (v >> 12) + } else { + stringBuffer[i + 1] = 0 + stringBuffer[i + 2] = 0 + + while (i--) { + t = stringBuffer[i] + + stringBuffer[i + 2] |= 255 & (t << 4) + stringBuffer[i + 1] = t >> 4 + } + + stringBuffer[1] |= 255 & (v << 4) + stringBuffer[0] = 0x40 | (v >> 4) + } + + // Fill to end with pad pattern. + i = v + 3 - (version < 10) + + while (i < x) { + stringBuffer[i++] = 0xec + stringBuffer[i++] = 0x11 + } + + // Calculate generator polynomial. + polynomial[0] = 1 + + for (i = 0; i < eccBlock; i++) { + polynomial[i + 1] = 1 + + for (j = i; j > 0; j--) { + polynomial[j] = polynomial[j] ? polynomial[j - 1] ^ + GALOIS_EXPONENT[modN(GALOIS_LOG[polynomial[j]] + i)] : polynomial[j - 1] + } + + polynomial[0] = GALOIS_EXPONENT[modN(GALOIS_LOG[polynomial[0]] + i)] + } + + // Use logs for generator polynomial to save calculation step. + for (i = 0; i <= eccBlock; i++) { + polynomial[i] = GALOIS_LOG[polynomial[i]] + } + + // Append ECC to data buffer. + k = x + y = 0 + + for (i = 0; i < neccBlock1; i++) { + appendData(y, dataBlock, k, eccBlock) + + y += dataBlock + k += eccBlock + } + + for (i = 0; i < neccBlock2; i++) { + appendData(y, dataBlock + 1, k, eccBlock) + + y += dataBlock + 1 + k += eccBlock + } + + // Interleave blocks. + y = 0 + + for (i = 0; i < dataBlock; i++) { + for (j = 0; j < neccBlock1; j++) { + eccBuffer[y++] = stringBuffer[i + j * dataBlock] + } + + for (j = 0; j < neccBlock2; j++) { + eccBuffer[y++] = stringBuffer[(neccBlock1 * dataBlock) + i + (j * (dataBlock + 1))] + } + } + + for (j = 0; j < neccBlock2; j++) { + eccBuffer[y++] = stringBuffer[(neccBlock1 * dataBlock) + i + (j * (dataBlock + 1))] + } + + for (i = 0; i < eccBlock; i++) { + for (j = 0; j < neccBlock1 + neccBlock2; j++) { + eccBuffer[y++] = stringBuffer[x + i + j * eccBlock] + } + } + + stringBuffer = eccBuffer + + // Pack bits into frame avoiding masked area. + x = y = width - 1 + k = v = 1 + + // inteleaved data and ECC codes. + m = (dataBlock + eccBlock) * (neccBlock1 + neccBlock2) + neccBlock2 + + for (i = 0; i < m; i++) { + t = stringBuffer[i] + + for (j = 0; j < 8; j++, t <<= 1) { + if (0x80 & t) { + frameBuffer[x + width * y] = 1 + } + + // Find next fill position. + do { + if (v) { + x-- + } else { + x++ + + if (k) { + if (y !== 0) { + y-- + } else { + x -= 2 + k = !k + + if (x === 6) { + x-- + y = 9 + } + } + } else { + if (y !== width - 1) { + y++ + } else { + x -= 2 + k = !k + + if (x === 6) { + x-- + y -= 8 + } + } + } + } + + v = !v + } while (isMasked(x, y)) + } + } + + // Save pre-mask copy of frame. + stringBuffer = frameBuffer.slice(0) + + t = 0 + y = 30000 + + // Using `for` instead of `while` since in original Arduino code if an early mask was *good + // enough* it wouldn't try for a better one since they get more complex and take longer. + for (k = 0; k < 8; k++) { + // Returns foreground-background imbalance. + applyMask(k) + + x = checkBadness() + + // Is current mask better than previous best? + if (x < y) { + y = x + t = k + } + + // Don't increment `i` to a void redoing mask. + if (t === 7) break + + // Reset for next pass. + frameBuffer = stringBuffer.slice(0) + } + + // Redo best mask as none were *good enough* (i.e. last wasn't `t`). + if (t !== k) { + applyMask(t) + } + + // Add in final mask/ECC level bytes. + y = FINAL_FORMAT[t + ((eccLevel - 1) << 3)] + + // Low byte. + for (k = 0; k < 8; k++, y >>= 1) { + if (y & 1) { + frameBuffer[(width - 1 - k) + width * 8] = 1 + + if (k < 6) { + frameBuffer[8 + width * k] = 1 + } else { + frameBuffer[8 + width * (k + 1)] = 1 + } + } + } + + // High byte. + for (k = 0; k < 7; k++, y >>= 1) { + if (y & 1) { + frameBuffer[8 + width * (width - 7 + k)] = 1 + + if (k) { + frameBuffer[(6 - k) + width * 8] = 1 + } else { + frameBuffer[7 + width * 8] = 1 + } + } + } + + // Finally, return the image data. + return { + frameBuffer: frameBuffer + , width: width + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/tm-qrcode.vue b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/tm-qrcode.vue new file mode 100644 index 0000000..9707004 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-qrcode/tm-qrcode.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-radio-group/tm-radio-group.vue b/uni_modules/UniDevTools/src/tmui/components/tm-radio-group/tm-radio-group.vue new file mode 100644 index 0000000..4cf9730 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-radio-group/tm-radio-group.vue @@ -0,0 +1,108 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-radio/tm-radio.vue b/uni_modules/UniDevTools/src/tmui/components/tm-radio/tm-radio.vue new file mode 100644 index 0000000..b528860 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-radio/tm-radio.vue @@ -0,0 +1,251 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-rate/tm-rate.vue b/uni_modules/UniDevTools/src/tmui/components/tm-rate/tm-rate.vue new file mode 100644 index 0000000..4e15179 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-rate/tm-rate.vue @@ -0,0 +1,201 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tm-render.vue b/uni_modules/UniDevTools/src/tmui/components/tm-render/tm-render.vue new file mode 100644 index 0000000..c67a3f2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tm-render.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/color/default.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/color/default.ts new file mode 100644 index 0000000..209362a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/color/default.ts @@ -0,0 +1,150 @@ +export const colorKeys = new Map([ + ['transparent', 'rgba(0,0,0,0)'], + ['black', '#000000'], + ['silver', '#C0C0C0'], + ['gray', '#808080'], + ['white', '#FFFFFF'], + ['maroon', '#800000'], + ['red', '#FF0000'], + ['purple', '#800080'], + ['fuchsia', '#FF00FF'], + ['green', '#008000'], + ['lime', '#00FF00'], + ['olive', '#808000'], + ['yellow', '#FFFF00'], + ['navy', '#000080'], + ['blue', '#0000FF'], + ['teal', '#008080'], + ['aqua', '#00FFFF'], + ['aliceblue', '#f0f8ff'], + ['antiquewhite', '#faebd7'], + ['aquamarine', '#7fffd4'], + ['azure', '#f0ffff'], + ['beige', '#f5f5dc'], + ['bisque', '#ffe4c4'], + ['blanchedalmond', '#ffebcd'], + ['blueviolet', '#8a2be2'], + ['brown', '#a52a2a'], + ['burlywood', '#deb887'], + ['cadetblue', '#5f9ea0'], + ['chartreuse', '#7fff00'], + ['chocolate', '#d2691e'], + ['coral', '#ff7f50'], + ['cornflowerblue', '#6495ed'], + ['cornsilk', '#fff8dc'], + ['crimson', '#dc143c'], + ['cyan', '#00ffff'], + ['darkblue', '#00008b'], + ['darkcyan', '#008b8b'], + ['darkgoldenrod', '#b8860b'], + ['darkgray', '#a9a9a9'], + ['darkgreen', '#006400'], + ['darkgrey', '#a9a9a9'], + ['darkkhaki', '#bdb76b'], + ['darkmagenta', '#8b008b'], + ['darkolivegreen', '#556b2f'], + ['darkorange', '#ff8c00'], + ['darkorchid', '#9932cc'], + ['darkred', '#8b0000'], + ['darksalmon', '#e9967a'], + ['darkseagreen', '#8fbc8f'], + ['darkslateblue', '#483d8b'], + ['darkslategray', '#2f4f4f'], + ['darkslategrey', '#2f4f4f'], + ['darkturquoise', '#00ced1'], + ['darkviolet', '#9400d3'], + ['deeppink', '#ff1493'], + ['deepskyblue', '#00bfff'], + ['dimgray', '#696969'], + ['dimgrey', '#696969'], + ['dodgerblue', '#1e90ff'], + ['firebrick', '#b22222'], + ['floralwhite', '#fffaf0'], + ['forestgreen', '#228b22'], + ['gainsboro', '#dcdcdc'], + ['ghostwhite', '#f8f8ff'], + ['gold', '#ffd700'], + ['goldenrod', '#daa520'], + ['greenyellow', '#adff2f'], + ['grey', '#808080'], + ['honeydew', '#f0fff0'], + ['hotpink', '#ff69b4'], + ['indianred', '#cd5c5c'], + ['indigo', '#4b0082'], + ['ivory', '#fffff0'], + ['khaki', '#f0e68c'], + ['lavender', '#e6e6fa'], + ['lavenderblush', '#fff0f5'], + ['lawngreen', '#7cfc00'], + ['lemonchiffon', '#fffacd'], + ['lightblue', '#add8e6'], + ['lightcoral', '#f08080'], + ['lightcyan', '#e0ffff'], + ['lightgoldenrodyellow', '#fafad2'], + ['lightgray', '#d3d3d3'], + ['lightgreen', '#90ee90'], + ['lightgrey', '#d3d3d3'], + ['lightpink', '#ffb6c1'], + ['lightsalmon', '#ffa07a'], + ['lightseagreen', '#20b2aa'], + ['lightskyblue', '#87cefa'], + ['lightslategray', '#778899'], + ['lightslategrey', '#778899'], + ['lightsteelblue', '#b0c4de'], + ['lightyellow', '#ffffe0'], + ['limegreen', '#32cd32'], + ['linen', '#faf0e6'], + ['magenta', '#ff00ff'], + ['mediumaquamarine', '#66cdaa'], + ['mediumblue', '#0000cd'], + ['mediumorchid', '#ba55d3'], + ['mediumpurple', '#9370db'], + ['mediumseagreen', '#3cb371'], + ['mediumslateblue', '#7b68ee'], + ['mediumspringgreen', '#00fa9a'], + ['mediumturquoise', '#48d1cc'], + ['mediumvioletred', '#c71585'], + ['midnightblue', '#191970'], + ['mintcream', '#f5fffa'], + ['mistyrose', '#ffe4e1'], + ['moccasin', '#ffe4b5'], + ['navajowhite', '#ffdead'], + ['oldlace', '#fdf5e6'], + ['olivedrab', '#6b8e23'], + ['orange', '#ffa500'], + ['orangered', '#ff4500'], + ['orchid', '#da70d6'], + ['palegoldenrod', '#eee8aa'], + ['palegreen', '#98fb98'], + ['paleturquoise', '#afeeee'], + ['palevioletred', '#db7093'], + ['papayawhip', '#ffefd5'], + ['peachpuff', '#ffdab9'], + ['peru', '#cd853f'], + ['pink', '#ffc0cb'], + ['plum', '#dda0dd'], + ['powderblue', '#b0e0e6'], + ['rosybrown', '#bc8f8f'], + ['royalblue', '#4169e1'], + ['saddlebrown', '#8b4513'], + ['salmon', '#fa8072'], + ['sandybrown', '#f4a460'], + ['seagreen', '#2e8b57'], + ['seashell', '#fff5ee'], + ['sienna', '#a0522d'], + ['skyblue', '#87ceeb'], + ['slateblue', '#6a5acd'], + ['slategray', '#708090'], + ['slategrey', '#708090'], + ['snow', '#fffafa'], + ['springgreen', '#00ff7f'], + ['steelblue', '#4682b4'], + ['tan', '#d2b48c'], + ['thistle', '#d8bfd8'], + ['tomato', '#ff6347'], + ['turquoise', '#40e0d0'], + ['violet', '#ee82ee'], + ['wheat', '#f5deb3'], + ['whitesmoke', '#f5f5f5'], + ['yellowgreen', '#9acd32'] +]) \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/color/index.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/color/index.ts new file mode 100644 index 0000000..e5c0a52 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/color/index.ts @@ -0,0 +1,78 @@ +import { subtract } from '../util'; +import { colorKeys } from './default'; +export const color = { + isValidColor(color: string): boolean { + const hexRegExp = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/; + const rgbRegExp = /^rgb\((\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5])\)$/; + const rgbaRegExp = /^rgba\((\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(0?\.\d|1(\.0)?)\)$/; + return hexRegExp.test(color) || rgbRegExp.test(color) || rgbaRegExp.test(color); + }, + convertColorToRGBA(color: string): [string, number[]] | null { + + if (!this.isValidColor(color)) { + color = colorKeys.get(color) + } + // 匹配十六进制颜色值,格式为 #RRGGBB 或 #RGB + const hexRegExp = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/; + // 匹配 RGB 颜色值,格式为 rgb(R, G, B) + const rgbRegExp = /^rgb\((\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5])\)$/; + // 匹配 RGBA 颜色值,格式为 rgba(R, G, B, A) + const rgbaRegExp = /^rgba\((\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(\d{1,2}|1\d{1,2}|2[0-4]\d|25[0-5]),\s*(0?\.\d|1(\.0)?)\)$/; + + let red = 0, green = 0, blue = 0, alpha = 1; + let rgbaString = ''; + let rgbaArray: number[] = []; + + if (hexRegExp.test(color)) { + // 将 #RRGGBB 或 #RGB 格式的颜色值转换为 RGBA 格式和对应的 RGBA 数组 + const hexValue = color.substr(1); + const hexLength = hexValue.length; + red = parseInt(hexLength === 3 ? hexValue.charAt(0) + hexValue.charAt(0) : hexValue.substr(0, 2), 16); + green = parseInt(hexLength === 3 ? hexValue.charAt(1) + hexValue.charAt(1) : hexValue.substr(2, 2), 16); + blue = parseInt(hexLength === 3 ? hexValue.charAt(2) + hexValue.charAt(2) : hexValue.substr(4, 2), 16); + rgbaString = `rgba(${red}, ${green}, ${blue}, ${alpha})`; + rgbaArray = [red, green, blue, alpha]; + } else if (rgbRegExp.test(color)) { + // 将 rgb(R, G, B) 格式的颜色值转换为 RGBA 格式和对应的 RGBA 数组 + const match = rgbRegExp.exec(color); + if (match) { + red = parseInt(match[1], 10); + green = parseInt(match[2], 10); + blue = parseInt(match[3], 10); + rgbaString = `rgba(${red}, ${green}, ${blue}, ${alpha})`; + rgbaArray = [red, green, blue, alpha]; + } + } else if (rgbaRegExp.test(color)) { + // 将 rgba(R, G, B, A)格式的颜色值转换为 RGBA 格式和对应的 RGBA 数组 + const match = rgbRegExp.exec(color); + if (match) { + red = parseInt(match[1], 10); + green = parseInt(match[2], 10); + blue = parseInt(match[3], 10); + alpha = parseInt(match[4], 10); + rgbaString = `rgba(${red}, ${green}, ${blue}, ${alpha})`; + rgbaArray = [red, green, blue, alpha]; + } + } + return [rgbaString, rgbaArray] + }, + /**一个rgba转换到另一个rgba,通过一个比率值0-1 */ + rgbaToRgba(rgba1: [number, number, number, number], rgba2: [number, number, number, number], blv: number = 0) { + let result = subtract(rgba1, rgba2); + if (result[0] <= 0) { + result[0] = rgba2[0] - rgba1[0] + } + if (result[1] <= 0) { + + result[1] = rgba2[1] - rgba1[1] + } + if (result[2] <= 0) { + result[2] = rgba2[2] - rgba1[2] + } + if (result[3] <= 0) { + result[3] = rgba2[3] - rgba1[3] + } + + return result + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/index.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/index.ts new file mode 100644 index 0000000..2bf4a38 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/index.ts @@ -0,0 +1,248 @@ +import { tmRoundRect } from './shape/roundRect'; +// @ts-expect-error +import * as TWEEN from "@/tmui/tool/lib/tween.min.js"; +import { getCanvas } from "@/tmui/tool/function/getCanvas"; +// #ifdef APP-NVUE +import { enable, WeexBridge } from "@/tmui/tool/gcanvas/index.js"; +const dom = uni.requireNativePlugin("dom"); +// #endif +import { ComponentPublicInstance } from "vue" +import { Shape } from "./shape"; +export interface tmCvOptsType { + left?: number, + top?: number, + width: number, + height: number, + dpr?: number, + platform?: 'uni' | 'web' +} +var requestAnimationFrameId:IdleRequestCallback|any = 0; +let stopDrawer = false; +let tween:TWEEN|null = null; +/** + * tmCv + * 协议:MIT + * 功能特色: + * 1/图形为插件式类对象,分模块加载,大小可控,对小程序非常有效 + * 2/保留了高效的内部动画,动画简单有趣,使用超级简单 + * @description tmCv是tmui作者专为uniapp开发轻量级的canvas绘制插件 + * @copyright tmui保留版权,不可随意拿来更改公开发布为自己的产品。不接受二次开发并公布为二次产品。 + * @author tmui3.0附带库 + * @default 2023年3月29日 + */ +export class tmCv { + private requestIdleCallback: Function | null = null + private requestAnimationFrame: Function | null = null + /**onFramdi,关闭时需要注销 */ + private timid: any = null; + ctx: UniApp.CanvasContext | null = null; + render: HTMLCanvasElement | null = null; + private canvasId: string = "" + private proxy: ComponentPublicInstance | null = null; + graphs: Array = []; + opts: tmCvOptsType = { + left: 0, + top: 0, + width: 0, + height: 0, + dpr: 1, + platform: 'uni' + } + constructor(proxy: ComponentPublicInstance, domId: string, opts?: tmCvOptsType) { + this.canvasId = domId; + this.proxy = proxy; + if (typeof opts !== 'undefined') { + this.opts = { ...this.opts, ...opts } + } + + } + init(): Promise { + return this._getNodes(this.proxy) + } + + add(graph: any | any[]) { + if (Array.isArray(graph)) { + this.graphs.push(...graph) + return + } + this.graphs.push(graph) + } + draw() { + if (!this.ctx) return; + this.ctx.clearRect(0, 0, this.opts.width, this.opts.height) + for (const rect of this.graphs) { + rect.draw() + } + if (this.ctx.draw) { + this.ctx.draw() + } + } + + public animation(arg: { duration?: number, repeat?: number, yoyo?: boolean } = { duration: 500, repeat: 0, yoyo: false }, + onUpdate: (progress: number) => void, onStart?: (progress: number) => void): Promise<{ [key: string]: any }> { + return new Promise((res, rej) => { + + tween = new TWEEN.Tween({ progress: 0 }) + .easing(TWEEN.Easing.Linear.None) // 缓动函数 + .to({ progress: 1 }, arg?.duration ?? 0) + .onUpdate((e: any) => { + onUpdate(e.progress) + }) + .onStart((e: any) => { + if (onStart) { + onStart(e.progress) + } + }) + .onComplete((e: any) => { + res(e) + }) + .delay(0) + .repeat(arg?.repeat ?? 0) + .yoyo(arg?.yoyo ?? false) + .start(); + }) + } + + private _getNodes(proxy: ComponentPublicInstance | null): Promise { + let t = this; + let sys = uni.getSystemInfoSync() + + function initOpts(node: any) { + try { + if (typeof window !== 'undefined') { + t.requestIdleCallback = window.requestIdleCallback; + t.requestAnimationFrame = window.requestAnimationFrame; + } + // @ts-expect-error + if (node && node !== null && typeof node != 'undefined' && node?.requestAnimationFrame && t.requestAnimationFrame == null) { + t.requestAnimationFrame = node.requestAnimationFrame + t.requestIdleCallback = node.cancelAnimationFrame + t.render = node; + } + if (t.requestAnimationFrame == null) { + t.requestAnimationFrame = uni.$tm.u.requestAnimationFrame; + t.requestIdleCallback = uni.$tm.u.cancelAnimationFrame + } + } catch (error) { + console.error("tmCv:", error) + } + + + } + + return new Promise((res, rej) => { + + if (!this.proxy) { + res(this) + return; + } + let delay = 10 + // #ifdef APP-NVUE + let isAndroid = sys.osName == "android"; + if (isAndroid) { + delay = 250 + } else { + delay = 100 + } + // #endif + // #ifdef MP + delay = 60 + // #endif + // #ifdef APP-VUE + delay = 30 + // #endif + // #ifdef APP-NVUE + + setTimeout(() => { + /*获取元素引用*/ + let domId = t.canvasId.replace(/[\.|#]/g, "") + var ganvas: any = proxy?.$refs[domId] ?? null; + dom?.getComponentRect(ganvas, function (res: any) { + t.opts.left = res?.size?.left ?? 0; + t.opts.top = res?.size?.top ?? 0; + t.opts.dpr = sys.pixelRatio; + // @ts-ignore + getCanvas(t.proxy, domId, t.opts.width, t.opts.height).then((e) => { + t.ctx = e.ctx + initOpts(e.node) + res(t) + }).catch(error => { + console.error(error) + }) + + }); + + }, delay); + // #endif + // #ifndef APP-NVUE + setTimeout(() => { + + uni + .createSelectorQuery() + .in(proxy) + .select(".canvas") + .boundingClientRect() + .exec(((resNodes) => { + const result = resNodes[0] + // @ts-ignore + this.opts.left = result?.left ?? 0; + // @ts-ignore + this.opts.top = result?.top ?? 0; + this.opts.dpr = sys.pixelRatio; + // @ts-ignore + getCanvas(proxy, this.canvasId, this.opts.width, this.opts.height).then((e) => { + initOpts(e.node) + this.ctx = e.ctx + stopDrawer = false; + animate(this.requestAnimationFrame) + res(this) + }).catch(error => { + + }) + })); + }, delay); + // #endif + }) + + } + + /**注销tmCv */ + destory() { + + if (!this.requestIdleCallback) return; + stopDrawer = true; + try{ + this.requestIdleCallback(requestAnimationFrameId); + requestIdleCallback(requestAnimationFrameId) + }catch(e){ + //TODO handle the exception + } + } +} + + +function animate(requestAnimationFrames: any) { + + if (!requestAnimationFrames) return; + function animateVC() { + if(stopDrawer){ + try{ + tween.stop(); + }catch(e){ + //TODO handle the exception + } + tween = null; + clearTimeout(requestAnimationFrameId) + return; + } + requestAnimationFrameId = requestAnimationFrames(animateVC); + TWEEN.update(); + } + animateVC() +} + +export { + Shape +} + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/interface.ts new file mode 100644 index 0000000..d06185f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/interface.ts @@ -0,0 +1,42 @@ +export interface shapeStyle { + fillStyle?: string, + lineWidth?: number, + strokeStyle?: string, + lineDashOffset?: number, + lineDash?: number[], + sAngle?: number, + eAngle?: number, + /**一些圆弧等用到的内半径 */ + r: number, + /**圆环时可能用到的内半径 */ + innerRadius: number, + x?: number, + y?: number, + width?: number, + height?: number, + /** 绘制圆角矩形时可以使用,四个边角的圆角控制。 */ + radius?: [number, number, number, number], + lineCap?: 'butt' | 'round' | 'square', + lineJoin?: 'bevel' | 'round' | 'miter', + lineHeight?: number, + /** 绘制文字时最大宽度,可以不设置,自动断行。 */ + textMaxWidth?: number, + /** 字符间距不支持断行 */ + letterSpace?: number, + /** 要绘制的文本 */ + text?: string | [{ + text: string, + color?: string, + fontSize?: number + }], + /** 默认14号 */ + fontSize?: number, + textAlign?: string + + [key: string]: any; +} +export interface shape extends shapeStyle { + animate(duration: number, arg: T): void +} + +export type Rect = 'Rect' diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape.ts new file mode 100644 index 0000000..99589aa --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape.ts @@ -0,0 +1,140 @@ +import { tmCv } from "."; +import { color } from "./color"; +import { shapeStyle } from "./interface"; +import { division, addition, multiply, subtract, uuid } from "./util"; + +export class Shape { + id: string = uuid(16) + + x: number = 0; + y: number = 0; + width: number = 0; + height: number = 0; + fillStyle: string = 'rgba(0,0,0,0)'; + strokeStyle: string = 'rgba(0,0,0,0)'; + lineWidth: number = 0; + lineDashOffset: number = 0 + lineDash: number[] = [0] + sAngle: number = 0 + eAngle: number = 0 + radius: [number, number, number, number] = [0, 0, 0, 0] + /**一些圆弧等用到的内半径 */ + r: number = 0 + /**圆环时可能用到的内半径 */ + innerRadius: number = 0 + lineCap: any = 'round' + lineJoin: any = 'round' + textMaxWidth: number = 0 + /** 字符间距不支持断行 */ + letterSpace: number = 0 + text: string = '' + playing: boolean = false; + fontSize: number = 14 + textAlign: 'left' | 'right' | 'center' = 'left' + + canvas: tmCv + constructor(tmcv: tmCv, arg: Partial) { + for (const item in arg) { + // @ts-expect-error + this[item] = arg[item] + // @ts-expect-error + this['back_' + item] = arg[item] + } + this.canvas = tmcv; + this.draw() + } + /**绘制 */ + draw(arg?: shapeStyle) { + return this + } + /**动画 */ + public animate(arg: Partial, animateConfig?: { + /**动画时长 */ + duration?: number, + /**重复次数 */ + repeat?: number, + /**是否来回动画0-1,1-0这样的过渡效果 */ + yoyo?: boolean + }) { + const config = { + duration: 500, + repeat: 0, + yoyo: false, + onStart: () => { }, + ...(animateConfig || {}) + } + this.playing = true; + + return this.canvas.animation(config, (progress: number) => { + // 计算动画过程中矩形的位置和颜色 + let { x, y, width, height, radius, eAngle, sAngle, textMaxWidth, letterSpace, fontSize } = this; + if (typeof arg.x !== 'undefined') { + const baseX = this['back_x'] ?? 0; + x = baseX + Number(arg.x - baseX) * progress + + } + if (typeof arg.y !== 'undefined') { + const baseY = this['back_y'] ?? 0; + y = baseY + Number(arg.y - baseY) * progress + } + if (typeof arg.width !== 'undefined') { + const baseWidth = this['back_width'] ?? 0; + width = baseWidth + Math.abs((arg.width - baseWidth) * (progress)) + } + if (typeof arg.width !== 'undefined') { + const baseHeight = this['back_height'] ?? 0; + height = baseHeight + Math.abs((arg.height - baseHeight) * (progress)) + } + if (typeof arg.radius !== 'undefined' && radius) { + this.radius = multiply(arg.radius, progress) + } + if (typeof arg.eAngle !== 'undefined' && eAngle) { + this.eAngle = Number(arg.eAngle) * progress + } + if (typeof arg.sAngle !== 'undefined' && sAngle) { + this.sAngle = Number(arg.sAngle) * progress + } + if (typeof arg?.textMaxWidth !== 'undefined') { + this.textMaxWidth = Number(arg.textMaxWidth) * progress + } + if (typeof arg?.letterSpace !== 'undefined' && letterSpace) { + this.letterSpace = Number(arg.letterSpace) * progress + } + if (typeof arg?.fontSize !== 'undefined') { + const baseFontSize = this['back_fontSize'] ?? 14; + this.fontSize = baseFontSize + (Number(arg.fontSize) - baseFontSize) * progress + + } + + if (typeof arg.fillStyle !== 'undefined') { + const [rgbastr, rgba] = color.convertColorToRGBA(arg.fillStyle); + const [s_rgbas, s_rgba] = color.convertColorToRGBA(this['back_fillStyle']); + const rgbaResult = subtract(s_rgba, rgba, true) + rgbaResult[0] = s_rgba[0] + progress * rgbaResult[0] + rgbaResult[1] = s_rgba[1] + progress * rgbaResult[1] + rgbaResult[2] = s_rgba[2] + progress * rgbaResult[2] + rgbaResult[3] = s_rgba[3] + progress * rgbaResult[3] + this.fillStyle = `rgba(${rgbaResult[0]},${rgbaResult[1]},${rgbaResult[2]},${rgbaResult[3]})` + } + if (typeof arg.strokeStyle !== 'undefined') { + const [rgbastr, rgba] = color.convertColorToRGBA(arg.strokeStyle); + const [s_rgbas, s_rgba] = color.convertColorToRGBA(this['back_strokeStyle']); + const rgbaResult = subtract(s_rgba, rgba, true) + rgbaResult[0] = s_rgba[0] + progress * rgbaResult[0] + rgbaResult[1] = s_rgba[1] + progress * rgbaResult[1] + rgbaResult[2] = s_rgba[2] + progress * rgbaResult[2] + rgbaResult[3] = s_rgba[3] + progress * rgbaResult[3] + this.strokeStyle = `rgba(${rgbaResult[0]},${rgbaResult[1]},${rgbaResult[2]},${rgbaResult[3]})` + } + this.x = x + this.y = y + this.width = width + this.height = height + this.canvas.draw() + + }).then(() => { + this.playing = false; + return Promise.resolve(this) + }) + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/arc.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/arc.ts new file mode 100644 index 0000000..2e2dcf4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/arc.ts @@ -0,0 +1,40 @@ +import { Shape } from "../shape"; + +export class tmArc extends Shape { + draw(): this { + if (!this.canvas.ctx) return this; + let ctx = this.canvas.ctx; + const x = this.x; + const y = this.y; + const width = this.width; + const height = this.height; + const fillStyle = this.fillStyle; + const strokeStyle = this.strokeStyle; + const lineWidth = this.lineWidth + const r = this.r + const sAngle = this.sAngle * (Math.PI / 180) - Math.PI / 2 + const eAngle = this.eAngle * (Math.PI / 180) - Math.PI / 2 + + ctx.beginPath(); + if (ctx.setFillStyle) { + ctx.setFillStyle(fillStyle) + ctx.setLineWidth(lineWidth) + ctx.setStrokeStyle(strokeStyle) + ctx.setLineJoin(this.lineJoin) + ctx.setLineDash(this.lineDash, this.lineDashOffset) + } else { + ctx.fillStyle = fillStyle; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = strokeStyle; + ctx.lineJoin = this.lineJoin + ctx.setLineDash(this.lineDash, this.lineDashOffset) + } + + ctx.arc(x, y, r, sAngle, eAngle) + + ctx.fill() + ctx.stroke() + + return this; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/image.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/image.ts new file mode 100644 index 0000000..77d6019 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/image.ts @@ -0,0 +1,147 @@ +import { Shape } from "../shape"; +import { tmCv } from ".."; +import { shapeStyle } from "../interface"; + +export class tmImages extends Shape { + + src: string = ""; + isLoad: boolean = false; + isErr: boolean = false; + imgWidth: number = 0 + imgHeight: number = 0 + constructor(tmcv: tmCv, arg: Partial, src: string) { + super(tmcv, arg) + this.radius = arg?.radius ?? this.radius; + this.src = src; + this.donwloadImg() + } + donwloadImg() { + let t = this; + function err() { + t.isLoad = true; + t.isErr = true; + + } + // #ifdef H5 + const img = new Image() + img.src = this.src; + img.onload = function (e) { + t.imgWidth = img.width; + t.imgHeight = img.height; + t.isLoad = true; + t.isErr = false; + + if (t.canvas.graphs.findIndex(el => el.id == t.id) > -1) { + t.draw() + if (t.canvas.ctx.draw) { + t.canvas.draw() + } + } + } + img.onerror = err; + img.onabort = err; + // #endif + // #ifdef MP-WEIXIN + const img = this.canvas.render?.createImage() + + img.onload = function (e) { + t.imgWidth = e.path[0].width; + t.imgHeight = e.path[0].height; + t.isLoad = true; + t.isErr = false; + t.src = img; + if (t.canvas.graphs.findIndex(el => el.id == t.id) > -1) { + t.draw() + if (t.canvas.ctx.draw) { + t.canvas.draw() + } + } + + } + img.onerror = err; + img.onabort = err; + img.src = t.src; + // #endif + + // #ifndef H5 || MP-WEIXIN + + uni.downloadFile({ + url: this.src, + fail(er) { + + err() + }, + success(tep) { + if (tep.statusCode !== 200) return; + t.src = tep.tempFilePath + uni.getImageInfo({ src: tep.tempFilePath }).then(r => { + t.imgWidth = r.width; + t.imgHeight = r.height; + t.isLoad = true; + t.isErr = false; + if (t.canvas.graphs.findIndex(el => el.id == t.id) > -1) { + t.draw() + if (t.canvas.ctx.draw) { + t.canvas.draw() + } + } + }).catch(() => err) + } + }) + // #endif + } + draw(): this { + if (!this.canvas.ctx || !this.isLoad) return this; + + let ctx = this.canvas.ctx; + const x = this.x; + const y = this.y; + const width = this.width; + const height = this.height; + const fillStyle = this.fillStyle; + const strokeStyle = this.strokeStyle; + const lineWidth = this.lineWidth + const radius: [number, number, number, number] = this.radius + const topLeftRadius = radius[0]; + const topRightRadius = radius[1]; + const bottomLeftRadius = radius[3]; + const bottomRightRadius = radius[2]; + + const maxWidth = this.textMaxWidth || this.canvas.opts.width + const text = this.text + const letterSpace = this.letterSpace; + const fontSize = this.fontSize; + const lineHeight = fontSize * 1.5 + ctx.save() + ctx.beginPath(); + ctx.moveTo(x + topLeftRadius, y); + ctx.lineTo(x + width - topRightRadius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + topRightRadius); + ctx.lineTo(x + width, y + height - bottomRightRadius); + ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRightRadius, y + height); + ctx.lineTo(x + bottomLeftRadius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeftRadius); + ctx.lineTo(x, y + topLeftRadius); + ctx.quadraticCurveTo(x, y, x + topLeftRadius, y); + ctx.closePath(); + + if (ctx.setFillStyle) { + ctx.setFillStyle(fillStyle) + ctx.setLineWidth(lineWidth) + ctx.setStrokeStyle(strokeStyle) + } else { + ctx.fillStyle = fillStyle; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = strokeStyle; + } + ctx.clip() + if (!this.isErr) { + ctx.drawImage(this.src, 0, 0, this.imgWidth, this.imgHeight, x, y, width, height) + } + + ctx.fill() + ctx.stroke() + ctx.restore(); + return this; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/rect.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/rect.ts new file mode 100644 index 0000000..ad57fbf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/rect.ts @@ -0,0 +1,28 @@ +import { Shape } from "../shape"; + +export class tmRect extends Shape { + draw(): this { + if (!this.canvas.ctx) return this; + let ctx = this.canvas.ctx; + const x = this.x; + const y = this.y; + const width = this.width; + const height = this.height; + const fillStyle = this.fillStyle; + const strokeStyle = this.strokeStyle; + const lineWidth = this.lineWidth + if (ctx.setFillStyle) { + ctx.setFillStyle(fillStyle) + ctx.setLineWidth(lineWidth) + ctx.setStrokeStyle(strokeStyle) + } else { + ctx.fillStyle = fillStyle; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = strokeStyle; + } + + ctx.fillRect(x, y, width, height) + ctx.strokeRect(x, y, width, height) + return this; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/ring.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/ring.ts new file mode 100644 index 0000000..52a33c3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/ring.ts @@ -0,0 +1,39 @@ +import { Shape } from "../shape"; + +export class tmRing extends Shape { + draw(): this { + if (!this.canvas.ctx) return this; + let ctx = this.canvas.ctx; + const x = this.x; + const y = this.y; + const width = this.width; + const height = this.height; + const fillStyle = this.fillStyle; + const strokeStyle = this.strokeStyle; + const lineWidth = this.lineWidth + const r = this.r + const sAngle = this.sAngle * (Math.PI / 180) - Math.PI / 2 + const eAngle = this.eAngle * (Math.PI / 180) - Math.PI / 2 + const innerRadius = this.innerRadius + if (ctx.setFillStyle) { + // ctx.setFillStyle(fillStyle) + ctx.setLineWidth(r - innerRadius) + ctx.setStrokeStyle(strokeStyle) + ctx.setLineJoin('round') + ctx.setLineCap('round') + ctx.setLineDash(this.lineDash, this.lineDashOffset) + } else { + // ctx.fillStyle = fillStyle; + ctx.lineWidth = r - innerRadius; + ctx.strokeStyle = strokeStyle; + ctx.lineJoin = 'round' + ctx.lineCap = 'round' + ctx.setLineDash(this.lineDash, this.lineDashOffset) + } + ctx.beginPath() + ctx.arc(x, y, r - (r - innerRadius), sAngle, eAngle) + // ctx.fill() + ctx.stroke() + return this; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/roundRect.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/roundRect.ts new file mode 100644 index 0000000..6b6285f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/roundRect.ts @@ -0,0 +1,54 @@ +import { tmCv } from ".."; +import { shapeStyle } from "../interface"; +import { Shape } from "../shape"; +interface roundRect extends shapeStyle { + radius: [number, number, number, number] +} +export class tmRoundRect extends Shape { + radius: [number, number, number, number] = [0, 0, 0, 0] + constructor(tmcv: tmCv, arg: Partial) { + super(tmcv, arg) + this.radius = arg?.radius ?? this.radius; + } + draw(): this { + if (!this.canvas.ctx) return this; + let ctx = this.canvas.ctx; + const x = this.x; + const y = this.y; + const width = this.width; + const height = this.height; + const fillStyle = this.fillStyle; + const strokeStyle = this.strokeStyle; + const lineWidth = this.lineWidth + const radius: [number, number, number, number] = this.radius + const topLeftRadius = radius[0]; + const topRightRadius = radius[1]; + const bottomLeftRadius = radius[3]; + const bottomRightRadius = radius[2]; + ctx.beginPath(); + ctx.moveTo(x + topLeftRadius, y); + ctx.lineTo(x + width - topRightRadius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + topRightRadius); + ctx.lineTo(x + width, y + height - bottomRightRadius); + ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRightRadius, y + height); + ctx.lineTo(x + bottomLeftRadius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeftRadius); + ctx.lineTo(x, y + topLeftRadius); + ctx.quadraticCurveTo(x, y, x + topLeftRadius, y); + ctx.closePath(); + + if (ctx.setFillStyle) { + ctx.setFillStyle(fillStyle) + ctx.setLineWidth(lineWidth) + ctx.setStrokeStyle(strokeStyle) + } else { + ctx.fillStyle = fillStyle; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = strokeStyle; + } + + ctx.fill() + ctx.stroke() + return this; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/text.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/text.ts new file mode 100644 index 0000000..06c4e20 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/text.ts @@ -0,0 +1,86 @@ +import { Shape } from "../shape"; + +export class tmTextLabel extends Shape { + textHeight: number = 0 + private drawText(text: string, x: number, y: number, maxWidth: number, lineHeight: number) { + if (typeof text != 'string' || typeof x != 'number' || typeof y != 'number') { + return; + } + + var context = this.canvas.ctx; + + // 字符分隔为数组 + var arrText = text.split(''); + var line = ''; + const _x = x; + let _x_t = _x + let lines = 1; + for (var n = 0; n < arrText.length; n++) { + var testLine = line + arrText[n]; + var metrics = context?.measureText(testLine) ?? 14; + var testWidth = metrics.width; + if (this.textAlign == 'center') { + _x_t = x + (maxWidth - testWidth / 2) / 2 + this.fontSize + } + if (this.textAlign == 'right') { + _x_t = maxWidth - x + } + if (testWidth > maxWidth && n > 0) { + context?.fillText(line, _x_t, y); + line = arrText[n]; + y += lineHeight; + lines++ + } else { + line = testLine; + + } + } + this.textHeight = lines * lineHeight + context?.fillText(line, _x_t, y); + } + draw(): this { + if (!this.canvas.ctx) return this; + let ctx = this.canvas.ctx; + const x = this.x; + const y = this.y; + const width = this.width; + const height = this.height; + const fillStyle = this.fillStyle; + const strokeStyle = this.strokeStyle; + const lineWidth = this.lineWidth + + const maxWidth = this.textMaxWidth || this.canvas.opts.width + const text = this.text + const letterSpace = this.letterSpace; + const fontSize = this.fontSize; + const lineHeight = fontSize * 1.5 + + ctx.beginPath(); + + if (ctx.setFillStyle) { + ctx.setFillStyle(fillStyle) + ctx.setLineWidth(lineWidth) + ctx.setStrokeStyle(strokeStyle) + ctx.setLineJoin(this.lineJoin) + ctx.setLineDash(this.lineDash, this.lineDashOffset) + ctx.setTextBaseline('top') + ctx.setFontSize(fontSize) + ctx.setTextAlign(this.textAlign) + } else { + ctx.fillStyle = fillStyle; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = strokeStyle; + ctx.lineJoin = this.lineJoin + ctx.setLineDash(this.lineDash, this.lineDashOffset) + ctx.textBaseline = 'top' + ctx.font = fontSize + "px sans-serif" + ctx.textAlign = this.textAlign + } + + this.drawText(text, x, y, maxWidth, lineHeight) + ctx.fill() + ctx.stroke() + + return this; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/textColor.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/textColor.ts new file mode 100644 index 0000000..14b4780 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/shape/textColor.ts @@ -0,0 +1,111 @@ +import { Shape } from "../shape"; + +export class tmTextColor extends Shape { + textHeight: number = 0 + private drawText(text: string | [{ text: string, color?: string, fontSize?: number }], x: number, y: number, maxWidth: number, lineHeight: number) { + if (typeof x != 'number' || typeof y != 'number') { + return; + } + + var context = this.canvas.ctx; + + // 字符分隔为数组 + var arrText: { + text: string, + color: string, + fontSize: number + }[] = [] + + if (typeof text == 'string') { + arrText = text.split('').map(el => { + return { + text: el, + color: this.fillStyle, + fontSize: this.fontSize + } + }) + } else if (typeof text == 'object' && Array.isArray(text)) { + text.forEach(el => { + arrText.push({ + text: el.text, + color: el?.color ?? this.fillStyle, + fontSize: el?.fontSize ?? this.fontSize + }) + }) + } + + let fontSizeList = arrText.map(el => el.fontSize) + const maxFontsize = Math.max(...fontSizeList) + + const _x = x; + let _x_t = _x + let lines = 1; + let wsXars = arrText.map(el=>{ + context!.font = el.fontSize + "px Arial" + var metrics = context?.measureText(el.text); + var testWidth = metrics?.width??el.fontSize; + return testWidth + }) + + let pos = 0; + for (var n = 0; n < arrText.length; n++) { + if (context?.setFillStyle) { + context.setFillStyle(arrText[n].color) + context.setFontSize(arrText[n].fontSize) + } else { + context!.fillStyle = arrText[n].color; + context!.font = arrText[n].fontSize + "px Arial" + } + _x_t += n>0?wsXars[pos-1]:0 + pos+=1; + context?.fillText(arrText[n].text, _x_t, y + maxFontsize); + + } + this.textHeight = lines * lineHeight + } + draw(): this { + if (!this.canvas.ctx) return this; + let ctx = this.canvas.ctx; + const x = this.x; + const y = this.y; + const width = this.width; + const height = this.height; + const fillStyle = this.fillStyle; + const strokeStyle = this.strokeStyle; + const lineWidth = this.lineWidth + + const maxWidth = this.textMaxWidth || this.canvas.opts.width + const text = this.text + const letterSpace = this.letterSpace; + const fontSize = this.fontSize; + const lineHeight = fontSize * 1.5 + + ctx.beginPath(); + + if (ctx.setFillStyle) { + ctx.setFillStyle(fillStyle) + ctx.setLineWidth(lineWidth) + ctx.setStrokeStyle(strokeStyle) + ctx.setLineJoin(this.lineJoin) + ctx.setLineDash(this.lineDash, this.lineDashOffset) + ctx.setTextBaseline('bottom') + ctx.setFontSize(fontSize) + ctx.setTextAlign(this.textAlign) + } else { + ctx.fillStyle = fillStyle; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = strokeStyle; + ctx.lineJoin = this.lineJoin + ctx.setLineDash(this.lineDash, this.lineDashOffset) + ctx.textBaseline = 'bottom' + ctx.font = fontSize + "px sans-serif" + ctx.textAlign = this.textAlign + } + + this.drawText(text, x, y, maxWidth, lineHeight) + ctx.fill() + ctx.stroke() + + return this + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/util.ts b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/util.ts new file mode 100644 index 0000000..9a78786 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-render/tmCv/util.ts @@ -0,0 +1,69 @@ +export function addition(arg1: number[], arg2: number[]) { + const result: number[] = [] + if (arg1.length === arg2.length) { + // 遍历数组并相加对应的值 + for (let i = 0; i < arg1.length; i++) { + result.push(arg1[i] + arg2[i]); + } + } + return result; +} +export function subtract(arg1: number[], arg2: number[], reserver: boolean = false) { + const result: number[] = [] + if (arg1.length === arg2.length) { + // 遍历数组并相加对应的值 + for (let i = 0; i < arg1.length; i++) { + if (!reserver) { + result.push(arg1[i] - arg2[i]); + } else { + result.push(arg2[i] - arg1[i]); + } + } + } + return result; +} +export function multiply(arg1: number[], arg2: number) { + const result: number[] = [] + // 遍历数组并相加对应的值 + for (let i = 0; i < arg1.length; i++) { + result.push(arg1[i] * arg2); + } + return result; +} +export function division(arg1: number[], arg2: number) { + const result: number[] = [] + // 遍历数组并相加对应的值 + for (let i = 0; i < arg1.length; i++) { + result.push(arg1[i] / arg2); + } + return result; +} + + +export function uuid(len = 24, radix: number) { + var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); + var uuid = [], + i; + radix = radix || chars.length; + if (len) { + // Compact form + for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; + } else { + // rfc4122, version 4 form + var r; + // rfc4122 requires these characters + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; + uuid[14] = '4'; + for (i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | Math.random() * 16; + uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; + + } + + } + + } + + return uuid.join(''); +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-result/tm-result.vue b/uni_modules/UniDevTools/src/tmui/components/tm-result/tm-result.vue new file mode 100644 index 0000000..bc31721 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-result/tm-result.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-roll-notice/tm-roll-notice.vue b/uni_modules/UniDevTools/src/tmui/components/tm-roll-notice/tm-roll-notice.vue new file mode 100644 index 0000000..892caf1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-roll-notice/tm-roll-notice.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-row/tm-row.vue b/uni_modules/UniDevTools/src/tmui/components/tm-row/tm-row.vue new file mode 100644 index 0000000..2978f6a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-row/tm-row.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-scrollx/tm-scrollx.vue b/uni_modules/UniDevTools/src/tmui/components/tm-scrollx/tm-scrollx.vue new file mode 100644 index 0000000..156f257 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-scrollx/tm-scrollx.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/propsdetail.ts b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/propsdetail.ts new file mode 100644 index 0000000..2d98378 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/propsdetail.ts @@ -0,0 +1,57 @@ +export const propsdetail = { + _class: { + type: String, + default: "" + }, + _style: { + type: String, + default: "" + }, + width: { + type: Number, + default: 0 + }, + height: { + type: Number, + default: 600 + }, + /** 提示语,组件内部默认值为 ['下拉刷新', '松手刷新', '正在刷新', '刷新完成'] */ + loadingTexts: { + type: Array, + default: () => ['下拉刷新', '松手刷新', '正在刷新', '刷新完成'] + }, + /** 最大下拉高度,如果值为数字则单位是:'px' */ + maxBarHeight: { + type: Number, + default: 120 + }, + /** 刷新超时时间 */ + refreshTimeout: { + type: Number, + default: 1000 * 5 + }, + /** 开启下拉刷新 值为 `true` 表示开启下拉刷新,值为 `false` 表示关闭下拉刷新*/ + refresher: { + type: [Boolean], + default: true + }, + /** 组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态 */ + modelValue: { + type: [Boolean], + default: null + }, + /** 组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态,非受控属性 */ + defaultValue: { + type: Boolean, + default: false + }, + /** 下拉高度多少触发,单位rpx */ + loadBarHeight: { + type: Number, + default: 120 + }, + bottomValue: { + type: [Boolean], + default: null + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/scrolly-nvue.vue b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/scrolly-nvue.vue new file mode 100644 index 0000000..f0dac13 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/scrolly-nvue.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/scrolly-vue.vue b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/scrolly-vue.vue new file mode 100644 index 0000000..ce7194a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/scrolly-vue.vue @@ -0,0 +1,299 @@ + + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/tm-scrolly.vue b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/tm-scrolly.vue new file mode 100644 index 0000000..28124d8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/tm-scrolly.vue @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/yvue.ts b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/yvue.ts new file mode 100644 index 0000000..c92dd40 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-scrolly/yvue.ts @@ -0,0 +1,201 @@ +import tmIcon from "../tm-icon/tm-icon.vue" +import tmText from "../tm-text/tm-text.vue" +import { + getCurrentInstance, + nextTick, + onMounted, + ref, + Ref, + watch +} from 'vue'; +import { propsdetail } from "./propsdetail" +const proxy = getCurrentInstance()?.proxy ?? null +const emits = defineEmits(["bottom", "change", "refresh", "timeout", "update:modelValue", "update:bottomValue"]) +const props = defineProps({ + ...propsdetail +}) +// 下拉开始的起点,主要用于计算下拉高度 +const startPoint: Ref<{ + pageX: number; pageY: number +} | null> = ref(null); +const isPulling = ref(false); // 是否下拉中 +const _maxBarHeight = ref(props.maxBarHeight); // 最大下拉高度,单位 rpx +// 触发刷新的下拉高度,单位rpx +// 松开时下拉高度大于这个值即会触发刷新,触发刷新后松开,会恢复到这个高度并保持,直到刷新结束 +const _barHeight = ref(0) +/** 开始刷新 - 刷新成功/失败 最大间隔时间setTimeout句柄 */ +let maxRefreshAnimateTimeFlag: number | null = 0; +/** 关闭动画耗时setTimeout句柄 */ +let closingAnimateTimeFlag: number | null = 0; +//加载框的高度 +const refreshStatus = ref(-1) +const loosing = ref(false) +const enableToRefresh = ref(true) +const scrollTop = ref(0) + +/** 触底下拉刷新参数。 */ +const isBootRefresh = ref(props.bottomValue) + + +watch(() => props.modelValue, () => { + if (!props.modelValue) { + if (maxRefreshAnimateTimeFlag != null) { + clearTimeout(maxRefreshAnimateTimeFlag); + } + refreshStatus.value = 3; + close(); + } +}) +watch(() => props.bottomValue, () => { + isBootRefresh.value = props.bottomValue; +}) +onMounted(() => { + clearTimeout(maxRefreshAnimateTimeFlag); + clearTimeout(closingAnimateTimeFlag); + nextTick(() => setDefault()) +}) + +function setDefault() { + if (props.defaultValue) { + setRefreshBarHeight(props.loadBarHeight) + refreshStatus.value = 2; + loosing.value = true; + isPulling.value = true; + enableToRefresh.value = false; + startPoint.value = null; + } +} + +function onScrollToBottom() { + if (isBootRefresh.value) return; + emits("update:bottomValue") + emits("bottom") +} + +function onScrollToTop() { + enableToRefresh.value = true; +} + +function onScroll(e: any) { + enableToRefresh.value = e.detail?.scrollTop === 0 +} + +function setScrollTop(tp: number) { + scrollTop.value = tp +} + +function scrollToTop() { + setScrollTop(0) +} + +function onTouchStart(e: WechatMiniprogram.Component.TrivialInstance) { + if (isPulling.value || !enableToRefresh.value) return; + const { + touches + } = e; + if (touches.length !== 1) return; + const { + pageX, + pageY + } = touches[0]; + + loosing.value = false; + startPoint.value = { + pageX, + pageY + }; + isPulling.value = true; + +} + +function onTouchMove(e: WechatMiniprogram.Component.TrivialInstance) { + if (!startPoint.value) return; + const { + touches + } = e; + + if (touches.length !== 1) return; + + const { + pageY + } = touches[0]; + const offset = pageY - startPoint.value.pageY; + const barsHeight = uni.$tm.u.torpx(offset) + + + if (barsHeight > 0) { + + if (barsHeight > _maxBarHeight.value) { + // 限高 + setRefreshBarHeight(_maxBarHeight.value); + // this.startPoint.pageY = pageY - this.toPx(this.maxBarHeight); // 限高的同时修正起点,避免触摸点上移时无效果 + } else { + setRefreshBarHeight(barsHeight); + } + } +} + +function onTouchEnd(e: WechatMiniprogram.Component.TrivialInstance) { + if (!startPoint.value) return; + const { + changedTouches + } = e; + if (changedTouches.length !== 1) return; + const { + pageY + } = changedTouches[0]; + const barsHeight = uni.$tm.u.torpx(pageY - startPoint.value.pageY); + startPoint.value = null; // 清掉起点,之后将忽略touchMove、touchEnd事件 + + loosing.value = true; + isBootRefresh.value = false; + // 松开时高度超过阈值则触发刷新 + if (barsHeight > props.loadBarHeight) { + + _barHeight.value = props.loadBarHeight + refreshStatus.value = 2; + + emits("change", true) + emits("update:modelValue", true); + emits("refresh") + maxRefreshAnimateTimeFlag = setTimeout(() => { + maxRefreshAnimateTimeFlag = null; + + if (refreshStatus.value === 2) { + // 超时回调 + emits("timeout") + close(); // 超时仍未被回调,则直接结束下拉 + } + }, props.refreshTimeout as any) as any as number; + } else { + close(); + } +} + +function setRefreshBarHeight(barsHeight: number) { + if (barsHeight >= props.loadBarHeight) { + refreshStatus.value = 1; + } else { + refreshStatus.value = 0; + } + return new Promise((resolve) => { + _barHeight.value = barsHeight; + nextTick(() => { + resolve(barsHeight) + }) + }); +} + +function close() { + const animationDuration = 350; + _barHeight.value = 0 + emits('change', false) + emits("update:modelValue", false); + closingAnimateTimeFlag = setTimeout(() => { + closingAnimateTimeFlag = null; + refreshStatus.value = -1; + isPulling.value = false; // 退出下拉状态 + loosing.value = false; + enableToRefresh.value = true; + }, animationDuration) as any as number; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-segtab/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-segtab/interface.ts new file mode 100644 index 0000000..dfdbb84 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-segtab/interface.ts @@ -0,0 +1,5 @@ +export interface listitem { + text: number | string, + id: number | string, + [prop: string]: any +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-segtab/tm-segtab.vue b/uni_modules/UniDevTools/src/tmui/components/tm-segtab/tm-segtab.vue new file mode 100644 index 0000000..6811ed4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-segtab/tm-segtab.vue @@ -0,0 +1,352 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-sheet/tm-sheet.vue b/uni_modules/UniDevTools/src/tmui/components/tm-sheet/tm-sheet.vue new file mode 100644 index 0000000..0f1e873 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-sheet/tm-sheet.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-side-menu/props.ts b/uni_modules/UniDevTools/src/tmui/components/tm-side-menu/props.ts new file mode 100644 index 0000000..319ea9a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-side-menu/props.ts @@ -0,0 +1,96 @@ +import { ref, getCurrentInstance, nextTick, Ref, computed, PropType, watch } from "vue" +interface listItem { + text: string, + dotCount?: number | string + [prop: string]: any +} +export const propsCustom = { + height: { + type: Number, + default: 500 + }, + width: { + type: Number, + default: 750 + }, + sideWidth: { + type: Number, + default: 190 + }, + itemHeight: { + type: Number, + default: 100 + }, + fontSize: { + type: Number, + default: 26 + }, + active: { + type: Number, + default: 0 + }, + menuFontColor: { + type: String, + default: 'grey' + }, + menuActiveFontColor: { + type: String, + default: 'primary' + }, + menuActiveBgColor: { + type: String, + default: 'white' + }, + /** 整个左侧导航的背景 */ + menuBarBgColor: { + type: String, + default: 'grey-4' + }, + bodyBgColor: { + type: String, + default: 'white' + }, + //只针对整体的宽和高,项目的高还是rpx. + unit: { + type: String, + default: 'rpx' + }, + list: { + type: Array as PropType>, + default: () => [], + required: true + }, + refresh: { + type: Boolean, + default: false + }, + /**触发加载函数 */ + load: { + type: Function as PropType<(type: 'pull' | 'bottom' | 'menu', item: listItem, index: number) => void>, + default: () => null + }, + /**首次是否进行load数据加载触发状态. */ + firstLoad: { + type: Boolean, + default: true + }, + /**是否禁用触底刷新功能. */ + disabledBottom: { + type: Boolean, + default: false + }, + /**是否禁用下拉刷新功能. */ + disabledPull: { + type: Boolean, + default: false + }, + rangKey: { + type: String, + default: 'text' + }, + /** 是否自定义右侧滚动区域的插槽,如果是原有的下拉,下拉的滚动组件将不显示并去除。 */ + isScroll: { + type: Boolean, + default: false + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-side-menu/tm-side-menu.vue b/uni_modules/UniDevTools/src/tmui/components/tm-side-menu/tm-side-menu.vue new file mode 100644 index 0000000..70a2187 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-side-menu/tm-side-menu.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-sign-board/tm-sign-board.vue b/uni_modules/UniDevTools/src/tmui/components/tm-sign-board/tm-sign-board.vue new file mode 100644 index 0000000..19997d7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-sign-board/tm-sign-board.vue @@ -0,0 +1,417 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-skeleton-line/tm-skeleton-line.vue b/uni_modules/UniDevTools/src/tmui/components/tm-skeleton-line/tm-skeleton-line.vue new file mode 100644 index 0000000..d763876 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-skeleton-line/tm-skeleton-line.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-skeleton/tm-skeleton.vue b/uni_modules/UniDevTools/src/tmui/components/tm-skeleton/tm-skeleton.vue new file mode 100644 index 0000000..bb8b180 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-skeleton/tm-skeleton.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-sku/tm-sku.vue b/uni_modules/UniDevTools/src/tmui/components/tm-sku/tm-sku.vue new file mode 100644 index 0000000..4843485 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-sku/tm-sku.vue @@ -0,0 +1,343 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/interface.ts new file mode 100644 index 0000000..bc27c4c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/interface.ts @@ -0,0 +1,7 @@ +export interface actionItem { + text?: string,//操作按钮的文本, + width?: number,//按钮宽度 + color?: string,//主题色 + icon?: string, + [prop: string]: any, +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/props.ts b/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/props.ts new file mode 100644 index 0000000..9364343 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/props.ts @@ -0,0 +1,44 @@ +import { PropType } from "vue" +import { actionItem } from "./interface" +export const defaultProps = { + width: { + type: Number, + default: 750 + }, + height: { + type: Number, + default: 88 + }, + + disabled: { + type: Boolean, + default: false + }, + transprent: { + type: Boolean, + default: false + }, + color: { + type: String, + default: 'white' + }, + round: { + type: Number, + default: 0 + }, + //当前打开的状态,可以使用v-model:open-status + openStatus: { + type: Boolean, + default: false + }, + /** 单位 rpx, */ + leftWidth: { + type: Number, + default: 120 + }, + /** 单位 rpx, */ + rightWidth: { + type: Number, + default: 220 + }, +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/tm-slide-switch.vue b/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/tm-slide-switch.vue new file mode 100644 index 0000000..112c8de --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slide-switch/tm-slide-switch.vue @@ -0,0 +1,447 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-bar.vue b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-bar.vue new file mode 100644 index 0000000..5ab09cb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-bar.vue @@ -0,0 +1,64 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-button.vue b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-button.vue new file mode 100644 index 0000000..0a8fc74 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-button.vue @@ -0,0 +1,222 @@ + + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-label.vue b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-label.vue new file mode 100644 index 0000000..c060487 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-label.vue @@ -0,0 +1,82 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-mask.vue b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-mask.vue new file mode 100644 index 0000000..b45d4b2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slider/slider-mask.vue @@ -0,0 +1,117 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-slider/tm-slider.vue b/uni_modules/UniDevTools/src/tmui/components/tm-slider/tm-slider.vue new file mode 100644 index 0000000..566b336 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-slider/tm-slider.vue @@ -0,0 +1,495 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-sort/customProps.ts b/uni_modules/UniDevTools/src/tmui/components/tm-sort/customProps.ts new file mode 100644 index 0000000..3fb50e8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-sort/customProps.ts @@ -0,0 +1,38 @@ +import { PropType } from "vue" +import { itemType } from "./interface" +export default { + width: { + type: Number, + default: 750 + }, + height: { + type: Number, + default: 174 + }, + /**项目的高度 */ + itemHeight: { + type: Number, + default: 88 + }, + /**一排几个项目 */ + column: { + type: Number, + default: 3 + }, + color: { + type: String, + default: 'white' + }, + fontSize: { + type: Number, + default: 24 + }, + iconSize: { + type: Number, + default: 36 + }, + list: { + type: Array as PropType>, + default: () => [] + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-sort/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-sort/interface.ts new file mode 100644 index 0000000..76af360 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-sort/interface.ts @@ -0,0 +1,14 @@ +export interface cellOptsType { + width: number, + height: number, + _x: number, + _y: number, + _index: number, + _id: number, + [key: string]: any +} +export interface itemType { + icon?: string, + text?: string, + [key: string]: any +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-sort/tm-sort.vue b/uni_modules/UniDevTools/src/tmui/components/tm-sort/tm-sort.vue new file mode 100644 index 0000000..c68124f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-sort/tm-sort.vue @@ -0,0 +1,236 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-spin/tm-spin.vue b/uni_modules/UniDevTools/src/tmui/components/tm-spin/tm-spin.vue new file mode 100644 index 0000000..681b092 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-spin/tm-spin.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-statistic/requestAnimationFrame.ts b/uni_modules/UniDevTools/src/tmui/components/tm-statistic/requestAnimationFrame.ts new file mode 100644 index 0000000..5232644 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-statistic/requestAnimationFrame.ts @@ -0,0 +1,44 @@ +let lastTime = 0 +const prefixes = 'webkit moz ms o'.split(' ') // 各浏览器前缀 +let requestAnimationFrame: Function = null +let cancelAnimationFrame: Function = null +let prefix: string = '' +// #ifdef H5 +requestAnimationFrame = window.requestAnimationFrame +cancelAnimationFrame = window.cancelAnimationFrame +// 通过遍历各浏览器前缀,来得到requestAnimationFrame和cancelAnimationFrame在当前浏览器的实现形式 +for (let i = 0; i < prefixes.length; i++) { + if (requestAnimationFrame && cancelAnimationFrame) { + break + } + prefix = prefixes[i] + requestAnimationFrame = requestAnimationFrame || window[prefix + 'RequestAnimationFrame'] + cancelAnimationFrame = cancelAnimationFrame || window[prefix + 'CancelAnimationFrame'] || window[prefix + + 'CancelRequestAnimationFrame'] +} +// #endif + + + +// 如果当前浏览器不支持requestAnimationFrame和cancelAnimationFrame,则会退到setTimeout +if (!requestAnimationFrame || !cancelAnimationFrame) { + requestAnimationFrame = function (callback) { + const currTime = new Date().getTime() + // 为了使setTimteout的尽可能的接近每秒60帧的效果 + const timeToCall = Math.max(0, 16 - (currTime - lastTime)) + const id = setTimeout(() => { + callback(currTime + timeToCall) + }, timeToCall) + lastTime = currTime + timeToCall + return id + } + + cancelAnimationFrame = function (id) { + clearTimeout(id) + } +} + +export { + requestAnimationFrame, + cancelAnimationFrame +} diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-statistic/tm-statistic.vue b/uni_modules/UniDevTools/src/tmui/components/tm-statistic/tm-statistic.vue new file mode 100644 index 0000000..f33efba --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-statistic/tm-statistic.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-stepper/tm-stepper.vue b/uni_modules/UniDevTools/src/tmui/components/tm-stepper/tm-stepper.vue new file mode 100644 index 0000000..e85247e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-stepper/tm-stepper.vue @@ -0,0 +1,300 @@ + + + \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-steps-item/tm-steps-item.vue b/uni_modules/UniDevTools/src/tmui/components/tm-steps-item/tm-steps-item.vue new file mode 100644 index 0000000..f93c8e5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-steps-item/tm-steps-item.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-steps/tm-steps.vue b/uni_modules/UniDevTools/src/tmui/components/tm-steps/tm-steps.vue new file mode 100644 index 0000000..3070c23 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-steps/tm-steps.vue @@ -0,0 +1,151 @@ + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-sticky/tm-sticky.vue b/uni_modules/UniDevTools/src/tmui/components/tm-sticky/tm-sticky.vue new file mode 100644 index 0000000..1994b76 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-sticky/tm-sticky.vue @@ -0,0 +1,61 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-switch/tm-switch.vue b/uni_modules/UniDevTools/src/tmui/components/tm-switch/tm-switch.vue new file mode 100644 index 0000000..c807609 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-switch/tm-switch.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tabbar-item/tm-tabbar-item.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tabbar-item/tm-tabbar-item.vue new file mode 100644 index 0000000..b4ff5a2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tabbar-item/tm-tabbar-item.vue @@ -0,0 +1,387 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tabbar/tm-tabbar.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tabbar/tm-tabbar.vue new file mode 100644 index 0000000..7a617f4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tabbar/tm-tabbar.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-table/cutomProps.ts b/uni_modules/UniDevTools/src/tmui/components/tm-table/cutomProps.ts new file mode 100644 index 0000000..ed33dd1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-table/cutomProps.ts @@ -0,0 +1,63 @@ +import { PropType } from "vue" +import type { headresItem, cellItem, dataTypeArray } from "./interface"; +import type { tableDataType } from "./newInterface"; +export const cutomProps = { + /**是否显示表格头 */ + showHeader: { + type: Boolean, + default: true, + }, + /**表格数据 */ + tableData: { + type: Object as PropType, + default: (): tableDataType => { + return { + data: [], + fields: { + columns: [] + }, + header: [] + } + }, + }, + /**宽度 */ + width: { + type: Number, + default: 750, + }, + /**表格单元格的宽度 */ + cellWidth: { + type: Number, + default: 160, + }, + /**如果提供了高度,将产生上下滑动的表格。 */ + height: { + type: Number, + default: 0, + }, + /**单元格的高度。 */ + cellHeight: { + type: Number, + default: 72, + }, + /**头部的高度。 */ + headerHeight: { + type: Number, + default: 100, + }, + /**是否显示格格下划线 */ + showBottomBorder: { + type: Boolean, + default: true, + }, + /**是否显示固定列 */ + showFixed: { + type: Boolean, + default: false, + }, + /**开户间隔条纹 */ + stripe: { + type: Boolean, + default: false, + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-table/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-table/interface.ts new file mode 100644 index 0000000..81832b5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-table/interface.ts @@ -0,0 +1,43 @@ +export interface headresItem { + title: string,//列表的标题。默认为:"" + key: string,//这个key需要和tabdata中的key相同,表示同一列。 + width: number,//列表宽,默认88 + align: string,//对齐方向,start左,center中,end右,默认center + sort?: boolean,//是否显示排序,默认false + bgColor: string,//当前头的背景色。默认grey + cellColor: string,//当前列的背景色。,如果为"",则使用行数据的背景,如果行背景也没有提供,使用white. + light: boolean,//背景色是否是浅色 + sortType: string,//desc降序,升序asce,none,无排序 + fixed: boolean,//是否固定在左侧端 +} + +export interface dataTypeArray { + text: string,//数据内容 + color?: string,//单元格背景颜色 + light?: boolean,//背景色是否是浅色 + width: number,//单元格的宽度。 + type: string,//单元格的类型,text,button + key: string,//该字段的key值。 + fixed: boolean,//是否固定在左侧端 + [propName: string]: any; +} +export interface FixedItemType { + title: string,//列表的标题。默认为:"" + key: string,//这个key需要和tabdata中的key相同,表示同一列。 + width: number,//列表宽,默认88 + align: string,//对齐方向,start左,center中,end右,默认center + sort?: boolean,//是否显示排序,默认false + bgColor: string,//当前头的背景色。默认grey + cellColor: string,//当前列的背景色。,如果为"",则使用行数据的背景,如果行背景也没有提供,使用white. + light: boolean,//背景色是否是浅色 + sortType: string,//desc降序,升序asce,none,无排序 + fixed: boolean,//是否固定在左侧端 +} +export interface cellItem { + key: string,//这个key需要和headres中的key相同,表示同一列。 + color?: string,//当前列的背景色。,如果为"",则使用行数据的背景,如果行背景也没有提供,使用white. + light?: boolean,//背景色是否是浅色 + align?: string,//对齐方向,start左,center中,end右,默认center + data: Array, + [propName: string]: any; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-table/newInterface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-table/newInterface.ts new file mode 100644 index 0000000..03dfa6f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-table/newInterface.ts @@ -0,0 +1,52 @@ +export const defaultCellStyle: tabaleCellStyleType = { + type: 'text', + color: 'white', + fontColor: 'black', + fontSize: 26, + light: false, + transparent: true, + asyncStyleCell: false, + sort: false, +} +export interface tabaleCellData { + value: string | number, + opts: tabaleCellStyleType, + [key: string]: any; +} +export interface tabaleCellStyleType { + type?: 'button' | 'text', + color?: string, + fontColor?: string, + fontSize?: number, + light?: boolean, + transparent?: boolean, + /**是否头和所在列同步同的背景色和文字色,注意该参数只在header中的opts有效 */ + asyncStyleCell?: boolean, + /**该列是否显示 排序功能,注意该参数只在header中的opts有效 */ + sort?: boolean, + +} +/** 表头数据格式 */ +export interface headerType { + /**字段变量名*/ + field: string, + /**字段名称 */ + name: string, + opts?: tabaleCellStyleType, + [key: string]: any; +} +export interface tableDataType { + /**列字段名称 */ + fields: { + columns: string[] + }, + /**头数据,对应fields中columns字段 */ + header: Array, + /** 表格数据 */ + data: Array<{ + opts?: { + [key: string]: tabaleCellStyleType + }, + [key: string]: any; + }> +} diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-table/table.vue b/uni_modules/UniDevTools/src/tmui/components/tm-table/table.vue new file mode 100644 index 0000000..3b8abba --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-table/table.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-table/tm-table-old.vue b/uni_modules/UniDevTools/src/tmui/components/tm-table/tm-table-old.vue new file mode 100644 index 0000000..6c9cfa6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-table/tm-table-old.vue @@ -0,0 +1,508 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-table/tm-table.vue b/uni_modules/UniDevTools/src/tmui/components/tm-table/tm-table.vue new file mode 100644 index 0000000..cddca0c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-table/tm-table.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tabs-pane/tm-tabs-pane.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tabs-pane/tm-tabs-pane.vue new file mode 100644 index 0000000..bc8a2f1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tabs-pane/tm-tabs-pane.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tabs/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-tabs/interface.ts new file mode 100644 index 0000000..69a7cd9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tabs/interface.ts @@ -0,0 +1,10 @@ +export interface tabsobj { + key: string | number, + id?: string | number, + title: string, + icon?: string, + dot?: boolean, + count?: string | number, + dotColor?: string, + [key: string]: any +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tabs/tm-tabs.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tabs/tm-tabs.vue new file mode 100644 index 0000000..c4fa4d2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tabs/tm-tabs.vue @@ -0,0 +1,1210 @@ + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tag/tm-tag.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tag/tm-tag.vue new file mode 100644 index 0000000..7843ca5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tag/tm-tag.vue @@ -0,0 +1,283 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-text/tm-text.vue b/uni_modules/UniDevTools/src/tmui/components/tm-text/tm-text.vue new file mode 100644 index 0000000..7758de8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-text/tm-text.vue @@ -0,0 +1,160 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-time-between/tm-time-between.vue b/uni_modules/UniDevTools/src/tmui/components/tm-time-between/tm-time-between.vue new file mode 100644 index 0000000..c7c9163 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-time-between/tm-time-between.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-time-picker/tm-time-picker.vue b/uni_modules/UniDevTools/src/tmui/components/tm-time-picker/tm-time-picker.vue new file mode 100644 index 0000000..18beac2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-time-picker/tm-time-picker.vue @@ -0,0 +1,240 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-time-view/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/interface.ts new file mode 100644 index 0000000..fedd600 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/interface.ts @@ -0,0 +1,28 @@ +export interface showDetail { + year: boolean, + month: boolean, + day: boolean, + hour: boolean, + minute: boolean, + second: boolean, +} +export enum timeDetailType { + year = "year", + month = "month", + day = "date", + hour = "hour", + minute = "minute", + second = "second", +} +export interface coltimeData { + type: timeDetailType,//数据格式类型,如上 timeDetailType + data: Array +} +export interface timeArrayType { + year: Array, + month: Array, + date: Array, + hour: Array, + minute: Array, + second: Array, +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-time-view/props.ts b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/props.ts new file mode 100644 index 0000000..d0a242f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/props.ts @@ -0,0 +1,82 @@ +import type { showDetail } from "./interface" +import { PropType } from "vue" +export const propsOpts = { + /** + * 这里是动态返回时间戳。这是一个标准的时间,不管showDetail是如何设置都将不影响这里的输出。 + * 并且fomart不会影响这里的双向绑定。只会影响model-str + */ + modelValue: { + type: [Number, String, Date], + default: '' + }, + //这里和modelValue不一样,它只代表格式化输出显示,因此这里可能并不是一个有效的时间值。 + /** + * 比如:format为"MM/DD",那这里就会显示12/10这样的时间格式,因此并不是一个正确的时间, + * 这里主要是为了方便表单上页面的显示控制输入。如果真要保存到数据库,你应该保存modelValue的值。 + */ + modelStr: { + type: [String], + default: '' + }, + defaultValue: { + type: [Number, String, Date], + default: '' + }, + //禁用的部分日期,禁用的日期将不会被选中,就算滑到了该位置,也会回弹到之前的时间。 + /** + * 现在暂时只禁用到天,也就是一个时间到天这如果==下面的禁用日期,就会选不中。 + */ + disabledDate: { + type: Array as PropType>, + default: (): Array => [] + }, + //展示格式。最终影响到modelStr输出格式的内容。 + format: { + type: String, + default: "YYYY/MM/DD HH:mm:ss" + }, + immediateChange: { + type: Boolean, + default: false + }, + //需要展现的时间格式类型 + showDetail: { + type: Object as PropType, + default: () => { + return { + year: true, + month: true, + day: true, + hour: false, + minute: false, + second: false + } + } + }, + //日期的后缀, + showSuffix: { + type: Object, + default: () => { + return { + year: '年', + month: '月', + day: '日', + hour: '时', + minute: '分', + second: '秒' + } + } + }, + start: { + type: [Number, String, Date], + default: '2008/01/01 00:00:00' + }, + end: { + type: [Number, String, Date], + default: '' + }, + height: { + type: Number, + default: 300 + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-time-view/time.ts b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/time.ts new file mode 100644 index 0000000..857cbf7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/time.ts @@ -0,0 +1,212 @@ +import { showDetail, timeDetailType, timeArrayType } from "./interface" +import * as dayjs from "../../tool/dayjs/esm/index" +import isSameOrBefore from '../../tool/dayjs/esm/plugin/isSameOrBefore/index'; +import isSameOrAfter from '../../tool/dayjs/esm/plugin/isSameOrAfter/index'; +import isBetween from '../../tool/dayjs/esm/plugin/isBetween/index'; +type dateType = 'year' | 'month' | 'date' | 'hour' | 'minute' | 'second' +const DayJs = dayjs.default; +DayJs.extend(isBetween) +DayJs.extend(isSameOrBefore) +DayJs.extend(isSameOrAfter) +function rangeNumber(from = 0, to = 0) { + let range: Array = [] + from = from >= 0 ? from : 1 + for (let i = from; i <= to; i++) { + range.push(i) + } + return range +} + +/** 根据显示的时间字段返回相关的时间列的可选选项. */ +export function rangeTimeArray(dateStr: string | number | Date | dayjs.Dayjs, start: string | number | Date | dayjs.Dayjs, end: string | number | Date | dayjs.Dayjs, detail: showDetail) { + let startDayjs = DayJs(start); + let endDayjs = DayJs(end); + let dateDayjs = DayJs(dateStr); + + // 计算每一列表数组开始和结束的数字. + let dateArray = { + year: [] as Array, + month: [] as Array, + date: [] as Array, + hour: [] as Array, + minute: [] as Array, + second: [] as Array, + }; + + // 计算年份数组 + let startYear = startDayjs.year(); + let endYear = endDayjs.year(); + for (let year = startYear; year <= endYear; year++) { + dateArray.year.push(year); + } + + // 计算月份数组 + let startMonth = dateDayjs.isSame(startDayjs, 'year') ? startDayjs.month() : 0; + let endMonth = dateDayjs.isSame(endDayjs, 'year') ? endDayjs.month() : 11; + for (let month = startMonth; month <= endMonth; month++) { + dateArray.month.push(month); + } + + // 计算日期数组 + let startDate = dateDayjs.isSame(startDayjs, 'month') ? startDayjs.date() : 1; + let endDate = dateDayjs.isSame(endDayjs, 'month') ? endDayjs.date() : dateDayjs.daysInMonth(); + for (let date = startDate; date <= endDate; date++) { + dateArray.date.push(date); + } + + // 计算小时数组 + let startHour = dateDayjs.isSame(startDayjs, 'date') ? startDayjs.hour() : 0; + let endHour = dateDayjs.isSame(endDayjs, 'date') ? endDayjs.hour() : 23; + for (let hour = startHour; hour <= endHour; hour++) { + dateArray.hour.push(hour); + } + + // 计算分钟数组 + let startMinute = dateDayjs.isSame(startDayjs, 'hour') ? startDayjs.minute() : 0; + let endMinute = dateDayjs.isSame(endDayjs, 'hour') ? endDayjs.minute() : 59; + for (let minute = startMinute; minute <= endMinute; minute++) { + dateArray.minute.push(minute); + } + + // 计算秒钟数组 + let startSecond = dateDayjs.isSame(startDayjs, 'minute') ? startDayjs.second() : 0; + let endSecond = dateDayjs.isSame(endDayjs, 'minute') ? endDayjs.second() : 59; + for (let second = startSecond; second <= endSecond; second++) { + dateArray.second.push(second); + } + + return dateArray; +} + +/** + * 根据现有时间取得当前的索引位置顺序 + * @param tmArray + * @param nowtime + * @param detail + */ +export function getIndexNowbydate(tmArray: timeArrayType, nowtime: dayjs.Dayjs, detail: showDetail) { + const d = DayJs(nowtime) + const intermediate = [ + [timeDetailType.year, detail.year], + [timeDetailType.month, detail.month], + [timeDetailType.day, detail.day], + [timeDetailType.hour, detail.hour], + [timeDetailType.minute, detail.minute], + [timeDetailType.second, detail.second] + ]; + + const order_str = ['year', 'month', 'date', 'hour', 'minute', 'second']; + let order = [] + for (const key of order_str) { + let keys = key == 'date'?'day':key + if (detail[keys]) { + order.push(key); + } + } + let idx = [] + for(let i=0;i n === d.get(order[i])) + idx.push(index === -1 ? 0 : index) + } + + // const idx = intermediate.filter(m => m[1]).map(m => { + // const type = m[0] as timeDetailType; + // let index = tmArray[type].findIndex(n => n === d.get(type)) + // return index === -1 ? 0 : index; + // }); + + return [ + ...idx, + ...[0, 0, 0, 0, 0, 0] + ].slice(0, 6); +} +/** + * 根据现有索引值返回当前时间。 + * @param tmArray + * @param nowtime + * @param detail + */ +export function getNowbyIndex(tmArray: timeArrayType, nowIndex: Array, detail: showDetail, start:any,end:any) { + let intermediate = [ + [timeDetailType.year, detail.year], + [timeDetailType.month, detail.month], + [timeDetailType.day, detail.day], + [timeDetailType.hour, detail.hour], + [timeDetailType.minute, detail.minute], + [timeDetailType.second, detail.second] + ]; + const order_str = ['year', 'month', 'date', 'hour', 'minute', 'second']; + let order = [] + + for (const key of order_str) { + let keys = key == 'date'?'day':key + if (detail[keys]) { + order.push({ + type:key, + index:nowIndex[order_str.indexOf(key)] + }); + } + } + + + for(let i=0;i m.type === type); + if (index > -1) { + return tmArray[type][order[index].index]; + } + return tmArray[type][0]; + } + + // function getValue(type: timeDetailType) { + // const index = intermediate.filter(m => m[1]).findIndex(m => m[0] === type); + // if (index !== -1) { + // return tmArray[type][nowIndex[index]]; + // } + // return tmArray[type][tmArray[type].length - 1]; + // } + let s = DayJs(start) + let year = detail.year?getValue(timeDetailType.year):s.year(); + let month = detail.month?getValue(timeDetailType.month):s.month(); + let date = detail.day?getValue(timeDetailType.day):s.date(); + let hour = detail.hour?getValue(timeDetailType.hour):s.hour(); + let minute = detail.minute?getValue(timeDetailType.minute):s.minute(); + let second = detail.second?getValue(timeDetailType.second):s.second(); + + let str = year + + "/" + + (month + 1) + + "/" + date + + " " + + hour + + ":" + + minute + + ":" + + second + return DayJs(str).format("YYYY/MM/DD HH:mm:ss") +} +/** + * 检查提供的时候是否是有效的时间段内,并返回正确的可用时间. + * @param nowdate + * @param start + * @param end + */ +export function checkNowDateisBetween(nowdate: string | number | Date | dayjs.Dayjs, start: string | number | Date | dayjs.Dayjs, end: string | number | Date | dayjs.Dayjs) { + + nowdate = DayJs(nowdate).isValid() ? DayJs(nowdate) : DayJs() + start = DayJs(start) + end = DayJs(end) + if (nowdate.isSameOrBefore(start)) { + return start.format("YYYY/MM/DD HH:mm:ss") + } + if (nowdate.isSameOrAfter(end)) { + return end.format("YYYY/MM/DD HH:mm:ss") + } + return nowdate.format("YYYY/MM/DD HH:mm:ss") +} + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-time-view/tm-time-view.vue b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/tm-time-view.vue new file mode 100644 index 0000000..1a310d2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-time-view/tm-time-view.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-timeline-item/tm-timeline-item.vue b/uni_modules/UniDevTools/src/tmui/components/tm-timeline-item/tm-timeline-item.vue new file mode 100644 index 0000000..4e36189 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-timeline-item/tm-timeline-item.vue @@ -0,0 +1,158 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-timeline/tm-timeline.vue b/uni_modules/UniDevTools/src/tmui/components/tm-timeline/tm-timeline.vue new file mode 100644 index 0000000..aa2c80a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-timeline/tm-timeline.vue @@ -0,0 +1,39 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-translate/tm-translate copy.vue b/uni_modules/UniDevTools/src/tmui/components/tm-translate/tm-translate copy.vue new file mode 100644 index 0000000..8df1cac --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-translate/tm-translate copy.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-translate/tm-translate.vue b/uni_modules/UniDevTools/src/tmui/components/tm-translate/tm-translate.vue new file mode 100644 index 0000000..c5c429b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-translate/tm-translate.vue @@ -0,0 +1,430 @@ + + + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/base-node.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tree/base-node.vue new file mode 100644 index 0000000..772695f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/base-node.vue @@ -0,0 +1,71 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/child-node.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tree/child-node.vue new file mode 100644 index 0000000..ae6465e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/child-node.vue @@ -0,0 +1,115 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/expanded-node.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tree/expanded-node.vue new file mode 100644 index 0000000..ab4fb23 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/expanded-node.vue @@ -0,0 +1,88 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-tree/interface.ts new file mode 100644 index 0000000..a71e058 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/interface.ts @@ -0,0 +1,9 @@ +export interface baseNodeData { + icon?: string,//节点图标。 + color?: string,//节点颜色主题 + disabled?: boolean,//节点是否禁用 + text: string,//节点标题 + id: number | string,//节点标识 + checked?: boolean, + expanded?: boolean //是否父节点打开。 +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/parent-node.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tree/parent-node.vue new file mode 100644 index 0000000..173348e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/parent-node.vue @@ -0,0 +1,213 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/tm-tree.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tree/tm-tree.vue new file mode 100644 index 0000000..f09e71b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/tm-tree.vue @@ -0,0 +1,389 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/tree-node.vue b/uni_modules/UniDevTools/src/tmui/components/tm-tree/tree-node.vue new file mode 100644 index 0000000..f99d0d0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/tree-node.vue @@ -0,0 +1,98 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-tree/util.ts b/uni_modules/UniDevTools/src/tmui/components/tm-tree/util.ts new file mode 100644 index 0000000..7548826 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-tree/util.ts @@ -0,0 +1,67 @@ +//返回 一个节点从父到子的路径id组。 +export const getNodeRouter = function (list = [], id = '', prentId = [], idmap = 'id') { + let p = []; + if (typeof prentId == 'undefined') { + prentId = []; + } + if (!Array.isArray(id)) { + id = [id] + } + let arr = Array.from(prentId) + for (let i = 0, len = list.length; i < len; i++) { + arr.push(list[i][idmap]) + if (list[i].id === id[0]) { + return arr + } + let children = list[i].children + if (children && children.length) { + let result = getNodeRouter(children, id, arr, idmap = 'id') + if (result) return result + } + arr.pop() + } + return null +} +//平铺它所有的节点id为一维数组。 +export const treeFlat = function (arr = [], idmap = 'id') { + let res = [] + arr.forEach((item) => { + res.push(item[idmap]) + if (item.children) { + res.push(...treeFlat(item.children, idmap = 'id')) + } + }) + return res +} + +//检查 一个节点是否是否父节点,并返回它下面的所有子节点。 +export const queryNodeIsParent = function (arr = [], id = "", idmap = 'id') { + + let res = null; + for (let i = 0, len = arr.length; i < len; i++) { + let item = arr[i] + + if (item[idmap] == id && item.children) { + res = item; + break; + } else if (item.children) { + let rulst = queryNodeIsParent(item.children, id, idmap = 'id'); + if (rulst) { + res = rulst; + } + } + } + return res +} +//找出所有父节点id,返回数据 +export const queryParentNode = function (arr = [], idmap = 'id'): Array { + let res = []; + for (let i = 0, len = arr.length; i < len; i++) { + let item = arr[i] + if (item.children) { + res.push(item[idmap]) + res.push(...queryParentNode(item.children)) + } + } + return res +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-upload-file/tm-upload-file.vue b/uni_modules/UniDevTools/src/tmui/components/tm-upload-file/tm-upload-file.vue new file mode 100644 index 0000000..e3349c4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-upload-file/tm-upload-file.vue @@ -0,0 +1,130 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-upload/tm-upload.vue b/uni_modules/UniDevTools/src/tmui/components/tm-upload/tm-upload.vue new file mode 100644 index 0000000..bceef23 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-upload/tm-upload.vue @@ -0,0 +1,525 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-upload/upload.ts b/uni_modules/UniDevTools/src/tmui/components/tm-upload/upload.ts new file mode 100644 index 0000000..2bdd3bc --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-upload/upload.ts @@ -0,0 +1,398 @@ + +//文件上传的状态值 +export enum statusCode { + //待上传 + upload = 0, + //上传中 + uploading = 1, + //上传失败 + fail = 2, + //上传成功 + success = 3, + //超过大小限制 + max = 4, +} +//文件对象结构 +export interface file { + url: string,//当前显示的图片地址,这是个本地临时地址。待上传前,成功后会替换服务器地址。 + status?: string,//上传状态文本 + progress?: number,//当前文件上传的进度 + uid?: string | number,//文件唯一标识id + statusCode?: statusCode,//文件状态 + response?: any,//上传成功后的回调数据。 + name?: string,//文件名称 + [propName: string]: any +} + +//上传class对象的配置。 +export interface fileConfig { + maxSize?: number,//每一个文件上传的最大尺寸,默认为10mb + maxFile?: number,//一次选择文件最大数量。 + fileType?: Array,//文件选择的类型。 + hostUrl?: string,//上传文件的服务器地址 + fileList?: Array,//已上传的文件列表。 + autoUpload?: Boolean, + header?: Object,//头部参数。 + formData?: Object,//额外的表单数据。 + formName?: string, + statusCode?: number,//服务返回成功的状态码标志,默认200表示成功。 +} +export function getUid(length = 3) { + return Number(Number(Math.random().toString().substr(3, length) + Date.now()).toString(8)); +} +/** + * 上传文件。 + * 作者:tmzdy + * 时间:2022年4月27日 + * 联系:zhongjihan@sina.com + * @method {Function} beforeChooesefile -- 选择图片上传前执行的勾子。 + * @method {Function} chooesefile -- 选择图片上传,弹出层进行选择文件 。 + * @method {Function} chooesefileAfter -- 选择图片、视频文件成功后触发。返回选择后的文件。此时还未加入待上传列表,会返回 一个文件列表用于过滤。需要在函数中再返回 一个文件 列表, + * @method {Function} chooesefileSuccess -- 文件已经加入到了待上传文件列表,需要返回过滤的文件列表 + * @method {Function} beforeAddfile -- 动态加入预计加入文件前执行的勾子,返回true才会正式加入到待上传列表中。 + * @method {Function} addFile -- 动态加入预上传的文件。 + * @method {Function} progress -- 进度。 + * @method {Function} fail -- 失败。服务器出现非200时触发。 + * @method {Function} beforeSuccess -- 服务器返回成功,立即执行的勾子。如果此时返回false,则表示文件 上传失败。 + * @method {Function} success -- 成功。 + * @method {Function} complete -- 单个文件完成。不管上传成功与失败否,都会触发此函数。 + * @method {Function} uploadComplete -- 所有文件上传完时触发 + * @method {Function} beforeStart -- 开始上传。前的校验勾子。如果返回false,将阻止上传 + * @method {Function} start -- 开始上传。 + * @method {Function} stop -- 停止上传。中止上传时触发的函数。 + */ +export class uploadfile { + //文件列表。 + filelist: Array = []; + isStop = false; + index = 0; + config: fileConfig = {}; + uploadobj: UniNamespace.UploadTask | null = null; + constructor(config: fileConfig) { + let cf: fileConfig = { maxSize: 10 * 1024 * 1024, maxFile: 9, fileType: ['album', 'camera'], fileList: [], autoUpload: true, header: {}, formData: {}, formName: 'file' } + cf = { ...cf, ...arguments[0] ?? {} }; + //配置{name: 'file', // 上传时的文件key名。默认file,header: {}, // 上传的头部参数。} + this.config = cf; + this.addFile(cf.fileList); + delete this.config.fileList; + } + async beforeChooesefile() { + return true; + } + async chooesefileAfter(fileList: Array) { + + return fileList; + } + async chooesefileSuccess(fileList: Array) { + + return fileList; + } + delete(item: file) { + let index = this.filelist.findIndex(el => el.uid == item.uid); + if (index > -1) { + let p = [...this.filelist] + p.splice(index, 1) + this.filelist = [...p]; + } + + return this.filelist; + } + async clear() { + /** 清清前要选暂停所有正在上传的文件 */ + this.stop(); + this.filelist = []; + } + setFileStatus(item: file) { + let index = this.filelist.findIndex(el => el.uid == item.uid); + if (index > -1) { + let p = [...this.filelist] + p.splice(index, 1, item) + this.filelist = [...p]; + } + } + /** + * 成功后返回选择后的图片列表。 + */ + async chooesefile(): Promise> { + let t = this; + + return new Promise(async (rs, rj) => { + let isready = await t.beforeChooesefile(); + if (!isready) { + rs([]) + return; + } + uni.chooseImage({ + count: t.config.maxFile, + sourceType: t.config.fileType, + fail: (e) => { + rj("取消选择"); + }, + success: async (res) => { + + if (res.tempFilePaths.length == 0) { + rj("未选择") + return; + } + + let imgarray = res.tempFilePaths; + let fielist = res.tempFiles; + let jgsk: Array = []; + //0待上传,1上传中,2上传失败,3上传成功。4超过大小限制 + imgarray.forEach((item: string, index: number) => { + let isMaxsize = fielist[index].size > t.config.maxSize ? true : false; + jgsk.push({ + url: item, + status: isMaxsize ? '超过大小' : "待上传", + progress: isMaxsize ? 100 : 0, + uid: getUid(), + statusCode: isMaxsize ? statusCode.max : statusCode.upload, + response: null, + name: fielist[index].name ?? "" + }) + }) + + let isreadyChoose = await t.chooesefileAfter(jgsk); + + if (!Array.isArray(isreadyChoose) || typeof isreadyChoose != 'object') { + rj("chooesefileAfter:函数过滤,没有返回文件列表。") + return; + } + + t.filelist.push(...isreadyChoose) + + t.chooesefileSuccess(isreadyChoose); + rs(isreadyChoose) + if (t.config.autoUpload) { + setTimeout(function () { + t.start(); + }, 500); + } + + + } + }) + }) + } + async chooseMPH5weixinFile() { + let t = this; + return new Promise((rs, rj) => { + var fs = uni.chooseFile; + // #ifdef MP-WEIXIN || MP-QQ + fs = uni.chooseMessageFile; + // #endif + var config = { + count: t.config.maxfile, + type: t.config.type, + extension: t.config.extension, + } + if (!t.config.extension || !Array.isArray(t.config.extension) || t.config.extension?.length == 0) { + delete config.extension + } + fs({ + ...config, + fail: (e) => { + console.error(e); + uni.$tm.toast("已取消选择"); + rj(e); + }, + success: (res) => { + if (res.tempFiles.length == 0) { + uni.$tm.toast("未选择"); + return; + } + let fielist = res.tempFiles; + let jgsk = []; + //0待上传,1上传中,2上传失败,3上传成功。4超过大小限制 + fielist.forEach((item, index) => { + let isMaxsize = fielist[index].size > t.config.maxsize ? true : false; + let ftype = item.name || "" + if (ftype) { + ftype = ftype.substr(ftype.lastIndexOf(".") + 1).toLocaleLowerCase(); + } + jgsk.push({ + url: item.path, + name: item.name || '默认文件名称', + type: ftype, + status: isMaxsize ? '超过大小' : "待上传", + progress: isMaxsize ? 100 : 0, + fileId: guid(), + statusCode: isMaxsize ? 4 : 0, + data: null,//上传成功后的回调数据。 + }) + }) + t.filelist.push(...jgsk) + + t.selected(t.filelist); + if (t.config.isAuto) { + t.start(); + } + + rs(t.filelist) + } + }) + + }) + } + setConfig(config: fileConfig) { + this.config = { ...this.config, ...config ?? {} } + } + /** + * 动态加入文件 + * @param {Object} filelist + */ + addFile(filelist: Array = []) { + if (typeof filelist !== 'object' && !Array.isArray(filelist)) return; + let total_uid = new Set(this.filelist.map(e => e.uid)) + let total_url = new Set(this.filelist.map(e => e.url)) + let cfilelist = filelist.map(el => { + return { + ...el, + status: el?.status ?? "待上传", + statusCode: el?.statusCode ?? statusCode.upload, + uid: el?.uid ?? getUid(), + progress: el?.progress ?? 0, + name: el?.name ?? "", + response: el?.response ?? null, + url: el?.url ?? "" + } + }) + let filterFIle = cfilelist.filter(item => !total_uid.has(item.uid) && !total_url.has(item.url)) + this.filelist.push(...filterFIle) + + } + beforeSuccess(item: file) { + return Promise.resolve(true); + } + beforeStart(item: file) { + return Promise.resolve(true); + } + // 进度。 + progress(item: file,index:number) { } + // 失败 + fail(item: file) { } + // 成功 + success(item: file, fileList: Array) { } + // 完成。 + complete(filelist: file) { } + uploadComplete(filelist: Array) { } + awaitTime() { + return new Promise((resolve) => { + setTimeout(() => { + resolve(true) + }, 20) + }) + } + // 开始上传。 + async start() { + + if (this.filelist.length <= 0) { + console.error("未选择图片,已取消上传") + return; + } + let t = this; + // t重新开始上传从头开始。 + this.index = 0; + this.isStop = false; + async function startupload() { + if (t.isStop) return; + + let item = t.filelist[t.index]; + + if (!item || typeof item === 'undefined') { + // 文件不存在。直接结束。 + t.uploadComplete(t.filelist); + return; + } + + let canbleStart = await t.beforeStart(item) + if (!canbleStart) { + item.statusCode = statusCode.fail; + item.status = "不允许上传" + t.filelist.splice(t.index, 1, item) + t.index++; + t.setFileStatus(item) + t.fail(item) + t.complete(item); + startupload(); + return; + } + + if (item.statusCode == 3 || item.statusCode == 1 || item.statusCode == 4 || item.statusCode == 2) { + // 直接跳过。至下一个文件。 + t.index++; + startupload(); + return; + } + + item.statusCode = statusCode.uploading; + item.status = "上传中..." + t.setFileStatus(item) + const upObj = t.uploadobj = uni.uploadFile({ + url: String(t.config.hostUrl), + name: t.config?.formName ?? 'file', + header: t.config?.header ?? {}, + filePath: item.url, + formData: { name: item.name, ...t.config.formData }, + success: async (res) => { + if (t.isStop) return + item.response = res.data; + let isOksuccess = await t.beforeSuccess(item); + const statusCode_reonese = t.config?.statusCode ?? 200 + if (res.statusCode != statusCode_reonese || !isOksuccess) { + item.statusCode = statusCode.fail; + item.status = "上传失败"; + t.fail(item) + t.setFileStatus(item) + t.index++; + return; + } + + // 上传成功。 + item.statusCode = statusCode.success; + item.status = "上传成功"; + t.setFileStatus(item) + t.success(item, t.filelist) + t.index++; + }, + fail: (res) => { + if (t.isStop) return + item.statusCode = statusCode.fail; + item.status = "上传失败"; + t.setFileStatus(item) + t.fail(item) + t.index++; + }, + complete: async (res) => { + if (t.isStop) return + await t.awaitTime(); + t.complete(item); + // 直接下一个文件。 + startupload(); + } + }) + if (upObj) { + let item = t.filelist[t.index]; + upObj.onProgressUpdate(async (res) => { + if (t.isStop) return + item.progress = res.progress; + item.statusCode = statusCode.uploading; + item.status = "..."; + t.setFileStatus(item) + t.progress(item,t.index) + + }) + } + + } + await startupload(); + } + // 停止上传 + stop() { + this.isStop = true; + if (this.uploadobj != null) { + this.uploadobj.abort() + } + } + +} diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-virtual-list/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-virtual-list/interface.ts new file mode 100644 index 0000000..5f91c6b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-virtual-list/interface.ts @@ -0,0 +1,9 @@ +export interface scrollDetailFace { + deltaX: number, + deltaY: number, + scrollHeight: number, + scrollLeft: number, + scrollTop: number, + scrollWidth: number, +} +export type statusType = "loading" | "error" | "success" | "never" \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-virtual-list/tm-virtual-list.vue b/uni_modules/UniDevTools/src/tmui/components/tm-virtual-list/tm-virtual-list.vue new file mode 100644 index 0000000..9505526 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-virtual-list/tm-virtual-list.vue @@ -0,0 +1,248 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-waterfall-item/tm-waterfall-item.vue b/uni_modules/UniDevTools/src/tmui/components/tm-waterfall-item/tm-waterfall-item.vue new file mode 100644 index 0000000..72254f5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-waterfall-item/tm-waterfall-item.vue @@ -0,0 +1,210 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-waterfall/interface.ts b/uni_modules/UniDevTools/src/tmui/components/tm-waterfall/interface.ts new file mode 100644 index 0000000..ca2bf2d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-waterfall/interface.ts @@ -0,0 +1,12 @@ +//子组件向父组件报告的信息类型。 +export interface itemParenSG { + id: number,//子组件id,唯一。 + width: number, + height: number, + top: number, + bottom: number, + left: number, + imgWidth: number, + imgHeight: number, + index: number, +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-waterfall/tm-waterfall.vue b/uni_modules/UniDevTools/src/tmui/components/tm-waterfall/tm-waterfall.vue new file mode 100644 index 0000000..0ca0339 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-waterfall/tm-waterfall.vue @@ -0,0 +1,142 @@ + + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-watermark/tm-watermark.vue b/uni_modules/UniDevTools/src/tmui/components/tm-watermark/tm-watermark.vue new file mode 100644 index 0000000..91a23b0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-watermark/tm-watermark.vue @@ -0,0 +1,348 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/components/tm-weekbar/tm-weekbar.vue b/uni_modules/UniDevTools/src/tmui/components/tm-weekbar/tm-weekbar.vue new file mode 100644 index 0000000..d3865b9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/components/tm-weekbar/tm-weekbar.vue @@ -0,0 +1,238 @@ + + diff --git a/uni_modules/UniDevTools/src/tmui/index.ts b/uni_modules/UniDevTools/src/tmui/index.ts new file mode 100644 index 0000000..abfb150 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/index.ts @@ -0,0 +1,222 @@ +import { fetchNet } from './tool/lib/fetch'; +import fontJson from './tool/tmicon/fontJson'; +import { setDomDarkOrWhite } from './tool/theme/util'; +import preview, * as util from './tool/function/util'; +import { language, languageByGlobal } from "./tool/lib/language" +import { share } from "./tool/lib/share" +import { App, nextTick} from "vue" +import PageJsonInit from "../pages.json" +import { useTmRouterBefore } from "./tool/router/index" +import tmuiconfigdefault from "./tool/lib/tmuiconfigDefault" +import { pagesType, tabBarType, pagesCustomType } from './interface'; +import * as Pinia from 'pinia'; +let pages: Array = []; +if (typeof PageJsonInit?.pages == 'undefined') { + PageJsonInit.pages = []; +} +PageJsonInit.pages.forEach((el: any) => { + let customType: pagesCustomType = (el?.style?.navigationStyle ?? "default"); + let bg = (el.style?.navigationBarBackgroundColor ?? PageJsonInit?.globalStyle?.navigationBarBackgroundColor ?? '#FFFFFF') || '#FFFFFF' + let txtColor = (el.style?.navigationBarTextStyle ?? PageJsonInit?.globalStyle?.navigationBarTextStyle ?? 'black') || 'black' + pages.push({ + path: el.path, + custom: customType, + navigationBarBackgroundColor: bg, + navigationBarTextStyle: txtColor + }) +}) +if (Array.isArray(PageJsonInit?.subPackages ?? null)) { + PageJsonInit?.subPackages.forEach((el: any) => { + let rootPath = el.root; + el.pages.forEach((el2: any) => { + let elany: any = el2; + let bg = (el2.style?.navigationBarBackgroundColor ?? PageJsonInit?.globalStyle?.navigationBarBackgroundColor ?? '#FFFFFF') || '#FFFFFF' + let txtColor = (el2.style?.navigationBarTextStyle ?? PageJsonInit?.globalStyle?.navigationBarTextStyle ?? 'black') || 'black' + pages.push({ + path: rootPath + "/" + elany.path, + custom: elany?.style?.navigationStyle ?? "default", + navigationBarBackgroundColor: bg, + navigationBarTextStyle: txtColor + }) + }) + }) +} +let pagers: any = PageJsonInit; +let tabBar: tabBarType = pagers?.tabBar ?? { + color: "", + selectedColor: "", + borderStyle: "", + backgroundColor: "", + list: [] +} + +// custom icon +let cusutomIconList = []; +// #ifdef APP +cusutomIconList = fontJson; +// #endif +let $tm = { + tabBar: tabBar, + pages: pages, + globalNavStyle: (PageJsonInit?.globalStyle.navigationStyle ?? ""), + isOpenDarkModel: (PageJsonInit?.globalStyle?.navigationBarBackgroundColor ?? "").indexOf("@") > -1, + isColor: (color: string) => { + const reg1 = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + const reg2 = /^(rgb|RGB|rgba|RGBA)/; + return reg1.test(color) || reg2.test(color); + }, + /**tmui3.0工具函数 */ + u: { ...util, preview }, + /**tmui3.0国际化语言辅助函数 */ + language: language, + fetch: fetchNet, + tmicon: [ + { + font: "tmicon", + prefix: "tmicon-", + fontJson: cusutomIconList + } + ], + config: tmuiconfigdefault as Tmui.tmuiConfig +}; + +export default { + /** + * tmui3.0 + * @param app Vue + * @param options tmui3.0配置 + */ + install: (app: App, options: Tmui.tmuiConfig = {}) => { + uni.addInterceptor('navigateTo', { + invoke(result) { + nextTick(() => { + linsInko({ + path: result.url, + context: null, + openType: 'navigateTo' + }) + }) + }, + success(result) { + + } + }) + uni.addInterceptor('redirectTo', { + success(result) { + let pages = getCurrentPages().pop() + let path = pages?.route ?? ""; + let msg = result.errMsg ?? ""; + let opentype = msg.split(":")[0] ?? ""; + linsInko({ + path: path, + context: null, + openType: opentype + }) + } + }) + uni.addInterceptor('reLaunch', { + success(result) { + let pages = getCurrentPages().pop() + let path = pages?.route ?? ""; + let msg = result.errMsg ?? ""; + let opentype = msg.split(":")[0] ?? ""; + // 这里的链接是去往的链接 + linsInko({ + path: path, + context: null, + openType: opentype + }) + } + }) + uni.addInterceptor('navigateBack', { + invoke(result) { + nextTick(() => { + let pages = getCurrentPages().pop() + let path = pages?.route ?? ""; + let msg = result.errMsg ?? ""; + let opentype = msg.split(":")[0] ?? ""; + // 这里返回的链接是返回前的链接,并非返回后的链接。 + //这里在h5端不需要监测,因为有全局监测实现。 + // #ifndef H5 + linsInko({ + path: path, + context: null, + openType: "navigateBack" + }) + // #endif + }) + }, + success(result) { + + } + }) + // #ifdef H5 + window.addEventListener('popstate', (ev: any) => { + linsInko({ + path: ev?.state?.forward ?? "", + context: null, + openType: "navigateBack" + }) + }) + // #endif + //路由拦截 + function linsInko(obj: any) { + // #ifdef H5 + setDomDarkOrWhite(); + // #endif + obj.path = obj.path[0] == "/" ? obj.path.substr(1) : obj.path + // useTmRouterBefore(obj) + options.router?.useTmRouterBefore ? options.router?.useTmRouterBefore(obj) : useTmRouterBefore(obj) + } + + options = util.deepObjectMerge($tm.config, options) + + const pinia = app.config.globalProperties.$pinia || null + const tmPiniaPlugin = (context: Pinia.PiniaPluginContext) => { + if (context.store.$id === 'tmpinia') { + context.store.tmuiConfig = options + context.store.$state.tmuiConfig = options + } + }; + if (pinia) { + pinia.use(tmPiniaPlugin) + } else { + const pinia = Pinia.createPinia() + pinia.use(tmPiniaPlugin) + app.use(pinia) + } + + // #ifndef APP-NVUE + app.use(languageByGlobal()) + // #endif + let appconfig = {}; + // #ifdef MP + + if (!$tm.config.shareDisable) { + const { onShareAppMessage, onShareTimeline } = share() + appconfig = { ...appconfig, onShareAppMessage, onShareTimeline } + + } + // #endif + + app.mixin({ + ...appconfig, + }) + + + /**合并插件的全局配置 */ + $tm = { + ...$tm, + config: options + } + + /**对外暴露 */ + uni.$tm = $tm; + // #ifdef APP-VUE + uni.setStorageSync("$tm", JSON.stringify($tm.config.theme)); + // #endif + + /**app应用上下文的暴露 */ + app.config.globalProperties.tm = $tm; + } +}; diff --git a/uni_modules/UniDevTools/src/tmui/interface.ts b/uni_modules/UniDevTools/src/tmui/interface.ts new file mode 100644 index 0000000..e2d7042 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/interface.ts @@ -0,0 +1,687 @@ +import 'pinia'; +import { ComponentInternalInstance, ComponentPublicInstance } from "vue" +interface Data { + [key: string]: any; +} + +/**渐变方向 left:右->左,right:左->右。top:下->上,bottom:上->下。 */ +export type linearType = 'left' | 'right' | 'bottom' | 'top' | '' +/**渐变色调,light,dark,accent亮系渐变和深色渐变。 */ +export type linearDeepType = "accent" | "dark" | "light" + +/**边线的访问 */ +export type borderDirectionType = "all" | "bottom" | "bottomleft" | "bottomright" | "left" | "leftright" | "right" | "right" | "top" | "topbottom" | "topleft" | "topright" | "x" | "y" +/**边线的样式 */ +export type borderStyleType = "solid" | "dashed" | "dotted" + +type componentKey = 'app' | 'button' | 'card' | 'tag' | 'sheet' +/**定义对象字段的键值只能是规定的组件名称。 */ +type componentKeys = Partial> + + +declare global { + interface Uni { + /** + * tmui3.0 函数库 + * https://tmui.design + */ + $tm: tmUtil, + } + namespace UniNamespace { + interface CanvasToTempFilePathOptions { + // @ts-ignore + canvas?: CanvasContext + } + interface CanvasContext { + width: number, + height: number, + /**dpr,屏幕的倍率 */ + dpr: number, + /**nvue的gcanvas函数 */ + toTempFilePath(any0: any, any1: any, any2: any, any3: any, any4: any, any5: any, any6: any, any7: any, any8: any): void + } + interface NodesRef { + /**节点,微信小程序上 */ + node(callback?: (result: any) => void): SelectorQuery, + /**需要读取的字段属性 */ + fields(fields: NodeField, callback?: (result: NodeInfo) => void): SelectorQuery; + } + interface NodeField { + /**包含的节点,部分小程序上会返回。 */ + node?: boolean + } + } + + namespace Tmui { + interface fetchNetConfigType { + /** + * 请求的数据,query,或者body,都可传递对象。自动转换数据格式。 + */ + data?:any, + /** + * 头部数据。 + */ + header?:any; + /** + * 请求方式 + */ + method?:fetchConfigMethod, + /** + * 定义成功的服务器返回的状态码成功的标志 + */ + statusCode?:number, + /** + * 从返回的结果读取的数据字段,默认全部返回, + * 如果指定了就会读取指定字段 + * 比如你的结果返回{code,data,msg},如果你指定:['data'],结果集中只返回data数据 + * 如果是['data',code],结果集中只返回{data,code} + */ + pick?:string[], + /** + * 是否监视参数的变化,如果参数发生了变化将会重新发起请求 + */ + watchRefresh?:boolean, + /** + * 如果不配置或者配置,默认为all + */ + toast?:'fail'|'success'|'all', + /** + * 是否显示操作后的提示,默认为true + */ + showToast?:boolean, + /** + * 读取提示信息的字段,如果读取不到会显示自动的文字。默认为msg + */ + toastKey?:string, + /** + * 是否显示加载框,默认为true。 + */ + showLoading?:boolean, + } + + /**tmui配置表 */ + interface tmuiConfig { + /** 自动跟随系统暗黑 */ + autoDark?: boolean, + /** 开启全局分离功能,默认关闭 */ + shareDisable?: boolean, + /**主题列表 */ + theme?: {}, + /**细化全局的主题配置表 */ + themeConfig?: { + /**暗黑模式下的一些统一配置 */ + dark?: { + /**一般的卡片项目暗黑背景 */ + cardColor?: string, + /**输入框,表单等暗黑背景 */ + inputColor?: string, + /**禁用输入框,表单等暗黑背景 */ + disableColor?: string, + /**暗黑下的页面背景 */ + bodyColor?: string, + /**文本禁用色. */ + textDisableColor?: string, + }, + /** + * app整体字体大小的调整比例, + * 只对使用tm-text组件以及自身组件的字号才会有效果 + * + * */ + globalFontSizeRatio?: number, + /** 是否关闭弹层背景的模糊 */ + overflowBlur?: false, + /** + * 针对不同的主题配置详细的配色方案。 + * 注意这里影响的时主题计算功能的配置 + */ + theme?: { + /**(如果该组件默认有值就会使用下列属性,如果组件默认为0不会使用。) */ + [key: string]: { + /**待考虑编辑2023-2-18 00:23:35 */ + } + }, + /**各个组件的统一配置 */ + component?: componentKeys + }, + /**router路由拦截代替外置文件 */ + router?: { + /**页面访问前执行 */ + useTmRouterBefore(arg: beforeRouterOpts): void, + /**页面访问后执行 */ + useTmRouterAfter(arg: beforeRouterOpts): void, + }, + /**用户自定义全局数据 */ + custom?: { + [key: string]: any + } + } + interface beforeRouterOpts { + path: string | null,//当前页面路径,不含前缀 / + opts?: any,//页面参数 + openType?: string,//当前页面打开的类型 + context: ComponentPublicInstance | null, + } + /**actionMenu组件项目类型 */ + interface tmActionMenu { + text?: string, + disabled?: boolean, + /** 各家小程序的openType。 */ + openType?: string + [key: string]: any; + } + interface tmAlert { + icon?: string, + title?: string, + content?: string + } + interface tabs { + key?: string | number, + title?: string, + icon?: string, + dot?: boolean, + count?: string | number + dotColor?: string, + [key: string]: any + } + interface skuItem { + title: string, + id: string | number, + num: number, + children: skuItem[] + } + interface sku { + data: skuItem[], + product: { + id: string, + title: string, + num: number, + max_buy: number, + /** 原价 */ + price: number, + /** 优惠价 */ + salePrice: 54, + tip: string, + img: string + }[] + } + + interface tmFormSubmitResult { + data: { [key: string]: any }; + isPass: boolean, + result: { + message: string,//校验后的提示文本 + validator: boolean,//是否校验通过 + }[] + } + interface tmFormRules { + validator?: Function | boolean,//检验函数。可以是Promise异步回调。 + required?: boolean,//是否必填。 + message?: string,//检验不合格时的文本 + type?: string,//校验类型. + [key: string]: any + } + /**组件的配置 */ + namespace components { + type all = button & sheet + interface button { + round?: number, + shadow?: number, + color?: string + } + interface sheet { + + } + } + + + } + +} +declare module 'pinia' { + export interface PiniaCustomProperties { + tmuiConfig: Tmui.tmuiConfig, + } + export interface PiniaCustomStateProperties { + tmuiConfig: Tmui.tmuiConfig + } +} + + +export type pagesCustomType = 'default' | 'custom' +export interface pagesType { + //页面地址 + path: string, + //导航栏模式 + custom: pagesCustomType, + navigationBarBackgroundColor: string, + navigationBarTextStyle: string, + subPackages?: Array +} +export interface tabBarItemType { + pagePath: string, + iconPath: string, + selectedIconPath: string, + text: string +} +export interface tabBarType { + color: string, + selectedColor: string, + borderStyle: string, + backgroundColor: string, + list?: Array +} +export interface beforeRouterOpts { + path: string | null,//当前页面路径,不含前缀 / + opts?: any,//页面参数 + openType?: string,//当前页面打开的类型 + context: ComponentPublicInstance | null, +} +type fetchConfigResponseType = "arraybuffer" | "text"; +type fetchConfigDataType = "json" | "text"; +type fetchConfigMethod = "GET" | "POST" | "PUT" | "DELETE" | "CONNECT" | "HEAD" | "OPTIONS" | "TRACE"; + +interface fetchConfigSuccessType { + data: object | string | ArrayBuffer, + statusCode: number, + header: object, + cookies: Array +} +interface fetchConfig { + url?: string, + data?: object | string | ArrayBuffer, + header?: object, + method?: fetchConfigMethod, + timeout?: number, + dataType?: fetchConfigDataType, + responseType?: fetchConfigResponseType, + sslVerify?: boolean, + withCredentials?: boolean, + firstIpv4?: boolean, + success?: Function, + fail?: Function, + complete?: Function +} +type openUrlType = "navigate" | "redirect" | "reLaunch" | "switchTab" | "navigateBack" +declare interface Touch { + readonly clientX: number; + readonly clientY: number; + readonly force: number; + readonly identifier: number; + readonly pageX: number; + readonly pageY: number; + readonly radiusX: number; + readonly radiusY: number; + readonly rotationAngle: number; + readonly screenX: number; + readonly screenY: number; + readonly target: EventTarget; + readonly x: number; + readonly y: number; +} + +declare interface TouchEvent { + readonly changedTouches: TouchList +} + + + + +type tmUtil = { + //pagejson下的pages配置。 + pages: Array<{ path: string, custom: 'custom' | 'default' }>, + //pagejson下的配置。 + tabBar: tabBarType, + globalNavStyle: "custom" | "default", + /** + * 判断是否是颜色值 + * @param color 颜色值 + */ + isColor(color: string): boolean, + /** + * 国际化 + * @param key 关键字 + * @return 语言值 + */ + language(key: string): string, + fetch: { + /** + * GET请求 + * @param url 请求地址 + * @param data 请求的数据 + * @param opts 请求的配置 + * @help https://tmui.design/doc/JSTool/fetch.html + */ + get(url: string, data?: object, opts?: fetchConfig): Promise, + /** + * POST请求 + * @param url 请求地址 + * @param data 请求的数据 + * @param opts 请求的配置 + * @help https://tmui.design/doc/JSTool/fetch.html + */ + post(url: string, data?: object, opts?: fetchConfig): Promise, + /** + * 自定义请求 + * @param cog 请求的配置 + * @param beforeFun 请求前执行的函数 + * @param afterFun 请求后执行的函数 + * @param complete 请求完成的函数 + * @help https://tmui.design/doc/JSTool/fetch.html + */ + request(cog: fetchConfig, beforeFun?: Function, afterFun?: Function, complete?: Function): Promise, + }, + /** + * tmui3.0函数工具 + */ + u: { + + /** + * 检测是否是数字 + * @param arg 待检测的字符 + * @param defaultNum 0,如果不符合值时设置默认值 + * @returns number类型数值 + */ + isNumber(arg: string | number | undefined | null, defaultNum: number): number, + + /** + * 检测是否是字符串 + * @param arg 待检测的字符 + * @param defaultNum 默认"",如果不符合值是设置默认值 + * @returns 字符串 + */ + isString(arg: string | number | undefined | null, defaultStr: string): string, + + /** + * 把一个数字进行分页返回数字数组 + * @param total 总数 + * @param pageSize 分页大小 + * @returns 数字数组 + */ + paginate(total: number, pageSize: number): number[], + + /** + * 取对象数据值(可深层次取值) + * @example getValue(data,"a.b.c") + * @param data 对象数据 + * @param keys 键值 + * @returns 返回值 + * @description 注意不会去改变原来的数据 + */ + getValue(data: Data, keys: string): any, + /** + * 设置对象键值(可深层次设置值) + * @example setValue(data,"a.b.c","haha") + * @param data 对象数据 + * @param keys 键值 + * @returns 修改后的对象数据。 + * @description 改变原来的数据 + */ + setValue(data: Data, keys: string, value: any): void, + /** + * 计算并返回一个对象中最大的层级数 + * @param data 待检测对象数据 + * @returns 最大层级数 + */ + getMaxDepth(data: Data): number, + + /** + * 预览图片。 + * @param {Object} url 必填 当前预览的图片链接。 + * @param {Object} list 可以是url数组,也可以是对象,数据比如:["http:url"] or [{url:"https:url",...}] + * @param {Object} rangKey 如果list是对象数组,需要提供url字段。 + */ + preview(url: string, list?: Array, rangKey?: string): void, + + /** + * 数据分组 + * @param {Array} oArr - 原数组列表 + * @param {Number} length - 单个数组长度 + * @return {Array} arr - 分组后的新数组 + */ + splitData(arr: Array, size: number): Array, + + /** + * 剩余时间格式化 + * @param {Number} t - 剩余多少秒 + * @return {Object} format - 格式后的天时分秒对象 + */ + timeMuch(t: number): string, + /** + * 获取时间距离当前时间 + * @param timestamp 当前时间 + * @return 返回比如:不久前,1年前这样的格式文本 + */ + getDateToNewData(timestamp?: number | string | Date): string, + /** + * 打电话 + * @param {String} phoneNumber - 数字字符串 + * @return Promise + */ + callPhone(phoneNumber: string): Promise, + /** + * 调起客户端相机扫码。 + * @param {Boolean} onlyFromCamera true 是否只允许相机扫码识别 + * @param {Array} scanType ['barCode', 'qrCode', 'datamatrix','datamatrix'] + * @returns Promise 成功返回相关数据结构 + */ + scanCode(onlyFromCamera: boolean, scanType: Array): Promise, + /** + * 设置剪切板内容。 + * @param {String} data + * @returns Promise true/false + */ + setClipboardData(data: string): Promise, + /** + * 获取剪切板内容 + * @returns Promise 剪切板内容 + */ + getClipboardData(): Promise, + /** + * 设置cookie数据 + * @param {String} key 键值 + * @param {String} data 值 + * @returns Boolean + */ + setCookie(key: string, data: any): boolean, + /** + * 删除一个本地cookie + * @param {String} key 键值 + * @returns Boolean + */ + delCookie(key: string): boolean, + /** + * 获取一个cookie数据 + * 如果存入的是对象,返回的也是对象。如果是string返回的也是字符串。 + * @param {String} key 键 + * @returns json/string + */ + getCookie(key: string): Object | string, + /** + * 向地址连接追加参数。 + * @param {string} uri 网址 + * @param {string} key 字段 + * @param {string} value 字段值 + * @returns 网址 + */ + httpUrlAddKey(uri: string, key: string, value: string): string, + /** + * 取url参数 + * @param {string} uri 网址 + * @param {string} key 字段 + * @returns string|undefined + */ + getQueryString(url: string, key: string): string, + /** + * 唯一标识 + * @param rdix 1 随机因子 + * @param length 12 取的长度 + * @param isAddStr false 是否限制随机结果中的长度,不允许输出长度 + * @returns String + */ + getUid(rdix?: number, length?: number, isAddStr?: boolean): number | string, + /** + * 防抖 + * 防抖原理:在一定时间内,只有最后一次操作,再过wait毫秒后才执行函数 + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延迟的时间 + * @param {Boolean} immediate 是否要立即执行 + */ + debounce(func: Function, wait?: number, immediate?: boolean): void, + /** + * 节流 + * 节流原理:在一定时间内,只能触发一次 + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延时的时间 + * @param {Boolean} immediate 是否立即执行 + * @return void + */ + throttle(func: Function, wait?: number, immediate?: boolean, timer?: number, flags?: boolean): void, + /** + * 深度克隆 + * @param {T} data 待大克隆复制的数据 + * @return {T} any + */ + deepClone(data: T): T, + /** + * 等同:queryDom + */ + quereyDom(t: ComponentInternalInstance, node: string): Promise, + /** + * 查询文档节点信息 + * @param t Vue上下文对象 + * @param node 提供带#的id比如:'#id',在nvue中应该是元素上写明ref='id' + * @returns vue页面返回查询的节点信息,nvue返回weex的节点信息。 + */ + queryDom(t: ComponentInternalInstance, node: string): Promise, + /** + * 深度合并对象 + * @param FirstOBJ 需要合并的对象 + * @param SecondOBJ 被合并的对象 + * @returns 返回合并后的对象 + */ + deepObjectMerge(FirstOBJ: Record, SecondOBJ: Record): Record, + /** + * 是否是手机号码 + * @param phone 号码 + * @returns Boolean + */ + isPhone(phone: string | number): boolean, + /** + * 是否含有中文 + * @param s 字符串 + * @returns Boolean + */ + isChina(s: string): boolean, + /** + * 是否为空 + * @description 判断是否是null,对象是否为空,数组是否为空。是否为 undefaind,是否为 “”空字符串。 + * @param s 任意 + */ + isEmpty(s: any): boolean, + /** + * 是否邮箱 + * @param s 字符串 + * @returns Boolean + */ + isEmail(s: string): boolean, + /** + * 是否身份证号 + * @param val 字符号或者数字 + * @returns Boolean + * @author https://cloud.tencent.com/developer/article/1114323 + */ + isIdCard(val: string | number): boolean, + /** + * 是否车牌 + * @description 蓝牌5位,绿牌6位。 + * @param s 字符串 + * @returns Boolean + */ + isIdCar(s: string): boolean, + /** + * 纯数字密码验证 + * @param s 字符串或者数字 + * @param len 最小长度,默认6 + * @param maxLen 最大长度,默认20 + * @returns Boolean + */ + isPasswordOfNumber(s: number | string, le: number, maxLen: number): boolean, + /** + * 密码验证 + * @param s 字符串或者数字 + * @param len 最小长度,默认6 + * @param maxLen 最大长度,默认20 + * @param model 0数字和英文,1数字,英文必须包含,不允许有特殊字符,2数字和字母必须包含,可以有特殊字符。 + * @returns Boolean + */ + isPasswordOfOther(s: string | number, len: number, maxLen: number, model: number): boolean, + /** + * 是否是一个有效的日期 + * @param s 字符串,数字,日期对象 + * @returns Boolean + */ + isDate(s: string | number | Date): boolean, + /** + * 显示信息 + * @param word 标题 + * @param mask 不允许穿透 + * @param icon 图标 + */ + toast(word: string, mask?: boolean, icon?: any): void, + /** + * 获取屏幕窗口安全高度和宽度 + * 注意是针对种屏幕的统一计算,统一高度,不再让uni获取有效高度而烦恼。 + * 请一定要在onMounted或者onLoad中调用,否则不准确在h5端。 + * @return {height,width,top,isCustomHeader,sysinfo} + */ + getWindow(): { width: number, height: number, top: number, bottom: number, statusBarHeight: number, isCustomHeader: Boolean, sysinfo: UniApp.GetSystemInfoResult }, + + /** + * 打开页面路径 + * @param url string 打开的页面路径 + * @param type openUrlType "navigate" | "redirect" | "reLaunch" | "switchTab" | "navigateBack" + */ + routerTo(url: string, type?: openUrlType): void, + /** + * 将rpx转换为px + * @param v 待转换的数字 + * @param screenWidth 屏幕的宽度,如果不提供默认自动获取 + * @return number + */ + torpx(v: number, screenWidth?: number): number + /** + * 将rpx转换为px + * @param v 待转换的数字 + * @return number + */ + topx(v: number, screenWidth?: number): number, + /** + * 在下一次前执行回调函数 + * @param callback 回调函数 + * @returns 一个id值,取消时cancelAnimationFrame(id)来取消 + */ + requestAnimationFrame(callback: Function): number, + /** + * 取消回调执行 + * @param id requestAnimationFrame产生的id + */ + cancelAnimationFrame(id: number): void + + + }, + tmicon: Array<{ + font: string, + prefix: string, + fontJson: Array<{ + icon_id: string, + name: string, + font_class: string, + unicode: string, + unicode_decimal: number + }> + }>, + /**tmui3.0的全局配置,以代替router,theme等的外围文件夹。解耦相关目录 */ + config: Tmui.tmuiConfig +} + + diff --git a/uni_modules/UniDevTools/src/tmui/license.md b/uni_modules/UniDevTools/src/tmui/license.md new file mode 100644 index 0000000..cfa75d6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/license.md @@ -0,0 +1,11 @@ +### 使用协议 + +个人可免费商用 +企业可免费商用 +你不可以复制,改造传播并分发本组件库,以此来形成盗版的 tmui 组件库。 +如果你只是想分享本组件库及其教程或者知识点,请保留版权链接 tmui.design +不可以复制本组件库的任何文档至第三方站点,以此形成第三方文档库。这样会扰乱正常官网的声誉,因为文档是不定期的经常更新。 +贡献者提供的组件,一并适用第 1,2 点。 +请尊重作者的辛苦,本组件库耗费大量时间维护。 +** 总之一句话随便免费商用修改。限制的是翻版,不尊重作者的这部分人。 ** +2021 年 8 月 19 日 14:41:12 @tmui3.0 https://tmui.design diff --git a/uni_modules/UniDevTools/src/tmui/locale/en.json b/uni_modules/UniDevTools/src/tmui/locale/en.json new file mode 100644 index 0000000..bd85d6d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/locale/en.json @@ -0,0 +1,49 @@ +{ + "language": "English-US", + "index.search.subtext": "Fully compatible with vue3 TypeScript pinia component library", + "index.search.tips": "Chinese/English name", + "index.search.btntext": "search", + "index.com.navtitle": "TMUI All platforms", + "index.com.title": "Category Navigation", + "index.com.tongyong": "Universal", + "index.com.row": "Layout", + "index.com.show": "Display", + "index.com.form": "Form", + "index.com.fd": "Reminder", + "index.com.nav": "Navigation", + "index.com.yewu": "Business", + "index.com.other": "Other", + "index.com.tubiao": "Chart", + "index.com.tongyongSub": "can't translate", + "index.com.rowSub": "can't translate", + "index.com.showSub": "can't translate", + "index.com.formSub": "can't translate", + "index.com.fdSub": "can't translate", + "index.com.navSub": "can't translate", + "index.com.yewuSub": "can't translate", + "index.com.otherSub": "can't translate", + "index.com.tubiaoSub": "Echarts 5.3.2", + "index.com.render": "Render", + "index.com.renderSub": "cavas render", + "index.com.pag": "PAG", + "index.com.pagSub": "pag animation", + "index.com.bottom": "TMUI3.0", + "index.com.setLocal": "language setting", + "index.com.autoDark": "followDark system", + "index.com.love": "Action support", + "index.com.loveSub": "Watch an ad", + "index.com.themetext": "Dynamically switch theme sore of see docs", + "index.com.themeGreen": "Yellow", + "index.com.themeBlue": "Blue", + "index.com.themeRed": "Red", + "index.com.themeDefault": "Default", + "index.com.themeCustText": "custom", + "message.load.text": "Loading", + "message.error.text": "Error", + "message.info.text": "Tips", + "message.warn.text": "Warning", + "message.quest.text": "Question", + "message.success.text": "Success", + "message.disabled.text": "Disabled", + "message.wait.text": "Waiting" +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/locale/zh-Hans.json b/uni_modules/UniDevTools/src/tmui/locale/zh-Hans.json new file mode 100644 index 0000000..bd3df54 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/locale/zh-Hans.json @@ -0,0 +1,49 @@ +{ + "language": "简体-中国", + "index.search.subtext": "全端兼容vue3 TypeScript pinia组件库", + "index.search.tips": "组件中文/英文名称", + "index.search.btntext": "搜索组件", + "index.com.navtitle": "TMUI 全平台组件库", + "index.com.title": "分类导航", + "index.com.tongyong": "通用组件", + "index.com.tongyongSub": "高频常用组件", + "index.com.row": "布局组件", + "index.com.rowSub": "布局排版", + "index.com.show": "展示组件", + "index.com.showSub": "常见数据展示", + "index.com.form": "表单录入", + "index.com.formSub": "数据提交类", + "index.com.fd": "反馈类型", + "index.com.fdSub": "提示弹层类组件", + "index.com.nav": "导航类型", + "index.com.navSub": "分页导航类", + "index.com.yewu": "业务型组件", + "index.com.yewuSub": "优惠券导购类", + "index.com.other": "其它", + "index.com.otherSub": "功能型组件", + "index.com.tubiao": "图表组件", + "index.com.tubiaoSub": "Echarts 5.3.2", + "index.com.render": "tmCv", + "index.com.renderSub": "canvas动画渲染", + "index.com.pag": "PAG", + "index.com.pagSub": "腾讯pag动画", + "index.com.bottom": "TMUI3.0", + "index.com.setLocal": "设置语言", + "index.com.autoDark": "暗黑跟随系统", + "index.com.love": "TMUI用户中心", + "index.com.loveSub": "看广告赚积分", + "index.com.themetext": "动态切换主题,默认主题见文档", + "index.com.themeGreen": "小黄", + "index.com.themeBlue": "蓝色", + "index.com.themeRed": "红色", + "index.com.themeDefault": "默认", + "index.com.themeCustText": "自定", + "message.load.text": "加载中", + "message.error.text": "操作错误", + "message.info.text": "提示信息", + "message.warn.text": "警告信息", + "message.quest.text": "似乎有问题", + "message.success.text": "操作成功", + "message.disabled.text": "禁止操作", + "message.wait.text": "请稍候.." +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/package-lock.json b/uni_modules/UniDevTools/src/tmui/package-lock.json new file mode 100644 index 0000000..a533c3c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/package-lock.json @@ -0,0 +1,4 @@ +{ + "version": "3.1.1", + "lockfileVersion": 1 +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/package.json b/uni_modules/UniDevTools/src/tmui/package.json new file mode 100644 index 0000000..a5c5baa --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/package.json @@ -0,0 +1,102 @@ +{ + "id": "tm-vuetify-3", + "displayName": "tm-vuetify-3", + "version": "3.1.1", + "description": "tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI", + "keywords": [ + "tmUI-vuetify", + "UI组件库", + "CSS主题库", + "UI", + "暗黑模式" + ], + "scripts": { + "build": "tsc --build", + "clean": "tsc --build --clean", + "watchBuild": "tsc --watch", + "pm2start": "pm2 start app.js --watch", + "start": "node app" + }, + "repository": "https://jx2d.cn/", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": { + "minVersion": "8" + }, + "Android Browser": { + "minVersion": "43" + }, + "微信浏览器(Android)": { + "minVersion": "2.7" + }, + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": { + "minVersion": "11" + }, + "Edge": "y", + "Firefox": "y", + "Safari": { + "minVersion": "8" + } + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + }, + "dependencies": {} +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/readme.md b/uni_modules/UniDevTools/src/tmui/readme.md new file mode 100644 index 0000000..f73d7e1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/readme.md @@ -0,0 +1,5 @@ +# tmui3.0 + +### [有问题点开此链接提交](https://gitee.com/LYTB/tmui-design) + +### [文档介绍,点此打开](https://tmui.design/) diff --git a/uni_modules/UniDevTools/src/tmui/scss/mainweb.css b/uni_modules/UniDevTools/src/tmui/scss/mainweb.css new file mode 100644 index 0000000..3e9accd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/mainweb.css @@ -0,0 +1,11759 @@ +.blur { + -webkit-backdrop-filter: blur(5px); + backdrop-filter: blur(5px); + background-color: rgba(0, 0, 0, 0.3); +} + +.overflow { + overflow: hidden; +} + +.overflow-x { + overflow-x: hidden; + overflow-y: auto; +} + +.overflow-y { + overflow-x: auto; + overflow-y: hidden; +} + +.relative { + position: relative !important; +} + +.absolute { + position: absolute !important; +} + +.fixed { + position: fixed !important; +} + +.sticky { + position: sticky !important; +} + +.fulled-height { + display: flex; + align-items: stretch; +} + +.clear { + clear: both; +} + +.fulled { + width: 100%; + display: block; +} + +.fulled-height { + height: 100%; + display: block; +} + +.gray-100 { + filter: grayscale(100%); +} + +.gray { + filter: grayscale(25%); +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block; +} + +.vertical-align-top { + vertical-align: top; +} + +.vertical-align-middle { + vertical-align: middle; +} + +.vertical-align-bottom { + vertical-align: bottom; +} + +.wrap { + white-space: pre-wrap; + word-break: break-all; +} + +.nowrap { + white-space: nowrap; +} + +.vertical-align-top { + vertical-align: top; +} + +.vertical-align-middle { + vertical-align: middle; +} + +.vertical-align-bottom { + vertical-align: bottom; +} + +.zIndex-0 { + z-index: 0; +} + +.zIndex-n0 { + z-index: 0; +} + +.zIndex-1 { + z-index: 1; +} + +.zIndex-n1 { + z-index: 4; +} + +.zIndex-2 { + z-index: 2; +} + +.zIndex-n2 { + z-index: 8; +} + +.zIndex-3 { + z-index: 3; +} + +.zIndex-n3 { + z-index: 12; +} + +.zIndex-4 { + z-index: 4; +} + +.zIndex-n4 { + z-index: 16; +} + +.zIndex-5 { + z-index: 5; +} + +.zIndex-n5 { + z-index: 20; +} + +.zIndex-6 { + z-index: 6; +} + +.zIndex-n6 { + z-index: 24; +} + +.zIndex-7 { + z-index: 7; +} + +.zIndex-n7 { + z-index: 28; +} + +.zIndex-8 { + z-index: 8; +} + +.zIndex-n8 { + z-index: 32; +} + +.zIndex-9 { + z-index: 9; +} + +.zIndex-n9 { + z-index: 36; +} + +.zIndex-10 { + z-index: 10; +} + +.zIndex-n10 { + z-index: 40; +} + +.zIndex-11 { + z-index: 11; +} + +.zIndex-n11 { + z-index: 44; +} + +.zIndex-12 { + z-index: 12; +} + +.zIndex-n12 { + z-index: 48; +} + +.zIndex-13 { + z-index: 13; +} + +.zIndex-n13 { + z-index: 52; +} + +.zIndex-14 { + z-index: 14; +} + +.zIndex-n14 { + z-index: 56; +} + +.zIndex-15 { + z-index: 15; +} + +.zIndex-n15 { + z-index: 60; +} + +.zIndex-16 { + z-index: 16; +} + +.zIndex-n16 { + z-index: 64; +} + +.zIndex-17 { + z-index: 17; +} + +.zIndex-n17 { + z-index: 68; +} + +.zIndex-18 { + z-index: 18; +} + +.zIndex-n18 { + z-index: 72; +} + +.zIndex-19 { + z-index: 19; +} + +.zIndex-n19 { + z-index: 76; +} + +.zIndex-20 { + z-index: 20; +} + +.zIndex-n20 { + z-index: 80; +} + +.zIndex-21 { + z-index: 21; +} + +.zIndex-n21 { + z-index: 84; +} + +.zIndex-22 { + z-index: 22; +} + +.zIndex-n22 { + z-index: 88; +} + +.zIndex-23 { + z-index: 23; +} + +.zIndex-n23 { + z-index: 92; +} + +.zIndex-24 { + z-index: 24; +} + +.zIndex-n24 { + z-index: 96; +} + +.zIndex-25 { + z-index: 25; +} + +.zIndex-n25 { + z-index: 100; +} + +.zIndex-26 { + z-index: 26; +} + +.zIndex-n26 { + z-index: 104; +} + +.text-overflow { + width: 100%; + display: block; + white-space: nowrap; + overflow: hidden; +} + +.text-overflow-1 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical; +} + +.text-overflow-2 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.text-overflow-3 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; +} + +.text-overflow-4 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical; +} + +/* #ifdef APP-PLUS-NVUE */ +.text-overflow { + text-overflow: ellipsis; +} + +.text-overflow-1 { + text-overflow: ellipsis; + lines: 1; +} + +.text-overflow-2 { + text-overflow: ellipsis; + lines: 2; +} + +.text-overflow-3 { + text-overflow: ellipsis; + lines: 3; +} + +.text-overflow-4 { + text-overflow: ellipsis; + lines: 4; +} + +.wrap { + word-wrap: break-word; +} + +.text-delete { + text-decoration: line-through; +} + +.text-underline { + text-decoration: underline; +} + +/* #ifdef H5*/ +.text-size-xxs { + font-size: 12px; +} +.text-size-xxs span { + font-size: 12px; +} + +/* #ifndef H5*/ +.text-size-xxs { + font-size: 12px; +} + +/* #ifdef H5*/ +.text-size-xs { + font-size: 13px; +} +.text-size-xs span { + font-size: 13px; +} + +/* #ifndef H5*/ +.text-size-xs { + font-size: 13px; +} + +/* #ifdef H5*/ +.text-size-s { + font-size: 13px; +} +.text-size-s span { + font-size: 13px; +} + +/* #ifndef H5*/ +.text-size-s { + font-size: 13px; +} + +/* #ifdef H5*/ +.text-size-m { + font-size: 14px; +} +.text-size-m span { + font-size: 14px; +} + +/* #ifndef H5*/ +.text-size-m { + font-size: 14px; +} + +/* #ifdef H5*/ +.text-size-n { + font-size: 16px; +} +.text-size-n span { + font-size: 16px; +} + +/* #ifndef H5*/ +.text-size-n { + font-size: 16px; +} + +/* #ifdef H5*/ +.text-size-g { + font-size: 18px; +} +.text-size-g span { + font-size: 18px; +} + +/* #ifndef H5*/ +.text-size-g { + font-size: 18px; +} + +/* #ifdef H5*/ +.text-size-lg { + font-size: 20px; +} +.text-size-lg span { + font-size: 20px; +} + +/* #ifndef H5*/ +.text-size-lg { + font-size: 20px; +} + +/* #ifdef H5*/ +.text-size-xl { + font-size: 24px; +} +.text-size-xl span { + font-size: 24px; +} + +/* #ifndef H5*/ +.text-size-xl { + font-size: 24px; +} + +.text-weight-s { + font-weight: 100; +} + +.text-weight-n { + font-weight: 400; +} + +.text-weight-b { + font-weight: 700; +} + +.text-align-left { + text-align: left; +} + +.text-align-right { + text-align: right; +} + +.text-align-center { + text-align: center; +} + +.round-0 { + border-radius: 0px !important; +} + +.round-1 { + border-radius: 1px !important; +} + +.round-2 { + border-radius: 2px !important; +} + +.round-3 { + border-radius: 3px !important; +} + +.round-4 { + border-radius: 4px !important; +} + +.round-5 { + border-radius: 5px !important; +} + +.round-6 { + border-radius: 6px !important; +} + +.round-7 { + border-radius: 7px !important; +} + +.round-8 { + border-radius: 8px !important; +} + +.round-9 { + border-radius: 9px !important; +} + +.round-10 { + border-radius: 10px !important; +} + +.round-11 { + border-radius: 11px !important; +} + +.round-12 { + border-radius: 12px !important; +} + +.round-13 { + border-radius: 13px !important; +} + +.round-14 { + border-radius: 14px !important; +} + +.round-15 { + border-radius: 15px !important; +} + +.round-16 { + border-radius: 16px !important; +} + +.round-17 { + border-radius: 17px !important; +} + +.round-18 { + border-radius: 18px !important; +} + +.round-19 { + border-radius: 19px !important; +} + +.round-20 { + border-radius: 20px !important; +} + +.round-21 { + border-radius: 21px !important; +} + +.round-22 { + border-radius: 22px !important; +} + +.round-23 { + border-radius: 23px !important; +} + +.round-24 { + border-radius: 24px !important; +} + +.round-25 { + border-radius: 25px !important; +} + +.round-26 { + border-radius: 26px !important; +} + +.round-tl-0 { + border-top-left-radius: 0px !important; +} + +.round-tl-1 { + border-top-left-radius: 1px !important; +} + +.round-tl-2 { + border-top-left-radius: 2px !important; +} + +.round-tl-3 { + border-top-left-radius: 3px !important; +} + +.round-tl-4 { + border-top-left-radius: 4px !important; +} + +.round-tl-5 { + border-top-left-radius: 5px !important; +} + +.round-tl-6 { + border-top-left-radius: 6px !important; +} + +.round-tl-7 { + border-top-left-radius: 7px !important; +} + +.round-tl-8 { + border-top-left-radius: 8px !important; +} + +.round-tl-9 { + border-top-left-radius: 9px !important; +} + +.round-tl-10 { + border-top-left-radius: 10px !important; +} + +.round-tl-11 { + border-top-left-radius: 11px !important; +} + +.round-tl-12 { + border-top-left-radius: 12px !important; +} + +.round-tl-13 { + border-top-left-radius: 13px !important; +} + +.round-tl-14 { + border-top-left-radius: 14px !important; +} + +.round-tl-15 { + border-top-left-radius: 15px !important; +} + +.round-tl-16 { + border-top-left-radius: 16px !important; +} + +.round-tl-17 { + border-top-left-radius: 17px !important; +} + +.round-tl-18 { + border-top-left-radius: 18px !important; +} + +.round-tl-19 { + border-top-left-radius: 19px !important; +} + +.round-tl-20 { + border-top-left-radius: 20px !important; +} + +.round-tl-21 { + border-top-left-radius: 21px !important; +} + +.round-tl-22 { + border-top-left-radius: 22px !important; +} + +.round-tl-23 { + border-top-left-radius: 23px !important; +} + +.round-tl-24 { + border-top-left-radius: 24px !important; +} + +.round-tl-25 { + border-top-left-radius: 25px !important; +} + +.round-tl-26 { + border-top-left-radius: 26px !important; +} + +.round-tl-27 { + border-top-left-radius: 27px !important; +} + +.round-tl-28 { + border-top-left-radius: 28px !important; +} + +.round-tl-29 { + border-top-left-radius: 29px !important; +} + +.round-tl-30 { + border-top-left-radius: 30px !important; +} + +.round-tl-31 { + border-top-left-radius: 31px !important; +} + +.round-tl-32 { + border-top-left-radius: 32px !important; +} + +.round-tl-33 { + border-top-left-radius: 33px !important; +} + +.round-tl-34 { + border-top-left-radius: 34px !important; +} + +.round-tl-35 { + border-top-left-radius: 35px !important; +} + +.round-tl-36 { + border-top-left-radius: 36px !important; +} + +.round-tl-37 { + border-top-left-radius: 37px !important; +} + +.round-tl-38 { + border-top-left-radius: 38px !important; +} + +.round-tl-39 { + border-top-left-radius: 39px !important; +} + +.round-tl-40 { + border-top-left-radius: 40px !important; +} + +.round-tl-41 { + border-top-left-radius: 41px !important; +} + +.round-tl-42 { + border-top-left-radius: 42px !important; +} + +.round-tl-43 { + border-top-left-radius: 43px !important; +} + +.round-tl-44 { + border-top-left-radius: 44px !important; +} + +.round-tl-45 { + border-top-left-radius: 45px !important; +} + +.round-tl-46 { + border-top-left-radius: 46px !important; +} + +.round-tl-47 { + border-top-left-radius: 47px !important; +} + +.round-tl-48 { + border-top-left-radius: 48px !important; +} + +.round-tl-49 { + border-top-left-radius: 49px !important; +} + +.round-tr-0 { + border-top-right-radius: 0px !important; +} + +.round-tr-1 { + border-top-right-radius: 1px !important; +} + +.round-tr-2 { + border-top-right-radius: 2px !important; +} + +.round-tr-3 { + border-top-right-radius: 3px !important; +} + +.round-tr-4 { + border-top-right-radius: 4px !important; +} + +.round-tr-5 { + border-top-right-radius: 5px !important; +} + +.round-tr-6 { + border-top-right-radius: 6px !important; +} + +.round-tr-7 { + border-top-right-radius: 7px !important; +} + +.round-tr-8 { + border-top-right-radius: 8px !important; +} + +.round-tr-9 { + border-top-right-radius: 9px !important; +} + +.round-tr-10 { + border-top-right-radius: 10px !important; +} + +.round-tr-11 { + border-top-right-radius: 11px !important; +} + +.round-tr-12 { + border-top-right-radius: 12px !important; +} + +.round-tr-13 { + border-top-right-radius: 13px !important; +} + +.round-tr-14 { + border-top-right-radius: 14px !important; +} + +.round-tr-15 { + border-top-right-radius: 15px !important; +} + +.round-tr-16 { + border-top-right-radius: 16px !important; +} + +.round-tr-17 { + border-top-right-radius: 17px !important; +} + +.round-tr-18 { + border-top-right-radius: 18px !important; +} + +.round-tr-19 { + border-top-right-radius: 19px !important; +} + +.round-tr-20 { + border-top-right-radius: 20px !important; +} + +.round-tr-21 { + border-top-right-radius: 21px !important; +} + +.round-tr-22 { + border-top-right-radius: 22px !important; +} + +.round-tr-23 { + border-top-right-radius: 23px !important; +} + +.round-tr-24 { + border-top-right-radius: 24px !important; +} + +.round-tr-25 { + border-top-right-radius: 25px !important; +} + +.round-tr-26 { + border-top-right-radius: 26px !important; +} + +.round-tr-27 { + border-top-right-radius: 27px !important; +} + +.round-tr-28 { + border-top-right-radius: 28px !important; +} + +.round-tr-29 { + border-top-right-radius: 29px !important; +} + +.round-tr-30 { + border-top-right-radius: 30px !important; +} + +.round-tr-31 { + border-top-right-radius: 31px !important; +} + +.round-tr-32 { + border-top-right-radius: 32px !important; +} + +.round-tr-33 { + border-top-right-radius: 33px !important; +} + +.round-tr-34 { + border-top-right-radius: 34px !important; +} + +.round-tr-35 { + border-top-right-radius: 35px !important; +} + +.round-tr-36 { + border-top-right-radius: 36px !important; +} + +.round-tr-37 { + border-top-right-radius: 37px !important; +} + +.round-tr-38 { + border-top-right-radius: 38px !important; +} + +.round-tr-39 { + border-top-right-radius: 39px !important; +} + +.round-tr-40 { + border-top-right-radius: 40px !important; +} + +.round-tr-41 { + border-top-right-radius: 41px !important; +} + +.round-tr-42 { + border-top-right-radius: 42px !important; +} + +.round-tr-43 { + border-top-right-radius: 43px !important; +} + +.round-tr-44 { + border-top-right-radius: 44px !important; +} + +.round-tr-45 { + border-top-right-radius: 45px !important; +} + +.round-tr-46 { + border-top-right-radius: 46px !important; +} + +.round-tr-47 { + border-top-right-radius: 47px !important; +} + +.round-tr-48 { + border-top-right-radius: 48px !important; +} + +.round-tr-49 { + border-top-right-radius: 49px !important; +} + +.round-bl-0 { + border-bottom-left-radius: 0px !important; +} + +.round-bl-1 { + border-bottom-left-radius: 1px !important; +} + +.round-bl-2 { + border-bottom-left-radius: 2px !important; +} + +.round-bl-3 { + border-bottom-left-radius: 3px !important; +} + +.round-bl-4 { + border-bottom-left-radius: 4px !important; +} + +.round-bl-5 { + border-bottom-left-radius: 5px !important; +} + +.round-bl-6 { + border-bottom-left-radius: 6px !important; +} + +.round-bl-7 { + border-bottom-left-radius: 7px !important; +} + +.round-bl-8 { + border-bottom-left-radius: 8px !important; +} + +.round-bl-9 { + border-bottom-left-radius: 9px !important; +} + +.round-bl-10 { + border-bottom-left-radius: 10px !important; +} + +.round-bl-11 { + border-bottom-left-radius: 11px !important; +} + +.round-bl-12 { + border-bottom-left-radius: 12px !important; +} + +.round-bl-13 { + border-bottom-left-radius: 13px !important; +} + +.round-bl-14 { + border-bottom-left-radius: 14px !important; +} + +.round-bl-15 { + border-bottom-left-radius: 15px !important; +} + +.round-bl-16 { + border-bottom-left-radius: 16px !important; +} + +.round-bl-17 { + border-bottom-left-radius: 17px !important; +} + +.round-bl-18 { + border-bottom-left-radius: 18px !important; +} + +.round-bl-19 { + border-bottom-left-radius: 19px !important; +} + +.round-bl-20 { + border-bottom-left-radius: 20px !important; +} + +.round-bl-21 { + border-bottom-left-radius: 21px !important; +} + +.round-bl-22 { + border-bottom-left-radius: 22px !important; +} + +.round-bl-23 { + border-bottom-left-radius: 23px !important; +} + +.round-bl-24 { + border-bottom-left-radius: 24px !important; +} + +.round-bl-25 { + border-bottom-left-radius: 25px !important; +} + +.round-bl-26 { + border-bottom-left-radius: 26px !important; +} + +.round-bl-27 { + border-bottom-left-radius: 27px !important; +} + +.round-bl-28 { + border-bottom-left-radius: 28px !important; +} + +.round-bl-29 { + border-bottom-left-radius: 29px !important; +} + +.round-bl-30 { + border-bottom-left-radius: 30px !important; +} + +.round-bl-31 { + border-bottom-left-radius: 31px !important; +} + +.round-bl-32 { + border-bottom-left-radius: 32px !important; +} + +.round-bl-33 { + border-bottom-left-radius: 33px !important; +} + +.round-bl-34 { + border-bottom-left-radius: 34px !important; +} + +.round-bl-35 { + border-bottom-left-radius: 35px !important; +} + +.round-bl-36 { + border-bottom-left-radius: 36px !important; +} + +.round-bl-37 { + border-bottom-left-radius: 37px !important; +} + +.round-bl-38 { + border-bottom-left-radius: 38px !important; +} + +.round-bl-39 { + border-bottom-left-radius: 39px !important; +} + +.round-bl-40 { + border-bottom-left-radius: 40px !important; +} + +.round-bl-41 { + border-bottom-left-radius: 41px !important; +} + +.round-bl-42 { + border-bottom-left-radius: 42px !important; +} + +.round-bl-43 { + border-bottom-left-radius: 43px !important; +} + +.round-bl-44 { + border-bottom-left-radius: 44px !important; +} + +.round-bl-45 { + border-bottom-left-radius: 45px !important; +} + +.round-bl-46 { + border-bottom-left-radius: 46px !important; +} + +.round-bl-47 { + border-bottom-left-radius: 47px !important; +} + +.round-bl-48 { + border-bottom-left-radius: 48px !important; +} + +.round-bl-49 { + border-bottom-left-radius: 49px !important; +} + +.round-br-0 { + border-bottom-right-radius: 0px !important; +} + +.round-br-1 { + border-bottom-right-radius: 1px !important; +} + +.round-br-2 { + border-bottom-right-radius: 2px !important; +} + +.round-br-3 { + border-bottom-right-radius: 3px !important; +} + +.round-br-4 { + border-bottom-right-radius: 4px !important; +} + +.round-br-5 { + border-bottom-right-radius: 5px !important; +} + +.round-br-6 { + border-bottom-right-radius: 6px !important; +} + +.round-br-7 { + border-bottom-right-radius: 7px !important; +} + +.round-br-8 { + border-bottom-right-radius: 8px !important; +} + +.round-br-9 { + border-bottom-right-radius: 9px !important; +} + +.round-br-10 { + border-bottom-right-radius: 10px !important; +} + +.round-br-11 { + border-bottom-right-radius: 11px !important; +} + +.round-br-12 { + border-bottom-right-radius: 12px !important; +} + +.round-br-13 { + border-bottom-right-radius: 13px !important; +} + +.round-br-14 { + border-bottom-right-radius: 14px !important; +} + +.round-br-15 { + border-bottom-right-radius: 15px !important; +} + +.round-br-16 { + border-bottom-right-radius: 16px !important; +} + +.round-br-17 { + border-bottom-right-radius: 17px !important; +} + +.round-br-18 { + border-bottom-right-radius: 18px !important; +} + +.round-br-19 { + border-bottom-right-radius: 19px !important; +} + +.round-br-20 { + border-bottom-right-radius: 20px !important; +} + +.round-br-21 { + border-bottom-right-radius: 21px !important; +} + +.round-br-22 { + border-bottom-right-radius: 22px !important; +} + +.round-br-23 { + border-bottom-right-radius: 23px !important; +} + +.round-br-24 { + border-bottom-right-radius: 24px !important; +} + +.round-br-25 { + border-bottom-right-radius: 25px !important; +} + +.round-br-26 { + border-bottom-right-radius: 26px !important; +} + +.round-br-27 { + border-bottom-right-radius: 27px !important; +} + +.round-br-28 { + border-bottom-right-radius: 28px !important; +} + +.round-br-29 { + border-bottom-right-radius: 29px !important; +} + +.round-br-30 { + border-bottom-right-radius: 30px !important; +} + +.round-br-31 { + border-bottom-right-radius: 31px !important; +} + +.round-br-32 { + border-bottom-right-radius: 32px !important; +} + +.round-br-33 { + border-bottom-right-radius: 33px !important; +} + +.round-br-34 { + border-bottom-right-radius: 34px !important; +} + +.round-br-35 { + border-bottom-right-radius: 35px !important; +} + +.round-br-36 { + border-bottom-right-radius: 36px !important; +} + +.round-br-37 { + border-bottom-right-radius: 37px !important; +} + +.round-br-38 { + border-bottom-right-radius: 38px !important; +} + +.round-br-39 { + border-bottom-right-radius: 39px !important; +} + +.round-br-40 { + border-bottom-right-radius: 40px !important; +} + +.round-br-41 { + border-bottom-right-radius: 41px !important; +} + +.round-br-42 { + border-bottom-right-radius: 42px !important; +} + +.round-br-43 { + border-bottom-right-radius: 43px !important; +} + +.round-br-44 { + border-bottom-right-radius: 44px !important; +} + +.round-br-45 { + border-bottom-right-radius: 45px !important; +} + +.round-br-46 { + border-bottom-right-radius: 46px !important; +} + +.round-br-47 { + border-bottom-right-radius: 47px !important; +} + +.round-br-48 { + border-bottom-right-radius: 48px !important; +} + +.round-br-49 { + border-bottom-right-radius: 49px !important; +} + +.round-a-0 { + border-radius: 0px !important; +} + +.round-a-1 { + border-radius: 1px !important; +} + +.round-a-2 { + border-radius: 2px !important; +} + +.round-a-3 { + border-radius: 3px !important; +} + +.round-a-4 { + border-radius: 4px !important; +} + +.round-a-5 { + border-radius: 5px !important; +} + +.round-a-6 { + border-radius: 6px !important; +} + +.round-a-7 { + border-radius: 7px !important; +} + +.round-a-8 { + border-radius: 8px !important; +} + +.round-a-9 { + border-radius: 9px !important; +} + +.round-a-10 { + border-radius: 10px !important; +} + +.round-a-11 { + border-radius: 11px !important; +} + +.round-a-12 { + border-radius: 12px !important; +} + +.round-a-13 { + border-radius: 13px !important; +} + +.round-a-14 { + border-radius: 14px !important; +} + +.round-a-15 { + border-radius: 15px !important; +} + +.round-a-16 { + border-radius: 16px !important; +} + +.round-a-17 { + border-radius: 17px !important; +} + +.round-a-18 { + border-radius: 18px !important; +} + +.round-a-19 { + border-radius: 19px !important; +} + +.round-a-20 { + border-radius: 20px !important; +} + +.round-a-21 { + border-radius: 21px !important; +} + +.round-a-22 { + border-radius: 22px !important; +} + +.round-a-23 { + border-radius: 23px !important; +} + +.round-a-24 { + border-radius: 24px !important; +} + +.round-a-25 { + border-radius: 25px !important; +} + +.round-a-26 { + border-radius: 26px !important; +} + +.round-a-27 { + border-radius: 27px !important; +} + +.round-a-28 { + border-radius: 28px !important; +} + +.round-a-29 { + border-radius: 29px !important; +} + +.round-a-30 { + border-radius: 30px !important; +} + +.round-a-31 { + border-radius: 31px !important; +} + +.round-a-32 { + border-radius: 32px !important; +} + +.round-a-33 { + border-radius: 33px !important; +} + +.round-a-34 { + border-radius: 34px !important; +} + +.round-a-35 { + border-radius: 35px !important; +} + +.round-a-36 { + border-radius: 36px !important; +} + +.round-a-37 { + border-radius: 37px !important; +} + +.round-a-38 { + border-radius: 38px !important; +} + +.round-a-39 { + border-radius: 39px !important; +} + +.round-a-40 { + border-radius: 40px !important; +} + +.round-a-41 { + border-radius: 41px !important; +} + +.round-a-42 { + border-radius: 42px !important; +} + +.round-a-43 { + border-radius: 43px !important; +} + +.round-a-44 { + border-radius: 44px !important; +} + +.round-a-45 { + border-radius: 45px !important; +} + +.round-a-46 { + border-radius: 46px !important; +} + +.round-a-47 { + border-radius: 47px !important; +} + +.round-a-48 { + border-radius: 48px !important; +} + +.round-a-49 { + border-radius: 49px !important; +} + +.round-t-0 { + border-top-left-radius: 0px !important; + border-top-right-radius: 0px !important; +} + +.round-t-1 { + border-top-left-radius: 1px !important; + border-top-right-radius: 1px !important; +} + +.round-t-2 { + border-top-left-radius: 2px !important; + border-top-right-radius: 2px !important; +} + +.round-t-3 { + border-top-left-radius: 3px !important; + border-top-right-radius: 3px !important; +} + +.round-t-4 { + border-top-left-radius: 4px !important; + border-top-right-radius: 4px !important; +} + +.round-t-5 { + border-top-left-radius: 5px !important; + border-top-right-radius: 5px !important; +} + +.round-t-6 { + border-top-left-radius: 6px !important; + border-top-right-radius: 6px !important; +} + +.round-t-7 { + border-top-left-radius: 7px !important; + border-top-right-radius: 7px !important; +} + +.round-t-8 { + border-top-left-radius: 8px !important; + border-top-right-radius: 8px !important; +} + +.round-t-9 { + border-top-left-radius: 9px !important; + border-top-right-radius: 9px !important; +} + +.round-t-10 { + border-top-left-radius: 10px !important; + border-top-right-radius: 10px !important; +} + +.round-t-11 { + border-top-left-radius: 11px !important; + border-top-right-radius: 11px !important; +} + +.round-t-12 { + border-top-left-radius: 12px !important; + border-top-right-radius: 12px !important; +} + +.round-t-13 { + border-top-left-radius: 13px !important; + border-top-right-radius: 13px !important; +} + +.round-t-14 { + border-top-left-radius: 14px !important; + border-top-right-radius: 14px !important; +} + +.round-t-15 { + border-top-left-radius: 15px !important; + border-top-right-radius: 15px !important; +} + +.round-t-16 { + border-top-left-radius: 16px !important; + border-top-right-radius: 16px !important; +} + +.round-t-17 { + border-top-left-radius: 17px !important; + border-top-right-radius: 17px !important; +} + +.round-t-18 { + border-top-left-radius: 18px !important; + border-top-right-radius: 18px !important; +} + +.round-t-19 { + border-top-left-radius: 19px !important; + border-top-right-radius: 19px !important; +} + +.round-t-20 { + border-top-left-radius: 20px !important; + border-top-right-radius: 20px !important; +} + +.round-t-21 { + border-top-left-radius: 21px !important; + border-top-right-radius: 21px !important; +} + +.round-t-22 { + border-top-left-radius: 22px !important; + border-top-right-radius: 22px !important; +} + +.round-t-23 { + border-top-left-radius: 23px !important; + border-top-right-radius: 23px !important; +} + +.round-t-24 { + border-top-left-radius: 24px !important; + border-top-right-radius: 24px !important; +} + +.round-t-25 { + border-top-left-radius: 25px !important; + border-top-right-radius: 25px !important; +} + +.round-t-26 { + border-top-left-radius: 26px !important; + border-top-right-radius: 26px !important; +} + +.round-t-27 { + border-top-left-radius: 27px !important; + border-top-right-radius: 27px !important; +} + +.round-t-28 { + border-top-left-radius: 28px !important; + border-top-right-radius: 28px !important; +} + +.round-t-29 { + border-top-left-radius: 29px !important; + border-top-right-radius: 29px !important; +} + +.round-t-30 { + border-top-left-radius: 30px !important; + border-top-right-radius: 30px !important; +} + +.round-t-31 { + border-top-left-radius: 31px !important; + border-top-right-radius: 31px !important; +} + +.round-t-32 { + border-top-left-radius: 32px !important; + border-top-right-radius: 32px !important; +} + +.round-t-33 { + border-top-left-radius: 33px !important; + border-top-right-radius: 33px !important; +} + +.round-t-34 { + border-top-left-radius: 34px !important; + border-top-right-radius: 34px !important; +} + +.round-t-35 { + border-top-left-radius: 35px !important; + border-top-right-radius: 35px !important; +} + +.round-t-36 { + border-top-left-radius: 36px !important; + border-top-right-radius: 36px !important; +} + +.round-t-37 { + border-top-left-radius: 37px !important; + border-top-right-radius: 37px !important; +} + +.round-t-38 { + border-top-left-radius: 38px !important; + border-top-right-radius: 38px !important; +} + +.round-t-39 { + border-top-left-radius: 39px !important; + border-top-right-radius: 39px !important; +} + +.round-t-40 { + border-top-left-radius: 40px !important; + border-top-right-radius: 40px !important; +} + +.round-t-41 { + border-top-left-radius: 41px !important; + border-top-right-radius: 41px !important; +} + +.round-t-42 { + border-top-left-radius: 42px !important; + border-top-right-radius: 42px !important; +} + +.round-t-43 { + border-top-left-radius: 43px !important; + border-top-right-radius: 43px !important; +} + +.round-t-44 { + border-top-left-radius: 44px !important; + border-top-right-radius: 44px !important; +} + +.round-t-45 { + border-top-left-radius: 45px !important; + border-top-right-radius: 45px !important; +} + +.round-t-46 { + border-top-left-radius: 46px !important; + border-top-right-radius: 46px !important; +} + +.round-t-47 { + border-top-left-radius: 47px !important; + border-top-right-radius: 47px !important; +} + +.round-t-48 { + border-top-left-radius: 48px !important; + border-top-right-radius: 48px !important; +} + +.round-t-49 { + border-top-left-radius: 49px !important; + border-top-right-radius: 49px !important; +} + +.round-b-0 { + border-bottom-left-radius: 0px !important; + border-bottom-right-radius: 0px !important; +} + +.round-b-1 { + border-bottom-left-radius: 1px !important; + border-bottom-right-radius: 1px !important; +} + +.round-b-2 { + border-bottom-left-radius: 2px !important; + border-bottom-right-radius: 2px !important; +} + +.round-b-3 { + border-bottom-left-radius: 3px !important; + border-bottom-right-radius: 3px !important; +} + +.round-b-4 { + border-bottom-left-radius: 4px !important; + border-bottom-right-radius: 4px !important; +} + +.round-b-5 { + border-bottom-left-radius: 5px !important; + border-bottom-right-radius: 5px !important; +} + +.round-b-6 { + border-bottom-left-radius: 6px !important; + border-bottom-right-radius: 6px !important; +} + +.round-b-7 { + border-bottom-left-radius: 7px !important; + border-bottom-right-radius: 7px !important; +} + +.round-b-8 { + border-bottom-left-radius: 8px !important; + border-bottom-right-radius: 8px !important; +} + +.round-b-9 { + border-bottom-left-radius: 9px !important; + border-bottom-right-radius: 9px !important; +} + +.round-b-10 { + border-bottom-left-radius: 10px !important; + border-bottom-right-radius: 10px !important; +} + +.round-b-11 { + border-bottom-left-radius: 11px !important; + border-bottom-right-radius: 11px !important; +} + +.round-b-12 { + border-bottom-left-radius: 12px !important; + border-bottom-right-radius: 12px !important; +} + +.round-b-13 { + border-bottom-left-radius: 13px !important; + border-bottom-right-radius: 13px !important; +} + +.round-b-14 { + border-bottom-left-radius: 14px !important; + border-bottom-right-radius: 14px !important; +} + +.round-b-15 { + border-bottom-left-radius: 15px !important; + border-bottom-right-radius: 15px !important; +} + +.round-b-16 { + border-bottom-left-radius: 16px !important; + border-bottom-right-radius: 16px !important; +} + +.round-b-17 { + border-bottom-left-radius: 17px !important; + border-bottom-right-radius: 17px !important; +} + +.round-b-18 { + border-bottom-left-radius: 18px !important; + border-bottom-right-radius: 18px !important; +} + +.round-b-19 { + border-bottom-left-radius: 19px !important; + border-bottom-right-radius: 19px !important; +} + +.round-b-20 { + border-bottom-left-radius: 20px !important; + border-bottom-right-radius: 20px !important; +} + +.round-b-21 { + border-bottom-left-radius: 21px !important; + border-bottom-right-radius: 21px !important; +} + +.round-b-22 { + border-bottom-left-radius: 22px !important; + border-bottom-right-radius: 22px !important; +} + +.round-b-23 { + border-bottom-left-radius: 23px !important; + border-bottom-right-radius: 23px !important; +} + +.round-b-24 { + border-bottom-left-radius: 24px !important; + border-bottom-right-radius: 24px !important; +} + +.round-b-25 { + border-bottom-left-radius: 25px !important; + border-bottom-right-radius: 25px !important; +} + +.round-b-26 { + border-bottom-left-radius: 26px !important; + border-bottom-right-radius: 26px !important; +} + +.round-b-27 { + border-bottom-left-radius: 27px !important; + border-bottom-right-radius: 27px !important; +} + +.round-b-28 { + border-bottom-left-radius: 28px !important; + border-bottom-right-radius: 28px !important; +} + +.round-b-29 { + border-bottom-left-radius: 29px !important; + border-bottom-right-radius: 29px !important; +} + +.round-b-30 { + border-bottom-left-radius: 30px !important; + border-bottom-right-radius: 30px !important; +} + +.round-b-31 { + border-bottom-left-radius: 31px !important; + border-bottom-right-radius: 31px !important; +} + +.round-b-32 { + border-bottom-left-radius: 32px !important; + border-bottom-right-radius: 32px !important; +} + +.round-b-33 { + border-bottom-left-radius: 33px !important; + border-bottom-right-radius: 33px !important; +} + +.round-b-34 { + border-bottom-left-radius: 34px !important; + border-bottom-right-radius: 34px !important; +} + +.round-b-35 { + border-bottom-left-radius: 35px !important; + border-bottom-right-radius: 35px !important; +} + +.round-b-36 { + border-bottom-left-radius: 36px !important; + border-bottom-right-radius: 36px !important; +} + +.round-b-37 { + border-bottom-left-radius: 37px !important; + border-bottom-right-radius: 37px !important; +} + +.round-b-38 { + border-bottom-left-radius: 38px !important; + border-bottom-right-radius: 38px !important; +} + +.round-b-39 { + border-bottom-left-radius: 39px !important; + border-bottom-right-radius: 39px !important; +} + +.round-b-40 { + border-bottom-left-radius: 40px !important; + border-bottom-right-radius: 40px !important; +} + +.round-b-41 { + border-bottom-left-radius: 41px !important; + border-bottom-right-radius: 41px !important; +} + +.round-b-42 { + border-bottom-left-radius: 42px !important; + border-bottom-right-radius: 42px !important; +} + +.round-b-43 { + border-bottom-left-radius: 43px !important; + border-bottom-right-radius: 43px !important; +} + +.round-b-44 { + border-bottom-left-radius: 44px !important; + border-bottom-right-radius: 44px !important; +} + +.round-b-45 { + border-bottom-left-radius: 45px !important; + border-bottom-right-radius: 45px !important; +} + +.round-b-46 { + border-bottom-left-radius: 46px !important; + border-bottom-right-radius: 46px !important; +} + +.round-b-47 { + border-bottom-left-radius: 47px !important; + border-bottom-right-radius: 47px !important; +} + +.round-b-48 { + border-bottom-left-radius: 48px !important; + border-bottom-right-radius: 48px !important; +} + +.round-b-49 { + border-bottom-left-radius: 49px !important; + border-bottom-right-radius: 49px !important; +} + +.round-l-0 { + border-top-left-radius: 0px !important; + border-bottom-left-radius: 0px !important; +} + +.round-l-1 { + border-top-left-radius: 1px !important; + border-bottom-left-radius: 1px !important; +} + +.round-l-2 { + border-top-left-radius: 2px !important; + border-bottom-left-radius: 2px !important; +} + +.round-l-3 { + border-top-left-radius: 3px !important; + border-bottom-left-radius: 3px !important; +} + +.round-l-4 { + border-top-left-radius: 4px !important; + border-bottom-left-radius: 4px !important; +} + +.round-l-5 { + border-top-left-radius: 5px !important; + border-bottom-left-radius: 5px !important; +} + +.round-l-6 { + border-top-left-radius: 6px !important; + border-bottom-left-radius: 6px !important; +} + +.round-l-7 { + border-top-left-radius: 7px !important; + border-bottom-left-radius: 7px !important; +} + +.round-l-8 { + border-top-left-radius: 8px !important; + border-bottom-left-radius: 8px !important; +} + +.round-l-9 { + border-top-left-radius: 9px !important; + border-bottom-left-radius: 9px !important; +} + +.round-l-10 { + border-top-left-radius: 10px !important; + border-bottom-left-radius: 10px !important; +} + +.round-l-11 { + border-top-left-radius: 11px !important; + border-bottom-left-radius: 11px !important; +} + +.round-l-12 { + border-top-left-radius: 12px !important; + border-bottom-left-radius: 12px !important; +} + +.round-l-13 { + border-top-left-radius: 13px !important; + border-bottom-left-radius: 13px !important; +} + +.round-l-14 { + border-top-left-radius: 14px !important; + border-bottom-left-radius: 14px !important; +} + +.round-l-15 { + border-top-left-radius: 15px !important; + border-bottom-left-radius: 15px !important; +} + +.round-l-16 { + border-top-left-radius: 16px !important; + border-bottom-left-radius: 16px !important; +} + +.round-l-17 { + border-top-left-radius: 17px !important; + border-bottom-left-radius: 17px !important; +} + +.round-l-18 { + border-top-left-radius: 18px !important; + border-bottom-left-radius: 18px !important; +} + +.round-l-19 { + border-top-left-radius: 19px !important; + border-bottom-left-radius: 19px !important; +} + +.round-l-20 { + border-top-left-radius: 20px !important; + border-bottom-left-radius: 20px !important; +} + +.round-l-21 { + border-top-left-radius: 21px !important; + border-bottom-left-radius: 21px !important; +} + +.round-l-22 { + border-top-left-radius: 22px !important; + border-bottom-left-radius: 22px !important; +} + +.round-l-23 { + border-top-left-radius: 23px !important; + border-bottom-left-radius: 23px !important; +} + +.round-l-24 { + border-top-left-radius: 24px !important; + border-bottom-left-radius: 24px !important; +} + +.round-l-25 { + border-top-left-radius: 25px !important; + border-bottom-left-radius: 25px !important; +} + +.round-l-26 { + border-top-left-radius: 26px !important; + border-bottom-left-radius: 26px !important; +} + +.round-l-27 { + border-top-left-radius: 27px !important; + border-bottom-left-radius: 27px !important; +} + +.round-l-28 { + border-top-left-radius: 28px !important; + border-bottom-left-radius: 28px !important; +} + +.round-l-29 { + border-top-left-radius: 29px !important; + border-bottom-left-radius: 29px !important; +} + +.round-l-30 { + border-top-left-radius: 30px !important; + border-bottom-left-radius: 30px !important; +} + +.round-l-31 { + border-top-left-radius: 31px !important; + border-bottom-left-radius: 31px !important; +} + +.round-l-32 { + border-top-left-radius: 32px !important; + border-bottom-left-radius: 32px !important; +} + +.round-l-33 { + border-top-left-radius: 33px !important; + border-bottom-left-radius: 33px !important; +} + +.round-l-34 { + border-top-left-radius: 34px !important; + border-bottom-left-radius: 34px !important; +} + +.round-l-35 { + border-top-left-radius: 35px !important; + border-bottom-left-radius: 35px !important; +} + +.round-l-36 { + border-top-left-radius: 36px !important; + border-bottom-left-radius: 36px !important; +} + +.round-l-37 { + border-top-left-radius: 37px !important; + border-bottom-left-radius: 37px !important; +} + +.round-l-38 { + border-top-left-radius: 38px !important; + border-bottom-left-radius: 38px !important; +} + +.round-l-39 { + border-top-left-radius: 39px !important; + border-bottom-left-radius: 39px !important; +} + +.round-l-40 { + border-top-left-radius: 40px !important; + border-bottom-left-radius: 40px !important; +} + +.round-l-41 { + border-top-left-radius: 41px !important; + border-bottom-left-radius: 41px !important; +} + +.round-l-42 { + border-top-left-radius: 42px !important; + border-bottom-left-radius: 42px !important; +} + +.round-l-43 { + border-top-left-radius: 43px !important; + border-bottom-left-radius: 43px !important; +} + +.round-l-44 { + border-top-left-radius: 44px !important; + border-bottom-left-radius: 44px !important; +} + +.round-l-45 { + border-top-left-radius: 45px !important; + border-bottom-left-radius: 45px !important; +} + +.round-l-46 { + border-top-left-radius: 46px !important; + border-bottom-left-radius: 46px !important; +} + +.round-l-47 { + border-top-left-radius: 47px !important; + border-bottom-left-radius: 47px !important; +} + +.round-l-48 { + border-top-left-radius: 48px !important; + border-bottom-left-radius: 48px !important; +} + +.round-l-49 { + border-top-left-radius: 49px !important; + border-bottom-left-radius: 49px !important; +} + +.round-r-0 { + border-top-right-radius: 0px !important; + border-bottom-right-radius: 0px !important; +} + +.round-r-1 { + border-top-right-radius: 1px !important; + border-bottom-right-radius: 1px !important; +} + +.round-r-2 { + border-top-right-radius: 2px !important; + border-bottom-right-radius: 2px !important; +} + +.round-r-3 { + border-top-right-radius: 3px !important; + border-bottom-right-radius: 3px !important; +} + +.round-r-4 { + border-top-right-radius: 4px !important; + border-bottom-right-radius: 4px !important; +} + +.round-r-5 { + border-top-right-radius: 5px !important; + border-bottom-right-radius: 5px !important; +} + +.round-r-6 { + border-top-right-radius: 6px !important; + border-bottom-right-radius: 6px !important; +} + +.round-r-7 { + border-top-right-radius: 7px !important; + border-bottom-right-radius: 7px !important; +} + +.round-r-8 { + border-top-right-radius: 8px !important; + border-bottom-right-radius: 8px !important; +} + +.round-r-9 { + border-top-right-radius: 9px !important; + border-bottom-right-radius: 9px !important; +} + +.round-r-10 { + border-top-right-radius: 10px !important; + border-bottom-right-radius: 10px !important; +} + +.round-r-11 { + border-top-right-radius: 11px !important; + border-bottom-right-radius: 11px !important; +} + +.round-r-12 { + border-top-right-radius: 12px !important; + border-bottom-right-radius: 12px !important; +} + +.round-r-13 { + border-top-right-radius: 13px !important; + border-bottom-right-radius: 13px !important; +} + +.round-r-14 { + border-top-right-radius: 14px !important; + border-bottom-right-radius: 14px !important; +} + +.round-r-15 { + border-top-right-radius: 15px !important; + border-bottom-right-radius: 15px !important; +} + +.round-r-16 { + border-top-right-radius: 16px !important; + border-bottom-right-radius: 16px !important; +} + +.round-r-17 { + border-top-right-radius: 17px !important; + border-bottom-right-radius: 17px !important; +} + +.round-r-18 { + border-top-right-radius: 18px !important; + border-bottom-right-radius: 18px !important; +} + +.round-r-19 { + border-top-right-radius: 19px !important; + border-bottom-right-radius: 19px !important; +} + +.round-r-20 { + border-top-right-radius: 20px !important; + border-bottom-right-radius: 20px !important; +} + +.round-r-21 { + border-top-right-radius: 21px !important; + border-bottom-right-radius: 21px !important; +} + +.round-r-22 { + border-top-right-radius: 22px !important; + border-bottom-right-radius: 22px !important; +} + +.round-r-23 { + border-top-right-radius: 23px !important; + border-bottom-right-radius: 23px !important; +} + +.round-r-24 { + border-top-right-radius: 24px !important; + border-bottom-right-radius: 24px !important; +} + +.round-r-25 { + border-top-right-radius: 25px !important; + border-bottom-right-radius: 25px !important; +} + +.round-r-26 { + border-top-right-radius: 26px !important; + border-bottom-right-radius: 26px !important; +} + +.round-r-27 { + border-top-right-radius: 27px !important; + border-bottom-right-radius: 27px !important; +} + +.round-r-28 { + border-top-right-radius: 28px !important; + border-bottom-right-radius: 28px !important; +} + +.round-r-29 { + border-top-right-radius: 29px !important; + border-bottom-right-radius: 29px !important; +} + +.round-r-30 { + border-top-right-radius: 30px !important; + border-bottom-right-radius: 30px !important; +} + +.round-r-31 { + border-top-right-radius: 31px !important; + border-bottom-right-radius: 31px !important; +} + +.round-r-32 { + border-top-right-radius: 32px !important; + border-bottom-right-radius: 32px !important; +} + +.round-r-33 { + border-top-right-radius: 33px !important; + border-bottom-right-radius: 33px !important; +} + +.round-r-34 { + border-top-right-radius: 34px !important; + border-bottom-right-radius: 34px !important; +} + +.round-r-35 { + border-top-right-radius: 35px !important; + border-bottom-right-radius: 35px !important; +} + +.round-r-36 { + border-top-right-radius: 36px !important; + border-bottom-right-radius: 36px !important; +} + +.round-r-37 { + border-top-right-radius: 37px !important; + border-bottom-right-radius: 37px !important; +} + +.round-r-38 { + border-top-right-radius: 38px !important; + border-bottom-right-radius: 38px !important; +} + +.round-r-39 { + border-top-right-radius: 39px !important; + border-bottom-right-radius: 39px !important; +} + +.round-r-40 { + border-top-right-radius: 40px !important; + border-bottom-right-radius: 40px !important; +} + +.round-r-41 { + border-top-right-radius: 41px !important; + border-bottom-right-radius: 41px !important; +} + +.round-r-42 { + border-top-right-radius: 42px !important; + border-bottom-right-radius: 42px !important; +} + +.round-r-43 { + border-top-right-radius: 43px !important; + border-bottom-right-radius: 43px !important; +} + +.round-r-44 { + border-top-right-radius: 44px !important; + border-bottom-right-radius: 44px !important; +} + +.round-r-45 { + border-top-right-radius: 45px !important; + border-bottom-right-radius: 45px !important; +} + +.round-r-46 { + border-top-right-radius: 46px !important; + border-bottom-right-radius: 46px !important; +} + +.round-r-47 { + border-top-right-radius: 47px !important; + border-bottom-right-radius: 47px !important; +} + +.round-r-48 { + border-top-right-radius: 48px !important; + border-bottom-right-radius: 48px !important; +} + +.round-r-49 { + border-top-right-radius: 49px !important; + border-bottom-right-radius: 49px !important; +} + +.rounded { + border-radius: 50% !important; +} + +.opacity-0 { + opacity: 0; +} + +.opacity-1 { + opacity: 0.1; +} + +.opacity-2 { + opacity: 0.2; +} + +.opacity-3 { + opacity: 0.3; +} + +.opacity-4 { + opacity: 0.4; +} + +.opacity-5 { + opacity: 0.5; +} + +.opacity-6 { + opacity: 0.6; +} + +.opacity-7 { + opacity: 0.7; +} + +.opacity-8 { + opacity: 0.8; +} + +.opacity-9 { + opacity: 0.9; +} + +.opacity-10 { + opacity: 1; +} + +.shadow { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); +} + +.shadow-0 { + box-shadow: 0 0px 5px rgba(0, 0, 0, 0.08); +} + +.shadow-1 { + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08); +} + +.shadow-2 { + box-shadow: 0 2px 7px rgba(0, 0, 0, 0.08); +} + +.shadow-3 { + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.08); +} + +.shadow-4 { + box-shadow: 0 4px 9px rgba(0, 0, 0, 0.08); +} + +.shadow-5 { + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.08); +} + +.shadow-6 { + box-shadow: 0 6px 11px rgba(0, 0, 0, 0.08); +} + +.shadow-7 { + box-shadow: 0 7px 12px rgba(0, 0, 0, 0.08); +} + +.shadow-8 { + box-shadow: 0 8px 13px rgba(0, 0, 0, 0.08); +} + +.shadow-9 { + box-shadow: 0 9px 14px rgba(0, 0, 0, 0.08); +} + +.shadow-10 { + box-shadow: 0 10px 15px rgba(0, 0, 0, 0.08); +} + +.shadow-11 { + box-shadow: 0 11px 16px rgba(0, 0, 0, 0.08); +} + +.shadow-12 { + box-shadow: 0 12px 17px rgba(0, 0, 0, 0.08); +} + +.shadow-13 { + box-shadow: 0 13px 18px rgba(0, 0, 0, 0.08); +} + +.shadow-14 { + box-shadow: 0 14px 19px rgba(0, 0, 0, 0.08); +} + +.shadow-15 { + box-shadow: 0 15px 20px rgba(0, 0, 0, 0.08); +} + +.shadow-16 { + box-shadow: 0 16px 21px rgba(0, 0, 0, 0.08); +} + +.shadow-17 { + box-shadow: 0 17px 22px rgba(0, 0, 0, 0.08); +} + +.shadow-18 { + box-shadow: 0 18px 23px rgba(0, 0, 0, 0.08); +} + +.shadow-19 { + box-shadow: 0 19px 24px rgba(0, 0, 0, 0.08); +} + +.shadow-20 { + box-shadow: 0 20px 25px rgba(0, 0, 0, 0.08); +} + +.shadow-21 { + box-shadow: 0 21px 26px rgba(0, 0, 0, 0.08); +} + +.shadow-22 { + box-shadow: 0 22px 27px rgba(0, 0, 0, 0.08); +} + +.shadow-23 { + box-shadow: 0 23px 28px rgba(0, 0, 0, 0.08); +} + +.shadow-24 { + box-shadow: 0 24px 29px rgba(0, 0, 0, 0.08); +} + +.shadow-25 { + box-shadow: 0 25px 30px rgba(0, 0, 0, 0.08); +} + +.border-0 { + border: solid 0px #f5f5f5 !important; +} + +.border-0-bk { + border: solid 0px #282828 !important; +} + +.border { + border: solid 1px #f5f5f5 !important; +} + +.border-bk { + border: solid 1px #282828 !important; +} + +.border-1 { + border: solid 1px #f5f5f5 !important; +} + +.border-1-bk { + border: solid 1px #f5f5f5 !important; +} + +.border-2 { + border: solid 2px #f5f5f5 !important; +} + +.border-2-bk { + border: solid 2px #f5f5f5 !important; +} + +.border-3 { + border: solid 3px #f5f5f5 !important; +} + +.border-3-bk { + border: solid 3px #f5f5f5 !important; +} + +.border-4 { + border: solid 4px #f5f5f5 !important; +} + +.border-4-bk { + border: solid 4px #f5f5f5 !important; +} + +.border-5 { + border: solid 5px #f5f5f5 !important; +} + +.border-5-bk { + border: solid 5px #f5f5f5 !important; +} + +.border-l-1 { + border-left: solid 1px whitesmoke !important; +} + +.border-l-1-bk { + border-left: solid 1px #282828 !important; +} + +.border-l-2 { + border-left: solid 2px whitesmoke !important; +} + +.border-l-2-bk { + border-left: solid 2px #282828 !important; +} + +.border-l-3 { + border-left: solid 3px whitesmoke !important; +} + +.border-l-3-bk { + border-left: solid 3px #282828 !important; +} + +.border-l-4 { + border-left: solid 4px whitesmoke !important; +} + +.border-l-4-bk { + border-left: solid 4px #282828 !important; +} + +.border-l-5 { + border-left: solid 5px whitesmoke !important; +} + +.border-l-5-bk { + border-left: solid 5px #282828 !important; +} + +.border-r-1 { + border-right: solid 1px whitesmoke !important; +} + +.border-r-1-bk { + border-right: solid 1px #282828 !important; +} + +.border-r-2 { + border-right: solid 2px whitesmoke !important; +} + +.border-r-2-bk { + border-right: solid 2px #282828 !important; +} + +.border-r-3 { + border-right: solid 3px whitesmoke !important; +} + +.border-r-3-bk { + border-right: solid 3px #282828 !important; +} + +.border-r-4 { + border-right: solid 4px whitesmoke !important; +} + +.border-r-4-bk { + border-right: solid 4px #282828 !important; +} + +.border-r-5 { + border-right: solid 5px whitesmoke !important; +} + +.border-r-5-bk { + border-right: solid 5px #282828 !important; +} + +.border-t-1 { + border-top: solid 1px whitesmoke !important; +} + +.border-t-1-bk { + border-top: solid 1px #282828 !important; +} + +.border-t-2 { + border-top: solid 2px whitesmoke !important; +} + +.border-t-2-bk { + border-top: solid 2px #282828 !important; +} + +.border-t-3 { + border-top: solid 3px whitesmoke !important; +} + +.border-t-3-bk { + border-top: solid 3px #282828 !important; +} + +.border-t-4 { + border-top: solid 4px whitesmoke !important; +} + +.border-t-4-bk { + border-top: solid 4px #282828 !important; +} + +.border-t-5 { + border-top: solid 5px whitesmoke !important; +} + +.border-t-5-bk { + border-top: solid 5px #282828 !important; +} + +.border-b-1 { + border-bottom: solid 1px whitesmoke !important; +} + +.border-b-1-bk { + border-bottom: solid 1px #282828 !important; +} + +.border-b-2 { + border-bottom: solid 2px whitesmoke !important; +} + +.border-b-2-bk { + border-bottom: solid 2px #282828 !important; +} + +.border-b-3 { + border-bottom: solid 3px whitesmoke !important; +} + +.border-b-3-bk { + border-bottom: solid 3px #282828 !important; +} + +.border-b-4 { + border-bottom: solid 4px whitesmoke !important; +} + +.border-b-4-bk { + border-bottom: solid 4px #282828 !important; +} + +.border-b-5 { + border-bottom: solid 5px whitesmoke !important; +} + +.border-b-5-bk { + border-bottom: solid 5px #282828 !important; +} + +.border-a-1 { + border: solid 1px whitesmoke !important; +} + +.border-a-1-bk { + border: solid 1px #282828 !important; +} + +.border-a-2 { + border: solid 2px whitesmoke !important; +} + +.border-a-2-bk { + border: solid 2px #282828 !important; +} + +.border-a-3 { + border: solid 3px whitesmoke !important; +} + +.border-a-3-bk { + border: solid 3px #282828 !important; +} + +.border-a-4 { + border: solid 4px whitesmoke !important; +} + +.border-a-4-bk { + border: solid 4px #282828 !important; +} + +.border-a-5 { + border: solid 5px whitesmoke !important; +} + +.border-a-5-bk { + border: solid 5px #282828 !important; +} + +.pa-0 { + padding: 0px; +} + +.pa-1 { + padding: 1px; +} + +.pa-2 { + padding: 2px; +} + +.pa-3 { + padding: 3px; +} + +.pa-4 { + padding: 4px; +} + +.pa-5 { + padding: 5px; +} + +.pa-6 { + padding: 6px; +} + +.pa-7 { + padding: 7px; +} + +.pa-8 { + padding: 8px; +} + +.pa-9 { + padding: 9px; +} + +.pa-10 { + padding: 10px; +} + +.pa-11 { + padding: 11px; +} + +.pa-12 { + padding: 12px; +} + +.pa-13 { + padding: 13px; +} + +.pa-14 { + padding: 14px; +} + +.pa-15 { + padding: 15px; +} + +.pa-16 { + padding: 16px; +} + +.pa-17 { + padding: 17px; +} + +.pa-18 { + padding: 18px; +} + +.pa-19 { + padding: 19px; +} + +.pa-20 { + padding: 20px; +} + +.pa-21 { + padding: 21px; +} + +.pa-22 { + padding: 22px; +} + +.pa-23 { + padding: 23px; +} + +.pa-24 { + padding: 24px; +} + +.pa-25 { + padding: 25px; +} + +.pa-26 { + padding: 26px; +} + +.pa-27 { + padding: 27px; +} + +.pa-28 { + padding: 28px; +} + +.pa-29 { + padding: 29px; +} + +.pa-30 { + padding: 30px; +} + +.pa-31 { + padding: 31px; +} + +.pa-32 { + padding: 32px; +} + +.pa-33 { + padding: 33px; +} + +.pa-34 { + padding: 34px; +} + +.pa-35 { + padding: 35px; +} + +.pa-36 { + padding: 36px; +} + +.pa-37 { + padding: 37px; +} + +.pa-38 { + padding: 38px; +} + +.pa-39 { + padding: 39px; +} + +.pa-40 { + padding: 40px; +} + +.pa-41 { + padding: 41px; +} + +.pa-42 { + padding: 42px; +} + +.pa-43 { + padding: 43px; +} + +.pa-44 { + padding: 44px; +} + +.pa-45 { + padding: 45px; +} + +.pa-46 { + padding: 46px; +} + +.pa-47 { + padding: 47px; +} + +.pa-48 { + padding: 48px; +} + +.pa-49 { + padding: 49px; +} + +.pa-50 { + padding: 50px; +} + +.pa-n1 { + padding: 4px; +} + +.pa-n2 { + padding: 8px; +} + +.pa-n3 { + padding: 12px; +} + +.pa-n4 { + padding: 16px; +} + +.pa-n5 { + padding: 20px; +} + +.pa-n6 { + padding: 24px; +} + +.pa-n7 { + padding: 28px; +} + +.pa-n8 { + padding: 32px; +} + +.pa-n9 { + padding: 36px; +} + +.pa-n10 { + padding: 40px; +} + +.pa-n11 { + padding: 44px; +} + +.pa-n12 { + padding: 48px; +} + +.pa-n13 { + padding: 52px; +} + +.pa-n14 { + padding: 56px; +} + +.pa-n15 { + padding: 60px; +} + +.pa-n16 { + padding: 64px; +} + +.pa-n17 { + padding: 68px; +} + +.pa-n18 { + padding: 72px; +} + +.pa-n19 { + padding: 76px; +} + +.pa-n20 { + padding: 80px; +} + +.pa-n21 { + padding: 84px; +} + +.pa-n22 { + padding: 88px; +} + +.pa-n23 { + padding: 92px; +} + +.pa-n24 { + padding: 96px; +} + +.pa-n25 { + padding: 100px; +} + +.pt-0 { + padding-top: 0px; +} + +.pt-1 { + padding-top: 1px; +} + +.pt-2 { + padding-top: 2px; +} + +.pt-3 { + padding-top: 3px; +} + +.pt-4 { + padding-top: 4px; +} + +.pt-5 { + padding-top: 5px; +} + +.pt-6 { + padding-top: 6px; +} + +.pt-7 { + padding-top: 7px; +} + +.pt-8 { + padding-top: 8px; +} + +.pt-9 { + padding-top: 9px; +} + +.pt-10 { + padding-top: 10px; +} + +.pt-11 { + padding-top: 11px; +} + +.pt-12 { + padding-top: 12px; +} + +.pt-13 { + padding-top: 13px; +} + +.pt-14 { + padding-top: 14px; +} + +.pt-15 { + padding-top: 15px; +} + +.pt-16 { + padding-top: 16px; +} + +.pt-17 { + padding-top: 17px; +} + +.pt-18 { + padding-top: 18px; +} + +.pt-19 { + padding-top: 19px; +} + +.pt-20 { + padding-top: 20px; +} + +.pt-21 { + padding-top: 21px; +} + +.pt-22 { + padding-top: 22px; +} + +.pt-23 { + padding-top: 23px; +} + +.pt-24 { + padding-top: 24px; +} + +.pt-25 { + padding-top: 25px; +} + +.pt-26 { + padding-top: 26px; +} + +.pt-27 { + padding-top: 27px; +} + +.pt-28 { + padding-top: 28px; +} + +.pt-29 { + padding-top: 29px; +} + +.pt-30 { + padding-top: 30px; +} + +.pt-31 { + padding-top: 31px; +} + +.pt-32 { + padding-top: 32px; +} + +.pt-33 { + padding-top: 33px; +} + +.pt-34 { + padding-top: 34px; +} + +.pt-35 { + padding-top: 35px; +} + +.pt-36 { + padding-top: 36px; +} + +.pt-37 { + padding-top: 37px; +} + +.pt-38 { + padding-top: 38px; +} + +.pt-39 { + padding-top: 39px; +} + +.pt-40 { + padding-top: 40px; +} + +.pt-41 { + padding-top: 41px; +} + +.pt-42 { + padding-top: 42px; +} + +.pt-43 { + padding-top: 43px; +} + +.pt-44 { + padding-top: 44px; +} + +.pt-45 { + padding-top: 45px; +} + +.pt-46 { + padding-top: 46px; +} + +.pt-47 { + padding-top: 47px; +} + +.pt-48 { + padding-top: 48px; +} + +.pt-49 { + padding-top: 49px; +} + +.pt-50 { + padding-top: 50px; +} + +.pt-n1 { + padding-top: 4px; +} + +.pt-n2 { + padding-top: 8px; +} + +.pt-n3 { + padding-top: 12px; +} + +.pt-n4 { + padding-top: 16px; +} + +.pt-n5 { + padding-top: 20px; +} + +.pt-n6 { + padding-top: 24px; +} + +.pt-n7 { + padding-top: 28px; +} + +.pt-n8 { + padding-top: 32px; +} + +.pt-n9 { + padding-top: 36px; +} + +.pt-n10 { + padding-top: 40px; +} + +.pt-n11 { + padding-top: 44px; +} + +.pt-n12 { + padding-top: 48px; +} + +.pt-n13 { + padding-top: 52px; +} + +.pt-n14 { + padding-top: 56px; +} + +.pt-n15 { + padding-top: 60px; +} + +.pt-n16 { + padding-top: 64px; +} + +.pt-n17 { + padding-top: 68px; +} + +.pt-n18 { + padding-top: 72px; +} + +.pt-n19 { + padding-top: 76px; +} + +.pt-n20 { + padding-top: 80px; +} + +.pt-n21 { + padding-top: 84px; +} + +.pt-n22 { + padding-top: 88px; +} + +.pt-n23 { + padding-top: 92px; +} + +.pt-n24 { + padding-top: 96px; +} + +.pt-n25 { + padding-top: 100px; +} + +.pr-0 { + padding-right: 0px; +} + +.pr-1 { + padding-right: 1px; +} + +.pr-2 { + padding-right: 2px; +} + +.pr-3 { + padding-right: 3px; +} + +.pr-4 { + padding-right: 4px; +} + +.pr-5 { + padding-right: 5px; +} + +.pr-6 { + padding-right: 6px; +} + +.pr-7 { + padding-right: 7px; +} + +.pr-8 { + padding-right: 8px; +} + +.pr-9 { + padding-right: 9px; +} + +.pr-10 { + padding-right: 10px; +} + +.pr-11 { + padding-right: 11px; +} + +.pr-12 { + padding-right: 12px; +} + +.pr-13 { + padding-right: 13px; +} + +.pr-14 { + padding-right: 14px; +} + +.pr-15 { + padding-right: 15px; +} + +.pr-16 { + padding-right: 16px; +} + +.pr-17 { + padding-right: 17px; +} + +.pr-18 { + padding-right: 18px; +} + +.pr-19 { + padding-right: 19px; +} + +.pr-20 { + padding-right: 20px; +} + +.pr-21 { + padding-right: 21px; +} + +.pr-22 { + padding-right: 22px; +} + +.pr-23 { + padding-right: 23px; +} + +.pr-24 { + padding-right: 24px; +} + +.pr-25 { + padding-right: 25px; +} + +.pr-26 { + padding-right: 26px; +} + +.pr-27 { + padding-right: 27px; +} + +.pr-28 { + padding-right: 28px; +} + +.pr-29 { + padding-right: 29px; +} + +.pr-30 { + padding-right: 30px; +} + +.pr-31 { + padding-right: 31px; +} + +.pr-32 { + padding-right: 32px; +} + +.pr-33 { + padding-right: 33px; +} + +.pr-34 { + padding-right: 34px; +} + +.pr-35 { + padding-right: 35px; +} + +.pr-36 { + padding-right: 36px; +} + +.pr-37 { + padding-right: 37px; +} + +.pr-38 { + padding-right: 38px; +} + +.pr-39 { + padding-right: 39px; +} + +.pr-40 { + padding-right: 40px; +} + +.pr-41 { + padding-right: 41px; +} + +.pr-42 { + padding-right: 42px; +} + +.pr-43 { + padding-right: 43px; +} + +.pr-44 { + padding-right: 44px; +} + +.pr-45 { + padding-right: 45px; +} + +.pr-46 { + padding-right: 46px; +} + +.pr-47 { + padding-right: 47px; +} + +.pr-48 { + padding-right: 48px; +} + +.pr-49 { + padding-right: 49px; +} + +.pr-50 { + padding-right: 50px; +} + +.pr-n1 { + padding-right: 4px; +} + +.pr-n2 { + padding-right: 8px; +} + +.pr-n3 { + padding-right: 12px; +} + +.pr-n4 { + padding-right: 16px; +} + +.pr-n5 { + padding-right: 20px; +} + +.pr-n6 { + padding-right: 24px; +} + +.pr-n7 { + padding-right: 28px; +} + +.pr-n8 { + padding-right: 32px; +} + +.pr-n9 { + padding-right: 36px; +} + +.pr-n10 { + padding-right: 40px; +} + +.pr-n11 { + padding-right: 44px; +} + +.pr-n12 { + padding-right: 48px; +} + +.pr-n13 { + padding-right: 52px; +} + +.pr-n14 { + padding-right: 56px; +} + +.pr-n15 { + padding-right: 60px; +} + +.pr-n16 { + padding-right: 64px; +} + +.pr-n17 { + padding-right: 68px; +} + +.pr-n18 { + padding-right: 72px; +} + +.pr-n19 { + padding-right: 76px; +} + +.pr-n20 { + padding-right: 80px; +} + +.pr-n21 { + padding-right: 84px; +} + +.pr-n22 { + padding-right: 88px; +} + +.pr-n23 { + padding-right: 92px; +} + +.pr-n24 { + padding-right: 96px; +} + +.pr-n25 { + padding-right: 100px; +} + +.pb-0 { + padding-bottom: 0px; +} + +.pb-1 { + padding-bottom: 1px; +} + +.pb-2 { + padding-bottom: 2px; +} + +.pb-3 { + padding-bottom: 3px; +} + +.pb-4 { + padding-bottom: 4px; +} + +.pb-5 { + padding-bottom: 5px; +} + +.pb-6 { + padding-bottom: 6px; +} + +.pb-7 { + padding-bottom: 7px; +} + +.pb-8 { + padding-bottom: 8px; +} + +.pb-9 { + padding-bottom: 9px; +} + +.pb-10 { + padding-bottom: 10px; +} + +.pb-11 { + padding-bottom: 11px; +} + +.pb-12 { + padding-bottom: 12px; +} + +.pb-13 { + padding-bottom: 13px; +} + +.pb-14 { + padding-bottom: 14px; +} + +.pb-15 { + padding-bottom: 15px; +} + +.pb-16 { + padding-bottom: 16px; +} + +.pb-17 { + padding-bottom: 17px; +} + +.pb-18 { + padding-bottom: 18px; +} + +.pb-19 { + padding-bottom: 19px; +} + +.pb-20 { + padding-bottom: 20px; +} + +.pb-21 { + padding-bottom: 21px; +} + +.pb-22 { + padding-bottom: 22px; +} + +.pb-23 { + padding-bottom: 23px; +} + +.pb-24 { + padding-bottom: 24px; +} + +.pb-25 { + padding-bottom: 25px; +} + +.pb-26 { + padding-bottom: 26px; +} + +.pb-27 { + padding-bottom: 27px; +} + +.pb-28 { + padding-bottom: 28px; +} + +.pb-29 { + padding-bottom: 29px; +} + +.pb-30 { + padding-bottom: 30px; +} + +.pb-31 { + padding-bottom: 31px; +} + +.pb-32 { + padding-bottom: 32px; +} + +.pb-33 { + padding-bottom: 33px; +} + +.pb-34 { + padding-bottom: 34px; +} + +.pb-35 { + padding-bottom: 35px; +} + +.pb-36 { + padding-bottom: 36px; +} + +.pb-37 { + padding-bottom: 37px; +} + +.pb-38 { + padding-bottom: 38px; +} + +.pb-39 { + padding-bottom: 39px; +} + +.pb-40 { + padding-bottom: 40px; +} + +.pb-41 { + padding-bottom: 41px; +} + +.pb-42 { + padding-bottom: 42px; +} + +.pb-43 { + padding-bottom: 43px; +} + +.pb-44 { + padding-bottom: 44px; +} + +.pb-45 { + padding-bottom: 45px; +} + +.pb-46 { + padding-bottom: 46px; +} + +.pb-47 { + padding-bottom: 47px; +} + +.pb-48 { + padding-bottom: 48px; +} + +.pb-49 { + padding-bottom: 49px; +} + +.pb-50 { + padding-bottom: 50px; +} + +.pb-n1 { + padding-bottom: 4px; +} + +.pb-n2 { + padding-bottom: 8px; +} + +.pb-n3 { + padding-bottom: 12px; +} + +.pb-n4 { + padding-bottom: 16px; +} + +.pb-n5 { + padding-bottom: 20px; +} + +.pb-n6 { + padding-bottom: 24px; +} + +.pb-n7 { + padding-bottom: 28px; +} + +.pb-n8 { + padding-bottom: 32px; +} + +.pb-n9 { + padding-bottom: 36px; +} + +.pb-n10 { + padding-bottom: 40px; +} + +.pb-n11 { + padding-bottom: 44px; +} + +.pb-n12 { + padding-bottom: 48px; +} + +.pb-n13 { + padding-bottom: 52px; +} + +.pb-n14 { + padding-bottom: 56px; +} + +.pb-n15 { + padding-bottom: 60px; +} + +.pb-n16 { + padding-bottom: 64px; +} + +.pb-n17 { + padding-bottom: 68px; +} + +.pb-n18 { + padding-bottom: 72px; +} + +.pb-n19 { + padding-bottom: 76px; +} + +.pb-n20 { + padding-bottom: 80px; +} + +.pb-n21 { + padding-bottom: 84px; +} + +.pb-n22 { + padding-bottom: 88px; +} + +.pb-n23 { + padding-bottom: 92px; +} + +.pb-n24 { + padding-bottom: 96px; +} + +.pb-n25 { + padding-bottom: 100px; +} + +.pl-0 { + padding-left: 0px; +} + +.pl-1 { + padding-left: 1px; +} + +.pl-2 { + padding-left: 2px; +} + +.pl-3 { + padding-left: 3px; +} + +.pl-4 { + padding-left: 4px; +} + +.pl-5 { + padding-left: 5px; +} + +.pl-6 { + padding-left: 6px; +} + +.pl-7 { + padding-left: 7px; +} + +.pl-8 { + padding-left: 8px; +} + +.pl-9 { + padding-left: 9px; +} + +.pl-10 { + padding-left: 10px; +} + +.pl-11 { + padding-left: 11px; +} + +.pl-12 { + padding-left: 12px; +} + +.pl-13 { + padding-left: 13px; +} + +.pl-14 { + padding-left: 14px; +} + +.pl-15 { + padding-left: 15px; +} + +.pl-16 { + padding-left: 16px; +} + +.pl-17 { + padding-left: 17px; +} + +.pl-18 { + padding-left: 18px; +} + +.pl-19 { + padding-left: 19px; +} + +.pl-20 { + padding-left: 20px; +} + +.pl-21 { + padding-left: 21px; +} + +.pl-22 { + padding-left: 22px; +} + +.pl-23 { + padding-left: 23px; +} + +.pl-24 { + padding-left: 24px; +} + +.pl-25 { + padding-left: 25px; +} + +.pl-26 { + padding-left: 26px; +} + +.pl-27 { + padding-left: 27px; +} + +.pl-28 { + padding-left: 28px; +} + +.pl-29 { + padding-left: 29px; +} + +.pl-30 { + padding-left: 30px; +} + +.pl-31 { + padding-left: 31px; +} + +.pl-32 { + padding-left: 32px; +} + +.pl-33 { + padding-left: 33px; +} + +.pl-34 { + padding-left: 34px; +} + +.pl-35 { + padding-left: 35px; +} + +.pl-36 { + padding-left: 36px; +} + +.pl-37 { + padding-left: 37px; +} + +.pl-38 { + padding-left: 38px; +} + +.pl-39 { + padding-left: 39px; +} + +.pl-40 { + padding-left: 40px; +} + +.pl-41 { + padding-left: 41px; +} + +.pl-42 { + padding-left: 42px; +} + +.pl-43 { + padding-left: 43px; +} + +.pl-44 { + padding-left: 44px; +} + +.pl-45 { + padding-left: 45px; +} + +.pl-46 { + padding-left: 46px; +} + +.pl-47 { + padding-left: 47px; +} + +.pl-48 { + padding-left: 48px; +} + +.pl-49 { + padding-left: 49px; +} + +.pl-50 { + padding-left: 50px; +} + +.pl-n1 { + padding-left: 4px; +} + +.pl-n2 { + padding-left: 8px; +} + +.pl-n3 { + padding-left: 12px; +} + +.pl-n4 { + padding-left: 16px; +} + +.pl-n5 { + padding-left: 20px; +} + +.pl-n6 { + padding-left: 24px; +} + +.pl-n7 { + padding-left: 28px; +} + +.pl-n8 { + padding-left: 32px; +} + +.pl-n9 { + padding-left: 36px; +} + +.pl-n10 { + padding-left: 40px; +} + +.pl-n11 { + padding-left: 44px; +} + +.pl-n12 { + padding-left: 48px; +} + +.pl-n13 { + padding-left: 52px; +} + +.pl-n14 { + padding-left: 56px; +} + +.pl-n15 { + padding-left: 60px; +} + +.pl-n16 { + padding-left: 64px; +} + +.pl-n17 { + padding-left: 68px; +} + +.pl-n18 { + padding-left: 72px; +} + +.pl-n19 { + padding-left: 76px; +} + +.pl-n20 { + padding-left: 80px; +} + +.pl-n21 { + padding-left: 84px; +} + +.pl-n22 { + padding-left: 88px; +} + +.pl-n23 { + padding-left: 92px; +} + +.pl-n24 { + padding-left: 96px; +} + +.pl-n25 { + padding-left: 100px; +} + +.px-0 { + padding-left: 0px; + padding-right: 0px; +} + +.px-1 { + padding-left: 1px; + padding-right: 1px; +} + +.px-2 { + padding-left: 2px; + padding-right: 2px; +} + +.px-3 { + padding-left: 3px; + padding-right: 3px; +} + +.px-4 { + padding-left: 4px; + padding-right: 4px; +} + +.px-5 { + padding-left: 5px; + padding-right: 5px; +} + +.px-6 { + padding-left: 6px; + padding-right: 6px; +} + +.px-7 { + padding-left: 7px; + padding-right: 7px; +} + +.px-8 { + padding-left: 8px; + padding-right: 8px; +} + +.px-9 { + padding-left: 9px; + padding-right: 9px; +} + +.px-10 { + padding-left: 10px; + padding-right: 10px; +} + +.px-11 { + padding-left: 11px; + padding-right: 11px; +} + +.px-12 { + padding-left: 12px; + padding-right: 12px; +} + +.px-13 { + padding-left: 13px; + padding-right: 13px; +} + +.px-14 { + padding-left: 14px; + padding-right: 14px; +} + +.px-15 { + padding-left: 15px; + padding-right: 15px; +} + +.px-16 { + padding-left: 16px; + padding-right: 16px; +} + +.px-17 { + padding-left: 17px; + padding-right: 17px; +} + +.px-18 { + padding-left: 18px; + padding-right: 18px; +} + +.px-19 { + padding-left: 19px; + padding-right: 19px; +} + +.px-20 { + padding-left: 20px; + padding-right: 20px; +} + +.px-21 { + padding-left: 21px; + padding-right: 21px; +} + +.px-22 { + padding-left: 22px; + padding-right: 22px; +} + +.px-23 { + padding-left: 23px; + padding-right: 23px; +} + +.px-24 { + padding-left: 24px; + padding-right: 24px; +} + +.px-25 { + padding-left: 25px; + padding-right: 25px; +} + +.px-26 { + padding-left: 26px; + padding-right: 26px; +} + +.px-27 { + padding-left: 27px; + padding-right: 27px; +} + +.px-28 { + padding-left: 28px; + padding-right: 28px; +} + +.px-29 { + padding-left: 29px; + padding-right: 29px; +} + +.px-30 { + padding-left: 30px; + padding-right: 30px; +} + +.px-31 { + padding-left: 31px; + padding-right: 31px; +} + +.px-32 { + padding-left: 32px; + padding-right: 32px; +} + +.px-33 { + padding-left: 33px; + padding-right: 33px; +} + +.px-34 { + padding-left: 34px; + padding-right: 34px; +} + +.px-35 { + padding-left: 35px; + padding-right: 35px; +} + +.px-36 { + padding-left: 36px; + padding-right: 36px; +} + +.px-37 { + padding-left: 37px; + padding-right: 37px; +} + +.px-38 { + padding-left: 38px; + padding-right: 38px; +} + +.px-39 { + padding-left: 39px; + padding-right: 39px; +} + +.px-40 { + padding-left: 40px; + padding-right: 40px; +} + +.px-41 { + padding-left: 41px; + padding-right: 41px; +} + +.px-42 { + padding-left: 42px; + padding-right: 42px; +} + +.px-43 { + padding-left: 43px; + padding-right: 43px; +} + +.px-44 { + padding-left: 44px; + padding-right: 44px; +} + +.px-45 { + padding-left: 45px; + padding-right: 45px; +} + +.px-46 { + padding-left: 46px; + padding-right: 46px; +} + +.px-47 { + padding-left: 47px; + padding-right: 47px; +} + +.px-48 { + padding-left: 48px; + padding-right: 48px; +} + +.px-49 { + padding-left: 49px; + padding-right: 49px; +} + +.px-50 { + padding-left: 50px; + padding-right: 50px; +} + +.px-n1 { + padding-left: 4px; + padding-right: 4rpx; +} + +.px-n2 { + padding-left: 8px; + padding-right: 8rpx; +} + +.px-n3 { + padding-left: 12px; + padding-right: 12rpx; +} + +.px-n4 { + padding-left: 16px; + padding-right: 16rpx; +} + +.px-n5 { + padding-left: 20px; + padding-right: 20rpx; +} + +.px-n6 { + padding-left: 24px; + padding-right: 24rpx; +} + +.px-n7 { + padding-left: 28px; + padding-right: 28rpx; +} + +.px-n8 { + padding-left: 32px; + padding-right: 32rpx; +} + +.px-n9 { + padding-left: 36px; + padding-right: 36rpx; +} + +.px-n10 { + padding-left: 40px; + padding-right: 40rpx; +} + +.px-n11 { + padding-left: 44px; + padding-right: 44rpx; +} + +.px-n12 { + padding-left: 48px; + padding-right: 48rpx; +} + +.px-n13 { + padding-left: 52px; + padding-right: 52rpx; +} + +.px-n14 { + padding-left: 56px; + padding-right: 56rpx; +} + +.px-n15 { + padding-left: 60px; + padding-right: 60rpx; +} + +.px-n16 { + padding-left: 64px; + padding-right: 64rpx; +} + +.px-n17 { + padding-left: 68px; + padding-right: 68rpx; +} + +.px-n18 { + padding-left: 72px; + padding-right: 72rpx; +} + +.px-n19 { + padding-left: 76px; + padding-right: 76rpx; +} + +.px-n20 { + padding-left: 80px; + padding-right: 80rpx; +} + +.px-n21 { + padding-left: 84px; + padding-right: 84rpx; +} + +.px-n22 { + padding-left: 88px; + padding-right: 88rpx; +} + +.px-n23 { + padding-left: 92px; + padding-right: 92rpx; +} + +.px-n24 { + padding-left: 96px; + padding-right: 96rpx; +} + +.px-n25 { + padding-left: 100px; + padding-right: 100rpx; +} + +.py-0 { + padding-top: 0px; + padding-bottom: 0px; +} + +.py-1 { + padding-top: 1px; + padding-bottom: 1px; +} + +.py-2 { + padding-top: 2px; + padding-bottom: 2px; +} + +.py-3 { + padding-top: 3px; + padding-bottom: 3px; +} + +.py-4 { + padding-top: 4px; + padding-bottom: 4px; +} + +.py-5 { + padding-top: 5px; + padding-bottom: 5px; +} + +.py-6 { + padding-top: 6px; + padding-bottom: 6px; +} + +.py-7 { + padding-top: 7px; + padding-bottom: 7px; +} + +.py-8 { + padding-top: 8px; + padding-bottom: 8px; +} + +.py-9 { + padding-top: 9px; + padding-bottom: 9px; +} + +.py-10 { + padding-top: 10px; + padding-bottom: 10px; +} + +.py-11 { + padding-top: 11px; + padding-bottom: 11px; +} + +.py-12 { + padding-top: 12px; + padding-bottom: 12px; +} + +.py-13 { + padding-top: 13px; + padding-bottom: 13px; +} + +.py-14 { + padding-top: 14px; + padding-bottom: 14px; +} + +.py-15 { + padding-top: 15px; + padding-bottom: 15px; +} + +.py-16 { + padding-top: 16px; + padding-bottom: 16px; +} + +.py-17 { + padding-top: 17px; + padding-bottom: 17px; +} + +.py-18 { + padding-top: 18px; + padding-bottom: 18px; +} + +.py-19 { + padding-top: 19px; + padding-bottom: 19px; +} + +.py-20 { + padding-top: 20px; + padding-bottom: 20px; +} + +.py-21 { + padding-top: 21px; + padding-bottom: 21px; +} + +.py-22 { + padding-top: 22px; + padding-bottom: 22px; +} + +.py-23 { + padding-top: 23px; + padding-bottom: 23px; +} + +.py-24 { + padding-top: 24px; + padding-bottom: 24px; +} + +.py-25 { + padding-top: 25px; + padding-bottom: 25px; +} + +.py-26 { + padding-top: 26px; + padding-bottom: 26px; +} + +.py-27 { + padding-top: 27px; + padding-bottom: 27px; +} + +.py-28 { + padding-top: 28px; + padding-bottom: 28px; +} + +.py-29 { + padding-top: 29px; + padding-bottom: 29px; +} + +.py-30 { + padding-top: 30px; + padding-bottom: 30px; +} + +.py-31 { + padding-top: 31px; + padding-bottom: 31px; +} + +.py-32 { + padding-top: 32px; + padding-bottom: 32px; +} + +.py-33 { + padding-top: 33px; + padding-bottom: 33px; +} + +.py-34 { + padding-top: 34px; + padding-bottom: 34px; +} + +.py-35 { + padding-top: 35px; + padding-bottom: 35px; +} + +.py-36 { + padding-top: 36px; + padding-bottom: 36px; +} + +.py-37 { + padding-top: 37px; + padding-bottom: 37px; +} + +.py-38 { + padding-top: 38px; + padding-bottom: 38px; +} + +.py-39 { + padding-top: 39px; + padding-bottom: 39px; +} + +.py-40 { + padding-top: 40px; + padding-bottom: 40px; +} + +.py-41 { + padding-top: 41px; + padding-bottom: 41px; +} + +.py-42 { + padding-top: 42px; + padding-bottom: 42px; +} + +.py-43 { + padding-top: 43px; + padding-bottom: 43px; +} + +.py-44 { + padding-top: 44px; + padding-bottom: 44px; +} + +.py-45 { + padding-top: 45px; + padding-bottom: 45px; +} + +.py-46 { + padding-top: 46px; + padding-bottom: 46px; +} + +.py-47 { + padding-top: 47px; + padding-bottom: 47px; +} + +.py-48 { + padding-top: 48px; + padding-bottom: 48px; +} + +.py-49 { + padding-top: 49px; + padding-bottom: 49px; +} + +.py-50 { + padding-top: 50px; + padding-bottom: 50px; +} + +.py-n1 { + padding-top: 4px; + padding-bottom: 4px; +} + +.py-n2 { + padding-top: 8px; + padding-bottom: 8px; +} + +.py-n3 { + padding-top: 12px; + padding-bottom: 12px; +} + +.py-n4 { + padding-top: 16px; + padding-bottom: 16px; +} + +.py-n5 { + padding-top: 20px; + padding-bottom: 20px; +} + +.py-n6 { + padding-top: 24px; + padding-bottom: 24px; +} + +.py-n7 { + padding-top: 28px; + padding-bottom: 28px; +} + +.py-n8 { + padding-top: 32px; + padding-bottom: 32px; +} + +.py-n9 { + padding-top: 36px; + padding-bottom: 36px; +} + +.py-n10 { + padding-top: 40px; + padding-bottom: 40px; +} + +.py-n11 { + padding-top: 44px; + padding-bottom: 44px; +} + +.py-n12 { + padding-top: 48px; + padding-bottom: 48px; +} + +.py-n13 { + padding-top: 52px; + padding-bottom: 52px; +} + +.py-n14 { + padding-top: 56px; + padding-bottom: 56px; +} + +.py-n15 { + padding-top: 60px; + padding-bottom: 60px; +} + +.py-n16 { + padding-top: 64px; + padding-bottom: 64px; +} + +.py-n17 { + padding-top: 68px; + padding-bottom: 68px; +} + +.py-n18 { + padding-top: 72px; + padding-bottom: 72px; +} + +.py-n19 { + padding-top: 76px; + padding-bottom: 76px; +} + +.py-n20 { + padding-top: 80px; + padding-bottom: 80px; +} + +.py-n21 { + padding-top: 84px; + padding-bottom: 84px; +} + +.py-n22 { + padding-top: 88px; + padding-bottom: 88px; +} + +.py-n23 { + padding-top: 92px; + padding-bottom: 92px; +} + +.py-n24 { + padding-top: 96px; + padding-bottom: 96px; +} + +.py-n25 { + padding-top: 100px; + padding-bottom: 100px; +} + +.ma-0 { + margin: 0px; +} + +.ma-1 { + margin: 1px; +} + +.ma-2 { + margin: 2px; +} + +.ma-3 { + margin: 3px; +} + +.ma-4 { + margin: 4px; +} + +.ma-5 { + margin: 5px; +} + +.ma-6 { + margin: 6px; +} + +.ma-7 { + margin: 7px; +} + +.ma-8 { + margin: 8px; +} + +.ma-9 { + margin: 9px; +} + +.ma-10 { + margin: 10px; +} + +.ma-11 { + margin: 11px; +} + +.ma-12 { + margin: 12px; +} + +.ma-13 { + margin: 13px; +} + +.ma-14 { + margin: 14px; +} + +.ma-15 { + margin: 15px; +} + +.ma-16 { + margin: 16px; +} + +.ma-17 { + margin: 17px; +} + +.ma-18 { + margin: 18px; +} + +.ma-19 { + margin: 19px; +} + +.ma-20 { + margin: 20px; +} + +.ma-21 { + margin: 21px; +} + +.ma-22 { + margin: 22px; +} + +.ma-23 { + margin: 23px; +} + +.ma-24 { + margin: 24px; +} + +.ma-25 { + margin: 25px; +} + +.ma-26 { + margin: 26px; +} + +.ma-27 { + margin: 27px; +} + +.ma-28 { + margin: 28px; +} + +.ma-29 { + margin: 29px; +} + +.ma-30 { + margin: 30px; +} + +.ma-31 { + margin: 31px; +} + +.ma-32 { + margin: 32px; +} + +.ma-33 { + margin: 33px; +} + +.ma-34 { + margin: 34px; +} + +.ma-35 { + margin: 35px; +} + +.ma-36 { + margin: 36px; +} + +.ma-37 { + margin: 37px; +} + +.ma-38 { + margin: 38px; +} + +.ma-39 { + margin: 39px; +} + +.ma-40 { + margin: 40px; +} + +.ma-41 { + margin: 41px; +} + +.ma-42 { + margin: 42px; +} + +.ma-43 { + margin: 43px; +} + +.ma-44 { + margin: 44px; +} + +.ma-45 { + margin: 45px; +} + +.ma-46 { + margin: 46px; +} + +.ma-47 { + margin: 47px; +} + +.ma-48 { + margin: 48px; +} + +.ma-49 { + margin: 49px; +} + +.ma-50 { + margin: 50px; +} + +.ma-n1 { + margin: 4px; +} + +.ma-n2 { + margin: 8px; +} + +.ma-n3 { + margin: 12px; +} + +.ma-n4 { + margin: 16px; +} + +.ma-n5 { + margin: 20px; +} + +.ma-n6 { + margin: 24px; +} + +.ma-n7 { + margin: 28px; +} + +.ma-n8 { + margin: 32px; +} + +.ma-n9 { + margin: 36px; +} + +.ma-n10 { + margin: 40px; +} + +.ma-n11 { + margin: 44px; +} + +.ma-n12 { + margin: 48px; +} + +.ma-n13 { + margin: 52px; +} + +.ma-n14 { + margin: 56px; +} + +.ma-n15 { + margin: 60px; +} + +.ma-n16 { + margin: 64px; +} + +.ma-n17 { + margin: 68px; +} + +.ma-n18 { + margin: 72px; +} + +.ma-n19 { + margin: 76px; +} + +.ma-n20 { + margin: 80px; +} + +.ma-n21 { + margin: 84px; +} + +.ma-n22 { + margin: 88px; +} + +.ma-n23 { + margin: 92px; +} + +.ma-n24 { + margin: 96px; +} + +.ma-n25 { + margin: 100px; +} + +.mt-0 { + margin-top: 0px; +} + +.mt--0 { + margin-top: -0px; +} + +.mt-1 { + margin-top: 1px; +} + +.mt--1 { + margin-top: -1px; +} + +.mt-2 { + margin-top: 2px; +} + +.mt--2 { + margin-top: -2px; +} + +.mt-3 { + margin-top: 3px; +} + +.mt--3 { + margin-top: -3px; +} + +.mt-4 { + margin-top: 4px; +} + +.mt--4 { + margin-top: -4px; +} + +.mt-5 { + margin-top: 5px; +} + +.mt--5 { + margin-top: -5px; +} + +.mt-6 { + margin-top: 6px; +} + +.mt--6 { + margin-top: -6px; +} + +.mt-7 { + margin-top: 7px; +} + +.mt--7 { + margin-top: -7px; +} + +.mt-8 { + margin-top: 8px; +} + +.mt--8 { + margin-top: -8px; +} + +.mt-9 { + margin-top: 9px; +} + +.mt--9 { + margin-top: -9px; +} + +.mt-10 { + margin-top: 10px; +} + +.mt--10 { + margin-top: -10px; +} + +.mt-11 { + margin-top: 11px; +} + +.mt--11 { + margin-top: -11px; +} + +.mt-12 { + margin-top: 12px; +} + +.mt--12 { + margin-top: -12px; +} + +.mt-13 { + margin-top: 13px; +} + +.mt--13 { + margin-top: -13px; +} + +.mt-14 { + margin-top: 14px; +} + +.mt--14 { + margin-top: -14px; +} + +.mt-15 { + margin-top: 15px; +} + +.mt--15 { + margin-top: -15px; +} + +.mt-16 { + margin-top: 16px; +} + +.mt--16 { + margin-top: -16px; +} + +.mt-17 { + margin-top: 17px; +} + +.mt--17 { + margin-top: -17px; +} + +.mt-18 { + margin-top: 18px; +} + +.mt--18 { + margin-top: -18px; +} + +.mt-19 { + margin-top: 19px; +} + +.mt--19 { + margin-top: -19px; +} + +.mt-20 { + margin-top: 20px; +} + +.mt--20 { + margin-top: -20px; +} + +.mt-21 { + margin-top: 21px; +} + +.mt--21 { + margin-top: -21px; +} + +.mt-22 { + margin-top: 22px; +} + +.mt--22 { + margin-top: -22px; +} + +.mt-23 { + margin-top: 23px; +} + +.mt--23 { + margin-top: -23px; +} + +.mt-24 { + margin-top: 24px; +} + +.mt--24 { + margin-top: -24px; +} + +.mt-25 { + margin-top: 25px; +} + +.mt--25 { + margin-top: -25px; +} + +.mt-26 { + margin-top: 26px; +} + +.mt--26 { + margin-top: -26px; +} + +.mt-27 { + margin-top: 27px; +} + +.mt--27 { + margin-top: -27px; +} + +.mt-28 { + margin-top: 28px; +} + +.mt--28 { + margin-top: -28px; +} + +.mt-29 { + margin-top: 29px; +} + +.mt--29 { + margin-top: -29px; +} + +.mt-30 { + margin-top: 30px; +} + +.mt--30 { + margin-top: -30px; +} + +.mt-31 { + margin-top: 31px; +} + +.mt--31 { + margin-top: -31px; +} + +.mt-32 { + margin-top: 32px; +} + +.mt--32 { + margin-top: -32px; +} + +.mt-33 { + margin-top: 33px; +} + +.mt--33 { + margin-top: -33px; +} + +.mt-34 { + margin-top: 34px; +} + +.mt--34 { + margin-top: -34px; +} + +.mt-35 { + margin-top: 35px; +} + +.mt--35 { + margin-top: -35px; +} + +.mt-36 { + margin-top: 36px; +} + +.mt--36 { + margin-top: -36px; +} + +.mt-37 { + margin-top: 37px; +} + +.mt--37 { + margin-top: -37px; +} + +.mt-38 { + margin-top: 38px; +} + +.mt--38 { + margin-top: -38px; +} + +.mt-39 { + margin-top: 39px; +} + +.mt--39 { + margin-top: -39px; +} + +.mt-40 { + margin-top: 40px; +} + +.mt--40 { + margin-top: -40px; +} + +.mt-41 { + margin-top: 41px; +} + +.mt--41 { + margin-top: -41px; +} + +.mt-42 { + margin-top: 42px; +} + +.mt--42 { + margin-top: -42px; +} + +.mt-43 { + margin-top: 43px; +} + +.mt--43 { + margin-top: -43px; +} + +.mt-44 { + margin-top: 44px; +} + +.mt--44 { + margin-top: -44px; +} + +.mt-45 { + margin-top: 45px; +} + +.mt--45 { + margin-top: -45px; +} + +.mt-46 { + margin-top: 46px; +} + +.mt--46 { + margin-top: -46px; +} + +.mt-47 { + margin-top: 47px; +} + +.mt--47 { + margin-top: -47px; +} + +.mt-48 { + margin-top: 48px; +} + +.mt--48 { + margin-top: -48px; +} + +.mt-49 { + margin-top: 49px; +} + +.mt--49 { + margin-top: -49px; +} + +.mt-50 { + margin-top: 50px; +} + +.mt--50 { + margin-top: -50px; +} + +.mt-n1 { + margin-top: 4px; +} + +.mt--n1 { + margin-top: -4px; +} + +.mt-n2 { + margin-top: 8px; +} + +.mt--n2 { + margin-top: -8px; +} + +.mt-n3 { + margin-top: 12px; +} + +.mt--n3 { + margin-top: -12px; +} + +.mt-n4 { + margin-top: 16px; +} + +.mt--n4 { + margin-top: -16px; +} + +.mt-n5 { + margin-top: 20px; +} + +.mt--n5 { + margin-top: -20px; +} + +.mt-n6 { + margin-top: 24px; +} + +.mt--n6 { + margin-top: -24px; +} + +.mt-n7 { + margin-top: 28px; +} + +.mt--n7 { + margin-top: -28px; +} + +.mt-n8 { + margin-top: 32px; +} + +.mt--n8 { + margin-top: -32px; +} + +.mt-n9 { + margin-top: 36px; +} + +.mt--n9 { + margin-top: -36px; +} + +.mt-n10 { + margin-top: 40px; +} + +.mt--n10 { + margin-top: -40px; +} + +.mt-n11 { + margin-top: 44px; +} + +.mt--n11 { + margin-top: -44px; +} + +.mt-n12 { + margin-top: 48px; +} + +.mt--n12 { + margin-top: -48px; +} + +.mt-n13 { + margin-top: 52px; +} + +.mt--n13 { + margin-top: -52px; +} + +.mt-n14 { + margin-top: 56px; +} + +.mt--n14 { + margin-top: -56px; +} + +.mt-n15 { + margin-top: 60px; +} + +.mt--n15 { + margin-top: -60px; +} + +.mt-n16 { + margin-top: 64px; +} + +.mt--n16 { + margin-top: -64px; +} + +.mt-n17 { + margin-top: 68px; +} + +.mt--n17 { + margin-top: -68px; +} + +.mt-n18 { + margin-top: 72px; +} + +.mt--n18 { + margin-top: -72px; +} + +.mt-n19 { + margin-top: 76px; +} + +.mt--n19 { + margin-top: -76px; +} + +.mt-n20 { + margin-top: 80px; +} + +.mt--n20 { + margin-top: -80px; +} + +.mt-n21 { + margin-top: 84px; +} + +.mt--n21 { + margin-top: -84px; +} + +.mt-n22 { + margin-top: 88px; +} + +.mt--n22 { + margin-top: -88px; +} + +.mt-n23 { + margin-top: 92px; +} + +.mt--n23 { + margin-top: -92px; +} + +.mt-n24 { + margin-top: 96px; +} + +.mt--n24 { + margin-top: -96px; +} + +.mt-n25 { + margin-top: 100px; +} + +.mt--n25 { + margin-top: -100px; +} + +.mr-0 { + margin-right: 0px; +} + +.mr--0 { + margin-right: -0px; +} + +.mr-1 { + margin-right: 1px; +} + +.mr--1 { + margin-right: -1px; +} + +.mr-2 { + margin-right: 2px; +} + +.mr--2 { + margin-right: -2px; +} + +.mr-3 { + margin-right: 3px; +} + +.mr--3 { + margin-right: -3px; +} + +.mr-4 { + margin-right: 4px; +} + +.mr--4 { + margin-right: -4px; +} + +.mr-5 { + margin-right: 5px; +} + +.mr--5 { + margin-right: -5px; +} + +.mr-6 { + margin-right: 6px; +} + +.mr--6 { + margin-right: -6px; +} + +.mr-7 { + margin-right: 7px; +} + +.mr--7 { + margin-right: -7px; +} + +.mr-8 { + margin-right: 8px; +} + +.mr--8 { + margin-right: -8px; +} + +.mr-9 { + margin-right: 9px; +} + +.mr--9 { + margin-right: -9px; +} + +.mr-10 { + margin-right: 10px; +} + +.mr--10 { + margin-right: -10px; +} + +.mr-11 { + margin-right: 11px; +} + +.mr--11 { + margin-right: -11px; +} + +.mr-12 { + margin-right: 12px; +} + +.mr--12 { + margin-right: -12px; +} + +.mr-13 { + margin-right: 13px; +} + +.mr--13 { + margin-right: -13px; +} + +.mr-14 { + margin-right: 14px; +} + +.mr--14 { + margin-right: -14px; +} + +.mr-15 { + margin-right: 15px; +} + +.mr--15 { + margin-right: -15px; +} + +.mr-16 { + margin-right: 16px; +} + +.mr--16 { + margin-right: -16px; +} + +.mr-17 { + margin-right: 17px; +} + +.mr--17 { + margin-right: -17px; +} + +.mr-18 { + margin-right: 18px; +} + +.mr--18 { + margin-right: -18px; +} + +.mr-19 { + margin-right: 19px; +} + +.mr--19 { + margin-right: -19px; +} + +.mr-20 { + margin-right: 20px; +} + +.mr--20 { + margin-right: -20px; +} + +.mr-21 { + margin-right: 21px; +} + +.mr--21 { + margin-right: -21px; +} + +.mr-22 { + margin-right: 22px; +} + +.mr--22 { + margin-right: -22px; +} + +.mr-23 { + margin-right: 23px; +} + +.mr--23 { + margin-right: -23px; +} + +.mr-24 { + margin-right: 24px; +} + +.mr--24 { + margin-right: -24px; +} + +.mr-25 { + margin-right: 25px; +} + +.mr--25 { + margin-right: -25px; +} + +.mr-26 { + margin-right: 26px; +} + +.mr--26 { + margin-right: -26px; +} + +.mr-27 { + margin-right: 27px; +} + +.mr--27 { + margin-right: -27px; +} + +.mr-28 { + margin-right: 28px; +} + +.mr--28 { + margin-right: -28px; +} + +.mr-29 { + margin-right: 29px; +} + +.mr--29 { + margin-right: -29px; +} + +.mr-30 { + margin-right: 30px; +} + +.mr--30 { + margin-right: -30px; +} + +.mr-31 { + margin-right: 31px; +} + +.mr--31 { + margin-right: -31px; +} + +.mr-32 { + margin-right: 32px; +} + +.mr--32 { + margin-right: -32px; +} + +.mr-33 { + margin-right: 33px; +} + +.mr--33 { + margin-right: -33px; +} + +.mr-34 { + margin-right: 34px; +} + +.mr--34 { + margin-right: -34px; +} + +.mr-35 { + margin-right: 35px; +} + +.mr--35 { + margin-right: -35px; +} + +.mr-36 { + margin-right: 36px; +} + +.mr--36 { + margin-right: -36px; +} + +.mr-37 { + margin-right: 37px; +} + +.mr--37 { + margin-right: -37px; +} + +.mr-38 { + margin-right: 38px; +} + +.mr--38 { + margin-right: -38px; +} + +.mr-39 { + margin-right: 39px; +} + +.mr--39 { + margin-right: -39px; +} + +.mr-40 { + margin-right: 40px; +} + +.mr--40 { + margin-right: -40px; +} + +.mr-41 { + margin-right: 41px; +} + +.mr--41 { + margin-right: -41px; +} + +.mr-42 { + margin-right: 42px; +} + +.mr--42 { + margin-right: -42px; +} + +.mr-43 { + margin-right: 43px; +} + +.mr--43 { + margin-right: -43px; +} + +.mr-44 { + margin-right: 44px; +} + +.mr--44 { + margin-right: -44px; +} + +.mr-45 { + margin-right: 45px; +} + +.mr--45 { + margin-right: -45px; +} + +.mr-46 { + margin-right: 46px; +} + +.mr--46 { + margin-right: -46px; +} + +.mr-47 { + margin-right: 47px; +} + +.mr--47 { + margin-right: -47px; +} + +.mr-48 { + margin-right: 48px; +} + +.mr--48 { + margin-right: -48px; +} + +.mr-49 { + margin-right: 49px; +} + +.mr--49 { + margin-right: -49px; +} + +.mr-50 { + margin-right: 50px; +} + +.mr--50 { + margin-right: -50px; +} + +.mr-n1 { + margin-right: 4px; +} + +.mr--n1 { + margin-right: -4px; +} + +.mr-n2 { + margin-right: 8px; +} + +.mr--n2 { + margin-right: -8px; +} + +.mr-n3 { + margin-right: 12px; +} + +.mr--n3 { + margin-right: -12px; +} + +.mr-n4 { + margin-right: 16px; +} + +.mr--n4 { + margin-right: -16px; +} + +.mr-n5 { + margin-right: 20px; +} + +.mr--n5 { + margin-right: -20px; +} + +.mr-n6 { + margin-right: 24px; +} + +.mr--n6 { + margin-right: -24px; +} + +.mr-n7 { + margin-right: 28px; +} + +.mr--n7 { + margin-right: -28px; +} + +.mr-n8 { + margin-right: 32px; +} + +.mr--n8 { + margin-right: -32px; +} + +.mr-n9 { + margin-right: 36px; +} + +.mr--n9 { + margin-right: -36px; +} + +.mr-n10 { + margin-right: 40px; +} + +.mr--n10 { + margin-right: -40px; +} + +.mr-n11 { + margin-right: 44px; +} + +.mr--n11 { + margin-right: -44px; +} + +.mr-n12 { + margin-right: 48px; +} + +.mr--n12 { + margin-right: -48px; +} + +.mr-n13 { + margin-right: 52px; +} + +.mr--n13 { + margin-right: -52px; +} + +.mr-n14 { + margin-right: 56px; +} + +.mr--n14 { + margin-right: -56px; +} + +.mr-n15 { + margin-right: 60px; +} + +.mr--n15 { + margin-right: -60px; +} + +.mr-n16 { + margin-right: 64px; +} + +.mr--n16 { + margin-right: -64px; +} + +.mr-n17 { + margin-right: 68px; +} + +.mr--n17 { + margin-right: -68px; +} + +.mr-n18 { + margin-right: 72px; +} + +.mr--n18 { + margin-right: -72px; +} + +.mr-n19 { + margin-right: 76px; +} + +.mr--n19 { + margin-right: -76px; +} + +.mr-n20 { + margin-right: 80px; +} + +.mr--n20 { + margin-right: -80px; +} + +.mr-n21 { + margin-right: 84px; +} + +.mr--n21 { + margin-right: -84px; +} + +.mr-n22 { + margin-right: 88px; +} + +.mr--n22 { + margin-right: -88px; +} + +.mr-n23 { + margin-right: 92px; +} + +.mr--n23 { + margin-right: -92px; +} + +.mr-n24 { + margin-right: 96px; +} + +.mr--n24 { + margin-right: -96px; +} + +.mr-n25 { + margin-right: 100px; +} + +.mr--n25 { + margin-right: -100px; +} + +.mb-0 { + margin-bottom: 0px; +} + +.mb--0 { + margin-bottom: -0px; +} + +.mb-1 { + margin-bottom: 1px; +} + +.mb--1 { + margin-bottom: -1px; +} + +.mb-2 { + margin-bottom: 2px; +} + +.mb--2 { + margin-bottom: -2px; +} + +.mb-3 { + margin-bottom: 3px; +} + +.mb--3 { + margin-bottom: -3px; +} + +.mb-4 { + margin-bottom: 4px; +} + +.mb--4 { + margin-bottom: -4px; +} + +.mb-5 { + margin-bottom: 5px; +} + +.mb--5 { + margin-bottom: -5px; +} + +.mb-6 { + margin-bottom: 6px; +} + +.mb--6 { + margin-bottom: -6px; +} + +.mb-7 { + margin-bottom: 7px; +} + +.mb--7 { + margin-bottom: -7px; +} + +.mb-8 { + margin-bottom: 8px; +} + +.mb--8 { + margin-bottom: -8px; +} + +.mb-9 { + margin-bottom: 9px; +} + +.mb--9 { + margin-bottom: -9px; +} + +.mb-10 { + margin-bottom: 10px; +} + +.mb--10 { + margin-bottom: -10px; +} + +.mb-11 { + margin-bottom: 11px; +} + +.mb--11 { + margin-bottom: -11px; +} + +.mb-12 { + margin-bottom: 12px; +} + +.mb--12 { + margin-bottom: -12px; +} + +.mb-13 { + margin-bottom: 13px; +} + +.mb--13 { + margin-bottom: -13px; +} + +.mb-14 { + margin-bottom: 14px; +} + +.mb--14 { + margin-bottom: -14px; +} + +.mb-15 { + margin-bottom: 15px; +} + +.mb--15 { + margin-bottom: -15px; +} + +.mb-16 { + margin-bottom: 16px; +} + +.mb--16 { + margin-bottom: -16px; +} + +.mb-17 { + margin-bottom: 17px; +} + +.mb--17 { + margin-bottom: -17px; +} + +.mb-18 { + margin-bottom: 18px; +} + +.mb--18 { + margin-bottom: -18px; +} + +.mb-19 { + margin-bottom: 19px; +} + +.mb--19 { + margin-bottom: -19px; +} + +.mb-20 { + margin-bottom: 20px; +} + +.mb--20 { + margin-bottom: -20px; +} + +.mb-21 { + margin-bottom: 21px; +} + +.mb--21 { + margin-bottom: -21px; +} + +.mb-22 { + margin-bottom: 22px; +} + +.mb--22 { + margin-bottom: -22px; +} + +.mb-23 { + margin-bottom: 23px; +} + +.mb--23 { + margin-bottom: -23px; +} + +.mb-24 { + margin-bottom: 24px; +} + +.mb--24 { + margin-bottom: -24px; +} + +.mb-25 { + margin-bottom: 25px; +} + +.mb--25 { + margin-bottom: -25px; +} + +.mb-26 { + margin-bottom: 26px; +} + +.mb--26 { + margin-bottom: -26px; +} + +.mb-27 { + margin-bottom: 27px; +} + +.mb--27 { + margin-bottom: -27px; +} + +.mb-28 { + margin-bottom: 28px; +} + +.mb--28 { + margin-bottom: -28px; +} + +.mb-29 { + margin-bottom: 29px; +} + +.mb--29 { + margin-bottom: -29px; +} + +.mb-30 { + margin-bottom: 30px; +} + +.mb--30 { + margin-bottom: -30px; +} + +.mb-31 { + margin-bottom: 31px; +} + +.mb--31 { + margin-bottom: -31px; +} + +.mb-32 { + margin-bottom: 32px; +} + +.mb--32 { + margin-bottom: -32px; +} + +.mb-33 { + margin-bottom: 33px; +} + +.mb--33 { + margin-bottom: -33px; +} + +.mb-34 { + margin-bottom: 34px; +} + +.mb--34 { + margin-bottom: -34px; +} + +.mb-35 { + margin-bottom: 35px; +} + +.mb--35 { + margin-bottom: -35px; +} + +.mb-36 { + margin-bottom: 36px; +} + +.mb--36 { + margin-bottom: -36px; +} + +.mb-37 { + margin-bottom: 37px; +} + +.mb--37 { + margin-bottom: -37px; +} + +.mb-38 { + margin-bottom: 38px; +} + +.mb--38 { + margin-bottom: -38px; +} + +.mb-39 { + margin-bottom: 39px; +} + +.mb--39 { + margin-bottom: -39px; +} + +.mb-40 { + margin-bottom: 40px; +} + +.mb--40 { + margin-bottom: -40px; +} + +.mb-41 { + margin-bottom: 41px; +} + +.mb--41 { + margin-bottom: -41px; +} + +.mb-42 { + margin-bottom: 42px; +} + +.mb--42 { + margin-bottom: -42px; +} + +.mb-43 { + margin-bottom: 43px; +} + +.mb--43 { + margin-bottom: -43px; +} + +.mb-44 { + margin-bottom: 44px; +} + +.mb--44 { + margin-bottom: -44px; +} + +.mb-45 { + margin-bottom: 45px; +} + +.mb--45 { + margin-bottom: -45px; +} + +.mb-46 { + margin-bottom: 46px; +} + +.mb--46 { + margin-bottom: -46px; +} + +.mb-47 { + margin-bottom: 47px; +} + +.mb--47 { + margin-bottom: -47px; +} + +.mb-48 { + margin-bottom: 48px; +} + +.mb--48 { + margin-bottom: -48px; +} + +.mb-49 { + margin-bottom: 49px; +} + +.mb--49 { + margin-bottom: -49px; +} + +.mb-50 { + margin-bottom: 50px; +} + +.mb--50 { + margin-bottom: -50px; +} + +.mb-n1 { + margin-bottom: 4px; +} + +.mb--n1 { + margin-bottom: -4px; +} + +.mb-n2 { + margin-bottom: 8px; +} + +.mb--n2 { + margin-bottom: -8px; +} + +.mb-n3 { + margin-bottom: 12px; +} + +.mb--n3 { + margin-bottom: -12px; +} + +.mb-n4 { + margin-bottom: 16px; +} + +.mb--n4 { + margin-bottom: -16px; +} + +.mb-n5 { + margin-bottom: 20px; +} + +.mb--n5 { + margin-bottom: -20px; +} + +.mb-n6 { + margin-bottom: 24px; +} + +.mb--n6 { + margin-bottom: -24px; +} + +.mb-n7 { + margin-bottom: 28px; +} + +.mb--n7 { + margin-bottom: -28px; +} + +.mb-n8 { + margin-bottom: 32px; +} + +.mb--n8 { + margin-bottom: -32px; +} + +.mb-n9 { + margin-bottom: 36px; +} + +.mb--n9 { + margin-bottom: -36px; +} + +.mb-n10 { + margin-bottom: 40px; +} + +.mb--n10 { + margin-bottom: -40px; +} + +.mb-n11 { + margin-bottom: 44px; +} + +.mb--n11 { + margin-bottom: -44px; +} + +.mb-n12 { + margin-bottom: 48px; +} + +.mb--n12 { + margin-bottom: -48px; +} + +.mb-n13 { + margin-bottom: 52px; +} + +.mb--n13 { + margin-bottom: -52px; +} + +.mb-n14 { + margin-bottom: 56px; +} + +.mb--n14 { + margin-bottom: -56px; +} + +.mb-n15 { + margin-bottom: 60px; +} + +.mb--n15 { + margin-bottom: -60px; +} + +.mb-n16 { + margin-bottom: 64px; +} + +.mb--n16 { + margin-bottom: -64px; +} + +.mb-n17 { + margin-bottom: 68px; +} + +.mb--n17 { + margin-bottom: -68px; +} + +.mb-n18 { + margin-bottom: 72px; +} + +.mb--n18 { + margin-bottom: -72px; +} + +.mb-n19 { + margin-bottom: 76px; +} + +.mb--n19 { + margin-bottom: -76px; +} + +.mb-n20 { + margin-bottom: 80px; +} + +.mb--n20 { + margin-bottom: -80px; +} + +.mb-n21 { + margin-bottom: 84px; +} + +.mb--n21 { + margin-bottom: -84px; +} + +.mb-n22 { + margin-bottom: 88px; +} + +.mb--n22 { + margin-bottom: -88px; +} + +.mb-n23 { + margin-bottom: 92px; +} + +.mb--n23 { + margin-bottom: -92px; +} + +.mb-n24 { + margin-bottom: 96px; +} + +.mb--n24 { + margin-bottom: -96px; +} + +.mb-n25 { + margin-bottom: 100px; +} + +.mb--n25 { + margin-bottom: -100px; +} + +.ml-0 { + margin-left: 0px; +} + +.ml--0 { + margin-left: -0px; +} + +.ml-1 { + margin-left: 1px; +} + +.ml--1 { + margin-left: -1px; +} + +.ml-2 { + margin-left: 2px; +} + +.ml--2 { + margin-left: -2px; +} + +.ml-3 { + margin-left: 3px; +} + +.ml--3 { + margin-left: -3px; +} + +.ml-4 { + margin-left: 4px; +} + +.ml--4 { + margin-left: -4px; +} + +.ml-5 { + margin-left: 5px; +} + +.ml--5 { + margin-left: -5px; +} + +.ml-6 { + margin-left: 6px; +} + +.ml--6 { + margin-left: -6px; +} + +.ml-7 { + margin-left: 7px; +} + +.ml--7 { + margin-left: -7px; +} + +.ml-8 { + margin-left: 8px; +} + +.ml--8 { + margin-left: -8px; +} + +.ml-9 { + margin-left: 9px; +} + +.ml--9 { + margin-left: -9px; +} + +.ml-10 { + margin-left: 10px; +} + +.ml--10 { + margin-left: -10px; +} + +.ml-11 { + margin-left: 11px; +} + +.ml--11 { + margin-left: -11px; +} + +.ml-12 { + margin-left: 12px; +} + +.ml--12 { + margin-left: -12px; +} + +.ml-13 { + margin-left: 13px; +} + +.ml--13 { + margin-left: -13px; +} + +.ml-14 { + margin-left: 14px; +} + +.ml--14 { + margin-left: -14px; +} + +.ml-15 { + margin-left: 15px; +} + +.ml--15 { + margin-left: -15px; +} + +.ml-16 { + margin-left: 16px; +} + +.ml--16 { + margin-left: -16px; +} + +.ml-17 { + margin-left: 17px; +} + +.ml--17 { + margin-left: -17px; +} + +.ml-18 { + margin-left: 18px; +} + +.ml--18 { + margin-left: -18px; +} + +.ml-19 { + margin-left: 19px; +} + +.ml--19 { + margin-left: -19px; +} + +.ml-20 { + margin-left: 20px; +} + +.ml--20 { + margin-left: -20px; +} + +.ml-21 { + margin-left: 21px; +} + +.ml--21 { + margin-left: -21px; +} + +.ml-22 { + margin-left: 22px; +} + +.ml--22 { + margin-left: -22px; +} + +.ml-23 { + margin-left: 23px; +} + +.ml--23 { + margin-left: -23px; +} + +.ml-24 { + margin-left: 24px; +} + +.ml--24 { + margin-left: -24px; +} + +.ml-25 { + margin-left: 25px; +} + +.ml--25 { + margin-left: -25px; +} + +.ml-26 { + margin-left: 26px; +} + +.ml--26 { + margin-left: -26px; +} + +.ml-27 { + margin-left: 27px; +} + +.ml--27 { + margin-left: -27px; +} + +.ml-28 { + margin-left: 28px; +} + +.ml--28 { + margin-left: -28px; +} + +.ml-29 { + margin-left: 29px; +} + +.ml--29 { + margin-left: -29px; +} + +.ml-30 { + margin-left: 30px; +} + +.ml--30 { + margin-left: -30px; +} + +.ml-31 { + margin-left: 31px; +} + +.ml--31 { + margin-left: -31px; +} + +.ml-32 { + margin-left: 32px; +} + +.ml--32 { + margin-left: -32px; +} + +.ml-33 { + margin-left: 33px; +} + +.ml--33 { + margin-left: -33px; +} + +.ml-34 { + margin-left: 34px; +} + +.ml--34 { + margin-left: -34px; +} + +.ml-35 { + margin-left: 35px; +} + +.ml--35 { + margin-left: -35px; +} + +.ml-36 { + margin-left: 36px; +} + +.ml--36 { + margin-left: -36px; +} + +.ml-37 { + margin-left: 37px; +} + +.ml--37 { + margin-left: -37px; +} + +.ml-38 { + margin-left: 38px; +} + +.ml--38 { + margin-left: -38px; +} + +.ml-39 { + margin-left: 39px; +} + +.ml--39 { + margin-left: -39px; +} + +.ml-40 { + margin-left: 40px; +} + +.ml--40 { + margin-left: -40px; +} + +.ml-41 { + margin-left: 41px; +} + +.ml--41 { + margin-left: -41px; +} + +.ml-42 { + margin-left: 42px; +} + +.ml--42 { + margin-left: -42px; +} + +.ml-43 { + margin-left: 43px; +} + +.ml--43 { + margin-left: -43px; +} + +.ml-44 { + margin-left: 44px; +} + +.ml--44 { + margin-left: -44px; +} + +.ml-45 { + margin-left: 45px; +} + +.ml--45 { + margin-left: -45px; +} + +.ml-46 { + margin-left: 46px; +} + +.ml--46 { + margin-left: -46px; +} + +.ml-47 { + margin-left: 47px; +} + +.ml--47 { + margin-left: -47px; +} + +.ml-48 { + margin-left: 48px; +} + +.ml--48 { + margin-left: -48px; +} + +.ml-49 { + margin-left: 49px; +} + +.ml--49 { + margin-left: -49px; +} + +.ml-50 { + margin-left: 50px; +} + +.ml--50 { + margin-left: -50px; +} + +.ml-n1 { + margin-left: 4px; +} + +.ml--n1 { + margin-left: -4px; +} + +.ml-n2 { + margin-left: 8px; +} + +.ml--n2 { + margin-left: -8px; +} + +.ml-n3 { + margin-left: 12px; +} + +.ml--n3 { + margin-left: -12px; +} + +.ml-n4 { + margin-left: 16px; +} + +.ml--n4 { + margin-left: -16px; +} + +.ml-n5 { + margin-left: 20px; +} + +.ml--n5 { + margin-left: -20px; +} + +.ml-n6 { + margin-left: 24px; +} + +.ml--n6 { + margin-left: -24px; +} + +.ml-n7 { + margin-left: 28px; +} + +.ml--n7 { + margin-left: -28px; +} + +.ml-n8 { + margin-left: 32px; +} + +.ml--n8 { + margin-left: -32px; +} + +.ml-n9 { + margin-left: 36px; +} + +.ml--n9 { + margin-left: -36px; +} + +.ml-n10 { + margin-left: 40px; +} + +.ml--n10 { + margin-left: -40px; +} + +.ml-n11 { + margin-left: 44px; +} + +.ml--n11 { + margin-left: -44px; +} + +.ml-n12 { + margin-left: 48px; +} + +.ml--n12 { + margin-left: -48px; +} + +.ml-n13 { + margin-left: 52px; +} + +.ml--n13 { + margin-left: -52px; +} + +.ml-n14 { + margin-left: 56px; +} + +.ml--n14 { + margin-left: -56px; +} + +.ml-n15 { + margin-left: 60px; +} + +.ml--n15 { + margin-left: -60px; +} + +.ml-n16 { + margin-left: 64px; +} + +.ml--n16 { + margin-left: -64px; +} + +.ml-n17 { + margin-left: 68px; +} + +.ml--n17 { + margin-left: -68px; +} + +.ml-n18 { + margin-left: 72px; +} + +.ml--n18 { + margin-left: -72px; +} + +.ml-n19 { + margin-left: 76px; +} + +.ml--n19 { + margin-left: -76px; +} + +.ml-n20 { + margin-left: 80px; +} + +.ml--n20 { + margin-left: -80px; +} + +.ml-n21 { + margin-left: 84px; +} + +.ml--n21 { + margin-left: -84px; +} + +.ml-n22 { + margin-left: 88px; +} + +.ml--n22 { + margin-left: -88px; +} + +.ml-n23 { + margin-left: 92px; +} + +.ml--n23 { + margin-left: -92px; +} + +.ml-n24 { + margin-left: 96px; +} + +.ml--n24 { + margin-left: -96px; +} + +.ml-n25 { + margin-left: 100px; +} + +.ml--n25 { + margin-left: -100px; +} + +.mx-0 { + margin-left: 0px; + margin-right: 0px; +} + +.mx-1 { + margin-left: 1px; + margin-right: 1px; +} + +.mx-2 { + margin-left: 2px; + margin-right: 2px; +} + +.mx-3 { + margin-left: 3px; + margin-right: 3px; +} + +.mx-4 { + margin-left: 4px; + margin-right: 4px; +} + +.mx-5 { + margin-left: 5px; + margin-right: 5px; +} + +.mx-6 { + margin-left: 6px; + margin-right: 6px; +} + +.mx-7 { + margin-left: 7px; + margin-right: 7px; +} + +.mx-8 { + margin-left: 8px; + margin-right: 8px; +} + +.mx-9 { + margin-left: 9px; + margin-right: 9px; +} + +.mx-10 { + margin-left: 10px; + margin-right: 10px; +} + +.mx-11 { + margin-left: 11px; + margin-right: 11px; +} + +.mx-12 { + margin-left: 12px; + margin-right: 12px; +} + +.mx-13 { + margin-left: 13px; + margin-right: 13px; +} + +.mx-14 { + margin-left: 14px; + margin-right: 14px; +} + +.mx-15 { + margin-left: 15px; + margin-right: 15px; +} + +.mx-16 { + margin-left: 16px; + margin-right: 16px; +} + +.mx-17 { + margin-left: 17px; + margin-right: 17px; +} + +.mx-18 { + margin-left: 18px; + margin-right: 18px; +} + +.mx-19 { + margin-left: 19px; + margin-right: 19px; +} + +.mx-20 { + margin-left: 20px; + margin-right: 20px; +} + +.mx-21 { + margin-left: 21px; + margin-right: 21px; +} + +.mx-22 { + margin-left: 22px; + margin-right: 22px; +} + +.mx-23 { + margin-left: 23px; + margin-right: 23px; +} + +.mx-24 { + margin-left: 24px; + margin-right: 24px; +} + +.mx-25 { + margin-left: 25px; + margin-right: 25px; +} + +.mx-26 { + margin-left: 26px; + margin-right: 26px; +} + +.mx-27 { + margin-left: 27px; + margin-right: 27px; +} + +.mx-28 { + margin-left: 28px; + margin-right: 28px; +} + +.mx-29 { + margin-left: 29px; + margin-right: 29px; +} + +.mx-30 { + margin-left: 30px; + margin-right: 30px; +} + +.mx-31 { + margin-left: 31px; + margin-right: 31px; +} + +.mx-32 { + margin-left: 32px; + margin-right: 32px; +} + +.mx-33 { + margin-left: 33px; + margin-right: 33px; +} + +.mx-34 { + margin-left: 34px; + margin-right: 34px; +} + +.mx-35 { + margin-left: 35px; + margin-right: 35px; +} + +.mx-36 { + margin-left: 36px; + margin-right: 36px; +} + +.mx-37 { + margin-left: 37px; + margin-right: 37px; +} + +.mx-38 { + margin-left: 38px; + margin-right: 38px; +} + +.mx-39 { + margin-left: 39px; + margin-right: 39px; +} + +.mx-40 { + margin-left: 40px; + margin-right: 40px; +} + +.mx-41 { + margin-left: 41px; + margin-right: 41px; +} + +.mx-42 { + margin-left: 42px; + margin-right: 42px; +} + +.mx-43 { + margin-left: 43px; + margin-right: 43px; +} + +.mx-44 { + margin-left: 44px; + margin-right: 44px; +} + +.mx-45 { + margin-left: 45px; + margin-right: 45px; +} + +.mx-46 { + margin-left: 46px; + margin-right: 46px; +} + +.mx-47 { + margin-left: 47px; + margin-right: 47px; +} + +.mx-48 { + margin-left: 48px; + margin-right: 48px; +} + +.mx-49 { + margin-left: 49px; + margin-right: 49px; +} + +.mx-50 { + margin-left: 50px; + margin-right: 50px; +} + +.mx-n1 { + margin-left: 4px; + margin-right: 4px; +} + +.mx-n2 { + margin-left: 8px; + margin-right: 8px; +} + +.mx-n3 { + margin-left: 12px; + margin-right: 12px; +} + +.mx-n4 { + margin-left: 16px; + margin-right: 16px; +} + +.mx-n5 { + margin-left: 20px; + margin-right: 20px; +} + +.mx-n6 { + margin-left: 24px; + margin-right: 24px; +} + +.mx-n7 { + margin-left: 28px; + margin-right: 28px; +} + +.mx-n8 { + margin-left: 32px; + margin-right: 32px; +} + +.mx-n9 { + margin-left: 36px; + margin-right: 36px; +} + +.mx-n10 { + margin-left: 40px; + margin-right: 40px; +} + +.mx-n11 { + margin-left: 44px; + margin-right: 44px; +} + +.mx-n12 { + margin-left: 48px; + margin-right: 48px; +} + +.mx-n13 { + margin-left: 52px; + margin-right: 52px; +} + +.mx-n14 { + margin-left: 56px; + margin-right: 56px; +} + +.mx-n15 { + margin-left: 60px; + margin-right: 60px; +} + +.mx-n16 { + margin-left: 64px; + margin-right: 64px; +} + +.mx-n17 { + margin-left: 68px; + margin-right: 68px; +} + +.mx-n18 { + margin-left: 72px; + margin-right: 72px; +} + +.mx-n19 { + margin-left: 76px; + margin-right: 76px; +} + +.mx-n20 { + margin-left: 80px; + margin-right: 80px; +} + +.mx-n21 { + margin-left: 84px; + margin-right: 84px; +} + +.mx-n22 { + margin-left: 88px; + margin-right: 88px; +} + +.mx-n23 { + margin-left: 92px; + margin-right: 92px; +} + +.mx-n24 { + margin-left: 96px; + margin-right: 96px; +} + +.mx-n25 { + margin-left: 100px; + margin-right: 100px; +} + +.my-0 { + margin-top: 0px; + margin-bottom: 0px; +} + +.my-1 { + margin-top: 1px; + margin-bottom: 1px; +} + +.my-2 { + margin-top: 2px; + margin-bottom: 2px; +} + +.my-3 { + margin-top: 3px; + margin-bottom: 3px; +} + +.my-4 { + margin-top: 4px; + margin-bottom: 4px; +} + +.my-5 { + margin-top: 5px; + margin-bottom: 5px; +} + +.my-6 { + margin-top: 6px; + margin-bottom: 6px; +} + +.my-7 { + margin-top: 7px; + margin-bottom: 7px; +} + +.my-8 { + margin-top: 8px; + margin-bottom: 8px; +} + +.my-9 { + margin-top: 9px; + margin-bottom: 9px; +} + +.my-10 { + margin-top: 10px; + margin-bottom: 10px; +} + +.my-11 { + margin-top: 11px; + margin-bottom: 11px; +} + +.my-12 { + margin-top: 12px; + margin-bottom: 12px; +} + +.my-13 { + margin-top: 13px; + margin-bottom: 13px; +} + +.my-14 { + margin-top: 14px; + margin-bottom: 14px; +} + +.my-15 { + margin-top: 15px; + margin-bottom: 15px; +} + +.my-16 { + margin-top: 16px; + margin-bottom: 16px; +} + +.my-17 { + margin-top: 17px; + margin-bottom: 17px; +} + +.my-18 { + margin-top: 18px; + margin-bottom: 18px; +} + +.my-19 { + margin-top: 19px; + margin-bottom: 19px; +} + +.my-20 { + margin-top: 20px; + margin-bottom: 20px; +} + +.my-21 { + margin-top: 21px; + margin-bottom: 21px; +} + +.my-22 { + margin-top: 22px; + margin-bottom: 22px; +} + +.my-23 { + margin-top: 23px; + margin-bottom: 23px; +} + +.my-24 { + margin-top: 24px; + margin-bottom: 24px; +} + +.my-25 { + margin-top: 25px; + margin-bottom: 25px; +} + +.my-26 { + margin-top: 26px; + margin-bottom: 26px; +} + +.my-27 { + margin-top: 27px; + margin-bottom: 27px; +} + +.my-28 { + margin-top: 28px; + margin-bottom: 28px; +} + +.my-29 { + margin-top: 29px; + margin-bottom: 29px; +} + +.my-30 { + margin-top: 30px; + margin-bottom: 30px; +} + +.my-31 { + margin-top: 31px; + margin-bottom: 31px; +} + +.my-32 { + margin-top: 32px; + margin-bottom: 32px; +} + +.my-33 { + margin-top: 33px; + margin-bottom: 33px; +} + +.my-34 { + margin-top: 34px; + margin-bottom: 34px; +} + +.my-35 { + margin-top: 35px; + margin-bottom: 35px; +} + +.my-36 { + margin-top: 36px; + margin-bottom: 36px; +} + +.my-37 { + margin-top: 37px; + margin-bottom: 37px; +} + +.my-38 { + margin-top: 38px; + margin-bottom: 38px; +} + +.my-39 { + margin-top: 39px; + margin-bottom: 39px; +} + +.my-40 { + margin-top: 40px; + margin-bottom: 40px; +} + +.my-41 { + margin-top: 41px; + margin-bottom: 41px; +} + +.my-42 { + margin-top: 42px; + margin-bottom: 42px; +} + +.my-43 { + margin-top: 43px; + margin-bottom: 43px; +} + +.my-44 { + margin-top: 44px; + margin-bottom: 44px; +} + +.my-45 { + margin-top: 45px; + margin-bottom: 45px; +} + +.my-46 { + margin-top: 46px; + margin-bottom: 46px; +} + +.my-47 { + margin-top: 47px; + margin-bottom: 47px; +} + +.my-48 { + margin-top: 48px; + margin-bottom: 48px; +} + +.my-49 { + margin-top: 49px; + margin-bottom: 49px; +} + +.my-50 { + margin-top: 50px; + margin-bottom: 50px; +} + +.my-n1 { + margin-top: 4px; + margin-bottom: 4px; +} + +.my-n2 { + margin-top: 8px; + margin-bottom: 8px; +} + +.my-n3 { + margin-top: 12px; + margin-bottom: 12px; +} + +.my-n4 { + margin-top: 16px; + margin-bottom: 16px; +} + +.my-n5 { + margin-top: 20px; + margin-bottom: 20px; +} + +.my-n6 { + margin-top: 24px; + margin-bottom: 24px; +} + +.my-n7 { + margin-top: 28px; + margin-bottom: 28px; +} + +.my-n8 { + margin-top: 32px; + margin-bottom: 32px; +} + +.my-n9 { + margin-top: 36px; + margin-bottom: 36px; +} + +.my-n10 { + margin-top: 40px; + margin-bottom: 40px; +} + +.my-n11 { + margin-top: 44px; + margin-bottom: 44px; +} + +.my-n12 { + margin-top: 48px; + margin-bottom: 48px; +} + +.my-n13 { + margin-top: 52px; + margin-bottom: 52px; +} + +.my-n14 { + margin-top: 56px; + margin-bottom: 56px; +} + +.my-n15 { + margin-top: 60px; + margin-bottom: 60px; +} + +.my-n16 { + margin-top: 64px; + margin-bottom: 64px; +} + +.my-n17 { + margin-top: 68px; + margin-bottom: 68px; +} + +.my-n18 { + margin-top: 72px; + margin-bottom: 72px; +} + +.my-n19 { + margin-top: 76px; + margin-bottom: 76px; +} + +.my-n20 { + margin-top: 80px; + margin-bottom: 80px; +} + +.my-n21 { + margin-top: 84px; + margin-bottom: 84px; +} + +.my-n22 { + margin-top: 88px; + margin-bottom: 88px; +} + +.my-n23 { + margin-top: 92px; + margin-bottom: 92px; +} + +.my-n24 { + margin-top: 96px; + margin-bottom: 96px; +} + +.my-n25 { + margin-top: 100px; + margin-bottom: 100px; +} + +.t-0 { + top: 0px; +} + +.t--0 { + top: -0px; +} + +.t-1 { + top: 1px; +} + +.t--1 { + top: -1px; +} + +.t-2 { + top: 2px; +} + +.t--2 { + top: -2px; +} + +.t-3 { + top: 3px; +} + +.t--3 { + top: -3px; +} + +.t-4 { + top: 4px; +} + +.t--4 { + top: -4px; +} + +.t-5 { + top: 5px; +} + +.t--5 { + top: -5px; +} + +.t-6 { + top: 6px; +} + +.t--6 { + top: -6px; +} + +.t-7 { + top: 7px; +} + +.t--7 { + top: -7px; +} + +.t-8 { + top: 8px; +} + +.t--8 { + top: -8px; +} + +.t-9 { + top: 9px; +} + +.t--9 { + top: -9px; +} + +.t-10 { + top: 10px; +} + +.t--10 { + top: -10px; +} + +.t-11 { + top: 11px; +} + +.t--11 { + top: -11px; +} + +.t-12 { + top: 12px; +} + +.t--12 { + top: -12px; +} + +.t-13 { + top: 13px; +} + +.t--13 { + top: -13px; +} + +.t-14 { + top: 14px; +} + +.t--14 { + top: -14px; +} + +.t-15 { + top: 15px; +} + +.t--15 { + top: -15px; +} + +.t-16 { + top: 16px; +} + +.t--16 { + top: -16px; +} + +.t-17 { + top: 17px; +} + +.t--17 { + top: -17px; +} + +.t-18 { + top: 18px; +} + +.t--18 { + top: -18px; +} + +.t-19 { + top: 19px; +} + +.t--19 { + top: -19px; +} + +.t-20 { + top: 20px; +} + +.t--20 { + top: -20px; +} + +.t-21 { + top: 21px; +} + +.t--21 { + top: -21px; +} + +.t-22 { + top: 22px; +} + +.t--22 { + top: -22px; +} + +.t-23 { + top: 23px; +} + +.t--23 { + top: -23px; +} + +.t-24 { + top: 24px; +} + +.t--24 { + top: -24px; +} + +.t-25 { + top: 25px; +} + +.t--25 { + top: -25px; +} + +.t-26 { + top: 26px; +} + +.t--26 { + top: -26px; +} + +.t-27 { + top: 27px; +} + +.t--27 { + top: -27px; +} + +.t-28 { + top: 28px; +} + +.t--28 { + top: -28px; +} + +.t-29 { + top: 29px; +} + +.t--29 { + top: -29px; +} + +.t-30 { + top: 30px; +} + +.t--30 { + top: -30px; +} + +.t-31 { + top: 31px; +} + +.t--31 { + top: -31px; +} + +.t-32 { + top: 32px; +} + +.t--32 { + top: -32px; +} + +.t-33 { + top: 33px; +} + +.t--33 { + top: -33px; +} + +.t-34 { + top: 34px; +} + +.t--34 { + top: -34px; +} + +.t-35 { + top: 35px; +} + +.t--35 { + top: -35px; +} + +.t-36 { + top: 36px; +} + +.t--36 { + top: -36px; +} + +.t-37 { + top: 37px; +} + +.t--37 { + top: -37px; +} + +.t-38 { + top: 38px; +} + +.t--38 { + top: -38px; +} + +.t-39 { + top: 39px; +} + +.t--39 { + top: -39px; +} + +.t-40 { + top: 40px; +} + +.t--40 { + top: -40px; +} + +.t-41 { + top: 41px; +} + +.t--41 { + top: -41px; +} + +.t-42 { + top: 42px; +} + +.t--42 { + top: -42px; +} + +.t-43 { + top: 43px; +} + +.t--43 { + top: -43px; +} + +.t-44 { + top: 44px; +} + +.t--44 { + top: -44px; +} + +.t-45 { + top: 45px; +} + +.t--45 { + top: -45px; +} + +.t-46 { + top: 46px; +} + +.t--46 { + top: -46px; +} + +.t-47 { + top: 47px; +} + +.t--47 { + top: -47px; +} + +.t-48 { + top: 48px; +} + +.t--48 { + top: -48px; +} + +.t-49 { + top: 49px; +} + +.t--49 { + top: -49px; +} + +.t-50 { + top: 50px; +} + +.t--50 { + top: -50px; +} + +.t-n1 { + top: 4px; +} + +.t--n1 { + top: -4px; +} + +.t-n2 { + top: 8px; +} + +.t--n2 { + top: -8px; +} + +.t-n3 { + top: 12px; +} + +.t--n3 { + top: -12px; +} + +.t-n4 { + top: 16px; +} + +.t--n4 { + top: -16px; +} + +.t-n5 { + top: 20px; +} + +.t--n5 { + top: -20px; +} + +.t-n6 { + top: 24px; +} + +.t--n6 { + top: -24px; +} + +.t-n7 { + top: 28px; +} + +.t--n7 { + top: -28px; +} + +.t-n8 { + top: 32px; +} + +.t--n8 { + top: -32px; +} + +.t-n9 { + top: 36px; +} + +.t--n9 { + top: -36px; +} + +.t-n10 { + top: 40px; +} + +.t--n10 { + top: -40px; +} + +.t-n11 { + top: 44px; +} + +.t--n11 { + top: -44px; +} + +.t-n12 { + top: 48px; +} + +.t--n12 { + top: -48px; +} + +.t-n13 { + top: 52px; +} + +.t--n13 { + top: -52px; +} + +.t-n14 { + top: 56px; +} + +.t--n14 { + top: -56px; +} + +.t-n15 { + top: 60px; +} + +.t--n15 { + top: -60px; +} + +.t-n16 { + top: 64px; +} + +.t--n16 { + top: -64px; +} + +.t-n17 { + top: 68px; +} + +.t--n17 { + top: -68px; +} + +.t-n18 { + top: 72px; +} + +.t--n18 { + top: -72px; +} + +.t-n19 { + top: 76px; +} + +.t--n19 { + top: -76px; +} + +.t-n20 { + top: 80px; +} + +.t--n20 { + top: -80px; +} + +.t-n21 { + top: 84px; +} + +.t--n21 { + top: -84px; +} + +.t-n22 { + top: 88px; +} + +.t--n22 { + top: -88px; +} + +.t-n23 { + top: 92px; +} + +.t--n23 { + top: -92px; +} + +.t-n24 { + top: 96px; +} + +.t--n24 { + top: -96px; +} + +.t-n25 { + top: 100px; +} + +.t--n25 { + top: -100px; +} + +.r-0 { + right: 0px; +} + +.r--0 { + right: -0px; +} + +.r-1 { + right: 1px; +} + +.r--1 { + right: -1px; +} + +.r-2 { + right: 2px; +} + +.r--2 { + right: -2px; +} + +.r-3 { + right: 3px; +} + +.r--3 { + right: -3px; +} + +.r-4 { + right: 4px; +} + +.r--4 { + right: -4px; +} + +.r-5 { + right: 5px; +} + +.r--5 { + right: -5px; +} + +.r-6 { + right: 6px; +} + +.r--6 { + right: -6px; +} + +.r-7 { + right: 7px; +} + +.r--7 { + right: -7px; +} + +.r-8 { + right: 8px; +} + +.r--8 { + right: -8px; +} + +.r-9 { + right: 9px; +} + +.r--9 { + right: -9px; +} + +.r-10 { + right: 10px; +} + +.r--10 { + right: -10px; +} + +.r-11 { + right: 11px; +} + +.r--11 { + right: -11px; +} + +.r-12 { + right: 12px; +} + +.r--12 { + right: -12px; +} + +.r-13 { + right: 13px; +} + +.r--13 { + right: -13px; +} + +.r-14 { + right: 14px; +} + +.r--14 { + right: -14px; +} + +.r-15 { + right: 15px; +} + +.r--15 { + right: -15px; +} + +.r-16 { + right: 16px; +} + +.r--16 { + right: -16px; +} + +.r-17 { + right: 17px; +} + +.r--17 { + right: -17px; +} + +.r-18 { + right: 18px; +} + +.r--18 { + right: -18px; +} + +.r-19 { + right: 19px; +} + +.r--19 { + right: -19px; +} + +.r-20 { + right: 20px; +} + +.r--20 { + right: -20px; +} + +.r-21 { + right: 21px; +} + +.r--21 { + right: -21px; +} + +.r-22 { + right: 22px; +} + +.r--22 { + right: -22px; +} + +.r-23 { + right: 23px; +} + +.r--23 { + right: -23px; +} + +.r-24 { + right: 24px; +} + +.r--24 { + right: -24px; +} + +.r-25 { + right: 25px; +} + +.r--25 { + right: -25px; +} + +.r-26 { + right: 26px; +} + +.r--26 { + right: -26px; +} + +.r-27 { + right: 27px; +} + +.r--27 { + right: -27px; +} + +.r-28 { + right: 28px; +} + +.r--28 { + right: -28px; +} + +.r-29 { + right: 29px; +} + +.r--29 { + right: -29px; +} + +.r-30 { + right: 30px; +} + +.r--30 { + right: -30px; +} + +.r-31 { + right: 31px; +} + +.r--31 { + right: -31px; +} + +.r-32 { + right: 32px; +} + +.r--32 { + right: -32px; +} + +.r-33 { + right: 33px; +} + +.r--33 { + right: -33px; +} + +.r-34 { + right: 34px; +} + +.r--34 { + right: -34px; +} + +.r-35 { + right: 35px; +} + +.r--35 { + right: -35px; +} + +.r-36 { + right: 36px; +} + +.r--36 { + right: -36px; +} + +.r-37 { + right: 37px; +} + +.r--37 { + right: -37px; +} + +.r-38 { + right: 38px; +} + +.r--38 { + right: -38px; +} + +.r-39 { + right: 39px; +} + +.r--39 { + right: -39px; +} + +.r-40 { + right: 40px; +} + +.r--40 { + right: -40px; +} + +.r-41 { + right: 41px; +} + +.r--41 { + right: -41px; +} + +.r-42 { + right: 42px; +} + +.r--42 { + right: -42px; +} + +.r-43 { + right: 43px; +} + +.r--43 { + right: -43px; +} + +.r-44 { + right: 44px; +} + +.r--44 { + right: -44px; +} + +.r-45 { + right: 45px; +} + +.r--45 { + right: -45px; +} + +.r-46 { + right: 46px; +} + +.r--46 { + right: -46px; +} + +.r-47 { + right: 47px; +} + +.r--47 { + right: -47px; +} + +.r-48 { + right: 48px; +} + +.r--48 { + right: -48px; +} + +.r-49 { + right: 49px; +} + +.r--49 { + right: -49px; +} + +.r-50 { + right: 50px; +} + +.r--50 { + right: -50px; +} + +.r-n1 { + right: 4px; +} + +.r--n1 { + right: -4px; +} + +.r-n2 { + right: 8px; +} + +.r--n2 { + right: -8px; +} + +.r-n3 { + right: 12px; +} + +.r--n3 { + right: -12px; +} + +.r-n4 { + right: 16px; +} + +.r--n4 { + right: -16px; +} + +.r-n5 { + right: 20px; +} + +.r--n5 { + right: -20px; +} + +.r-n6 { + right: 24px; +} + +.r--n6 { + right: -24px; +} + +.r-n7 { + right: 28px; +} + +.r--n7 { + right: -28px; +} + +.r-n8 { + right: 32px; +} + +.r--n8 { + right: -32px; +} + +.r-n9 { + right: 36px; +} + +.r--n9 { + right: -36px; +} + +.r-n10 { + right: 40px; +} + +.r--n10 { + right: -40px; +} + +.r-n11 { + right: 44px; +} + +.r--n11 { + right: -44px; +} + +.r-n12 { + right: 48px; +} + +.r--n12 { + right: -48px; +} + +.r-n13 { + right: 52px; +} + +.r--n13 { + right: -52px; +} + +.r-n14 { + right: 56px; +} + +.r--n14 { + right: -56px; +} + +.r-n15 { + right: 60px; +} + +.r--n15 { + right: -60px; +} + +.r-n16 { + right: 64px; +} + +.r--n16 { + right: -64px; +} + +.r-n17 { + right: 68px; +} + +.r--n17 { + right: -68px; +} + +.r-n18 { + right: 72px; +} + +.r--n18 { + right: -72px; +} + +.r-n19 { + right: 76px; +} + +.r--n19 { + right: -76px; +} + +.r-n20 { + right: 80px; +} + +.r--n20 { + right: -80px; +} + +.r-n21 { + right: 84px; +} + +.r--n21 { + right: -84px; +} + +.r-n22 { + right: 88px; +} + +.r--n22 { + right: -88px; +} + +.r-n23 { + right: 92px; +} + +.r--n23 { + right: -92px; +} + +.r-n24 { + right: 96px; +} + +.r--n24 { + right: -96px; +} + +.r-n25 { + right: 100px; +} + +.r--n25 { + right: -100px; +} + +.b-0 { + bottom: 0px; +} + +.b--0 { + bottom: -0px; +} + +.b-1 { + bottom: 1px; +} + +.b--1 { + bottom: -1px; +} + +.b-2 { + bottom: 2px; +} + +.b--2 { + bottom: -2px; +} + +.b-3 { + bottom: 3px; +} + +.b--3 { + bottom: -3px; +} + +.b-4 { + bottom: 4px; +} + +.b--4 { + bottom: -4px; +} + +.b-5 { + bottom: 5px; +} + +.b--5 { + bottom: -5px; +} + +.b-6 { + bottom: 6px; +} + +.b--6 { + bottom: -6px; +} + +.b-7 { + bottom: 7px; +} + +.b--7 { + bottom: -7px; +} + +.b-8 { + bottom: 8px; +} + +.b--8 { + bottom: -8px; +} + +.b-9 { + bottom: 9px; +} + +.b--9 { + bottom: -9px; +} + +.b-10 { + bottom: 10px; +} + +.b--10 { + bottom: -10px; +} + +.b-11 { + bottom: 11px; +} + +.b--11 { + bottom: -11px; +} + +.b-12 { + bottom: 12px; +} + +.b--12 { + bottom: -12px; +} + +.b-13 { + bottom: 13px; +} + +.b--13 { + bottom: -13px; +} + +.b-14 { + bottom: 14px; +} + +.b--14 { + bottom: -14px; +} + +.b-15 { + bottom: 15px; +} + +.b--15 { + bottom: -15px; +} + +.b-16 { + bottom: 16px; +} + +.b--16 { + bottom: -16px; +} + +.b-17 { + bottom: 17px; +} + +.b--17 { + bottom: -17px; +} + +.b-18 { + bottom: 18px; +} + +.b--18 { + bottom: -18px; +} + +.b-19 { + bottom: 19px; +} + +.b--19 { + bottom: -19px; +} + +.b-20 { + bottom: 20px; +} + +.b--20 { + bottom: -20px; +} + +.b-21 { + bottom: 21px; +} + +.b--21 { + bottom: -21px; +} + +.b-22 { + bottom: 22px; +} + +.b--22 { + bottom: -22px; +} + +.b-23 { + bottom: 23px; +} + +.b--23 { + bottom: -23px; +} + +.b-24 { + bottom: 24px; +} + +.b--24 { + bottom: -24px; +} + +.b-25 { + bottom: 25px; +} + +.b--25 { + bottom: -25px; +} + +.b-26 { + bottom: 26px; +} + +.b--26 { + bottom: -26px; +} + +.b-27 { + bottom: 27px; +} + +.b--27 { + bottom: -27px; +} + +.b-28 { + bottom: 28px; +} + +.b--28 { + bottom: -28px; +} + +.b-29 { + bottom: 29px; +} + +.b--29 { + bottom: -29px; +} + +.b-30 { + bottom: 30px; +} + +.b--30 { + bottom: -30px; +} + +.b-31 { + bottom: 31px; +} + +.b--31 { + bottom: -31px; +} + +.b-32 { + bottom: 32px; +} + +.b--32 { + bottom: -32px; +} + +.b-33 { + bottom: 33px; +} + +.b--33 { + bottom: -33px; +} + +.b-34 { + bottom: 34px; +} + +.b--34 { + bottom: -34px; +} + +.b-35 { + bottom: 35px; +} + +.b--35 { + bottom: -35px; +} + +.b-36 { + bottom: 36px; +} + +.b--36 { + bottom: -36px; +} + +.b-37 { + bottom: 37px; +} + +.b--37 { + bottom: -37px; +} + +.b-38 { + bottom: 38px; +} + +.b--38 { + bottom: -38px; +} + +.b-39 { + bottom: 39px; +} + +.b--39 { + bottom: -39px; +} + +.b-40 { + bottom: 40px; +} + +.b--40 { + bottom: -40px; +} + +.b-41 { + bottom: 41px; +} + +.b--41 { + bottom: -41px; +} + +.b-42 { + bottom: 42px; +} + +.b--42 { + bottom: -42px; +} + +.b-43 { + bottom: 43px; +} + +.b--43 { + bottom: -43px; +} + +.b-44 { + bottom: 44px; +} + +.b--44 { + bottom: -44px; +} + +.b-45 { + bottom: 45px; +} + +.b--45 { + bottom: -45px; +} + +.b-46 { + bottom: 46px; +} + +.b--46 { + bottom: -46px; +} + +.b-47 { + bottom: 47px; +} + +.b--47 { + bottom: -47px; +} + +.b-48 { + bottom: 48px; +} + +.b--48 { + bottom: -48px; +} + +.b-49 { + bottom: 49px; +} + +.b--49 { + bottom: -49px; +} + +.b-50 { + bottom: 50px; +} + +.b--50 { + bottom: -50px; +} + +.b-n1 { + bottom: 4px; +} + +.b--n1 { + bottom: -4px; +} + +.b-n2 { + bottom: 8px; +} + +.b--n2 { + bottom: -8px; +} + +.b-n3 { + bottom: 12px; +} + +.b--n3 { + bottom: -12px; +} + +.b-n4 { + bottom: 16px; +} + +.b--n4 { + bottom: -16px; +} + +.b-n5 { + bottom: 20px; +} + +.b--n5 { + bottom: -20px; +} + +.b-n6 { + bottom: 24px; +} + +.b--n6 { + bottom: -24px; +} + +.b-n7 { + bottom: 28px; +} + +.b--n7 { + bottom: -28px; +} + +.b-n8 { + bottom: 32px; +} + +.b--n8 { + bottom: -32px; +} + +.b-n9 { + bottom: 36px; +} + +.b--n9 { + bottom: -36px; +} + +.b-n10 { + bottom: 40px; +} + +.b--n10 { + bottom: -40px; +} + +.b-n11 { + bottom: 44px; +} + +.b--n11 { + bottom: -44px; +} + +.b-n12 { + bottom: 48px; +} + +.b--n12 { + bottom: -48px; +} + +.b-n13 { + bottom: 52px; +} + +.b--n13 { + bottom: -52px; +} + +.b-n14 { + bottom: 56px; +} + +.b--n14 { + bottom: -56px; +} + +.b-n15 { + bottom: 60px; +} + +.b--n15 { + bottom: -60px; +} + +.b-n16 { + bottom: 64px; +} + +.b--n16 { + bottom: -64px; +} + +.b-n17 { + bottom: 68px; +} + +.b--n17 { + bottom: -68px; +} + +.b-n18 { + bottom: 72px; +} + +.b--n18 { + bottom: -72px; +} + +.b-n19 { + bottom: 76px; +} + +.b--n19 { + bottom: -76px; +} + +.b-n20 { + bottom: 80px; +} + +.b--n20 { + bottom: -80px; +} + +.b-n21 { + bottom: 84px; +} + +.b--n21 { + bottom: -84px; +} + +.b-n22 { + bottom: 88px; +} + +.b--n22 { + bottom: -88px; +} + +.b-n23 { + bottom: 92px; +} + +.b--n23 { + bottom: -92px; +} + +.b-n24 { + bottom: 96px; +} + +.b--n24 { + bottom: -96px; +} + +.b-n25 { + bottom: 100px; +} + +.b--n25 { + bottom: -100px; +} + +.l-0 { + left: 0px; +} + +.l--0 { + left: -0px; +} + +.l-1 { + left: 1px; +} + +.l--1 { + left: -1px; +} + +.l-2 { + left: 2px; +} + +.l--2 { + left: -2px; +} + +.l-3 { + left: 3px; +} + +.l--3 { + left: -3px; +} + +.l-4 { + left: 4px; +} + +.l--4 { + left: -4px; +} + +.l-5 { + left: 5px; +} + +.l--5 { + left: -5px; +} + +.l-6 { + left: 6px; +} + +.l--6 { + left: -6px; +} + +.l-7 { + left: 7px; +} + +.l--7 { + left: -7px; +} + +.l-8 { + left: 8px; +} + +.l--8 { + left: -8px; +} + +.l-9 { + left: 9px; +} + +.l--9 { + left: -9px; +} + +.l-10 { + left: 10px; +} + +.l--10 { + left: -10px; +} + +.l-11 { + left: 11px; +} + +.l--11 { + left: -11px; +} + +.l-12 { + left: 12px; +} + +.l--12 { + left: -12px; +} + +.l-13 { + left: 13px; +} + +.l--13 { + left: -13px; +} + +.l-14 { + left: 14px; +} + +.l--14 { + left: -14px; +} + +.l-15 { + left: 15px; +} + +.l--15 { + left: -15px; +} + +.l-16 { + left: 16px; +} + +.l--16 { + left: -16px; +} + +.l-17 { + left: 17px; +} + +.l--17 { + left: -17px; +} + +.l-18 { + left: 18px; +} + +.l--18 { + left: -18px; +} + +.l-19 { + left: 19px; +} + +.l--19 { + left: -19px; +} + +.l-20 { + left: 20px; +} + +.l--20 { + left: -20px; +} + +.l-21 { + left: 21px; +} + +.l--21 { + left: -21px; +} + +.l-22 { + left: 22px; +} + +.l--22 { + left: -22px; +} + +.l-23 { + left: 23px; +} + +.l--23 { + left: -23px; +} + +.l-24 { + left: 24px; +} + +.l--24 { + left: -24px; +} + +.l-25 { + left: 25px; +} + +.l--25 { + left: -25px; +} + +.l-26 { + left: 26px; +} + +.l--26 { + left: -26px; +} + +.l-27 { + left: 27px; +} + +.l--27 { + left: -27px; +} + +.l-28 { + left: 28px; +} + +.l--28 { + left: -28px; +} + +.l-29 { + left: 29px; +} + +.l--29 { + left: -29px; +} + +.l-30 { + left: 30px; +} + +.l--30 { + left: -30px; +} + +.l-31 { + left: 31px; +} + +.l--31 { + left: -31px; +} + +.l-32 { + left: 32px; +} + +.l--32 { + left: -32px; +} + +.l-33 { + left: 33px; +} + +.l--33 { + left: -33px; +} + +.l-34 { + left: 34px; +} + +.l--34 { + left: -34px; +} + +.l-35 { + left: 35px; +} + +.l--35 { + left: -35px; +} + +.l-36 { + left: 36px; +} + +.l--36 { + left: -36px; +} + +.l-37 { + left: 37px; +} + +.l--37 { + left: -37px; +} + +.l-38 { + left: 38px; +} + +.l--38 { + left: -38px; +} + +.l-39 { + left: 39px; +} + +.l--39 { + left: -39px; +} + +.l-40 { + left: 40px; +} + +.l--40 { + left: -40px; +} + +.l-41 { + left: 41px; +} + +.l--41 { + left: -41px; +} + +.l-42 { + left: 42px; +} + +.l--42 { + left: -42px; +} + +.l-43 { + left: 43px; +} + +.l--43 { + left: -43px; +} + +.l-44 { + left: 44px; +} + +.l--44 { + left: -44px; +} + +.l-45 { + left: 45px; +} + +.l--45 { + left: -45px; +} + +.l-46 { + left: 46px; +} + +.l--46 { + left: -46px; +} + +.l-47 { + left: 47px; +} + +.l--47 { + left: -47px; +} + +.l-48 { + left: 48px; +} + +.l--48 { + left: -48px; +} + +.l-49 { + left: 49px; +} + +.l--49 { + left: -49px; +} + +.l-50 { + left: 50px; +} + +.l--50 { + left: -50px; +} + +.l-n1 { + left: 4px; +} + +.l--n1 { + left: -4px; +} + +.l-n2 { + left: 8px; +} + +.l--n2 { + left: -8px; +} + +.l-n3 { + left: 12px; +} + +.l--n3 { + left: -12px; +} + +.l-n4 { + left: 16px; +} + +.l--n4 { + left: -16px; +} + +.l-n5 { + left: 20px; +} + +.l--n5 { + left: -20px; +} + +.l-n6 { + left: 24px; +} + +.l--n6 { + left: -24px; +} + +.l-n7 { + left: 28px; +} + +.l--n7 { + left: -28px; +} + +.l-n8 { + left: 32px; +} + +.l--n8 { + left: -32px; +} + +.l-n9 { + left: 36px; +} + +.l--n9 { + left: -36px; +} + +.l-n10 { + left: 40px; +} + +.l--n10 { + left: -40px; +} + +.l-n11 { + left: 44px; +} + +.l--n11 { + left: -44px; +} + +.l-n12 { + left: 48px; +} + +.l--n12 { + left: -48px; +} + +.l-n13 { + left: 52px; +} + +.l--n13 { + left: -52px; +} + +.l-n14 { + left: 56px; +} + +.l--n14 { + left: -56px; +} + +.l-n15 { + left: 60px; +} + +.l--n15 { + left: -60px; +} + +.l-n16 { + left: 64px; +} + +.l--n16 { + left: -64px; +} + +.l-n17 { + left: 68px; +} + +.l--n17 { + left: -68px; +} + +.l-n18 { + left: 72px; +} + +.l--n18 { + left: -72px; +} + +.l-n19 { + left: 76px; +} + +.l--n19 { + left: -76px; +} + +.l-n20 { + left: 80px; +} + +.l--n20 { + left: -80px; +} + +.l-n21 { + left: 84px; +} + +.l--n21 { + left: -84px; +} + +.l-n22 { + left: 88px; +} + +.l--n22 { + left: -88px; +} + +.l-n23 { + left: 92px; +} + +.l--n23 { + left: -92px; +} + +.l-n24 { + left: 96px; +} + +.l--n24 { + left: -96px; +} + +.l-n25 { + left: 100px; +} + +.l--n25 { + left: -100px; +} + +.flex { + display: flex !important; +} + +.flex-col { + flex-direction: column !important; + display: flex !important; +} + +.flex-wrap { + flex-flow: row wrap !important; + display: flex !important; +} + +.flex-shrink { + flex-shrink: 0 !important; + display: flex !important; +} + +.flex-row { + flex-direction: row !important; + display: flex !important; +} + +.flex-reverse { + flex-direction: row-reverse !important; + display: flex !important; +} + +.flex-top-center { + justify-content: center !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} + +.flex-top-end { + justify-content: flex-end !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} + +.flex-start { + justify-content: flex-start !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-end { + justify-content: flex-end !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-center { + justify-content: center !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-between { + justify-content: space-between !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-around { + justify-content: space-around !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-end-left { + justify-content: flex-end !important; + align-items: flex-start !important; + align-content: center; + display: flex !important; +} + +.flex-end-center { + justify-content: flex-end !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-end-right { + justify-content: flex-end !important; + align-items: flex-end !important; + align-content: flex-end; + display: flex !important; +} + +.flex-0 { + flex: 0 !important; + flex-grow: 0 !important; +} + +.flex-1 { + flex: 1 !important; + flex-grow: 1 !important; +} + +.flex-2 { + flex: 2 !important; + flex-grow: 2 !important; +} + +.flex-3 { + flex: 3 !important; + flex-grow: 3 !important; +} + +.flex-4 { + flex: 4 !important; + flex-grow: 4 !important; +} + +.flex-5 { + flex: 5 !important; + flex-grow: 5 !important; +} + +.flex-6 { + flex: 6 !important; + flex-grow: 6 !important; +} + +.flex-7 { + flex: 7 !important; + flex-grow: 7 !important; +} + +.flex-8 { + flex: 8 !important; + flex-grow: 8 !important; +} + +.flex-9 { + flex: 9 !important; + flex-grow: 9 !important; +} + +.flex-10 { + flex: 10 !important; + flex-grow: 10 !important; +} + +.flex-11 { + flex: 11 !important; + flex-grow: 11 !important; +} + +.flex-12 { + flex: 12 !important; + flex-grow: 12 !important; +} + +.flex-start-top { + justify-content: flex-start !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} + +.flex-start-center { + justify-content: flex-start !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-start-end { + justify-content: flex-start !important; + align-items: flex-end !important; + align-content: flex-end; + display: flex !important; +} + +.flex-item-top-start { + justify-content: flex-start !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} + +.flex-item-top-center { + justify-content: center !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} + +.flex-item-top-end { + justify-content: flex-end !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} + +.flex-item-center-start { + justify-content: flex-start !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-item-center-center { + justify-content: center !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-item-center-center { + justify-content: flex-end !important; + align-items: center !important; + align-content: center; + display: flex !important; +} + +.flex-item-end-start { + justify-content: flex-start !important; + align-items: flex-end !important; + align-content: center; + display: flex !important; +} + +.flex-item-end-center { + justify-content: center !important; + align-items: flex-end !important; + align-content: center; + display: flex !important; +} + +.flex-item-top-end { + justify-content: flex-end !important; + align-items: flex-end !important; + align-content: center; + display: flex !important; +} + +.text-red { + color: #f44336 !important; +} + +.red { + background-color: #f44336; +} + +.text-pink { + color: #e91e63 !important; +} + +.pink { + background-color: #e91e63; +} + +.text-purple { + color: #9c27b0 !important; +} + +.purple { + background-color: #9c27b0; +} + +.text-deep-purple { + color: #673ab7 !important; +} + +.deep-purple { + background-color: #673ab7; +} + +.text-indigo { + color: #3f51b5 !important; +} + +.indigo { + background-color: #3f51b5; +} + +.text-blue { + color: #2196f3 !important; +} + +.blue { + background-color: #2196f3; +} + +.text-light-blue { + color: #03a9f4 !important; +} + +.light-blue { + background-color: #03a9f4; +} + +.text-cyan { + color: #00bcd4 !important; +} + +.cyan { + background-color: #00bcd4; +} + +.text-teal { + color: #009688 !important; +} + +.teal { + background-color: #009688; +} + +.text-green { + color: #4caf50 !important; +} + +.green { + background-color: #4caf50; +} + +.text-light-green { + color: #8bc34a !important; +} + +.light-green { + background-color: #8bc34a; +} + +.text-lime { + color: #cddc39 !important; +} + +.lime { + background-color: #cddc39; +} + +.text-yellow { + color: #ffeb3b !important; +} + +.yellow { + background-color: #ffeb3b; +} + +.text-amber { + color: #ffc107 !important; +} + +.amber { + background-color: #ffc107; +} + +.text-orange { + color: #ff9800 !important; +} + +.orange { + background-color: #ff9800; +} + +.text-deep-orange { + color: #ff5722 !important; +} + +.deep-orange { + background-color: #ff5722; +} + +.text-brown { + color: #795548 !important; +} + +.brown { + background-color: #795548; +} + +.text-blue-grey { + color: #607d8b !important; +} + +.blue-grey { + background-color: #607d8b; +} + +.text-grey { + color: #9e9e9e !important; +} + +.grey { + background-color: #9e9e9e; +} + +.text-black { + color: #000000 !important; +} + +.black { + background-color: #000000; +} + +.text-white { + color: #ffffff !important; +} + +.white { + background-color: #ffffff; +} + +.text-lighten-5 { + color: #fafafa !important; +} + +.lighten-5 { + background-color: #fafafa; +} + +.text-lighten-4 { + color: #f5f5f5 !important; +} + +.lighten-4 { + background-color: #f5f5f5; +} + +.text-lighten-3 { + color: #eeeeee !important; +} + +.lighten-3 { + background-color: #eeeeee; +} + +.text-lighten-2 { + color: #e0e0e0 !important; +} + +.lighten-2 { + background-color: #e0e0e0; +} + +.text-lighten-1 { + color: #bdbdbd !important; +} + +.lighten-1 { + background-color: #bdbdbd; +} + +.text-darken-1 { + color: #757575 !important; +} + +.darken-1 { + background-color: #757575; +} + +.text-darken-2 { + color: #616161 !important; +} + +.darken-2 { + background-color: #616161; +} + +.text-darken-3 { + color: #424242 !important; +} + +.darken-3 { + background-color: #424242; +} + +.text-darken-4 { + color: #212121 !important; +} + +.darken-4 { + background-color: #212121; +} + +.text-darken-5 { + color: #131313 !important; +} + +.darken-5 { + background-color: #131313; +} + +.text-darken-6 { + color: #0a0a0a !important; +} + +.darken-6 { + background-color: #0a0a0a; +} /*# sourceMappingURL=mainweb.css.map */ diff --git a/uni_modules/UniDevTools/src/tmui/scss/mainweb.css.map b/uni_modules/UniDevTools/src/tmui/scss/mainweb.css.map new file mode 100644 index 0000000..719619b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/mainweb.css.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "sources": [ + "mainweb.scss", + "mainweb.css" + ], + "names": [], + "mappings": "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6BAAA;ACwYF;;ADzYC;EACC,6BAAA;AC4YF;;AD7YC;EACC,6BAAA;ACgZF;;ADjZC;EACC,8BAAA;ACoZF;;ADrZC;EACC,8BAAA;ACwZF;;ADzZC;EACC,8BAAA;AC4ZF;;AD7ZC;EACC,8BAAA;ACgaF;;ADjaC;EACC,8BAAA;ACoaF;;ADraC;EACC,8BAAA;ACwaF;;ADzaC;EACC,8BAAA;AC4aF;;AD7aC;EACC,8BAAA;ACgbF;;ADjbC;EACC,8BAAA;ACobF;;ADrbC;EACC,8BAAA;ACwbF;;ADzbC;EACC,8BAAA;AC4bF;;AD7bC;EACC,8BAAA;ACgcF;;ADjcC;EACC,8BAAA;ACocF;;ADrcC;EACC,8BAAA;ACwcF;;ADzcC;EACC,8BAAA;AC4cF;;AD7cC;EACC,8BAAA;ACgdF;;ADjdC;EACC,8BAAA;ACodF;;AD7cE;EAEE,sCAAA;AC+cJ;;ADjdE;EAEE,sCAAA;ACmdJ;;ADrdE;EAEE,sCAAA;ACudJ;;ADzdE;EAEE,sCAAA;AC2dJ;;AD7dE;EAEE,sCAAA;AC+dJ;;ADjeE;EAEE,sCAAA;ACmeJ;;ADreE;EAEE,sCAAA;ACueJ;;ADzeE;EAEE,sCAAA;AC2eJ;;AD7eE;EAEE,sCAAA;AC+eJ;;ADjfE;EAEE,sCAAA;ACmfJ;;ADrfE;EAEE,uCAAA;ACufJ;;ADzfE;EAEE,uCAAA;AC2fJ;;AD7fE;EAEE,uCAAA;AC+fJ;;ADjgBE;EAEE,uCAAA;ACmgBJ;;ADrgBE;EAEE,uCAAA;ACugBJ;;ADzgBE;EAEE,uCAAA;AC2gBJ;;AD7gBE;EAEE,uCAAA;AC+gBJ;;ADjhBE;EAEE,uCAAA;ACmhBJ;;ADrhBE;EAEE,uCAAA;ACuhBJ;;ADzhBE;EAEE,uCAAA;AC2hBJ;;AD7hBE;EAEE,uCAAA;AC+hBJ;;ADjiBE;EAEE,uCAAA;ACmiBJ;;ADriBE;EAEE,uCAAA;ACuiBJ;;ADziBE;EAEE,uCAAA;AC2iBJ;;AD7iBE;EAEE,uCAAA;AC+iBJ;;ADjjBE;EAEE,uCAAA;ACmjBJ;;ADrjBE;EAEE,uCAAA;ACujBJ;;ADzjBE;EAEE,uCAAA;AC2jBJ;;AD7jBE;EAEE,uCAAA;AC+jBJ;;ADjkBE;EAEE,uCAAA;ACmkBJ;;ADrkBE;EAEE,uCAAA;ACukBJ;;ADzkBE;EAEE,uCAAA;AC2kBJ;;AD7kBE;EAEE,uCAAA;AC+kBJ;;ADjlBE;EAEE,uCAAA;ACmlBJ;;ADrlBE;EAEE,uCAAA;ACulBJ;;ADzlBE;EAEE,uCAAA;AC2lBJ;;AD7lBE;EAEE,uCAAA;AC+lBJ;;ADjmBE;EAEE,uCAAA;ACmmBJ;;ADrmBE;EAEE,uCAAA;ACumBJ;;ADzmBE;EAEE,uCAAA;AC2mBJ;;AD7mBE;EAEE,uCAAA;AC+mBJ;;ADjnBE;EAEE,uCAAA;ACmnBJ;;ADrnBE;EAEE,uCAAA;ACunBJ;;ADznBE;EAEE,uCAAA;AC2nBJ;;AD7nBE;EAEE,uCAAA;AC+nBJ;;ADjoBE;EAEE,uCAAA;ACmoBJ;;ADroBE;EAEE,uCAAA;ACuoBJ;;ADzoBE;EAEE,uCAAA;AC2oBJ;;AD7oBE;EAEE,uCAAA;AC+oBJ;;ADjpBE;EAEE,uCAAA;ACmpBJ;;ADrpBE;EAKE,uCAAA;ACopBJ;;ADzpBE;EAKE,uCAAA;ACwpBJ;;AD7pBE;EAKE,uCAAA;AC4pBJ;;ADjqBE;EAKE,uCAAA;ACgqBJ;;ADrqBE;EAKE,uCAAA;ACoqBJ;;ADzqBE;EAKE,uCAAA;ACwqBJ;;AD7qBE;EAKE,uCAAA;AC4qBJ;;ADjrBE;EAKE,uCAAA;ACgrBJ;;ADrrBE;EAKE,uCAAA;ACorBJ;;ADzrBE;EAKE,uCAAA;ACwrBJ;;AD7rBE;EAKE,wCAAA;AC4rBJ;;ADjsBE;EAKE,wCAAA;ACgsBJ;;ADrsBE;EAKE,wCAAA;ACosBJ;;ADzsBE;EAKE,wCAAA;ACwsBJ;;AD7sBE;EAKE,wCAAA;AC4sBJ;;ADjtBE;EAKE,wCAAA;ACgtBJ;;ADrtBE;EAKE,wCAAA;ACotBJ;;ADztBE;EAKE,wCAAA;ACwtBJ;;AD7tBE;EAKE,wCAAA;AC4tBJ;;ADjuBE;EAKE,wCAAA;ACguBJ;;ADruBE;EAKE,wCAAA;ACouBJ;;ADzuBE;EAKE,wCAAA;ACwuBJ;;AD7uBE;EAKE,wCAAA;AC4uBJ;;ADjvBE;EAKE,wCAAA;ACgvBJ;;ADrvBE;EAKE,wCAAA;ACovBJ;;ADzvBE;EAKE,wCAAA;ACwvBJ;;AD7vBE;EAKE,wCAAA;AC4vBJ;;ADjwBE;EAKE,wCAAA;ACgwBJ;;ADrwBE;EAKE,wCAAA;ACowBJ;;ADzwBE;EAKE,wCAAA;ACwwBJ;;AD7wBE;EAKE,wCAAA;AC4wBJ;;ADjxBE;EAKE,wCAAA;ACgxBJ;;ADrxBE;EAKE,wCAAA;ACoxBJ;;ADzxBE;EAKE,wCAAA;ACwxBJ;;AD7xBE;EAKE,wCAAA;AC4xBJ;;ADjyBE;EAKE,wCAAA;ACgyBJ;;ADryBE;EAKE,wCAAA;ACoyBJ;;ADzyBE;EAKE,wCAAA;ACwyBJ;;AD7yBE;EAKE,wCAAA;AC4yBJ;;ADjzBE;EAKE,wCAAA;ACgzBJ;;ADrzBE;EAKE,wCAAA;ACozBJ;;ADzzBE;EAKE,wCAAA;ACwzBJ;;AD7zBE;EAKE,wCAAA;AC4zBJ;;ADj0BE;EAKE,wCAAA;ACg0BJ;;ADr0BE;EAKE,wCAAA;ACo0BJ;;ADz0BE;EAKE,wCAAA;ACw0BJ;;AD70BE;EAKE,wCAAA;AC40BJ;;ADj1BE;EAKE,wCAAA;ACg1BJ;;ADr1BE;EAKE,wCAAA;ACo1BJ;;ADz1BE;EAKE,wCAAA;ACw1BJ;;AD71BE;EAQE,yCAAA;ACy1BJ;;ADj2BE;EAQE,yCAAA;AC61BJ;;ADr2BE;EAQE,yCAAA;ACi2BJ;;ADz2BE;EAQE,yCAAA;ACq2BJ;;AD72BE;EAQE,yCAAA;ACy2BJ;;ADj3BE;EAQE,yCAAA;AC62BJ;;ADr3BE;EAQE,yCAAA;ACi3BJ;;ADz3BE;EAQE,yCAAA;ACq3BJ;;AD73BE;EAQE,yCAAA;ACy3BJ;;ADj4BE;EAQE,yCAAA;AC63BJ;;ADr4BE;EAQE,0CAAA;ACi4BJ;;ADz4BE;EAQE,0CAAA;ACq4BJ;;AD74BE;EAQE,0CAAA;ACy4BJ;;ADj5BE;EAQE,0CAAA;AC64BJ;;ADr5BE;EAQE,0CAAA;ACi5BJ;;ADz5BE;EAQE,0CAAA;ACq5BJ;;AD75BE;EAQE,0CAAA;ACy5BJ;;ADj6BE;EAQE,0CAAA;AC65BJ;;ADr6BE;EAQE,0CAAA;ACi6BJ;;ADz6BE;EAQE,0CAAA;ACq6BJ;;AD76BE;EAQE,0CAAA;ACy6BJ;;ADj7BE;EAQE,0CAAA;AC66BJ;;ADr7BE;EAQE,0CAAA;ACi7BJ;;ADz7BE;EAQE,0CAAA;ACq7BJ;;AD77BE;EAQE,0CAAA;ACy7BJ;;ADj8BE;EAQE,0CAAA;AC67BJ;;ADr8BE;EAQE,0CAAA;ACi8BJ;;ADz8BE;EAQE,0CAAA;ACq8BJ;;AD78BE;EAQE,0CAAA;ACy8BJ;;ADj9BE;EAQE,0CAAA;AC68BJ;;ADr9BE;EAQE,0CAAA;ACi9BJ;;ADz9BE;EAQE,0CAAA;ACq9BJ;;AD79BE;EAQE,0CAAA;ACy9BJ;;ADj+BE;EAQE,0CAAA;AC69BJ;;ADr+BE;EAQE,0CAAA;ACi+BJ;;ADz+BE;EAQE,0CAAA;ACq+BJ;;AD7+BE;EAQE,0CAAA;ACy+BJ;;ADj/BE;EAQE,0CAAA;AC6+BJ;;ADr/BE;EAQE,0CAAA;ACi/BJ;;ADz/BE;EAQE,0CAAA;ACq/BJ;;AD7/BE;EAQE,0CAAA;ACy/BJ;;ADjgCE;EAQE,0CAAA;AC6/BJ;;ADrgCE;EAQE,0CAAA;ACigCJ;;ADzgCE;EAQE,0CAAA;ACqgCJ;;AD7gCE;EAQE,0CAAA;ACygCJ;;ADjhCE;EAQE,0CAAA;AC6gCJ;;ADrhCE;EAQE,0CAAA;ACihCJ;;ADzhCE;EAQE,0CAAA;ACqhCJ;;AD7hCE;EAQE,0CAAA;ACyhCJ;;ADjiCE;EAQE,0CAAA;AC6hCJ;;ADriCE;EAWE,0CAAA;AC8hCJ;;ADziCE;EAWE,0CAAA;ACkiCJ;;AD7iCE;EAWE,0CAAA;ACsiCJ;;ADjjCE;EAWE,0CAAA;AC0iCJ;;ADrjCE;EAWE,0CAAA;AC8iCJ;;ADzjCE;EAWE,0CAAA;ACkjCJ;;AD7jCE;EAWE,0CAAA;ACsjCJ;;ADjkCE;EAWE,0CAAA;AC0jCJ;;ADrkCE;EAWE,0CAAA;AC8jCJ;;ADzkCE;EAWE,0CAAA;ACkkCJ;;AD7kCE;EAWE,2CAAA;ACskCJ;;ADjlCE;EAWE,2CAAA;AC0kCJ;;ADrlCE;EAWE,2CAAA;AC8kCJ;;ADzlCE;EAWE,2CAAA;ACklCJ;;AD7lCE;EAWE,2CAAA;ACslCJ;;ADjmCE;EAWE,2CAAA;AC0lCJ;;ADrmCE;EAWE,2CAAA;AC8lCJ;;ADzmCE;EAWE,2CAAA;ACkmCJ;;AD7mCE;EAWE,2CAAA;ACsmCJ;;ADjnCE;EAWE,2CAAA;AC0mCJ;;ADrnCE;EAWE,2CAAA;AC8mCJ;;ADznCE;EAWE,2CAAA;ACknCJ;;AD7nCE;EAWE,2CAAA;ACsnCJ;;ADjoCE;EAWE,2CAAA;AC0nCJ;;ADroCE;EAWE,2CAAA;AC8nCJ;;ADzoCE;EAWE,2CAAA;ACkoCJ;;AD7oCE;EAWE,2CAAA;ACsoCJ;;ADjpCE;EAWE,2CAAA;AC0oCJ;;ADrpCE;EAWE,2CAAA;AC8oCJ;;ADzpCE;EAWE,2CAAA;ACkpCJ;;AD7pCE;EAWE,2CAAA;ACspCJ;;ADjqCE;EAWE,2CAAA;AC0pCJ;;ADrqCE;EAWE,2CAAA;AC8pCJ;;ADzqCE;EAWE,2CAAA;ACkqCJ;;AD7qCE;EAWE,2CAAA;ACsqCJ;;ADjrCE;EAWE,2CAAA;AC0qCJ;;ADrrCE;EAWE,2CAAA;AC8qCJ;;ADzrCE;EAWE,2CAAA;ACkrCJ;;AD7rCE;EAWE,2CAAA;ACsrCJ;;ADjsCE;EAWE,2CAAA;AC0rCJ;;ADrsCE;EAWE,2CAAA;AC8rCJ;;ADzsCE;EAWE,2CAAA;ACksCJ;;AD7sCE;EAWE,2CAAA;ACssCJ;;ADjtCE;EAWE,2CAAA;AC0sCJ;;ADrtCE;EAWE,2CAAA;AC8sCJ;;ADztCE;EAWE,2CAAA;ACktCJ;;AD7tCE;EAWE,2CAAA;ACstCJ;;ADjuCE;EAWE,2CAAA;AC0tCJ;;ADruCE;EAWE,2CAAA;AC8tCJ;;ADzuCE;EAWE,2CAAA;ACkuCJ;;AD7uCE;EA8BE,6BAAA;ACmtCJ;;ADjvCE;EA8BE,6BAAA;ACutCJ;;ADrvCE;EA8BE,6BAAA;AC2tCJ;;ADzvCE;EA8BE,6BAAA;AC+tCJ;;AD7vCE;EA8BE,6BAAA;ACmuCJ;;ADjwCE;EA8BE,6BAAA;ACuuCJ;;ADrwCE;EA8BE,6BAAA;AC2uCJ;;ADzwCE;EA8BE,6BAAA;AC+uCJ;;AD7wCE;EA8BE,6BAAA;ACmvCJ;;ADjxCE;EA8BE,6BAAA;ACuvCJ;;ADrxCE;EA8BE,8BAAA;AC2vCJ;;ADzxCE;EA8BE,8BAAA;AC+vCJ;;AD7xCE;EA8BE,8BAAA;ACmwCJ;;ADjyCE;EA8BE,8BAAA;ACuwCJ;;ADryCE;EA8BE,8BAAA;AC2wCJ;;ADzyCE;EA8BE,8BAAA;AC+wCJ;;AD7yCE;EA8BE,8BAAA;ACmxCJ;;ADjzCE;EA8BE,8BAAA;ACuxCJ;;ADrzCE;EA8BE,8BAAA;AC2xCJ;;ADzzCE;EA8BE,8BAAA;AC+xCJ;;AD7zCE;EA8BE,8BAAA;ACmyCJ;;ADj0CE;EA8BE,8BAAA;ACuyCJ;;ADr0CE;EA8BE,8BAAA;AC2yCJ;;ADz0CE;EA8BE,8BAAA;AC+yCJ;;AD70CE;EA8BE,8BAAA;ACmzCJ;;ADj1CE;EA8BE,8BAAA;ACuzCJ;;ADr1CE;EA8BE,8BAAA;AC2zCJ;;ADz1CE;EA8BE,8BAAA;AC+zCJ;;AD71CE;EA8BE,8BAAA;ACm0CJ;;ADj2CE;EA8BE,8BAAA;ACu0CJ;;ADr2CE;EA8BE,8BAAA;AC20CJ;;ADz2CE;EA8BE,8BAAA;AC+0CJ;;AD72CE;EA8BE,8BAAA;ACm1CJ;;ADj3CE;EA8BE,8BAAA;ACu1CJ;;ADr3CE;EA8BE,8BAAA;AC21CJ;;ADz3CE;EA8BE,8BAAA;AC+1CJ;;AD73CE;EA8BE,8BAAA;ACm2CJ;;ADj4CE;EA8BE,8BAAA;ACu2CJ;;ADr4CE;EA8BE,8BAAA;AC22CJ;;ADz4CE;EA8BE,8BAAA;AC+2CJ;;AD74CE;EA8BE,8BAAA;ACm3CJ;;ADj5CE;EA8BE,8BAAA;ACu3CJ;;ADr5CE;EA8BE,8BAAA;AC23CJ;;ADz5CE;EA8BE,8BAAA;AC+3CJ;;AD75CE;EA8BE,8BAAA;ACm4CJ;;ADj6CE;EA8BE,8BAAA;ACu4CJ;;ADr6CE;EA8BE,8BAAA;AC24CJ;;ADz6CE;EA8BE,8BAAA;AC+4CJ;;AD76CE;EA8BE,8BAAA;ACm5CJ;;ADj7CE;EA8BE,8BAAA;ACu5CJ;;ADr7CE;EAcE,sCAAA;EACA,uCAAA;AC26CJ;;AD17CE;EAcE,sCAAA;EACA,uCAAA;ACg7CJ;;AD/7CE;EAcE,sCAAA;EACA,uCAAA;ACq7CJ;;ADp8CE;EAcE,sCAAA;EACA,uCAAA;AC07CJ;;ADz8CE;EAcE,sCAAA;EACA,uCAAA;AC+7CJ;;AD98CE;EAcE,sCAAA;EACA,uCAAA;ACo8CJ;;ADn9CE;EAcE,sCAAA;EACA,uCAAA;ACy8CJ;;ADx9CE;EAcE,sCAAA;EACA,uCAAA;AC88CJ;;AD79CE;EAcE,sCAAA;EACA,uCAAA;ACm9CJ;;ADl+CE;EAcE,sCAAA;EACA,uCAAA;ACw9CJ;;ADv+CE;EAcE,uCAAA;EACA,wCAAA;AC69CJ;;AD5+CE;EAcE,uCAAA;EACA,wCAAA;ACk+CJ;;ADj/CE;EAcE,uCAAA;EACA,wCAAA;ACu+CJ;;ADt/CE;EAcE,uCAAA;EACA,wCAAA;AC4+CJ;;AD3/CE;EAcE,uCAAA;EACA,wCAAA;ACi/CJ;;ADhgDE;EAcE,uCAAA;EACA,wCAAA;ACs/CJ;;ADrgDE;EAcE,uCAAA;EACA,wCAAA;AC2/CJ;;AD1gDE;EAcE,uCAAA;EACA,wCAAA;ACggDJ;;AD/gDE;EAcE,uCAAA;EACA,wCAAA;ACqgDJ;;ADphDE;EAcE,uCAAA;EACA,wCAAA;AC0gDJ;;ADzhDE;EAcE,uCAAA;EACA,wCAAA;AC+gDJ;;AD9hDE;EAcE,uCAAA;EACA,wCAAA;ACohDJ;;ADniDE;EAcE,uCAAA;EACA,wCAAA;ACyhDJ;;ADxiDE;EAcE,uCAAA;EACA,wCAAA;AC8hDJ;;AD7iDE;EAcE,uCAAA;EACA,wCAAA;ACmiDJ;;ADljDE;EAcE,uCAAA;EACA,wCAAA;ACwiDJ;;ADvjDE;EAcE,uCAAA;EACA,wCAAA;AC6iDJ;;AD5jDE;EAcE,uCAAA;EACA,wCAAA;ACkjDJ;;ADjkDE;EAcE,uCAAA;EACA,wCAAA;ACujDJ;;ADtkDE;EAcE,uCAAA;EACA,wCAAA;AC4jDJ;;AD3kDE;EAcE,uCAAA;EACA,wCAAA;ACikDJ;;ADhlDE;EAcE,uCAAA;EACA,wCAAA;ACskDJ;;ADrlDE;EAcE,uCAAA;EACA,wCAAA;AC2kDJ;;AD1lDE;EAcE,uCAAA;EACA,wCAAA;ACglDJ;;AD/lDE;EAcE,uCAAA;EACA,wCAAA;ACqlDJ;;ADpmDE;EAcE,uCAAA;EACA,wCAAA;AC0lDJ;;ADzmDE;EAcE,uCAAA;EACA,wCAAA;AC+lDJ;;AD9mDE;EAcE,uCAAA;EACA,wCAAA;AComDJ;;ADnnDE;EAcE,uCAAA;EACA,wCAAA;ACymDJ;;ADxnDE;EAcE,uCAAA;EACA,wCAAA;AC8mDJ;;AD7nDE;EAcE,uCAAA;EACA,wCAAA;ACmnDJ;;ADloDE;EAcE,uCAAA;EACA,wCAAA;ACwnDJ;;ADvoDE;EAcE,uCAAA;EACA,wCAAA;AC6nDJ;;AD5oDE;EAcE,uCAAA;EACA,wCAAA;ACkoDJ;;ADjpDE;EAcE,uCAAA;EACA,wCAAA;ACuoDJ;;ADtpDE;EAcE,uCAAA;EACA,wCAAA;AC4oDJ;;AD3pDE;EAcE,uCAAA;EACA,wCAAA;ACipDJ;;ADhqDE;EAcE,uCAAA;EACA,wCAAA;ACspDJ;;ADrqDE;EAcE,uCAAA;EACA,wCAAA;AC2pDJ;;AD1qDE;EAcE,uCAAA;EACA,wCAAA;ACgqDJ;;AD/qDE;EAkBE,yCAAA;EACA,0CAAA;ACiqDJ;;ADprDE;EAkBE,yCAAA;EACA,0CAAA;ACsqDJ;;ADzrDE;EAkBE,yCAAA;EACA,0CAAA;AC2qDJ;;AD9rDE;EAkBE,yCAAA;EACA,0CAAA;ACgrDJ;;ADnsDE;EAkBE,yCAAA;EACA,0CAAA;ACqrDJ;;ADxsDE;EAkBE,yCAAA;EACA,0CAAA;AC0rDJ;;AD7sDE;EAkBE,yCAAA;EACA,0CAAA;AC+rDJ;;ADltDE;EAkBE,yCAAA;EACA,0CAAA;ACosDJ;;ADvtDE;EAkBE,yCAAA;EACA,0CAAA;ACysDJ;;AD5tDE;EAkBE,yCAAA;EACA,0CAAA;AC8sDJ;;ADjuDE;EAkBE,0CAAA;EACA,2CAAA;ACmtDJ;;ADtuDE;EAkBE,0CAAA;EACA,2CAAA;ACwtDJ;;AD3uDE;EAkBE,0CAAA;EACA,2CAAA;AC6tDJ;;ADhvDE;EAkBE,0CAAA;EACA,2CAAA;ACkuDJ;;ADrvDE;EAkBE,0CAAA;EACA,2CAAA;ACuuDJ;;AD1vDE;EAkBE,0CAAA;EACA,2CAAA;AC4uDJ;;AD/vDE;EAkBE,0CAAA;EACA,2CAAA;ACivDJ;;ADpwDE;EAkBE,0CAAA;EACA,2CAAA;ACsvDJ;;ADzwDE;EAkBE,0CAAA;EACA,2CAAA;AC2vDJ;;AD9wDE;EAkBE,0CAAA;EACA,2CAAA;ACgwDJ;;ADnxDE;EAkBE,0CAAA;EACA,2CAAA;ACqwDJ;;ADxxDE;EAkBE,0CAAA;EACA,2CAAA;AC0wDJ;;AD7xDE;EAkBE,0CAAA;EACA,2CAAA;AC+wDJ;;ADlyDE;EAkBE,0CAAA;EACA,2CAAA;ACoxDJ;;ADvyDE;EAkBE,0CAAA;EACA,2CAAA;ACyxDJ;;AD5yDE;EAkBE,0CAAA;EACA,2CAAA;AC8xDJ;;ADjzDE;EAkBE,0CAAA;EACA,2CAAA;ACmyDJ;;ADtzDE;EAkBE,0CAAA;EACA,2CAAA;ACwyDJ;;AD3zDE;EAkBE,0CAAA;EACA,2CAAA;AC6yDJ;;ADh0DE;EAkBE,0CAAA;EACA,2CAAA;ACkzDJ;;ADr0DE;EAkBE,0CAAA;EACA,2CAAA;ACuzDJ;;AD10DE;EAkBE,0CAAA;EACA,2CAAA;AC4zDJ;;AD/0DE;EAkBE,0CAAA;EACA,2CAAA;ACi0DJ;;ADp1DE;EAkBE,0CAAA;EACA,2CAAA;ACs0DJ;;ADz1DE;EAkBE,0CAAA;EACA,2CAAA;AC20DJ;;AD91DE;EAkBE,0CAAA;EACA,2CAAA;ACg1DJ;;ADn2DE;EAkBE,0CAAA;EACA,2CAAA;ACq1DJ;;ADx2DE;EAkBE,0CAAA;EACA,2CAAA;AC01DJ;;AD72DE;EAkBE,0CAAA;EACA,2CAAA;AC+1DJ;;ADl3DE;EAkBE,0CAAA;EACA,2CAAA;ACo2DJ;;ADv3DE;EAkBE,0CAAA;EACA,2CAAA;ACy2DJ;;AD53DE;EAkBE,0CAAA;EACA,2CAAA;AC82DJ;;ADj4DE;EAkBE,0CAAA;EACA,2CAAA;ACm3DJ;;ADt4DE;EAkBE,0CAAA;EACA,2CAAA;ACw3DJ;;AD34DE;EAkBE,0CAAA;EACA,2CAAA;AC63DJ;;ADh5DE;EAkBE,0CAAA;EACA,2CAAA;ACk4DJ;;ADr5DE;EAkBE,0CAAA;EACA,2CAAA;ACu4DJ;;AD15DE;EAkBE,0CAAA;EACA,2CAAA;AC44DJ;;AD/5DE;EAkBE,0CAAA;EACA,2CAAA;ACi5DJ;;ADp6DE;EAkBE,0CAAA;EACA,2CAAA;ACs5DJ;;ADz6DE;EAsBE,sCAAA;EACA,yCAAA;ACu5DJ;;AD96DE;EAsBE,sCAAA;EACA,yCAAA;AC45DJ;;ADn7DE;EAsBE,sCAAA;EACA,yCAAA;ACi6DJ;;ADx7DE;EAsBE,sCAAA;EACA,yCAAA;ACs6DJ;;AD77DE;EAsBE,sCAAA;EACA,yCAAA;AC26DJ;;ADl8DE;EAsBE,sCAAA;EACA,yCAAA;ACg7DJ;;ADv8DE;EAsBE,sCAAA;EACA,yCAAA;ACq7DJ;;AD58DE;EAsBE,sCAAA;EACA,yCAAA;AC07DJ;;ADj9DE;EAsBE,sCAAA;EACA,yCAAA;AC+7DJ;;ADt9DE;EAsBE,sCAAA;EACA,yCAAA;ACo8DJ;;AD39DE;EAsBE,uCAAA;EACA,0CAAA;ACy8DJ;;ADh+DE;EAsBE,uCAAA;EACA,0CAAA;AC88DJ;;ADr+DE;EAsBE,uCAAA;EACA,0CAAA;ACm9DJ;;AD1+DE;EAsBE,uCAAA;EACA,0CAAA;ACw9DJ;;AD/+DE;EAsBE,uCAAA;EACA,0CAAA;AC69DJ;;ADp/DE;EAsBE,uCAAA;EACA,0CAAA;ACk+DJ;;ADz/DE;EAsBE,uCAAA;EACA,0CAAA;ACu+DJ;;AD9/DE;EAsBE,uCAAA;EACA,0CAAA;AC4+DJ;;ADngEE;EAsBE,uCAAA;EACA,0CAAA;ACi/DJ;;ADxgEE;EAsBE,uCAAA;EACA,0CAAA;ACs/DJ;;AD7gEE;EAsBE,uCAAA;EACA,0CAAA;AC2/DJ;;ADlhEE;EAsBE,uCAAA;EACA,0CAAA;ACggEJ;;ADvhEE;EAsBE,uCAAA;EACA,0CAAA;ACqgEJ;;AD5hEE;EAsBE,uCAAA;EACA,0CAAA;AC0gEJ;;ADjiEE;EAsBE,uCAAA;EACA,0CAAA;AC+gEJ;;ADtiEE;EAsBE,uCAAA;EACA,0CAAA;ACohEJ;;AD3iEE;EAsBE,uCAAA;EACA,0CAAA;ACyhEJ;;ADhjEE;EAsBE,uCAAA;EACA,0CAAA;AC8hEJ;;ADrjEE;EAsBE,uCAAA;EACA,0CAAA;ACmiEJ;;AD1jEE;EAsBE,uCAAA;EACA,0CAAA;ACwiEJ;;AD/jEE;EAsBE,uCAAA;EACA,0CAAA;AC6iEJ;;ADpkEE;EAsBE,uCAAA;EACA,0CAAA;ACkjEJ;;ADzkEE;EAsBE,uCAAA;EACA,0CAAA;ACujEJ;;AD9kEE;EAsBE,uCAAA;EACA,0CAAA;AC4jEJ;;ADnlEE;EAsBE,uCAAA;EACA,0CAAA;ACikEJ;;ADxlEE;EAsBE,uCAAA;EACA,0CAAA;ACskEJ;;AD7lEE;EAsBE,uCAAA;EACA,0CAAA;AC2kEJ;;ADlmEE;EAsBE,uCAAA;EACA,0CAAA;ACglEJ;;ADvmEE;EAsBE,uCAAA;EACA,0CAAA;ACqlEJ;;AD5mEE;EAsBE,uCAAA;EACA,0CAAA;AC0lEJ;;ADjnEE;EAsBE,uCAAA;EACA,0CAAA;AC+lEJ;;ADtnEE;EAsBE,uCAAA;EACA,0CAAA;AComEJ;;AD3nEE;EAsBE,uCAAA;EACA,0CAAA;ACymEJ;;ADhoEE;EAsBE,uCAAA;EACA,0CAAA;AC8mEJ;;ADroEE;EAsBE,uCAAA;EACA,0CAAA;ACmnEJ;;AD1oEE;EAsBE,uCAAA;EACA,0CAAA;ACwnEJ;;AD/oEE;EAsBE,uCAAA;EACA,0CAAA;AC6nEJ;;ADppEE;EAsBE,uCAAA;EACA,0CAAA;ACkoEJ;;ADzpEE;EAsBE,uCAAA;EACA,0CAAA;ACuoEJ;;AD9pEE;EAsBE,uCAAA;EACA,0CAAA;AC4oEJ;;ADnqEE;EA0BE,uCAAA;EACA,0CAAA;AC6oEJ;;ADxqEE;EA0BE,uCAAA;EACA,0CAAA;ACkpEJ;;AD7qEE;EA0BE,uCAAA;EACA,0CAAA;ACupEJ;;ADlrEE;EA0BE,uCAAA;EACA,0CAAA;AC4pEJ;;ADvrEE;EA0BE,uCAAA;EACA,0CAAA;ACiqEJ;;AD5rEE;EA0BE,uCAAA;EACA,0CAAA;ACsqEJ;;ADjsEE;EA0BE,uCAAA;EACA,0CAAA;AC2qEJ;;ADtsEE;EA0BE,uCAAA;EACA,0CAAA;ACgrEJ;;AD3sEE;EA0BE,uCAAA;EACA,0CAAA;ACqrEJ;;ADhtEE;EA0BE,uCAAA;EACA,0CAAA;AC0rEJ;;ADrtEE;EA0BE,wCAAA;EACA,2CAAA;AC+rEJ;;AD1tEE;EA0BE,wCAAA;EACA,2CAAA;ACosEJ;;AD/tEE;EA0BE,wCAAA;EACA,2CAAA;ACysEJ;;ADpuEE;EA0BE,wCAAA;EACA,2CAAA;AC8sEJ;;ADzuEE;EA0BE,wCAAA;EACA,2CAAA;ACmtEJ;;AD9uEE;EA0BE,wCAAA;EACA,2CAAA;ACwtEJ;;ADnvEE;EA0BE,wCAAA;EACA,2CAAA;AC6tEJ;;ADxvEE;EA0BE,wCAAA;EACA,2CAAA;ACkuEJ;;AD7vEE;EA0BE,wCAAA;EACA,2CAAA;ACuuEJ;;ADlwEE;EA0BE,wCAAA;EACA,2CAAA;AC4uEJ;;ADvwEE;EA0BE,wCAAA;EACA,2CAAA;ACivEJ;;AD5wEE;EA0BE,wCAAA;EACA,2CAAA;ACsvEJ;;ADjxEE;EA0BE,wCAAA;EACA,2CAAA;AC2vEJ;;ADtxEE;EA0BE,wCAAA;EACA,2CAAA;ACgwEJ;;AD3xEE;EA0BE,wCAAA;EACA,2CAAA;ACqwEJ;;ADhyEE;EA0BE,wCAAA;EACA,2CAAA;AC0wEJ;;ADryEE;EA0BE,wCAAA;EACA,2CAAA;AC+wEJ;;AD1yEE;EA0BE,wCAAA;EACA,2CAAA;ACoxEJ;;AD/yEE;EA0BE,wCAAA;EACA,2CAAA;ACyxEJ;;ADpzEE;EA0BE,wCAAA;EACA,2CAAA;AC8xEJ;;ADzzEE;EA0BE,wCAAA;EACA,2CAAA;ACmyEJ;;AD9zEE;EA0BE,wCAAA;EACA,2CAAA;ACwyEJ;;ADn0EE;EA0BE,wCAAA;EACA,2CAAA;AC6yEJ;;ADx0EE;EA0BE,wCAAA;EACA,2CAAA;ACkzEJ;;AD70EE;EA0BE,wCAAA;EACA,2CAAA;ACuzEJ;;ADl1EE;EA0BE,wCAAA;EACA,2CAAA;AC4zEJ;;ADv1EE;EA0BE,wCAAA;EACA,2CAAA;ACi0EJ;;AD51EE;EA0BE,wCAAA;EACA,2CAAA;ACs0EJ;;ADj2EE;EA0BE,wCAAA;EACA,2CAAA;AC20EJ;;ADt2EE;EA0BE,wCAAA;EACA,2CAAA;ACg1EJ;;AD32EE;EA0BE,wCAAA;EACA,2CAAA;ACq1EJ;;ADh3EE;EA0BE,wCAAA;EACA,2CAAA;AC01EJ;;ADr3EE;EA0BE,wCAAA;EACA,2CAAA;AC+1EJ;;AD13EE;EA0BE,wCAAA;EACA,2CAAA;ACo2EJ;;AD/3EE;EA0BE,wCAAA;EACA,2CAAA;ACy2EJ;;ADp4EE;EA0BE,wCAAA;EACA,2CAAA;AC82EJ;;ADz4EE;EA0BE,wCAAA;EACA,2CAAA;ACm3EJ;;AD94EE;EA0BE,wCAAA;EACA,2CAAA;ACw3EJ;;ADn5EE;EA0BE,wCAAA;EACA,2CAAA;AC63EJ;;ADx5EE;EA0BE,wCAAA;EACA,2CAAA;ACk4EJ;;ADz3EA;EACC,6BAAA;AC43ED;;ADx3EC;EAKE,UAAA;ACu3EH;;AD53EC;EAEE,YAAA;AC83EH;;ADh4EC;EAEE,YAAA;ACk4EH;;ADp4EC;EAEE,YAAA;ACs4EH;;ADx4EC;EAEE,YAAA;AC04EH;;AD54EC;EAEE,YAAA;AC84EH;;ADh5EC;EAEE,YAAA;ACk5EH;;ADp5EC;EAEE,YAAA;ACs5EH;;ADx5EC;EAEE,YAAA;AC05EH;;AD55EC;EAEE,YAAA;AC85EH;;ADh6EC;EAQE,UAAA;AC45EH;;ADt5EA;EACC,yCAAA;ACy5ED;;ADt5EC;EACC,yCAAA;ACy5EF;;AD15EC;EACC,yCAAA;AC65EF;;AD95EC;EACC,yCAAA;ACi6EF;;ADl6EC;EACC,yCAAA;ACq6EF;;ADt6EC;EACC,yCAAA;ACy6EF;;AD16EC;EACC,0CAAA;AC66EF;;AD96EC;EACC,0CAAA;ACi7EF;;ADl7EC;EACC,0CAAA;ACq7EF;;ADt7EC;EACC,0CAAA;ACy7EF;;AD17EC;EACC,0CAAA;AC67EF;;AD97EC;EACC,2CAAA;ACi8EF;;ADl8EC;EACC,2CAAA;ACq8EF;;ADt8EC;EACC,2CAAA;ACy8EF;;AD18EC;EACC,2CAAA;AC68EF;;AD98EC;EACC,2CAAA;ACi9EF;;ADl9EC;EACC,2CAAA;ACq9EF;;ADt9EC;EACC,2CAAA;ACy9EF;;AD19EC;EACC,2CAAA;AC69EF;;AD99EC;EACC,2CAAA;ACi+EF;;ADl+EC;EACC,2CAAA;ACq+EF;;ADt+EC;EACC,2CAAA;ACy+EF;;AD1+EC;EACC,2CAAA;AC6+EF;;AD9+EC;EACC,2CAAA;ACi/EF;;ADl/EC;EACC,2CAAA;ACq/EF;;ADt/EC;EACC,2CAAA;ACy/EF;;AD1/EC;EACC,2CAAA;AC6/EF;;ADr/EE;EACC,oCAAA;ACw/EH;;ADt/EE;EACC,oCAAA;ACy/EH;;ADv/EE;EACC,oCAAA;AC0/EH;;ADx/EE;EACC,oCAAA;AC2/EH;;ADv/EE;EACC,oCAAA;AC0/EH;;ADx/EE;EACC,oCAAA;AC2/EH;;AD//EE;EACC,oCAAA;ACkgFH;;ADhgFE;EACC,oCAAA;ACmgFH;;ADvgFE;EACC,oCAAA;AC0gFH;;ADxgFE;EACC,oCAAA;AC2gFH;;AD/gFE;EACC,oCAAA;ACkhFH;;ADhhFE;EACC,oCAAA;ACmhFH;;ADvhFE;EACC,oCAAA;AC0hFH;;ADxhFE;EACC,oCAAA;AC2hFH;;ADphFE;EAKE,4CAAA;ACmhFJ;;ADhhFE;EAKE,yCAAA;AC+gFJ;;AD5hFE;EAKE,4CAAA;AC2hFJ;;ADxhFE;EAKE,yCAAA;ACuhFJ;;ADpiFE;EAKE,4CAAA;ACmiFJ;;ADhiFE;EAKE,yCAAA;AC+hFJ;;AD5iFE;EAKE,4CAAA;AC2iFJ;;ADxiFE;EAKE,yCAAA;ACuiFJ;;ADpjFE;EAKE,4CAAA;ACmjFJ;;ADhjFE;EAKE,yCAAA;AC+iFJ;;AD5jFE;EAKE,6CAAA;AC2jFJ;;ADxjFE;EAKE,0CAAA;ACujFJ;;ADpkFE;EAKE,6CAAA;ACmkFJ;;ADhkFE;EAKE,0CAAA;AC+jFJ;;AD5kFE;EAKE,6CAAA;AC2kFJ;;ADxkFE;EAKE,0CAAA;ACukFJ;;ADplFE;EAKE,6CAAA;ACmlFJ;;ADhlFE;EAKE,0CAAA;AC+kFJ;;AD5lFE;EAKE,6CAAA;AC2lFJ;;ADxlFE;EAKE,0CAAA;ACulFJ;;ADpmFE;EAKE,2CAAA;ACmmFJ;;ADhmFE;EAKE,wCAAA;AC+lFJ;;AD5mFE;EAKE,2CAAA;AC2mFJ;;ADxmFE;EAKE,wCAAA;ACumFJ;;ADpnFE;EAKE,2CAAA;ACmnFJ;;ADhnFE;EAKE,wCAAA;AC+mFJ;;AD5nFE;EAKE,2CAAA;AC2nFJ;;ADxnFE;EAKE,wCAAA;ACunFJ;;ADpoFE;EAKE,2CAAA;ACmoFJ;;ADhoFE;EAKE,wCAAA;AC+nFJ;;AD5oFE;EAKE,8CAAA;AC2oFJ;;ADxoFE;EAKE,2CAAA;ACuoFJ;;ADppFE;EAKE,8CAAA;ACmpFJ;;ADhpFE;EAKE,2CAAA;AC+oFJ;;AD5pFE;EAKE,8CAAA;AC2pFJ;;ADxpFE;EAKE,2CAAA;ACupFJ;;ADpqFE;EAKE,8CAAA;ACmqFJ;;ADhqFE;EAKE,2CAAA;AC+pFJ;;AD5qFE;EAKE,8CAAA;AC2qFJ;;ADxqFE;EAKE,2CAAA;ACuqFJ;;ADprFE;EAEE,uCAAA;ACsrFJ;;ADhrFE;EAEE,oCAAA;ACkrFJ;;AD5rFE;EAEE,uCAAA;AC8rFJ;;ADxrFE;EAEE,oCAAA;AC0rFJ;;ADpsFE;EAEE,uCAAA;ACssFJ;;ADhsFE;EAEE,oCAAA;ACksFJ;;AD5sFE;EAEE,uCAAA;AC8sFJ;;ADxsFE;EAEE,oCAAA;AC0sFJ;;ADptFE;EAEE,uCAAA;ACstFJ;;ADhtFE;EAEE,oCAAA;ACktFJ;;ADrsFG;EACC,YAAA;ACwsFJ;;ADzsFG;EACC,YAAA;AC4sFJ;;AD7sFG;EACC,YAAA;ACgtFJ;;ADjtFG;EACC,YAAA;ACotFJ;;ADrtFG;EACC,YAAA;ACwtFJ;;ADztFG;EACC,YAAA;AC4tFJ;;AD7tFG;EACC,YAAA;ACguFJ;;ADjuFG;EACC,YAAA;ACouFJ;;ADruFG;EACC,YAAA;ACwuFJ;;ADzuFG;EACC,YAAA;AC4uFJ;;AD7uFG;EACC,aAAA;ACgvFJ;;ADjvFG;EACC,aAAA;ACovFJ;;ADrvFG;EACC,aAAA;ACwvFJ;;ADzvFG;EACC,aAAA;AC4vFJ;;AD7vFG;EACC,aAAA;ACgwFJ;;ADjwFG;EACC,aAAA;ACowFJ;;ADrwFG;EACC,aAAA;ACwwFJ;;ADzwFG;EACC,aAAA;AC4wFJ;;AD7wFG;EACC,aAAA;ACgxFJ;;ADjxFG;EACC,aAAA;ACoxFJ;;ADrxFG;EACC,aAAA;ACwxFJ;;ADzxFG;EACC,aAAA;AC4xFJ;;AD7xFG;EACC,aAAA;ACgyFJ;;ADjyFG;EACC,aAAA;ACoyFJ;;ADryFG;EACC,aAAA;ACwyFJ;;ADzyFG;EACC,aAAA;AC4yFJ;;AD7yFG;EACC,aAAA;ACgzFJ;;ADjzFG;EACC,aAAA;ACozFJ;;ADrzFG;EACC,aAAA;ACwzFJ;;ADzzFG;EACC,aAAA;AC4zFJ;;AD7zFG;EACC,aAAA;ACg0FJ;;ADj0FG;EACC,aAAA;ACo0FJ;;ADr0FG;EACC,aAAA;ACw0FJ;;ADz0FG;EACC,aAAA;AC40FJ;;AD70FG;EACC,aAAA;ACg1FJ;;ADj1FG;EACC,aAAA;ACo1FJ;;ADr1FG;EACC,aAAA;ACw1FJ;;ADz1FG;EACC,aAAA;AC41FJ;;AD71FG;EACC,aAAA;ACg2FJ;;ADj2FG;EACC,aAAA;ACo2FJ;;ADr2FG;EACC,aAAA;ACw2FJ;;ADz2FG;EACC,aAAA;AC42FJ;;AD72FG;EACC,aAAA;ACg3FJ;;ADj3FG;EACC,aAAA;ACo3FJ;;ADr3FG;EACC,aAAA;ACw3FJ;;ADz3FG;EACC,aAAA;AC43FJ;;AD73FG;EACC,aAAA;ACg4FJ;;ADj4FG;EACC,aAAA;ACo4FJ;;ADr4FG;EACC,aAAA;ACw4FJ;;ADz4FG;EACC,aAAA;AC44FJ;;AD74FG;EACC,aAAA;ACg5FJ;;AD93FG;EACC,YAAA;ACi4FJ;;ADl4FG;EACC,YAAA;ACq4FJ;;ADt4FG;EACC,aAAA;ACy4FJ;;AD14FG;EACC,aAAA;AC64FJ;;AD94FG;EACC,aAAA;ACi5FJ;;ADl5FG;EACC,aAAA;ACq5FJ;;ADt5FG;EACC,aAAA;ACy5FJ;;AD15FG;EACC,aAAA;AC65FJ;;AD95FG;EACC,aAAA;ACi6FJ;;ADl6FG;EACC,aAAA;ACq6FJ;;ADt6FG;EACC,aAAA;ACy6FJ;;AD16FG;EACC,aAAA;AC66FJ;;AD96FG;EACC,aAAA;ACi7FJ;;ADl7FG;EACC,aAAA;ACq7FJ;;ADt7FG;EACC,aAAA;ACy7FJ;;AD17FG;EACC,aAAA;AC67FJ;;AD97FG;EACC,aAAA;ACi8FJ;;ADl8FG;EACC,aAAA;ACq8FJ;;ADt8FG;EACC,aAAA;ACy8FJ;;AD18FG;EACC,aAAA;AC68FJ;;AD98FG;EACC,aAAA;ACi9FJ;;ADl9FG;EACC,aAAA;ACq9FJ;;ADt9FG;EACC,aAAA;ACy9FJ;;AD19FG;EACC,aAAA;AC69FJ;;AD99FG;EACC,cAAA;ACi+FJ;;ADr/FG;EACC,gBAAA;ACw/FJ;;ADz/FG;EACC,gBAAA;AC4/FJ;;AD7/FG;EACC,gBAAA;ACggGJ;;ADjgGG;EACC,gBAAA;ACogGJ;;ADrgGG;EACC,gBAAA;ACwgGJ;;ADzgGG;EACC,gBAAA;AC4gGJ;;AD7gGG;EACC,gBAAA;ACghGJ;;ADjhGG;EACC,gBAAA;ACohGJ;;ADrhGG;EACC,gBAAA;ACwhGJ;;ADzhGG;EACC,gBAAA;AC4hGJ;;AD7hGG;EACC,iBAAA;ACgiGJ;;ADjiGG;EACC,iBAAA;ACoiGJ;;ADriGG;EACC,iBAAA;ACwiGJ;;ADziGG;EACC,iBAAA;AC4iGJ;;AD7iGG;EACC,iBAAA;ACgjGJ;;ADjjGG;EACC,iBAAA;ACojGJ;;ADrjGG;EACC,iBAAA;ACwjGJ;;ADzjGG;EACC,iBAAA;AC4jGJ;;AD7jGG;EACC,iBAAA;ACgkGJ;;ADjkGG;EACC,iBAAA;ACokGJ;;ADrkGG;EACC,iBAAA;ACwkGJ;;ADzkGG;EACC,iBAAA;AC4kGJ;;AD7kGG;EACC,iBAAA;ACglGJ;;ADjlGG;EACC,iBAAA;AColGJ;;ADrlGG;EACC,iBAAA;ACwlGJ;;ADzlGG;EACC,iBAAA;AC4lGJ;;AD7lGG;EACC,iBAAA;ACgmGJ;;ADjmGG;EACC,iBAAA;AComGJ;;ADrmGG;EACC,iBAAA;ACwmGJ;;ADzmGG;EACC,iBAAA;AC4mGJ;;AD7mGG;EACC,iBAAA;ACgnGJ;;ADjnGG;EACC,iBAAA;AConGJ;;ADrnGG;EACC,iBAAA;ACwnGJ;;ADznGG;EACC,iBAAA;AC4nGJ;;AD7nGG;EACC,iBAAA;ACgoGJ;;ADjoGG;EACC,iBAAA;ACooGJ;;ADroGG;EACC,iBAAA;ACwoGJ;;ADzoGG;EACC,iBAAA;AC4oGJ;;AD7oGG;EACC,iBAAA;ACgpGJ;;ADjpGG;EACC,iBAAA;ACopGJ;;ADrpGG;EACC,iBAAA;ACwpGJ;;ADzpGG;EACC,iBAAA;AC4pGJ;;AD7pGG;EACC,iBAAA;ACgqGJ;;ADjqGG;EACC,iBAAA;ACoqGJ;;ADrqGG;EACC,iBAAA;ACwqGJ;;ADzqGG;EACC,iBAAA;AC4qGJ;;AD7qGG;EACC,iBAAA;ACgrGJ;;ADjrGG;EACC,iBAAA;ACorGJ;;ADrrGG;EACC,iBAAA;ACwrGJ;;ADzrGG;EACC,iBAAA;AC4rGJ;;AD7rGG;EACC,iBAAA;ACgsGJ;;AD9qGG;EACC,gBAAA;ACirGJ;;ADlrGG;EACC,gBAAA;ACqrGJ;;ADtrGG;EACC,iBAAA;ACyrGJ;;AD1rGG;EACC,iBAAA;AC6rGJ;;AD9rGG;EACC,iBAAA;ACisGJ;;ADlsGG;EACC,iBAAA;ACqsGJ;;ADtsGG;EACC,iBAAA;ACysGJ;;AD1sGG;EACC,iBAAA;AC6sGJ;;AD9sGG;EACC,iBAAA;ACitGJ;;ADltGG;EACC,iBAAA;ACqtGJ;;ADttGG;EACC,iBAAA;ACytGJ;;AD1tGG;EACC,iBAAA;AC6tGJ;;AD9tGG;EACC,iBAAA;ACiuGJ;;ADluGG;EACC,iBAAA;ACquGJ;;ADtuGG;EACC,iBAAA;ACyuGJ;;AD1uGG;EACC,iBAAA;AC6uGJ;;AD9uGG;EACC,iBAAA;ACivGJ;;ADlvGG;EACC,iBAAA;ACqvGJ;;ADtvGG;EACC,iBAAA;ACyvGJ;;AD1vGG;EACC,iBAAA;AC6vGJ;;AD9vGG;EACC,iBAAA;ACiwGJ;;ADlwGG;EACC,iBAAA;ACqwGJ;;ADtwGG;EACC,iBAAA;ACywGJ;;AD1wGG;EACC,iBAAA;AC6wGJ;;AD9wGG;EACC,kBAAA;ACixGJ;;ADryGG;EACC,kBAAA;ACwyGJ;;ADzyGG;EACC,kBAAA;AC4yGJ;;AD7yGG;EACC,kBAAA;ACgzGJ;;ADjzGG;EACC,kBAAA;ACozGJ;;ADrzGG;EACC,kBAAA;ACwzGJ;;ADzzGG;EACC,kBAAA;AC4zGJ;;AD7zGG;EACC,kBAAA;ACg0GJ;;ADj0GG;EACC,kBAAA;ACo0GJ;;ADr0GG;EACC,kBAAA;ACw0GJ;;ADz0GG;EACC,kBAAA;AC40GJ;;AD70GG;EACC,mBAAA;ACg1GJ;;ADj1GG;EACC,mBAAA;ACo1GJ;;ADr1GG;EACC,mBAAA;ACw1GJ;;ADz1GG;EACC,mBAAA;AC41GJ;;AD71GG;EACC,mBAAA;ACg2GJ;;ADj2GG;EACC,mBAAA;ACo2GJ;;ADr2GG;EACC,mBAAA;ACw2GJ;;ADz2GG;EACC,mBAAA;AC42GJ;;AD72GG;EACC,mBAAA;ACg3GJ;;ADj3GG;EACC,mBAAA;ACo3GJ;;ADr3GG;EACC,mBAAA;ACw3GJ;;ADz3GG;EACC,mBAAA;AC43GJ;;AD73GG;EACC,mBAAA;ACg4GJ;;ADj4GG;EACC,mBAAA;ACo4GJ;;ADr4GG;EACC,mBAAA;ACw4GJ;;ADz4GG;EACC,mBAAA;AC44GJ;;AD74GG;EACC,mBAAA;ACg5GJ;;ADj5GG;EACC,mBAAA;ACo5GJ;;ADr5GG;EACC,mBAAA;ACw5GJ;;ADz5GG;EACC,mBAAA;AC45GJ;;AD75GG;EACC,mBAAA;ACg6GJ;;ADj6GG;EACC,mBAAA;ACo6GJ;;ADr6GG;EACC,mBAAA;ACw6GJ;;ADz6GG;EACC,mBAAA;AC46GJ;;AD76GG;EACC,mBAAA;ACg7GJ;;ADj7GG;EACC,mBAAA;ACo7GJ;;ADr7GG;EACC,mBAAA;ACw7GJ;;ADz7GG;EACC,mBAAA;AC47GJ;;AD77GG;EACC,mBAAA;ACg8GJ;;ADj8GG;EACC,mBAAA;ACo8GJ;;ADr8GG;EACC,mBAAA;ACw8GJ;;ADz8GG;EACC,mBAAA;AC48GJ;;AD78GG;EACC,mBAAA;ACg9GJ;;ADj9GG;EACC,mBAAA;ACo9GJ;;ADr9GG;EACC,mBAAA;ACw9GJ;;ADz9GG;EACC,mBAAA;AC49GJ;;AD79GG;EACC,mBAAA;ACg+GJ;;ADj+GG;EACC,mBAAA;ACo+GJ;;ADr+GG;EACC,mBAAA;ACw+GJ;;ADz+GG;EACC,mBAAA;AC4+GJ;;AD7+GG;EACC,mBAAA;ACg/GJ;;AD99GG;EACC,kBAAA;ACi+GJ;;ADl+GG;EACC,kBAAA;ACq+GJ;;ADt+GG;EACC,mBAAA;ACy+GJ;;AD1+GG;EACC,mBAAA;AC6+GJ;;AD9+GG;EACC,mBAAA;ACi/GJ;;ADl/GG;EACC,mBAAA;ACq/GJ;;ADt/GG;EACC,mBAAA;ACy/GJ;;AD1/GG;EACC,mBAAA;AC6/GJ;;AD9/GG;EACC,mBAAA;ACigHJ;;ADlgHG;EACC,mBAAA;ACqgHJ;;ADtgHG;EACC,mBAAA;ACygHJ;;AD1gHG;EACC,mBAAA;AC6gHJ;;AD9gHG;EACC,mBAAA;ACihHJ;;ADlhHG;EACC,mBAAA;ACqhHJ;;ADthHG;EACC,mBAAA;ACyhHJ;;AD1hHG;EACC,mBAAA;AC6hHJ;;AD9hHG;EACC,mBAAA;ACiiHJ;;ADliHG;EACC,mBAAA;ACqiHJ;;ADtiHG;EACC,mBAAA;ACyiHJ;;AD1iHG;EACC,mBAAA;AC6iHJ;;AD9iHG;EACC,mBAAA;ACijHJ;;ADljHG;EACC,mBAAA;ACqjHJ;;ADtjHG;EACC,mBAAA;ACyjHJ;;AD1jHG;EACC,mBAAA;AC6jHJ;;AD9jHG;EACC,oBAAA;ACikHJ;;ADrlHG;EACC,mBAAA;ACwlHJ;;ADzlHG;EACC,mBAAA;AC4lHJ;;AD7lHG;EACC,mBAAA;ACgmHJ;;ADjmHG;EACC,mBAAA;AComHJ;;ADrmHG;EACC,mBAAA;ACwmHJ;;ADzmHG;EACC,mBAAA;AC4mHJ;;AD7mHG;EACC,mBAAA;ACgnHJ;;ADjnHG;EACC,mBAAA;AConHJ;;ADrnHG;EACC,mBAAA;ACwnHJ;;ADznHG;EACC,mBAAA;AC4nHJ;;AD7nHG;EACC,oBAAA;ACgoHJ;;ADjoHG;EACC,oBAAA;ACooHJ;;ADroHG;EACC,oBAAA;ACwoHJ;;ADzoHG;EACC,oBAAA;AC4oHJ;;AD7oHG;EACC,oBAAA;ACgpHJ;;ADjpHG;EACC,oBAAA;ACopHJ;;ADrpHG;EACC,oBAAA;ACwpHJ;;ADzpHG;EACC,oBAAA;AC4pHJ;;AD7pHG;EACC,oBAAA;ACgqHJ;;ADjqHG;EACC,oBAAA;ACoqHJ;;ADrqHG;EACC,oBAAA;ACwqHJ;;ADzqHG;EACC,oBAAA;AC4qHJ;;AD7qHG;EACC,oBAAA;ACgrHJ;;ADjrHG;EACC,oBAAA;ACorHJ;;ADrrHG;EACC,oBAAA;ACwrHJ;;ADzrHG;EACC,oBAAA;AC4rHJ;;AD7rHG;EACC,oBAAA;ACgsHJ;;ADjsHG;EACC,oBAAA;ACosHJ;;ADrsHG;EACC,oBAAA;ACwsHJ;;ADzsHG;EACC,oBAAA;AC4sHJ;;AD7sHG;EACC,oBAAA;ACgtHJ;;ADjtHG;EACC,oBAAA;ACotHJ;;ADrtHG;EACC,oBAAA;ACwtHJ;;ADztHG;EACC,oBAAA;AC4tHJ;;AD7tHG;EACC,oBAAA;ACguHJ;;ADjuHG;EACC,oBAAA;ACouHJ;;ADruHG;EACC,oBAAA;ACwuHJ;;ADzuHG;EACC,oBAAA;AC4uHJ;;AD7uHG;EACC,oBAAA;ACgvHJ;;ADjvHG;EACC,oBAAA;ACovHJ;;ADrvHG;EACC,oBAAA;ACwvHJ;;ADzvHG;EACC,oBAAA;AC4vHJ;;AD7vHG;EACC,oBAAA;ACgwHJ;;ADjwHG;EACC,oBAAA;ACowHJ;;ADrwHG;EACC,oBAAA;ACwwHJ;;ADzwHG;EACC,oBAAA;AC4wHJ;;AD7wHG;EACC,oBAAA;ACgxHJ;;ADjxHG;EACC,oBAAA;ACoxHJ;;ADrxHG;EACC,oBAAA;ACwxHJ;;ADzxHG;EACC,oBAAA;AC4xHJ;;AD7xHG;EACC,oBAAA;ACgyHJ;;AD9wHG;EACC,mBAAA;ACixHJ;;ADlxHG;EACC,mBAAA;ACqxHJ;;ADtxHG;EACC,oBAAA;ACyxHJ;;AD1xHG;EACC,oBAAA;AC6xHJ;;AD9xHG;EACC,oBAAA;ACiyHJ;;ADlyHG;EACC,oBAAA;ACqyHJ;;ADtyHG;EACC,oBAAA;ACyyHJ;;AD1yHG;EACC,oBAAA;AC6yHJ;;AD9yHG;EACC,oBAAA;ACizHJ;;ADlzHG;EACC,oBAAA;ACqzHJ;;ADtzHG;EACC,oBAAA;ACyzHJ;;AD1zHG;EACC,oBAAA;AC6zHJ;;AD9zHG;EACC,oBAAA;ACi0HJ;;ADl0HG;EACC,oBAAA;ACq0HJ;;ADt0HG;EACC,oBAAA;ACy0HJ;;AD10HG;EACC,oBAAA;AC60HJ;;AD90HG;EACC,oBAAA;ACi1HJ;;ADl1HG;EACC,oBAAA;ACq1HJ;;ADt1HG;EACC,oBAAA;ACy1HJ;;AD11HG;EACC,oBAAA;AC61HJ;;AD91HG;EACC,oBAAA;ACi2HJ;;ADl2HG;EACC,oBAAA;ACq2HJ;;ADt2HG;EACC,oBAAA;ACy2HJ;;AD12HG;EACC,oBAAA;AC62HJ;;AD92HG;EACC,qBAAA;ACi3HJ;;ADr4HG;EACC,iBAAA;ACw4HJ;;ADz4HG;EACC,iBAAA;AC44HJ;;AD74HG;EACC,iBAAA;ACg5HJ;;ADj5HG;EACC,iBAAA;ACo5HJ;;ADr5HG;EACC,iBAAA;ACw5HJ;;ADz5HG;EACC,iBAAA;AC45HJ;;AD75HG;EACC,iBAAA;ACg6HJ;;ADj6HG;EACC,iBAAA;ACo6HJ;;ADr6HG;EACC,iBAAA;ACw6HJ;;ADz6HG;EACC,iBAAA;AC46HJ;;AD76HG;EACC,kBAAA;ACg7HJ;;ADj7HG;EACC,kBAAA;ACo7HJ;;ADr7HG;EACC,kBAAA;ACw7HJ;;ADz7HG;EACC,kBAAA;AC47HJ;;AD77HG;EACC,kBAAA;ACg8HJ;;ADj8HG;EACC,kBAAA;ACo8HJ;;ADr8HG;EACC,kBAAA;ACw8HJ;;ADz8HG;EACC,kBAAA;AC48HJ;;AD78HG;EACC,kBAAA;ACg9HJ;;ADj9HG;EACC,kBAAA;ACo9HJ;;ADr9HG;EACC,kBAAA;ACw9HJ;;ADz9HG;EACC,kBAAA;AC49HJ;;AD79HG;EACC,kBAAA;ACg+HJ;;ADj+HG;EACC,kBAAA;ACo+HJ;;ADr+HG;EACC,kBAAA;ACw+HJ;;ADz+HG;EACC,kBAAA;AC4+HJ;;AD7+HG;EACC,kBAAA;ACg/HJ;;ADj/HG;EACC,kBAAA;ACo/HJ;;ADr/HG;EACC,kBAAA;ACw/HJ;;ADz/HG;EACC,kBAAA;AC4/HJ;;AD7/HG;EACC,kBAAA;ACggIJ;;ADjgIG;EACC,kBAAA;ACogIJ;;ADrgIG;EACC,kBAAA;ACwgIJ;;ADzgIG;EACC,kBAAA;AC4gIJ;;AD7gIG;EACC,kBAAA;ACghIJ;;ADjhIG;EACC,kBAAA;ACohIJ;;ADrhIG;EACC,kBAAA;ACwhIJ;;ADzhIG;EACC,kBAAA;AC4hIJ;;AD7hIG;EACC,kBAAA;ACgiIJ;;ADjiIG;EACC,kBAAA;ACoiIJ;;ADriIG;EACC,kBAAA;ACwiIJ;;ADziIG;EACC,kBAAA;AC4iIJ;;AD7iIG;EACC,kBAAA;ACgjIJ;;ADjjIG;EACC,kBAAA;ACojIJ;;ADrjIG;EACC,kBAAA;ACwjIJ;;ADzjIG;EACC,kBAAA;AC4jIJ;;AD7jIG;EACC,kBAAA;ACgkIJ;;ADjkIG;EACC,kBAAA;ACokIJ;;ADrkIG;EACC,kBAAA;ACwkIJ;;ADzkIG;EACC,kBAAA;AC4kIJ;;AD7kIG;EACC,kBAAA;ACglIJ;;AD9jIG;EACC,iBAAA;ACikIJ;;ADlkIG;EACC,iBAAA;ACqkIJ;;ADtkIG;EACC,kBAAA;ACykIJ;;AD1kIG;EACC,kBAAA;AC6kIJ;;AD9kIG;EACC,kBAAA;ACilIJ;;ADllIG;EACC,kBAAA;ACqlIJ;;ADtlIG;EACC,kBAAA;ACylIJ;;AD1lIG;EACC,kBAAA;AC6lIJ;;AD9lIG;EACC,kBAAA;ACimIJ;;ADlmIG;EACC,kBAAA;ACqmIJ;;ADtmIG;EACC,kBAAA;ACymIJ;;AD1mIG;EACC,kBAAA;AC6mIJ;;AD9mIG;EACC,kBAAA;ACinIJ;;ADlnIG;EACC,kBAAA;ACqnIJ;;ADtnIG;EACC,kBAAA;ACynIJ;;AD1nIG;EACC,kBAAA;AC6nIJ;;AD9nIG;EACC,kBAAA;ACioIJ;;ADloIG;EACC,kBAAA;ACqoIJ;;ADtoIG;EACC,kBAAA;ACyoIJ;;AD1oIG;EACC,kBAAA;AC6oIJ;;AD9oIG;EACC,kBAAA;ACipIJ;;ADlpIG;EACC,kBAAA;ACqpIJ;;ADtpIG;EACC,kBAAA;ACypIJ;;AD1pIG;EACC,kBAAA;AC6pIJ;;AD9pIG;EACC,mBAAA;ACiqIJ;;ADhrIG;EACC,iBAAA;EACA,kBAAA;ACmrIJ;;ADrrIG;EACC,iBAAA;EACA,kBAAA;ACwrIJ;;AD1rIG;EACC,iBAAA;EACA,kBAAA;AC6rIJ;;AD/rIG;EACC,iBAAA;EACA,kBAAA;ACksIJ;;ADpsIG;EACC,iBAAA;EACA,kBAAA;ACusIJ;;ADzsIG;EACC,iBAAA;EACA,kBAAA;AC4sIJ;;AD9sIG;EACC,iBAAA;EACA,kBAAA;ACitIJ;;ADntIG;EACC,iBAAA;EACA,kBAAA;ACstIJ;;ADxtIG;EACC,iBAAA;EACA,kBAAA;AC2tIJ;;AD7tIG;EACC,iBAAA;EACA,kBAAA;ACguIJ;;ADluIG;EACC,kBAAA;EACA,mBAAA;ACquIJ;;ADvuIG;EACC,kBAAA;EACA,mBAAA;AC0uIJ;;AD5uIG;EACC,kBAAA;EACA,mBAAA;AC+uIJ;;ADjvIG;EACC,kBAAA;EACA,mBAAA;ACovIJ;;ADtvIG;EACC,kBAAA;EACA,mBAAA;ACyvIJ;;AD3vIG;EACC,kBAAA;EACA,mBAAA;AC8vIJ;;ADhwIG;EACC,kBAAA;EACA,mBAAA;ACmwIJ;;ADrwIG;EACC,kBAAA;EACA,mBAAA;ACwwIJ;;AD1wIG;EACC,kBAAA;EACA,mBAAA;AC6wIJ;;AD/wIG;EACC,kBAAA;EACA,mBAAA;ACkxIJ;;ADpxIG;EACC,kBAAA;EACA,mBAAA;ACuxIJ;;ADzxIG;EACC,kBAAA;EACA,mBAAA;AC4xIJ;;AD9xIG;EACC,kBAAA;EACA,mBAAA;ACiyIJ;;ADnyIG;EACC,kBAAA;EACA,mBAAA;ACsyIJ;;ADxyIG;EACC,kBAAA;EACA,mBAAA;AC2yIJ;;AD7yIG;EACC,kBAAA;EACA,mBAAA;ACgzIJ;;ADlzIG;EACC,kBAAA;EACA,mBAAA;ACqzIJ;;ADvzIG;EACC,kBAAA;EACA,mBAAA;AC0zIJ;;AD5zIG;EACC,kBAAA;EACA,mBAAA;AC+zIJ;;ADj0IG;EACC,kBAAA;EACA,mBAAA;ACo0IJ;;ADt0IG;EACC,kBAAA;EACA,mBAAA;ACy0IJ;;AD30IG;EACC,kBAAA;EACA,mBAAA;AC80IJ;;ADh1IG;EACC,kBAAA;EACA,mBAAA;ACm1IJ;;ADr1IG;EACC,kBAAA;EACA,mBAAA;ACw1IJ;;AD11IG;EACC,kBAAA;EACA,mBAAA;AC61IJ;;AD/1IG;EACC,kBAAA;EACA,mBAAA;ACk2IJ;;ADp2IG;EACC,kBAAA;EACA,mBAAA;ACu2IJ;;ADz2IG;EACC,kBAAA;EACA,mBAAA;AC42IJ;;AD92IG;EACC,kBAAA;EACA,mBAAA;ACi3IJ;;ADn3IG;EACC,kBAAA;EACA,mBAAA;ACs3IJ;;ADx3IG;EACC,kBAAA;EACA,mBAAA;AC23IJ;;AD73IG;EACC,kBAAA;EACA,mBAAA;ACg4IJ;;ADl4IG;EACC,kBAAA;EACA,mBAAA;ACq4IJ;;ADv4IG;EACC,kBAAA;EACA,mBAAA;AC04IJ;;AD54IG;EACC,kBAAA;EACA,mBAAA;AC+4IJ;;ADj5IG;EACC,kBAAA;EACA,mBAAA;ACo5IJ;;ADt5IG;EACC,kBAAA;EACA,mBAAA;ACy5IJ;;AD35IG;EACC,kBAAA;EACA,mBAAA;AC85IJ;;ADh6IG;EACC,kBAAA;EACA,mBAAA;ACm6IJ;;ADr6IG;EACC,kBAAA;EACA,mBAAA;ACw6IJ;;AD16IG;EACC,kBAAA;EACA,mBAAA;AC66IJ;;AD55IG;EACC,iBAAA;EACA,mBAAA;AC+5IJ;;ADj6IG;EACC,iBAAA;EACA,mBAAA;ACo6IJ;;ADt6IG;EACC,kBAAA;EACA,oBAAA;ACy6IJ;;AD36IG;EACC,kBAAA;EACA,oBAAA;AC86IJ;;ADh7IG;EACC,kBAAA;EACA,oBAAA;ACm7IJ;;ADr7IG;EACC,kBAAA;EACA,oBAAA;ACw7IJ;;AD17IG;EACC,kBAAA;EACA,oBAAA;AC67IJ;;AD/7IG;EACC,kBAAA;EACA,oBAAA;ACk8IJ;;ADp8IG;EACC,kBAAA;EACA,oBAAA;ACu8IJ;;ADz8IG;EACC,kBAAA;EACA,oBAAA;AC48IJ;;AD98IG;EACC,kBAAA;EACA,oBAAA;ACi9IJ;;ADn9IG;EACC,kBAAA;EACA,oBAAA;ACs9IJ;;ADx9IG;EACC,kBAAA;EACA,oBAAA;AC29IJ;;AD79IG;EACC,kBAAA;EACA,oBAAA;ACg+IJ;;ADl+IG;EACC,kBAAA;EACA,oBAAA;ACq+IJ;;ADv+IG;EACC,kBAAA;EACA,oBAAA;AC0+IJ;;AD5+IG;EACC,kBAAA;EACA,oBAAA;AC++IJ;;ADj/IG;EACC,kBAAA;EACA,oBAAA;ACo/IJ;;ADt/IG;EACC,kBAAA;EACA,oBAAA;ACy/IJ;;AD3/IG;EACC,kBAAA;EACA,oBAAA;AC8/IJ;;ADhgJG;EACC,kBAAA;EACA,oBAAA;ACmgJJ;;ADrgJG;EACC,kBAAA;EACA,oBAAA;ACwgJJ;;AD1gJG;EACC,kBAAA;EACA,oBAAA;AC6gJJ;;AD/gJG;EACC,kBAAA;EACA,oBAAA;ACkhJJ;;ADphJG;EACC,mBAAA;EACA,qBAAA;ACuhJJ;;ADtiJG;EACC,gBAAA;EACA,mBAAA;ACyiJJ;;AD3iJG;EACC,gBAAA;EACA,mBAAA;AC8iJJ;;ADhjJG;EACC,gBAAA;EACA,mBAAA;ACmjJJ;;ADrjJG;EACC,gBAAA;EACA,mBAAA;ACwjJJ;;AD1jJG;EACC,gBAAA;EACA,mBAAA;AC6jJJ;;AD/jJG;EACC,gBAAA;EACA,mBAAA;ACkkJJ;;ADpkJG;EACC,gBAAA;EACA,mBAAA;ACukJJ;;ADzkJG;EACC,gBAAA;EACA,mBAAA;AC4kJJ;;AD9kJG;EACC,gBAAA;EACA,mBAAA;ACilJJ;;ADnlJG;EACC,gBAAA;EACA,mBAAA;ACslJJ;;ADxlJG;EACC,iBAAA;EACA,oBAAA;AC2lJJ;;AD7lJG;EACC,iBAAA;EACA,oBAAA;ACgmJJ;;ADlmJG;EACC,iBAAA;EACA,oBAAA;ACqmJJ;;ADvmJG;EACC,iBAAA;EACA,oBAAA;AC0mJJ;;AD5mJG;EACC,iBAAA;EACA,oBAAA;AC+mJJ;;ADjnJG;EACC,iBAAA;EACA,oBAAA;AConJJ;;ADtnJG;EACC,iBAAA;EACA,oBAAA;ACynJJ;;AD3nJG;EACC,iBAAA;EACA,oBAAA;AC8nJJ;;ADhoJG;EACC,iBAAA;EACA,oBAAA;ACmoJJ;;ADroJG;EACC,iBAAA;EACA,oBAAA;ACwoJJ;;AD1oJG;EACC,iBAAA;EACA,oBAAA;AC6oJJ;;AD/oJG;EACC,iBAAA;EACA,oBAAA;ACkpJJ;;ADppJG;EACC,iBAAA;EACA,oBAAA;ACupJJ;;ADzpJG;EACC,iBAAA;EACA,oBAAA;AC4pJJ;;AD9pJG;EACC,iBAAA;EACA,oBAAA;ACiqJJ;;ADnqJG;EACC,iBAAA;EACA,oBAAA;ACsqJJ;;ADxqJG;EACC,iBAAA;EACA,oBAAA;AC2qJJ;;AD7qJG;EACC,iBAAA;EACA,oBAAA;ACgrJJ;;ADlrJG;EACC,iBAAA;EACA,oBAAA;ACqrJJ;;ADvrJG;EACC,iBAAA;EACA,oBAAA;AC0rJJ;;AD5rJG;EACC,iBAAA;EACA,oBAAA;AC+rJJ;;ADjsJG;EACC,iBAAA;EACA,oBAAA;ACosJJ;;ADtsJG;EACC,iBAAA;EACA,oBAAA;ACysJJ;;AD3sJG;EACC,iBAAA;EACA,oBAAA;AC8sJJ;;ADhtJG;EACC,iBAAA;EACA,oBAAA;ACmtJJ;;ADrtJG;EACC,iBAAA;EACA,oBAAA;ACwtJJ;;AD1tJG;EACC,iBAAA;EACA,oBAAA;AC6tJJ;;AD/tJG;EACC,iBAAA;EACA,oBAAA;ACkuJJ;;ADpuJG;EACC,iBAAA;EACA,oBAAA;ACuuJJ;;ADzuJG;EACC,iBAAA;EACA,oBAAA;AC4uJJ;;AD9uJG;EACC,iBAAA;EACA,oBAAA;ACivJJ;;ADnvJG;EACC,iBAAA;EACA,oBAAA;ACsvJJ;;ADxvJG;EACC,iBAAA;EACA,oBAAA;AC2vJJ;;AD7vJG;EACC,iBAAA;EACA,oBAAA;ACgwJJ;;ADlwJG;EACC,iBAAA;EACA,oBAAA;ACqwJJ;;ADvwJG;EACC,iBAAA;EACA,oBAAA;AC0wJJ;;AD5wJG;EACC,iBAAA;EACA,oBAAA;AC+wJJ;;ADjxJG;EACC,iBAAA;EACA,oBAAA;ACoxJJ;;ADtxJG;EACC,iBAAA;EACA,oBAAA;ACyxJJ;;AD3xJG;EACC,iBAAA;EACA,oBAAA;AC8xJJ;;ADhyJG;EACC,iBAAA;EACA,oBAAA;ACmyJJ;;ADlxJG;EACC,gBAAA;EACA,mBAAA;ACqxJJ;;ADvxJG;EACC,gBAAA;EACA,mBAAA;AC0xJJ;;AD5xJG;EACC,iBAAA;EACA,oBAAA;AC+xJJ;;ADjyJG;EACC,iBAAA;EACA,oBAAA;ACoyJJ;;ADtyJG;EACC,iBAAA;EACA,oBAAA;ACyyJJ;;AD3yJG;EACC,iBAAA;EACA,oBAAA;AC8yJJ;;ADhzJG;EACC,iBAAA;EACA,oBAAA;ACmzJJ;;ADrzJG;EACC,iBAAA;EACA,oBAAA;ACwzJJ;;AD1zJG;EACC,iBAAA;EACA,oBAAA;AC6zJJ;;AD/zJG;EACC,iBAAA;EACA,oBAAA;ACk0JJ;;ADp0JG;EACC,iBAAA;EACA,oBAAA;ACu0JJ;;ADz0JG;EACC,iBAAA;EACA,oBAAA;AC40JJ;;AD90JG;EACC,iBAAA;EACA,oBAAA;ACi1JJ;;ADn1JG;EACC,iBAAA;EACA,oBAAA;ACs1JJ;;ADx1JG;EACC,iBAAA;EACA,oBAAA;AC21JJ;;AD71JG;EACC,iBAAA;EACA,oBAAA;ACg2JJ;;ADl2JG;EACC,iBAAA;EACA,oBAAA;ACq2JJ;;ADv2JG;EACC,iBAAA;EACA,oBAAA;AC02JJ;;AD52JG;EACC,iBAAA;EACA,oBAAA;AC+2JJ;;ADj3JG;EACC,iBAAA;EACA,oBAAA;ACo3JJ;;ADt3JG;EACC,iBAAA;EACA,oBAAA;ACy3JJ;;AD33JG;EACC,iBAAA;EACA,oBAAA;AC83JJ;;ADh4JG;EACC,iBAAA;EACA,oBAAA;ACm4JJ;;ADr4JG;EACC,iBAAA;EACA,oBAAA;ACw4JJ;;AD14JG;EACC,kBAAA;EACA,qBAAA;AC64JJ;;ADp4JG;EACC,WAAA;ACu4JJ;;ADx4JG;EACC,WAAA;AC24JJ;;AD54JG;EACC,WAAA;AC+4JJ;;ADh5JG;EACC,WAAA;ACm5JJ;;ADp5JG;EACC,WAAA;ACu5JJ;;ADx5JG;EACC,WAAA;AC25JJ;;AD55JG;EACC,WAAA;AC+5JJ;;ADh6JG;EACC,WAAA;ACm6JJ;;ADp6JG;EACC,WAAA;ACu6JJ;;ADx6JG;EACC,WAAA;AC26JJ;;AD56JG;EACC,YAAA;AC+6JJ;;ADh7JG;EACC,YAAA;ACm7JJ;;ADp7JG;EACC,YAAA;ACu7JJ;;ADx7JG;EACC,YAAA;AC27JJ;;AD57JG;EACC,YAAA;AC+7JJ;;ADh8JG;EACC,YAAA;ACm8JJ;;ADp8JG;EACC,YAAA;ACu8JJ;;ADx8JG;EACC,YAAA;AC28JJ;;AD58JG;EACC,YAAA;AC+8JJ;;ADh9JG;EACC,YAAA;ACm9JJ;;ADp9JG;EACC,YAAA;ACu9JJ;;ADx9JG;EACC,YAAA;AC29JJ;;AD59JG;EACC,YAAA;AC+9JJ;;ADh+JG;EACC,YAAA;ACm+JJ;;ADp+JG;EACC,YAAA;ACu+JJ;;ADx+JG;EACC,YAAA;AC2+JJ;;AD5+JG;EACC,YAAA;AC++JJ;;ADh/JG;EACC,YAAA;ACm/JJ;;ADp/JG;EACC,YAAA;ACu/JJ;;ADx/JG;EACC,YAAA;AC2/JJ;;AD5/JG;EACC,YAAA;AC+/JJ;;ADhgKG;EACC,YAAA;ACmgKJ;;ADpgKG;EACC,YAAA;ACugKJ;;ADxgKG;EACC,YAAA;AC2gKJ;;AD5gKG;EACC,YAAA;AC+gKJ;;ADhhKG;EACC,YAAA;ACmhKJ;;ADphKG;EACC,YAAA;ACuhKJ;;ADxhKG;EACC,YAAA;AC2hKJ;;AD5hKG;EACC,YAAA;AC+hKJ;;ADhiKG;EACC,YAAA;ACmiKJ;;ADpiKG;EACC,YAAA;ACuiKJ;;ADxiKG;EACC,YAAA;AC2iKJ;;AD5iKG;EACC,YAAA;AC+iKJ;;ADhjKG;EACC,YAAA;ACmjKJ;;ADpjKG;EACC,YAAA;ACujKJ;;ADxjKG;EACC,YAAA;AC2jKJ;;AD5jKG;EACC,YAAA;AC+jKJ;;ADhkKG;EACC,YAAA;ACmkKJ;;ADpkKG;EACC,YAAA;ACukKJ;;ADxkKG;EACC,YAAA;AC2kKJ;;AD5kKG;EACC,YAAA;AC+kKJ;;ADxjKG;EACC,WAAA;AC2jKJ;;AD5jKG;EACC,WAAA;AC+jKJ;;ADhkKG;EACC,YAAA;ACmkKJ;;ADpkKG;EACC,YAAA;ACukKJ;;ADxkKG;EACC,YAAA;AC2kKJ;;AD5kKG;EACC,YAAA;AC+kKJ;;ADhlKG;EACC,YAAA;ACmlKJ;;ADplKG;EACC,YAAA;ACulKJ;;ADxlKG;EACC,YAAA;AC2lKJ;;AD5lKG;EACC,YAAA;AC+lKJ;;ADhmKG;EACC,YAAA;ACmmKJ;;ADpmKG;EACC,YAAA;ACumKJ;;ADxmKG;EACC,YAAA;AC2mKJ;;AD5mKG;EACC,YAAA;AC+mKJ;;ADhnKG;EACC,YAAA;ACmnKJ;;ADpnKG;EACC,YAAA;ACunKJ;;ADxnKG;EACC,YAAA;AC2nKJ;;AD5nKG;EACC,YAAA;AC+nKJ;;ADhoKG;EACC,YAAA;ACmoKJ;;ADpoKG;EACC,YAAA;ACuoKJ;;ADxoKG;EACC,YAAA;AC2oKJ;;AD5oKG;EACC,YAAA;AC+oKJ;;ADhpKG;EACC,YAAA;ACmpKJ;;ADppKG;EACC,YAAA;ACupKJ;;ADxpKG;EACC,aAAA;AC2pKJ;;ADprKG;EACC,eAAA;ACurKJ;;ADprKI;EACC,gBAAA;ACurKL;;AD5rKG;EACC,eAAA;AC+rKJ;;AD5rKI;EACC,gBAAA;AC+rKL;;ADpsKG;EACC,eAAA;ACusKJ;;ADpsKI;EACC,gBAAA;ACusKL;;AD5sKG;EACC,eAAA;AC+sKJ;;AD5sKI;EACC,gBAAA;AC+sKL;;ADptKG;EACC,eAAA;ACutKJ;;ADptKI;EACC,gBAAA;ACutKL;;AD5tKG;EACC,eAAA;AC+tKJ;;AD5tKI;EACC,gBAAA;AC+tKL;;ADpuKG;EACC,eAAA;ACuuKJ;;ADpuKI;EACC,gBAAA;ACuuKL;;AD5uKG;EACC,eAAA;AC+uKJ;;AD5uKI;EACC,gBAAA;AC+uKL;;ADpvKG;EACC,eAAA;ACuvKJ;;ADpvKI;EACC,gBAAA;ACuvKL;;AD5vKG;EACC,eAAA;AC+vKJ;;AD5vKI;EACC,gBAAA;AC+vKL;;ADpwKG;EACC,gBAAA;ACuwKJ;;ADpwKI;EACC,iBAAA;ACuwKL;;AD5wKG;EACC,gBAAA;AC+wKJ;;AD5wKI;EACC,iBAAA;AC+wKL;;ADpxKG;EACC,gBAAA;ACuxKJ;;ADpxKI;EACC,iBAAA;ACuxKL;;AD5xKG;EACC,gBAAA;AC+xKJ;;AD5xKI;EACC,iBAAA;AC+xKL;;ADpyKG;EACC,gBAAA;ACuyKJ;;ADpyKI;EACC,iBAAA;ACuyKL;;AD5yKG;EACC,gBAAA;AC+yKJ;;AD5yKI;EACC,iBAAA;AC+yKL;;ADpzKG;EACC,gBAAA;ACuzKJ;;ADpzKI;EACC,iBAAA;ACuzKL;;AD5zKG;EACC,gBAAA;AC+zKJ;;AD5zKI;EACC,iBAAA;AC+zKL;;ADp0KG;EACC,gBAAA;ACu0KJ;;ADp0KI;EACC,iBAAA;ACu0KL;;AD50KG;EACC,gBAAA;AC+0KJ;;AD50KI;EACC,iBAAA;AC+0KL;;ADp1KG;EACC,gBAAA;ACu1KJ;;ADp1KI;EACC,iBAAA;ACu1KL;;AD51KG;EACC,gBAAA;AC+1KJ;;AD51KI;EACC,iBAAA;AC+1KL;;ADp2KG;EACC,gBAAA;ACu2KJ;;ADp2KI;EACC,iBAAA;ACu2KL;;AD52KG;EACC,gBAAA;AC+2KJ;;AD52KI;EACC,iBAAA;AC+2KL;;ADp3KG;EACC,gBAAA;ACu3KJ;;ADp3KI;EACC,iBAAA;ACu3KL;;AD53KG;EACC,gBAAA;AC+3KJ;;AD53KI;EACC,iBAAA;AC+3KL;;ADp4KG;EACC,gBAAA;ACu4KJ;;ADp4KI;EACC,iBAAA;ACu4KL;;AD54KG;EACC,gBAAA;AC+4KJ;;AD54KI;EACC,iBAAA;AC+4KL;;ADp5KG;EACC,gBAAA;ACu5KJ;;ADp5KI;EACC,iBAAA;ACu5KL;;AD55KG;EACC,gBAAA;AC+5KJ;;AD55KI;EACC,iBAAA;AC+5KL;;ADp6KG;EACC,gBAAA;ACu6KJ;;ADp6KI;EACC,iBAAA;ACu6KL;;AD56KG;EACC,gBAAA;AC+6KJ;;AD56KI;EACC,iBAAA;AC+6KL;;ADp7KG;EACC,gBAAA;ACu7KJ;;ADp7KI;EACC,iBAAA;ACu7KL;;AD57KG;EACC,gBAAA;AC+7KJ;;AD57KI;EACC,iBAAA;AC+7KL;;ADp8KG;EACC,gBAAA;ACu8KJ;;ADp8KI;EACC,iBAAA;ACu8KL;;AD58KG;EACC,gBAAA;AC+8KJ;;AD58KI;EACC,iBAAA;AC+8KL;;ADp9KG;EACC,gBAAA;ACu9KJ;;ADp9KI;EACC,iBAAA;ACu9KL;;AD59KG;EACC,gBAAA;AC+9KJ;;AD59KI;EACC,iBAAA;AC+9KL;;ADp+KG;EACC,gBAAA;ACu+KJ;;ADp+KI;EACC,iBAAA;ACu+KL;;AD5+KG;EACC,gBAAA;AC++KJ;;AD5+KI;EACC,iBAAA;AC++KL;;ADp/KG;EACC,gBAAA;ACu/KJ;;ADp/KI;EACC,iBAAA;ACu/KL;;AD5/KG;EACC,gBAAA;AC+/KJ;;AD5/KI;EACC,iBAAA;AC+/KL;;ADpgLG;EACC,gBAAA;ACugLJ;;ADpgLI;EACC,iBAAA;ACugLL;;AD5gLG;EACC,gBAAA;AC+gLJ;;AD5gLI;EACC,iBAAA;AC+gLL;;ADphLG;EACC,gBAAA;ACuhLJ;;ADphLI;EACC,iBAAA;ACuhLL;;AD5hLG;EACC,gBAAA;AC+hLJ;;AD5hLI;EACC,iBAAA;AC+hLL;;ADpiLG;EACC,gBAAA;ACuiLJ;;ADpiLI;EACC,iBAAA;ACuiLL;;AD5iLG;EACC,gBAAA;AC+iLJ;;AD5iLI;EACC,iBAAA;AC+iLL;;ADpjLG;EACC,gBAAA;ACujLJ;;ADpjLI;EACC,iBAAA;ACujLL;;AD5jLG;EACC,gBAAA;AC+jLJ;;AD5jLI;EACC,iBAAA;AC+jLL;;ADpkLG;EACC,gBAAA;ACukLJ;;ADpkLI;EACC,iBAAA;ACukLL;;ADpjLG;EACC,eAAA;ACujLJ;;ADpjLI;EACC,gBAAA;ACujLL;;AD5jLG;EACC,eAAA;AC+jLJ;;AD5jLI;EACC,gBAAA;AC+jLL;;ADpkLG;EACC,gBAAA;ACukLJ;;ADpkLI;EACC,iBAAA;ACukLL;;AD5kLG;EACC,gBAAA;AC+kLJ;;AD5kLI;EACC,iBAAA;AC+kLL;;ADplLG;EACC,gBAAA;ACulLJ;;ADplLI;EACC,iBAAA;ACulLL;;AD5lLG;EACC,gBAAA;AC+lLJ;;AD5lLI;EACC,iBAAA;AC+lLL;;ADpmLG;EACC,gBAAA;ACumLJ;;ADpmLI;EACC,iBAAA;ACumLL;;AD5mLG;EACC,gBAAA;AC+mLJ;;AD5mLI;EACC,iBAAA;AC+mLL;;ADpnLG;EACC,gBAAA;ACunLJ;;ADpnLI;EACC,iBAAA;ACunLL;;AD5nLG;EACC,gBAAA;AC+nLJ;;AD5nLI;EACC,iBAAA;AC+nLL;;ADpoLG;EACC,gBAAA;ACuoLJ;;ADpoLI;EACC,iBAAA;ACuoLL;;AD5oLG;EACC,gBAAA;AC+oLJ;;AD5oLI;EACC,iBAAA;AC+oLL;;ADppLG;EACC,gBAAA;ACupLJ;;ADppLI;EACC,iBAAA;ACupLL;;AD5pLG;EACC,gBAAA;AC+pLJ;;AD5pLI;EACC,iBAAA;AC+pLL;;ADpqLG;EACC,gBAAA;ACuqLJ;;ADpqLI;EACC,iBAAA;ACuqLL;;AD5qLG;EACC,gBAAA;AC+qLJ;;AD5qLI;EACC,iBAAA;AC+qLL;;ADprLG;EACC,gBAAA;ACurLJ;;ADprLI;EACC,iBAAA;ACurLL;;AD5rLG;EACC,gBAAA;AC+rLJ;;AD5rLI;EACC,iBAAA;AC+rLL;;ADpsLG;EACC,gBAAA;ACusLJ;;ADpsLI;EACC,iBAAA;ACusLL;;AD5sLG;EACC,gBAAA;AC+sLJ;;AD5sLI;EACC,iBAAA;AC+sLL;;ADptLG;EACC,gBAAA;ACutLJ;;ADptLI;EACC,iBAAA;ACutLL;;AD5tLG;EACC,gBAAA;AC+tLJ;;AD5tLI;EACC,iBAAA;AC+tLL;;ADpuLG;EACC,gBAAA;ACuuLJ;;ADpuLI;EACC,iBAAA;ACuuLL;;AD5uLG;EACC,gBAAA;AC+uLJ;;AD5uLI;EACC,iBAAA;AC+uLL;;ADpvLG;EACC,iBAAA;ACuvLJ;;ADpvLI;EACC,kBAAA;ACuvLL;;ADpxLG;EACC,iBAAA;ACuxLJ;;ADpxLI;EACC,kBAAA;ACuxLL;;AD5xLG;EACC,iBAAA;AC+xLJ;;AD5xLI;EACC,kBAAA;AC+xLL;;ADpyLG;EACC,iBAAA;ACuyLJ;;ADpyLI;EACC,kBAAA;ACuyLL;;AD5yLG;EACC,iBAAA;AC+yLJ;;AD5yLI;EACC,kBAAA;AC+yLL;;ADpzLG;EACC,iBAAA;ACuzLJ;;ADpzLI;EACC,kBAAA;ACuzLL;;AD5zLG;EACC,iBAAA;AC+zLJ;;AD5zLI;EACC,kBAAA;AC+zLL;;ADp0LG;EACC,iBAAA;ACu0LJ;;ADp0LI;EACC,kBAAA;ACu0LL;;AD50LG;EACC,iBAAA;AC+0LJ;;AD50LI;EACC,kBAAA;AC+0LL;;ADp1LG;EACC,iBAAA;ACu1LJ;;ADp1LI;EACC,kBAAA;ACu1LL;;AD51LG;EACC,iBAAA;AC+1LJ;;AD51LI;EACC,kBAAA;AC+1LL;;ADp2LG;EACC,kBAAA;ACu2LJ;;ADp2LI;EACC,mBAAA;ACu2LL;;AD52LG;EACC,kBAAA;AC+2LJ;;AD52LI;EACC,mBAAA;AC+2LL;;ADp3LG;EACC,kBAAA;ACu3LJ;;ADp3LI;EACC,mBAAA;ACu3LL;;AD53LG;EACC,kBAAA;AC+3LJ;;AD53LI;EACC,mBAAA;AC+3LL;;ADp4LG;EACC,kBAAA;ACu4LJ;;ADp4LI;EACC,mBAAA;ACu4LL;;AD54LG;EACC,kBAAA;AC+4LJ;;AD54LI;EACC,mBAAA;AC+4LL;;ADp5LG;EACC,kBAAA;ACu5LJ;;ADp5LI;EACC,mBAAA;ACu5LL;;AD55LG;EACC,kBAAA;AC+5LJ;;AD55LI;EACC,mBAAA;AC+5LL;;ADp6LG;EACC,kBAAA;ACu6LJ;;ADp6LI;EACC,mBAAA;ACu6LL;;AD56LG;EACC,kBAAA;AC+6LJ;;AD56LI;EACC,mBAAA;AC+6LL;;ADp7LG;EACC,kBAAA;ACu7LJ;;ADp7LI;EACC,mBAAA;ACu7LL;;AD57LG;EACC,kBAAA;AC+7LJ;;AD57LI;EACC,mBAAA;AC+7LL;;ADp8LG;EACC,kBAAA;ACu8LJ;;ADp8LI;EACC,mBAAA;ACu8LL;;AD58LG;EACC,kBAAA;AC+8LJ;;AD58LI;EACC,mBAAA;AC+8LL;;ADp9LG;EACC,kBAAA;ACu9LJ;;ADp9LI;EACC,mBAAA;ACu9LL;;AD59LG;EACC,kBAAA;AC+9LJ;;AD59LI;EACC,mBAAA;AC+9LL;;ADp+LG;EACC,kBAAA;ACu+LJ;;ADp+LI;EACC,mBAAA;ACu+LL;;AD5+LG;EACC,kBAAA;AC++LJ;;AD5+LI;EACC,mBAAA;AC++LL;;ADp/LG;EACC,kBAAA;ACu/LJ;;ADp/LI;EACC,mBAAA;ACu/LL;;AD5/LG;EACC,kBAAA;AC+/LJ;;AD5/LI;EACC,mBAAA;AC+/LL;;ADpgMG;EACC,kBAAA;ACugMJ;;ADpgMI;EACC,mBAAA;ACugML;;AD5gMG;EACC,kBAAA;AC+gMJ;;AD5gMI;EACC,mBAAA;AC+gML;;ADphMG;EACC,kBAAA;ACuhMJ;;ADphMI;EACC,mBAAA;ACuhML;;AD5hMG;EACC,kBAAA;AC+hMJ;;AD5hMI;EACC,mBAAA;AC+hML;;ADpiMG;EACC,kBAAA;ACuiMJ;;ADpiMI;EACC,mBAAA;ACuiML;;AD5iMG;EACC,kBAAA;AC+iMJ;;AD5iMI;EACC,mBAAA;AC+iML;;ADpjMG;EACC,kBAAA;ACujMJ;;ADpjMI;EACC,mBAAA;ACujML;;AD5jMG;EACC,kBAAA;AC+jMJ;;AD5jMI;EACC,mBAAA;AC+jML;;ADpkMG;EACC,kBAAA;ACukMJ;;ADpkMI;EACC,mBAAA;ACukML;;AD5kMG;EACC,kBAAA;AC+kMJ;;AD5kMI;EACC,mBAAA;AC+kML;;ADplMG;EACC,kBAAA;ACulMJ;;ADplMI;EACC,mBAAA;ACulML;;AD5lMG;EACC,kBAAA;AC+lMJ;;AD5lMI;EACC,mBAAA;AC+lML;;ADpmMG;EACC,kBAAA;ACumMJ;;ADpmMI;EACC,mBAAA;ACumML;;AD5mMG;EACC,kBAAA;AC+mMJ;;AD5mMI;EACC,mBAAA;AC+mML;;ADpnMG;EACC,kBAAA;ACunMJ;;ADpnMI;EACC,mBAAA;ACunML;;AD5nMG;EACC,kBAAA;AC+nMJ;;AD5nMI;EACC,mBAAA;AC+nML;;ADpoMG;EACC,kBAAA;ACuoMJ;;ADpoMI;EACC,mBAAA;ACuoML;;AD5oMG;EACC,kBAAA;AC+oMJ;;AD5oMI;EACC,mBAAA;AC+oML;;ADppMG;EACC,kBAAA;ACupMJ;;ADppMI;EACC,mBAAA;ACupML;;AD5pMG;EACC,kBAAA;AC+pMJ;;AD5pMI;EACC,mBAAA;AC+pML;;ADpqMG;EACC,kBAAA;ACuqMJ;;ADpqMI;EACC,mBAAA;ACuqML;;ADppMG;EACC,iBAAA;ACupMJ;;ADppMI;EACC,kBAAA;ACupML;;AD5pMG;EACC,iBAAA;AC+pMJ;;AD5pMI;EACC,kBAAA;AC+pML;;ADpqMG;EACC,kBAAA;ACuqMJ;;ADpqMI;EACC,mBAAA;ACuqML;;AD5qMG;EACC,kBAAA;AC+qMJ;;AD5qMI;EACC,mBAAA;AC+qML;;ADprMG;EACC,kBAAA;ACurMJ;;ADprMI;EACC,mBAAA;ACurML;;AD5rMG;EACC,kBAAA;AC+rMJ;;AD5rMI;EACC,mBAAA;AC+rML;;ADpsMG;EACC,kBAAA;ACusMJ;;ADpsMI;EACC,mBAAA;ACusML;;AD5sMG;EACC,kBAAA;AC+sMJ;;AD5sMI;EACC,mBAAA;AC+sML;;ADptMG;EACC,kBAAA;ACutMJ;;ADptMI;EACC,mBAAA;ACutML;;AD5tMG;EACC,kBAAA;AC+tMJ;;AD5tMI;EACC,mBAAA;AC+tML;;ADpuMG;EACC,kBAAA;ACuuMJ;;ADpuMI;EACC,mBAAA;ACuuML;;AD5uMG;EACC,kBAAA;AC+uMJ;;AD5uMI;EACC,mBAAA;AC+uML;;ADpvMG;EACC,kBAAA;ACuvMJ;;ADpvMI;EACC,mBAAA;ACuvML;;AD5vMG;EACC,kBAAA;AC+vMJ;;AD5vMI;EACC,mBAAA;AC+vML;;ADpwMG;EACC,kBAAA;ACuwMJ;;ADpwMI;EACC,mBAAA;ACuwML;;AD5wMG;EACC,kBAAA;AC+wMJ;;AD5wMI;EACC,mBAAA;AC+wML;;ADpxMG;EACC,kBAAA;ACuxMJ;;ADpxMI;EACC,mBAAA;ACuxML;;AD5xMG;EACC,kBAAA;AC+xMJ;;AD5xMI;EACC,mBAAA;AC+xML;;ADpyMG;EACC,kBAAA;ACuyMJ;;ADpyMI;EACC,mBAAA;ACuyML;;AD5yMG;EACC,kBAAA;AC+yMJ;;AD5yMI;EACC,mBAAA;AC+yML;;ADpzMG;EACC,kBAAA;ACuzMJ;;ADpzMI;EACC,mBAAA;ACuzML;;AD5zMG;EACC,kBAAA;AC+zMJ;;AD5zMI;EACC,mBAAA;AC+zML;;ADp0MG;EACC,kBAAA;ACu0MJ;;ADp0MI;EACC,mBAAA;ACu0ML;;AD50MG;EACC,kBAAA;AC+0MJ;;AD50MI;EACC,mBAAA;AC+0ML;;ADp1MG;EACC,mBAAA;ACu1MJ;;ADp1MI;EACC,oBAAA;ACu1ML;;ADp3MG;EACC,kBAAA;ACu3MJ;;ADp3MI;EACC,mBAAA;ACu3ML;;AD53MG;EACC,kBAAA;AC+3MJ;;AD53MI;EACC,mBAAA;AC+3ML;;ADp4MG;EACC,kBAAA;ACu4MJ;;ADp4MI;EACC,mBAAA;ACu4ML;;AD54MG;EACC,kBAAA;AC+4MJ;;AD54MI;EACC,mBAAA;AC+4ML;;ADp5MG;EACC,kBAAA;ACu5MJ;;ADp5MI;EACC,mBAAA;ACu5ML;;AD55MG;EACC,kBAAA;AC+5MJ;;AD55MI;EACC,mBAAA;AC+5ML;;ADp6MG;EACC,kBAAA;ACu6MJ;;ADp6MI;EACC,mBAAA;ACu6ML;;AD56MG;EACC,kBAAA;AC+6MJ;;AD56MI;EACC,mBAAA;AC+6ML;;ADp7MG;EACC,kBAAA;ACu7MJ;;ADp7MI;EACC,mBAAA;ACu7ML;;AD57MG;EACC,kBAAA;AC+7MJ;;AD57MI;EACC,mBAAA;AC+7ML;;ADp8MG;EACC,mBAAA;ACu8MJ;;ADp8MI;EACC,oBAAA;ACu8ML;;AD58MG;EACC,mBAAA;AC+8MJ;;AD58MI;EACC,oBAAA;AC+8ML;;ADp9MG;EACC,mBAAA;ACu9MJ;;ADp9MI;EACC,oBAAA;ACu9ML;;AD59MG;EACC,mBAAA;AC+9MJ;;AD59MI;EACC,oBAAA;AC+9ML;;ADp+MG;EACC,mBAAA;ACu+MJ;;ADp+MI;EACC,oBAAA;ACu+ML;;AD5+MG;EACC,mBAAA;AC++MJ;;AD5+MI;EACC,oBAAA;AC++ML;;ADp/MG;EACC,mBAAA;ACu/MJ;;ADp/MI;EACC,oBAAA;ACu/ML;;AD5/MG;EACC,mBAAA;AC+/MJ;;AD5/MI;EACC,oBAAA;AC+/ML;;ADpgNG;EACC,mBAAA;ACugNJ;;ADpgNI;EACC,oBAAA;ACugNL;;AD5gNG;EACC,mBAAA;AC+gNJ;;AD5gNI;EACC,oBAAA;AC+gNL;;ADphNG;EACC,mBAAA;ACuhNJ;;ADphNI;EACC,oBAAA;ACuhNL;;AD5hNG;EACC,mBAAA;AC+hNJ;;AD5hNI;EACC,oBAAA;AC+hNL;;ADpiNG;EACC,mBAAA;ACuiNJ;;ADpiNI;EACC,oBAAA;ACuiNL;;AD5iNG;EACC,mBAAA;AC+iNJ;;AD5iNI;EACC,oBAAA;AC+iNL;;ADpjNG;EACC,mBAAA;ACujNJ;;ADpjNI;EACC,oBAAA;ACujNL;;AD5jNG;EACC,mBAAA;AC+jNJ;;AD5jNI;EACC,oBAAA;AC+jNL;;ADpkNG;EACC,mBAAA;ACukNJ;;ADpkNI;EACC,oBAAA;ACukNL;;AD5kNG;EACC,mBAAA;AC+kNJ;;AD5kNI;EACC,oBAAA;AC+kNL;;ADplNG;EACC,mBAAA;ACulNJ;;ADplNI;EACC,oBAAA;ACulNL;;AD5lNG;EACC,mBAAA;AC+lNJ;;AD5lNI;EACC,oBAAA;AC+lNL;;ADpmNG;EACC,mBAAA;ACumNJ;;ADpmNI;EACC,oBAAA;ACumNL;;AD5mNG;EACC,mBAAA;AC+mNJ;;AD5mNI;EACC,oBAAA;AC+mNL;;ADpnNG;EACC,mBAAA;ACunNJ;;ADpnNI;EACC,oBAAA;ACunNL;;AD5nNG;EACC,mBAAA;AC+nNJ;;AD5nNI;EACC,oBAAA;AC+nNL;;ADpoNG;EACC,mBAAA;ACuoNJ;;ADpoNI;EACC,oBAAA;ACuoNL;;AD5oNG;EACC,mBAAA;AC+oNJ;;AD5oNI;EACC,oBAAA;AC+oNL;;ADppNG;EACC,mBAAA;ACupNJ;;ADppNI;EACC,oBAAA;ACupNL;;AD5pNG;EACC,mBAAA;AC+pNJ;;AD5pNI;EACC,oBAAA;AC+pNL;;ADpqNG;EACC,mBAAA;ACuqNJ;;ADpqNI;EACC,oBAAA;ACuqNL;;AD5qNG;EACC,mBAAA;AC+qNJ;;AD5qNI;EACC,oBAAA;AC+qNL;;ADprNG;EACC,mBAAA;ACurNJ;;ADprNI;EACC,oBAAA;ACurNL;;AD5rNG;EACC,mBAAA;AC+rNJ;;AD5rNI;EACC,oBAAA;AC+rNL;;ADpsNG;EACC,mBAAA;ACusNJ;;ADpsNI;EACC,oBAAA;ACusNL;;AD5sNG;EACC,mBAAA;AC+sNJ;;AD5sNI;EACC,oBAAA;AC+sNL;;ADptNG;EACC,mBAAA;ACutNJ;;ADptNI;EACC,oBAAA;ACutNL;;AD5tNG;EACC,mBAAA;AC+tNJ;;AD5tNI;EACC,oBAAA;AC+tNL;;ADpuNG;EACC,mBAAA;ACuuNJ;;ADpuNI;EACC,oBAAA;ACuuNL;;AD5uNG;EACC,mBAAA;AC+uNJ;;AD5uNI;EACC,oBAAA;AC+uNL;;ADpvNG;EACC,mBAAA;ACuvNJ;;ADpvNI;EACC,oBAAA;ACuvNL;;AD5vNG;EACC,mBAAA;AC+vNJ;;AD5vNI;EACC,oBAAA;AC+vNL;;ADpwNG;EACC,mBAAA;ACuwNJ;;ADpwNI;EACC,oBAAA;ACuwNL;;ADpvNG;EACC,kBAAA;ACuvNJ;;ADpvNI;EACC,mBAAA;ACuvNL;;AD5vNG;EACC,kBAAA;AC+vNJ;;AD5vNI;EACC,mBAAA;AC+vNL;;ADpwNG;EACC,mBAAA;ACuwNJ;;ADpwNI;EACC,oBAAA;ACuwNL;;AD5wNG;EACC,mBAAA;AC+wNJ;;AD5wNI;EACC,oBAAA;AC+wNL;;ADpxNG;EACC,mBAAA;ACuxNJ;;ADpxNI;EACC,oBAAA;ACuxNL;;AD5xNG;EACC,mBAAA;AC+xNJ;;AD5xNI;EACC,oBAAA;AC+xNL;;ADpyNG;EACC,mBAAA;ACuyNJ;;ADpyNI;EACC,oBAAA;ACuyNL;;AD5yNG;EACC,mBAAA;AC+yNJ;;AD5yNI;EACC,oBAAA;AC+yNL;;ADpzNG;EACC,mBAAA;ACuzNJ;;ADpzNI;EACC,oBAAA;ACuzNL;;AD5zNG;EACC,mBAAA;AC+zNJ;;AD5zNI;EACC,oBAAA;AC+zNL;;ADp0NG;EACC,mBAAA;ACu0NJ;;ADp0NI;EACC,oBAAA;ACu0NL;;AD50NG;EACC,mBAAA;AC+0NJ;;AD50NI;EACC,oBAAA;AC+0NL;;ADp1NG;EACC,mBAAA;ACu1NJ;;ADp1NI;EACC,oBAAA;ACu1NL;;AD51NG;EACC,mBAAA;AC+1NJ;;AD51NI;EACC,oBAAA;AC+1NL;;ADp2NG;EACC,mBAAA;ACu2NJ;;ADp2NI;EACC,oBAAA;ACu2NL;;AD52NG;EACC,mBAAA;AC+2NJ;;AD52NI;EACC,oBAAA;AC+2NL;;ADp3NG;EACC,mBAAA;ACu3NJ;;ADp3NI;EACC,oBAAA;ACu3NL;;AD53NG;EACC,mBAAA;AC+3NJ;;AD53NI;EACC,oBAAA;AC+3NL;;ADp4NG;EACC,mBAAA;ACu4NJ;;ADp4NI;EACC,oBAAA;ACu4NL;;AD54NG;EACC,mBAAA;AC+4NJ;;AD54NI;EACC,oBAAA;AC+4NL;;ADp5NG;EACC,mBAAA;ACu5NJ;;ADp5NI;EACC,oBAAA;ACu5NL;;AD55NG;EACC,mBAAA;AC+5NJ;;AD55NI;EACC,oBAAA;AC+5NL;;ADp6NG;EACC,mBAAA;ACu6NJ;;ADp6NI;EACC,oBAAA;ACu6NL;;AD56NG;EACC,mBAAA;AC+6NJ;;AD56NI;EACC,oBAAA;AC+6NL;;ADp7NG;EACC,oBAAA;ACu7NJ;;ADp7NI;EACC,qBAAA;ACu7NL;;ADp9NG;EACC,gBAAA;ACu9NJ;;ADp9NI;EACC,iBAAA;ACu9NL;;AD59NG;EACC,gBAAA;AC+9NJ;;AD59NI;EACC,iBAAA;AC+9NL;;ADp+NG;EACC,gBAAA;ACu+NJ;;ADp+NI;EACC,iBAAA;ACu+NL;;AD5+NG;EACC,gBAAA;AC++NJ;;AD5+NI;EACC,iBAAA;AC++NL;;ADp/NG;EACC,gBAAA;ACu/NJ;;ADp/NI;EACC,iBAAA;ACu/NL;;AD5/NG;EACC,gBAAA;AC+/NJ;;AD5/NI;EACC,iBAAA;AC+/NL;;ADpgOG;EACC,gBAAA;ACugOJ;;ADpgOI;EACC,iBAAA;ACugOL;;AD5gOG;EACC,gBAAA;AC+gOJ;;AD5gOI;EACC,iBAAA;AC+gOL;;ADphOG;EACC,gBAAA;ACuhOJ;;ADphOI;EACC,iBAAA;ACuhOL;;AD5hOG;EACC,gBAAA;AC+hOJ;;AD5hOI;EACC,iBAAA;AC+hOL;;ADpiOG;EACC,iBAAA;ACuiOJ;;ADpiOI;EACC,kBAAA;ACuiOL;;AD5iOG;EACC,iBAAA;AC+iOJ;;AD5iOI;EACC,kBAAA;AC+iOL;;ADpjOG;EACC,iBAAA;ACujOJ;;ADpjOI;EACC,kBAAA;ACujOL;;AD5jOG;EACC,iBAAA;AC+jOJ;;AD5jOI;EACC,kBAAA;AC+jOL;;ADpkOG;EACC,iBAAA;ACukOJ;;ADpkOI;EACC,kBAAA;ACukOL;;AD5kOG;EACC,iBAAA;AC+kOJ;;AD5kOI;EACC,kBAAA;AC+kOL;;ADplOG;EACC,iBAAA;ACulOJ;;ADplOI;EACC,kBAAA;ACulOL;;AD5lOG;EACC,iBAAA;AC+lOJ;;AD5lOI;EACC,kBAAA;AC+lOL;;ADpmOG;EACC,iBAAA;ACumOJ;;ADpmOI;EACC,kBAAA;ACumOL;;AD5mOG;EACC,iBAAA;AC+mOJ;;AD5mOI;EACC,kBAAA;AC+mOL;;ADpnOG;EACC,iBAAA;ACunOJ;;ADpnOI;EACC,kBAAA;ACunOL;;AD5nOG;EACC,iBAAA;AC+nOJ;;AD5nOI;EACC,kBAAA;AC+nOL;;ADpoOG;EACC,iBAAA;ACuoOJ;;ADpoOI;EACC,kBAAA;ACuoOL;;AD5oOG;EACC,iBAAA;AC+oOJ;;AD5oOI;EACC,kBAAA;AC+oOL;;ADppOG;EACC,iBAAA;ACupOJ;;ADppOI;EACC,kBAAA;ACupOL;;AD5pOG;EACC,iBAAA;AC+pOJ;;AD5pOI;EACC,kBAAA;AC+pOL;;ADpqOG;EACC,iBAAA;ACuqOJ;;ADpqOI;EACC,kBAAA;ACuqOL;;AD5qOG;EACC,iBAAA;AC+qOJ;;AD5qOI;EACC,kBAAA;AC+qOL;;ADprOG;EACC,iBAAA;ACurOJ;;ADprOI;EACC,kBAAA;ACurOL;;AD5rOG;EACC,iBAAA;AC+rOJ;;AD5rOI;EACC,kBAAA;AC+rOL;;ADpsOG;EACC,iBAAA;ACusOJ;;ADpsOI;EACC,kBAAA;ACusOL;;AD5sOG;EACC,iBAAA;AC+sOJ;;AD5sOI;EACC,kBAAA;AC+sOL;;ADptOG;EACC,iBAAA;ACutOJ;;ADptOI;EACC,kBAAA;ACutOL;;AD5tOG;EACC,iBAAA;AC+tOJ;;AD5tOI;EACC,kBAAA;AC+tOL;;ADpuOG;EACC,iBAAA;ACuuOJ;;ADpuOI;EACC,kBAAA;ACuuOL;;AD5uOG;EACC,iBAAA;AC+uOJ;;AD5uOI;EACC,kBAAA;AC+uOL;;ADpvOG;EACC,iBAAA;ACuvOJ;;ADpvOI;EACC,kBAAA;ACuvOL;;AD5vOG;EACC,iBAAA;AC+vOJ;;AD5vOI;EACC,kBAAA;AC+vOL;;ADpwOG;EACC,iBAAA;ACuwOJ;;ADpwOI;EACC,kBAAA;ACuwOL;;AD5wOG;EACC,iBAAA;AC+wOJ;;AD5wOI;EACC,kBAAA;AC+wOL;;ADpxOG;EACC,iBAAA;ACuxOJ;;ADpxOI;EACC,kBAAA;ACuxOL;;AD5xOG;EACC,iBAAA;AC+xOJ;;AD5xOI;EACC,kBAAA;AC+xOL;;ADpyOG;EACC,iBAAA;ACuyOJ;;ADpyOI;EACC,kBAAA;ACuyOL;;AD5yOG;EACC,iBAAA;AC+yOJ;;AD5yOI;EACC,kBAAA;AC+yOL;;ADpzOG;EACC,iBAAA;ACuzOJ;;ADpzOI;EACC,kBAAA;ACuzOL;;AD5zOG;EACC,iBAAA;AC+zOJ;;AD5zOI;EACC,kBAAA;AC+zOL;;ADp0OG;EACC,iBAAA;ACu0OJ;;ADp0OI;EACC,kBAAA;ACu0OL;;AD50OG;EACC,iBAAA;AC+0OJ;;AD50OI;EACC,kBAAA;AC+0OL;;ADp1OG;EACC,iBAAA;ACu1OJ;;ADp1OI;EACC,kBAAA;ACu1OL;;AD51OG;EACC,iBAAA;AC+1OJ;;AD51OI;EACC,kBAAA;AC+1OL;;ADp2OG;EACC,iBAAA;ACu2OJ;;ADp2OI;EACC,kBAAA;ACu2OL;;ADp1OG;EACC,gBAAA;ACu1OJ;;ADp1OI;EACC,iBAAA;ACu1OL;;AD51OG;EACC,gBAAA;AC+1OJ;;AD51OI;EACC,iBAAA;AC+1OL;;ADp2OG;EACC,iBAAA;ACu2OJ;;ADp2OI;EACC,kBAAA;ACu2OL;;AD52OG;EACC,iBAAA;AC+2OJ;;AD52OI;EACC,kBAAA;AC+2OL;;ADp3OG;EACC,iBAAA;ACu3OJ;;ADp3OI;EACC,kBAAA;ACu3OL;;AD53OG;EACC,iBAAA;AC+3OJ;;AD53OI;EACC,kBAAA;AC+3OL;;ADp4OG;EACC,iBAAA;ACu4OJ;;ADp4OI;EACC,kBAAA;ACu4OL;;AD54OG;EACC,iBAAA;AC+4OJ;;AD54OI;EACC,kBAAA;AC+4OL;;ADp5OG;EACC,iBAAA;ACu5OJ;;ADp5OI;EACC,kBAAA;ACu5OL;;AD55OG;EACC,iBAAA;AC+5OJ;;AD55OI;EACC,kBAAA;AC+5OL;;ADp6OG;EACC,iBAAA;ACu6OJ;;ADp6OI;EACC,kBAAA;ACu6OL;;AD56OG;EACC,iBAAA;AC+6OJ;;AD56OI;EACC,kBAAA;AC+6OL;;ADp7OG;EACC,iBAAA;ACu7OJ;;ADp7OI;EACC,kBAAA;ACu7OL;;AD57OG;EACC,iBAAA;AC+7OJ;;AD57OI;EACC,kBAAA;AC+7OL;;ADp8OG;EACC,iBAAA;ACu8OJ;;ADp8OI;EACC,kBAAA;ACu8OL;;AD58OG;EACC,iBAAA;AC+8OJ;;AD58OI;EACC,kBAAA;AC+8OL;;ADp9OG;EACC,iBAAA;ACu9OJ;;ADp9OI;EACC,kBAAA;ACu9OL;;AD59OG;EACC,iBAAA;AC+9OJ;;AD59OI;EACC,kBAAA;AC+9OL;;ADp+OG;EACC,iBAAA;ACu+OJ;;ADp+OI;EACC,kBAAA;ACu+OL;;AD5+OG;EACC,iBAAA;AC++OJ;;AD5+OI;EACC,kBAAA;AC++OL;;ADp/OG;EACC,iBAAA;ACu/OJ;;ADp/OI;EACC,kBAAA;ACu/OL;;AD5/OG;EACC,iBAAA;AC+/OJ;;AD5/OI;EACC,kBAAA;AC+/OL;;ADpgPG;EACC,iBAAA;ACugPJ;;ADpgPI;EACC,kBAAA;ACugPL;;AD5gPG;EACC,iBAAA;AC+gPJ;;AD5gPI;EACC,kBAAA;AC+gPL;;ADphPG;EACC,kBAAA;ACuhPJ;;ADphPI;EACC,mBAAA;ACuhPL;;AD1iPG;EACC,gBAAA;EACA,iBAAA;AC6iPJ;;AD/iPG;EACC,gBAAA;EACA,iBAAA;ACkjPJ;;ADpjPG;EACC,gBAAA;EACA,iBAAA;ACujPJ;;ADzjPG;EACC,gBAAA;EACA,iBAAA;AC4jPJ;;AD9jPG;EACC,gBAAA;EACA,iBAAA;ACikPJ;;ADnkPG;EACC,gBAAA;EACA,iBAAA;ACskPJ;;ADxkPG;EACC,gBAAA;EACA,iBAAA;AC2kPJ;;AD7kPG;EACC,gBAAA;EACA,iBAAA;ACglPJ;;ADllPG;EACC,gBAAA;EACA,iBAAA;ACqlPJ;;ADvlPG;EACC,gBAAA;EACA,iBAAA;AC0lPJ;;AD5lPG;EACC,iBAAA;EACA,kBAAA;AC+lPJ;;ADjmPG;EACC,iBAAA;EACA,kBAAA;AComPJ;;ADtmPG;EACC,iBAAA;EACA,kBAAA;ACymPJ;;AD3mPG;EACC,iBAAA;EACA,kBAAA;AC8mPJ;;ADhnPG;EACC,iBAAA;EACA,kBAAA;ACmnPJ;;ADrnPG;EACC,iBAAA;EACA,kBAAA;ACwnPJ;;AD1nPG;EACC,iBAAA;EACA,kBAAA;AC6nPJ;;AD/nPG;EACC,iBAAA;EACA,kBAAA;ACkoPJ;;ADpoPG;EACC,iBAAA;EACA,kBAAA;ACuoPJ;;ADzoPG;EACC,iBAAA;EACA,kBAAA;AC4oPJ;;AD9oPG;EACC,iBAAA;EACA,kBAAA;ACipPJ;;ADnpPG;EACC,iBAAA;EACA,kBAAA;ACspPJ;;ADxpPG;EACC,iBAAA;EACA,kBAAA;AC2pPJ;;AD7pPG;EACC,iBAAA;EACA,kBAAA;ACgqPJ;;ADlqPG;EACC,iBAAA;EACA,kBAAA;ACqqPJ;;ADvqPG;EACC,iBAAA;EACA,kBAAA;AC0qPJ;;AD5qPG;EACC,iBAAA;EACA,kBAAA;AC+qPJ;;ADjrPG;EACC,iBAAA;EACA,kBAAA;ACorPJ;;ADtrPG;EACC,iBAAA;EACA,kBAAA;ACyrPJ;;AD3rPG;EACC,iBAAA;EACA,kBAAA;AC8rPJ;;ADhsPG;EACC,iBAAA;EACA,kBAAA;ACmsPJ;;ADrsPG;EACC,iBAAA;EACA,kBAAA;ACwsPJ;;AD1sPG;EACC,iBAAA;EACA,kBAAA;AC6sPJ;;AD/sPG;EACC,iBAAA;EACA,kBAAA;ACktPJ;;ADptPG;EACC,iBAAA;EACA,kBAAA;ACutPJ;;ADztPG;EACC,iBAAA;EACA,kBAAA;AC4tPJ;;AD9tPG;EACC,iBAAA;EACA,kBAAA;ACiuPJ;;ADnuPG;EACC,iBAAA;EACA,kBAAA;ACsuPJ;;ADxuPG;EACC,iBAAA;EACA,kBAAA;AC2uPJ;;AD7uPG;EACC,iBAAA;EACA,kBAAA;ACgvPJ;;ADlvPG;EACC,iBAAA;EACA,kBAAA;ACqvPJ;;ADvvPG;EACC,iBAAA;EACA,kBAAA;AC0vPJ;;AD5vPG;EACC,iBAAA;EACA,kBAAA;AC+vPJ;;ADjwPG;EACC,iBAAA;EACA,kBAAA;ACowPJ;;ADtwPG;EACC,iBAAA;EACA,kBAAA;ACywPJ;;AD3wPG;EACC,iBAAA;EACA,kBAAA;AC8wPJ;;ADhxPG;EACC,iBAAA;EACA,kBAAA;ACmxPJ;;ADrxPG;EACC,iBAAA;EACA,kBAAA;ACwxPJ;;AD1xPG;EACC,iBAAA;EACA,kBAAA;AC6xPJ;;AD/xPG;EACC,iBAAA;EACA,kBAAA;ACkyPJ;;ADpyPG;EACC,iBAAA;EACA,kBAAA;ACuyPJ;;ADjxPG;EACC,gBAAA;EACA,iBAAA;ACoxPJ;;ADtxPG;EACC,gBAAA;EACA,iBAAA;ACyxPJ;;AD3xPG;EACC,iBAAA;EACA,kBAAA;AC8xPJ;;ADhyPG;EACC,iBAAA;EACA,kBAAA;ACmyPJ;;ADryPG;EACC,iBAAA;EACA,kBAAA;ACwyPJ;;AD1yPG;EACC,iBAAA;EACA,kBAAA;AC6yPJ;;AD/yPG;EACC,iBAAA;EACA,kBAAA;ACkzPJ;;ADpzPG;EACC,iBAAA;EACA,kBAAA;ACuzPJ;;ADzzPG;EACC,iBAAA;EACA,kBAAA;AC4zPJ;;AD9zPG;EACC,iBAAA;EACA,kBAAA;ACi0PJ;;ADn0PG;EACC,iBAAA;EACA,kBAAA;ACs0PJ;;ADx0PG;EACC,iBAAA;EACA,kBAAA;AC20PJ;;AD70PG;EACC,iBAAA;EACA,kBAAA;ACg1PJ;;ADl1PG;EACC,iBAAA;EACA,kBAAA;ACq1PJ;;ADv1PG;EACC,iBAAA;EACA,kBAAA;AC01PJ;;AD51PG;EACC,iBAAA;EACA,kBAAA;AC+1PJ;;ADj2PG;EACC,iBAAA;EACA,kBAAA;ACo2PJ;;ADt2PG;EACC,iBAAA;EACA,kBAAA;ACy2PJ;;AD32PG;EACC,iBAAA;EACA,kBAAA;AC82PJ;;ADh3PG;EACC,iBAAA;EACA,kBAAA;ACm3PJ;;ADr3PG;EACC,iBAAA;EACA,kBAAA;ACw3PJ;;AD13PG;EACC,iBAAA;EACA,kBAAA;AC63PJ;;AD/3PG;EACC,iBAAA;EACA,kBAAA;ACk4PJ;;ADp4PG;EACC,iBAAA;EACA,kBAAA;ACu4PJ;;ADz4PG;EACC,kBAAA;EACA,mBAAA;AC44PJ;;ADh6PG;EACC,eAAA;EACA,kBAAA;ACm6PJ;;ADr6PG;EACC,eAAA;EACA,kBAAA;ACw6PJ;;AD16PG;EACC,eAAA;EACA,kBAAA;AC66PJ;;AD/6PG;EACC,eAAA;EACA,kBAAA;ACk7PJ;;ADp7PG;EACC,eAAA;EACA,kBAAA;ACu7PJ;;ADz7PG;EACC,eAAA;EACA,kBAAA;AC47PJ;;AD97PG;EACC,eAAA;EACA,kBAAA;ACi8PJ;;ADn8PG;EACC,eAAA;EACA,kBAAA;ACs8PJ;;ADx8PG;EACC,eAAA;EACA,kBAAA;AC28PJ;;AD78PG;EACC,eAAA;EACA,kBAAA;ACg9PJ;;ADl9PG;EACC,gBAAA;EACA,mBAAA;ACq9PJ;;ADv9PG;EACC,gBAAA;EACA,mBAAA;AC09PJ;;AD59PG;EACC,gBAAA;EACA,mBAAA;AC+9PJ;;ADj+PG;EACC,gBAAA;EACA,mBAAA;ACo+PJ;;ADt+PG;EACC,gBAAA;EACA,mBAAA;ACy+PJ;;AD3+PG;EACC,gBAAA;EACA,mBAAA;AC8+PJ;;ADh/PG;EACC,gBAAA;EACA,mBAAA;ACm/PJ;;ADr/PG;EACC,gBAAA;EACA,mBAAA;ACw/PJ;;AD1/PG;EACC,gBAAA;EACA,mBAAA;AC6/PJ;;AD//PG;EACC,gBAAA;EACA,mBAAA;ACkgQJ;;ADpgQG;EACC,gBAAA;EACA,mBAAA;ACugQJ;;ADzgQG;EACC,gBAAA;EACA,mBAAA;AC4gQJ;;AD9gQG;EACC,gBAAA;EACA,mBAAA;ACihQJ;;ADnhQG;EACC,gBAAA;EACA,mBAAA;ACshQJ;;ADxhQG;EACC,gBAAA;EACA,mBAAA;AC2hQJ;;AD7hQG;EACC,gBAAA;EACA,mBAAA;ACgiQJ;;ADliQG;EACC,gBAAA;EACA,mBAAA;ACqiQJ;;ADviQG;EACC,gBAAA;EACA,mBAAA;AC0iQJ;;AD5iQG;EACC,gBAAA;EACA,mBAAA;AC+iQJ;;ADjjQG;EACC,gBAAA;EACA,mBAAA;ACojQJ;;ADtjQG;EACC,gBAAA;EACA,mBAAA;ACyjQJ;;AD3jQG;EACC,gBAAA;EACA,mBAAA;AC8jQJ;;ADhkQG;EACC,gBAAA;EACA,mBAAA;ACmkQJ;;ADrkQG;EACC,gBAAA;EACA,mBAAA;ACwkQJ;;AD1kQG;EACC,gBAAA;EACA,mBAAA;AC6kQJ;;AD/kQG;EACC,gBAAA;EACA,mBAAA;ACklQJ;;ADplQG;EACC,gBAAA;EACA,mBAAA;ACulQJ;;ADzlQG;EACC,gBAAA;EACA,mBAAA;AC4lQJ;;AD9lQG;EACC,gBAAA;EACA,mBAAA;ACimQJ;;ADnmQG;EACC,gBAAA;EACA,mBAAA;ACsmQJ;;ADxmQG;EACC,gBAAA;EACA,mBAAA;AC2mQJ;;AD7mQG;EACC,gBAAA;EACA,mBAAA;ACgnQJ;;ADlnQG;EACC,gBAAA;EACA,mBAAA;ACqnQJ;;ADvnQG;EACC,gBAAA;EACA,mBAAA;AC0nQJ;;AD5nQG;EACC,gBAAA;EACA,mBAAA;AC+nQJ;;ADjoQG;EACC,gBAAA;EACA,mBAAA;ACooQJ;;ADtoQG;EACC,gBAAA;EACA,mBAAA;ACyoQJ;;AD3oQG;EACC,gBAAA;EACA,mBAAA;AC8oQJ;;ADhpQG;EACC,gBAAA;EACA,mBAAA;ACmpQJ;;ADrpQG;EACC,gBAAA;EACA,mBAAA;ACwpQJ;;AD1pQG;EACC,gBAAA;EACA,mBAAA;AC6pQJ;;ADvoQG;EACC,eAAA;EACA,kBAAA;AC0oQJ;;AD5oQG;EACC,eAAA;EACA,kBAAA;AC+oQJ;;ADjpQG;EACC,gBAAA;EACA,mBAAA;ACopQJ;;ADtpQG;EACC,gBAAA;EACA,mBAAA;ACypQJ;;AD3pQG;EACC,gBAAA;EACA,mBAAA;AC8pQJ;;ADhqQG;EACC,gBAAA;EACA,mBAAA;ACmqQJ;;ADrqQG;EACC,gBAAA;EACA,mBAAA;ACwqQJ;;AD1qQG;EACC,gBAAA;EACA,mBAAA;AC6qQJ;;AD/qQG;EACC,gBAAA;EACA,mBAAA;ACkrQJ;;ADprQG;EACC,gBAAA;EACA,mBAAA;ACurQJ;;ADzrQG;EACC,gBAAA;EACA,mBAAA;AC4rQJ;;AD9rQG;EACC,gBAAA;EACA,mBAAA;ACisQJ;;ADnsQG;EACC,gBAAA;EACA,mBAAA;ACssQJ;;ADxsQG;EACC,gBAAA;EACA,mBAAA;AC2sQJ;;AD7sQG;EACC,gBAAA;EACA,mBAAA;ACgtQJ;;ADltQG;EACC,gBAAA;EACA,mBAAA;ACqtQJ;;ADvtQG;EACC,gBAAA;EACA,mBAAA;AC0tQJ;;AD5tQG;EACC,gBAAA;EACA,mBAAA;AC+tQJ;;ADjuQG;EACC,gBAAA;EACA,mBAAA;ACouQJ;;ADtuQG;EACC,gBAAA;EACA,mBAAA;ACyuQJ;;AD3uQG;EACC,gBAAA;EACA,mBAAA;AC8uQJ;;ADhvQG;EACC,gBAAA;EACA,mBAAA;ACmvQJ;;ADrvQG;EACC,gBAAA;EACA,mBAAA;ACwvQJ;;AD1vQG;EACC,gBAAA;EACA,mBAAA;AC6vQJ;;AD/vQG;EACC,iBAAA;EACA,oBAAA;ACkwQJ;;AD1vQE;EACC,QAAA;AC6vQH;;AD3vQE;EACC,SAAA;AC8vQH;;ADlwQE;EACC,QAAA;ACqwQH;;ADnwQE;EACC,SAAA;ACswQH;;AD1wQE;EACC,QAAA;AC6wQH;;AD3wQE;EACC,SAAA;AC8wQH;;ADlxQE;EACC,QAAA;ACqxQH;;ADnxQE;EACC,SAAA;ACsxQH;;AD1xQE;EACC,QAAA;AC6xQH;;AD3xQE;EACC,SAAA;AC8xQH;;ADlyQE;EACC,QAAA;ACqyQH;;ADnyQE;EACC,SAAA;ACsyQH;;AD1yQE;EACC,QAAA;AC6yQH;;AD3yQE;EACC,SAAA;AC8yQH;;ADlzQE;EACC,QAAA;ACqzQH;;ADnzQE;EACC,SAAA;ACszQH;;AD1zQE;EACC,QAAA;AC6zQH;;AD3zQE;EACC,SAAA;AC8zQH;;ADl0QE;EACC,QAAA;ACq0QH;;ADn0QE;EACC,SAAA;ACs0QH;;AD10QE;EACC,SAAA;AC60QH;;AD30QE;EACC,UAAA;AC80QH;;ADl1QE;EACC,SAAA;ACq1QH;;ADn1QE;EACC,UAAA;ACs1QH;;AD11QE;EACC,SAAA;AC61QH;;AD31QE;EACC,UAAA;AC81QH;;ADl2QE;EACC,SAAA;ACq2QH;;ADn2QE;EACC,UAAA;ACs2QH;;AD12QE;EACC,SAAA;AC62QH;;AD32QE;EACC,UAAA;AC82QH;;ADl3QE;EACC,SAAA;ACq3QH;;ADn3QE;EACC,UAAA;ACs3QH;;AD13QE;EACC,SAAA;AC63QH;;AD33QE;EACC,UAAA;AC83QH;;ADl4QE;EACC,SAAA;ACq4QH;;ADn4QE;EACC,UAAA;ACs4QH;;AD14QE;EACC,SAAA;AC64QH;;AD34QE;EACC,UAAA;AC84QH;;ADl5QE;EACC,SAAA;ACq5QH;;ADn5QE;EACC,UAAA;ACs5QH;;AD15QE;EACC,SAAA;AC65QH;;AD35QE;EACC,UAAA;AC85QH;;ADl6QE;EACC,SAAA;ACq6QH;;ADn6QE;EACC,UAAA;ACs6QH;;AD16QE;EACC,SAAA;AC66QH;;AD36QE;EACC,UAAA;AC86QH;;ADl7QE;EACC,SAAA;ACq7QH;;ADn7QE;EACC,UAAA;ACs7QH;;AD17QE;EACC,SAAA;AC67QH;;AD37QE;EACC,UAAA;AC87QH;;ADl8QE;EACC,SAAA;ACq8QH;;ADn8QE;EACC,UAAA;ACs8QH;;AD18QE;EACC,SAAA;AC68QH;;AD38QE;EACC,UAAA;AC88QH;;ADl9QE;EACC,SAAA;ACq9QH;;ADn9QE;EACC,UAAA;ACs9QH;;AD19QE;EACC,SAAA;AC69QH;;AD39QE;EACC,UAAA;AC89QH;;ADl+QE;EACC,SAAA;ACq+QH;;ADn+QE;EACC,UAAA;ACs+QH;;AD1+QE;EACC,SAAA;AC6+QH;;AD3+QE;EACC,UAAA;AC8+QH;;ADl/QE;EACC,SAAA;ACq/QH;;ADn/QE;EACC,UAAA;ACs/QH;;AD1/QE;EACC,SAAA;AC6/QH;;AD3/QE;EACC,UAAA;AC8/QH;;ADlgRE;EACC,SAAA;ACqgRH;;ADngRE;EACC,UAAA;ACsgRH;;AD1gRE;EACC,SAAA;AC6gRH;;AD3gRE;EACC,UAAA;AC8gRH;;ADlhRE;EACC,SAAA;ACqhRH;;ADnhRE;EACC,UAAA;ACshRH;;AD1hRE;EACC,SAAA;AC6hRH;;AD3hRE;EACC,UAAA;AC8hRH;;ADliRE;EACC,SAAA;ACqiRH;;ADniRE;EACC,UAAA;ACsiRH;;AD1iRE;EACC,SAAA;AC6iRH;;AD3iRE;EACC,UAAA;AC8iRH;;ADljRE;EACC,SAAA;ACqjRH;;ADnjRE;EACC,UAAA;ACsjRH;;AD1jRE;EACC,SAAA;AC6jRH;;AD3jRE;EACC,UAAA;AC8jRH;;ADlkRE;EACC,SAAA;ACqkRH;;ADnkRE;EACC,UAAA;ACskRH;;AD1kRE;EACC,SAAA;AC6kRH;;AD3kRE;EACC,UAAA;AC8kRH;;ADllRE;EACC,SAAA;ACqlRH;;ADnlRE;EACC,UAAA;ACslRH;;AD1lRE;EACC,SAAA;AC6lRH;;AD3lRE;EACC,UAAA;AC8lRH;;ADlmRE;EACC,SAAA;ACqmRH;;ADnmRE;EACC,UAAA;ACsmRH;;AD1mRE;EACC,SAAA;AC6mRH;;AD3mRE;EACC,UAAA;AC8mRH;;ADlnRE;EACC,SAAA;ACqnRH;;ADnnRE;EACC,UAAA;ACsnRH;;AD1nRE;EACC,SAAA;AC6nRH;;AD3nRE;EACC,UAAA;AC8nRH;;ADloRE;EACC,SAAA;ACqoRH;;ADnoRE;EACC,UAAA;ACsoRH;;AD1oRE;EACC,SAAA;AC6oRH;;AD3oRE;EACC,UAAA;AC8oRH;;AD1oRE;EACC,QAAA;AC6oRH;;AD3oRE;EACC,SAAA;AC8oRH;;ADlpRE;EACC,QAAA;ACqpRH;;ADnpRE;EACC,SAAA;ACspRH;;AD1pRE;EACC,SAAA;AC6pRH;;AD3pRE;EACC,UAAA;AC8pRH;;ADlqRE;EACC,SAAA;ACqqRH;;ADnqRE;EACC,UAAA;ACsqRH;;AD1qRE;EACC,SAAA;AC6qRH;;AD3qRE;EACC,UAAA;AC8qRH;;ADlrRE;EACC,SAAA;ACqrRH;;ADnrRE;EACC,UAAA;ACsrRH;;AD1rRE;EACC,SAAA;AC6rRH;;AD3rRE;EACC,UAAA;AC8rRH;;ADlsRE;EACC,SAAA;ACqsRH;;ADnsRE;EACC,UAAA;ACssRH;;AD1sRE;EACC,SAAA;AC6sRH;;AD3sRE;EACC,UAAA;AC8sRH;;ADltRE;EACC,SAAA;ACqtRH;;ADntRE;EACC,UAAA;ACstRH;;AD1tRE;EACC,SAAA;AC6tRH;;AD3tRE;EACC,UAAA;AC8tRH;;ADluRE;EACC,SAAA;ACquRH;;ADnuRE;EACC,UAAA;ACsuRH;;AD1uRE;EACC,SAAA;AC6uRH;;AD3uRE;EACC,UAAA;AC8uRH;;ADlvRE;EACC,SAAA;ACqvRH;;ADnvRE;EACC,UAAA;ACsvRH;;AD1vRE;EACC,SAAA;AC6vRH;;AD3vRE;EACC,UAAA;AC8vRH;;ADlwRE;EACC,SAAA;ACqwRH;;ADnwRE;EACC,UAAA;ACswRH;;AD1wRE;EACC,SAAA;AC6wRH;;AD3wRE;EACC,UAAA;AC8wRH;;ADlxRE;EACC,SAAA;ACqxRH;;ADnxRE;EACC,UAAA;ACsxRH;;AD1xRE;EACC,SAAA;AC6xRH;;AD3xRE;EACC,UAAA;AC8xRH;;ADlyRE;EACC,SAAA;ACqyRH;;ADnyRE;EACC,UAAA;ACsyRH;;AD1yRE;EACC,SAAA;AC6yRH;;AD3yRE;EACC,UAAA;AC8yRH;;ADlzRE;EACC,SAAA;ACqzRH;;ADnzRE;EACC,UAAA;ACszRH;;AD1zRE;EACC,SAAA;AC6zRH;;AD3zRE;EACC,UAAA;AC8zRH;;ADl0RE;EACC,SAAA;ACq0RH;;ADn0RE;EACC,UAAA;ACs0RH;;AD10RE;EACC,UAAA;AC60RH;;AD30RE;EACC,WAAA;AC80RH;;AD11RE;EACC,UAAA;AC61RH;;AD31RE;EACC,WAAA;AC81RH;;ADl2RE;EACC,UAAA;ACq2RH;;ADn2RE;EACC,WAAA;ACs2RH;;AD12RE;EACC,UAAA;AC62RH;;AD32RE;EACC,WAAA;AC82RH;;ADl3RE;EACC,UAAA;ACq3RH;;ADn3RE;EACC,WAAA;ACs3RH;;AD13RE;EACC,UAAA;AC63RH;;AD33RE;EACC,WAAA;AC83RH;;ADl4RE;EACC,UAAA;ACq4RH;;ADn4RE;EACC,WAAA;ACs4RH;;AD14RE;EACC,UAAA;AC64RH;;AD34RE;EACC,WAAA;AC84RH;;ADl5RE;EACC,UAAA;ACq5RH;;ADn5RE;EACC,WAAA;ACs5RH;;AD15RE;EACC,UAAA;AC65RH;;AD35RE;EACC,WAAA;AC85RH;;ADl6RE;EACC,UAAA;ACq6RH;;ADn6RE;EACC,WAAA;ACs6RH;;AD16RE;EACC,WAAA;AC66RH;;AD36RE;EACC,YAAA;AC86RH;;ADl7RE;EACC,WAAA;ACq7RH;;ADn7RE;EACC,YAAA;ACs7RH;;AD17RE;EACC,WAAA;AC67RH;;AD37RE;EACC,YAAA;AC87RH;;ADl8RE;EACC,WAAA;ACq8RH;;ADn8RE;EACC,YAAA;ACs8RH;;AD18RE;EACC,WAAA;AC68RH;;AD38RE;EACC,YAAA;AC88RH;;ADl9RE;EACC,WAAA;ACq9RH;;ADn9RE;EACC,YAAA;ACs9RH;;AD19RE;EACC,WAAA;AC69RH;;AD39RE;EACC,YAAA;AC89RH;;ADl+RE;EACC,WAAA;ACq+RH;;ADn+RE;EACC,YAAA;ACs+RH;;AD1+RE;EACC,WAAA;AC6+RH;;AD3+RE;EACC,YAAA;AC8+RH;;ADl/RE;EACC,WAAA;ACq/RH;;ADn/RE;EACC,YAAA;ACs/RH;;AD1/RE;EACC,WAAA;AC6/RH;;AD3/RE;EACC,YAAA;AC8/RH;;ADlgSE;EACC,WAAA;ACqgSH;;ADngSE;EACC,YAAA;ACsgSH;;AD1gSE;EACC,WAAA;AC6gSH;;AD3gSE;EACC,YAAA;AC8gSH;;ADlhSE;EACC,WAAA;ACqhSH;;ADnhSE;EACC,YAAA;ACshSH;;AD1hSE;EACC,WAAA;AC6hSH;;AD3hSE;EACC,YAAA;AC8hSH;;ADliSE;EACC,WAAA;ACqiSH;;ADniSE;EACC,YAAA;ACsiSH;;AD1iSE;EACC,WAAA;AC6iSH;;AD3iSE;EACC,YAAA;AC8iSH;;ADljSE;EACC,WAAA;ACqjSH;;ADnjSE;EACC,YAAA;ACsjSH;;AD1jSE;EACC,WAAA;AC6jSH;;AD3jSE;EACC,YAAA;AC8jSH;;ADlkSE;EACC,WAAA;ACqkSH;;ADnkSE;EACC,YAAA;ACskSH;;AD1kSE;EACC,WAAA;AC6kSH;;AD3kSE;EACC,YAAA;AC8kSH;;ADllSE;EACC,WAAA;ACqlSH;;ADnlSE;EACC,YAAA;ACslSH;;AD1lSE;EACC,WAAA;AC6lSH;;AD3lSE;EACC,YAAA;AC8lSH;;ADlmSE;EACC,WAAA;ACqmSH;;ADnmSE;EACC,YAAA;ACsmSH;;AD1mSE;EACC,WAAA;AC6mSH;;AD3mSE;EACC,YAAA;AC8mSH;;ADlnSE;EACC,WAAA;ACqnSH;;ADnnSE;EACC,YAAA;ACsnSH;;AD1nSE;EACC,WAAA;AC6nSH;;AD3nSE;EACC,YAAA;AC8nSH;;ADloSE;EACC,WAAA;ACqoSH;;ADnoSE;EACC,YAAA;ACsoSH;;AD1oSE;EACC,WAAA;AC6oSH;;AD3oSE;EACC,YAAA;AC8oSH;;ADlpSE;EACC,WAAA;ACqpSH;;ADnpSE;EACC,YAAA;ACspSH;;AD1pSE;EACC,WAAA;AC6pSH;;AD3pSE;EACC,YAAA;AC8pSH;;ADlqSE;EACC,WAAA;ACqqSH;;ADnqSE;EACC,YAAA;ACsqSH;;AD1qSE;EACC,WAAA;AC6qSH;;AD3qSE;EACC,YAAA;AC8qSH;;ADlrSE;EACC,WAAA;ACqrSH;;ADnrSE;EACC,YAAA;ACsrSH;;AD1rSE;EACC,WAAA;AC6rSH;;AD3rSE;EACC,YAAA;AC8rSH;;ADlsSE;EACC,WAAA;ACqsSH;;ADnsSE;EACC,YAAA;ACssSH;;AD1sSE;EACC,WAAA;AC6sSH;;AD3sSE;EACC,YAAA;AC8sSH;;ADltSE;EACC,WAAA;ACqtSH;;ADntSE;EACC,YAAA;ACstSH;;AD1tSE;EACC,WAAA;AC6tSH;;AD3tSE;EACC,YAAA;AC8tSH;;ADluSE;EACC,WAAA;ACquSH;;ADnuSE;EACC,YAAA;ACsuSH;;AD1uSE;EACC,WAAA;AC6uSH;;AD3uSE;EACC,YAAA;AC8uSH;;AD1uSE;EACC,UAAA;AC6uSH;;AD3uSE;EACC,WAAA;AC8uSH;;ADlvSE;EACC,UAAA;ACqvSH;;ADnvSE;EACC,WAAA;ACsvSH;;AD1vSE;EACC,WAAA;AC6vSH;;AD3vSE;EACC,YAAA;AC8vSH;;ADlwSE;EACC,WAAA;ACqwSH;;ADnwSE;EACC,YAAA;ACswSH;;AD1wSE;EACC,WAAA;AC6wSH;;AD3wSE;EACC,YAAA;AC8wSH;;ADlxSE;EACC,WAAA;ACqxSH;;ADnxSE;EACC,YAAA;ACsxSH;;AD1xSE;EACC,WAAA;AC6xSH;;AD3xSE;EACC,YAAA;AC8xSH;;ADlySE;EACC,WAAA;ACqySH;;ADnySE;EACC,YAAA;ACsySH;;AD1ySE;EACC,WAAA;AC6ySH;;AD3ySE;EACC,YAAA;AC8ySH;;ADlzSE;EACC,WAAA;ACqzSH;;ADnzSE;EACC,YAAA;ACszSH;;AD1zSE;EACC,WAAA;AC6zSH;;AD3zSE;EACC,YAAA;AC8zSH;;ADl0SE;EACC,WAAA;ACq0SH;;ADn0SE;EACC,YAAA;ACs0SH;;AD10SE;EACC,WAAA;AC60SH;;AD30SE;EACC,YAAA;AC80SH;;ADl1SE;EACC,WAAA;ACq1SH;;ADn1SE;EACC,YAAA;ACs1SH;;AD11SE;EACC,WAAA;AC61SH;;AD31SE;EACC,YAAA;AC81SH;;ADl2SE;EACC,WAAA;ACq2SH;;ADn2SE;EACC,YAAA;ACs2SH;;AD12SE;EACC,WAAA;AC62SH;;AD32SE;EACC,YAAA;AC82SH;;ADl3SE;EACC,WAAA;ACq3SH;;ADn3SE;EACC,YAAA;ACs3SH;;AD13SE;EACC,WAAA;AC63SH;;AD33SE;EACC,YAAA;AC83SH;;ADl4SE;EACC,WAAA;ACq4SH;;ADn4SE;EACC,YAAA;ACs4SH;;AD14SE;EACC,WAAA;AC64SH;;AD34SE;EACC,YAAA;AC84SH;;ADl5SE;EACC,WAAA;ACq5SH;;ADn5SE;EACC,YAAA;ACs5SH;;AD15SE;EACC,WAAA;AC65SH;;AD35SE;EACC,YAAA;AC85SH;;ADl6SE;EACC,WAAA;ACq6SH;;ADn6SE;EACC,YAAA;ACs6SH;;AD16SE;EACC,YAAA;AC66SH;;AD36SE;EACC,aAAA;AC86SH;;AD17SE;EACC,WAAA;AC67SH;;AD37SE;EACC,YAAA;AC87SH;;ADl8SE;EACC,WAAA;ACq8SH;;ADn8SE;EACC,YAAA;ACs8SH;;AD18SE;EACC,WAAA;AC68SH;;AD38SE;EACC,YAAA;AC88SH;;ADl9SE;EACC,WAAA;ACq9SH;;ADn9SE;EACC,YAAA;ACs9SH;;AD19SE;EACC,WAAA;AC69SH;;AD39SE;EACC,YAAA;AC89SH;;ADl+SE;EACC,WAAA;ACq+SH;;ADn+SE;EACC,YAAA;ACs+SH;;AD1+SE;EACC,WAAA;AC6+SH;;AD3+SE;EACC,YAAA;AC8+SH;;ADl/SE;EACC,WAAA;ACq/SH;;ADn/SE;EACC,YAAA;ACs/SH;;AD1/SE;EACC,WAAA;AC6/SH;;AD3/SE;EACC,YAAA;AC8/SH;;ADlgTE;EACC,WAAA;ACqgTH;;ADngTE;EACC,YAAA;ACsgTH;;AD1gTE;EACC,YAAA;AC6gTH;;AD3gTE;EACC,aAAA;AC8gTH;;ADlhTE;EACC,YAAA;ACqhTH;;ADnhTE;EACC,aAAA;ACshTH;;AD1hTE;EACC,YAAA;AC6hTH;;AD3hTE;EACC,aAAA;AC8hTH;;ADliTE;EACC,YAAA;ACqiTH;;ADniTE;EACC,aAAA;ACsiTH;;AD1iTE;EACC,YAAA;AC6iTH;;AD3iTE;EACC,aAAA;AC8iTH;;ADljTE;EACC,YAAA;ACqjTH;;ADnjTE;EACC,aAAA;ACsjTH;;AD1jTE;EACC,YAAA;AC6jTH;;AD3jTE;EACC,aAAA;AC8jTH;;ADlkTE;EACC,YAAA;ACqkTH;;ADnkTE;EACC,aAAA;ACskTH;;AD1kTE;EACC,YAAA;AC6kTH;;AD3kTE;EACC,aAAA;AC8kTH;;ADllTE;EACC,YAAA;ACqlTH;;ADnlTE;EACC,aAAA;ACslTH;;AD1lTE;EACC,YAAA;AC6lTH;;AD3lTE;EACC,aAAA;AC8lTH;;ADlmTE;EACC,YAAA;ACqmTH;;ADnmTE;EACC,aAAA;ACsmTH;;AD1mTE;EACC,YAAA;AC6mTH;;AD3mTE;EACC,aAAA;AC8mTH;;ADlnTE;EACC,YAAA;ACqnTH;;ADnnTE;EACC,aAAA;ACsnTH;;AD1nTE;EACC,YAAA;AC6nTH;;AD3nTE;EACC,aAAA;AC8nTH;;ADloTE;EACC,YAAA;ACqoTH;;ADnoTE;EACC,aAAA;ACsoTH;;AD1oTE;EACC,YAAA;AC6oTH;;AD3oTE;EACC,aAAA;AC8oTH;;ADlpTE;EACC,YAAA;ACqpTH;;ADnpTE;EACC,aAAA;ACspTH;;AD1pTE;EACC,YAAA;AC6pTH;;AD3pTE;EACC,aAAA;AC8pTH;;ADlqTE;EACC,YAAA;ACqqTH;;ADnqTE;EACC,aAAA;ACsqTH;;AD1qTE;EACC,YAAA;AC6qTH;;AD3qTE;EACC,aAAA;AC8qTH;;ADlrTE;EACC,YAAA;ACqrTH;;ADnrTE;EACC,aAAA;ACsrTH;;AD1rTE;EACC,YAAA;AC6rTH;;AD3rTE;EACC,aAAA;AC8rTH;;ADlsTE;EACC,YAAA;ACqsTH;;ADnsTE;EACC,aAAA;ACssTH;;AD1sTE;EACC,YAAA;AC6sTH;;AD3sTE;EACC,aAAA;AC8sTH;;ADltTE;EACC,YAAA;ACqtTH;;ADntTE;EACC,aAAA;ACstTH;;AD1tTE;EACC,YAAA;AC6tTH;;AD3tTE;EACC,aAAA;AC8tTH;;ADluTE;EACC,YAAA;ACquTH;;ADnuTE;EACC,aAAA;ACsuTH;;AD1uTE;EACC,YAAA;AC6uTH;;AD3uTE;EACC,aAAA;AC8uTH;;ADlvTE;EACC,YAAA;ACqvTH;;ADnvTE;EACC,aAAA;ACsvTH;;AD1vTE;EACC,YAAA;AC6vTH;;AD3vTE;EACC,aAAA;AC8vTH;;ADlwTE;EACC,YAAA;ACqwTH;;ADnwTE;EACC,aAAA;ACswTH;;AD1wTE;EACC,YAAA;AC6wTH;;AD3wTE;EACC,aAAA;AC8wTH;;ADlxTE;EACC,YAAA;ACqxTH;;ADnxTE;EACC,aAAA;ACsxTH;;AD1xTE;EACC,YAAA;AC6xTH;;AD3xTE;EACC,aAAA;AC8xTH;;ADlyTE;EACC,YAAA;ACqyTH;;ADnyTE;EACC,aAAA;ACsyTH;;AD1yTE;EACC,YAAA;AC6yTH;;AD3yTE;EACC,aAAA;AC8yTH;;ADlzTE;EACC,YAAA;ACqzTH;;ADnzTE;EACC,aAAA;ACszTH;;AD1zTE;EACC,YAAA;AC6zTH;;AD3zTE;EACC,aAAA;AC8zTH;;ADl0TE;EACC,YAAA;ACq0TH;;ADn0TE;EACC,aAAA;ACs0TH;;AD10TE;EACC,YAAA;AC60TH;;AD30TE;EACC,aAAA;AC80TH;;AD10TE;EACC,WAAA;AC60TH;;AD30TE;EACC,YAAA;AC80TH;;ADl1TE;EACC,WAAA;ACq1TH;;ADn1TE;EACC,YAAA;ACs1TH;;AD11TE;EACC,YAAA;AC61TH;;AD31TE;EACC,aAAA;AC81TH;;ADl2TE;EACC,YAAA;ACq2TH;;ADn2TE;EACC,aAAA;ACs2TH;;AD12TE;EACC,YAAA;AC62TH;;AD32TE;EACC,aAAA;AC82TH;;ADl3TE;EACC,YAAA;ACq3TH;;ADn3TE;EACC,aAAA;ACs3TH;;AD13TE;EACC,YAAA;AC63TH;;AD33TE;EACC,aAAA;AC83TH;;ADl4TE;EACC,YAAA;ACq4TH;;ADn4TE;EACC,aAAA;ACs4TH;;AD14TE;EACC,YAAA;AC64TH;;AD34TE;EACC,aAAA;AC84TH;;ADl5TE;EACC,YAAA;ACq5TH;;ADn5TE;EACC,aAAA;ACs5TH;;AD15TE;EACC,YAAA;AC65TH;;AD35TE;EACC,aAAA;AC85TH;;ADl6TE;EACC,YAAA;ACq6TH;;ADn6TE;EACC,aAAA;ACs6TH;;AD16TE;EACC,YAAA;AC66TH;;AD36TE;EACC,aAAA;AC86TH;;ADl7TE;EACC,YAAA;ACq7TH;;ADn7TE;EACC,aAAA;ACs7TH;;AD17TE;EACC,YAAA;AC67TH;;AD37TE;EACC,aAAA;AC87TH;;ADl8TE;EACC,YAAA;ACq8TH;;ADn8TE;EACC,aAAA;ACs8TH;;AD18TE;EACC,YAAA;AC68TH;;AD38TE;EACC,aAAA;AC88TH;;ADl9TE;EACC,YAAA;ACq9TH;;ADn9TE;EACC,aAAA;ACs9TH;;AD19TE;EACC,YAAA;AC69TH;;AD39TE;EACC,aAAA;AC89TH;;ADl+TE;EACC,YAAA;ACq+TH;;ADn+TE;EACC,aAAA;ACs+TH;;AD1+TE;EACC,YAAA;AC6+TH;;AD3+TE;EACC,aAAA;AC8+TH;;ADl/TE;EACC,YAAA;ACq/TH;;ADn/TE;EACC,aAAA;ACs/TH;;AD1/TE;EACC,YAAA;AC6/TH;;AD3/TE;EACC,aAAA;AC8/TH;;ADlgUE;EACC,YAAA;ACqgUH;;ADngUE;EACC,aAAA;ACsgUH;;AD1gUE;EACC,aAAA;AC6gUH;;AD3gUE;EACC,cAAA;AC8gUH;;AD1hUE;EACC,SAAA;AC6hUH;;AD3hUE;EACC,UAAA;AC8hUH;;ADliUE;EACC,SAAA;ACqiUH;;ADniUE;EACC,UAAA;ACsiUH;;AD1iUE;EACC,SAAA;AC6iUH;;AD3iUE;EACC,UAAA;AC8iUH;;ADljUE;EACC,SAAA;ACqjUH;;ADnjUE;EACC,UAAA;ACsjUH;;AD1jUE;EACC,SAAA;AC6jUH;;AD3jUE;EACC,UAAA;AC8jUH;;ADlkUE;EACC,SAAA;ACqkUH;;ADnkUE;EACC,UAAA;ACskUH;;AD1kUE;EACC,SAAA;AC6kUH;;AD3kUE;EACC,UAAA;AC8kUH;;ADllUE;EACC,SAAA;ACqlUH;;ADnlUE;EACC,UAAA;ACslUH;;AD1lUE;EACC,SAAA;AC6lUH;;AD3lUE;EACC,UAAA;AC8lUH;;ADlmUE;EACC,SAAA;ACqmUH;;ADnmUE;EACC,UAAA;ACsmUH;;AD1mUE;EACC,UAAA;AC6mUH;;AD3mUE;EACC,WAAA;AC8mUH;;ADlnUE;EACC,UAAA;ACqnUH;;ADnnUE;EACC,WAAA;ACsnUH;;AD1nUE;EACC,UAAA;AC6nUH;;AD3nUE;EACC,WAAA;AC8nUH;;ADloUE;EACC,UAAA;ACqoUH;;ADnoUE;EACC,WAAA;ACsoUH;;AD1oUE;EACC,UAAA;AC6oUH;;AD3oUE;EACC,WAAA;AC8oUH;;ADlpUE;EACC,UAAA;ACqpUH;;ADnpUE;EACC,WAAA;ACspUH;;AD1pUE;EACC,UAAA;AC6pUH;;AD3pUE;EACC,WAAA;AC8pUH;;ADlqUE;EACC,UAAA;ACqqUH;;ADnqUE;EACC,WAAA;ACsqUH;;AD1qUE;EACC,UAAA;AC6qUH;;AD3qUE;EACC,WAAA;AC8qUH;;ADlrUE;EACC,UAAA;ACqrUH;;ADnrUE;EACC,WAAA;ACsrUH;;AD1rUE;EACC,UAAA;AC6rUH;;AD3rUE;EACC,WAAA;AC8rUH;;ADlsUE;EACC,UAAA;ACqsUH;;ADnsUE;EACC,WAAA;ACssUH;;AD1sUE;EACC,UAAA;AC6sUH;;AD3sUE;EACC,WAAA;AC8sUH;;ADltUE;EACC,UAAA;ACqtUH;;ADntUE;EACC,WAAA;ACstUH;;AD1tUE;EACC,UAAA;AC6tUH;;AD3tUE;EACC,WAAA;AC8tUH;;ADluUE;EACC,UAAA;ACquUH;;ADnuUE;EACC,WAAA;ACsuUH;;AD1uUE;EACC,UAAA;AC6uUH;;AD3uUE;EACC,WAAA;AC8uUH;;ADlvUE;EACC,UAAA;ACqvUH;;ADnvUE;EACC,WAAA;ACsvUH;;AD1vUE;EACC,UAAA;AC6vUH;;AD3vUE;EACC,WAAA;AC8vUH;;ADlwUE;EACC,UAAA;ACqwUH;;ADnwUE;EACC,WAAA;ACswUH;;AD1wUE;EACC,UAAA;AC6wUH;;AD3wUE;EACC,WAAA;AC8wUH;;ADlxUE;EACC,UAAA;ACqxUH;;ADnxUE;EACC,WAAA;ACsxUH;;AD1xUE;EACC,UAAA;AC6xUH;;AD3xUE;EACC,WAAA;AC8xUH;;ADlyUE;EACC,UAAA;ACqyUH;;ADnyUE;EACC,WAAA;ACsyUH;;AD1yUE;EACC,UAAA;AC6yUH;;AD3yUE;EACC,WAAA;AC8yUH;;ADlzUE;EACC,UAAA;ACqzUH;;ADnzUE;EACC,WAAA;ACszUH;;AD1zUE;EACC,UAAA;AC6zUH;;AD3zUE;EACC,WAAA;AC8zUH;;ADl0UE;EACC,UAAA;ACq0UH;;ADn0UE;EACC,WAAA;ACs0UH;;AD10UE;EACC,UAAA;AC60UH;;AD30UE;EACC,WAAA;AC80UH;;ADl1UE;EACC,UAAA;ACq1UH;;ADn1UE;EACC,WAAA;ACs1UH;;AD11UE;EACC,UAAA;AC61UH;;AD31UE;EACC,WAAA;AC81UH;;ADl2UE;EACC,UAAA;ACq2UH;;ADn2UE;EACC,WAAA;ACs2UH;;AD12UE;EACC,UAAA;AC62UH;;AD32UE;EACC,WAAA;AC82UH;;ADl3UE;EACC,UAAA;ACq3UH;;ADn3UE;EACC,WAAA;ACs3UH;;AD13UE;EACC,UAAA;AC63UH;;AD33UE;EACC,WAAA;AC83UH;;ADl4UE;EACC,UAAA;ACq4UH;;ADn4UE;EACC,WAAA;ACs4UH;;AD14UE;EACC,UAAA;AC64UH;;AD34UE;EACC,WAAA;AC84UH;;ADl5UE;EACC,UAAA;ACq5UH;;ADn5UE;EACC,WAAA;ACs5UH;;AD15UE;EACC,UAAA;AC65UH;;AD35UE;EACC,WAAA;AC85UH;;ADl6UE;EACC,UAAA;ACq6UH;;ADn6UE;EACC,WAAA;ACs6UH;;AD16UE;EACC,UAAA;AC66UH;;AD36UE;EACC,WAAA;AC86UH;;AD16UE;EACC,SAAA;AC66UH;;AD36UE;EACC,UAAA;AC86UH;;ADl7UE;EACC,SAAA;ACq7UH;;ADn7UE;EACC,UAAA;ACs7UH;;AD17UE;EACC,UAAA;AC67UH;;AD37UE;EACC,WAAA;AC87UH;;ADl8UE;EACC,UAAA;ACq8UH;;ADn8UE;EACC,WAAA;ACs8UH;;AD18UE;EACC,UAAA;AC68UH;;AD38UE;EACC,WAAA;AC88UH;;ADl9UE;EACC,UAAA;ACq9UH;;ADn9UE;EACC,WAAA;ACs9UH;;AD19UE;EACC,UAAA;AC69UH;;AD39UE;EACC,WAAA;AC89UH;;ADl+UE;EACC,UAAA;ACq+UH;;ADn+UE;EACC,WAAA;ACs+UH;;AD1+UE;EACC,UAAA;AC6+UH;;AD3+UE;EACC,WAAA;AC8+UH;;ADl/UE;EACC,UAAA;ACq/UH;;ADn/UE;EACC,WAAA;ACs/UH;;AD1/UE;EACC,UAAA;AC6/UH;;AD3/UE;EACC,WAAA;AC8/UH;;ADlgVE;EACC,UAAA;ACqgVH;;ADngVE;EACC,WAAA;ACsgVH;;AD1gVE;EACC,UAAA;AC6gVH;;AD3gVE;EACC,WAAA;AC8gVH;;ADlhVE;EACC,UAAA;ACqhVH;;ADnhVE;EACC,WAAA;ACshVH;;AD1hVE;EACC,UAAA;AC6hVH;;AD3hVE;EACC,WAAA;AC8hVH;;ADliVE;EACC,UAAA;ACqiVH;;ADniVE;EACC,WAAA;ACsiVH;;AD1iVE;EACC,UAAA;AC6iVH;;AD3iVE;EACC,WAAA;AC8iVH;;ADljVE;EACC,UAAA;ACqjVH;;ADnjVE;EACC,WAAA;ACsjVH;;AD1j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", + "file": "mainweb.css" +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/scss/mainweb.min.css b/uni_modules/UniDevTools/src/tmui/scss/mainweb.min.css new file mode 100644 index 0000000..674ae08 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/mainweb.min.css @@ -0,0 +1,8968 @@ +.blur { + backdrop-filter: blur(5px); + background-color: rgba(0, 0, 0, 0.3); +} +.overflow { + overflow: hidden; +} +.overflow-x { + overflow-x: hidden; + overflow-y: auto; +} +.overflow-y { + overflow-x: auto; + overflow-y: hidden; +} +.relative { + position: relative !important; +} +.absolute { + position: absolute !important; +} +.fixed { + position: fixed !important; +} +.sticky { + position: sticky !important; +} +.fulled-height { + display: flex; + align-items: stretch; +} +.clear { + clear: both; +} +.fulled { + width: 100%; + display: block; +} +.fulled-height { + height: 100%; + display: block; +} +.gray-100 { + filter: grayscale(100%); +} +.gray { + filter: grayscale(25%); +} +.d-inline-block { + display: inline-block !important; +} +.d-block { + display: block; +} +.vertical-align-top { + vertical-align: top; +} +.vertical-align-middle { + vertical-align: middle; +} +.vertical-align-bottom { + vertical-align: bottom; +} +.wrap { + white-space: pre-wrap; + word-break: break-all; +} +.nowrap { + white-space: nowrap; +} +.vertical-align-top { + vertical-align: top; +} +.vertical-align-middle { + vertical-align: middle; +} +.vertical-align-bottom { + vertical-align: bottom; +} +.zIndex-0 { + z-index: 0; +} +.zIndex-n0 { + z-index: 0; +} +.zIndex-1 { + z-index: 1; +} +.zIndex-n1 { + z-index: 4; +} +.zIndex-2 { + z-index: 2; +} +.zIndex-n2 { + z-index: 8; +} +.zIndex-3 { + z-index: 3; +} +.zIndex-n3 { + z-index: 12; +} +.zIndex-4 { + z-index: 4; +} +.zIndex-n4 { + z-index: 16; +} +.zIndex-5 { + z-index: 5; +} +.zIndex-n5 { + z-index: 20; +} +.zIndex-6 { + z-index: 6; +} +.zIndex-n6 { + z-index: 24; +} +.zIndex-7 { + z-index: 7; +} +.zIndex-n7 { + z-index: 28; +} +.zIndex-8 { + z-index: 8; +} +.zIndex-n8 { + z-index: 32; +} +.zIndex-9 { + z-index: 9; +} +.zIndex-n9 { + z-index: 36; +} +.zIndex-10 { + z-index: 10; +} +.zIndex-n10 { + z-index: 40; +} +.zIndex-11 { + z-index: 11; +} +.zIndex-n11 { + z-index: 44; +} +.zIndex-12 { + z-index: 12; +} +.zIndex-n12 { + z-index: 48; +} +.zIndex-13 { + z-index: 13; +} +.zIndex-n13 { + z-index: 52; +} +.zIndex-14 { + z-index: 14; +} +.zIndex-n14 { + z-index: 56; +} +.zIndex-15 { + z-index: 15; +} +.zIndex-n15 { + z-index: 60; +} +.zIndex-16 { + z-index: 16; +} +.zIndex-n16 { + z-index: 64; +} +.zIndex-17 { + z-index: 17; +} +.zIndex-n17 { + z-index: 68; +} +.zIndex-18 { + z-index: 18; +} +.zIndex-n18 { + z-index: 72; +} +.zIndex-19 { + z-index: 19; +} +.zIndex-n19 { + z-index: 76; +} +.zIndex-20 { + z-index: 20; +} +.zIndex-n20 { + z-index: 80; +} +.zIndex-21 { + z-index: 21; +} +.zIndex-n21 { + z-index: 84; +} +.zIndex-22 { + z-index: 22; +} +.zIndex-n22 { + z-index: 88; +} +.zIndex-23 { + z-index: 23; +} +.zIndex-n23 { + z-index: 92; +} +.zIndex-24 { + z-index: 24; +} +.zIndex-n24 { + z-index: 96; +} +.zIndex-25 { + z-index: 25; +} +.zIndex-n25 { + z-index: 100; +} +.zIndex-26 { + z-index: 26; +} +.zIndex-n26 { + z-index: 104; +} +.text-overflow { + width: 100%; + display: block; + white-space: nowrap; + overflow: hidden; +} +.text-overflow-1 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical; +} +.text-overflow-2 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} +.text-overflow-3 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; +} +.text-overflow-4 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical; +} +.text-overflow { + text-overflow: ellipsis; +} +.text-overflow-1 { + text-overflow: ellipsis; + lines: 1; +} +.text-overflow-2 { + text-overflow: ellipsis; + lines: 2; +} +.text-overflow-3 { + text-overflow: ellipsis; + lines: 3; +} +.text-overflow-4 { + text-overflow: ellipsis; + lines: 4; +} +.wrap { + word-wrap: break-word; +} +.text-delete { + text-decoration: line-through; +} +.text-underline { + text-decoration: underline; +} +.text-size-xxs { + font-size: 12px; +} +.text-size-xxs span { + font-size: 12px; +} +.text-size-xxs { + font-size: 12px; +} +.text-size-xs { + font-size: 13px; +} +.text-size-xs span { + font-size: 13px; +} +.text-size-xs { + font-size: 13px; +} +.text-size-s { + font-size: 13px; +} +.text-size-s span { + font-size: 13px; +} +.text-size-s { + font-size: 13px; +} +.text-size-m { + font-size: 14px; +} +.text-size-m span { + font-size: 14px; +} +.text-size-m { + font-size: 14px; +} +.text-size-n { + font-size: 16px; +} +.text-size-n span { + font-size: 16px; +} +.text-size-n { + font-size: 16px; +} +.text-size-g { + font-size: 18px; +} +.text-size-g span { + font-size: 18px; +} +.text-size-g { + font-size: 18px; +} +.text-size-lg { + font-size: 20px; +} +.text-size-lg span { + font-size: 20px; +} +.text-size-lg { + font-size: 20px; +} +.text-size-xl { + font-size: 24px; +} +.text-size-xl span { + font-size: 24px; +} +.text-size-xl { + font-size: 24px; +} +.text-weight-s { + font-weight: 100; +} +.text-weight-n { + font-weight: 400; +} +.text-weight-b { + font-weight: 700; +} +.text-align-left { + text-align: left; +} +.text-align-right { + text-align: right; +} +.text-align-center { + text-align: center; +} +.round-0 { + border-radius: 0 !important; +} +.round-1 { + border-radius: 1px !important; +} +.round-2 { + border-radius: 2px !important; +} +.round-3 { + border-radius: 3px !important; +} +.round-4 { + border-radius: 4px !important; +} +.round-5 { + border-radius: 5px !important; +} +.round-6 { + border-radius: 6px !important; +} +.round-7 { + border-radius: 7px !important; +} +.round-8 { + border-radius: 8px !important; +} +.round-9 { + border-radius: 9px !important; +} +.round-10 { + border-radius: 10px !important; +} +.round-11 { + border-radius: 11px !important; +} +.round-12 { + border-radius: 12px !important; +} +.round-13 { + border-radius: 13px !important; +} +.round-14 { + border-radius: 14px !important; +} +.round-15 { + border-radius: 15px !important; +} +.round-16 { + border-radius: 16px !important; +} +.round-17 { + border-radius: 17px !important; +} +.round-18 { + border-radius: 18px !important; +} +.round-19 { + border-radius: 19px !important; +} +.round-20 { + border-radius: 20px !important; +} +.round-21 { + border-radius: 21px !important; +} +.round-22 { + border-radius: 22px !important; +} +.round-23 { + border-radius: 23px !important; +} +.round-24 { + border-radius: 24px !important; +} +.round-25 { + border-radius: 25px !important; +} +.round-26 { + border-radius: 26px !important; +} +.round-tl-0 { + border-top-left-radius: 0 !important; +} +.round-tl-1 { + border-top-left-radius: 1px !important; +} +.round-tl-2 { + border-top-left-radius: 2px !important; +} +.round-tl-3 { + border-top-left-radius: 3px !important; +} +.round-tl-4 { + border-top-left-radius: 4px !important; +} +.round-tl-5 { + border-top-left-radius: 5px !important; +} +.round-tl-6 { + border-top-left-radius: 6px !important; +} +.round-tl-7 { + border-top-left-radius: 7px !important; +} +.round-tl-8 { + border-top-left-radius: 8px !important; +} +.round-tl-9 { + border-top-left-radius: 9px !important; +} +.round-tl-10 { + border-top-left-radius: 10px !important; +} +.round-tl-11 { + border-top-left-radius: 11px !important; +} +.round-tl-12 { + border-top-left-radius: 12px !important; +} +.round-tl-13 { + border-top-left-radius: 13px !important; +} +.round-tl-14 { + border-top-left-radius: 14px !important; +} +.round-tl-15 { + border-top-left-radius: 15px !important; +} +.round-tl-16 { + border-top-left-radius: 16px !important; +} +.round-tl-17 { + border-top-left-radius: 17px !important; +} +.round-tl-18 { + border-top-left-radius: 18px !important; +} +.round-tl-19 { + border-top-left-radius: 19px !important; +} +.round-tl-20 { + border-top-left-radius: 20px !important; +} +.round-tl-21 { + border-top-left-radius: 21px !important; +} +.round-tl-22 { + border-top-left-radius: 22px !important; +} +.round-tl-23 { + border-top-left-radius: 23px !important; +} +.round-tl-24 { + border-top-left-radius: 24px !important; +} +.round-tl-25 { + border-top-left-radius: 25px !important; +} +.round-tl-26 { + border-top-left-radius: 26px !important; +} +.round-tl-27 { + border-top-left-radius: 27px !important; +} +.round-tl-28 { + border-top-left-radius: 28px !important; +} +.round-tl-29 { + border-top-left-radius: 29px !important; +} +.round-tl-30 { + border-top-left-radius: 30px !important; +} +.round-tl-31 { + border-top-left-radius: 31px !important; +} +.round-tl-32 { + border-top-left-radius: 32px !important; +} +.round-tl-33 { + border-top-left-radius: 33px !important; +} +.round-tl-34 { + border-top-left-radius: 34px !important; +} +.round-tl-35 { + border-top-left-radius: 35px !important; +} +.round-tl-36 { + border-top-left-radius: 36px !important; +} +.round-tl-37 { + border-top-left-radius: 37px !important; +} +.round-tl-38 { + border-top-left-radius: 38px !important; +} +.round-tl-39 { + border-top-left-radius: 39px !important; +} +.round-tl-40 { + border-top-left-radius: 40px !important; +} +.round-tl-41 { + border-top-left-radius: 41px !important; +} +.round-tl-42 { + border-top-left-radius: 42px !important; +} +.round-tl-43 { + border-top-left-radius: 43px !important; +} +.round-tl-44 { + border-top-left-radius: 44px !important; +} +.round-tl-45 { + border-top-left-radius: 45px !important; +} +.round-tl-46 { + border-top-left-radius: 46px !important; +} +.round-tl-47 { + border-top-left-radius: 47px !important; +} +.round-tl-48 { + border-top-left-radius: 48px !important; +} +.round-tl-49 { + border-top-left-radius: 49px !important; +} +.round-tr-0 { + border-top-right-radius: 0 !important; +} +.round-tr-1 { + border-top-right-radius: 1px !important; +} +.round-tr-2 { + border-top-right-radius: 2px !important; +} +.round-tr-3 { + border-top-right-radius: 3px !important; +} +.round-tr-4 { + border-top-right-radius: 4px !important; +} +.round-tr-5 { + border-top-right-radius: 5px !important; +} +.round-tr-6 { + border-top-right-radius: 6px !important; +} +.round-tr-7 { + border-top-right-radius: 7px !important; +} +.round-tr-8 { + border-top-right-radius: 8px !important; +} +.round-tr-9 { + border-top-right-radius: 9px !important; +} +.round-tr-10 { + border-top-right-radius: 10px !important; +} +.round-tr-11 { + border-top-right-radius: 11px !important; +} +.round-tr-12 { + border-top-right-radius: 12px !important; +} +.round-tr-13 { + border-top-right-radius: 13px !important; +} +.round-tr-14 { + border-top-right-radius: 14px !important; +} +.round-tr-15 { + border-top-right-radius: 15px !important; +} +.round-tr-16 { + border-top-right-radius: 16px !important; +} +.round-tr-17 { + border-top-right-radius: 17px !important; +} +.round-tr-18 { + border-top-right-radius: 18px !important; +} +.round-tr-19 { + border-top-right-radius: 19px !important; +} +.round-tr-20 { + border-top-right-radius: 20px !important; +} +.round-tr-21 { + border-top-right-radius: 21px !important; +} +.round-tr-22 { + border-top-right-radius: 22px !important; +} +.round-tr-23 { + border-top-right-radius: 23px !important; +} +.round-tr-24 { + border-top-right-radius: 24px !important; +} +.round-tr-25 { + border-top-right-radius: 25px !important; +} +.round-tr-26 { + border-top-right-radius: 26px !important; +} +.round-tr-27 { + border-top-right-radius: 27px !important; +} +.round-tr-28 { + border-top-right-radius: 28px !important; +} +.round-tr-29 { + border-top-right-radius: 29px !important; +} +.round-tr-30 { + border-top-right-radius: 30px !important; +} +.round-tr-31 { + border-top-right-radius: 31px !important; +} +.round-tr-32 { + border-top-right-radius: 32px !important; +} +.round-tr-33 { + border-top-right-radius: 33px !important; +} +.round-tr-34 { + border-top-right-radius: 34px !important; +} +.round-tr-35 { + border-top-right-radius: 35px !important; +} +.round-tr-36 { + border-top-right-radius: 36px !important; +} +.round-tr-37 { + border-top-right-radius: 37px !important; +} +.round-tr-38 { + border-top-right-radius: 38px !important; +} +.round-tr-39 { + border-top-right-radius: 39px !important; +} +.round-tr-40 { + border-top-right-radius: 40px !important; +} +.round-tr-41 { + border-top-right-radius: 41px !important; +} +.round-tr-42 { + border-top-right-radius: 42px !important; +} +.round-tr-43 { + border-top-right-radius: 43px !important; +} +.round-tr-44 { + border-top-right-radius: 44px !important; +} +.round-tr-45 { + border-top-right-radius: 45px !important; +} +.round-tr-46 { + border-top-right-radius: 46px !important; +} +.round-tr-47 { + border-top-right-radius: 47px !important; +} +.round-tr-48 { + border-top-right-radius: 48px !important; +} +.round-tr-49 { + border-top-right-radius: 49px !important; +} +.round-bl-0 { + border-bottom-left-radius: 0 !important; +} +.round-bl-1 { + border-bottom-left-radius: 1px !important; +} +.round-bl-2 { + border-bottom-left-radius: 2px !important; +} +.round-bl-3 { + border-bottom-left-radius: 3px !important; +} +.round-bl-4 { + border-bottom-left-radius: 4px !important; +} +.round-bl-5 { + border-bottom-left-radius: 5px !important; +} +.round-bl-6 { + border-bottom-left-radius: 6px !important; +} +.round-bl-7 { + border-bottom-left-radius: 7px !important; +} +.round-bl-8 { + border-bottom-left-radius: 8px !important; +} +.round-bl-9 { + border-bottom-left-radius: 9px !important; +} +.round-bl-10 { + border-bottom-left-radius: 10px !important; +} +.round-bl-11 { + border-bottom-left-radius: 11px !important; +} +.round-bl-12 { + border-bottom-left-radius: 12px !important; +} +.round-bl-13 { + border-bottom-left-radius: 13px !important; +} +.round-bl-14 { + border-bottom-left-radius: 14px !important; +} +.round-bl-15 { + border-bottom-left-radius: 15px !important; +} +.round-bl-16 { + border-bottom-left-radius: 16px !important; +} +.round-bl-17 { + border-bottom-left-radius: 17px !important; +} +.round-bl-18 { + border-bottom-left-radius: 18px !important; +} +.round-bl-19 { + border-bottom-left-radius: 19px !important; +} +.round-bl-20 { + border-bottom-left-radius: 20px !important; +} +.round-bl-21 { + border-bottom-left-radius: 21px !important; +} +.round-bl-22 { + border-bottom-left-radius: 22px !important; +} +.round-bl-23 { + border-bottom-left-radius: 23px !important; +} +.round-bl-24 { + border-bottom-left-radius: 24px !important; +} +.round-bl-25 { + border-bottom-left-radius: 25px !important; +} +.round-bl-26 { + border-bottom-left-radius: 26px !important; +} +.round-bl-27 { + border-bottom-left-radius: 27px !important; +} +.round-bl-28 { + border-bottom-left-radius: 28px !important; +} +.round-bl-29 { + border-bottom-left-radius: 29px !important; +} +.round-bl-30 { + border-bottom-left-radius: 30px !important; +} +.round-bl-31 { + border-bottom-left-radius: 31px !important; +} +.round-bl-32 { + border-bottom-left-radius: 32px !important; +} +.round-bl-33 { + border-bottom-left-radius: 33px !important; +} +.round-bl-34 { + border-bottom-left-radius: 34px !important; +} +.round-bl-35 { + border-bottom-left-radius: 35px !important; +} +.round-bl-36 { + border-bottom-left-radius: 36px !important; +} +.round-bl-37 { + border-bottom-left-radius: 37px !important; +} +.round-bl-38 { + border-bottom-left-radius: 38px !important; +} +.round-bl-39 { + border-bottom-left-radius: 39px !important; +} +.round-bl-40 { + border-bottom-left-radius: 40px !important; +} +.round-bl-41 { + border-bottom-left-radius: 41px !important; +} +.round-bl-42 { + border-bottom-left-radius: 42px !important; +} +.round-bl-43 { + border-bottom-left-radius: 43px !important; +} +.round-bl-44 { + border-bottom-left-radius: 44px !important; +} +.round-bl-45 { + border-bottom-left-radius: 45px !important; +} +.round-bl-46 { + border-bottom-left-radius: 46px !important; +} +.round-bl-47 { + border-bottom-left-radius: 47px !important; +} +.round-bl-48 { + border-bottom-left-radius: 48px !important; +} +.round-bl-49 { + border-bottom-left-radius: 49px !important; +} +.round-br-0 { + border-bottom-right-radius: 0 !important; +} +.round-br-1 { + border-bottom-right-radius: 1px !important; +} +.round-br-2 { + border-bottom-right-radius: 2px !important; +} +.round-br-3 { + border-bottom-right-radius: 3px !important; +} +.round-br-4 { + border-bottom-right-radius: 4px !important; +} +.round-br-5 { + border-bottom-right-radius: 5px !important; +} +.round-br-6 { + border-bottom-right-radius: 6px !important; +} +.round-br-7 { + border-bottom-right-radius: 7px !important; +} +.round-br-8 { + border-bottom-right-radius: 8px !important; +} +.round-br-9 { + border-bottom-right-radius: 9px !important; +} +.round-br-10 { + border-bottom-right-radius: 10px !important; +} +.round-br-11 { + border-bottom-right-radius: 11px !important; +} +.round-br-12 { + border-bottom-right-radius: 12px !important; +} +.round-br-13 { + border-bottom-right-radius: 13px !important; +} +.round-br-14 { + border-bottom-right-radius: 14px !important; +} +.round-br-15 { + border-bottom-right-radius: 15px !important; +} +.round-br-16 { + border-bottom-right-radius: 16px !important; +} +.round-br-17 { + border-bottom-right-radius: 17px !important; +} +.round-br-18 { + border-bottom-right-radius: 18px !important; +} +.round-br-19 { + border-bottom-right-radius: 19px !important; +} +.round-br-20 { + border-bottom-right-radius: 20px !important; +} +.round-br-21 { + border-bottom-right-radius: 21px !important; +} +.round-br-22 { + border-bottom-right-radius: 22px !important; +} +.round-br-23 { + border-bottom-right-radius: 23px !important; +} +.round-br-24 { + border-bottom-right-radius: 24px !important; +} +.round-br-25 { + border-bottom-right-radius: 25px !important; +} +.round-br-26 { + border-bottom-right-radius: 26px !important; +} +.round-br-27 { + border-bottom-right-radius: 27px !important; +} +.round-br-28 { + border-bottom-right-radius: 28px !important; +} +.round-br-29 { + border-bottom-right-radius: 29px !important; +} +.round-br-30 { + border-bottom-right-radius: 30px !important; +} +.round-br-31 { + border-bottom-right-radius: 31px !important; +} +.round-br-32 { + border-bottom-right-radius: 32px !important; +} +.round-br-33 { + border-bottom-right-radius: 33px !important; +} +.round-br-34 { + border-bottom-right-radius: 34px !important; +} +.round-br-35 { + border-bottom-right-radius: 35px !important; +} +.round-br-36 { + border-bottom-right-radius: 36px !important; +} +.round-br-37 { + border-bottom-right-radius: 37px !important; +} +.round-br-38 { + border-bottom-right-radius: 38px !important; +} +.round-br-39 { + border-bottom-right-radius: 39px !important; +} +.round-br-40 { + border-bottom-right-radius: 40px !important; +} +.round-br-41 { + border-bottom-right-radius: 41px !important; +} +.round-br-42 { + border-bottom-right-radius: 42px !important; +} +.round-br-43 { + border-bottom-right-radius: 43px !important; +} +.round-br-44 { + border-bottom-right-radius: 44px !important; +} +.round-br-45 { + border-bottom-right-radius: 45px !important; +} +.round-br-46 { + border-bottom-right-radius: 46px !important; +} +.round-br-47 { + border-bottom-right-radius: 47px !important; +} +.round-br-48 { + border-bottom-right-radius: 48px !important; +} +.round-br-49 { + border-bottom-right-radius: 49px !important; +} +.round-a-0 { + border-radius: 0 !important; +} +.round-a-1 { + border-radius: 1px !important; +} +.round-a-2 { + border-radius: 2px !important; +} +.round-a-3 { + border-radius: 3px !important; +} +.round-a-4 { + border-radius: 4px !important; +} +.round-a-5 { + border-radius: 5px !important; +} +.round-a-6 { + border-radius: 6px !important; +} +.round-a-7 { + border-radius: 7px !important; +} +.round-a-8 { + border-radius: 8px !important; +} +.round-a-9 { + border-radius: 9px !important; +} +.round-a-10 { + border-radius: 10px !important; +} +.round-a-11 { + border-radius: 11px !important; +} +.round-a-12 { + border-radius: 12px !important; +} +.round-a-13 { + border-radius: 13px !important; +} +.round-a-14 { + border-radius: 14px !important; +} +.round-a-15 { + border-radius: 15px !important; +} +.round-a-16 { + border-radius: 16px !important; +} +.round-a-17 { + border-radius: 17px !important; +} +.round-a-18 { + border-radius: 18px !important; +} +.round-a-19 { + border-radius: 19px !important; +} +.round-a-20 { + border-radius: 20px !important; +} +.round-a-21 { + border-radius: 21px !important; +} +.round-a-22 { + border-radius: 22px !important; +} +.round-a-23 { + border-radius: 23px !important; +} +.round-a-24 { + border-radius: 24px !important; +} +.round-a-25 { + border-radius: 25px !important; +} +.round-a-26 { + border-radius: 26px !important; +} +.round-a-27 { + border-radius: 27px !important; +} +.round-a-28 { + border-radius: 28px !important; +} +.round-a-29 { + border-radius: 29px !important; +} +.round-a-30 { + border-radius: 30px !important; +} +.round-a-31 { + border-radius: 31px !important; +} +.round-a-32 { + border-radius: 32px !important; +} +.round-a-33 { + border-radius: 33px !important; +} +.round-a-34 { + border-radius: 34px !important; +} +.round-a-35 { + border-radius: 35px !important; +} +.round-a-36 { + border-radius: 36px !important; +} +.round-a-37 { + border-radius: 37px !important; +} +.round-a-38 { + border-radius: 38px !important; +} +.round-a-39 { + border-radius: 39px !important; +} +.round-a-40 { + border-radius: 40px !important; +} +.round-a-41 { + border-radius: 41px !important; +} +.round-a-42 { + border-radius: 42px !important; +} +.round-a-43 { + border-radius: 43px !important; +} +.round-a-44 { + border-radius: 44px !important; +} +.round-a-45 { + border-radius: 45px !important; +} +.round-a-46 { + border-radius: 46px !important; +} +.round-a-47 { + border-radius: 47px !important; +} +.round-a-48 { + border-radius: 48px !important; +} +.round-a-49 { + border-radius: 49px !important; +} +.round-t-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} +.round-t-1 { + border-top-left-radius: 1px !important; + border-top-right-radius: 1px !important; +} +.round-t-2 { + border-top-left-radius: 2px !important; + border-top-right-radius: 2px !important; +} +.round-t-3 { + border-top-left-radius: 3px !important; + border-top-right-radius: 3px !important; +} +.round-t-4 { + border-top-left-radius: 4px !important; + border-top-right-radius: 4px !important; +} +.round-t-5 { + border-top-left-radius: 5px !important; + border-top-right-radius: 5px !important; +} +.round-t-6 { + border-top-left-radius: 6px !important; + border-top-right-radius: 6px !important; +} +.round-t-7 { + border-top-left-radius: 7px !important; + border-top-right-radius: 7px !important; +} +.round-t-8 { + border-top-left-radius: 8px !important; + border-top-right-radius: 8px !important; +} +.round-t-9 { + border-top-left-radius: 9px !important; + border-top-right-radius: 9px !important; +} +.round-t-10 { + border-top-left-radius: 10px !important; + border-top-right-radius: 10px !important; +} +.round-t-11 { + border-top-left-radius: 11px !important; + border-top-right-radius: 11px !important; +} +.round-t-12 { + border-top-left-radius: 12px !important; + border-top-right-radius: 12px !important; +} +.round-t-13 { + border-top-left-radius: 13px !important; + border-top-right-radius: 13px !important; +} +.round-t-14 { + border-top-left-radius: 14px !important; + border-top-right-radius: 14px !important; +} +.round-t-15 { + border-top-left-radius: 15px !important; + border-top-right-radius: 15px !important; +} +.round-t-16 { + border-top-left-radius: 16px !important; + border-top-right-radius: 16px !important; +} +.round-t-17 { + border-top-left-radius: 17px !important; + border-top-right-radius: 17px !important; +} +.round-t-18 { + border-top-left-radius: 18px !important; + border-top-right-radius: 18px !important; +} +.round-t-19 { + border-top-left-radius: 19px !important; + border-top-right-radius: 19px !important; +} +.round-t-20 { + border-top-left-radius: 20px !important; + border-top-right-radius: 20px !important; +} +.round-t-21 { + border-top-left-radius: 21px !important; + border-top-right-radius: 21px !important; +} +.round-t-22 { + border-top-left-radius: 22px !important; + border-top-right-radius: 22px !important; +} +.round-t-23 { + border-top-left-radius: 23px !important; + border-top-right-radius: 23px !important; +} +.round-t-24 { + border-top-left-radius: 24px !important; + border-top-right-radius: 24px !important; +} +.round-t-25 { + border-top-left-radius: 25px !important; + border-top-right-radius: 25px !important; +} +.round-t-26 { + border-top-left-radius: 26px !important; + border-top-right-radius: 26px !important; +} +.round-t-27 { + border-top-left-radius: 27px !important; + border-top-right-radius: 27px !important; +} +.round-t-28 { + border-top-left-radius: 28px !important; + border-top-right-radius: 28px !important; +} +.round-t-29 { + border-top-left-radius: 29px !important; + border-top-right-radius: 29px !important; +} +.round-t-30 { + border-top-left-radius: 30px !important; + border-top-right-radius: 30px !important; +} +.round-t-31 { + border-top-left-radius: 31px !important; + border-top-right-radius: 31px !important; +} +.round-t-32 { + border-top-left-radius: 32px !important; + border-top-right-radius: 32px !important; +} +.round-t-33 { + border-top-left-radius: 33px !important; + border-top-right-radius: 33px !important; +} +.round-t-34 { + border-top-left-radius: 34px !important; + border-top-right-radius: 34px !important; +} +.round-t-35 { + border-top-left-radius: 35px !important; + border-top-right-radius: 35px !important; +} +.round-t-36 { + border-top-left-radius: 36px !important; + border-top-right-radius: 36px !important; +} +.round-t-37 { + border-top-left-radius: 37px !important; + border-top-right-radius: 37px !important; +} +.round-t-38 { + border-top-left-radius: 38px !important; + border-top-right-radius: 38px !important; +} +.round-t-39 { + border-top-left-radius: 39px !important; + border-top-right-radius: 39px !important; +} +.round-t-40 { + border-top-left-radius: 40px !important; + border-top-right-radius: 40px !important; +} +.round-t-41 { + border-top-left-radius: 41px !important; + border-top-right-radius: 41px !important; +} +.round-t-42 { + border-top-left-radius: 42px !important; + border-top-right-radius: 42px !important; +} +.round-t-43 { + border-top-left-radius: 43px !important; + border-top-right-radius: 43px !important; +} +.round-t-44 { + border-top-left-radius: 44px !important; + border-top-right-radius: 44px !important; +} +.round-t-45 { + border-top-left-radius: 45px !important; + border-top-right-radius: 45px !important; +} +.round-t-46 { + border-top-left-radius: 46px !important; + border-top-right-radius: 46px !important; +} +.round-t-47 { + border-top-left-radius: 47px !important; + border-top-right-radius: 47px !important; +} +.round-t-48 { + border-top-left-radius: 48px !important; + border-top-right-radius: 48px !important; +} +.round-t-49 { + border-top-left-radius: 49px !important; + border-top-right-radius: 49px !important; +} +.round-b-0 { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +.round-b-1 { + border-bottom-left-radius: 1px !important; + border-bottom-right-radius: 1px !important; +} +.round-b-2 { + border-bottom-left-radius: 2px !important; + border-bottom-right-radius: 2px !important; +} +.round-b-3 { + border-bottom-left-radius: 3px !important; + border-bottom-right-radius: 3px !important; +} +.round-b-4 { + border-bottom-left-radius: 4px !important; + border-bottom-right-radius: 4px !important; +} +.round-b-5 { + border-bottom-left-radius: 5px !important; + border-bottom-right-radius: 5px !important; +} +.round-b-6 { + border-bottom-left-radius: 6px !important; + border-bottom-right-radius: 6px !important; +} +.round-b-7 { + border-bottom-left-radius: 7px !important; + border-bottom-right-radius: 7px !important; +} +.round-b-8 { + border-bottom-left-radius: 8px !important; + border-bottom-right-radius: 8px !important; +} +.round-b-9 { + border-bottom-left-radius: 9px !important; + border-bottom-right-radius: 9px !important; +} +.round-b-10 { + border-bottom-left-radius: 10px !important; + border-bottom-right-radius: 10px !important; +} +.round-b-11 { + border-bottom-left-radius: 11px !important; + border-bottom-right-radius: 11px !important; +} +.round-b-12 { + border-bottom-left-radius: 12px !important; + border-bottom-right-radius: 12px !important; +} +.round-b-13 { + border-bottom-left-radius: 13px !important; + border-bottom-right-radius: 13px !important; +} +.round-b-14 { + border-bottom-left-radius: 14px !important; + border-bottom-right-radius: 14px !important; +} +.round-b-15 { + border-bottom-left-radius: 15px !important; + border-bottom-right-radius: 15px !important; +} +.round-b-16 { + border-bottom-left-radius: 16px !important; + border-bottom-right-radius: 16px !important; +} +.round-b-17 { + border-bottom-left-radius: 17px !important; + border-bottom-right-radius: 17px !important; +} +.round-b-18 { + border-bottom-left-radius: 18px !important; + border-bottom-right-radius: 18px !important; +} +.round-b-19 { + border-bottom-left-radius: 19px !important; + border-bottom-right-radius: 19px !important; +} +.round-b-20 { + border-bottom-left-radius: 20px !important; + border-bottom-right-radius: 20px !important; +} +.round-b-21 { + border-bottom-left-radius: 21px !important; + border-bottom-right-radius: 21px !important; +} +.round-b-22 { + border-bottom-left-radius: 22px !important; + border-bottom-right-radius: 22px !important; +} +.round-b-23 { + border-bottom-left-radius: 23px !important; + border-bottom-right-radius: 23px !important; +} +.round-b-24 { + border-bottom-left-radius: 24px !important; + border-bottom-right-radius: 24px !important; +} +.round-b-25 { + border-bottom-left-radius: 25px !important; + border-bottom-right-radius: 25px !important; +} +.round-b-26 { + border-bottom-left-radius: 26px !important; + border-bottom-right-radius: 26px !important; +} +.round-b-27 { + border-bottom-left-radius: 27px !important; + border-bottom-right-radius: 27px !important; +} +.round-b-28 { + border-bottom-left-radius: 28px !important; + border-bottom-right-radius: 28px !important; +} +.round-b-29 { + border-bottom-left-radius: 29px !important; + border-bottom-right-radius: 29px !important; +} +.round-b-30 { + border-bottom-left-radius: 30px !important; + border-bottom-right-radius: 30px !important; +} +.round-b-31 { + border-bottom-left-radius: 31px !important; + border-bottom-right-radius: 31px !important; +} +.round-b-32 { + border-bottom-left-radius: 32px !important; + border-bottom-right-radius: 32px !important; +} +.round-b-33 { + border-bottom-left-radius: 33px !important; + border-bottom-right-radius: 33px !important; +} +.round-b-34 { + border-bottom-left-radius: 34px !important; + border-bottom-right-radius: 34px !important; +} +.round-b-35 { + border-bottom-left-radius: 35px !important; + border-bottom-right-radius: 35px !important; +} +.round-b-36 { + border-bottom-left-radius: 36px !important; + border-bottom-right-radius: 36px !important; +} +.round-b-37 { + border-bottom-left-radius: 37px !important; + border-bottom-right-radius: 37px !important; +} +.round-b-38 { + border-bottom-left-radius: 38px !important; + border-bottom-right-radius: 38px !important; +} +.round-b-39 { + border-bottom-left-radius: 39px !important; + border-bottom-right-radius: 39px !important; +} +.round-b-40 { + border-bottom-left-radius: 40px !important; + border-bottom-right-radius: 40px !important; +} +.round-b-41 { + border-bottom-left-radius: 41px !important; + border-bottom-right-radius: 41px !important; +} +.round-b-42 { + border-bottom-left-radius: 42px !important; + border-bottom-right-radius: 42px !important; +} +.round-b-43 { + border-bottom-left-radius: 43px !important; + border-bottom-right-radius: 43px !important; +} +.round-b-44 { + border-bottom-left-radius: 44px !important; + border-bottom-right-radius: 44px !important; +} +.round-b-45 { + border-bottom-left-radius: 45px !important; + border-bottom-right-radius: 45px !important; +} +.round-b-46 { + border-bottom-left-radius: 46px !important; + border-bottom-right-radius: 46px !important; +} +.round-b-47 { + border-bottom-left-radius: 47px !important; + border-bottom-right-radius: 47px !important; +} +.round-b-48 { + border-bottom-left-radius: 48px !important; + border-bottom-right-radius: 48px !important; +} +.round-b-49 { + border-bottom-left-radius: 49px !important; + border-bottom-right-radius: 49px !important; +} +.round-l-0 { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.round-l-1 { + border-top-left-radius: 1px !important; + border-bottom-left-radius: 1px !important; +} +.round-l-2 { + border-top-left-radius: 2px !important; + border-bottom-left-radius: 2px !important; +} +.round-l-3 { + border-top-left-radius: 3px !important; + border-bottom-left-radius: 3px !important; +} +.round-l-4 { + border-top-left-radius: 4px !important; + border-bottom-left-radius: 4px !important; +} +.round-l-5 { + border-top-left-radius: 5px !important; + border-bottom-left-radius: 5px !important; +} +.round-l-6 { + border-top-left-radius: 6px !important; + border-bottom-left-radius: 6px !important; +} +.round-l-7 { + border-top-left-radius: 7px !important; + border-bottom-left-radius: 7px !important; +} +.round-l-8 { + border-top-left-radius: 8px !important; + border-bottom-left-radius: 8px !important; +} +.round-l-9 { + border-top-left-radius: 9px !important; + border-bottom-left-radius: 9px !important; +} +.round-l-10 { + border-top-left-radius: 10px !important; + border-bottom-left-radius: 10px !important; +} +.round-l-11 { + border-top-left-radius: 11px !important; + border-bottom-left-radius: 11px !important; +} +.round-l-12 { + border-top-left-radius: 12px !important; + border-bottom-left-radius: 12px !important; +} +.round-l-13 { + border-top-left-radius: 13px !important; + border-bottom-left-radius: 13px !important; +} +.round-l-14 { + border-top-left-radius: 14px !important; + border-bottom-left-radius: 14px !important; +} +.round-l-15 { + border-top-left-radius: 15px !important; + border-bottom-left-radius: 15px !important; +} +.round-l-16 { + border-top-left-radius: 16px !important; + border-bottom-left-radius: 16px !important; +} +.round-l-17 { + border-top-left-radius: 17px !important; + border-bottom-left-radius: 17px !important; +} +.round-l-18 { + border-top-left-radius: 18px !important; + border-bottom-left-radius: 18px !important; +} +.round-l-19 { + border-top-left-radius: 19px !important; + border-bottom-left-radius: 19px !important; +} +.round-l-20 { + border-top-left-radius: 20px !important; + border-bottom-left-radius: 20px !important; +} +.round-l-21 { + border-top-left-radius: 21px !important; + border-bottom-left-radius: 21px !important; +} +.round-l-22 { + border-top-left-radius: 22px !important; + border-bottom-left-radius: 22px !important; +} +.round-l-23 { + border-top-left-radius: 23px !important; + border-bottom-left-radius: 23px !important; +} +.round-l-24 { + border-top-left-radius: 24px !important; + border-bottom-left-radius: 24px !important; +} +.round-l-25 { + border-top-left-radius: 25px !important; + border-bottom-left-radius: 25px !important; +} +.round-l-26 { + border-top-left-radius: 26px !important; + border-bottom-left-radius: 26px !important; +} +.round-l-27 { + border-top-left-radius: 27px !important; + border-bottom-left-radius: 27px !important; +} +.round-l-28 { + border-top-left-radius: 28px !important; + border-bottom-left-radius: 28px !important; +} +.round-l-29 { + border-top-left-radius: 29px !important; + border-bottom-left-radius: 29px !important; +} +.round-l-30 { + border-top-left-radius: 30px !important; + border-bottom-left-radius: 30px !important; +} +.round-l-31 { + border-top-left-radius: 31px !important; + border-bottom-left-radius: 31px !important; +} +.round-l-32 { + border-top-left-radius: 32px !important; + border-bottom-left-radius: 32px !important; +} +.round-l-33 { + border-top-left-radius: 33px !important; + border-bottom-left-radius: 33px !important; +} +.round-l-34 { + border-top-left-radius: 34px !important; + border-bottom-left-radius: 34px !important; +} +.round-l-35 { + border-top-left-radius: 35px !important; + border-bottom-left-radius: 35px !important; +} +.round-l-36 { + border-top-left-radius: 36px !important; + border-bottom-left-radius: 36px !important; +} +.round-l-37 { + border-top-left-radius: 37px !important; + border-bottom-left-radius: 37px !important; +} +.round-l-38 { + border-top-left-radius: 38px !important; + border-bottom-left-radius: 38px !important; +} +.round-l-39 { + border-top-left-radius: 39px !important; + border-bottom-left-radius: 39px !important; +} +.round-l-40 { + border-top-left-radius: 40px !important; + border-bottom-left-radius: 40px !important; +} +.round-l-41 { + border-top-left-radius: 41px !important; + border-bottom-left-radius: 41px !important; +} +.round-l-42 { + border-top-left-radius: 42px !important; + border-bottom-left-radius: 42px !important; +} +.round-l-43 { + border-top-left-radius: 43px !important; + border-bottom-left-radius: 43px !important; +} +.round-l-44 { + border-top-left-radius: 44px !important; + border-bottom-left-radius: 44px !important; +} +.round-l-45 { + border-top-left-radius: 45px !important; + border-bottom-left-radius: 45px !important; +} +.round-l-46 { + border-top-left-radius: 46px !important; + border-bottom-left-radius: 46px !important; +} +.round-l-47 { + border-top-left-radius: 47px !important; + border-bottom-left-radius: 47px !important; +} +.round-l-48 { + border-top-left-radius: 48px !important; + border-bottom-left-radius: 48px !important; +} +.round-l-49 { + border-top-left-radius: 49px !important; + border-bottom-left-radius: 49px !important; +} +.round-r-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +.round-r-1 { + border-top-right-radius: 1px !important; + border-bottom-right-radius: 1px !important; +} +.round-r-2 { + border-top-right-radius: 2px !important; + border-bottom-right-radius: 2px !important; +} +.round-r-3 { + border-top-right-radius: 3px !important; + border-bottom-right-radius: 3px !important; +} +.round-r-4 { + border-top-right-radius: 4px !important; + border-bottom-right-radius: 4px !important; +} +.round-r-5 { + border-top-right-radius: 5px !important; + border-bottom-right-radius: 5px !important; +} +.round-r-6 { + border-top-right-radius: 6px !important; + border-bottom-right-radius: 6px !important; +} +.round-r-7 { + border-top-right-radius: 7px !important; + border-bottom-right-radius: 7px !important; +} +.round-r-8 { + border-top-right-radius: 8px !important; + border-bottom-right-radius: 8px !important; +} +.round-r-9 { + border-top-right-radius: 9px !important; + border-bottom-right-radius: 9px !important; +} +.round-r-10 { + border-top-right-radius: 10px !important; + border-bottom-right-radius: 10px !important; +} +.round-r-11 { + border-top-right-radius: 11px !important; + border-bottom-right-radius: 11px !important; +} +.round-r-12 { + border-top-right-radius: 12px !important; + border-bottom-right-radius: 12px !important; +} +.round-r-13 { + border-top-right-radius: 13px !important; + border-bottom-right-radius: 13px !important; +} +.round-r-14 { + border-top-right-radius: 14px !important; + border-bottom-right-radius: 14px !important; +} +.round-r-15 { + border-top-right-radius: 15px !important; + border-bottom-right-radius: 15px !important; +} +.round-r-16 { + border-top-right-radius: 16px !important; + border-bottom-right-radius: 16px !important; +} +.round-r-17 { + border-top-right-radius: 17px !important; + border-bottom-right-radius: 17px !important; +} +.round-r-18 { + border-top-right-radius: 18px !important; + border-bottom-right-radius: 18px !important; +} +.round-r-19 { + border-top-right-radius: 19px !important; + border-bottom-right-radius: 19px !important; +} +.round-r-20 { + border-top-right-radius: 20px !important; + border-bottom-right-radius: 20px !important; +} +.round-r-21 { + border-top-right-radius: 21px !important; + border-bottom-right-radius: 21px !important; +} +.round-r-22 { + border-top-right-radius: 22px !important; + border-bottom-right-radius: 22px !important; +} +.round-r-23 { + border-top-right-radius: 23px !important; + border-bottom-right-radius: 23px !important; +} +.round-r-24 { + border-top-right-radius: 24px !important; + border-bottom-right-radius: 24px !important; +} +.round-r-25 { + border-top-right-radius: 25px !important; + border-bottom-right-radius: 25px !important; +} +.round-r-26 { + border-top-right-radius: 26px !important; + border-bottom-right-radius: 26px !important; +} +.round-r-27 { + border-top-right-radius: 27px !important; + border-bottom-right-radius: 27px !important; +} +.round-r-28 { + border-top-right-radius: 28px !important; + border-bottom-right-radius: 28px !important; +} +.round-r-29 { + border-top-right-radius: 29px !important; + border-bottom-right-radius: 29px !important; +} +.round-r-30 { + border-top-right-radius: 30px !important; + border-bottom-right-radius: 30px !important; +} +.round-r-31 { + border-top-right-radius: 31px !important; + border-bottom-right-radius: 31px !important; +} +.round-r-32 { + border-top-right-radius: 32px !important; + border-bottom-right-radius: 32px !important; +} +.round-r-33 { + border-top-right-radius: 33px !important; + border-bottom-right-radius: 33px !important; +} +.round-r-34 { + border-top-right-radius: 34px !important; + border-bottom-right-radius: 34px !important; +} +.round-r-35 { + border-top-right-radius: 35px !important; + border-bottom-right-radius: 35px !important; +} +.round-r-36 { + border-top-right-radius: 36px !important; + border-bottom-right-radius: 36px !important; +} +.round-r-37 { + border-top-right-radius: 37px !important; + border-bottom-right-radius: 37px !important; +} +.round-r-38 { + border-top-right-radius: 38px !important; + border-bottom-right-radius: 38px !important; +} +.round-r-39 { + border-top-right-radius: 39px !important; + border-bottom-right-radius: 39px !important; +} +.round-r-40 { + border-top-right-radius: 40px !important; + border-bottom-right-radius: 40px !important; +} +.round-r-41 { + border-top-right-radius: 41px !important; + border-bottom-right-radius: 41px !important; +} +.round-r-42 { + border-top-right-radius: 42px !important; + border-bottom-right-radius: 42px !important; +} +.round-r-43 { + border-top-right-radius: 43px !important; + border-bottom-right-radius: 43px !important; +} +.round-r-44 { + border-top-right-radius: 44px !important; + border-bottom-right-radius: 44px !important; +} +.round-r-45 { + border-top-right-radius: 45px !important; + border-bottom-right-radius: 45px !important; +} +.round-r-46 { + border-top-right-radius: 46px !important; + border-bottom-right-radius: 46px !important; +} +.round-r-47 { + border-top-right-radius: 47px !important; + border-bottom-right-radius: 47px !important; +} +.round-r-48 { + border-top-right-radius: 48px !important; + border-bottom-right-radius: 48px !important; +} +.round-r-49 { + border-top-right-radius: 49px !important; + border-bottom-right-radius: 49px !important; +} +.rounded { + border-radius: 50% !important; +} +.opacity-0 { + opacity: 0; +} +.opacity-1 { + opacity: 0.1; +} +.opacity-2 { + opacity: 0.2; +} +.opacity-3 { + opacity: 0.3; +} +.opacity-4 { + opacity: 0.4; +} +.opacity-5 { + opacity: 0.5; +} +.opacity-6 { + opacity: 0.6; +} +.opacity-7 { + opacity: 0.7; +} +.opacity-8 { + opacity: 0.8; +} +.opacity-9 { + opacity: 0.9; +} +.opacity-10 { + opacity: 1; +} +.shadow { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); +} +.shadow-0 { + box-shadow: 0 0 5px rgba(0, 0, 0, 0.08); +} +.shadow-1 { + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08); +} +.shadow-2 { + box-shadow: 0 2px 7px rgba(0, 0, 0, 0.08); +} +.shadow-3 { + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.08); +} +.shadow-4 { + box-shadow: 0 4px 9px rgba(0, 0, 0, 0.08); +} +.shadow-5 { + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.08); +} +.shadow-6 { + box-shadow: 0 6px 11px rgba(0, 0, 0, 0.08); +} +.shadow-7 { + box-shadow: 0 7px 12px rgba(0, 0, 0, 0.08); +} +.shadow-8 { + box-shadow: 0 8px 13px rgba(0, 0, 0, 0.08); +} +.shadow-9 { + box-shadow: 0 9px 14px rgba(0, 0, 0, 0.08); +} +.shadow-10 { + box-shadow: 0 10px 15px rgba(0, 0, 0, 0.08); +} +.shadow-11 { + box-shadow: 0 11px 16px rgba(0, 0, 0, 0.08); +} +.shadow-12 { + box-shadow: 0 12px 17px rgba(0, 0, 0, 0.08); +} +.shadow-13 { + box-shadow: 0 13px 18px rgba(0, 0, 0, 0.08); +} +.shadow-14 { + box-shadow: 0 14px 19px rgba(0, 0, 0, 0.08); +} +.shadow-15 { + box-shadow: 0 15px 20px rgba(0, 0, 0, 0.08); +} +.shadow-16 { + box-shadow: 0 16px 21px rgba(0, 0, 0, 0.08); +} +.shadow-17 { + box-shadow: 0 17px 22px rgba(0, 0, 0, 0.08); +} +.shadow-18 { + box-shadow: 0 18px 23px rgba(0, 0, 0, 0.08); +} +.shadow-19 { + box-shadow: 0 19px 24px rgba(0, 0, 0, 0.08); +} +.shadow-20 { + box-shadow: 0 20px 25px rgba(0, 0, 0, 0.08); +} +.shadow-21 { + box-shadow: 0 21px 26px rgba(0, 0, 0, 0.08); +} +.shadow-22 { + box-shadow: 0 22px 27px rgba(0, 0, 0, 0.08); +} +.shadow-23 { + box-shadow: 0 23px 28px rgba(0, 0, 0, 0.08); +} +.shadow-24 { + box-shadow: 0 24px 29px rgba(0, 0, 0, 0.08); +} +.shadow-25 { + box-shadow: 0 25px 30px rgba(0, 0, 0, 0.08); +} +.border-0 { + border: solid 0 #f5f5f5 !important; +} +.border-0-bk { + border: solid 0 #282828 !important; +} +.border { + border: solid 1px #f5f5f5 !important; +} +.border-bk { + border: solid 1px #282828 !important; +} +.border-1 { + border: solid 1px #f5f5f5 !important; +} +.border-1-bk { + border: solid 1px #f5f5f5 !important; +} +.border-2 { + border: solid 2px #f5f5f5 !important; +} +.border-2-bk { + border: solid 2px #f5f5f5 !important; +} +.border-3 { + border: solid 3px #f5f5f5 !important; +} +.border-3-bk { + border: solid 3px #f5f5f5 !important; +} +.border-4 { + border: solid 4px #f5f5f5 !important; +} +.border-4-bk { + border: solid 4px #f5f5f5 !important; +} +.border-5 { + border: solid 5px #f5f5f5 !important; +} +.border-5-bk { + border: solid 5px #f5f5f5 !important; +} +.border-l-1 { + border-left: solid 1px #f5f5f5 !important; +} +.border-l-1-bk { + border-left: solid 1px #282828 !important; +} +.border-l-2 { + border-left: solid 2px #f5f5f5 !important; +} +.border-l-2-bk { + border-left: solid 2px #282828 !important; +} +.border-l-3 { + border-left: solid 3px #f5f5f5 !important; +} +.border-l-3-bk { + border-left: solid 3px #282828 !important; +} +.border-l-4 { + border-left: solid 4px #f5f5f5 !important; +} +.border-l-4-bk { + border-left: solid 4px #282828 !important; +} +.border-l-5 { + border-left: solid 5px #f5f5f5 !important; +} +.border-l-5-bk { + border-left: solid 5px #282828 !important; +} +.border-r-1 { + border-right: solid 1px #f5f5f5 !important; +} +.border-r-1-bk { + border-right: solid 1px #282828 !important; +} +.border-r-2 { + border-right: solid 2px #f5f5f5 !important; +} +.border-r-2-bk { + border-right: solid 2px #282828 !important; +} +.border-r-3 { + border-right: solid 3px #f5f5f5 !important; +} +.border-r-3-bk { + border-right: solid 3px #282828 !important; +} +.border-r-4 { + border-right: solid 4px #f5f5f5 !important; +} +.border-r-4-bk { + border-right: solid 4px #282828 !important; +} +.border-r-5 { + border-right: solid 5px #f5f5f5 !important; +} +.border-r-5-bk { + border-right: solid 5px #282828 !important; +} +.border-t-1 { + border-top: solid 1px #f5f5f5 !important; +} +.border-t-1-bk { + border-top: solid 1px #282828 !important; +} +.border-t-2 { + border-top: solid 2px #f5f5f5 !important; +} +.border-t-2-bk { + border-top: solid 2px #282828 !important; +} +.border-t-3 { + border-top: solid 3px #f5f5f5 !important; +} +.border-t-3-bk { + border-top: solid 3px #282828 !important; +} +.border-t-4 { + border-top: solid 4px #f5f5f5 !important; +} +.border-t-4-bk { + border-top: solid 4px #282828 !important; +} +.border-t-5 { + border-top: solid 5px #f5f5f5 !important; +} +.border-t-5-bk { + border-top: solid 5px #282828 !important; +} +.border-b-1 { + border-bottom: solid 1px #f5f5f5 !important; +} +.border-b-1-bk { + border-bottom: solid 1px #282828 !important; +} +.border-b-2 { + border-bottom: solid 2px #f5f5f5 !important; +} +.border-b-2-bk { + border-bottom: solid 2px #282828 !important; +} +.border-b-3 { + border-bottom: solid 3px #f5f5f5 !important; +} +.border-b-3-bk { + border-bottom: solid 3px #282828 !important; +} +.border-b-4 { + border-bottom: solid 4px #f5f5f5 !important; +} +.border-b-4-bk { + border-bottom: solid 4px #282828 !important; +} +.border-b-5 { + border-bottom: solid 5px #f5f5f5 !important; +} +.border-b-5-bk { + border-bottom: solid 5px #282828 !important; +} +.border-a-1 { + border: solid 1px #f5f5f5 !important; +} +.border-a-1-bk { + border: solid 1px #282828 !important; +} +.border-a-2 { + border: solid 2px #f5f5f5 !important; +} +.border-a-2-bk { + border: solid 2px #282828 !important; +} +.border-a-3 { + border: solid 3px #f5f5f5 !important; +} +.border-a-3-bk { + border: solid 3px #282828 !important; +} +.border-a-4 { + border: solid 4px #f5f5f5 !important; +} +.border-a-4-bk { + border: solid 4px #282828 !important; +} +.border-a-5 { + border: solid 5px #f5f5f5 !important; +} +.border-a-5-bk { + border: solid 5px #282828 !important; +} +.pa-0 { + padding: 0; +} +.pa-1 { + padding: 1px; +} +.pa-2 { + padding: 2px; +} +.pa-3 { + padding: 3px; +} +.pa-4 { + padding: 4px; +} +.pa-5 { + padding: 5px; +} +.pa-6 { + padding: 6px; +} +.pa-7 { + padding: 7px; +} +.pa-8 { + padding: 8px; +} +.pa-9 { + padding: 9px; +} +.pa-10 { + padding: 10px; +} +.pa-11 { + padding: 11px; +} +.pa-12 { + padding: 12px; +} +.pa-13 { + padding: 13px; +} +.pa-14 { + padding: 14px; +} +.pa-15 { + padding: 15px; +} +.pa-16 { + padding: 16px; +} +.pa-17 { + padding: 17px; +} +.pa-18 { + padding: 18px; +} +.pa-19 { + padding: 19px; +} +.pa-20 { + padding: 20px; +} +.pa-21 { + padding: 21px; +} +.pa-22 { + padding: 22px; +} +.pa-23 { + padding: 23px; +} +.pa-24 { + padding: 24px; +} +.pa-25 { + padding: 25px; +} +.pa-26 { + padding: 26px; +} +.pa-27 { + padding: 27px; +} +.pa-28 { + padding: 28px; +} +.pa-29 { + padding: 29px; +} +.pa-30 { + padding: 30px; +} +.pa-31 { + padding: 31px; +} +.pa-32 { + padding: 32px; +} +.pa-33 { + padding: 33px; +} +.pa-34 { + padding: 34px; +} +.pa-35 { + padding: 35px; +} +.pa-36 { + padding: 36px; +} +.pa-37 { + padding: 37px; +} +.pa-38 { + padding: 38px; +} +.pa-39 { + padding: 39px; +} +.pa-40 { + padding: 40px; +} +.pa-41 { + padding: 41px; +} +.pa-42 { + padding: 42px; +} +.pa-43 { + padding: 43px; +} +.pa-44 { + padding: 44px; +} +.pa-45 { + padding: 45px; +} +.pa-46 { + padding: 46px; +} +.pa-47 { + padding: 47px; +} +.pa-48 { + padding: 48px; +} +.pa-49 { + padding: 49px; +} +.pa-50 { + padding: 50px; +} +.pa-n1 { + padding: 4px; +} +.pa-n2 { + padding: 8px; +} +.pa-n3 { + padding: 12px; +} +.pa-n4 { + padding: 16px; +} +.pa-n5 { + padding: 20px; +} +.pa-n6 { + padding: 24px; +} +.pa-n7 { + padding: 28px; +} +.pa-n8 { + padding: 32px; +} +.pa-n9 { + padding: 36px; +} +.pa-n10 { + padding: 40px; +} +.pa-n11 { + padding: 44px; +} +.pa-n12 { + padding: 48px; +} +.pa-n13 { + padding: 52px; +} +.pa-n14 { + padding: 56px; +} +.pa-n15 { + padding: 60px; +} +.pa-n16 { + padding: 64px; +} +.pa-n17 { + padding: 68px; +} +.pa-n18 { + padding: 72px; +} +.pa-n19 { + padding: 76px; +} +.pa-n20 { + padding: 80px; +} +.pa-n21 { + padding: 84px; +} +.pa-n22 { + padding: 88px; +} +.pa-n23 { + padding: 92px; +} +.pa-n24 { + padding: 96px; +} +.pa-n25 { + padding: 100px; +} +.pt-0 { + padding-top: 0; +} +.pt-1 { + padding-top: 1px; +} +.pt-2 { + padding-top: 2px; +} +.pt-3 { + padding-top: 3px; +} +.pt-4 { + padding-top: 4px; +} +.pt-5 { + padding-top: 5px; +} +.pt-6 { + padding-top: 6px; +} +.pt-7 { + padding-top: 7px; +} +.pt-8 { + padding-top: 8px; +} +.pt-9 { + padding-top: 9px; +} +.pt-10 { + padding-top: 10px; +} +.pt-11 { + padding-top: 11px; +} +.pt-12 { + padding-top: 12px; +} +.pt-13 { + padding-top: 13px; +} +.pt-14 { + padding-top: 14px; +} +.pt-15 { + padding-top: 15px; +} +.pt-16 { + padding-top: 16px; +} +.pt-17 { + padding-top: 17px; +} +.pt-18 { + padding-top: 18px; +} +.pt-19 { + padding-top: 19px; +} +.pt-20 { + padding-top: 20px; +} +.pt-21 { + padding-top: 21px; +} +.pt-22 { + padding-top: 22px; +} +.pt-23 { + padding-top: 23px; +} +.pt-24 { + padding-top: 24px; +} +.pt-25 { + padding-top: 25px; +} +.pt-26 { + padding-top: 26px; +} +.pt-27 { + padding-top: 27px; +} +.pt-28 { + padding-top: 28px; +} +.pt-29 { + padding-top: 29px; +} +.pt-30 { + padding-top: 30px; +} +.pt-31 { + padding-top: 31px; +} +.pt-32 { + padding-top: 32px; +} +.pt-33 { + padding-top: 33px; +} +.pt-34 { + padding-top: 34px; +} +.pt-35 { + padding-top: 35px; +} +.pt-36 { + padding-top: 36px; +} +.pt-37 { + padding-top: 37px; +} +.pt-38 { + padding-top: 38px; +} +.pt-39 { + padding-top: 39px; +} +.pt-40 { + padding-top: 40px; +} +.pt-41 { + padding-top: 41px; +} +.pt-42 { + padding-top: 42px; +} +.pt-43 { + padding-top: 43px; +} +.pt-44 { + padding-top: 44px; +} +.pt-45 { + padding-top: 45px; +} +.pt-46 { + padding-top: 46px; +} +.pt-47 { + padding-top: 47px; +} +.pt-48 { + padding-top: 48px; +} +.pt-49 { + padding-top: 49px; +} +.pt-50 { + padding-top: 50px; +} +.pt-n1 { + padding-top: 4px; +} +.pt-n2 { + padding-top: 8px; +} +.pt-n3 { + padding-top: 12px; +} +.pt-n4 { + padding-top: 16px; +} +.pt-n5 { + padding-top: 20px; +} +.pt-n6 { + padding-top: 24px; +} +.pt-n7 { + padding-top: 28px; +} +.pt-n8 { + padding-top: 32px; +} +.pt-n9 { + padding-top: 36px; +} +.pt-n10 { + padding-top: 40px; +} +.pt-n11 { + padding-top: 44px; +} +.pt-n12 { + padding-top: 48px; +} +.pt-n13 { + padding-top: 52px; +} +.pt-n14 { + padding-top: 56px; +} +.pt-n15 { + padding-top: 60px; +} +.pt-n16 { + padding-top: 64px; +} +.pt-n17 { + padding-top: 68px; +} +.pt-n18 { + padding-top: 72px; +} +.pt-n19 { + padding-top: 76px; +} +.pt-n20 { + padding-top: 80px; +} +.pt-n21 { + padding-top: 84px; +} +.pt-n22 { + padding-top: 88px; +} +.pt-n23 { + padding-top: 92px; +} +.pt-n24 { + padding-top: 96px; +} +.pt-n25 { + padding-top: 100px; +} +.pr-0 { + padding-right: 0; +} +.pr-1 { + padding-right: 1px; +} +.pr-2 { + padding-right: 2px; +} +.pr-3 { + padding-right: 3px; +} +.pr-4 { + padding-right: 4px; +} +.pr-5 { + padding-right: 5px; +} +.pr-6 { + padding-right: 6px; +} +.pr-7 { + padding-right: 7px; +} +.pr-8 { + padding-right: 8px; +} +.pr-9 { + padding-right: 9px; +} +.pr-10 { + padding-right: 10px; +} +.pr-11 { + padding-right: 11px; +} +.pr-12 { + padding-right: 12px; +} +.pr-13 { + padding-right: 13px; +} +.pr-14 { + padding-right: 14px; +} +.pr-15 { + padding-right: 15px; +} +.pr-16 { + padding-right: 16px; +} +.pr-17 { + padding-right: 17px; +} +.pr-18 { + padding-right: 18px; +} +.pr-19 { + padding-right: 19px; +} +.pr-20 { + padding-right: 20px; +} +.pr-21 { + padding-right: 21px; +} +.pr-22 { + padding-right: 22px; +} +.pr-23 { + padding-right: 23px; +} +.pr-24 { + padding-right: 24px; +} +.pr-25 { + padding-right: 25px; +} +.pr-26 { + padding-right: 26px; +} +.pr-27 { + padding-right: 27px; +} +.pr-28 { + padding-right: 28px; +} +.pr-29 { + padding-right: 29px; +} +.pr-30 { + padding-right: 30px; +} +.pr-31 { + padding-right: 31px; +} +.pr-32 { + padding-right: 32px; +} +.pr-33 { + padding-right: 33px; +} +.pr-34 { + padding-right: 34px; +} +.pr-35 { + padding-right: 35px; +} +.pr-36 { + padding-right: 36px; +} +.pr-37 { + padding-right: 37px; +} +.pr-38 { + padding-right: 38px; +} +.pr-39 { + padding-right: 39px; +} +.pr-40 { + padding-right: 40px; +} +.pr-41 { + padding-right: 41px; +} +.pr-42 { + padding-right: 42px; +} +.pr-43 { + padding-right: 43px; +} +.pr-44 { + padding-right: 44px; +} +.pr-45 { + padding-right: 45px; +} +.pr-46 { + padding-right: 46px; +} +.pr-47 { + padding-right: 47px; +} +.pr-48 { + padding-right: 48px; +} +.pr-49 { + padding-right: 49px; +} +.pr-50 { + padding-right: 50px; +} +.pr-n1 { + padding-right: 4px; +} +.pr-n2 { + padding-right: 8px; +} +.pr-n3 { + padding-right: 12px; +} +.pr-n4 { + padding-right: 16px; +} +.pr-n5 { + padding-right: 20px; +} +.pr-n6 { + padding-right: 24px; +} +.pr-n7 { + padding-right: 28px; +} +.pr-n8 { + padding-right: 32px; +} +.pr-n9 { + padding-right: 36px; +} +.pr-n10 { + padding-right: 40px; +} +.pr-n11 { + padding-right: 44px; +} +.pr-n12 { + padding-right: 48px; +} +.pr-n13 { + padding-right: 52px; +} +.pr-n14 { + padding-right: 56px; +} +.pr-n15 { + padding-right: 60px; +} +.pr-n16 { + padding-right: 64px; +} +.pr-n17 { + padding-right: 68px; +} +.pr-n18 { + padding-right: 72px; +} +.pr-n19 { + padding-right: 76px; +} +.pr-n20 { + padding-right: 80px; +} +.pr-n21 { + padding-right: 84px; +} +.pr-n22 { + padding-right: 88px; +} +.pr-n23 { + padding-right: 92px; +} +.pr-n24 { + padding-right: 96px; +} +.pr-n25 { + padding-right: 100px; +} +.pb-0 { + padding-bottom: 0; +} +.pb-1 { + padding-bottom: 1px; +} +.pb-2 { + padding-bottom: 2px; +} +.pb-3 { + padding-bottom: 3px; +} +.pb-4 { + padding-bottom: 4px; +} +.pb-5 { + padding-bottom: 5px; +} +.pb-6 { + padding-bottom: 6px; +} +.pb-7 { + padding-bottom: 7px; +} +.pb-8 { + padding-bottom: 8px; +} +.pb-9 { + padding-bottom: 9px; +} +.pb-10 { + padding-bottom: 10px; +} +.pb-11 { + padding-bottom: 11px; +} +.pb-12 { + padding-bottom: 12px; +} +.pb-13 { + padding-bottom: 13px; +} +.pb-14 { + padding-bottom: 14px; +} +.pb-15 { + padding-bottom: 15px; +} +.pb-16 { + padding-bottom: 16px; +} +.pb-17 { + padding-bottom: 17px; +} +.pb-18 { + padding-bottom: 18px; +} +.pb-19 { + padding-bottom: 19px; +} +.pb-20 { + padding-bottom: 20px; +} +.pb-21 { + padding-bottom: 21px; +} +.pb-22 { + padding-bottom: 22px; +} +.pb-23 { + padding-bottom: 23px; +} +.pb-24 { + padding-bottom: 24px; +} +.pb-25 { + padding-bottom: 25px; +} +.pb-26 { + padding-bottom: 26px; +} +.pb-27 { + padding-bottom: 27px; +} +.pb-28 { + padding-bottom: 28px; +} +.pb-29 { + padding-bottom: 29px; +} +.pb-30 { + padding-bottom: 30px; +} +.pb-31 { + padding-bottom: 31px; +} +.pb-32 { + padding-bottom: 32px; +} +.pb-33 { + padding-bottom: 33px; +} +.pb-34 { + padding-bottom: 34px; +} +.pb-35 { + padding-bottom: 35px; +} +.pb-36 { + padding-bottom: 36px; +} +.pb-37 { + padding-bottom: 37px; +} +.pb-38 { + padding-bottom: 38px; +} +.pb-39 { + padding-bottom: 39px; +} +.pb-40 { + padding-bottom: 40px; +} +.pb-41 { + padding-bottom: 41px; +} +.pb-42 { + padding-bottom: 42px; +} +.pb-43 { + padding-bottom: 43px; +} +.pb-44 { + padding-bottom: 44px; +} +.pb-45 { + padding-bottom: 45px; +} +.pb-46 { + padding-bottom: 46px; +} +.pb-47 { + padding-bottom: 47px; +} +.pb-48 { + padding-bottom: 48px; +} +.pb-49 { + padding-bottom: 49px; +} +.pb-50 { + padding-bottom: 50px; +} +.pb-n1 { + padding-bottom: 4px; +} +.pb-n2 { + padding-bottom: 8px; +} +.pb-n3 { + padding-bottom: 12px; +} +.pb-n4 { + padding-bottom: 16px; +} +.pb-n5 { + padding-bottom: 20px; +} +.pb-n6 { + padding-bottom: 24px; +} +.pb-n7 { + padding-bottom: 28px; +} +.pb-n8 { + padding-bottom: 32px; +} +.pb-n9 { + padding-bottom: 36px; +} +.pb-n10 { + padding-bottom: 40px; +} +.pb-n11 { + padding-bottom: 44px; +} +.pb-n12 { + padding-bottom: 48px; +} +.pb-n13 { + padding-bottom: 52px; +} +.pb-n14 { + padding-bottom: 56px; +} +.pb-n15 { + padding-bottom: 60px; +} +.pb-n16 { + padding-bottom: 64px; +} +.pb-n17 { + padding-bottom: 68px; +} +.pb-n18 { + padding-bottom: 72px; +} +.pb-n19 { + padding-bottom: 76px; +} +.pb-n20 { + padding-bottom: 80px; +} +.pb-n21 { + padding-bottom: 84px; +} +.pb-n22 { + padding-bottom: 88px; +} +.pb-n23 { + padding-bottom: 92px; +} +.pb-n24 { + padding-bottom: 96px; +} +.pb-n25 { + padding-bottom: 100px; +} +.pl-0 { + padding-left: 0; +} +.pl-1 { + padding-left: 1px; +} +.pl-2 { + padding-left: 2px; +} +.pl-3 { + padding-left: 3px; +} +.pl-4 { + padding-left: 4px; +} +.pl-5 { + padding-left: 5px; +} +.pl-6 { + padding-left: 6px; +} +.pl-7 { + padding-left: 7px; +} +.pl-8 { + padding-left: 8px; +} +.pl-9 { + padding-left: 9px; +} +.pl-10 { + padding-left: 10px; +} +.pl-11 { + padding-left: 11px; +} +.pl-12 { + padding-left: 12px; +} +.pl-13 { + padding-left: 13px; +} +.pl-14 { + padding-left: 14px; +} +.pl-15 { + padding-left: 15px; +} +.pl-16 { + padding-left: 16px; +} +.pl-17 { + padding-left: 17px; +} +.pl-18 { + padding-left: 18px; +} +.pl-19 { + padding-left: 19px; +} +.pl-20 { + padding-left: 20px; +} +.pl-21 { + padding-left: 21px; +} +.pl-22 { + padding-left: 22px; +} +.pl-23 { + padding-left: 23px; +} +.pl-24 { + padding-left: 24px; +} +.pl-25 { + padding-left: 25px; +} +.pl-26 { + padding-left: 26px; +} +.pl-27 { + padding-left: 27px; +} +.pl-28 { + padding-left: 28px; +} +.pl-29 { + padding-left: 29px; +} +.pl-30 { + padding-left: 30px; +} +.pl-31 { + padding-left: 31px; +} +.pl-32 { + padding-left: 32px; +} +.pl-33 { + padding-left: 33px; +} +.pl-34 { + padding-left: 34px; +} +.pl-35 { + padding-left: 35px; +} +.pl-36 { + padding-left: 36px; +} +.pl-37 { + padding-left: 37px; +} +.pl-38 { + padding-left: 38px; +} +.pl-39 { + padding-left: 39px; +} +.pl-40 { + padding-left: 40px; +} +.pl-41 { + padding-left: 41px; +} +.pl-42 { + padding-left: 42px; +} +.pl-43 { + padding-left: 43px; +} +.pl-44 { + padding-left: 44px; +} +.pl-45 { + padding-left: 45px; +} +.pl-46 { + padding-left: 46px; +} +.pl-47 { + padding-left: 47px; +} +.pl-48 { + padding-left: 48px; +} +.pl-49 { + padding-left: 49px; +} +.pl-50 { + padding-left: 50px; +} +.pl-n1 { + padding-left: 4px; +} +.pl-n2 { + padding-left: 8px; +} +.pl-n3 { + padding-left: 12px; +} +.pl-n4 { + padding-left: 16px; +} +.pl-n5 { + padding-left: 20px; +} +.pl-n6 { + padding-left: 24px; +} +.pl-n7 { + padding-left: 28px; +} +.pl-n8 { + padding-left: 32px; +} +.pl-n9 { + padding-left: 36px; +} +.pl-n10 { + padding-left: 40px; +} +.pl-n11 { + padding-left: 44px; +} +.pl-n12 { + padding-left: 48px; +} +.pl-n13 { + padding-left: 52px; +} +.pl-n14 { + padding-left: 56px; +} +.pl-n15 { + padding-left: 60px; +} +.pl-n16 { + padding-left: 64px; +} +.pl-n17 { + padding-left: 68px; +} +.pl-n18 { + padding-left: 72px; +} +.pl-n19 { + padding-left: 76px; +} +.pl-n20 { + padding-left: 80px; +} +.pl-n21 { + padding-left: 84px; +} +.pl-n22 { + padding-left: 88px; +} +.pl-n23 { + padding-left: 92px; +} +.pl-n24 { + padding-left: 96px; +} +.pl-n25 { + padding-left: 100px; +} +.px-0 { + padding-left: 0; + padding-right: 0; +} +.px-1 { + padding-left: 1px; + padding-right: 1px; +} +.px-2 { + padding-left: 2px; + padding-right: 2px; +} +.px-3 { + padding-left: 3px; + padding-right: 3px; +} +.px-4 { + padding-left: 4px; + padding-right: 4px; +} +.px-5 { + padding-left: 5px; + padding-right: 5px; +} +.px-6 { + padding-left: 6px; + padding-right: 6px; +} +.px-7 { + padding-left: 7px; + padding-right: 7px; +} +.px-8 { + padding-left: 8px; + padding-right: 8px; +} +.px-9 { + padding-left: 9px; + padding-right: 9px; +} +.px-10 { + padding-left: 10px; + padding-right: 10px; +} +.px-11 { + padding-left: 11px; + padding-right: 11px; +} +.px-12 { + padding-left: 12px; + padding-right: 12px; +} +.px-13 { + padding-left: 13px; + padding-right: 13px; +} +.px-14 { + padding-left: 14px; + padding-right: 14px; +} +.px-15 { + padding-left: 15px; + padding-right: 15px; +} +.px-16 { + padding-left: 16px; + padding-right: 16px; +} +.px-17 { + padding-left: 17px; + padding-right: 17px; +} +.px-18 { + padding-left: 18px; + padding-right: 18px; +} +.px-19 { + padding-left: 19px; + padding-right: 19px; +} +.px-20 { + padding-left: 20px; + padding-right: 20px; +} +.px-21 { + padding-left: 21px; + padding-right: 21px; +} +.px-22 { + padding-left: 22px; + padding-right: 22px; +} +.px-23 { + padding-left: 23px; + padding-right: 23px; +} +.px-24 { + padding-left: 24px; + padding-right: 24px; +} +.px-25 { + padding-left: 25px; + padding-right: 25px; +} +.px-26 { + padding-left: 26px; + padding-right: 26px; +} +.px-27 { + padding-left: 27px; + padding-right: 27px; +} +.px-28 { + padding-left: 28px; + padding-right: 28px; +} +.px-29 { + padding-left: 29px; + padding-right: 29px; +} +.px-30 { + padding-left: 30px; + padding-right: 30px; +} +.px-31 { + padding-left: 31px; + padding-right: 31px; +} +.px-32 { + padding-left: 32px; + padding-right: 32px; +} +.px-33 { + padding-left: 33px; + padding-right: 33px; +} +.px-34 { + padding-left: 34px; + padding-right: 34px; +} +.px-35 { + padding-left: 35px; + padding-right: 35px; +} +.px-36 { + padding-left: 36px; + padding-right: 36px; +} +.px-37 { + padding-left: 37px; + padding-right: 37px; +} +.px-38 { + padding-left: 38px; + padding-right: 38px; +} +.px-39 { + padding-left: 39px; + padding-right: 39px; +} +.px-40 { + padding-left: 40px; + padding-right: 40px; +} +.px-41 { + padding-left: 41px; + padding-right: 41px; +} +.px-42 { + padding-left: 42px; + padding-right: 42px; +} +.px-43 { + padding-left: 43px; + padding-right: 43px; +} +.px-44 { + padding-left: 44px; + padding-right: 44px; +} +.px-45 { + padding-left: 45px; + padding-right: 45px; +} +.px-46 { + padding-left: 46px; + padding-right: 46px; +} +.px-47 { + padding-left: 47px; + padding-right: 47px; +} +.px-48 { + padding-left: 48px; + padding-right: 48px; +} +.px-49 { + padding-left: 49px; + padding-right: 49px; +} +.px-50 { + padding-left: 50px; + padding-right: 50px; +} +.px-n1 { + padding-left: 4px; + padding-right: 4rpx; +} +.px-n2 { + padding-left: 8px; + padding-right: 8rpx; +} +.px-n3 { + padding-left: 12px; + padding-right: 12rpx; +} +.px-n4 { + padding-left: 16px; + padding-right: 16rpx; +} +.px-n5 { + padding-left: 20px; + padding-right: 20rpx; +} +.px-n6 { + padding-left: 24px; + padding-right: 24rpx; +} +.px-n7 { + padding-left: 28px; + padding-right: 28rpx; +} +.px-n8 { + padding-left: 32px; + padding-right: 32rpx; +} +.px-n9 { + padding-left: 36px; + padding-right: 36rpx; +} +.px-n10 { + padding-left: 40px; + padding-right: 40rpx; +} +.px-n11 { + padding-left: 44px; + padding-right: 44rpx; +} +.px-n12 { + padding-left: 48px; + padding-right: 48rpx; +} +.px-n13 { + padding-left: 52px; + padding-right: 52rpx; +} +.px-n14 { + padding-left: 56px; + padding-right: 56rpx; +} +.px-n15 { + padding-left: 60px; + padding-right: 60rpx; +} +.px-n16 { + padding-left: 64px; + padding-right: 64rpx; +} +.px-n17 { + padding-left: 68px; + padding-right: 68rpx; +} +.px-n18 { + padding-left: 72px; + padding-right: 72rpx; +} +.px-n19 { + padding-left: 76px; + padding-right: 76rpx; +} +.px-n20 { + padding-left: 80px; + padding-right: 80rpx; +} +.px-n21 { + padding-left: 84px; + padding-right: 84rpx; +} +.px-n22 { + padding-left: 88px; + padding-right: 88rpx; +} +.px-n23 { + padding-left: 92px; + padding-right: 92rpx; +} +.px-n24 { + padding-left: 96px; + padding-right: 96rpx; +} +.px-n25 { + padding-left: 100px; + padding-right: 100rpx; +} +.py-0 { + padding-top: 0; + padding-bottom: 0; +} +.py-1 { + padding-top: 1px; + padding-bottom: 1px; +} +.py-2 { + padding-top: 2px; + padding-bottom: 2px; +} +.py-3 { + padding-top: 3px; + padding-bottom: 3px; +} +.py-4 { + padding-top: 4px; + padding-bottom: 4px; +} +.py-5 { + padding-top: 5px; + padding-bottom: 5px; +} +.py-6 { + padding-top: 6px; + padding-bottom: 6px; +} +.py-7 { + padding-top: 7px; + padding-bottom: 7px; +} +.py-8 { + padding-top: 8px; + padding-bottom: 8px; +} +.py-9 { + padding-top: 9px; + padding-bottom: 9px; +} +.py-10 { + padding-top: 10px; + padding-bottom: 10px; +} +.py-11 { + padding-top: 11px; + padding-bottom: 11px; +} +.py-12 { + padding-top: 12px; + padding-bottom: 12px; +} +.py-13 { + padding-top: 13px; + padding-bottom: 13px; +} +.py-14 { + padding-top: 14px; + padding-bottom: 14px; +} +.py-15 { + padding-top: 15px; + padding-bottom: 15px; +} +.py-16 { + padding-top: 16px; + padding-bottom: 16px; +} +.py-17 { + padding-top: 17px; + padding-bottom: 17px; +} +.py-18 { + padding-top: 18px; + padding-bottom: 18px; +} +.py-19 { + padding-top: 19px; + padding-bottom: 19px; +} +.py-20 { + padding-top: 20px; + padding-bottom: 20px; +} +.py-21 { + padding-top: 21px; + padding-bottom: 21px; +} +.py-22 { + padding-top: 22px; + padding-bottom: 22px; +} +.py-23 { + padding-top: 23px; + padding-bottom: 23px; +} +.py-24 { + padding-top: 24px; + padding-bottom: 24px; +} +.py-25 { + padding-top: 25px; + padding-bottom: 25px; +} +.py-26 { + padding-top: 26px; + padding-bottom: 26px; +} +.py-27 { + padding-top: 27px; + padding-bottom: 27px; +} +.py-28 { + padding-top: 28px; + padding-bottom: 28px; +} +.py-29 { + padding-top: 29px; + padding-bottom: 29px; +} +.py-30 { + padding-top: 30px; + padding-bottom: 30px; +} +.py-31 { + padding-top: 31px; + padding-bottom: 31px; +} +.py-32 { + padding-top: 32px; + padding-bottom: 32px; +} +.py-33 { + padding-top: 33px; + padding-bottom: 33px; +} +.py-34 { + padding-top: 34px; + padding-bottom: 34px; +} +.py-35 { + padding-top: 35px; + padding-bottom: 35px; +} +.py-36 { + padding-top: 36px; + padding-bottom: 36px; +} +.py-37 { + padding-top: 37px; + padding-bottom: 37px; +} +.py-38 { + padding-top: 38px; + padding-bottom: 38px; +} +.py-39 { + padding-top: 39px; + padding-bottom: 39px; +} +.py-40 { + padding-top: 40px; + padding-bottom: 40px; +} +.py-41 { + padding-top: 41px; + padding-bottom: 41px; +} +.py-42 { + padding-top: 42px; + padding-bottom: 42px; +} +.py-43 { + padding-top: 43px; + padding-bottom: 43px; +} +.py-44 { + padding-top: 44px; + padding-bottom: 44px; +} +.py-45 { + padding-top: 45px; + padding-bottom: 45px; +} +.py-46 { + padding-top: 46px; + padding-bottom: 46px; +} +.py-47 { + padding-top: 47px; + padding-bottom: 47px; +} +.py-48 { + padding-top: 48px; + padding-bottom: 48px; +} +.py-49 { + padding-top: 49px; + padding-bottom: 49px; +} +.py-50 { + padding-top: 50px; + padding-bottom: 50px; +} +.py-n1 { + padding-top: 4px; + padding-bottom: 4px; +} +.py-n2 { + padding-top: 8px; + padding-bottom: 8px; +} +.py-n3 { + padding-top: 12px; + padding-bottom: 12px; +} +.py-n4 { + padding-top: 16px; + padding-bottom: 16px; +} +.py-n5 { + padding-top: 20px; + padding-bottom: 20px; +} +.py-n6 { + padding-top: 24px; + padding-bottom: 24px; +} +.py-n7 { + padding-top: 28px; + padding-bottom: 28px; +} +.py-n8 { + padding-top: 32px; + padding-bottom: 32px; +} +.py-n9 { + padding-top: 36px; + padding-bottom: 36px; +} +.py-n10 { + padding-top: 40px; + padding-bottom: 40px; +} +.py-n11 { + padding-top: 44px; + padding-bottom: 44px; +} +.py-n12 { + padding-top: 48px; + padding-bottom: 48px; +} +.py-n13 { + padding-top: 52px; + padding-bottom: 52px; +} +.py-n14 { + padding-top: 56px; + padding-bottom: 56px; +} +.py-n15 { + padding-top: 60px; + padding-bottom: 60px; +} +.py-n16 { + padding-top: 64px; + padding-bottom: 64px; +} +.py-n17 { + padding-top: 68px; + padding-bottom: 68px; +} +.py-n18 { + padding-top: 72px; + padding-bottom: 72px; +} +.py-n19 { + padding-top: 76px; + padding-bottom: 76px; +} +.py-n20 { + padding-top: 80px; + padding-bottom: 80px; +} +.py-n21 { + padding-top: 84px; + padding-bottom: 84px; +} +.py-n22 { + padding-top: 88px; + padding-bottom: 88px; +} +.py-n23 { + padding-top: 92px; + padding-bottom: 92px; +} +.py-n24 { + padding-top: 96px; + padding-bottom: 96px; +} +.py-n25 { + padding-top: 100px; + padding-bottom: 100px; +} +.ma-0 { + margin: 0; +} +.ma-1 { + margin: 1px; +} +.ma-2 { + margin: 2px; +} +.ma-3 { + margin: 3px; +} +.ma-4 { + margin: 4px; +} +.ma-5 { + margin: 5px; +} +.ma-6 { + margin: 6px; +} +.ma-7 { + margin: 7px; +} +.ma-8 { + margin: 8px; +} +.ma-9 { + margin: 9px; +} +.ma-10 { + margin: 10px; +} +.ma-11 { + margin: 11px; +} +.ma-12 { + margin: 12px; +} +.ma-13 { + margin: 13px; +} +.ma-14 { + margin: 14px; +} +.ma-15 { + margin: 15px; +} +.ma-16 { + margin: 16px; +} +.ma-17 { + margin: 17px; +} +.ma-18 { + margin: 18px; +} +.ma-19 { + margin: 19px; +} +.ma-20 { + margin: 20px; +} +.ma-21 { + margin: 21px; +} +.ma-22 { + margin: 22px; +} +.ma-23 { + margin: 23px; +} +.ma-24 { + margin: 24px; +} +.ma-25 { + margin: 25px; +} +.ma-26 { + margin: 26px; +} +.ma-27 { + margin: 27px; +} +.ma-28 { + margin: 28px; +} +.ma-29 { + margin: 29px; +} +.ma-30 { + margin: 30px; +} +.ma-31 { + margin: 31px; +} +.ma-32 { + margin: 32px; +} +.ma-33 { + margin: 33px; +} +.ma-34 { + margin: 34px; +} +.ma-35 { + margin: 35px; +} +.ma-36 { + margin: 36px; +} +.ma-37 { + margin: 37px; +} +.ma-38 { + margin: 38px; +} +.ma-39 { + margin: 39px; +} +.ma-40 { + margin: 40px; +} +.ma-41 { + margin: 41px; +} +.ma-42 { + margin: 42px; +} +.ma-43 { + margin: 43px; +} +.ma-44 { + margin: 44px; +} +.ma-45 { + margin: 45px; +} +.ma-46 { + margin: 46px; +} +.ma-47 { + margin: 47px; +} +.ma-48 { + margin: 48px; +} +.ma-49 { + margin: 49px; +} +.ma-50 { + margin: 50px; +} +.ma-n1 { + margin: 4px; +} +.ma-n2 { + margin: 8px; +} +.ma-n3 { + margin: 12px; +} +.ma-n4 { + margin: 16px; +} +.ma-n5 { + margin: 20px; +} +.ma-n6 { + margin: 24px; +} +.ma-n7 { + margin: 28px; +} +.ma-n8 { + margin: 32px; +} +.ma-n9 { + margin: 36px; +} +.ma-n10 { + margin: 40px; +} +.ma-n11 { + margin: 44px; +} +.ma-n12 { + margin: 48px; +} +.ma-n13 { + margin: 52px; +} +.ma-n14 { + margin: 56px; +} +.ma-n15 { + margin: 60px; +} +.ma-n16 { + margin: 64px; +} +.ma-n17 { + margin: 68px; +} +.ma-n18 { + margin: 72px; +} +.ma-n19 { + margin: 76px; +} +.ma-n20 { + margin: 80px; +} +.ma-n21 { + margin: 84px; +} +.ma-n22 { + margin: 88px; +} +.ma-n23 { + margin: 92px; +} +.ma-n24 { + margin: 96px; +} +.ma-n25 { + margin: 100px; +} +.mt-0 { + margin-top: 0; +} +.mt--0 { + margin-top: 0; +} +.mt-1 { + margin-top: 1px; +} +.mt--1 { + margin-top: -1px; +} +.mt-2 { + margin-top: 2px; +} +.mt--2 { + margin-top: -2px; +} +.mt-3 { + margin-top: 3px; +} +.mt--3 { + margin-top: -3px; +} +.mt-4 { + margin-top: 4px; +} +.mt--4 { + margin-top: -4px; +} +.mt-5 { + margin-top: 5px; +} +.mt--5 { + margin-top: -5px; +} +.mt-6 { + margin-top: 6px; +} +.mt--6 { + margin-top: -6px; +} +.mt-7 { + margin-top: 7px; +} +.mt--7 { + margin-top: -7px; +} +.mt-8 { + margin-top: 8px; +} +.mt--8 { + margin-top: -8px; +} +.mt-9 { + margin-top: 9px; +} +.mt--9 { + margin-top: -9px; +} +.mt-10 { + margin-top: 10px; +} +.mt--10 { + margin-top: -10px; +} +.mt-11 { + margin-top: 11px; +} +.mt--11 { + margin-top: -11px; +} +.mt-12 { + margin-top: 12px; +} +.mt--12 { + margin-top: -12px; +} +.mt-13 { + margin-top: 13px; +} +.mt--13 { + margin-top: -13px; +} +.mt-14 { + margin-top: 14px; +} +.mt--14 { + margin-top: -14px; +} +.mt-15 { + margin-top: 15px; +} +.mt--15 { + margin-top: -15px; +} +.mt-16 { + margin-top: 16px; +} +.mt--16 { + margin-top: -16px; +} +.mt-17 { + margin-top: 17px; +} +.mt--17 { + margin-top: -17px; +} +.mt-18 { + margin-top: 18px; +} +.mt--18 { + margin-top: -18px; +} +.mt-19 { + margin-top: 19px; +} +.mt--19 { + margin-top: -19px; +} +.mt-20 { + margin-top: 20px; +} +.mt--20 { + margin-top: -20px; +} +.mt-21 { + margin-top: 21px; +} +.mt--21 { + margin-top: -21px; +} +.mt-22 { + margin-top: 22px; +} +.mt--22 { + margin-top: -22px; +} +.mt-23 { + margin-top: 23px; +} +.mt--23 { + margin-top: -23px; +} +.mt-24 { + margin-top: 24px; +} +.mt--24 { + margin-top: -24px; +} +.mt-25 { + margin-top: 25px; +} +.mt--25 { + margin-top: -25px; +} +.mt-26 { + margin-top: 26px; +} +.mt--26 { + margin-top: -26px; +} +.mt-27 { + margin-top: 27px; +} +.mt--27 { + margin-top: -27px; +} +.mt-28 { + margin-top: 28px; +} +.mt--28 { + margin-top: -28px; +} +.mt-29 { + margin-top: 29px; +} +.mt--29 { + margin-top: -29px; +} +.mt-30 { + margin-top: 30px; +} +.mt--30 { + margin-top: -30px; +} +.mt-31 { + margin-top: 31px; +} +.mt--31 { + margin-top: -31px; +} +.mt-32 { + margin-top: 32px; +} +.mt--32 { + margin-top: -32px; +} +.mt-33 { + margin-top: 33px; +} +.mt--33 { + margin-top: -33px; +} +.mt-34 { + margin-top: 34px; +} +.mt--34 { + margin-top: -34px; +} +.mt-35 { + margin-top: 35px; +} +.mt--35 { + margin-top: -35px; +} +.mt-36 { + margin-top: 36px; +} +.mt--36 { + margin-top: -36px; +} +.mt-37 { + margin-top: 37px; +} +.mt--37 { + margin-top: -37px; +} +.mt-38 { + margin-top: 38px; +} +.mt--38 { + margin-top: -38px; +} +.mt-39 { + margin-top: 39px; +} +.mt--39 { + margin-top: -39px; +} +.mt-40 { + margin-top: 40px; +} +.mt--40 { + margin-top: -40px; +} +.mt-41 { + margin-top: 41px; +} +.mt--41 { + margin-top: -41px; +} +.mt-42 { + margin-top: 42px; +} +.mt--42 { + margin-top: -42px; +} +.mt-43 { + margin-top: 43px; +} +.mt--43 { + margin-top: -43px; +} +.mt-44 { + margin-top: 44px; +} +.mt--44 { + margin-top: -44px; +} +.mt-45 { + margin-top: 45px; +} +.mt--45 { + margin-top: -45px; +} +.mt-46 { + margin-top: 46px; +} +.mt--46 { + margin-top: -46px; +} +.mt-47 { + margin-top: 47px; +} +.mt--47 { + margin-top: -47px; +} +.mt-48 { + margin-top: 48px; +} +.mt--48 { + margin-top: -48px; +} +.mt-49 { + margin-top: 49px; +} +.mt--49 { + margin-top: -49px; +} +.mt-50 { + margin-top: 50px; +} +.mt--50 { + margin-top: -50px; +} +.mt-n1 { + margin-top: 4px; +} +.mt--n1 { + margin-top: -4px; +} +.mt-n2 { + margin-top: 8px; +} +.mt--n2 { + margin-top: -8px; +} +.mt-n3 { + margin-top: 12px; +} +.mt--n3 { + margin-top: -12px; +} +.mt-n4 { + margin-top: 16px; +} +.mt--n4 { + margin-top: -16px; +} +.mt-n5 { + margin-top: 20px; +} +.mt--n5 { + margin-top: -20px; +} +.mt-n6 { + margin-top: 24px; +} +.mt--n6 { + margin-top: -24px; +} +.mt-n7 { + margin-top: 28px; +} +.mt--n7 { + margin-top: -28px; +} +.mt-n8 { + margin-top: 32px; +} +.mt--n8 { + margin-top: -32px; +} +.mt-n9 { + margin-top: 36px; +} +.mt--n9 { + margin-top: -36px; +} +.mt-n10 { + margin-top: 40px; +} +.mt--n10 { + margin-top: -40px; +} +.mt-n11 { + margin-top: 44px; +} +.mt--n11 { + margin-top: -44px; +} +.mt-n12 { + margin-top: 48px; +} +.mt--n12 { + margin-top: -48px; +} +.mt-n13 { + margin-top: 52px; +} +.mt--n13 { + margin-top: -52px; +} +.mt-n14 { + margin-top: 56px; +} +.mt--n14 { + margin-top: -56px; +} +.mt-n15 { + margin-top: 60px; +} +.mt--n15 { + margin-top: -60px; +} +.mt-n16 { + margin-top: 64px; +} +.mt--n16 { + margin-top: -64px; +} +.mt-n17 { + margin-top: 68px; +} +.mt--n17 { + margin-top: -68px; +} +.mt-n18 { + margin-top: 72px; +} +.mt--n18 { + margin-top: -72px; +} +.mt-n19 { + margin-top: 76px; +} +.mt--n19 { + margin-top: -76px; +} +.mt-n20 { + margin-top: 80px; +} +.mt--n20 { + margin-top: -80px; +} +.mt-n21 { + margin-top: 84px; +} +.mt--n21 { + margin-top: -84px; +} +.mt-n22 { + margin-top: 88px; +} +.mt--n22 { + margin-top: -88px; +} +.mt-n23 { + margin-top: 92px; +} +.mt--n23 { + margin-top: -92px; +} +.mt-n24 { + margin-top: 96px; +} +.mt--n24 { + margin-top: -96px; +} +.mt-n25 { + margin-top: 100px; +} +.mt--n25 { + margin-top: -100px; +} +.mr-0 { + margin-right: 0; +} +.mr--0 { + margin-right: 0; +} +.mr-1 { + margin-right: 1px; +} +.mr--1 { + margin-right: -1px; +} +.mr-2 { + margin-right: 2px; +} +.mr--2 { + margin-right: -2px; +} +.mr-3 { + margin-right: 3px; +} +.mr--3 { + margin-right: -3px; +} +.mr-4 { + margin-right: 4px; +} +.mr--4 { + margin-right: -4px; +} +.mr-5 { + margin-right: 5px; +} +.mr--5 { + margin-right: -5px; +} +.mr-6 { + margin-right: 6px; +} +.mr--6 { + margin-right: -6px; +} +.mr-7 { + margin-right: 7px; +} +.mr--7 { + margin-right: -7px; +} +.mr-8 { + margin-right: 8px; +} +.mr--8 { + margin-right: -8px; +} +.mr-9 { + margin-right: 9px; +} +.mr--9 { + margin-right: -9px; +} +.mr-10 { + margin-right: 10px; +} +.mr--10 { + margin-right: -10px; +} +.mr-11 { + margin-right: 11px; +} +.mr--11 { + margin-right: -11px; +} +.mr-12 { + margin-right: 12px; +} +.mr--12 { + margin-right: -12px; +} +.mr-13 { + margin-right: 13px; +} +.mr--13 { + margin-right: -13px; +} +.mr-14 { + margin-right: 14px; +} +.mr--14 { + margin-right: -14px; +} +.mr-15 { + margin-right: 15px; +} +.mr--15 { + margin-right: -15px; +} +.mr-16 { + margin-right: 16px; +} +.mr--16 { + margin-right: -16px; +} +.mr-17 { + margin-right: 17px; +} +.mr--17 { + margin-right: -17px; +} +.mr-18 { + margin-right: 18px; +} +.mr--18 { + margin-right: -18px; +} +.mr-19 { + margin-right: 19px; +} +.mr--19 { + margin-right: -19px; +} +.mr-20 { + margin-right: 20px; +} +.mr--20 { + margin-right: -20px; +} +.mr-21 { + margin-right: 21px; +} +.mr--21 { + margin-right: -21px; +} +.mr-22 { + margin-right: 22px; +} +.mr--22 { + margin-right: -22px; +} +.mr-23 { + margin-right: 23px; +} +.mr--23 { + margin-right: -23px; +} +.mr-24 { + margin-right: 24px; +} +.mr--24 { + margin-right: -24px; +} +.mr-25 { + margin-right: 25px; +} +.mr--25 { + margin-right: -25px; +} +.mr-26 { + margin-right: 26px; +} +.mr--26 { + margin-right: -26px; +} +.mr-27 { + margin-right: 27px; +} +.mr--27 { + margin-right: -27px; +} +.mr-28 { + margin-right: 28px; +} +.mr--28 { + margin-right: -28px; +} +.mr-29 { + margin-right: 29px; +} +.mr--29 { + margin-right: -29px; +} +.mr-30 { + margin-right: 30px; +} +.mr--30 { + margin-right: -30px; +} +.mr-31 { + margin-right: 31px; +} +.mr--31 { + margin-right: -31px; +} +.mr-32 { + margin-right: 32px; +} +.mr--32 { + margin-right: -32px; +} +.mr-33 { + margin-right: 33px; +} +.mr--33 { + margin-right: -33px; +} +.mr-34 { + margin-right: 34px; +} +.mr--34 { + margin-right: -34px; +} +.mr-35 { + margin-right: 35px; +} +.mr--35 { + margin-right: -35px; +} +.mr-36 { + margin-right: 36px; +} +.mr--36 { + margin-right: -36px; +} +.mr-37 { + margin-right: 37px; +} +.mr--37 { + margin-right: -37px; +} +.mr-38 { + margin-right: 38px; +} +.mr--38 { + margin-right: -38px; +} +.mr-39 { + margin-right: 39px; +} +.mr--39 { + margin-right: -39px; +} +.mr-40 { + margin-right: 40px; +} +.mr--40 { + margin-right: -40px; +} +.mr-41 { + margin-right: 41px; +} +.mr--41 { + margin-right: -41px; +} +.mr-42 { + margin-right: 42px; +} +.mr--42 { + margin-right: -42px; +} +.mr-43 { + margin-right: 43px; +} +.mr--43 { + margin-right: -43px; +} +.mr-44 { + margin-right: 44px; +} +.mr--44 { + margin-right: -44px; +} +.mr-45 { + margin-right: 45px; +} +.mr--45 { + margin-right: -45px; +} +.mr-46 { + margin-right: 46px; +} +.mr--46 { + margin-right: -46px; +} +.mr-47 { + margin-right: 47px; +} +.mr--47 { + margin-right: -47px; +} +.mr-48 { + margin-right: 48px; +} +.mr--48 { + margin-right: -48px; +} +.mr-49 { + margin-right: 49px; +} +.mr--49 { + margin-right: -49px; +} +.mr-50 { + margin-right: 50px; +} +.mr--50 { + margin-right: -50px; +} +.mr-n1 { + margin-right: 4px; +} +.mr--n1 { + margin-right: -4px; +} +.mr-n2 { + margin-right: 8px; +} +.mr--n2 { + margin-right: -8px; +} +.mr-n3 { + margin-right: 12px; +} +.mr--n3 { + margin-right: -12px; +} +.mr-n4 { + margin-right: 16px; +} +.mr--n4 { + margin-right: -16px; +} +.mr-n5 { + margin-right: 20px; +} +.mr--n5 { + margin-right: -20px; +} +.mr-n6 { + margin-right: 24px; +} +.mr--n6 { + margin-right: -24px; +} +.mr-n7 { + margin-right: 28px; +} +.mr--n7 { + margin-right: -28px; +} +.mr-n8 { + margin-right: 32px; +} +.mr--n8 { + margin-right: -32px; +} +.mr-n9 { + margin-right: 36px; +} +.mr--n9 { + margin-right: -36px; +} +.mr-n10 { + margin-right: 40px; +} +.mr--n10 { + margin-right: -40px; +} +.mr-n11 { + margin-right: 44px; +} +.mr--n11 { + margin-right: -44px; +} +.mr-n12 { + margin-right: 48px; +} +.mr--n12 { + margin-right: -48px; +} +.mr-n13 { + margin-right: 52px; +} +.mr--n13 { + margin-right: -52px; +} +.mr-n14 { + margin-right: 56px; +} +.mr--n14 { + margin-right: -56px; +} +.mr-n15 { + margin-right: 60px; +} +.mr--n15 { + margin-right: -60px; +} +.mr-n16 { + margin-right: 64px; +} +.mr--n16 { + margin-right: -64px; +} +.mr-n17 { + margin-right: 68px; +} +.mr--n17 { + margin-right: -68px; +} +.mr-n18 { + margin-right: 72px; +} +.mr--n18 { + margin-right: -72px; +} +.mr-n19 { + margin-right: 76px; +} +.mr--n19 { + margin-right: -76px; +} +.mr-n20 { + margin-right: 80px; +} +.mr--n20 { + margin-right: -80px; +} +.mr-n21 { + margin-right: 84px; +} +.mr--n21 { + margin-right: -84px; +} +.mr-n22 { + margin-right: 88px; +} +.mr--n22 { + margin-right: -88px; +} +.mr-n23 { + margin-right: 92px; +} +.mr--n23 { + margin-right: -92px; +} +.mr-n24 { + margin-right: 96px; +} +.mr--n24 { + margin-right: -96px; +} +.mr-n25 { + margin-right: 100px; +} +.mr--n25 { + margin-right: -100px; +} +.mb-0 { + margin-bottom: 0; +} +.mb--0 { + margin-bottom: 0; +} +.mb-1 { + margin-bottom: 1px; +} +.mb--1 { + margin-bottom: -1px; +} +.mb-2 { + margin-bottom: 2px; +} +.mb--2 { + margin-bottom: -2px; +} +.mb-3 { + margin-bottom: 3px; +} +.mb--3 { + margin-bottom: -3px; +} +.mb-4 { + margin-bottom: 4px; +} +.mb--4 { + margin-bottom: -4px; +} +.mb-5 { + margin-bottom: 5px; +} +.mb--5 { + margin-bottom: -5px; +} +.mb-6 { + margin-bottom: 6px; +} +.mb--6 { + margin-bottom: -6px; +} +.mb-7 { + margin-bottom: 7px; +} +.mb--7 { + margin-bottom: -7px; +} +.mb-8 { + margin-bottom: 8px; +} +.mb--8 { + margin-bottom: -8px; +} +.mb-9 { + margin-bottom: 9px; +} +.mb--9 { + margin-bottom: -9px; +} +.mb-10 { + margin-bottom: 10px; +} +.mb--10 { + margin-bottom: -10px; +} +.mb-11 { + margin-bottom: 11px; +} +.mb--11 { + margin-bottom: -11px; +} +.mb-12 { + margin-bottom: 12px; +} +.mb--12 { + margin-bottom: -12px; +} +.mb-13 { + margin-bottom: 13px; +} +.mb--13 { + margin-bottom: -13px; +} +.mb-14 { + margin-bottom: 14px; +} +.mb--14 { + margin-bottom: -14px; +} +.mb-15 { + margin-bottom: 15px; +} +.mb--15 { + margin-bottom: -15px; +} +.mb-16 { + margin-bottom: 16px; +} +.mb--16 { + margin-bottom: -16px; +} +.mb-17 { + margin-bottom: 17px; +} +.mb--17 { + margin-bottom: -17px; +} +.mb-18 { + margin-bottom: 18px; +} +.mb--18 { + margin-bottom: -18px; +} +.mb-19 { + margin-bottom: 19px; +} +.mb--19 { + margin-bottom: -19px; +} +.mb-20 { + margin-bottom: 20px; +} +.mb--20 { + margin-bottom: -20px; +} +.mb-21 { + margin-bottom: 21px; +} +.mb--21 { + margin-bottom: -21px; +} +.mb-22 { + margin-bottom: 22px; +} +.mb--22 { + margin-bottom: -22px; +} +.mb-23 { + margin-bottom: 23px; +} +.mb--23 { + margin-bottom: -23px; +} +.mb-24 { + margin-bottom: 24px; +} +.mb--24 { + margin-bottom: -24px; +} +.mb-25 { + margin-bottom: 25px; +} +.mb--25 { + margin-bottom: -25px; +} +.mb-26 { + margin-bottom: 26px; +} +.mb--26 { + margin-bottom: -26px; +} +.mb-27 { + margin-bottom: 27px; +} +.mb--27 { + margin-bottom: -27px; +} +.mb-28 { + margin-bottom: 28px; +} +.mb--28 { + margin-bottom: -28px; +} +.mb-29 { + margin-bottom: 29px; +} +.mb--29 { + margin-bottom: -29px; +} +.mb-30 { + margin-bottom: 30px; +} +.mb--30 { + margin-bottom: -30px; +} +.mb-31 { + margin-bottom: 31px; +} +.mb--31 { + margin-bottom: -31px; +} +.mb-32 { + margin-bottom: 32px; +} +.mb--32 { + margin-bottom: -32px; +} +.mb-33 { + margin-bottom: 33px; +} +.mb--33 { + margin-bottom: -33px; +} +.mb-34 { + margin-bottom: 34px; +} +.mb--34 { + margin-bottom: -34px; +} +.mb-35 { + margin-bottom: 35px; +} +.mb--35 { + margin-bottom: -35px; +} +.mb-36 { + margin-bottom: 36px; +} +.mb--36 { + margin-bottom: -36px; +} +.mb-37 { + margin-bottom: 37px; +} +.mb--37 { + margin-bottom: -37px; +} +.mb-38 { + margin-bottom: 38px; +} +.mb--38 { + margin-bottom: -38px; +} +.mb-39 { + margin-bottom: 39px; +} +.mb--39 { + margin-bottom: -39px; +} +.mb-40 { + margin-bottom: 40px; +} +.mb--40 { + margin-bottom: -40px; +} +.mb-41 { + margin-bottom: 41px; +} +.mb--41 { + margin-bottom: -41px; +} +.mb-42 { + margin-bottom: 42px; +} +.mb--42 { + margin-bottom: -42px; +} +.mb-43 { + margin-bottom: 43px; +} +.mb--43 { + margin-bottom: -43px; +} +.mb-44 { + margin-bottom: 44px; +} +.mb--44 { + margin-bottom: -44px; +} +.mb-45 { + margin-bottom: 45px; +} +.mb--45 { + margin-bottom: -45px; +} +.mb-46 { + margin-bottom: 46px; +} +.mb--46 { + margin-bottom: -46px; +} +.mb-47 { + margin-bottom: 47px; +} +.mb--47 { + margin-bottom: -47px; +} +.mb-48 { + margin-bottom: 48px; +} +.mb--48 { + margin-bottom: -48px; +} +.mb-49 { + margin-bottom: 49px; +} +.mb--49 { + margin-bottom: -49px; +} +.mb-50 { + margin-bottom: 50px; +} +.mb--50 { + margin-bottom: -50px; +} +.mb-n1 { + margin-bottom: 4px; +} +.mb--n1 { + margin-bottom: -4px; +} +.mb-n2 { + margin-bottom: 8px; +} +.mb--n2 { + margin-bottom: -8px; +} +.mb-n3 { + margin-bottom: 12px; +} +.mb--n3 { + margin-bottom: -12px; +} +.mb-n4 { + margin-bottom: 16px; +} +.mb--n4 { + margin-bottom: -16px; +} +.mb-n5 { + margin-bottom: 20px; +} +.mb--n5 { + margin-bottom: -20px; +} +.mb-n6 { + margin-bottom: 24px; +} +.mb--n6 { + margin-bottom: -24px; +} +.mb-n7 { + margin-bottom: 28px; +} +.mb--n7 { + margin-bottom: -28px; +} +.mb-n8 { + margin-bottom: 32px; +} +.mb--n8 { + margin-bottom: -32px; +} +.mb-n9 { + margin-bottom: 36px; +} +.mb--n9 { + margin-bottom: -36px; +} +.mb-n10 { + margin-bottom: 40px; +} +.mb--n10 { + margin-bottom: -40px; +} +.mb-n11 { + margin-bottom: 44px; +} +.mb--n11 { + margin-bottom: -44px; +} +.mb-n12 { + margin-bottom: 48px; +} +.mb--n12 { + margin-bottom: -48px; +} +.mb-n13 { + margin-bottom: 52px; +} +.mb--n13 { + margin-bottom: -52px; +} +.mb-n14 { + margin-bottom: 56px; +} +.mb--n14 { + margin-bottom: -56px; +} +.mb-n15 { + margin-bottom: 60px; +} +.mb--n15 { + margin-bottom: -60px; +} +.mb-n16 { + margin-bottom: 64px; +} +.mb--n16 { + margin-bottom: -64px; +} +.mb-n17 { + margin-bottom: 68px; +} +.mb--n17 { + margin-bottom: -68px; +} +.mb-n18 { + margin-bottom: 72px; +} +.mb--n18 { + margin-bottom: -72px; +} +.mb-n19 { + margin-bottom: 76px; +} +.mb--n19 { + margin-bottom: -76px; +} +.mb-n20 { + margin-bottom: 80px; +} +.mb--n20 { + margin-bottom: -80px; +} +.mb-n21 { + margin-bottom: 84px; +} +.mb--n21 { + margin-bottom: -84px; +} +.mb-n22 { + margin-bottom: 88px; +} +.mb--n22 { + margin-bottom: -88px; +} +.mb-n23 { + margin-bottom: 92px; +} +.mb--n23 { + margin-bottom: -92px; +} +.mb-n24 { + margin-bottom: 96px; +} +.mb--n24 { + margin-bottom: -96px; +} +.mb-n25 { + margin-bottom: 100px; +} +.mb--n25 { + margin-bottom: -100px; +} +.ml-0 { + margin-left: 0; +} +.ml--0 { + margin-left: 0; +} +.ml-1 { + margin-left: 1px; +} +.ml--1 { + margin-left: -1px; +} +.ml-2 { + margin-left: 2px; +} +.ml--2 { + margin-left: -2px; +} +.ml-3 { + margin-left: 3px; +} +.ml--3 { + margin-left: -3px; +} +.ml-4 { + margin-left: 4px; +} +.ml--4 { + margin-left: -4px; +} +.ml-5 { + margin-left: 5px; +} +.ml--5 { + margin-left: -5px; +} +.ml-6 { + margin-left: 6px; +} +.ml--6 { + margin-left: -6px; +} +.ml-7 { + margin-left: 7px; +} +.ml--7 { + margin-left: -7px; +} +.ml-8 { + margin-left: 8px; +} +.ml--8 { + margin-left: -8px; +} +.ml-9 { + margin-left: 9px; +} +.ml--9 { + margin-left: -9px; +} +.ml-10 { + margin-left: 10px; +} +.ml--10 { + margin-left: -10px; +} +.ml-11 { + margin-left: 11px; +} +.ml--11 { + margin-left: -11px; +} +.ml-12 { + margin-left: 12px; +} +.ml--12 { + margin-left: -12px; +} +.ml-13 { + margin-left: 13px; +} +.ml--13 { + margin-left: -13px; +} +.ml-14 { + margin-left: 14px; +} +.ml--14 { + margin-left: -14px; +} +.ml-15 { + margin-left: 15px; +} +.ml--15 { + margin-left: -15px; +} +.ml-16 { + margin-left: 16px; +} +.ml--16 { + margin-left: -16px; +} +.ml-17 { + margin-left: 17px; +} +.ml--17 { + margin-left: -17px; +} +.ml-18 { + margin-left: 18px; +} +.ml--18 { + margin-left: -18px; +} +.ml-19 { + margin-left: 19px; +} +.ml--19 { + margin-left: -19px; +} +.ml-20 { + margin-left: 20px; +} +.ml--20 { + margin-left: -20px; +} +.ml-21 { + margin-left: 21px; +} +.ml--21 { + margin-left: -21px; +} +.ml-22 { + margin-left: 22px; +} +.ml--22 { + margin-left: -22px; +} +.ml-23 { + margin-left: 23px; +} +.ml--23 { + margin-left: -23px; +} +.ml-24 { + margin-left: 24px; +} +.ml--24 { + margin-left: -24px; +} +.ml-25 { + margin-left: 25px; +} +.ml--25 { + margin-left: -25px; +} +.ml-26 { + margin-left: 26px; +} +.ml--26 { + margin-left: -26px; +} +.ml-27 { + margin-left: 27px; +} +.ml--27 { + margin-left: -27px; +} +.ml-28 { + margin-left: 28px; +} +.ml--28 { + margin-left: -28px; +} +.ml-29 { + margin-left: 29px; +} +.ml--29 { + margin-left: -29px; +} +.ml-30 { + margin-left: 30px; +} +.ml--30 { + margin-left: -30px; +} +.ml-31 { + margin-left: 31px; +} +.ml--31 { + margin-left: -31px; +} +.ml-32 { + margin-left: 32px; +} +.ml--32 { + margin-left: -32px; +} +.ml-33 { + margin-left: 33px; +} +.ml--33 { + margin-left: -33px; +} +.ml-34 { + margin-left: 34px; +} +.ml--34 { + margin-left: -34px; +} +.ml-35 { + margin-left: 35px; +} +.ml--35 { + margin-left: -35px; +} +.ml-36 { + margin-left: 36px; +} +.ml--36 { + margin-left: -36px; +} +.ml-37 { + margin-left: 37px; +} +.ml--37 { + margin-left: -37px; +} +.ml-38 { + margin-left: 38px; +} +.ml--38 { + margin-left: -38px; +} +.ml-39 { + margin-left: 39px; +} +.ml--39 { + margin-left: -39px; +} +.ml-40 { + margin-left: 40px; +} +.ml--40 { + margin-left: -40px; +} +.ml-41 { + margin-left: 41px; +} +.ml--41 { + margin-left: -41px; +} +.ml-42 { + margin-left: 42px; +} +.ml--42 { + margin-left: -42px; +} +.ml-43 { + margin-left: 43px; +} +.ml--43 { + margin-left: -43px; +} +.ml-44 { + margin-left: 44px; +} +.ml--44 { + margin-left: -44px; +} +.ml-45 { + margin-left: 45px; +} +.ml--45 { + margin-left: -45px; +} +.ml-46 { + margin-left: 46px; +} +.ml--46 { + margin-left: -46px; +} +.ml-47 { + margin-left: 47px; +} +.ml--47 { + margin-left: -47px; +} +.ml-48 { + margin-left: 48px; +} +.ml--48 { + margin-left: -48px; +} +.ml-49 { + margin-left: 49px; +} +.ml--49 { + margin-left: -49px; +} +.ml-50 { + margin-left: 50px; +} +.ml--50 { + margin-left: -50px; +} +.ml-n1 { + margin-left: 4px; +} +.ml--n1 { + margin-left: -4px; +} +.ml-n2 { + margin-left: 8px; +} +.ml--n2 { + margin-left: -8px; +} +.ml-n3 { + margin-left: 12px; +} +.ml--n3 { + margin-left: -12px; +} +.ml-n4 { + margin-left: 16px; +} +.ml--n4 { + margin-left: -16px; +} +.ml-n5 { + margin-left: 20px; +} +.ml--n5 { + margin-left: -20px; +} +.ml-n6 { + margin-left: 24px; +} +.ml--n6 { + margin-left: -24px; +} +.ml-n7 { + margin-left: 28px; +} +.ml--n7 { + margin-left: -28px; +} +.ml-n8 { + margin-left: 32px; +} +.ml--n8 { + margin-left: -32px; +} +.ml-n9 { + margin-left: 36px; +} +.ml--n9 { + margin-left: -36px; +} +.ml-n10 { + margin-left: 40px; +} +.ml--n10 { + margin-left: -40px; +} +.ml-n11 { + margin-left: 44px; +} +.ml--n11 { + margin-left: -44px; +} +.ml-n12 { + margin-left: 48px; +} +.ml--n12 { + margin-left: -48px; +} +.ml-n13 { + margin-left: 52px; +} +.ml--n13 { + margin-left: -52px; +} +.ml-n14 { + margin-left: 56px; +} +.ml--n14 { + margin-left: -56px; +} +.ml-n15 { + margin-left: 60px; +} +.ml--n15 { + margin-left: -60px; +} +.ml-n16 { + margin-left: 64px; +} +.ml--n16 { + margin-left: -64px; +} +.ml-n17 { + margin-left: 68px; +} +.ml--n17 { + margin-left: -68px; +} +.ml-n18 { + margin-left: 72px; +} +.ml--n18 { + margin-left: -72px; +} +.ml-n19 { + margin-left: 76px; +} +.ml--n19 { + margin-left: -76px; +} +.ml-n20 { + margin-left: 80px; +} +.ml--n20 { + margin-left: -80px; +} +.ml-n21 { + margin-left: 84px; +} +.ml--n21 { + margin-left: -84px; +} +.ml-n22 { + margin-left: 88px; +} +.ml--n22 { + margin-left: -88px; +} +.ml-n23 { + margin-left: 92px; +} +.ml--n23 { + margin-left: -92px; +} +.ml-n24 { + margin-left: 96px; +} +.ml--n24 { + margin-left: -96px; +} +.ml-n25 { + margin-left: 100px; +} +.ml--n25 { + margin-left: -100px; +} +.mx-0 { + margin-left: 0; + margin-right: 0; +} +.mx-1 { + margin-left: 1px; + margin-right: 1px; +} +.mx-2 { + margin-left: 2px; + margin-right: 2px; +} +.mx-3 { + margin-left: 3px; + margin-right: 3px; +} +.mx-4 { + margin-left: 4px; + margin-right: 4px; +} +.mx-5 { + margin-left: 5px; + margin-right: 5px; +} +.mx-6 { + margin-left: 6px; + margin-right: 6px; +} +.mx-7 { + margin-left: 7px; + margin-right: 7px; +} +.mx-8 { + margin-left: 8px; + margin-right: 8px; +} +.mx-9 { + margin-left: 9px; + margin-right: 9px; +} +.mx-10 { + margin-left: 10px; + margin-right: 10px; +} +.mx-11 { + margin-left: 11px; + margin-right: 11px; +} +.mx-12 { + margin-left: 12px; + margin-right: 12px; +} +.mx-13 { + margin-left: 13px; + margin-right: 13px; +} +.mx-14 { + margin-left: 14px; + margin-right: 14px; +} +.mx-15 { + margin-left: 15px; + margin-right: 15px; +} +.mx-16 { + margin-left: 16px; + margin-right: 16px; +} +.mx-17 { + margin-left: 17px; + margin-right: 17px; +} +.mx-18 { + margin-left: 18px; + margin-right: 18px; +} +.mx-19 { + margin-left: 19px; + margin-right: 19px; +} +.mx-20 { + margin-left: 20px; + margin-right: 20px; +} +.mx-21 { + margin-left: 21px; + margin-right: 21px; +} +.mx-22 { + margin-left: 22px; + margin-right: 22px; +} +.mx-23 { + margin-left: 23px; + margin-right: 23px; +} +.mx-24 { + margin-left: 24px; + margin-right: 24px; +} +.mx-25 { + margin-left: 25px; + margin-right: 25px; +} +.mx-26 { + margin-left: 26px; + margin-right: 26px; +} +.mx-27 { + margin-left: 27px; + margin-right: 27px; +} +.mx-28 { + margin-left: 28px; + margin-right: 28px; +} +.mx-29 { + margin-left: 29px; + margin-right: 29px; +} +.mx-30 { + margin-left: 30px; + margin-right: 30px; +} +.mx-31 { + margin-left: 31px; + margin-right: 31px; +} +.mx-32 { + margin-left: 32px; + margin-right: 32px; +} +.mx-33 { + margin-left: 33px; + margin-right: 33px; +} +.mx-34 { + margin-left: 34px; + margin-right: 34px; +} +.mx-35 { + margin-left: 35px; + margin-right: 35px; +} +.mx-36 { + margin-left: 36px; + margin-right: 36px; +} +.mx-37 { + margin-left: 37px; + margin-right: 37px; +} +.mx-38 { + margin-left: 38px; + margin-right: 38px; +} +.mx-39 { + margin-left: 39px; + margin-right: 39px; +} +.mx-40 { + margin-left: 40px; + margin-right: 40px; +} +.mx-41 { + margin-left: 41px; + margin-right: 41px; +} +.mx-42 { + margin-left: 42px; + margin-right: 42px; +} +.mx-43 { + margin-left: 43px; + margin-right: 43px; +} +.mx-44 { + margin-left: 44px; + margin-right: 44px; +} +.mx-45 { + margin-left: 45px; + margin-right: 45px; +} +.mx-46 { + margin-left: 46px; + margin-right: 46px; +} +.mx-47 { + margin-left: 47px; + margin-right: 47px; +} +.mx-48 { + margin-left: 48px; + margin-right: 48px; +} +.mx-49 { + margin-left: 49px; + margin-right: 49px; +} +.mx-50 { + margin-left: 50px; + margin-right: 50px; +} +.mx-n1 { + margin-left: 4px; + margin-right: 4px; +} +.mx-n2 { + margin-left: 8px; + margin-right: 8px; +} +.mx-n3 { + margin-left: 12px; + margin-right: 12px; +} +.mx-n4 { + margin-left: 16px; + margin-right: 16px; +} +.mx-n5 { + margin-left: 20px; + margin-right: 20px; +} +.mx-n6 { + margin-left: 24px; + margin-right: 24px; +} +.mx-n7 { + margin-left: 28px; + margin-right: 28px; +} +.mx-n8 { + margin-left: 32px; + margin-right: 32px; +} +.mx-n9 { + margin-left: 36px; + margin-right: 36px; +} +.mx-n10 { + margin-left: 40px; + margin-right: 40px; +} +.mx-n11 { + margin-left: 44px; + margin-right: 44px; +} +.mx-n12 { + margin-left: 48px; + margin-right: 48px; +} +.mx-n13 { + margin-left: 52px; + margin-right: 52px; +} +.mx-n14 { + margin-left: 56px; + margin-right: 56px; +} +.mx-n15 { + margin-left: 60px; + margin-right: 60px; +} +.mx-n16 { + margin-left: 64px; + margin-right: 64px; +} +.mx-n17 { + margin-left: 68px; + margin-right: 68px; +} +.mx-n18 { + margin-left: 72px; + margin-right: 72px; +} +.mx-n19 { + margin-left: 76px; + margin-right: 76px; +} +.mx-n20 { + margin-left: 80px; + margin-right: 80px; +} +.mx-n21 { + margin-left: 84px; + margin-right: 84px; +} +.mx-n22 { + margin-left: 88px; + margin-right: 88px; +} +.mx-n23 { + margin-left: 92px; + margin-right: 92px; +} +.mx-n24 { + margin-left: 96px; + margin-right: 96px; +} +.mx-n25 { + margin-left: 100px; + margin-right: 100px; +} +.my-0 { + margin-top: 0; + margin-bottom: 0; +} +.my-1 { + margin-top: 1px; + margin-bottom: 1px; +} +.my-2 { + margin-top: 2px; + margin-bottom: 2px; +} +.my-3 { + margin-top: 3px; + margin-bottom: 3px; +} +.my-4 { + margin-top: 4px; + margin-bottom: 4px; +} +.my-5 { + margin-top: 5px; + margin-bottom: 5px; +} +.my-6 { + margin-top: 6px; + margin-bottom: 6px; +} +.my-7 { + margin-top: 7px; + margin-bottom: 7px; +} +.my-8 { + margin-top: 8px; + margin-bottom: 8px; +} +.my-9 { + margin-top: 9px; + margin-bottom: 9px; +} +.my-10 { + margin-top: 10px; + margin-bottom: 10px; +} +.my-11 { + margin-top: 11px; + margin-bottom: 11px; +} +.my-12 { + margin-top: 12px; + margin-bottom: 12px; +} +.my-13 { + margin-top: 13px; + margin-bottom: 13px; +} +.my-14 { + margin-top: 14px; + margin-bottom: 14px; +} +.my-15 { + margin-top: 15px; + margin-bottom: 15px; +} +.my-16 { + margin-top: 16px; + margin-bottom: 16px; +} +.my-17 { + margin-top: 17px; + margin-bottom: 17px; +} +.my-18 { + margin-top: 18px; + margin-bottom: 18px; +} +.my-19 { + margin-top: 19px; + margin-bottom: 19px; +} +.my-20 { + margin-top: 20px; + margin-bottom: 20px; +} +.my-21 { + margin-top: 21px; + margin-bottom: 21px; +} +.my-22 { + margin-top: 22px; + margin-bottom: 22px; +} +.my-23 { + margin-top: 23px; + margin-bottom: 23px; +} +.my-24 { + margin-top: 24px; + margin-bottom: 24px; +} +.my-25 { + margin-top: 25px; + margin-bottom: 25px; +} +.my-26 { + margin-top: 26px; + margin-bottom: 26px; +} +.my-27 { + margin-top: 27px; + margin-bottom: 27px; +} +.my-28 { + margin-top: 28px; + margin-bottom: 28px; +} +.my-29 { + margin-top: 29px; + margin-bottom: 29px; +} +.my-30 { + margin-top: 30px; + margin-bottom: 30px; +} +.my-31 { + margin-top: 31px; + margin-bottom: 31px; +} +.my-32 { + margin-top: 32px; + margin-bottom: 32px; +} +.my-33 { + margin-top: 33px; + margin-bottom: 33px; +} +.my-34 { + margin-top: 34px; + margin-bottom: 34px; +} +.my-35 { + margin-top: 35px; + margin-bottom: 35px; +} +.my-36 { + margin-top: 36px; + margin-bottom: 36px; +} +.my-37 { + margin-top: 37px; + margin-bottom: 37px; +} +.my-38 { + margin-top: 38px; + margin-bottom: 38px; +} +.my-39 { + margin-top: 39px; + margin-bottom: 39px; +} +.my-40 { + margin-top: 40px; + margin-bottom: 40px; +} +.my-41 { + margin-top: 41px; + margin-bottom: 41px; +} +.my-42 { + margin-top: 42px; + margin-bottom: 42px; +} +.my-43 { + margin-top: 43px; + margin-bottom: 43px; +} +.my-44 { + margin-top: 44px; + margin-bottom: 44px; +} +.my-45 { + margin-top: 45px; + margin-bottom: 45px; +} +.my-46 { + margin-top: 46px; + margin-bottom: 46px; +} +.my-47 { + margin-top: 47px; + margin-bottom: 47px; +} +.my-48 { + margin-top: 48px; + margin-bottom: 48px; +} +.my-49 { + margin-top: 49px; + margin-bottom: 49px; +} +.my-50 { + margin-top: 50px; + margin-bottom: 50px; +} +.my-n1 { + margin-top: 4px; + margin-bottom: 4px; +} +.my-n2 { + margin-top: 8px; + margin-bottom: 8px; +} +.my-n3 { + margin-top: 12px; + margin-bottom: 12px; +} +.my-n4 { + margin-top: 16px; + margin-bottom: 16px; +} +.my-n5 { + margin-top: 20px; + margin-bottom: 20px; +} +.my-n6 { + margin-top: 24px; + margin-bottom: 24px; +} +.my-n7 { + margin-top: 28px; + margin-bottom: 28px; +} +.my-n8 { + margin-top: 32px; + margin-bottom: 32px; +} +.my-n9 { + margin-top: 36px; + margin-bottom: 36px; +} +.my-n10 { + margin-top: 40px; + margin-bottom: 40px; +} +.my-n11 { + margin-top: 44px; + margin-bottom: 44px; +} +.my-n12 { + margin-top: 48px; + margin-bottom: 48px; +} +.my-n13 { + margin-top: 52px; + margin-bottom: 52px; +} +.my-n14 { + margin-top: 56px; + margin-bottom: 56px; +} +.my-n15 { + margin-top: 60px; + margin-bottom: 60px; +} +.my-n16 { + margin-top: 64px; + margin-bottom: 64px; +} +.my-n17 { + margin-top: 68px; + margin-bottom: 68px; +} +.my-n18 { + margin-top: 72px; + margin-bottom: 72px; +} +.my-n19 { + margin-top: 76px; + margin-bottom: 76px; +} +.my-n20 { + margin-top: 80px; + margin-bottom: 80px; +} +.my-n21 { + margin-top: 84px; + margin-bottom: 84px; +} +.my-n22 { + margin-top: 88px; + margin-bottom: 88px; +} +.my-n23 { + margin-top: 92px; + margin-bottom: 92px; +} +.my-n24 { + margin-top: 96px; + margin-bottom: 96px; +} +.my-n25 { + margin-top: 100px; + margin-bottom: 100px; +} +.t-0 { + top: 0; +} +.t--0 { + top: 0; +} +.t-1 { + top: 1px; +} +.t--1 { + top: -1px; +} +.t-2 { + top: 2px; +} +.t--2 { + top: -2px; +} +.t-3 { + top: 3px; +} +.t--3 { + top: -3px; +} +.t-4 { + top: 4px; +} +.t--4 { + top: -4px; +} +.t-5 { + top: 5px; +} +.t--5 { + top: -5px; +} +.t-6 { + top: 6px; +} +.t--6 { + top: -6px; +} +.t-7 { + top: 7px; +} +.t--7 { + top: -7px; +} +.t-8 { + top: 8px; +} +.t--8 { + top: -8px; +} +.t-9 { + top: 9px; +} +.t--9 { + top: -9px; +} +.t-10 { + top: 10px; +} +.t--10 { + top: -10px; +} +.t-11 { + top: 11px; +} +.t--11 { + top: -11px; +} +.t-12 { + top: 12px; +} +.t--12 { + top: -12px; +} +.t-13 { + top: 13px; +} +.t--13 { + top: -13px; +} +.t-14 { + top: 14px; +} +.t--14 { + top: -14px; +} +.t-15 { + top: 15px; +} +.t--15 { + top: -15px; +} +.t-16 { + top: 16px; +} +.t--16 { + top: -16px; +} +.t-17 { + top: 17px; +} +.t--17 { + top: -17px; +} +.t-18 { + top: 18px; +} +.t--18 { + top: -18px; +} +.t-19 { + top: 19px; +} +.t--19 { + top: -19px; +} +.t-20 { + top: 20px; +} +.t--20 { + top: -20px; +} +.t-21 { + top: 21px; +} +.t--21 { + top: -21px; +} +.t-22 { + top: 22px; +} +.t--22 { + top: -22px; +} +.t-23 { + top: 23px; +} +.t--23 { + top: -23px; +} +.t-24 { + top: 24px; +} +.t--24 { + top: -24px; +} +.t-25 { + top: 25px; +} +.t--25 { + top: -25px; +} +.t-26 { + top: 26px; +} +.t--26 { + top: -26px; +} +.t-27 { + top: 27px; +} +.t--27 { + top: -27px; +} +.t-28 { + top: 28px; +} +.t--28 { + top: -28px; +} +.t-29 { + top: 29px; +} +.t--29 { + top: -29px; +} +.t-30 { + top: 30px; +} +.t--30 { + top: -30px; +} +.t-31 { + top: 31px; +} +.t--31 { + top: -31px; +} +.t-32 { + top: 32px; +} +.t--32 { + top: -32px; +} +.t-33 { + top: 33px; +} +.t--33 { + top: -33px; +} +.t-34 { + top: 34px; +} +.t--34 { + top: -34px; +} +.t-35 { + top: 35px; +} +.t--35 { + top: -35px; +} +.t-36 { + top: 36px; +} +.t--36 { + top: -36px; +} +.t-37 { + top: 37px; +} +.t--37 { + top: -37px; +} +.t-38 { + top: 38px; +} +.t--38 { + top: -38px; +} +.t-39 { + top: 39px; +} +.t--39 { + top: -39px; +} +.t-40 { + top: 40px; +} +.t--40 { + top: -40px; +} +.t-41 { + top: 41px; +} +.t--41 { + top: -41px; +} +.t-42 { + top: 42px; +} +.t--42 { + top: -42px; +} +.t-43 { + top: 43px; +} +.t--43 { + top: -43px; +} +.t-44 { + top: 44px; +} +.t--44 { + top: -44px; +} +.t-45 { + top: 45px; +} +.t--45 { + top: -45px; +} +.t-46 { + top: 46px; +} +.t--46 { + top: -46px; +} +.t-47 { + top: 47px; +} +.t--47 { + top: -47px; +} +.t-48 { + top: 48px; +} +.t--48 { + top: -48px; +} +.t-49 { + top: 49px; +} +.t--49 { + top: -49px; +} +.t-50 { + top: 50px; +} +.t--50 { + top: -50px; +} +.t-n1 { + top: 4px; +} +.t--n1 { + top: -4px; +} +.t-n2 { + top: 8px; +} +.t--n2 { + top: -8px; +} +.t-n3 { + top: 12px; +} +.t--n3 { + top: -12px; +} +.t-n4 { + top: 16px; +} +.t--n4 { + top: -16px; +} +.t-n5 { + top: 20px; +} +.t--n5 { + top: -20px; +} +.t-n6 { + top: 24px; +} +.t--n6 { + top: -24px; +} +.t-n7 { + top: 28px; +} +.t--n7 { + top: -28px; +} +.t-n8 { + top: 32px; +} +.t--n8 { + top: -32px; +} +.t-n9 { + top: 36px; +} +.t--n9 { + top: -36px; +} +.t-n10 { + top: 40px; +} +.t--n10 { + top: -40px; +} +.t-n11 { + top: 44px; +} +.t--n11 { + top: -44px; +} +.t-n12 { + top: 48px; +} +.t--n12 { + top: -48px; +} +.t-n13 { + top: 52px; +} +.t--n13 { + top: -52px; +} +.t-n14 { + top: 56px; +} +.t--n14 { + top: -56px; +} +.t-n15 { + top: 60px; +} +.t--n15 { + top: -60px; +} +.t-n16 { + top: 64px; +} +.t--n16 { + top: -64px; +} +.t-n17 { + top: 68px; +} +.t--n17 { + top: -68px; +} +.t-n18 { + top: 72px; +} +.t--n18 { + top: -72px; +} +.t-n19 { + top: 76px; +} +.t--n19 { + top: -76px; +} +.t-n20 { + top: 80px; +} +.t--n20 { + top: -80px; +} +.t-n21 { + top: 84px; +} +.t--n21 { + top: -84px; +} +.t-n22 { + top: 88px; +} +.t--n22 { + top: -88px; +} +.t-n23 { + top: 92px; +} +.t--n23 { + top: -92px; +} +.t-n24 { + top: 96px; +} +.t--n24 { + top: -96px; +} +.t-n25 { + top: 100px; +} +.t--n25 { + top: -100px; +} +.r-0 { + right: 0; +} +.r--0 { + right: 0; +} +.r-1 { + right: 1px; +} +.r--1 { + right: -1px; +} +.r-2 { + right: 2px; +} +.r--2 { + right: -2px; +} +.r-3 { + right: 3px; +} +.r--3 { + right: -3px; +} +.r-4 { + right: 4px; +} +.r--4 { + right: -4px; +} +.r-5 { + right: 5px; +} +.r--5 { + right: -5px; +} +.r-6 { + right: 6px; +} +.r--6 { + right: -6px; +} +.r-7 { + right: 7px; +} +.r--7 { + right: -7px; +} +.r-8 { + right: 8px; +} +.r--8 { + right: -8px; +} +.r-9 { + right: 9px; +} +.r--9 { + right: -9px; +} +.r-10 { + right: 10px; +} +.r--10 { + right: -10px; +} +.r-11 { + right: 11px; +} +.r--11 { + right: -11px; +} +.r-12 { + right: 12px; +} +.r--12 { + right: -12px; +} +.r-13 { + right: 13px; +} +.r--13 { + right: -13px; +} +.r-14 { + right: 14px; +} +.r--14 { + right: -14px; +} +.r-15 { + right: 15px; +} +.r--15 { + right: -15px; +} +.r-16 { + right: 16px; +} +.r--16 { + right: -16px; +} +.r-17 { + right: 17px; +} +.r--17 { + right: -17px; +} +.r-18 { + right: 18px; +} +.r--18 { + right: -18px; +} +.r-19 { + right: 19px; +} +.r--19 { + right: -19px; +} +.r-20 { + right: 20px; +} +.r--20 { + right: -20px; +} +.r-21 { + right: 21px; +} +.r--21 { + right: -21px; +} +.r-22 { + right: 22px; +} +.r--22 { + right: -22px; +} +.r-23 { + right: 23px; +} +.r--23 { + right: -23px; +} +.r-24 { + right: 24px; +} +.r--24 { + right: -24px; +} +.r-25 { + right: 25px; +} +.r--25 { + right: -25px; +} +.r-26 { + right: 26px; +} +.r--26 { + right: -26px; +} +.r-27 { + right: 27px; +} +.r--27 { + right: -27px; +} +.r-28 { + right: 28px; +} +.r--28 { + right: -28px; +} +.r-29 { + right: 29px; +} +.r--29 { + right: -29px; +} +.r-30 { + right: 30px; +} +.r--30 { + right: -30px; +} +.r-31 { + right: 31px; +} +.r--31 { + right: -31px; +} +.r-32 { + right: 32px; +} +.r--32 { + right: -32px; +} +.r-33 { + right: 33px; +} +.r--33 { + right: -33px; +} +.r-34 { + right: 34px; +} +.r--34 { + right: -34px; +} +.r-35 { + right: 35px; +} +.r--35 { + right: -35px; +} +.r-36 { + right: 36px; +} +.r--36 { + right: -36px; +} +.r-37 { + right: 37px; +} +.r--37 { + right: -37px; +} +.r-38 { + right: 38px; +} +.r--38 { + right: -38px; +} +.r-39 { + right: 39px; +} +.r--39 { + right: -39px; +} +.r-40 { + right: 40px; +} +.r--40 { + right: -40px; +} +.r-41 { + right: 41px; +} +.r--41 { + right: -41px; +} +.r-42 { + right: 42px; +} +.r--42 { + right: -42px; +} +.r-43 { + right: 43px; +} +.r--43 { + right: -43px; +} +.r-44 { + right: 44px; +} +.r--44 { + right: -44px; +} +.r-45 { + right: 45px; +} +.r--45 { + right: -45px; +} +.r-46 { + right: 46px; +} +.r--46 { + right: -46px; +} +.r-47 { + right: 47px; +} +.r--47 { + right: -47px; +} +.r-48 { + right: 48px; +} +.r--48 { + right: -48px; +} +.r-49 { + right: 49px; +} +.r--49 { + right: -49px; +} +.r-50 { + right: 50px; +} +.r--50 { + right: -50px; +} +.r-n1 { + right: 4px; +} +.r--n1 { + right: -4px; +} +.r-n2 { + right: 8px; +} +.r--n2 { + right: -8px; +} +.r-n3 { + right: 12px; +} +.r--n3 { + right: -12px; +} +.r-n4 { + right: 16px; +} +.r--n4 { + right: -16px; +} +.r-n5 { + right: 20px; +} +.r--n5 { + right: -20px; +} +.r-n6 { + right: 24px; +} +.r--n6 { + right: -24px; +} +.r-n7 { + right: 28px; +} +.r--n7 { + right: -28px; +} +.r-n8 { + right: 32px; +} +.r--n8 { + right: -32px; +} +.r-n9 { + right: 36px; +} +.r--n9 { + right: -36px; +} +.r-n10 { + right: 40px; +} +.r--n10 { + right: -40px; +} +.r-n11 { + right: 44px; +} +.r--n11 { + right: -44px; +} +.r-n12 { + right: 48px; +} +.r--n12 { + right: -48px; +} +.r-n13 { + right: 52px; +} +.r--n13 { + right: -52px; +} +.r-n14 { + right: 56px; +} +.r--n14 { + right: -56px; +} +.r-n15 { + right: 60px; +} +.r--n15 { + right: -60px; +} +.r-n16 { + right: 64px; +} +.r--n16 { + right: -64px; +} +.r-n17 { + right: 68px; +} +.r--n17 { + right: -68px; +} +.r-n18 { + right: 72px; +} +.r--n18 { + right: -72px; +} +.r-n19 { + right: 76px; +} +.r--n19 { + right: -76px; +} +.r-n20 { + right: 80px; +} +.r--n20 { + right: -80px; +} +.r-n21 { + right: 84px; +} +.r--n21 { + right: -84px; +} +.r-n22 { + right: 88px; +} +.r--n22 { + right: -88px; +} +.r-n23 { + right: 92px; +} +.r--n23 { + right: -92px; +} +.r-n24 { + right: 96px; +} +.r--n24 { + right: -96px; +} +.r-n25 { + right: 100px; +} +.r--n25 { + right: -100px; +} +.b-0 { + bottom: 0; +} +.b--0 { + bottom: 0; +} +.b-1 { + bottom: 1px; +} +.b--1 { + bottom: -1px; +} +.b-2 { + bottom: 2px; +} +.b--2 { + bottom: -2px; +} +.b-3 { + bottom: 3px; +} +.b--3 { + bottom: -3px; +} +.b-4 { + bottom: 4px; +} +.b--4 { + bottom: -4px; +} +.b-5 { + bottom: 5px; +} +.b--5 { + bottom: -5px; +} +.b-6 { + bottom: 6px; +} +.b--6 { + bottom: -6px; +} +.b-7 { + bottom: 7px; +} +.b--7 { + bottom: -7px; +} +.b-8 { + bottom: 8px; +} +.b--8 { + bottom: -8px; +} +.b-9 { + bottom: 9px; +} +.b--9 { + bottom: -9px; +} +.b-10 { + bottom: 10px; +} +.b--10 { + bottom: -10px; +} +.b-11 { + bottom: 11px; +} +.b--11 { + bottom: -11px; +} +.b-12 { + bottom: 12px; +} +.b--12 { + bottom: -12px; +} +.b-13 { + bottom: 13px; +} +.b--13 { + bottom: -13px; +} +.b-14 { + bottom: 14px; +} +.b--14 { + bottom: -14px; +} +.b-15 { + bottom: 15px; +} +.b--15 { + bottom: -15px; +} +.b-16 { + bottom: 16px; +} +.b--16 { + bottom: -16px; +} +.b-17 { + bottom: 17px; +} +.b--17 { + bottom: -17px; +} +.b-18 { + bottom: 18px; +} +.b--18 { + bottom: -18px; +} +.b-19 { + bottom: 19px; +} +.b--19 { + bottom: -19px; +} +.b-20 { + bottom: 20px; +} +.b--20 { + bottom: -20px; +} +.b-21 { + bottom: 21px; +} +.b--21 { + bottom: -21px; +} +.b-22 { + bottom: 22px; +} +.b--22 { + bottom: -22px; +} +.b-23 { + bottom: 23px; +} +.b--23 { + bottom: -23px; +} +.b-24 { + bottom: 24px; +} +.b--24 { + bottom: -24px; +} +.b-25 { + bottom: 25px; +} +.b--25 { + bottom: -25px; +} +.b-26 { + bottom: 26px; +} +.b--26 { + bottom: -26px; +} +.b-27 { + bottom: 27px; +} +.b--27 { + bottom: -27px; +} +.b-28 { + bottom: 28px; +} +.b--28 { + bottom: -28px; +} +.b-29 { + bottom: 29px; +} +.b--29 { + bottom: -29px; +} +.b-30 { + bottom: 30px; +} +.b--30 { + bottom: -30px; +} +.b-31 { + bottom: 31px; +} +.b--31 { + bottom: -31px; +} +.b-32 { + bottom: 32px; +} +.b--32 { + bottom: -32px; +} +.b-33 { + bottom: 33px; +} +.b--33 { + bottom: -33px; +} +.b-34 { + bottom: 34px; +} +.b--34 { + bottom: -34px; +} +.b-35 { + bottom: 35px; +} +.b--35 { + bottom: -35px; +} +.b-36 { + bottom: 36px; +} +.b--36 { + bottom: -36px; +} +.b-37 { + bottom: 37px; +} +.b--37 { + bottom: -37px; +} +.b-38 { + bottom: 38px; +} +.b--38 { + bottom: -38px; +} +.b-39 { + bottom: 39px; +} +.b--39 { + bottom: -39px; +} +.b-40 { + bottom: 40px; +} +.b--40 { + bottom: -40px; +} +.b-41 { + bottom: 41px; +} +.b--41 { + bottom: -41px; +} +.b-42 { + bottom: 42px; +} +.b--42 { + bottom: -42px; +} +.b-43 { + bottom: 43px; +} +.b--43 { + bottom: -43px; +} +.b-44 { + bottom: 44px; +} +.b--44 { + bottom: -44px; +} +.b-45 { + bottom: 45px; +} +.b--45 { + bottom: -45px; +} +.b-46 { + bottom: 46px; +} +.b--46 { + bottom: -46px; +} +.b-47 { + bottom: 47px; +} +.b--47 { + bottom: -47px; +} +.b-48 { + bottom: 48px; +} +.b--48 { + bottom: -48px; +} +.b-49 { + bottom: 49px; +} +.b--49 { + bottom: -49px; +} +.b-50 { + bottom: 50px; +} +.b--50 { + bottom: -50px; +} +.b-n1 { + bottom: 4px; +} +.b--n1 { + bottom: -4px; +} +.b-n2 { + bottom: 8px; +} +.b--n2 { + bottom: -8px; +} +.b-n3 { + bottom: 12px; +} +.b--n3 { + bottom: -12px; +} +.b-n4 { + bottom: 16px; +} +.b--n4 { + bottom: -16px; +} +.b-n5 { + bottom: 20px; +} +.b--n5 { + bottom: -20px; +} +.b-n6 { + bottom: 24px; +} +.b--n6 { + bottom: -24px; +} +.b-n7 { + bottom: 28px; +} +.b--n7 { + bottom: -28px; +} +.b-n8 { + bottom: 32px; +} +.b--n8 { + bottom: -32px; +} +.b-n9 { + bottom: 36px; +} +.b--n9 { + bottom: -36px; +} +.b-n10 { + bottom: 40px; +} +.b--n10 { + bottom: -40px; +} +.b-n11 { + bottom: 44px; +} +.b--n11 { + bottom: -44px; +} +.b-n12 { + bottom: 48px; +} +.b--n12 { + bottom: -48px; +} +.b-n13 { + bottom: 52px; +} +.b--n13 { + bottom: -52px; +} +.b-n14 { + bottom: 56px; +} +.b--n14 { + bottom: -56px; +} +.b-n15 { + bottom: 60px; +} +.b--n15 { + bottom: -60px; +} +.b-n16 { + bottom: 64px; +} +.b--n16 { + bottom: -64px; +} +.b-n17 { + bottom: 68px; +} +.b--n17 { + bottom: -68px; +} +.b-n18 { + bottom: 72px; +} +.b--n18 { + bottom: -72px; +} +.b-n19 { + bottom: 76px; +} +.b--n19 { + bottom: -76px; +} +.b-n20 { + bottom: 80px; +} +.b--n20 { + bottom: -80px; +} +.b-n21 { + bottom: 84px; +} +.b--n21 { + bottom: -84px; +} +.b-n22 { + bottom: 88px; +} +.b--n22 { + bottom: -88px; +} +.b-n23 { + bottom: 92px; +} +.b--n23 { + bottom: -92px; +} +.b-n24 { + bottom: 96px; +} +.b--n24 { + bottom: -96px; +} +.b-n25 { + bottom: 100px; +} +.b--n25 { + bottom: -100px; +} +.l-0 { + left: 0; +} +.l--0 { + left: 0; +} +.l-1 { + left: 1px; +} +.l--1 { + left: -1px; +} +.l-2 { + left: 2px; +} +.l--2 { + left: -2px; +} +.l-3 { + left: 3px; +} +.l--3 { + left: -3px; +} +.l-4 { + left: 4px; +} +.l--4 { + left: -4px; +} +.l-5 { + left: 5px; +} +.l--5 { + left: -5px; +} +.l-6 { + left: 6px; +} +.l--6 { + left: -6px; +} +.l-7 { + left: 7px; +} +.l--7 { + left: -7px; +} +.l-8 { + left: 8px; +} +.l--8 { + left: -8px; +} +.l-9 { + left: 9px; +} +.l--9 { + left: -9px; +} +.l-10 { + left: 10px; +} +.l--10 { + left: -10px; +} +.l-11 { + left: 11px; +} +.l--11 { + left: -11px; +} +.l-12 { + left: 12px; +} +.l--12 { + left: -12px; +} +.l-13 { + left: 13px; +} +.l--13 { + left: -13px; +} +.l-14 { + left: 14px; +} +.l--14 { + left: -14px; +} +.l-15 { + left: 15px; +} +.l--15 { + left: -15px; +} +.l-16 { + left: 16px; +} +.l--16 { + left: -16px; +} +.l-17 { + left: 17px; +} +.l--17 { + left: -17px; +} +.l-18 { + left: 18px; +} +.l--18 { + left: -18px; +} +.l-19 { + left: 19px; +} +.l--19 { + left: -19px; +} +.l-20 { + left: 20px; +} +.l--20 { + left: -20px; +} +.l-21 { + left: 21px; +} +.l--21 { + left: -21px; +} +.l-22 { + left: 22px; +} +.l--22 { + left: -22px; +} +.l-23 { + left: 23px; +} +.l--23 { + left: -23px; +} +.l-24 { + left: 24px; +} +.l--24 { + left: -24px; +} +.l-25 { + left: 25px; +} +.l--25 { + left: -25px; +} +.l-26 { + left: 26px; +} +.l--26 { + left: -26px; +} +.l-27 { + left: 27px; +} +.l--27 { + left: -27px; +} +.l-28 { + left: 28px; +} +.l--28 { + left: -28px; +} +.l-29 { + left: 29px; +} +.l--29 { + left: -29px; +} +.l-30 { + left: 30px; +} +.l--30 { + left: -30px; +} +.l-31 { + left: 31px; +} +.l--31 { + left: -31px; +} +.l-32 { + left: 32px; +} +.l--32 { + left: -32px; +} +.l-33 { + left: 33px; +} +.l--33 { + left: -33px; +} +.l-34 { + left: 34px; +} +.l--34 { + left: -34px; +} +.l-35 { + left: 35px; +} +.l--35 { + left: -35px; +} +.l-36 { + left: 36px; +} +.l--36 { + left: -36px; +} +.l-37 { + left: 37px; +} +.l--37 { + left: -37px; +} +.l-38 { + left: 38px; +} +.l--38 { + left: -38px; +} +.l-39 { + left: 39px; +} +.l--39 { + left: -39px; +} +.l-40 { + left: 40px; +} +.l--40 { + left: -40px; +} +.l-41 { + left: 41px; +} +.l--41 { + left: -41px; +} +.l-42 { + left: 42px; +} +.l--42 { + left: -42px; +} +.l-43 { + left: 43px; +} +.l--43 { + left: -43px; +} +.l-44 { + left: 44px; +} +.l--44 { + left: -44px; +} +.l-45 { + left: 45px; +} +.l--45 { + left: -45px; +} +.l-46 { + left: 46px; +} +.l--46 { + left: -46px; +} +.l-47 { + left: 47px; +} +.l--47 { + left: -47px; +} +.l-48 { + left: 48px; +} +.l--48 { + left: -48px; +} +.l-49 { + left: 49px; +} +.l--49 { + left: -49px; +} +.l-50 { + left: 50px; +} +.l--50 { + left: -50px; +} +.l-n1 { + left: 4px; +} +.l--n1 { + left: -4px; +} +.l-n2 { + left: 8px; +} +.l--n2 { + left: -8px; +} +.l-n3 { + left: 12px; +} +.l--n3 { + left: -12px; +} +.l-n4 { + left: 16px; +} +.l--n4 { + left: -16px; +} +.l-n5 { + left: 20px; +} +.l--n5 { + left: -20px; +} +.l-n6 { + left: 24px; +} +.l--n6 { + left: -24px; +} +.l-n7 { + left: 28px; +} +.l--n7 { + left: -28px; +} +.l-n8 { + left: 32px; +} +.l--n8 { + left: -32px; +} +.l-n9 { + left: 36px; +} +.l--n9 { + left: -36px; +} +.l-n10 { + left: 40px; +} +.l--n10 { + left: -40px; +} +.l-n11 { + left: 44px; +} +.l--n11 { + left: -44px; +} +.l-n12 { + left: 48px; +} +.l--n12 { + left: -48px; +} +.l-n13 { + left: 52px; +} +.l--n13 { + left: -52px; +} +.l-n14 { + left: 56px; +} +.l--n14 { + left: -56px; +} +.l-n15 { + left: 60px; +} +.l--n15 { + left: -60px; +} +.l-n16 { + left: 64px; +} +.l--n16 { + left: -64px; +} +.l-n17 { + left: 68px; +} +.l--n17 { + left: -68px; +} +.l-n18 { + left: 72px; +} +.l--n18 { + left: -72px; +} +.l-n19 { + left: 76px; +} +.l--n19 { + left: -76px; +} +.l-n20 { + left: 80px; +} +.l--n20 { + left: -80px; +} +.l-n21 { + left: 84px; +} +.l--n21 { + left: -84px; +} +.l-n22 { + left: 88px; +} +.l--n22 { + left: -88px; +} +.l-n23 { + left: 92px; +} +.l--n23 { + left: -92px; +} +.l-n24 { + left: 96px; +} +.l--n24 { + left: -96px; +} +.l-n25 { + left: 100px; +} +.l--n25 { + left: -100px; +} +.flex { + display: flex !important; +} +.flex-col { + flex-direction: column !important; + display: flex !important; +} +.flex-wrap { + flex-flow: row wrap !important; + display: flex !important; +} +.flex-shrink { + flex-shrink: 0 !important; + display: flex !important; +} +.flex-row { + flex-direction: row !important; + display: flex !important; +} +.flex-reverse { + flex-direction: row-reverse !important; + display: flex !important; +} +.flex-top-center { + justify-content: center !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} +.flex-top-end { + justify-content: flex-end !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} +.flex-start { + justify-content: flex-start !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-end { + justify-content: flex-end !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-center { + justify-content: center !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-between { + justify-content: space-between !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-around { + justify-content: space-around !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-end-left { + justify-content: flex-end !important; + align-items: flex-start !important; + align-content: center; + display: flex !important; +} +.flex-end-center { + justify-content: flex-end !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-end-right { + justify-content: flex-end !important; + align-items: flex-end !important; + align-content: flex-end; + display: flex !important; +} +.flex-0 { + flex: 0 !important; + flex-grow: 0 !important; +} +.flex-1 { + flex: 1 !important; + flex-grow: 1 !important; +} +.flex-2 { + flex: 2 !important; + flex-grow: 2 !important; +} +.flex-3 { + flex: 3 !important; + flex-grow: 3 !important; +} +.flex-4 { + flex: 4 !important; + flex-grow: 4 !important; +} +.flex-5 { + flex: 5 !important; + flex-grow: 5 !important; +} +.flex-6 { + flex: 6 !important; + flex-grow: 6 !important; +} +.flex-7 { + flex: 7 !important; + flex-grow: 7 !important; +} +.flex-8 { + flex: 8 !important; + flex-grow: 8 !important; +} +.flex-9 { + flex: 9 !important; + flex-grow: 9 !important; +} +.flex-10 { + flex: 10 !important; + flex-grow: 10 !important; +} +.flex-11 { + flex: 11 !important; + flex-grow: 11 !important; +} +.flex-12 { + flex: 12 !important; + flex-grow: 12 !important; +} +.flex-start-top { + justify-content: flex-start !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} +.flex-start-center { + justify-content: flex-start !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-start-end { + justify-content: flex-start !important; + align-items: flex-end !important; + align-content: flex-end; + display: flex !important; +} +.flex-item-top-start { + justify-content: flex-start !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} +.flex-item-top-center { + justify-content: center !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} +.flex-item-top-end { + justify-content: flex-end !important; + align-items: flex-start !important; + align-content: flex-start; + display: flex !important; +} +.flex-item-center-start { + justify-content: flex-start !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-item-center-center { + justify-content: center !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-item-center-center { + justify-content: flex-end !important; + align-items: center !important; + align-content: center; + display: flex !important; +} +.flex-item-end-start { + justify-content: flex-start !important; + align-items: flex-end !important; + align-content: center; + display: flex !important; +} +.flex-item-end-center { + justify-content: center !important; + align-items: flex-end !important; + align-content: center; + display: flex !important; +} +.flex-item-top-end { + justify-content: flex-end !important; + align-items: flex-end !important; + align-content: center; + display: flex !important; +} +.text-red { + color: #f44336 !important; +} +.red { + background-color: #f44336; +} +.text-pink { + color: #e91e63 !important; +} +.pink { + background-color: #e91e63; +} +.text-purple { + color: #9c27b0 !important; +} +.purple { + background-color: #9c27b0; +} +.text-deep-purple { + color: #673ab7 !important; +} +.deep-purple { + background-color: #673ab7; +} +.text-indigo { + color: #3f51b5 !important; +} +.indigo { + background-color: #3f51b5; +} +.text-blue { + color: #2196f3 !important; +} +.blue { + background-color: #2196f3; +} +.text-light-blue { + color: #03a9f4 !important; +} +.light-blue { + background-color: #03a9f4; +} +.text-cyan { + color: #00bcd4 !important; +} +.cyan { + background-color: #00bcd4; +} +.text-teal { + color: #009688 !important; +} +.teal { + background-color: #009688; +} +.text-green { + color: #4caf50 !important; +} +.green { + background-color: #4caf50; +} +.text-light-green { + color: #8bc34a !important; +} +.light-green { + background-color: #8bc34a; +} +.text-lime { + color: #cddc39 !important; +} +.lime { + background-color: #cddc39; +} +.text-yellow { + color: #ffeb3b !important; +} +.yellow { + background-color: #ffeb3b; +} +.text-amber { + color: #ffc107 !important; +} +.amber { + background-color: #ffc107; +} +.text-orange { + color: #ff9800 !important; +} +.orange { + background-color: #ff9800; +} +.text-deep-orange { + color: #ff5722 !important; +} +.deep-orange { + background-color: #ff5722; +} +.text-brown { + color: #795548 !important; +} +.brown { + background-color: #795548; +} +.text-blue-grey { + color: #607d8b !important; +} +.blue-grey { + background-color: #607d8b; +} +.text-grey { + color: #9e9e9e !important; +} +.grey { + background-color: #9e9e9e; +} +.text-black { + color: #000 !important; +} +.black { + background-color: #000; +} +.text-white { + color: #fff !important; +} +.white { + background-color: #fff; +} +.text-lighten-5 { + color: #fafafa !important; +} +.lighten-5 { + background-color: #fafafa; +} +.text-lighten-4 { + color: #f5f5f5 !important; +} +.lighten-4 { + background-color: #f5f5f5; +} +.text-lighten-3 { + color: #eee !important; +} +.lighten-3 { + background-color: #eee; +} +.text-lighten-2 { + color: #e0e0e0 !important; +} +.lighten-2 { + background-color: #e0e0e0; +} +.text-lighten-1 { + color: #bdbdbd !important; +} +.lighten-1 { + background-color: #bdbdbd; +} +.text-darken-1 { + color: #757575 !important; +} +.darken-1 { + background-color: #757575; +} +.text-darken-2 { + color: #616161 !important; +} +.darken-2 { + background-color: #616161; +} +.text-darken-3 { + color: #424242 !important; +} +.darken-3 { + background-color: #424242; +} +.text-darken-4 { + color: #212121 !important; +} +.darken-4 { + background-color: #212121; +} +.text-darken-5 { + color: #131313 !important; +} +.darken-5 { + background-color: #131313; +} +.text-darken-6 { + color: #0a0a0a !important; +} +.darken-6 { + background-color: #0a0a0a; +} diff --git a/uni_modules/UniDevTools/src/tmui/scss/noNvue.css b/uni_modules/UniDevTools/src/tmui/scss/noNvue.css new file mode 100644 index 0000000..f92556c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/noNvue.css @@ -0,0 +1,8687 @@ +@charset "UTF-8"; +/* #ifndef APP-PLUS-NVUE */ +@import url(../tool/tmicon/tmicon.min.css); +.tableHeader .uni-scroll-view::-webkit-scrollbar, +.tableHeader .uni-scroll-view::-webkit-scrollbar { + display: none; + /*隐藏滚动条*/ } + +/* #ifndef APP-NVUE */ +page, +.a-page, +body { + display: flex; + flex-direction: column; } + +page, +.a-page, +body, +tm-app { + /* #ifdef H5 */ + min-height: 100%; + /* #endif */ + /* #ifndef H5 */ + min-height: 100vh; + /* #endif */ + flex: 1; + display: flex; + flex-direction: column; } + +/* #endif */ +.nvue { + display: flex; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; + box-sizing: border-box; + flex-direction: column; } + +/* #endif */ +/* #ifndef APP-PLUS-NVUE */ +.safe-height { + height: var(--window-bottom); } + +.safe-top { + height: var(--window-top); } + +.safe-statusbar { + height: var(--status-bar-height); } + +.blur { + backdrop-filter: blur(10px); + background-color: rgba(0, 0, 0, 0.3); } + +.pointer { + cursor: pointer; } + +.pointer:hover { + opacity: 0.7; } + +/* #endif */ +.overflow { + overflow: hidden; } + +/* #ifndef APP-PLUS-NVUE */ +.overflow-x { + overflow-x: hidden; + overflow-y: auto; } + +.overflow-y { + overflow-x: auto; + overflow-y: hidden; } + +/* #endif */ +.relative { + position: relative !important; } + +.absolute { + position: absolute !important; } + +.fixed { + position: fixed !important; } + +.sticky { + position: sticky !important; } + +/* #ifdef APP-PLUS-NVUE */ +.fulled-height { + display: flex; + align-items: stretch; } + +/* #endif */ +/* #ifndef APP-PLUS-NVUE */ +.clear { + clear: both; } + +.fulled { + width: 100%; + display: block; } + +.fulled-height { + height: 100%; + display: block; } + +.gray-100 { + filter: grayscale(100%); } + +.gray { + filter: grayscale(25%); } + +.d-inline-block { + display: inline-block !important; } + +.d-block { + display: block; } + +.vertical-align-top { + vertical-align: top; } + +.vertical-align-middle { + vertical-align: middle; } + +.vertical-align-bottom { + vertical-align: bottom; } + +.wrap { + white-space: pre-wrap; + word-break: break-all; } + +.nowrap { + white-space: nowrap; } + +.vertical-align-top { + vertical-align: top; } + +.vertical-align-middle { + vertical-align: middle; } + +.vertical-align-bottom { + vertical-align: bottom; } + +/* #endif */ +.zIndex-0 { + z-index: 0; } + +.zIndex-n0 { + z-index: 0; } + +.zIndex-1 { + z-index: 1; } + +.zIndex-n1 { + z-index: 4; } + +.zIndex-2 { + z-index: 2; } + +.zIndex-n2 { + z-index: 8; } + +.zIndex-3 { + z-index: 3; } + +.zIndex-n3 { + z-index: 12; } + +.zIndex-4 { + z-index: 4; } + +.zIndex-n4 { + z-index: 16; } + +.zIndex-5 { + z-index: 5; } + +.zIndex-n5 { + z-index: 20; } + +.zIndex-6 { + z-index: 6; } + +.zIndex-n6 { + z-index: 24; } + +.zIndex-7 { + z-index: 7; } + +.zIndex-n7 { + z-index: 28; } + +.zIndex-8 { + z-index: 8; } + +.zIndex-n8 { + z-index: 32; } + +.zIndex-9 { + z-index: 9; } + +.zIndex-n9 { + z-index: 36; } + +.zIndex-10 { + z-index: 10; } + +.zIndex-n10 { + z-index: 40; } + +.zIndex-11 { + z-index: 11; } + +.zIndex-n11 { + z-index: 44; } + +.zIndex-12 { + z-index: 12; } + +.zIndex-n12 { + z-index: 48; } + +.zIndex-13 { + z-index: 13; } + +.zIndex-n13 { + z-index: 52; } + +.zIndex-14 { + z-index: 14; } + +.zIndex-n14 { + z-index: 56; } + +.zIndex-15 { + z-index: 15; } + +.zIndex-n15 { + z-index: 60; } + +.zIndex-16 { + z-index: 16; } + +.zIndex-n16 { + z-index: 64; } + +.zIndex-17 { + z-index: 17; } + +.zIndex-n17 { + z-index: 68; } + +.zIndex-18 { + z-index: 18; } + +.zIndex-n18 { + z-index: 72; } + +.zIndex-19 { + z-index: 19; } + +.zIndex-n19 { + z-index: 76; } + +.zIndex-20 { + z-index: 20; } + +.zIndex-n20 { + z-index: 80; } + +.zIndex-21 { + z-index: 21; } + +.zIndex-n21 { + z-index: 84; } + +.zIndex-22 { + z-index: 22; } + +.zIndex-n22 { + z-index: 88; } + +.zIndex-23 { + z-index: 23; } + +.zIndex-n23 { + z-index: 92; } + +.zIndex-24 { + z-index: 24; } + +.zIndex-n24 { + z-index: 96; } + +.zIndex-25 { + z-index: 25; } + +.zIndex-n25 { + z-index: 100; } + +.zIndex-26 { + z-index: 26; } + +.zIndex-n26 { + z-index: 104; } + +.text-overflow { + width: 100%; + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +.text-overflow-1 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical; + text-overflow: ellipsis; } + +.text-overflow-2 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + text-overflow: ellipsis; } + +.text-overflow-3 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + text-overflow: ellipsis; } + +.text-overflow-4 { + width: 100%; + display: -webkit-box; + white-space: inherit; + overflow: hidden; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical; + text-overflow: ellipsis; } + +.text-delete { + text-decoration: line-through; } + +.text-underline { + text-decoration: underline; } + +/* #ifdef H5*/ +.text-size-xxs { + font-size: 20rpx; } + .text-size-xxs span { + font-size: 20rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-xxs { + font-size: 20rpx; } + +/* #endif */ +/* #ifdef H5*/ +.text-size-xs { + font-size: 22rpx; } + .text-size-xs span { + font-size: 22rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-xs { + font-size: 22rpx; } + +/* #endif */ +/* #ifdef H5*/ +.text-size-s { + font-size: 24rpx; } + .text-size-s span { + font-size: 24rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-s { + font-size: 24rpx; } + +/* #endif */ +/* #ifdef H5*/ +.text-size-m { + font-size: 28rpx; } + .text-size-m span { + font-size: 28rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-m { + font-size: 28rpx; } + +/* #endif */ +/* #ifdef H5*/ +.text-size-n { + font-size: 30rpx; } + .text-size-n span { + font-size: 30rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-n { + font-size: 30rpx; } + +/* #endif */ +/* #ifdef H5*/ +.text-size-g { + font-size: 34rpx; } + .text-size-g span { + font-size: 34rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-g { + font-size: 34rpx; } + +/* #endif */ +/* #ifdef H5*/ +.text-size-lg { + font-size: 36rpx; } + .text-size-lg span { + font-size: 36rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-lg { + font-size: 36rpx; } + +/* #endif */ +/* #ifdef H5*/ +.text-size-xl { + font-size: 40rpx; } + .text-size-xl span { + font-size: 40rpx; } + +/* #endif */ +/* #ifndef H5*/ +.text-size-xl { + font-size: 40rpx; } + +/* #endif */ +.text-weight-s { + font-weight: 100; } + +.text-weight-n { + font-weight: 400; } + +.text-weight-b { + font-weight: 700; } + +.text-align-left { + text-align: left; } + +.text-align-right { + text-align: right; } + +.text-align-center { + text-align: center; } + +.round-tl-0 { + border-top-left-radius: 0rpx !important; } + +.round-tl-1 { + border-top-left-radius: 4rpx !important; } + +.round-tl-2 { + border-top-left-radius: 8rpx !important; } + +.round-tl-3 { + border-top-left-radius: 12rpx !important; } + +.round-tl-4 { + border-top-left-radius: 16rpx !important; } + +.round-tl-5 { + border-top-left-radius: 20rpx !important; } + +.round-tl-6 { + border-top-left-radius: 24rpx !important; } + +.round-tl-7 { + border-top-left-radius: 28rpx !important; } + +.round-tl-8 { + border-top-left-radius: 32rpx !important; } + +.round-tl-9 { + border-top-left-radius: 36rpx !important; } + +.round-tl-10 { + border-top-left-radius: 40rpx !important; } + +.round-tl-11 { + border-top-left-radius: 44rpx !important; } + +.round-tl-12 { + border-top-left-radius: 48rpx !important; } + +.round-tl-13 { + border-top-left-radius: 52rpx !important; } + +.round-tl-14 { + border-top-left-radius: 56rpx !important; } + +.round-tl-15 { + border-top-left-radius: 60rpx !important; } + +.round-tl-16 { + border-top-left-radius: 64rpx !important; } + +.round-tl-17 { + border-top-left-radius: 68rpx !important; } + +.round-tl-18 { + border-top-left-radius: 72rpx !important; } + +.round-tl-19 { + border-top-left-radius: 76rpx !important; } + +.round-tl-20 { + border-top-left-radius: 80rpx !important; } + +.round-tl-21 { + border-top-left-radius: 84rpx !important; } + +.round-tl-22 { + border-top-left-radius: 88rpx !important; } + +.round-tl-23 { + border-top-left-radius: 92rpx !important; } + +.round-tl-24 { + border-top-left-radius: 96rpx !important; } + +.round-tl-25 { + border-top-left-radius: 100rpx !important; } + +.round-tr-0 { + border-top-right-radius: 0rpx !important; } + +.round-tr-1 { + border-top-right-radius: 4rpx !important; } + +.round-tr-2 { + border-top-right-radius: 8rpx !important; } + +.round-tr-3 { + border-top-right-radius: 12rpx !important; } + +.round-tr-4 { + border-top-right-radius: 16rpx !important; } + +.round-tr-5 { + border-top-right-radius: 20rpx !important; } + +.round-tr-6 { + border-top-right-radius: 24rpx !important; } + +.round-tr-7 { + border-top-right-radius: 28rpx !important; } + +.round-tr-8 { + border-top-right-radius: 32rpx !important; } + +.round-tr-9 { + border-top-right-radius: 36rpx !important; } + +.round-tr-10 { + border-top-right-radius: 40rpx !important; } + +.round-tr-11 { + border-top-right-radius: 44rpx !important; } + +.round-tr-12 { + border-top-right-radius: 48rpx !important; } + +.round-tr-13 { + border-top-right-radius: 52rpx !important; } + +.round-tr-14 { + border-top-right-radius: 56rpx !important; } + +.round-tr-15 { + border-top-right-radius: 60rpx !important; } + +.round-tr-16 { + border-top-right-radius: 64rpx !important; } + +.round-tr-17 { + border-top-right-radius: 68rpx !important; } + +.round-tr-18 { + border-top-right-radius: 72rpx !important; } + +.round-tr-19 { + border-top-right-radius: 76rpx !important; } + +.round-tr-20 { + border-top-right-radius: 80rpx !important; } + +.round-tr-21 { + border-top-right-radius: 84rpx !important; } + +.round-tr-22 { + border-top-right-radius: 88rpx !important; } + +.round-tr-23 { + border-top-right-radius: 92rpx !important; } + +.round-tr-24 { + border-top-right-radius: 96rpx !important; } + +.round-tr-25 { + border-top-right-radius: 100rpx !important; } + +.round-bl-0 { + border-bottom-left-radius: 0rpx !important; } + +.round-bl-1 { + border-bottom-left-radius: 4rpx !important; } + +.round-bl-2 { + border-bottom-left-radius: 8rpx !important; } + +.round-bl-3 { + border-bottom-left-radius: 12rpx !important; } + +.round-bl-4 { + border-bottom-left-radius: 16rpx !important; } + +.round-bl-5 { + border-bottom-left-radius: 20rpx !important; } + +.round-bl-6 { + border-bottom-left-radius: 24rpx !important; } + +.round-bl-7 { + border-bottom-left-radius: 28rpx !important; } + +.round-bl-8 { + border-bottom-left-radius: 32rpx !important; } + +.round-bl-9 { + border-bottom-left-radius: 36rpx !important; } + +.round-bl-10 { + border-bottom-left-radius: 40rpx !important; } + +.round-bl-11 { + border-bottom-left-radius: 44rpx !important; } + +.round-bl-12 { + border-bottom-left-radius: 48rpx !important; } + +.round-bl-13 { + border-bottom-left-radius: 52rpx !important; } + +.round-bl-14 { + border-bottom-left-radius: 56rpx !important; } + +.round-bl-15 { + border-bottom-left-radius: 60rpx !important; } + +.round-bl-16 { + border-bottom-left-radius: 64rpx !important; } + +.round-bl-17 { + border-bottom-left-radius: 68rpx !important; } + +.round-bl-18 { + border-bottom-left-radius: 72rpx !important; } + +.round-bl-19 { + border-bottom-left-radius: 76rpx !important; } + +.round-bl-20 { + border-bottom-left-radius: 80rpx !important; } + +.round-bl-21 { + border-bottom-left-radius: 84rpx !important; } + +.round-bl-22 { + border-bottom-left-radius: 88rpx !important; } + +.round-bl-23 { + border-bottom-left-radius: 92rpx !important; } + +.round-bl-24 { + border-bottom-left-radius: 96rpx !important; } + +.round-bl-25 { + border-bottom-left-radius: 100rpx !important; } + +.round-br-0 { + border-bottom-right-radius: 0rpx !important; } + +.round-br-1 { + border-bottom-right-radius: 4rpx !important; } + +.round-br-2 { + border-bottom-right-radius: 8rpx !important; } + +.round-br-3 { + border-bottom-right-radius: 12rpx !important; } + +.round-br-4 { + border-bottom-right-radius: 16rpx !important; } + +.round-br-5 { + border-bottom-right-radius: 20rpx !important; } + +.round-br-6 { + border-bottom-right-radius: 24rpx !important; } + +.round-br-7 { + border-bottom-right-radius: 28rpx !important; } + +.round-br-8 { + border-bottom-right-radius: 32rpx !important; } + +.round-br-9 { + border-bottom-right-radius: 36rpx !important; } + +.round-br-10 { + border-bottom-right-radius: 40rpx !important; } + +.round-br-11 { + border-bottom-right-radius: 44rpx !important; } + +.round-br-12 { + border-bottom-right-radius: 48rpx !important; } + +.round-br-13 { + border-bottom-right-radius: 52rpx !important; } + +.round-br-14 { + border-bottom-right-radius: 56rpx !important; } + +.round-br-15 { + border-bottom-right-radius: 60rpx !important; } + +.round-br-16 { + border-bottom-right-radius: 64rpx !important; } + +.round-br-17 { + border-bottom-right-radius: 68rpx !important; } + +.round-br-18 { + border-bottom-right-radius: 72rpx !important; } + +.round-br-19 { + border-bottom-right-radius: 76rpx !important; } + +.round-br-20 { + border-bottom-right-radius: 80rpx !important; } + +.round-br-21 { + border-bottom-right-radius: 84rpx !important; } + +.round-br-22 { + border-bottom-right-radius: 88rpx !important; } + +.round-br-23 { + border-bottom-right-radius: 92rpx !important; } + +.round-br-24 { + border-bottom-right-radius: 96rpx !important; } + +.round-br-25 { + border-bottom-right-radius: 100rpx !important; } + +.round-a-0 { + border-radius: 0rpx !important; } + +.round-a-1 { + border-radius: 4rpx !important; } + +.round-a-2 { + border-radius: 8rpx !important; } + +.round-a-3 { + border-radius: 12rpx !important; } + +.round-a-4 { + border-radius: 16rpx !important; } + +.round-a-5 { + border-radius: 20rpx !important; } + +.round-a-6 { + border-radius: 24rpx !important; } + +.round-a-7 { + border-radius: 28rpx !important; } + +.round-a-8 { + border-radius: 32rpx !important; } + +.round-a-9 { + border-radius: 36rpx !important; } + +.round-a-10 { + border-radius: 40rpx !important; } + +.round-a-11 { + border-radius: 44rpx !important; } + +.round-a-12 { + border-radius: 48rpx !important; } + +.round-a-13 { + border-radius: 52rpx !important; } + +.round-a-14 { + border-radius: 56rpx !important; } + +.round-a-15 { + border-radius: 60rpx !important; } + +.round-a-16 { + border-radius: 64rpx !important; } + +.round-a-17 { + border-radius: 68rpx !important; } + +.round-a-18 { + border-radius: 72rpx !important; } + +.round-a-19 { + border-radius: 76rpx !important; } + +.round-a-20 { + border-radius: 80rpx !important; } + +.round-a-21 { + border-radius: 84rpx !important; } + +.round-a-22 { + border-radius: 88rpx !important; } + +.round-a-23 { + border-radius: 92rpx !important; } + +.round-a-24 { + border-radius: 96rpx !important; } + +.round-a-25 { + border-radius: 100rpx !important; } + +.round-t-0 { + border-top-left-radius: 0rpx !important; + border-top-right-radius: 0rpx !important; } + +.round-t-1 { + border-top-left-radius: 4rpx !important; + border-top-right-radius: 4rpx !important; } + +.round-t-2 { + border-top-left-radius: 8rpx !important; + border-top-right-radius: 8rpx !important; } + +.round-t-3 { + border-top-left-radius: 12rpx !important; + border-top-right-radius: 12rpx !important; } + +.round-t-4 { + border-top-left-radius: 16rpx !important; + border-top-right-radius: 16rpx !important; } + +.round-t-5 { + border-top-left-radius: 20rpx !important; + border-top-right-radius: 20rpx !important; } + +.round-t-6 { + border-top-left-radius: 24rpx !important; + border-top-right-radius: 24rpx !important; } + +.round-t-7 { + border-top-left-radius: 28rpx !important; + border-top-right-radius: 28rpx !important; } + +.round-t-8 { + border-top-left-radius: 32rpx !important; + border-top-right-radius: 32rpx !important; } + +.round-t-9 { + border-top-left-radius: 36rpx !important; + border-top-right-radius: 36rpx !important; } + +.round-t-10 { + border-top-left-radius: 40rpx !important; + border-top-right-radius: 40rpx !important; } + +.round-t-11 { + border-top-left-radius: 44rpx !important; + border-top-right-radius: 44rpx !important; } + +.round-t-12 { + border-top-left-radius: 48rpx !important; + border-top-right-radius: 48rpx !important; } + +.round-t-13 { + border-top-left-radius: 52rpx !important; + border-top-right-radius: 52rpx !important; } + +.round-t-14 { + border-top-left-radius: 56rpx !important; + border-top-right-radius: 56rpx !important; } + +.round-t-15 { + border-top-left-radius: 60rpx !important; + border-top-right-radius: 60rpx !important; } + +.round-t-16 { + border-top-left-radius: 64rpx !important; + border-top-right-radius: 64rpx !important; } + +.round-t-17 { + border-top-left-radius: 68rpx !important; + border-top-right-radius: 68rpx !important; } + +.round-t-18 { + border-top-left-radius: 72rpx !important; + border-top-right-radius: 72rpx !important; } + +.round-t-19 { + border-top-left-radius: 76rpx !important; + border-top-right-radius: 76rpx !important; } + +.round-t-20 { + border-top-left-radius: 80rpx !important; + border-top-right-radius: 80rpx !important; } + +.round-t-21 { + border-top-left-radius: 84rpx !important; + border-top-right-radius: 84rpx !important; } + +.round-t-22 { + border-top-left-radius: 88rpx !important; + border-top-right-radius: 88rpx !important; } + +.round-t-23 { + border-top-left-radius: 92rpx !important; + border-top-right-radius: 92rpx !important; } + +.round-t-24 { + border-top-left-radius: 96rpx !important; + border-top-right-radius: 96rpx !important; } + +.round-t-25 { + border-top-left-radius: 100rpx !important; + border-top-right-radius: 100rpx !important; } + +.round-b-0 { + border-bottom-left-radius: 0rpx !important; + border-bottom-right-radius: 0rpx !important; } + +.round-b-1 { + border-bottom-left-radius: 4rpx !important; + border-bottom-right-radius: 4rpx !important; } + +.round-b-2 { + border-bottom-left-radius: 8rpx !important; + border-bottom-right-radius: 8rpx !important; } + +.round-b-3 { + border-bottom-left-radius: 12rpx !important; + border-bottom-right-radius: 12rpx !important; } + +.round-b-4 { + border-bottom-left-radius: 16rpx !important; + border-bottom-right-radius: 16rpx !important; } + +.round-b-5 { + border-bottom-left-radius: 20rpx !important; + border-bottom-right-radius: 20rpx !important; } + +.round-b-6 { + border-bottom-left-radius: 24rpx !important; + border-bottom-right-radius: 24rpx !important; } + +.round-b-7 { + border-bottom-left-radius: 28rpx !important; + border-bottom-right-radius: 28rpx !important; } + +.round-b-8 { + border-bottom-left-radius: 32rpx !important; + border-bottom-right-radius: 32rpx !important; } + +.round-b-9 { + border-bottom-left-radius: 36rpx !important; + border-bottom-right-radius: 36rpx !important; } + +.round-b-10 { + border-bottom-left-radius: 40rpx !important; + border-bottom-right-radius: 40rpx !important; } + +.round-b-11 { + border-bottom-left-radius: 44rpx !important; + border-bottom-right-radius: 44rpx !important; } + +.round-b-12 { + border-bottom-left-radius: 48rpx !important; + border-bottom-right-radius: 48rpx !important; } + +.round-b-13 { + border-bottom-left-radius: 52rpx !important; + border-bottom-right-radius: 52rpx !important; } + +.round-b-14 { + border-bottom-left-radius: 56rpx !important; + border-bottom-right-radius: 56rpx !important; } + +.round-b-15 { + border-bottom-left-radius: 60rpx !important; + border-bottom-right-radius: 60rpx !important; } + +.round-b-16 { + border-bottom-left-radius: 64rpx !important; + border-bottom-right-radius: 64rpx !important; } + +.round-b-17 { + border-bottom-left-radius: 68rpx !important; + border-bottom-right-radius: 68rpx !important; } + +.round-b-18 { + border-bottom-left-radius: 72rpx !important; + border-bottom-right-radius: 72rpx !important; } + +.round-b-19 { + border-bottom-left-radius: 76rpx !important; + border-bottom-right-radius: 76rpx !important; } + +.round-b-20 { + border-bottom-left-radius: 80rpx !important; + border-bottom-right-radius: 80rpx !important; } + +.round-b-21 { + border-bottom-left-radius: 84rpx !important; + border-bottom-right-radius: 84rpx !important; } + +.round-b-22 { + border-bottom-left-radius: 88rpx !important; + border-bottom-right-radius: 88rpx !important; } + +.round-b-23 { + border-bottom-left-radius: 92rpx !important; + border-bottom-right-radius: 92rpx !important; } + +.round-b-24 { + border-bottom-left-radius: 96rpx !important; + border-bottom-right-radius: 96rpx !important; } + +.round-b-25 { + border-bottom-left-radius: 100rpx !important; + border-bottom-right-radius: 100rpx !important; } + +.round-l-0 { + border-top-left-radius: 0rpx !important; + border-bottom-left-radius: 0rpx !important; } + +.round-l-1 { + border-top-left-radius: 4rpx !important; + border-bottom-left-radius: 4rpx !important; } + +.round-l-2 { + border-top-left-radius: 8rpx !important; + border-bottom-left-radius: 8rpx !important; } + +.round-l-3 { + border-top-left-radius: 12rpx !important; + border-bottom-left-radius: 12rpx !important; } + +.round-l-4 { + border-top-left-radius: 16rpx !important; + border-bottom-left-radius: 16rpx !important; } + +.round-l-5 { + border-top-left-radius: 20rpx !important; + border-bottom-left-radius: 20rpx !important; } + +.round-l-6 { + border-top-left-radius: 24rpx !important; + border-bottom-left-radius: 24rpx !important; } + +.round-l-7 { + border-top-left-radius: 28rpx !important; + border-bottom-left-radius: 28rpx !important; } + +.round-l-8 { + border-top-left-radius: 32rpx !important; + border-bottom-left-radius: 32rpx !important; } + +.round-l-9 { + border-top-left-radius: 36rpx !important; + border-bottom-left-radius: 36rpx !important; } + +.round-l-10 { + border-top-left-radius: 40rpx !important; + border-bottom-left-radius: 40rpx !important; } + +.round-l-11 { + border-top-left-radius: 44rpx !important; + border-bottom-left-radius: 44rpx !important; } + +.round-l-12 { + border-top-left-radius: 48rpx !important; + border-bottom-left-radius: 48rpx !important; } + +.round-l-13 { + border-top-left-radius: 52rpx !important; + border-bottom-left-radius: 52rpx !important; } + +.round-l-14 { + border-top-left-radius: 56rpx !important; + border-bottom-left-radius: 56rpx !important; } + +.round-l-15 { + border-top-left-radius: 60rpx !important; + border-bottom-left-radius: 60rpx !important; } + +.round-l-16 { + border-top-left-radius: 64rpx !important; + border-bottom-left-radius: 64rpx !important; } + +.round-l-17 { + border-top-left-radius: 68rpx !important; + border-bottom-left-radius: 68rpx !important; } + +.round-l-18 { + border-top-left-radius: 72rpx !important; + border-bottom-left-radius: 72rpx !important; } + +.round-l-19 { + border-top-left-radius: 76rpx !important; + border-bottom-left-radius: 76rpx !important; } + +.round-l-20 { + border-top-left-radius: 80rpx !important; + border-bottom-left-radius: 80rpx !important; } + +.round-l-21 { + border-top-left-radius: 84rpx !important; + border-bottom-left-radius: 84rpx !important; } + +.round-l-22 { + border-top-left-radius: 88rpx !important; + border-bottom-left-radius: 88rpx !important; } + +.round-l-23 { + border-top-left-radius: 92rpx !important; + border-bottom-left-radius: 92rpx !important; } + +.round-l-24 { + border-top-left-radius: 96rpx !important; + border-bottom-left-radius: 96rpx !important; } + +.round-l-25 { + border-top-left-radius: 100rpx !important; + border-bottom-left-radius: 100rpx !important; } + +.round-r-0 { + border-top-right-radius: 0rpx !important; + border-bottom-right-radius: 0rpx !important; } + +.round-r-1 { + border-top-right-radius: 4rpx !important; + border-bottom-right-radius: 4rpx !important; } + +.round-r-2 { + border-top-right-radius: 8rpx !important; + border-bottom-right-radius: 8rpx !important; } + +.round-r-3 { + border-top-right-radius: 12rpx !important; + border-bottom-right-radius: 12rpx !important; } + +.round-r-4 { + border-top-right-radius: 16rpx !important; + border-bottom-right-radius: 16rpx !important; } + +.round-r-5 { + border-top-right-radius: 20rpx !important; + border-bottom-right-radius: 20rpx !important; } + +.round-r-6 { + border-top-right-radius: 24rpx !important; + border-bottom-right-radius: 24rpx !important; } + +.round-r-7 { + border-top-right-radius: 28rpx !important; + border-bottom-right-radius: 28rpx !important; } + +.round-r-8 { + border-top-right-radius: 32rpx !important; + border-bottom-right-radius: 32rpx !important; } + +.round-r-9 { + border-top-right-radius: 36rpx !important; + border-bottom-right-radius: 36rpx !important; } + +.round-r-10 { + border-top-right-radius: 40rpx !important; + border-bottom-right-radius: 40rpx !important; } + +.round-r-11 { + border-top-right-radius: 44rpx !important; + border-bottom-right-radius: 44rpx !important; } + +.round-r-12 { + border-top-right-radius: 48rpx !important; + border-bottom-right-radius: 48rpx !important; } + +.round-r-13 { + border-top-right-radius: 52rpx !important; + border-bottom-right-radius: 52rpx !important; } + +.round-r-14 { + border-top-right-radius: 56rpx !important; + border-bottom-right-radius: 56rpx !important; } + +.round-r-15 { + border-top-right-radius: 60rpx !important; + border-bottom-right-radius: 60rpx !important; } + +.round-r-16 { + border-top-right-radius: 64rpx !important; + border-bottom-right-radius: 64rpx !important; } + +.round-r-17 { + border-top-right-radius: 68rpx !important; + border-bottom-right-radius: 68rpx !important; } + +.round-r-18 { + border-top-right-radius: 72rpx !important; + border-bottom-right-radius: 72rpx !important; } + +.round-r-19 { + border-top-right-radius: 76rpx !important; + border-bottom-right-radius: 76rpx !important; } + +.round-r-20 { + border-top-right-radius: 80rpx !important; + border-bottom-right-radius: 80rpx !important; } + +.round-r-21 { + border-top-right-radius: 84rpx !important; + border-bottom-right-radius: 84rpx !important; } + +.round-r-22 { + border-top-right-radius: 88rpx !important; + border-bottom-right-radius: 88rpx !important; } + +.round-r-23 { + border-top-right-radius: 92rpx !important; + border-bottom-right-radius: 92rpx !important; } + +.round-r-24 { + border-top-right-radius: 96rpx !important; + border-bottom-right-radius: 96rpx !important; } + +.round-r-25 { + border-top-right-radius: 100rpx !important; + border-bottom-right-radius: 100rpx !important; } + +.round-0 { + border-radius: 0rpx; } + +.round-1 { + border-radius: 4rpx; } + +.round-2 { + border-radius: 8rpx; } + +.round-3 { + border-radius: 12rpx; } + +.round-4 { + border-radius: 16rpx; } + +.round-5 { + border-radius: 20rpx; } + +.round-6 { + border-radius: 24rpx; } + +.round-7 { + border-radius: 28rpx; } + +.round-8 { + border-radius: 32rpx; } + +.round-9 { + border-radius: 36rpx; } + +.round-10 { + border-radius: 40rpx; } + +.round-11 { + border-radius: 44rpx; } + +.round-12 { + border-radius: 48rpx; } + +.round-13 { + border-radius: 52rpx; } + +.round-14 { + border-radius: 56rpx; } + +.round-15 { + border-radius: 60rpx; } + +.round-16 { + border-radius: 64rpx; } + +.round-17 { + border-radius: 68rpx; } + +.round-18 { + border-radius: 72rpx; } + +.round-19 { + border-radius: 76rpx; } + +.round-20 { + border-radius: 80rpx; } + +.round-21 { + border-radius: 84rpx; } + +.round-22 { + border-radius: 88rpx; } + +.round-23 { + border-radius: 92rpx; } + +.round-24 { + border-radius: 96rpx; } + +.round-25 { + border-radius: 100rpx; } + +.round-26 { + border-radius: 104rpx; } + +.rounded { + border-radius: 50% !important; } + +.opacity-0 { + opacity: 0; } + +.opacity-1 { + opacity: 0.1; } + +.opacity-2 { + opacity: 0.2; } + +.opacity-3 { + opacity: 0.3; } + +.opacity-4 { + opacity: 0.4; } + +.opacity-5 { + opacity: 0.5; } + +.opacity-6 { + opacity: 0.6; } + +.opacity-7 { + opacity: 0.7; } + +.opacity-8 { + opacity: 0.8; } + +.opacity-9 { + opacity: 0.9; } + +.opacity-10 { + opacity: 1; } + +/* #ifndef APP-PLUS-NVUE */ +.shadow { + box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.08); } + +.shadow-0 { + box-shadow: 0 0rpx 10rpx rgba(0, 0, 0, 0.08); } + +.shadow-1 { + box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.08); } + +.shadow-2 { + box-shadow: 0 4rpx 14rpx rgba(0, 0, 0, 0.08); } + +.shadow-3 { + box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.08); } + +.shadow-4 { + box-shadow: 0 8rpx 18rpx rgba(0, 0, 0, 0.08); } + +.shadow-5 { + box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, 0.08); } + +.shadow-6 { + box-shadow: 0 12rpx 22rpx rgba(0, 0, 0, 0.08); } + +.shadow-7 { + box-shadow: 0 14rpx 24rpx rgba(0, 0, 0, 0.08); } + +.shadow-8 { + box-shadow: 0 16rpx 26rpx rgba(0, 0, 0, 0.08); } + +.shadow-9 { + box-shadow: 0 18rpx 28rpx rgba(0, 0, 0, 0.08); } + +.shadow-10 { + box-shadow: 0 20rpx 30rpx rgba(0, 0, 0, 0.08); } + +.shadow-11 { + box-shadow: 0 22rpx 32rpx rgba(0, 0, 0, 0.08); } + +.shadow-12 { + box-shadow: 0 24rpx 34rpx rgba(0, 0, 0, 0.08); } + +.shadow-13 { + box-shadow: 0 26rpx 36rpx rgba(0, 0, 0, 0.08); } + +.shadow-14 { + box-shadow: 0 28rpx 38rpx rgba(0, 0, 0, 0.08); } + +.shadow-15 { + box-shadow: 0 30rpx 40rpx rgba(0, 0, 0, 0.08); } + +.shadow-16 { + box-shadow: 0 32rpx 42rpx rgba(0, 0, 0, 0.08); } + +.shadow-17 { + box-shadow: 0 34rpx 44rpx rgba(0, 0, 0, 0.08); } + +.shadow-18 { + box-shadow: 0 36rpx 46rpx rgba(0, 0, 0, 0.08); } + +.shadow-19 { + box-shadow: 0 38rpx 48rpx rgba(0, 0, 0, 0.08); } + +.shadow-20 { + box-shadow: 0 40rpx 50rpx rgba(0, 0, 0, 0.08); } + +.shadow-21 { + box-shadow: 0 42rpx 52rpx rgba(0, 0, 0, 0.08); } + +.shadow-22 { + box-shadow: 0 44rpx 54rpx rgba(0, 0, 0, 0.08); } + +.shadow-23 { + box-shadow: 0 46rpx 56rpx rgba(0, 0, 0, 0.08); } + +.shadow-24 { + box-shadow: 0 48rpx 58rpx rgba(0, 0, 0, 0.08); } + +.shadow-25 { + box-shadow: 0 50rpx 60rpx rgba(0, 0, 0, 0.08); } + +/* #endif */ +.border-0 { + border: solid 0rpx #f5f5f5 !important; } + +.border-0-bk { + border: solid 0rpx #282828 !important; } + +.border { + border: solid 2rpx #f5f5f5 !important; } + +.border-bk { + border: solid 2rpx #282828 !important; } + +.border-1 { + border: solid 2px #f5f5f5 !important; } + +.border-1-bk { + border: solid 2px #f5f5f5 !important; } + +.border-2 { + border: solid 4px #f5f5f5 !important; } + +.border-2-bk { + border: solid 4px #f5f5f5 !important; } + +.border-3 { + border: solid 6px #f5f5f5 !important; } + +.border-3-bk { + border: solid 6px #f5f5f5 !important; } + +.border-4 { + border: solid 8px #f5f5f5 !important; } + +.border-4-bk { + border: solid 8px #f5f5f5 !important; } + +.border-5 { + border: solid 10px #f5f5f5 !important; } + +.border-5-bk { + border: solid 10px #f5f5f5 !important; } + +.border-l-1 { + border-left: solid 2rpx whitesmoke !important; } + +.border-l-1-bk { + border-left: solid 2rpx #282828 !important; } + +.border-l-2 { + border-left: solid 4rpx whitesmoke !important; } + +.border-l-2-bk { + border-left: solid 4rpx #282828 !important; } + +.border-l-3 { + border-left: solid 6rpx whitesmoke !important; } + +.border-l-3-bk { + border-left: solid 6rpx #282828 !important; } + +.border-l-4 { + border-left: solid 8rpx whitesmoke !important; } + +.border-l-4-bk { + border-left: solid 8rpx #282828 !important; } + +.border-l-5 { + border-left: solid 10rpx whitesmoke !important; } + +.border-l-5-bk { + border-left: solid 10rpx #282828 !important; } + +.border-r-1 { + border-right: solid 2rpx whitesmoke !important; } + +.border-r-1-bk { + border-right: solid 2rpx #282828 !important; } + +.border-r-2 { + border-right: solid 4rpx whitesmoke !important; } + +.border-r-2-bk { + border-right: solid 4rpx #282828 !important; } + +.border-r-3 { + border-right: solid 6rpx whitesmoke !important; } + +.border-r-3-bk { + border-right: solid 6rpx #282828 !important; } + +.border-r-4 { + border-right: solid 8rpx whitesmoke !important; } + +.border-r-4-bk { + border-right: solid 8rpx #282828 !important; } + +.border-r-5 { + border-right: solid 10rpx whitesmoke !important; } + +.border-r-5-bk { + border-right: solid 10rpx #282828 !important; } + +.border-t-1 { + border-top: solid 2rpx whitesmoke !important; } + +.border-t-1-bk { + border-top: solid 2rpx #282828 !important; } + +.border-t-2 { + border-top: solid 4rpx whitesmoke !important; } + +.border-t-2-bk { + border-top: solid 4rpx #282828 !important; } + +.border-t-3 { + border-top: solid 6rpx whitesmoke !important; } + +.border-t-3-bk { + border-top: solid 6rpx #282828 !important; } + +.border-t-4 { + border-top: solid 8rpx whitesmoke !important; } + +.border-t-4-bk { + border-top: solid 8rpx #282828 !important; } + +.border-t-5 { + border-top: solid 10rpx whitesmoke !important; } + +.border-t-5-bk { + border-top: solid 10rpx #282828 !important; } + +.border-b-1 { + border-bottom: solid 2rpx whitesmoke !important; } + +.border-b-1-bk { + border-bottom: solid 2rpx #282828 !important; } + +.border-b-2 { + border-bottom: solid 4rpx whitesmoke !important; } + +.border-b-2-bk { + border-bottom: solid 4rpx #282828 !important; } + +.border-b-3 { + border-bottom: solid 6rpx whitesmoke !important; } + +.border-b-3-bk { + border-bottom: solid 6rpx #282828 !important; } + +.border-b-4 { + border-bottom: solid 8rpx whitesmoke !important; } + +.border-b-4-bk { + border-bottom: solid 8rpx #282828 !important; } + +.border-b-5 { + border-bottom: solid 10rpx whitesmoke !important; } + +.border-b-5-bk { + border-bottom: solid 10rpx #282828 !important; } + +.border-a-1 { + border: solid 2rpx whitesmoke !important; } + +.border-a-1-bk { + border: solid 2rpx #282828 !important; } + +.border-a-2 { + border: solid 4rpx whitesmoke !important; } + +.border-a-2-bk { + border: solid 4rpx #282828 !important; } + +.border-a-3 { + border: solid 6rpx whitesmoke !important; } + +.border-a-3-bk { + border: solid 6rpx #282828 !important; } + +.border-a-4 { + border: solid 8rpx whitesmoke !important; } + +.border-a-4-bk { + border: solid 8rpx #282828 !important; } + +.border-a-5 { + border: solid 10rpx whitesmoke !important; } + +.border-a-5-bk { + border: solid 10rpx #282828 !important; } + +.pa-0 { + padding: 0rpx; } + +.pa-1 { + padding: 1rpx; } + +.pa-2 { + padding: 2rpx; } + +.pa-3 { + padding: 3rpx; } + +.pa-4 { + padding: 4rpx; } + +.pa-5 { + padding: 5rpx; } + +.pa-6 { + padding: 6rpx; } + +.pa-7 { + padding: 7rpx; } + +.pa-8 { + padding: 8rpx; } + +.pa-9 { + padding: 9rpx; } + +.pa-10 { + padding: 10rpx; } + +.pa-11 { + padding: 11rpx; } + +.pa-12 { + padding: 12rpx; } + +.pa-13 { + padding: 13rpx; } + +.pa-14 { + padding: 14rpx; } + +.pa-15 { + padding: 15rpx; } + +.pa-16 { + padding: 16rpx; } + +.pa-17 { + padding: 17rpx; } + +.pa-18 { + padding: 18rpx; } + +.pa-19 { + padding: 19rpx; } + +.pa-20 { + padding: 20rpx; } + +.pa-21 { + padding: 21rpx; } + +.pa-22 { + padding: 22rpx; } + +.pa-23 { + padding: 23rpx; } + +.pa-24 { + padding: 24rpx; } + +.pa-25 { + padding: 25rpx; } + +.pa-26 { + padding: 26rpx; } + +.pa-27 { + padding: 27rpx; } + +.pa-28 { + padding: 28rpx; } + +.pa-29 { + padding: 29rpx; } + +.pa-30 { + padding: 30rpx; } + +.pa-31 { + padding: 31rpx; } + +.pa-32 { + padding: 32rpx; } + +.pa-33 { + padding: 33rpx; } + +.pa-34 { + padding: 34rpx; } + +.pa-35 { + padding: 35rpx; } + +.pa-36 { + padding: 36rpx; } + +.pa-37 { + padding: 37rpx; } + +.pa-38 { + padding: 38rpx; } + +.pa-39 { + padding: 39rpx; } + +.pa-40 { + padding: 40rpx; } + +.pa-41 { + padding: 41rpx; } + +.pa-42 { + padding: 42rpx; } + +.pa-43 { + padding: 43rpx; } + +.pa-44 { + padding: 44rpx; } + +.pa-45 { + padding: 45rpx; } + +.pa-46 { + padding: 46rpx; } + +.pa-47 { + padding: 47rpx; } + +.pa-48 { + padding: 48rpx; } + +.pa-49 { + padding: 49rpx; } + +.pa-50 { + padding: 50rpx; } + +.pa-n1 { + padding: 4rpx; } + +.pa-n2 { + padding: 8rpx; } + +.pa-n3 { + padding: 12rpx; } + +.pa-n4 { + padding: 16rpx; } + +.pa-n5 { + padding: 20rpx; } + +.pa-n6 { + padding: 24rpx; } + +.pa-n7 { + padding: 28rpx; } + +.pa-n8 { + padding: 32rpx; } + +.pa-n9 { + padding: 36rpx; } + +.pa-n10 { + padding: 40rpx; } + +.pa-n11 { + padding: 44rpx; } + +.pa-n12 { + padding: 48rpx; } + +.pa-n13 { + padding: 52rpx; } + +.pa-n14 { + padding: 56rpx; } + +.pa-n15 { + padding: 60rpx; } + +.pa-n16 { + padding: 64rpx; } + +.pa-n17 { + padding: 68rpx; } + +.pa-n18 { + padding: 72rpx; } + +.pa-n19 { + padding: 76rpx; } + +.pa-n20 { + padding: 80rpx; } + +.pa-n21 { + padding: 84rpx; } + +.pa-n22 { + padding: 88rpx; } + +.pa-n23 { + padding: 92rpx; } + +.pa-n24 { + padding: 96rpx; } + +.pa-n25 { + padding: 100rpx; } + +.pt-0 { + padding-top: 0rpx; } + +.pt-1 { + padding-top: 1rpx; } + +.pt-2 { + padding-top: 2rpx; } + +.pt-3 { + padding-top: 3rpx; } + +.pt-4 { + padding-top: 4rpx; } + +.pt-5 { + padding-top: 5rpx; } + +.pt-6 { + padding-top: 6rpx; } + +.pt-7 { + padding-top: 7rpx; } + +.pt-8 { + padding-top: 8rpx; } + +.pt-9 { + padding-top: 9rpx; } + +.pt-10 { + padding-top: 10rpx; } + +.pt-11 { + padding-top: 11rpx; } + +.pt-12 { + padding-top: 12rpx; } + +.pt-13 { + padding-top: 13rpx; } + +.pt-14 { + padding-top: 14rpx; } + +.pt-15 { + padding-top: 15rpx; } + +.pt-16 { + padding-top: 16rpx; } + +.pt-17 { + padding-top: 17rpx; } + +.pt-18 { + padding-top: 18rpx; } + +.pt-19 { + padding-top: 19rpx; } + +.pt-20 { + padding-top: 20rpx; } + +.pt-21 { + padding-top: 21rpx; } + +.pt-22 { + padding-top: 22rpx; } + +.pt-23 { + padding-top: 23rpx; } + +.pt-24 { + padding-top: 24rpx; } + +.pt-25 { + padding-top: 25rpx; } + +.pt-26 { + padding-top: 26rpx; } + +.pt-27 { + padding-top: 27rpx; } + +.pt-28 { + padding-top: 28rpx; } + +.pt-29 { + padding-top: 29rpx; } + +.pt-30 { + padding-top: 30rpx; } + +.pt-31 { + padding-top: 31rpx; } + +.pt-32 { + padding-top: 32rpx; } + +.pt-33 { + padding-top: 33rpx; } + +.pt-34 { + padding-top: 34rpx; } + +.pt-35 { + padding-top: 35rpx; } + +.pt-36 { + padding-top: 36rpx; } + +.pt-37 { + padding-top: 37rpx; } + +.pt-38 { + padding-top: 38rpx; } + +.pt-39 { + padding-top: 39rpx; } + +.pt-40 { + padding-top: 40rpx; } + +.pt-41 { + padding-top: 41rpx; } + +.pt-42 { + padding-top: 42rpx; } + +.pt-43 { + padding-top: 43rpx; } + +.pt-44 { + padding-top: 44rpx; } + +.pt-45 { + padding-top: 45rpx; } + +.pt-46 { + padding-top: 46rpx; } + +.pt-47 { + padding-top: 47rpx; } + +.pt-48 { + padding-top: 48rpx; } + +.pt-49 { + padding-top: 49rpx; } + +.pt-50 { + padding-top: 50rpx; } + +.pt-n1 { + padding-top: 4rpx; } + +.pt-n2 { + padding-top: 8rpx; } + +.pt-n3 { + padding-top: 12rpx; } + +.pt-n4 { + padding-top: 16rpx; } + +.pt-n5 { + padding-top: 20rpx; } + +.pt-n6 { + padding-top: 24rpx; } + +.pt-n7 { + padding-top: 28rpx; } + +.pt-n8 { + padding-top: 32rpx; } + +.pt-n9 { + padding-top: 36rpx; } + +.pt-n10 { + padding-top: 40rpx; } + +.pt-n11 { + padding-top: 44rpx; } + +.pt-n12 { + padding-top: 48rpx; } + +.pt-n13 { + padding-top: 52rpx; } + +.pt-n14 { + padding-top: 56rpx; } + +.pt-n15 { + padding-top: 60rpx; } + +.pt-n16 { + padding-top: 64rpx; } + +.pt-n17 { + padding-top: 68rpx; } + +.pt-n18 { + padding-top: 72rpx; } + +.pt-n19 { + padding-top: 76rpx; } + +.pt-n20 { + padding-top: 80rpx; } + +.pt-n21 { + padding-top: 84rpx; } + +.pt-n22 { + padding-top: 88rpx; } + +.pt-n23 { + padding-top: 92rpx; } + +.pt-n24 { + padding-top: 96rpx; } + +.pt-n25 { + padding-top: 100rpx; } + +.pr-0 { + padding-right: 0rpx; } + +.pr-1 { + padding-right: 1rpx; } + +.pr-2 { + padding-right: 2rpx; } + +.pr-3 { + padding-right: 3rpx; } + +.pr-4 { + padding-right: 4rpx; } + +.pr-5 { + padding-right: 5rpx; } + +.pr-6 { + padding-right: 6rpx; } + +.pr-7 { + padding-right: 7rpx; } + +.pr-8 { + padding-right: 8rpx; } + +.pr-9 { + padding-right: 9rpx; } + +.pr-10 { + padding-right: 10rpx; } + +.pr-11 { + padding-right: 11rpx; } + +.pr-12 { + padding-right: 12rpx; } + +.pr-13 { + padding-right: 13rpx; } + +.pr-14 { + padding-right: 14rpx; } + +.pr-15 { + padding-right: 15rpx; } + +.pr-16 { + padding-right: 16rpx; } + +.pr-17 { + padding-right: 17rpx; } + +.pr-18 { + padding-right: 18rpx; } + +.pr-19 { + padding-right: 19rpx; } + +.pr-20 { + padding-right: 20rpx; } + +.pr-21 { + padding-right: 21rpx; } + +.pr-22 { + padding-right: 22rpx; } + +.pr-23 { + padding-right: 23rpx; } + +.pr-24 { + padding-right: 24rpx; } + +.pr-25 { + padding-right: 25rpx; } + +.pr-26 { + padding-right: 26rpx; } + +.pr-27 { + padding-right: 27rpx; } + +.pr-28 { + padding-right: 28rpx; } + +.pr-29 { + padding-right: 29rpx; } + +.pr-30 { + padding-right: 30rpx; } + +.pr-31 { + padding-right: 31rpx; } + +.pr-32 { + padding-right: 32rpx; } + +.pr-33 { + padding-right: 33rpx; } + +.pr-34 { + padding-right: 34rpx; } + +.pr-35 { + padding-right: 35rpx; } + +.pr-36 { + padding-right: 36rpx; } + +.pr-37 { + padding-right: 37rpx; } + +.pr-38 { + padding-right: 38rpx; } + +.pr-39 { + padding-right: 39rpx; } + +.pr-40 { + padding-right: 40rpx; } + +.pr-41 { + padding-right: 41rpx; } + +.pr-42 { + padding-right: 42rpx; } + +.pr-43 { + padding-right: 43rpx; } + +.pr-44 { + padding-right: 44rpx; } + +.pr-45 { + padding-right: 45rpx; } + +.pr-46 { + padding-right: 46rpx; } + +.pr-47 { + padding-right: 47rpx; } + +.pr-48 { + padding-right: 48rpx; } + +.pr-49 { + padding-right: 49rpx; } + +.pr-50 { + padding-right: 50rpx; } + +.pr-n1 { + padding-right: 4rpx; } + +.pr-n2 { + padding-right: 8rpx; } + +.pr-n3 { + padding-right: 12rpx; } + +.pr-n4 { + padding-right: 16rpx; } + +.pr-n5 { + padding-right: 20rpx; } + +.pr-n6 { + padding-right: 24rpx; } + +.pr-n7 { + padding-right: 28rpx; } + +.pr-n8 { + padding-right: 32rpx; } + +.pr-n9 { + padding-right: 36rpx; } + +.pr-n10 { + padding-right: 40rpx; } + +.pr-n11 { + padding-right: 44rpx; } + +.pr-n12 { + padding-right: 48rpx; } + +.pr-n13 { + padding-right: 52rpx; } + +.pr-n14 { + padding-right: 56rpx; } + +.pr-n15 { + padding-right: 60rpx; } + +.pr-n16 { + padding-right: 64rpx; } + +.pr-n17 { + padding-right: 68rpx; } + +.pr-n18 { + padding-right: 72rpx; } + +.pr-n19 { + padding-right: 76rpx; } + +.pr-n20 { + padding-right: 80rpx; } + +.pr-n21 { + padding-right: 84rpx; } + +.pr-n22 { + padding-right: 88rpx; } + +.pr-n23 { + padding-right: 92rpx; } + +.pr-n24 { + padding-right: 96rpx; } + +.pr-n25 { + padding-right: 100rpx; } + +.pb-0 { + padding-bottom: 0rpx; } + +.pb-1 { + padding-bottom: 1rpx; } + +.pb-2 { + padding-bottom: 2rpx; } + +.pb-3 { + padding-bottom: 3rpx; } + +.pb-4 { + padding-bottom: 4rpx; } + +.pb-5 { + padding-bottom: 5rpx; } + +.pb-6 { + padding-bottom: 6rpx; } + +.pb-7 { + padding-bottom: 7rpx; } + +.pb-8 { + padding-bottom: 8rpx; } + +.pb-9 { + padding-bottom: 9rpx; } + +.pb-10 { + padding-bottom: 10rpx; } + +.pb-11 { + padding-bottom: 11rpx; } + +.pb-12 { + padding-bottom: 12rpx; } + +.pb-13 { + padding-bottom: 13rpx; } + +.pb-14 { + padding-bottom: 14rpx; } + +.pb-15 { + padding-bottom: 15rpx; } + +.pb-16 { + padding-bottom: 16rpx; } + +.pb-17 { + padding-bottom: 17rpx; } + +.pb-18 { + padding-bottom: 18rpx; } + +.pb-19 { + padding-bottom: 19rpx; } + +.pb-20 { + padding-bottom: 20rpx; } + +.pb-21 { + padding-bottom: 21rpx; } + +.pb-22 { + padding-bottom: 22rpx; } + +.pb-23 { + padding-bottom: 23rpx; } + +.pb-24 { + padding-bottom: 24rpx; } + +.pb-25 { + padding-bottom: 25rpx; } + +.pb-26 { + padding-bottom: 26rpx; } + +.pb-27 { + padding-bottom: 27rpx; } + +.pb-28 { + padding-bottom: 28rpx; } + +.pb-29 { + padding-bottom: 29rpx; } + +.pb-30 { + padding-bottom: 30rpx; } + +.pb-31 { + padding-bottom: 31rpx; } + +.pb-32 { + padding-bottom: 32rpx; } + +.pb-33 { + padding-bottom: 33rpx; } + +.pb-34 { + padding-bottom: 34rpx; } + +.pb-35 { + padding-bottom: 35rpx; } + +.pb-36 { + padding-bottom: 36rpx; } + +.pb-37 { + padding-bottom: 37rpx; } + +.pb-38 { + padding-bottom: 38rpx; } + +.pb-39 { + padding-bottom: 39rpx; } + +.pb-40 { + padding-bottom: 40rpx; } + +.pb-41 { + padding-bottom: 41rpx; } + +.pb-42 { + padding-bottom: 42rpx; } + +.pb-43 { + padding-bottom: 43rpx; } + +.pb-44 { + padding-bottom: 44rpx; } + +.pb-45 { + padding-bottom: 45rpx; } + +.pb-46 { + padding-bottom: 46rpx; } + +.pb-47 { + padding-bottom: 47rpx; } + +.pb-48 { + padding-bottom: 48rpx; } + +.pb-49 { + padding-bottom: 49rpx; } + +.pb-50 { + padding-bottom: 50rpx; } + +.pb-n1 { + padding-bottom: 4rpx; } + +.pb-n2 { + padding-bottom: 8rpx; } + +.pb-n3 { + padding-bottom: 12rpx; } + +.pb-n4 { + padding-bottom: 16rpx; } + +.pb-n5 { + padding-bottom: 20rpx; } + +.pb-n6 { + padding-bottom: 24rpx; } + +.pb-n7 { + padding-bottom: 28rpx; } + +.pb-n8 { + padding-bottom: 32rpx; } + +.pb-n9 { + padding-bottom: 36rpx; } + +.pb-n10 { + padding-bottom: 40rpx; } + +.pb-n11 { + padding-bottom: 44rpx; } + +.pb-n12 { + padding-bottom: 48rpx; } + +.pb-n13 { + padding-bottom: 52rpx; } + +.pb-n14 { + padding-bottom: 56rpx; } + +.pb-n15 { + padding-bottom: 60rpx; } + +.pb-n16 { + padding-bottom: 64rpx; } + +.pb-n17 { + padding-bottom: 68rpx; } + +.pb-n18 { + padding-bottom: 72rpx; } + +.pb-n19 { + padding-bottom: 76rpx; } + +.pb-n20 { + padding-bottom: 80rpx; } + +.pb-n21 { + padding-bottom: 84rpx; } + +.pb-n22 { + padding-bottom: 88rpx; } + +.pb-n23 { + padding-bottom: 92rpx; } + +.pb-n24 { + padding-bottom: 96rpx; } + +.pb-n25 { + padding-bottom: 100rpx; } + +.pl-0 { + padding-left: 0rpx; } + +.pl-1 { + padding-left: 1rpx; } + +.pl-2 { + padding-left: 2rpx; } + +.pl-3 { + padding-left: 3rpx; } + +.pl-4 { + padding-left: 4rpx; } + +.pl-5 { + padding-left: 5rpx; } + +.pl-6 { + padding-left: 6rpx; } + +.pl-7 { + padding-left: 7rpx; } + +.pl-8 { + padding-left: 8rpx; } + +.pl-9 { + padding-left: 9rpx; } + +.pl-10 { + padding-left: 10rpx; } + +.pl-11 { + padding-left: 11rpx; } + +.pl-12 { + padding-left: 12rpx; } + +.pl-13 { + padding-left: 13rpx; } + +.pl-14 { + padding-left: 14rpx; } + +.pl-15 { + padding-left: 15rpx; } + +.pl-16 { + padding-left: 16rpx; } + +.pl-17 { + padding-left: 17rpx; } + +.pl-18 { + padding-left: 18rpx; } + +.pl-19 { + padding-left: 19rpx; } + +.pl-20 { + padding-left: 20rpx; } + +.pl-21 { + padding-left: 21rpx; } + +.pl-22 { + padding-left: 22rpx; } + +.pl-23 { + padding-left: 23rpx; } + +.pl-24 { + padding-left: 24rpx; } + +.pl-25 { + padding-left: 25rpx; } + +.pl-26 { + padding-left: 26rpx; } + +.pl-27 { + padding-left: 27rpx; } + +.pl-28 { + padding-left: 28rpx; } + +.pl-29 { + padding-left: 29rpx; } + +.pl-30 { + padding-left: 30rpx; } + +.pl-31 { + padding-left: 31rpx; } + +.pl-32 { + padding-left: 32rpx; } + +.pl-33 { + padding-left: 33rpx; } + +.pl-34 { + padding-left: 34rpx; } + +.pl-35 { + padding-left: 35rpx; } + +.pl-36 { + padding-left: 36rpx; } + +.pl-37 { + padding-left: 37rpx; } + +.pl-38 { + padding-left: 38rpx; } + +.pl-39 { + padding-left: 39rpx; } + +.pl-40 { + padding-left: 40rpx; } + +.pl-41 { + padding-left: 41rpx; } + +.pl-42 { + padding-left: 42rpx; } + +.pl-43 { + padding-left: 43rpx; } + +.pl-44 { + padding-left: 44rpx; } + +.pl-45 { + padding-left: 45rpx; } + +.pl-46 { + padding-left: 46rpx; } + +.pl-47 { + padding-left: 47rpx; } + +.pl-48 { + padding-left: 48rpx; } + +.pl-49 { + padding-left: 49rpx; } + +.pl-50 { + padding-left: 50rpx; } + +.pl-n1 { + padding-left: 4rpx; } + +.pl-n2 { + padding-left: 8rpx; } + +.pl-n3 { + padding-left: 12rpx; } + +.pl-n4 { + padding-left: 16rpx; } + +.pl-n5 { + padding-left: 20rpx; } + +.pl-n6 { + padding-left: 24rpx; } + +.pl-n7 { + padding-left: 28rpx; } + +.pl-n8 { + padding-left: 32rpx; } + +.pl-n9 { + padding-left: 36rpx; } + +.pl-n10 { + padding-left: 40rpx; } + +.pl-n11 { + padding-left: 44rpx; } + +.pl-n12 { + padding-left: 48rpx; } + +.pl-n13 { + padding-left: 52rpx; } + +.pl-n14 { + padding-left: 56rpx; } + +.pl-n15 { + padding-left: 60rpx; } + +.pl-n16 { + padding-left: 64rpx; } + +.pl-n17 { + padding-left: 68rpx; } + +.pl-n18 { + padding-left: 72rpx; } + +.pl-n19 { + padding-left: 76rpx; } + +.pl-n20 { + padding-left: 80rpx; } + +.pl-n21 { + padding-left: 84rpx; } + +.pl-n22 { + padding-left: 88rpx; } + +.pl-n23 { + padding-left: 92rpx; } + +.pl-n24 { + padding-left: 96rpx; } + +.pl-n25 { + padding-left: 100rpx; } + +.px-0 { + padding-left: 0rpx; + padding-right: 0rpx; } + +.px-1 { + padding-left: 1rpx; + padding-right: 1rpx; } + +.px-2 { + padding-left: 2rpx; + padding-right: 2rpx; } + +.px-3 { + padding-left: 3rpx; + padding-right: 3rpx; } + +.px-4 { + padding-left: 4rpx; + padding-right: 4rpx; } + +.px-5 { + padding-left: 5rpx; + padding-right: 5rpx; } + +.px-6 { + padding-left: 6rpx; + padding-right: 6rpx; } + +.px-7 { + padding-left: 7rpx; + padding-right: 7rpx; } + +.px-8 { + padding-left: 8rpx; + padding-right: 8rpx; } + +.px-9 { + padding-left: 9rpx; + padding-right: 9rpx; } + +.px-10 { + padding-left: 10rpx; + padding-right: 10rpx; } + +.px-11 { + padding-left: 11rpx; + padding-right: 11rpx; } + +.px-12 { + padding-left: 12rpx; + padding-right: 12rpx; } + +.px-13 { + padding-left: 13rpx; + padding-right: 13rpx; } + +.px-14 { + padding-left: 14rpx; + padding-right: 14rpx; } + +.px-15 { + padding-left: 15rpx; + padding-right: 15rpx; } + +.px-16 { + padding-left: 16rpx; + padding-right: 16rpx; } + +.px-17 { + padding-left: 17rpx; + padding-right: 17rpx; } + +.px-18 { + padding-left: 18rpx; + padding-right: 18rpx; } + +.px-19 { + padding-left: 19rpx; + padding-right: 19rpx; } + +.px-20 { + padding-left: 20rpx; + padding-right: 20rpx; } + +.px-21 { + padding-left: 21rpx; + padding-right: 21rpx; } + +.px-22 { + padding-left: 22rpx; + padding-right: 22rpx; } + +.px-23 { + padding-left: 23rpx; + padding-right: 23rpx; } + +.px-24 { + padding-left: 24rpx; + padding-right: 24rpx; } + +.px-25 { + padding-left: 25rpx; + padding-right: 25rpx; } + +.px-26 { + padding-left: 26rpx; + padding-right: 26rpx; } + +.px-27 { + padding-left: 27rpx; + padding-right: 27rpx; } + +.px-28 { + padding-left: 28rpx; + padding-right: 28rpx; } + +.px-29 { + padding-left: 29rpx; + padding-right: 29rpx; } + +.px-30 { + padding-left: 30rpx; + padding-right: 30rpx; } + +.px-31 { + padding-left: 31rpx; + padding-right: 31rpx; } + +.px-32 { + padding-left: 32rpx; + padding-right: 32rpx; } + +.px-33 { + padding-left: 33rpx; + padding-right: 33rpx; } + +.px-34 { + padding-left: 34rpx; + padding-right: 34rpx; } + +.px-35 { + padding-left: 35rpx; + padding-right: 35rpx; } + +.px-36 { + padding-left: 36rpx; + padding-right: 36rpx; } + +.px-37 { + padding-left: 37rpx; + padding-right: 37rpx; } + +.px-38 { + padding-left: 38rpx; + padding-right: 38rpx; } + +.px-39 { + padding-left: 39rpx; + padding-right: 39rpx; } + +.px-40 { + padding-left: 40rpx; + padding-right: 40rpx; } + +.px-41 { + padding-left: 41rpx; + padding-right: 41rpx; } + +.px-42 { + padding-left: 42rpx; + padding-right: 42rpx; } + +.px-43 { + padding-left: 43rpx; + padding-right: 43rpx; } + +.px-44 { + padding-left: 44rpx; + padding-right: 44rpx; } + +.px-45 { + padding-left: 45rpx; + padding-right: 45rpx; } + +.px-46 { + padding-left: 46rpx; + padding-right: 46rpx; } + +.px-47 { + padding-left: 47rpx; + padding-right: 47rpx; } + +.px-48 { + padding-left: 48rpx; + padding-right: 48rpx; } + +.px-49 { + padding-left: 49rpx; + padding-right: 49rpx; } + +.px-50 { + padding-left: 50rpx; + padding-right: 50rpx; } + +.px-n1 { + padding-left: 4rpx; + padding-right: 4rpx; } + +.px-n2 { + padding-left: 8rpx; + padding-right: 8rpx; } + +.px-n3 { + padding-left: 12rpx; + padding-right: 12rpx; } + +.px-n4 { + padding-left: 16rpx; + padding-right: 16rpx; } + +.px-n5 { + padding-left: 20rpx; + padding-right: 20rpx; } + +.px-n6 { + padding-left: 24rpx; + padding-right: 24rpx; } + +.px-n7 { + padding-left: 28rpx; + padding-right: 28rpx; } + +.px-n8 { + padding-left: 32rpx; + padding-right: 32rpx; } + +.px-n9 { + padding-left: 36rpx; + padding-right: 36rpx; } + +.px-n10 { + padding-left: 40rpx; + padding-right: 40rpx; } + +.px-n11 { + padding-left: 44rpx; + padding-right: 44rpx; } + +.px-n12 { + padding-left: 48rpx; + padding-right: 48rpx; } + +.px-n13 { + padding-left: 52rpx; + padding-right: 52rpx; } + +.px-n14 { + padding-left: 56rpx; + padding-right: 56rpx; } + +.px-n15 { + padding-left: 60rpx; + padding-right: 60rpx; } + +.px-n16 { + padding-left: 64rpx; + padding-right: 64rpx; } + +.px-n17 { + padding-left: 68rpx; + padding-right: 68rpx; } + +.px-n18 { + padding-left: 72rpx; + padding-right: 72rpx; } + +.px-n19 { + padding-left: 76rpx; + padding-right: 76rpx; } + +.px-n20 { + padding-left: 80rpx; + padding-right: 80rpx; } + +.px-n21 { + padding-left: 84rpx; + padding-right: 84rpx; } + +.px-n22 { + padding-left: 88rpx; + padding-right: 88rpx; } + +.px-n23 { + padding-left: 92rpx; + padding-right: 92rpx; } + +.px-n24 { + padding-left: 96rpx; + padding-right: 96rpx; } + +.px-n25 { + padding-left: 100rpx; + padding-right: 100rpx; } + +.py-0 { + padding-top: 0rpx; + padding-bottom: 0rpx; } + +.py-1 { + padding-top: 1rpx; + padding-bottom: 1rpx; } + +.py-2 { + padding-top: 2rpx; + padding-bottom: 2rpx; } + +.py-3 { + padding-top: 3rpx; + padding-bottom: 3rpx; } + +.py-4 { + padding-top: 4rpx; + padding-bottom: 4rpx; } + +.py-5 { + padding-top: 5rpx; + padding-bottom: 5rpx; } + +.py-6 { + padding-top: 6rpx; + padding-bottom: 6rpx; } + +.py-7 { + padding-top: 7rpx; + padding-bottom: 7rpx; } + +.py-8 { + padding-top: 8rpx; + padding-bottom: 8rpx; } + +.py-9 { + padding-top: 9rpx; + padding-bottom: 9rpx; } + +.py-10 { + padding-top: 10rpx; + padding-bottom: 10rpx; } + +.py-11 { + padding-top: 11rpx; + padding-bottom: 11rpx; } + +.py-12 { + padding-top: 12rpx; + padding-bottom: 12rpx; } + +.py-13 { + padding-top: 13rpx; + padding-bottom: 13rpx; } + +.py-14 { + padding-top: 14rpx; + padding-bottom: 14rpx; } + +.py-15 { + padding-top: 15rpx; + padding-bottom: 15rpx; } + +.py-16 { + padding-top: 16rpx; + padding-bottom: 16rpx; } + +.py-17 { + padding-top: 17rpx; + padding-bottom: 17rpx; } + +.py-18 { + padding-top: 18rpx; + padding-bottom: 18rpx; } + +.py-19 { + padding-top: 19rpx; + padding-bottom: 19rpx; } + +.py-20 { + padding-top: 20rpx; + padding-bottom: 20rpx; } + +.py-21 { + padding-top: 21rpx; + padding-bottom: 21rpx; } + +.py-22 { + padding-top: 22rpx; + padding-bottom: 22rpx; } + +.py-23 { + padding-top: 23rpx; + padding-bottom: 23rpx; } + +.py-24 { + padding-top: 24rpx; + padding-bottom: 24rpx; } + +.py-25 { + padding-top: 25rpx; + padding-bottom: 25rpx; } + +.py-26 { + padding-top: 26rpx; + padding-bottom: 26rpx; } + +.py-27 { + padding-top: 27rpx; + padding-bottom: 27rpx; } + +.py-28 { + padding-top: 28rpx; + padding-bottom: 28rpx; } + +.py-29 { + padding-top: 29rpx; + padding-bottom: 29rpx; } + +.py-30 { + padding-top: 30rpx; + padding-bottom: 30rpx; } + +.py-31 { + padding-top: 31rpx; + padding-bottom: 31rpx; } + +.py-32 { + padding-top: 32rpx; + padding-bottom: 32rpx; } + +.py-33 { + padding-top: 33rpx; + padding-bottom: 33rpx; } + +.py-34 { + padding-top: 34rpx; + padding-bottom: 34rpx; } + +.py-35 { + padding-top: 35rpx; + padding-bottom: 35rpx; } + +.py-36 { + padding-top: 36rpx; + padding-bottom: 36rpx; } + +.py-37 { + padding-top: 37rpx; + padding-bottom: 37rpx; } + +.py-38 { + padding-top: 38rpx; + padding-bottom: 38rpx; } + +.py-39 { + padding-top: 39rpx; + padding-bottom: 39rpx; } + +.py-40 { + padding-top: 40rpx; + padding-bottom: 40rpx; } + +.py-41 { + padding-top: 41rpx; + padding-bottom: 41rpx; } + +.py-42 { + padding-top: 42rpx; + padding-bottom: 42rpx; } + +.py-43 { + padding-top: 43rpx; + padding-bottom: 43rpx; } + +.py-44 { + padding-top: 44rpx; + padding-bottom: 44rpx; } + +.py-45 { + padding-top: 45rpx; + padding-bottom: 45rpx; } + +.py-46 { + padding-top: 46rpx; + padding-bottom: 46rpx; } + +.py-47 { + padding-top: 47rpx; + padding-bottom: 47rpx; } + +.py-48 { + padding-top: 48rpx; + padding-bottom: 48rpx; } + +.py-49 { + padding-top: 49rpx; + padding-bottom: 49rpx; } + +.py-50 { + padding-top: 50rpx; + padding-bottom: 50rpx; } + +.py-n1 { + padding-top: 4rpx; + padding-bottom: 4rpx; } + +.py-n2 { + padding-top: 8rpx; + padding-bottom: 8rpx; } + +.py-n3 { + padding-top: 12rpx; + padding-bottom: 12rpx; } + +.py-n4 { + padding-top: 16rpx; + padding-bottom: 16rpx; } + +.py-n5 { + padding-top: 20rpx; + padding-bottom: 20rpx; } + +.py-n6 { + padding-top: 24rpx; + padding-bottom: 24rpx; } + +.py-n7 { + padding-top: 28rpx; + padding-bottom: 28rpx; } + +.py-n8 { + padding-top: 32rpx; + padding-bottom: 32rpx; } + +.py-n9 { + padding-top: 36rpx; + padding-bottom: 36rpx; } + +.py-n10 { + padding-top: 40rpx; + padding-bottom: 40rpx; } + +.py-n11 { + padding-top: 44rpx; + padding-bottom: 44rpx; } + +.py-n12 { + padding-top: 48rpx; + padding-bottom: 48rpx; } + +.py-n13 { + padding-top: 52rpx; + padding-bottom: 52rpx; } + +.py-n14 { + padding-top: 56rpx; + padding-bottom: 56rpx; } + +.py-n15 { + padding-top: 60rpx; + padding-bottom: 60rpx; } + +.py-n16 { + padding-top: 64rpx; + padding-bottom: 64rpx; } + +.py-n17 { + padding-top: 68rpx; + padding-bottom: 68rpx; } + +.py-n18 { + padding-top: 72rpx; + padding-bottom: 72rpx; } + +.py-n19 { + padding-top: 76rpx; + padding-bottom: 76rpx; } + +.py-n20 { + padding-top: 80rpx; + padding-bottom: 80rpx; } + +.py-n21 { + padding-top: 84rpx; + padding-bottom: 84rpx; } + +.py-n22 { + padding-top: 88rpx; + padding-bottom: 88rpx; } + +.py-n23 { + padding-top: 92rpx; + padding-bottom: 92rpx; } + +.py-n24 { + padding-top: 96rpx; + padding-bottom: 96rpx; } + +.py-n25 { + padding-top: 100rpx; + padding-bottom: 100rpx; } + +.ma-0 { + margin: 0rpx; } + +.ma-1 { + margin: 1rpx; } + +.ma-2 { + margin: 2rpx; } + +.ma-3 { + margin: 3rpx; } + +.ma-4 { + margin: 4rpx; } + +.ma-5 { + margin: 5rpx; } + +.ma-6 { + margin: 6rpx; } + +.ma-7 { + margin: 7rpx; } + +.ma-8 { + margin: 8rpx; } + +.ma-9 { + margin: 9rpx; } + +.ma-10 { + margin: 10rpx; } + +.ma-11 { + margin: 11rpx; } + +.ma-12 { + margin: 12rpx; } + +.ma-13 { + margin: 13rpx; } + +.ma-14 { + margin: 14rpx; } + +.ma-15 { + margin: 15rpx; } + +.ma-16 { + margin: 16rpx; } + +.ma-17 { + margin: 17rpx; } + +.ma-18 { + margin: 18rpx; } + +.ma-19 { + margin: 19rpx; } + +.ma-20 { + margin: 20rpx; } + +.ma-21 { + margin: 21rpx; } + +.ma-22 { + margin: 22rpx; } + +.ma-23 { + margin: 23rpx; } + +.ma-24 { + margin: 24rpx; } + +.ma-25 { + margin: 25rpx; } + +.ma-26 { + margin: 26rpx; } + +.ma-27 { + margin: 27rpx; } + +.ma-28 { + margin: 28rpx; } + +.ma-29 { + margin: 29rpx; } + +.ma-30 { + margin: 30rpx; } + +.ma-31 { + margin: 31rpx; } + +.ma-32 { + margin: 32rpx; } + +.ma-33 { + margin: 33rpx; } + +.ma-34 { + margin: 34rpx; } + +.ma-35 { + margin: 35rpx; } + +.ma-36 { + margin: 36rpx; } + +.ma-37 { + margin: 37rpx; } + +.ma-38 { + margin: 38rpx; } + +.ma-39 { + margin: 39rpx; } + +.ma-40 { + margin: 40rpx; } + +.ma-41 { + margin: 41rpx; } + +.ma-42 { + margin: 42rpx; } + +.ma-43 { + margin: 43rpx; } + +.ma-44 { + margin: 44rpx; } + +.ma-45 { + margin: 45rpx; } + +.ma-46 { + margin: 46rpx; } + +.ma-47 { + margin: 47rpx; } + +.ma-48 { + margin: 48rpx; } + +.ma-49 { + margin: 49rpx; } + +.ma-50 { + margin: 50rpx; } + +.ma-n1 { + margin: 4rpx; } + +.ma-n2 { + margin: 8rpx; } + +.ma-n3 { + margin: 12rpx; } + +.ma-n4 { + margin: 16rpx; } + +.ma-n5 { + margin: 20rpx; } + +.ma-n6 { + margin: 24rpx; } + +.ma-n7 { + margin: 28rpx; } + +.ma-n8 { + margin: 32rpx; } + +.ma-n9 { + margin: 36rpx; } + +.ma-n10 { + margin: 40rpx; } + +.ma-n11 { + margin: 44rpx; } + +.ma-n12 { + margin: 48rpx; } + +.ma-n13 { + margin: 52rpx; } + +.ma-n14 { + margin: 56rpx; } + +.ma-n15 { + margin: 60rpx; } + +.ma-n16 { + margin: 64rpx; } + +.ma-n17 { + margin: 68rpx; } + +.ma-n18 { + margin: 72rpx; } + +.ma-n19 { + margin: 76rpx; } + +.ma-n20 { + margin: 80rpx; } + +.ma-n21 { + margin: 84rpx; } + +.ma-n22 { + margin: 88rpx; } + +.ma-n23 { + margin: 92rpx; } + +.ma-n24 { + margin: 96rpx; } + +.ma-n25 { + margin: 100rpx; } + +.mt-0 { + margin-top: 0rpx; } + +.mt--0 { + margin-top: -0rpx; } + +.mt-1 { + margin-top: 1rpx; } + +.mt--1 { + margin-top: -1rpx; } + +.mt-2 { + margin-top: 2rpx; } + +.mt--2 { + margin-top: -2rpx; } + +.mt-3 { + margin-top: 3rpx; } + +.mt--3 { + margin-top: -3rpx; } + +.mt-4 { + margin-top: 4rpx; } + +.mt--4 { + margin-top: -4rpx; } + +.mt-5 { + margin-top: 5rpx; } + +.mt--5 { + margin-top: -5rpx; } + +.mt-6 { + margin-top: 6rpx; } + +.mt--6 { + margin-top: -6rpx; } + +.mt-7 { + margin-top: 7rpx; } + +.mt--7 { + margin-top: -7rpx; } + +.mt-8 { + margin-top: 8rpx; } + +.mt--8 { + margin-top: -8rpx; } + +.mt-9 { + margin-top: 9rpx; } + +.mt--9 { + margin-top: -9rpx; } + +.mt-10 { + margin-top: 10rpx; } + +.mt--10 { + margin-top: -10rpx; } + +.mt-11 { + margin-top: 11rpx; } + +.mt--11 { + margin-top: -11rpx; } + +.mt-12 { + margin-top: 12rpx; } + +.mt--12 { + margin-top: -12rpx; } + +.mt-13 { + margin-top: 13rpx; } + +.mt--13 { + margin-top: -13rpx; } + +.mt-14 { + margin-top: 14rpx; } + +.mt--14 { + margin-top: -14rpx; } + +.mt-15 { + margin-top: 15rpx; } + +.mt--15 { + margin-top: -15rpx; } + +.mt-16 { + margin-top: 16rpx; } + +.mt--16 { + margin-top: -16rpx; } + +.mt-17 { + margin-top: 17rpx; } + +.mt--17 { + margin-top: -17rpx; } + +.mt-18 { + margin-top: 18rpx; } + +.mt--18 { + margin-top: -18rpx; } + +.mt-19 { + margin-top: 19rpx; } + +.mt--19 { + margin-top: -19rpx; } + +.mt-20 { + margin-top: 20rpx; } + +.mt--20 { + margin-top: -20rpx; } + +.mt-21 { + margin-top: 21rpx; } + +.mt--21 { + margin-top: -21rpx; } + +.mt-22 { + margin-top: 22rpx; } + +.mt--22 { + margin-top: -22rpx; } + +.mt-23 { + margin-top: 23rpx; } + +.mt--23 { + margin-top: -23rpx; } + +.mt-24 { + margin-top: 24rpx; } + +.mt--24 { + margin-top: -24rpx; } + +.mt-25 { + margin-top: 25rpx; } + +.mt--25 { + margin-top: -25rpx; } + +.mt-26 { + margin-top: 26rpx; } + +.mt--26 { + margin-top: -26rpx; } + +.mt-27 { + margin-top: 27rpx; } + +.mt--27 { + margin-top: -27rpx; } + +.mt-28 { + margin-top: 28rpx; } + +.mt--28 { + margin-top: -28rpx; } + +.mt-29 { + margin-top: 29rpx; } + +.mt--29 { + margin-top: -29rpx; } + +.mt-30 { + margin-top: 30rpx; } + +.mt--30 { + margin-top: -30rpx; } + +.mt-31 { + margin-top: 31rpx; } + +.mt--31 { + margin-top: -31rpx; } + +.mt-32 { + margin-top: 32rpx; } + +.mt--32 { + margin-top: -32rpx; } + +.mt-33 { + margin-top: 33rpx; } + +.mt--33 { + margin-top: -33rpx; } + +.mt-34 { + margin-top: 34rpx; } + +.mt--34 { + margin-top: -34rpx; } + +.mt-35 { + margin-top: 35rpx; } + +.mt--35 { + margin-top: -35rpx; } + +.mt-36 { + margin-top: 36rpx; } + +.mt--36 { + margin-top: -36rpx; } + +.mt-37 { + margin-top: 37rpx; } + +.mt--37 { + margin-top: -37rpx; } + +.mt-38 { + margin-top: 38rpx; } + +.mt--38 { + margin-top: -38rpx; } + +.mt-39 { + margin-top: 39rpx; } + +.mt--39 { + margin-top: -39rpx; } + +.mt-40 { + margin-top: 40rpx; } + +.mt--40 { + margin-top: -40rpx; } + +.mt-41 { + margin-top: 41rpx; } + +.mt--41 { + margin-top: -41rpx; } + +.mt-42 { + margin-top: 42rpx; } + +.mt--42 { + margin-top: -42rpx; } + +.mt-43 { + margin-top: 43rpx; } + +.mt--43 { + margin-top: -43rpx; } + +.mt-44 { + margin-top: 44rpx; } + +.mt--44 { + margin-top: -44rpx; } + +.mt-45 { + margin-top: 45rpx; } + +.mt--45 { + margin-top: -45rpx; } + +.mt-46 { + margin-top: 46rpx; } + +.mt--46 { + margin-top: -46rpx; } + +.mt-47 { + margin-top: 47rpx; } + +.mt--47 { + margin-top: -47rpx; } + +.mt-48 { + margin-top: 48rpx; } + +.mt--48 { + margin-top: -48rpx; } + +.mt-49 { + margin-top: 49rpx; } + +.mt--49 { + margin-top: -49rpx; } + +.mt-50 { + margin-top: 50rpx; } + +.mt--50 { + margin-top: -50rpx; } + +.mt-n1 { + margin-top: 4rpx; } + +.mt--n1 { + margin-top: -4rpx; } + +.mt-n2 { + margin-top: 8rpx; } + +.mt--n2 { + margin-top: -8rpx; } + +.mt-n3 { + margin-top: 12rpx; } + +.mt--n3 { + margin-top: -12rpx; } + +.mt-n4 { + margin-top: 16rpx; } + +.mt--n4 { + margin-top: -16rpx; } + +.mt-n5 { + margin-top: 20rpx; } + +.mt--n5 { + margin-top: -20rpx; } + +.mt-n6 { + margin-top: 24rpx; } + +.mt--n6 { + margin-top: -24rpx; } + +.mt-n7 { + margin-top: 28rpx; } + +.mt--n7 { + margin-top: -28rpx; } + +.mt-n8 { + margin-top: 32rpx; } + +.mt--n8 { + margin-top: -32rpx; } + +.mt-n9 { + margin-top: 36rpx; } + +.mt--n9 { + margin-top: -36rpx; } + +.mt-n10 { + margin-top: 40rpx; } + +.mt--n10 { + margin-top: -40rpx; } + +.mt-n11 { + margin-top: 44rpx; } + +.mt--n11 { + margin-top: -44rpx; } + +.mt-n12 { + margin-top: 48rpx; } + +.mt--n12 { + margin-top: -48rpx; } + +.mt-n13 { + margin-top: 52rpx; } + +.mt--n13 { + margin-top: -52rpx; } + +.mt-n14 { + margin-top: 56rpx; } + +.mt--n14 { + margin-top: -56rpx; } + +.mt-n15 { + margin-top: 60rpx; } + +.mt--n15 { + margin-top: -60rpx; } + +.mt-n16 { + margin-top: 64rpx; } + +.mt--n16 { + margin-top: -64rpx; } + +.mt-n17 { + margin-top: 68rpx; } + +.mt--n17 { + margin-top: -68rpx; } + +.mt-n18 { + margin-top: 72rpx; } + +.mt--n18 { + margin-top: -72rpx; } + +.mt-n19 { + margin-top: 76rpx; } + +.mt--n19 { + margin-top: -76rpx; } + +.mt-n20 { + margin-top: 80rpx; } + +.mt--n20 { + margin-top: -80rpx; } + +.mt-n21 { + margin-top: 84rpx; } + +.mt--n21 { + margin-top: -84rpx; } + +.mt-n22 { + margin-top: 88rpx; } + +.mt--n22 { + margin-top: -88rpx; } + +.mt-n23 { + margin-top: 92rpx; } + +.mt--n23 { + margin-top: -92rpx; } + +.mt-n24 { + margin-top: 96rpx; } + +.mt--n24 { + margin-top: -96rpx; } + +.mt-n25 { + margin-top: 100rpx; } + +.mt--n25 { + margin-top: -100rpx; } + +.mr-0 { + margin-right: 0rpx; } + +.mr--0 { + margin-right: -0rpx; } + +.mr-1 { + margin-right: 1rpx; } + +.mr--1 { + margin-right: -1rpx; } + +.mr-2 { + margin-right: 2rpx; } + +.mr--2 { + margin-right: -2rpx; } + +.mr-3 { + margin-right: 3rpx; } + +.mr--3 { + margin-right: -3rpx; } + +.mr-4 { + margin-right: 4rpx; } + +.mr--4 { + margin-right: -4rpx; } + +.mr-5 { + margin-right: 5rpx; } + +.mr--5 { + margin-right: -5rpx; } + +.mr-6 { + margin-right: 6rpx; } + +.mr--6 { + margin-right: -6rpx; } + +.mr-7 { + margin-right: 7rpx; } + +.mr--7 { + margin-right: -7rpx; } + +.mr-8 { + margin-right: 8rpx; } + +.mr--8 { + margin-right: -8rpx; } + +.mr-9 { + margin-right: 9rpx; } + +.mr--9 { + margin-right: -9rpx; } + +.mr-10 { + margin-right: 10rpx; } + +.mr--10 { + margin-right: -10rpx; } + +.mr-11 { + margin-right: 11rpx; } + +.mr--11 { + margin-right: -11rpx; } + +.mr-12 { + margin-right: 12rpx; } + +.mr--12 { + margin-right: -12rpx; } + +.mr-13 { + margin-right: 13rpx; } + +.mr--13 { + margin-right: -13rpx; } + +.mr-14 { + margin-right: 14rpx; } + +.mr--14 { + margin-right: -14rpx; } + +.mr-15 { + margin-right: 15rpx; } + +.mr--15 { + margin-right: -15rpx; } + +.mr-16 { + margin-right: 16rpx; } + +.mr--16 { + margin-right: -16rpx; } + +.mr-17 { + margin-right: 17rpx; } + +.mr--17 { + margin-right: -17rpx; } + +.mr-18 { + margin-right: 18rpx; } + +.mr--18 { + margin-right: -18rpx; } + +.mr-19 { + margin-right: 19rpx; } + +.mr--19 { + margin-right: -19rpx; } + +.mr-20 { + margin-right: 20rpx; } + +.mr--20 { + margin-right: -20rpx; } + +.mr-21 { + margin-right: 21rpx; } + +.mr--21 { + margin-right: -21rpx; } + +.mr-22 { + margin-right: 22rpx; } + +.mr--22 { + margin-right: -22rpx; } + +.mr-23 { + margin-right: 23rpx; } + +.mr--23 { + margin-right: -23rpx; } + +.mr-24 { + margin-right: 24rpx; } + +.mr--24 { + margin-right: -24rpx; } + +.mr-25 { + margin-right: 25rpx; } + +.mr--25 { + margin-right: -25rpx; } + +.mr-26 { + margin-right: 26rpx; } + +.mr--26 { + margin-right: -26rpx; } + +.mr-27 { + margin-right: 27rpx; } + +.mr--27 { + margin-right: -27rpx; } + +.mr-28 { + margin-right: 28rpx; } + +.mr--28 { + margin-right: -28rpx; } + +.mr-29 { + margin-right: 29rpx; } + +.mr--29 { + margin-right: -29rpx; } + +.mr-30 { + margin-right: 30rpx; } + +.mr--30 { + margin-right: -30rpx; } + +.mr-31 { + margin-right: 31rpx; } + +.mr--31 { + margin-right: -31rpx; } + +.mr-32 { + margin-right: 32rpx; } + +.mr--32 { + margin-right: -32rpx; } + +.mr-33 { + margin-right: 33rpx; } + +.mr--33 { + margin-right: -33rpx; } + +.mr-34 { + margin-right: 34rpx; } + +.mr--34 { + margin-right: -34rpx; } + +.mr-35 { + margin-right: 35rpx; } + +.mr--35 { + margin-right: -35rpx; } + +.mr-36 { + margin-right: 36rpx; } + +.mr--36 { + margin-right: -36rpx; } + +.mr-37 { + margin-right: 37rpx; } + +.mr--37 { + margin-right: -37rpx; } + +.mr-38 { + margin-right: 38rpx; } + +.mr--38 { + margin-right: -38rpx; } + +.mr-39 { + margin-right: 39rpx; } + +.mr--39 { + margin-right: -39rpx; } + +.mr-40 { + margin-right: 40rpx; } + +.mr--40 { + margin-right: -40rpx; } + +.mr-41 { + margin-right: 41rpx; } + +.mr--41 { + margin-right: -41rpx; } + +.mr-42 { + margin-right: 42rpx; } + +.mr--42 { + margin-right: -42rpx; } + +.mr-43 { + margin-right: 43rpx; } + +.mr--43 { + margin-right: -43rpx; } + +.mr-44 { + margin-right: 44rpx; } + +.mr--44 { + margin-right: -44rpx; } + +.mr-45 { + margin-right: 45rpx; } + +.mr--45 { + margin-right: -45rpx; } + +.mr-46 { + margin-right: 46rpx; } + +.mr--46 { + margin-right: -46rpx; } + +.mr-47 { + margin-right: 47rpx; } + +.mr--47 { + margin-right: -47rpx; } + +.mr-48 { + margin-right: 48rpx; } + +.mr--48 { + margin-right: -48rpx; } + +.mr-49 { + margin-right: 49rpx; } + +.mr--49 { + margin-right: -49rpx; } + +.mr-50 { + margin-right: 50rpx; } + +.mr--50 { + margin-right: -50rpx; } + +.mr-n1 { + margin-right: 4rpx; } + +.mr--n1 { + margin-right: -4rpx; } + +.mr-n2 { + margin-right: 8rpx; } + +.mr--n2 { + margin-right: -8rpx; } + +.mr-n3 { + margin-right: 12rpx; } + +.mr--n3 { + margin-right: -12rpx; } + +.mr-n4 { + margin-right: 16rpx; } + +.mr--n4 { + margin-right: -16rpx; } + +.mr-n5 { + margin-right: 20rpx; } + +.mr--n5 { + margin-right: -20rpx; } + +.mr-n6 { + margin-right: 24rpx; } + +.mr--n6 { + margin-right: -24rpx; } + +.mr-n7 { + margin-right: 28rpx; } + +.mr--n7 { + margin-right: -28rpx; } + +.mr-n8 { + margin-right: 32rpx; } + +.mr--n8 { + margin-right: -32rpx; } + +.mr-n9 { + margin-right: 36rpx; } + +.mr--n9 { + margin-right: -36rpx; } + +.mr-n10 { + margin-right: 40rpx; } + +.mr--n10 { + margin-right: -40rpx; } + +.mr-n11 { + margin-right: 44rpx; } + +.mr--n11 { + margin-right: -44rpx; } + +.mr-n12 { + margin-right: 48rpx; } + +.mr--n12 { + margin-right: -48rpx; } + +.mr-n13 { + margin-right: 52rpx; } + +.mr--n13 { + margin-right: -52rpx; } + +.mr-n14 { + margin-right: 56rpx; } + +.mr--n14 { + margin-right: -56rpx; } + +.mr-n15 { + margin-right: 60rpx; } + +.mr--n15 { + margin-right: -60rpx; } + +.mr-n16 { + margin-right: 64rpx; } + +.mr--n16 { + margin-right: -64rpx; } + +.mr-n17 { + margin-right: 68rpx; } + +.mr--n17 { + margin-right: -68rpx; } + +.mr-n18 { + margin-right: 72rpx; } + +.mr--n18 { + margin-right: -72rpx; } + +.mr-n19 { + margin-right: 76rpx; } + +.mr--n19 { + margin-right: -76rpx; } + +.mr-n20 { + margin-right: 80rpx; } + +.mr--n20 { + margin-right: -80rpx; } + +.mr-n21 { + margin-right: 84rpx; } + +.mr--n21 { + margin-right: -84rpx; } + +.mr-n22 { + margin-right: 88rpx; } + +.mr--n22 { + margin-right: -88rpx; } + +.mr-n23 { + margin-right: 92rpx; } + +.mr--n23 { + margin-right: -92rpx; } + +.mr-n24 { + margin-right: 96rpx; } + +.mr--n24 { + margin-right: -96rpx; } + +.mr-n25 { + margin-right: 100rpx; } + +.mr--n25 { + margin-right: -100rpx; } + +.mb-0 { + margin-bottom: 0rpx; } + +.mb--0 { + margin-bottom: -0rpx; } + +.mb-1 { + margin-bottom: 1rpx; } + +.mb--1 { + margin-bottom: -1rpx; } + +.mb-2 { + margin-bottom: 2rpx; } + +.mb--2 { + margin-bottom: -2rpx; } + +.mb-3 { + margin-bottom: 3rpx; } + +.mb--3 { + margin-bottom: -3rpx; } + +.mb-4 { + margin-bottom: 4rpx; } + +.mb--4 { + margin-bottom: -4rpx; } + +.mb-5 { + margin-bottom: 5rpx; } + +.mb--5 { + margin-bottom: -5rpx; } + +.mb-6 { + margin-bottom: 6rpx; } + +.mb--6 { + margin-bottom: -6rpx; } + +.mb-7 { + margin-bottom: 7rpx; } + +.mb--7 { + margin-bottom: -7rpx; } + +.mb-8 { + margin-bottom: 8rpx; } + +.mb--8 { + margin-bottom: -8rpx; } + +.mb-9 { + margin-bottom: 9rpx; } + +.mb--9 { + margin-bottom: -9rpx; } + +.mb-10 { + margin-bottom: 10rpx; } + +.mb--10 { + margin-bottom: -10rpx; } + +.mb-11 { + margin-bottom: 11rpx; } + +.mb--11 { + margin-bottom: -11rpx; } + +.mb-12 { + margin-bottom: 12rpx; } + +.mb--12 { + margin-bottom: -12rpx; } + +.mb-13 { + margin-bottom: 13rpx; } + +.mb--13 { + margin-bottom: -13rpx; } + +.mb-14 { + margin-bottom: 14rpx; } + +.mb--14 { + margin-bottom: -14rpx; } + +.mb-15 { + margin-bottom: 15rpx; } + +.mb--15 { + margin-bottom: -15rpx; } + +.mb-16 { + margin-bottom: 16rpx; } + +.mb--16 { + margin-bottom: -16rpx; } + +.mb-17 { + margin-bottom: 17rpx; } + +.mb--17 { + margin-bottom: -17rpx; } + +.mb-18 { + margin-bottom: 18rpx; } + +.mb--18 { + margin-bottom: -18rpx; } + +.mb-19 { + margin-bottom: 19rpx; } + +.mb--19 { + margin-bottom: -19rpx; } + +.mb-20 { + margin-bottom: 20rpx; } + +.mb--20 { + margin-bottom: -20rpx; } + +.mb-21 { + margin-bottom: 21rpx; } + +.mb--21 { + margin-bottom: -21rpx; } + +.mb-22 { + margin-bottom: 22rpx; } + +.mb--22 { + margin-bottom: -22rpx; } + +.mb-23 { + margin-bottom: 23rpx; } + +.mb--23 { + margin-bottom: -23rpx; } + +.mb-24 { + margin-bottom: 24rpx; } + +.mb--24 { + margin-bottom: -24rpx; } + +.mb-25 { + margin-bottom: 25rpx; } + +.mb--25 { + margin-bottom: -25rpx; } + +.mb-26 { + margin-bottom: 26rpx; } + +.mb--26 { + margin-bottom: -26rpx; } + +.mb-27 { + margin-bottom: 27rpx; } + +.mb--27 { + margin-bottom: -27rpx; } + +.mb-28 { + margin-bottom: 28rpx; } + +.mb--28 { + margin-bottom: -28rpx; } + +.mb-29 { + margin-bottom: 29rpx; } + +.mb--29 { + margin-bottom: -29rpx; } + +.mb-30 { + margin-bottom: 30rpx; } + +.mb--30 { + margin-bottom: -30rpx; } + +.mb-31 { + margin-bottom: 31rpx; } + +.mb--31 { + margin-bottom: -31rpx; } + +.mb-32 { + margin-bottom: 32rpx; } + +.mb--32 { + margin-bottom: -32rpx; } + +.mb-33 { + margin-bottom: 33rpx; } + +.mb--33 { + margin-bottom: -33rpx; } + +.mb-34 { + margin-bottom: 34rpx; } + +.mb--34 { + margin-bottom: -34rpx; } + +.mb-35 { + margin-bottom: 35rpx; } + +.mb--35 { + margin-bottom: -35rpx; } + +.mb-36 { + margin-bottom: 36rpx; } + +.mb--36 { + margin-bottom: -36rpx; } + +.mb-37 { + margin-bottom: 37rpx; } + +.mb--37 { + margin-bottom: -37rpx; } + +.mb-38 { + margin-bottom: 38rpx; } + +.mb--38 { + margin-bottom: -38rpx; } + +.mb-39 { + margin-bottom: 39rpx; } + +.mb--39 { + margin-bottom: -39rpx; } + +.mb-40 { + margin-bottom: 40rpx; } + +.mb--40 { + margin-bottom: -40rpx; } + +.mb-41 { + margin-bottom: 41rpx; } + +.mb--41 { + margin-bottom: -41rpx; } + +.mb-42 { + margin-bottom: 42rpx; } + +.mb--42 { + margin-bottom: -42rpx; } + +.mb-43 { + margin-bottom: 43rpx; } + +.mb--43 { + margin-bottom: -43rpx; } + +.mb-44 { + margin-bottom: 44rpx; } + +.mb--44 { + margin-bottom: -44rpx; } + +.mb-45 { + margin-bottom: 45rpx; } + +.mb--45 { + margin-bottom: -45rpx; } + +.mb-46 { + margin-bottom: 46rpx; } + +.mb--46 { + margin-bottom: -46rpx; } + +.mb-47 { + margin-bottom: 47rpx; } + +.mb--47 { + margin-bottom: -47rpx; } + +.mb-48 { + margin-bottom: 48rpx; } + +.mb--48 { + margin-bottom: -48rpx; } + +.mb-49 { + margin-bottom: 49rpx; } + +.mb--49 { + margin-bottom: -49rpx; } + +.mb-50 { + margin-bottom: 50rpx; } + +.mb--50 { + margin-bottom: -50rpx; } + +.mb-n1 { + margin-bottom: 4rpx; } + +.mb--n1 { + margin-bottom: -4rpx; } + +.mb-n2 { + margin-bottom: 8rpx; } + +.mb--n2 { + margin-bottom: -8rpx; } + +.mb-n3 { + margin-bottom: 12rpx; } + +.mb--n3 { + margin-bottom: -12rpx; } + +.mb-n4 { + margin-bottom: 16rpx; } + +.mb--n4 { + margin-bottom: -16rpx; } + +.mb-n5 { + margin-bottom: 20rpx; } + +.mb--n5 { + margin-bottom: -20rpx; } + +.mb-n6 { + margin-bottom: 24rpx; } + +.mb--n6 { + margin-bottom: -24rpx; } + +.mb-n7 { + margin-bottom: 28rpx; } + +.mb--n7 { + margin-bottom: -28rpx; } + +.mb-n8 { + margin-bottom: 32rpx; } + +.mb--n8 { + margin-bottom: -32rpx; } + +.mb-n9 { + margin-bottom: 36rpx; } + +.mb--n9 { + margin-bottom: -36rpx; } + +.mb-n10 { + margin-bottom: 40rpx; } + +.mb--n10 { + margin-bottom: -40rpx; } + +.mb-n11 { + margin-bottom: 44rpx; } + +.mb--n11 { + margin-bottom: -44rpx; } + +.mb-n12 { + margin-bottom: 48rpx; } + +.mb--n12 { + margin-bottom: -48rpx; } + +.mb-n13 { + margin-bottom: 52rpx; } + +.mb--n13 { + margin-bottom: -52rpx; } + +.mb-n14 { + margin-bottom: 56rpx; } + +.mb--n14 { + margin-bottom: -56rpx; } + +.mb-n15 { + margin-bottom: 60rpx; } + +.mb--n15 { + margin-bottom: -60rpx; } + +.mb-n16 { + margin-bottom: 64rpx; } + +.mb--n16 { + margin-bottom: -64rpx; } + +.mb-n17 { + margin-bottom: 68rpx; } + +.mb--n17 { + margin-bottom: -68rpx; } + +.mb-n18 { + margin-bottom: 72rpx; } + +.mb--n18 { + margin-bottom: -72rpx; } + +.mb-n19 { + margin-bottom: 76rpx; } + +.mb--n19 { + margin-bottom: -76rpx; } + +.mb-n20 { + margin-bottom: 80rpx; } + +.mb--n20 { + margin-bottom: -80rpx; } + +.mb-n21 { + margin-bottom: 84rpx; } + +.mb--n21 { + margin-bottom: -84rpx; } + +.mb-n22 { + margin-bottom: 88rpx; } + +.mb--n22 { + margin-bottom: -88rpx; } + +.mb-n23 { + margin-bottom: 92rpx; } + +.mb--n23 { + margin-bottom: -92rpx; } + +.mb-n24 { + margin-bottom: 96rpx; } + +.mb--n24 { + margin-bottom: -96rpx; } + +.mb-n25 { + margin-bottom: 100rpx; } + +.mb--n25 { + margin-bottom: -100rpx; } + +.ml-0 { + margin-left: 0rpx; } + +.ml--0 { + margin-left: -0rpx; } + +.ml-1 { + margin-left: 1rpx; } + +.ml--1 { + margin-left: -1rpx; } + +.ml-2 { + margin-left: 2rpx; } + +.ml--2 { + margin-left: -2rpx; } + +.ml-3 { + margin-left: 3rpx; } + +.ml--3 { + margin-left: -3rpx; } + +.ml-4 { + margin-left: 4rpx; } + +.ml--4 { + margin-left: -4rpx; } + +.ml-5 { + margin-left: 5rpx; } + +.ml--5 { + margin-left: -5rpx; } + +.ml-6 { + margin-left: 6rpx; } + +.ml--6 { + margin-left: -6rpx; } + +.ml-7 { + margin-left: 7rpx; } + +.ml--7 { + margin-left: -7rpx; } + +.ml-8 { + margin-left: 8rpx; } + +.ml--8 { + margin-left: -8rpx; } + +.ml-9 { + margin-left: 9rpx; } + +.ml--9 { + margin-left: -9rpx; } + +.ml-10 { + margin-left: 10rpx; } + +.ml--10 { + margin-left: -10rpx; } + +.ml-11 { + margin-left: 11rpx; } + +.ml--11 { + margin-left: -11rpx; } + +.ml-12 { + margin-left: 12rpx; } + +.ml--12 { + margin-left: -12rpx; } + +.ml-13 { + margin-left: 13rpx; } + +.ml--13 { + margin-left: -13rpx; } + +.ml-14 { + margin-left: 14rpx; } + +.ml--14 { + margin-left: -14rpx; } + +.ml-15 { + margin-left: 15rpx; } + +.ml--15 { + margin-left: -15rpx; } + +.ml-16 { + margin-left: 16rpx; } + +.ml--16 { + margin-left: -16rpx; } + +.ml-17 { + margin-left: 17rpx; } + +.ml--17 { + margin-left: -17rpx; } + +.ml-18 { + margin-left: 18rpx; } + +.ml--18 { + margin-left: -18rpx; } + +.ml-19 { + margin-left: 19rpx; } + +.ml--19 { + margin-left: -19rpx; } + +.ml-20 { + margin-left: 20rpx; } + +.ml--20 { + margin-left: -20rpx; } + +.ml-21 { + margin-left: 21rpx; } + +.ml--21 { + margin-left: -21rpx; } + +.ml-22 { + margin-left: 22rpx; } + +.ml--22 { + margin-left: -22rpx; } + +.ml-23 { + margin-left: 23rpx; } + +.ml--23 { + margin-left: -23rpx; } + +.ml-24 { + margin-left: 24rpx; } + +.ml--24 { + margin-left: -24rpx; } + +.ml-25 { + margin-left: 25rpx; } + +.ml--25 { + margin-left: -25rpx; } + +.ml-26 { + margin-left: 26rpx; } + +.ml--26 { + margin-left: -26rpx; } + +.ml-27 { + margin-left: 27rpx; } + +.ml--27 { + margin-left: -27rpx; } + +.ml-28 { + margin-left: 28rpx; } + +.ml--28 { + margin-left: -28rpx; } + +.ml-29 { + margin-left: 29rpx; } + +.ml--29 { + margin-left: -29rpx; } + +.ml-30 { + margin-left: 30rpx; } + +.ml--30 { + margin-left: -30rpx; } + +.ml-31 { + margin-left: 31rpx; } + +.ml--31 { + margin-left: -31rpx; } + +.ml-32 { + margin-left: 32rpx; } + +.ml--32 { + margin-left: -32rpx; } + +.ml-33 { + margin-left: 33rpx; } + +.ml--33 { + margin-left: -33rpx; } + +.ml-34 { + margin-left: 34rpx; } + +.ml--34 { + margin-left: -34rpx; } + +.ml-35 { + margin-left: 35rpx; } + +.ml--35 { + margin-left: -35rpx; } + +.ml-36 { + margin-left: 36rpx; } + +.ml--36 { + margin-left: -36rpx; } + +.ml-37 { + margin-left: 37rpx; } + +.ml--37 { + margin-left: -37rpx; } + +.ml-38 { + margin-left: 38rpx; } + +.ml--38 { + margin-left: -38rpx; } + +.ml-39 { + margin-left: 39rpx; } + +.ml--39 { + margin-left: -39rpx; } + +.ml-40 { + margin-left: 40rpx; } + +.ml--40 { + margin-left: -40rpx; } + +.ml-41 { + margin-left: 41rpx; } + +.ml--41 { + margin-left: -41rpx; } + +.ml-42 { + margin-left: 42rpx; } + +.ml--42 { + margin-left: -42rpx; } + +.ml-43 { + margin-left: 43rpx; } + +.ml--43 { + margin-left: -43rpx; } + +.ml-44 { + margin-left: 44rpx; } + +.ml--44 { + margin-left: -44rpx; } + +.ml-45 { + margin-left: 45rpx; } + +.ml--45 { + margin-left: -45rpx; } + +.ml-46 { + margin-left: 46rpx; } + +.ml--46 { + margin-left: -46rpx; } + +.ml-47 { + margin-left: 47rpx; } + +.ml--47 { + margin-left: -47rpx; } + +.ml-48 { + margin-left: 48rpx; } + +.ml--48 { + margin-left: -48rpx; } + +.ml-49 { + margin-left: 49rpx; } + +.ml--49 { + margin-left: -49rpx; } + +.ml-50 { + margin-left: 50rpx; } + +.ml--50 { + margin-left: -50rpx; } + +.ml-n1 { + margin-left: 4rpx; } + +.ml--n1 { + margin-left: -4rpx; } + +.ml-n2 { + margin-left: 8rpx; } + +.ml--n2 { + margin-left: -8rpx; } + +.ml-n3 { + margin-left: 12rpx; } + +.ml--n3 { + margin-left: -12rpx; } + +.ml-n4 { + margin-left: 16rpx; } + +.ml--n4 { + margin-left: -16rpx; } + +.ml-n5 { + margin-left: 20rpx; } + +.ml--n5 { + margin-left: -20rpx; } + +.ml-n6 { + margin-left: 24rpx; } + +.ml--n6 { + margin-left: -24rpx; } + +.ml-n7 { + margin-left: 28rpx; } + +.ml--n7 { + margin-left: -28rpx; } + +.ml-n8 { + margin-left: 32rpx; } + +.ml--n8 { + margin-left: -32rpx; } + +.ml-n9 { + margin-left: 36rpx; } + +.ml--n9 { + margin-left: -36rpx; } + +.ml-n10 { + margin-left: 40rpx; } + +.ml--n10 { + margin-left: -40rpx; } + +.ml-n11 { + margin-left: 44rpx; } + +.ml--n11 { + margin-left: -44rpx; } + +.ml-n12 { + margin-left: 48rpx; } + +.ml--n12 { + margin-left: -48rpx; } + +.ml-n13 { + margin-left: 52rpx; } + +.ml--n13 { + margin-left: -52rpx; } + +.ml-n14 { + margin-left: 56rpx; } + +.ml--n14 { + margin-left: -56rpx; } + +.ml-n15 { + margin-left: 60rpx; } + +.ml--n15 { + margin-left: -60rpx; } + +.ml-n16 { + margin-left: 64rpx; } + +.ml--n16 { + margin-left: -64rpx; } + +.ml-n17 { + margin-left: 68rpx; } + +.ml--n17 { + margin-left: -68rpx; } + +.ml-n18 { + margin-left: 72rpx; } + +.ml--n18 { + margin-left: -72rpx; } + +.ml-n19 { + margin-left: 76rpx; } + +.ml--n19 { + margin-left: -76rpx; } + +.ml-n20 { + margin-left: 80rpx; } + +.ml--n20 { + margin-left: -80rpx; } + +.ml-n21 { + margin-left: 84rpx; } + +.ml--n21 { + margin-left: -84rpx; } + +.ml-n22 { + margin-left: 88rpx; } + +.ml--n22 { + margin-left: -88rpx; } + +.ml-n23 { + margin-left: 92rpx; } + +.ml--n23 { + margin-left: -92rpx; } + +.ml-n24 { + margin-left: 96rpx; } + +.ml--n24 { + margin-left: -96rpx; } + +.ml-n25 { + margin-left: 100rpx; } + +.ml--n25 { + margin-left: -100rpx; } + +.mx-0 { + margin-left: 0rpx; + margin-right: 0rpx; } + +.mx-1 { + margin-left: 1rpx; + margin-right: 1rpx; } + +.mx-2 { + margin-left: 2rpx; + margin-right: 2rpx; } + +.mx-3 { + margin-left: 3rpx; + margin-right: 3rpx; } + +.mx-4 { + margin-left: 4rpx; + margin-right: 4rpx; } + +.mx-5 { + margin-left: 5rpx; + margin-right: 5rpx; } + +.mx-6 { + margin-left: 6rpx; + margin-right: 6rpx; } + +.mx-7 { + margin-left: 7rpx; + margin-right: 7rpx; } + +.mx-8 { + margin-left: 8rpx; + margin-right: 8rpx; } + +.mx-9 { + margin-left: 9rpx; + margin-right: 9rpx; } + +.mx-10 { + margin-left: 10rpx; + margin-right: 10rpx; } + +.mx-11 { + margin-left: 11rpx; + margin-right: 11rpx; } + +.mx-12 { + margin-left: 12rpx; + margin-right: 12rpx; } + +.mx-13 { + margin-left: 13rpx; + margin-right: 13rpx; } + +.mx-14 { + margin-left: 14rpx; + margin-right: 14rpx; } + +.mx-15 { + margin-left: 15rpx; + margin-right: 15rpx; } + +.mx-16 { + margin-left: 16rpx; + margin-right: 16rpx; } + +.mx-17 { + margin-left: 17rpx; + margin-right: 17rpx; } + +.mx-18 { + margin-left: 18rpx; + margin-right: 18rpx; } + +.mx-19 { + margin-left: 19rpx; + margin-right: 19rpx; } + +.mx-20 { + margin-left: 20rpx; + margin-right: 20rpx; } + +.mx-21 { + margin-left: 21rpx; + margin-right: 21rpx; } + +.mx-22 { + margin-left: 22rpx; + margin-right: 22rpx; } + +.mx-23 { + margin-left: 23rpx; + margin-right: 23rpx; } + +.mx-24 { + margin-left: 24rpx; + margin-right: 24rpx; } + +.mx-25 { + margin-left: 25rpx; + margin-right: 25rpx; } + +.mx-26 { + margin-left: 26rpx; + margin-right: 26rpx; } + +.mx-27 { + margin-left: 27rpx; + margin-right: 27rpx; } + +.mx-28 { + margin-left: 28rpx; + margin-right: 28rpx; } + +.mx-29 { + margin-left: 29rpx; + margin-right: 29rpx; } + +.mx-30 { + margin-left: 30rpx; + margin-right: 30rpx; } + +.mx-31 { + margin-left: 31rpx; + margin-right: 31rpx; } + +.mx-32 { + margin-left: 32rpx; + margin-right: 32rpx; } + +.mx-33 { + margin-left: 33rpx; + margin-right: 33rpx; } + +.mx-34 { + margin-left: 34rpx; + margin-right: 34rpx; } + +.mx-35 { + margin-left: 35rpx; + margin-right: 35rpx; } + +.mx-36 { + margin-left: 36rpx; + margin-right: 36rpx; } + +.mx-37 { + margin-left: 37rpx; + margin-right: 37rpx; } + +.mx-38 { + margin-left: 38rpx; + margin-right: 38rpx; } + +.mx-39 { + margin-left: 39rpx; + margin-right: 39rpx; } + +.mx-40 { + margin-left: 40rpx; + margin-right: 40rpx; } + +.mx-41 { + margin-left: 41rpx; + margin-right: 41rpx; } + +.mx-42 { + margin-left: 42rpx; + margin-right: 42rpx; } + +.mx-43 { + margin-left: 43rpx; + margin-right: 43rpx; } + +.mx-44 { + margin-left: 44rpx; + margin-right: 44rpx; } + +.mx-45 { + margin-left: 45rpx; + margin-right: 45rpx; } + +.mx-46 { + margin-left: 46rpx; + margin-right: 46rpx; } + +.mx-47 { + margin-left: 47rpx; + margin-right: 47rpx; } + +.mx-48 { + margin-left: 48rpx; + margin-right: 48rpx; } + +.mx-49 { + margin-left: 49rpx; + margin-right: 49rpx; } + +.mx-50 { + margin-left: 50rpx; + margin-right: 50rpx; } + +.mx-n1 { + margin-left: 4rpx; + margin-right: 4rpx; } + +.mx-n2 { + margin-left: 8rpx; + margin-right: 8rpx; } + +.mx-n3 { + margin-left: 12rpx; + margin-right: 12rpx; } + +.mx-n4 { + margin-left: 16rpx; + margin-right: 16rpx; } + +.mx-n5 { + margin-left: 20rpx; + margin-right: 20rpx; } + +.mx-n6 { + margin-left: 24rpx; + margin-right: 24rpx; } + +.mx-n7 { + margin-left: 28rpx; + margin-right: 28rpx; } + +.mx-n8 { + margin-left: 32rpx; + margin-right: 32rpx; } + +.mx-n9 { + margin-left: 36rpx; + margin-right: 36rpx; } + +.mx-n10 { + margin-left: 40rpx; + margin-right: 40rpx; } + +.mx-n11 { + margin-left: 44rpx; + margin-right: 44rpx; } + +.mx-n12 { + margin-left: 48rpx; + margin-right: 48rpx; } + +.mx-n13 { + margin-left: 52rpx; + margin-right: 52rpx; } + +.mx-n14 { + margin-left: 56rpx; + margin-right: 56rpx; } + +.mx-n15 { + margin-left: 60rpx; + margin-right: 60rpx; } + +.mx-n16 { + margin-left: 64rpx; + margin-right: 64rpx; } + +.mx-n17 { + margin-left: 68rpx; + margin-right: 68rpx; } + +.mx-n18 { + margin-left: 72rpx; + margin-right: 72rpx; } + +.mx-n19 { + margin-left: 76rpx; + margin-right: 76rpx; } + +.mx-n20 { + margin-left: 80rpx; + margin-right: 80rpx; } + +.mx-n21 { + margin-left: 84rpx; + margin-right: 84rpx; } + +.mx-n22 { + margin-left: 88rpx; + margin-right: 88rpx; } + +.mx-n23 { + margin-left: 92rpx; + margin-right: 92rpx; } + +.mx-n24 { + margin-left: 96rpx; + margin-right: 96rpx; } + +.mx-n25 { + margin-left: 100rpx; + margin-right: 100rpx; } + +.my-0 { + margin-top: 0rpx; + margin-bottom: 0rpx; } + +.my-1 { + margin-top: 1rpx; + margin-bottom: 1rpx; } + +.my-2 { + margin-top: 2rpx; + margin-bottom: 2rpx; } + +.my-3 { + margin-top: 3rpx; + margin-bottom: 3rpx; } + +.my-4 { + margin-top: 4rpx; + margin-bottom: 4rpx; } + +.my-5 { + margin-top: 5rpx; + margin-bottom: 5rpx; } + +.my-6 { + margin-top: 6rpx; + margin-bottom: 6rpx; } + +.my-7 { + margin-top: 7rpx; + margin-bottom: 7rpx; } + +.my-8 { + margin-top: 8rpx; + margin-bottom: 8rpx; } + +.my-9 { + margin-top: 9rpx; + margin-bottom: 9rpx; } + +.my-10 { + margin-top: 10rpx; + margin-bottom: 10rpx; } + +.my-11 { + margin-top: 11rpx; + margin-bottom: 11rpx; } + +.my-12 { + margin-top: 12rpx; + margin-bottom: 12rpx; } + +.my-13 { + margin-top: 13rpx; + margin-bottom: 13rpx; } + +.my-14 { + margin-top: 14rpx; + margin-bottom: 14rpx; } + +.my-15 { + margin-top: 15rpx; + margin-bottom: 15rpx; } + +.my-16 { + margin-top: 16rpx; + margin-bottom: 16rpx; } + +.my-17 { + margin-top: 17rpx; + margin-bottom: 17rpx; } + +.my-18 { + margin-top: 18rpx; + margin-bottom: 18rpx; } + +.my-19 { + margin-top: 19rpx; + margin-bottom: 19rpx; } + +.my-20 { + margin-top: 20rpx; + margin-bottom: 20rpx; } + +.my-21 { + margin-top: 21rpx; + margin-bottom: 21rpx; } + +.my-22 { + margin-top: 22rpx; + margin-bottom: 22rpx; } + +.my-23 { + margin-top: 23rpx; + margin-bottom: 23rpx; } + +.my-24 { + margin-top: 24rpx; + margin-bottom: 24rpx; } + +.my-25 { + margin-top: 25rpx; + margin-bottom: 25rpx; } + +.my-26 { + margin-top: 26rpx; + margin-bottom: 26rpx; } + +.my-27 { + margin-top: 27rpx; + margin-bottom: 27rpx; } + +.my-28 { + margin-top: 28rpx; + margin-bottom: 28rpx; } + +.my-29 { + margin-top: 29rpx; + margin-bottom: 29rpx; } + +.my-30 { + margin-top: 30rpx; + margin-bottom: 30rpx; } + +.my-31 { + margin-top: 31rpx; + margin-bottom: 31rpx; } + +.my-32 { + margin-top: 32rpx; + margin-bottom: 32rpx; } + +.my-33 { + margin-top: 33rpx; + margin-bottom: 33rpx; } + +.my-34 { + margin-top: 34rpx; + margin-bottom: 34rpx; } + +.my-35 { + margin-top: 35rpx; + margin-bottom: 35rpx; } + +.my-36 { + margin-top: 36rpx; + margin-bottom: 36rpx; } + +.my-37 { + margin-top: 37rpx; + margin-bottom: 37rpx; } + +.my-38 { + margin-top: 38rpx; + margin-bottom: 38rpx; } + +.my-39 { + margin-top: 39rpx; + margin-bottom: 39rpx; } + +.my-40 { + margin-top: 40rpx; + margin-bottom: 40rpx; } + +.my-41 { + margin-top: 41rpx; + margin-bottom: 41rpx; } + +.my-42 { + margin-top: 42rpx; + margin-bottom: 42rpx; } + +.my-43 { + margin-top: 43rpx; + margin-bottom: 43rpx; } + +.my-44 { + margin-top: 44rpx; + margin-bottom: 44rpx; } + +.my-45 { + margin-top: 45rpx; + margin-bottom: 45rpx; } + +.my-46 { + margin-top: 46rpx; + margin-bottom: 46rpx; } + +.my-47 { + margin-top: 47rpx; + margin-bottom: 47rpx; } + +.my-48 { + margin-top: 48rpx; + margin-bottom: 48rpx; } + +.my-49 { + margin-top: 49rpx; + margin-bottom: 49rpx; } + +.my-50 { + margin-top: 50rpx; + margin-bottom: 50rpx; } + +.my-n1 { + margin-top: 4rpx; + margin-bottom: 4rpx; } + +.my-n2 { + margin-top: 8rpx; + margin-bottom: 8rpx; } + +.my-n3 { + margin-top: 12rpx; + margin-bottom: 12rpx; } + +.my-n4 { + margin-top: 16rpx; + margin-bottom: 16rpx; } + +.my-n5 { + margin-top: 20rpx; + margin-bottom: 20rpx; } + +.my-n6 { + margin-top: 24rpx; + margin-bottom: 24rpx; } + +.my-n7 { + margin-top: 28rpx; + margin-bottom: 28rpx; } + +.my-n8 { + margin-top: 32rpx; + margin-bottom: 32rpx; } + +.my-n9 { + margin-top: 36rpx; + margin-bottom: 36rpx; } + +.my-n10 { + margin-top: 40rpx; + margin-bottom: 40rpx; } + +.my-n11 { + margin-top: 44rpx; + margin-bottom: 44rpx; } + +.my-n12 { + margin-top: 48rpx; + margin-bottom: 48rpx; } + +.my-n13 { + margin-top: 52rpx; + margin-bottom: 52rpx; } + +.my-n14 { + margin-top: 56rpx; + margin-bottom: 56rpx; } + +.my-n15 { + margin-top: 60rpx; + margin-bottom: 60rpx; } + +.my-n16 { + margin-top: 64rpx; + margin-bottom: 64rpx; } + +.my-n17 { + margin-top: 68rpx; + margin-bottom: 68rpx; } + +.my-n18 { + margin-top: 72rpx; + margin-bottom: 72rpx; } + +.my-n19 { + margin-top: 76rpx; + margin-bottom: 76rpx; } + +.my-n20 { + margin-top: 80rpx; + margin-bottom: 80rpx; } + +.my-n21 { + margin-top: 84rpx; + margin-bottom: 84rpx; } + +.my-n22 { + margin-top: 88rpx; + margin-bottom: 88rpx; } + +.my-n23 { + margin-top: 92rpx; + margin-bottom: 92rpx; } + +.my-n24 { + margin-top: 96rpx; + margin-bottom: 96rpx; } + +.my-n25 { + margin-top: 100rpx; + margin-bottom: 100rpx; } + +.t-0 { + top: 0rpx; } + +.t--0 { + top: -0rpx; } + +.t-1 { + top: 1rpx; } + +.t--1 { + top: -1rpx; } + +.t-2 { + top: 2rpx; } + +.t--2 { + top: -2rpx; } + +.t-3 { + top: 3rpx; } + +.t--3 { + top: -3rpx; } + +.t-4 { + top: 4rpx; } + +.t--4 { + top: -4rpx; } + +.t-5 { + top: 5rpx; } + +.t--5 { + top: -5rpx; } + +.t-6 { + top: 6rpx; } + +.t--6 { + top: -6rpx; } + +.t-7 { + top: 7rpx; } + +.t--7 { + top: -7rpx; } + +.t-8 { + top: 8rpx; } + +.t--8 { + top: -8rpx; } + +.t-9 { + top: 9rpx; } + +.t--9 { + top: -9rpx; } + +.t-10 { + top: 10rpx; } + +.t--10 { + top: -10rpx; } + +.t-11 { + top: 11rpx; } + +.t--11 { + top: -11rpx; } + +.t-12 { + top: 12rpx; } + +.t--12 { + top: -12rpx; } + +.t-13 { + top: 13rpx; } + +.t--13 { + top: -13rpx; } + +.t-14 { + top: 14rpx; } + +.t--14 { + top: -14rpx; } + +.t-15 { + top: 15rpx; } + +.t--15 { + top: -15rpx; } + +.t-16 { + top: 16rpx; } + +.t--16 { + top: -16rpx; } + +.t-17 { + top: 17rpx; } + +.t--17 { + top: -17rpx; } + +.t-18 { + top: 18rpx; } + +.t--18 { + top: -18rpx; } + +.t-19 { + top: 19rpx; } + +.t--19 { + top: -19rpx; } + +.t-20 { + top: 20rpx; } + +.t--20 { + top: -20rpx; } + +.t-21 { + top: 21rpx; } + +.t--21 { + top: -21rpx; } + +.t-22 { + top: 22rpx; } + +.t--22 { + top: -22rpx; } + +.t-23 { + top: 23rpx; } + +.t--23 { + top: -23rpx; } + +.t-24 { + top: 24rpx; } + +.t--24 { + top: -24rpx; } + +.t-25 { + top: 25rpx; } + +.t--25 { + top: -25rpx; } + +.t-26 { + top: 26rpx; } + +.t--26 { + top: -26rpx; } + +.t-27 { + top: 27rpx; } + +.t--27 { + top: -27rpx; } + +.t-28 { + top: 28rpx; } + +.t--28 { + top: -28rpx; } + +.t-29 { + top: 29rpx; } + +.t--29 { + top: -29rpx; } + +.t-30 { + top: 30rpx; } + +.t--30 { + top: -30rpx; } + +.t-31 { + top: 31rpx; } + +.t--31 { + top: -31rpx; } + +.t-32 { + top: 32rpx; } + +.t--32 { + top: -32rpx; } + +.t-33 { + top: 33rpx; } + +.t--33 { + top: -33rpx; } + +.t-34 { + top: 34rpx; } + +.t--34 { + top: -34rpx; } + +.t-35 { + top: 35rpx; } + +.t--35 { + top: -35rpx; } + +.t-36 { + top: 36rpx; } + +.t--36 { + top: -36rpx; } + +.t-37 { + top: 37rpx; } + +.t--37 { + top: -37rpx; } + +.t-38 { + top: 38rpx; } + +.t--38 { + top: -38rpx; } + +.t-39 { + top: 39rpx; } + +.t--39 { + top: -39rpx; } + +.t-40 { + top: 40rpx; } + +.t--40 { + top: -40rpx; } + +.t-41 { + top: 41rpx; } + +.t--41 { + top: -41rpx; } + +.t-42 { + top: 42rpx; } + +.t--42 { + top: -42rpx; } + +.t-43 { + top: 43rpx; } + +.t--43 { + top: -43rpx; } + +.t-44 { + top: 44rpx; } + +.t--44 { + top: -44rpx; } + +.t-45 { + top: 45rpx; } + +.t--45 { + top: -45rpx; } + +.t-46 { + top: 46rpx; } + +.t--46 { + top: -46rpx; } + +.t-47 { + top: 47rpx; } + +.t--47 { + top: -47rpx; } + +.t-48 { + top: 48rpx; } + +.t--48 { + top: -48rpx; } + +.t-49 { + top: 49rpx; } + +.t--49 { + top: -49rpx; } + +.t-50 { + top: 50rpx; } + +.t--50 { + top: -50rpx; } + +.t-n1 { + top: 4rpx; } + +.t--n1 { + top: -4rpx; } + +.t-n2 { + top: 8rpx; } + +.t--n2 { + top: -8rpx; } + +.t-n3 { + top: 12rpx; } + +.t--n3 { + top: -12rpx; } + +.t-n4 { + top: 16rpx; } + +.t--n4 { + top: -16rpx; } + +.t-n5 { + top: 20rpx; } + +.t--n5 { + top: -20rpx; } + +.t-n6 { + top: 24rpx; } + +.t--n6 { + top: -24rpx; } + +.t-n7 { + top: 28rpx; } + +.t--n7 { + top: -28rpx; } + +.t-n8 { + top: 32rpx; } + +.t--n8 { + top: -32rpx; } + +.t-n9 { + top: 36rpx; } + +.t--n9 { + top: -36rpx; } + +.t-n10 { + top: 40rpx; } + +.t--n10 { + top: -40rpx; } + +.t-n11 { + top: 44rpx; } + +.t--n11 { + top: -44rpx; } + +.t-n12 { + top: 48rpx; } + +.t--n12 { + top: -48rpx; } + +.t-n13 { + top: 52rpx; } + +.t--n13 { + top: -52rpx; } + +.t-n14 { + top: 56rpx; } + +.t--n14 { + top: -56rpx; } + +.t-n15 { + top: 60rpx; } + +.t--n15 { + top: -60rpx; } + +.t-n16 { + top: 64rpx; } + +.t--n16 { + top: -64rpx; } + +.t-n17 { + top: 68rpx; } + +.t--n17 { + top: -68rpx; } + +.t-n18 { + top: 72rpx; } + +.t--n18 { + top: -72rpx; } + +.t-n19 { + top: 76rpx; } + +.t--n19 { + top: -76rpx; } + +.t-n20 { + top: 80rpx; } + +.t--n20 { + top: -80rpx; } + +.t-n21 { + top: 84rpx; } + +.t--n21 { + top: -84rpx; } + +.t-n22 { + top: 88rpx; } + +.t--n22 { + top: -88rpx; } + +.t-n23 { + top: 92rpx; } + +.t--n23 { + top: -92rpx; } + +.t-n24 { + top: 96rpx; } + +.t--n24 { + top: -96rpx; } + +.t-n25 { + top: 100rpx; } + +.t--n25 { + top: -100rpx; } + +.r-0 { + right: 0rpx; } + +.r--0 { + right: -0rpx; } + +.r-1 { + right: 1rpx; } + +.r--1 { + right: -1rpx; } + +.r-2 { + right: 2rpx; } + +.r--2 { + right: -2rpx; } + +.r-3 { + right: 3rpx; } + +.r--3 { + right: -3rpx; } + +.r-4 { + right: 4rpx; } + +.r--4 { + right: -4rpx; } + +.r-5 { + right: 5rpx; } + +.r--5 { + right: -5rpx; } + +.r-6 { + right: 6rpx; } + +.r--6 { + right: -6rpx; } + +.r-7 { + right: 7rpx; } + +.r--7 { + right: -7rpx; } + +.r-8 { + right: 8rpx; } + +.r--8 { + right: -8rpx; } + +.r-9 { + right: 9rpx; } + +.r--9 { + right: -9rpx; } + +.r-10 { + right: 10rpx; } + +.r--10 { + right: -10rpx; } + +.r-11 { + right: 11rpx; } + +.r--11 { + right: -11rpx; } + +.r-12 { + right: 12rpx; } + +.r--12 { + right: -12rpx; } + +.r-13 { + right: 13rpx; } + +.r--13 { + right: -13rpx; } + +.r-14 { + right: 14rpx; } + +.r--14 { + right: -14rpx; } + +.r-15 { + right: 15rpx; } + +.r--15 { + right: -15rpx; } + +.r-16 { + right: 16rpx; } + +.r--16 { + right: -16rpx; } + +.r-17 { + right: 17rpx; } + +.r--17 { + right: -17rpx; } + +.r-18 { + right: 18rpx; } + +.r--18 { + right: -18rpx; } + +.r-19 { + right: 19rpx; } + +.r--19 { + right: -19rpx; } + +.r-20 { + right: 20rpx; } + +.r--20 { + right: -20rpx; } + +.r-21 { + right: 21rpx; } + +.r--21 { + right: -21rpx; } + +.r-22 { + right: 22rpx; } + +.r--22 { + right: -22rpx; } + +.r-23 { + right: 23rpx; } + +.r--23 { + right: -23rpx; } + +.r-24 { + right: 24rpx; } + +.r--24 { + right: -24rpx; } + +.r-25 { + right: 25rpx; } + +.r--25 { + right: -25rpx; } + +.r-26 { + right: 26rpx; } + +.r--26 { + right: -26rpx; } + +.r-27 { + right: 27rpx; } + +.r--27 { + right: -27rpx; } + +.r-28 { + right: 28rpx; } + +.r--28 { + right: -28rpx; } + +.r-29 { + right: 29rpx; } + +.r--29 { + right: -29rpx; } + +.r-30 { + right: 30rpx; } + +.r--30 { + right: -30rpx; } + +.r-31 { + right: 31rpx; } + +.r--31 { + right: -31rpx; } + +.r-32 { + right: 32rpx; } + +.r--32 { + right: -32rpx; } + +.r-33 { + right: 33rpx; } + +.r--33 { + right: -33rpx; } + +.r-34 { + right: 34rpx; } + +.r--34 { + right: -34rpx; } + +.r-35 { + right: 35rpx; } + +.r--35 { + right: -35rpx; } + +.r-36 { + right: 36rpx; } + +.r--36 { + right: -36rpx; } + +.r-37 { + right: 37rpx; } + +.r--37 { + right: -37rpx; } + +.r-38 { + right: 38rpx; } + +.r--38 { + right: -38rpx; } + +.r-39 { + right: 39rpx; } + +.r--39 { + right: -39rpx; } + +.r-40 { + right: 40rpx; } + +.r--40 { + right: -40rpx; } + +.r-41 { + right: 41rpx; } + +.r--41 { + right: -41rpx; } + +.r-42 { + right: 42rpx; } + +.r--42 { + right: -42rpx; } + +.r-43 { + right: 43rpx; } + +.r--43 { + right: -43rpx; } + +.r-44 { + right: 44rpx; } + +.r--44 { + right: -44rpx; } + +.r-45 { + right: 45rpx; } + +.r--45 { + right: -45rpx; } + +.r-46 { + right: 46rpx; } + +.r--46 { + right: -46rpx; } + +.r-47 { + right: 47rpx; } + +.r--47 { + right: -47rpx; } + +.r-48 { + right: 48rpx; } + +.r--48 { + right: -48rpx; } + +.r-49 { + right: 49rpx; } + +.r--49 { + right: -49rpx; } + +.r-50 { + right: 50rpx; } + +.r--50 { + right: -50rpx; } + +.r-n1 { + right: 4rpx; } + +.r--n1 { + right: -4rpx; } + +.r-n2 { + right: 8rpx; } + +.r--n2 { + right: -8rpx; } + +.r-n3 { + right: 12rpx; } + +.r--n3 { + right: -12rpx; } + +.r-n4 { + right: 16rpx; } + +.r--n4 { + right: -16rpx; } + +.r-n5 { + right: 20rpx; } + +.r--n5 { + right: -20rpx; } + +.r-n6 { + right: 24rpx; } + +.r--n6 { + right: -24rpx; } + +.r-n7 { + right: 28rpx; } + +.r--n7 { + right: -28rpx; } + +.r-n8 { + right: 32rpx; } + +.r--n8 { + right: -32rpx; } + +.r-n9 { + right: 36rpx; } + +.r--n9 { + right: -36rpx; } + +.r-n10 { + right: 40rpx; } + +.r--n10 { + right: -40rpx; } + +.r-n11 { + right: 44rpx; } + +.r--n11 { + right: -44rpx; } + +.r-n12 { + right: 48rpx; } + +.r--n12 { + right: -48rpx; } + +.r-n13 { + right: 52rpx; } + +.r--n13 { + right: -52rpx; } + +.r-n14 { + right: 56rpx; } + +.r--n14 { + right: -56rpx; } + +.r-n15 { + right: 60rpx; } + +.r--n15 { + right: -60rpx; } + +.r-n16 { + right: 64rpx; } + +.r--n16 { + right: -64rpx; } + +.r-n17 { + right: 68rpx; } + +.r--n17 { + right: -68rpx; } + +.r-n18 { + right: 72rpx; } + +.r--n18 { + right: -72rpx; } + +.r-n19 { + right: 76rpx; } + +.r--n19 { + right: -76rpx; } + +.r-n20 { + right: 80rpx; } + +.r--n20 { + right: -80rpx; } + +.r-n21 { + right: 84rpx; } + +.r--n21 { + right: -84rpx; } + +.r-n22 { + right: 88rpx; } + +.r--n22 { + right: -88rpx; } + +.r-n23 { + right: 92rpx; } + +.r--n23 { + right: -92rpx; } + +.r-n24 { + right: 96rpx; } + +.r--n24 { + right: -96rpx; } + +.r-n25 { + right: 100rpx; } + +.r--n25 { + right: -100rpx; } + +.b-0 { + bottom: 0rpx; } + +.b--0 { + bottom: -0rpx; } + +.b-1 { + bottom: 1rpx; } + +.b--1 { + bottom: -1rpx; } + +.b-2 { + bottom: 2rpx; } + +.b--2 { + bottom: -2rpx; } + +.b-3 { + bottom: 3rpx; } + +.b--3 { + bottom: -3rpx; } + +.b-4 { + bottom: 4rpx; } + +.b--4 { + bottom: -4rpx; } + +.b-5 { + bottom: 5rpx; } + +.b--5 { + bottom: -5rpx; } + +.b-6 { + bottom: 6rpx; } + +.b--6 { + bottom: -6rpx; } + +.b-7 { + bottom: 7rpx; } + +.b--7 { + bottom: -7rpx; } + +.b-8 { + bottom: 8rpx; } + +.b--8 { + bottom: -8rpx; } + +.b-9 { + bottom: 9rpx; } + +.b--9 { + bottom: -9rpx; } + +.b-10 { + bottom: 10rpx; } + +.b--10 { + bottom: -10rpx; } + +.b-11 { + bottom: 11rpx; } + +.b--11 { + bottom: -11rpx; } + +.b-12 { + bottom: 12rpx; } + +.b--12 { + bottom: -12rpx; } + +.b-13 { + bottom: 13rpx; } + +.b--13 { + bottom: -13rpx; } + +.b-14 { + bottom: 14rpx; } + +.b--14 { + bottom: -14rpx; } + +.b-15 { + bottom: 15rpx; } + +.b--15 { + bottom: -15rpx; } + +.b-16 { + bottom: 16rpx; } + +.b--16 { + bottom: -16rpx; } + +.b-17 { + bottom: 17rpx; } + +.b--17 { + bottom: -17rpx; } + +.b-18 { + bottom: 18rpx; } + +.b--18 { + bottom: -18rpx; } + +.b-19 { + bottom: 19rpx; } + +.b--19 { + bottom: -19rpx; } + +.b-20 { + bottom: 20rpx; } + +.b--20 { + bottom: -20rpx; } + +.b-21 { + bottom: 21rpx; } + +.b--21 { + bottom: -21rpx; } + +.b-22 { + bottom: 22rpx; } + +.b--22 { + bottom: -22rpx; } + +.b-23 { + bottom: 23rpx; } + +.b--23 { + bottom: -23rpx; } + +.b-24 { + bottom: 24rpx; } + +.b--24 { + bottom: -24rpx; } + +.b-25 { + bottom: 25rpx; } + +.b--25 { + bottom: -25rpx; } + +.b-26 { + bottom: 26rpx; } + +.b--26 { + bottom: -26rpx; } + +.b-27 { + bottom: 27rpx; } + +.b--27 { + bottom: -27rpx; } + +.b-28 { + bottom: 28rpx; } + +.b--28 { + bottom: -28rpx; } + +.b-29 { + bottom: 29rpx; } + +.b--29 { + bottom: -29rpx; } + +.b-30 { + bottom: 30rpx; } + +.b--30 { + bottom: -30rpx; } + +.b-31 { + bottom: 31rpx; } + +.b--31 { + bottom: -31rpx; } + +.b-32 { + bottom: 32rpx; } + +.b--32 { + bottom: -32rpx; } + +.b-33 { + bottom: 33rpx; } + +.b--33 { + bottom: -33rpx; } + +.b-34 { + bottom: 34rpx; } + +.b--34 { + bottom: -34rpx; } + +.b-35 { + bottom: 35rpx; } + +.b--35 { + bottom: -35rpx; } + +.b-36 { + bottom: 36rpx; } + +.b--36 { + bottom: -36rpx; } + +.b-37 { + bottom: 37rpx; } + +.b--37 { + bottom: -37rpx; } + +.b-38 { + bottom: 38rpx; } + +.b--38 { + bottom: -38rpx; } + +.b-39 { + bottom: 39rpx; } + +.b--39 { + bottom: -39rpx; } + +.b-40 { + bottom: 40rpx; } + +.b--40 { + bottom: -40rpx; } + +.b-41 { + bottom: 41rpx; } + +.b--41 { + bottom: -41rpx; } + +.b-42 { + bottom: 42rpx; } + +.b--42 { + bottom: -42rpx; } + +.b-43 { + bottom: 43rpx; } + +.b--43 { + bottom: -43rpx; } + +.b-44 { + bottom: 44rpx; } + +.b--44 { + bottom: -44rpx; } + +.b-45 { + bottom: 45rpx; } + +.b--45 { + bottom: -45rpx; } + +.b-46 { + bottom: 46rpx; } + +.b--46 { + bottom: -46rpx; } + +.b-47 { + bottom: 47rpx; } + +.b--47 { + bottom: -47rpx; } + +.b-48 { + bottom: 48rpx; } + +.b--48 { + bottom: -48rpx; } + +.b-49 { + bottom: 49rpx; } + +.b--49 { + bottom: -49rpx; } + +.b-50 { + bottom: 50rpx; } + +.b--50 { + bottom: -50rpx; } + +.b-n1 { + bottom: 4rpx; } + +.b--n1 { + bottom: -4rpx; } + +.b-n2 { + bottom: 8rpx; } + +.b--n2 { + bottom: -8rpx; } + +.b-n3 { + bottom: 12rpx; } + +.b--n3 { + bottom: -12rpx; } + +.b-n4 { + bottom: 16rpx; } + +.b--n4 { + bottom: -16rpx; } + +.b-n5 { + bottom: 20rpx; } + +.b--n5 { + bottom: -20rpx; } + +.b-n6 { + bottom: 24rpx; } + +.b--n6 { + bottom: -24rpx; } + +.b-n7 { + bottom: 28rpx; } + +.b--n7 { + bottom: -28rpx; } + +.b-n8 { + bottom: 32rpx; } + +.b--n8 { + bottom: -32rpx; } + +.b-n9 { + bottom: 36rpx; } + +.b--n9 { + bottom: -36rpx; } + +.b-n10 { + bottom: 40rpx; } + +.b--n10 { + bottom: -40rpx; } + +.b-n11 { + bottom: 44rpx; } + +.b--n11 { + bottom: -44rpx; } + +.b-n12 { + bottom: 48rpx; } + +.b--n12 { + bottom: -48rpx; } + +.b-n13 { + bottom: 52rpx; } + +.b--n13 { + bottom: -52rpx; } + +.b-n14 { + bottom: 56rpx; } + +.b--n14 { + bottom: -56rpx; } + +.b-n15 { + bottom: 60rpx; } + +.b--n15 { + bottom: -60rpx; } + +.b-n16 { + bottom: 64rpx; } + +.b--n16 { + bottom: -64rpx; } + +.b-n17 { + bottom: 68rpx; } + +.b--n17 { + bottom: -68rpx; } + +.b-n18 { + bottom: 72rpx; } + +.b--n18 { + bottom: -72rpx; } + +.b-n19 { + bottom: 76rpx; } + +.b--n19 { + bottom: -76rpx; } + +.b-n20 { + bottom: 80rpx; } + +.b--n20 { + bottom: -80rpx; } + +.b-n21 { + bottom: 84rpx; } + +.b--n21 { + bottom: -84rpx; } + +.b-n22 { + bottom: 88rpx; } + +.b--n22 { + bottom: -88rpx; } + +.b-n23 { + bottom: 92rpx; } + +.b--n23 { + bottom: -92rpx; } + +.b-n24 { + bottom: 96rpx; } + +.b--n24 { + bottom: -96rpx; } + +.b-n25 { + bottom: 100rpx; } + +.b--n25 { + bottom: -100rpx; } + +.l-0 { + left: 0rpx; } + +.l--0 { + left: -0rpx; } + +.l-1 { + left: 1rpx; } + +.l--1 { + left: -1rpx; } + +.l-2 { + left: 2rpx; } + +.l--2 { + left: -2rpx; } + +.l-3 { + left: 3rpx; } + +.l--3 { + left: -3rpx; } + +.l-4 { + left: 4rpx; } + +.l--4 { + left: -4rpx; } + +.l-5 { + left: 5rpx; } + +.l--5 { + left: -5rpx; } + +.l-6 { + left: 6rpx; } + +.l--6 { + left: -6rpx; } + +.l-7 { + left: 7rpx; } + +.l--7 { + left: -7rpx; } + +.l-8 { + left: 8rpx; } + +.l--8 { + left: -8rpx; } + +.l-9 { + left: 9rpx; } + +.l--9 { + left: -9rpx; } + +.l-10 { + left: 10rpx; } + +.l--10 { + left: -10rpx; } + +.l-11 { + left: 11rpx; } + +.l--11 { + left: -11rpx; } + +.l-12 { + left: 12rpx; } + +.l--12 { + left: -12rpx; } + +.l-13 { + left: 13rpx; } + +.l--13 { + left: -13rpx; } + +.l-14 { + left: 14rpx; } + +.l--14 { + left: -14rpx; } + +.l-15 { + left: 15rpx; } + +.l--15 { + left: -15rpx; } + +.l-16 { + left: 16rpx; } + +.l--16 { + left: -16rpx; } + +.l-17 { + left: 17rpx; } + +.l--17 { + left: -17rpx; } + +.l-18 { + left: 18rpx; } + +.l--18 { + left: -18rpx; } + +.l-19 { + left: 19rpx; } + +.l--19 { + left: -19rpx; } + +.l-20 { + left: 20rpx; } + +.l--20 { + left: -20rpx; } + +.l-21 { + left: 21rpx; } + +.l--21 { + left: -21rpx; } + +.l-22 { + left: 22rpx; } + +.l--22 { + left: -22rpx; } + +.l-23 { + left: 23rpx; } + +.l--23 { + left: -23rpx; } + +.l-24 { + left: 24rpx; } + +.l--24 { + left: -24rpx; } + +.l-25 { + left: 25rpx; } + +.l--25 { + left: -25rpx; } + +.l-26 { + left: 26rpx; } + +.l--26 { + left: -26rpx; } + +.l-27 { + left: 27rpx; } + +.l--27 { + left: -27rpx; } + +.l-28 { + left: 28rpx; } + +.l--28 { + left: -28rpx; } + +.l-29 { + left: 29rpx; } + +.l--29 { + left: -29rpx; } + +.l-30 { + left: 30rpx; } + +.l--30 { + left: -30rpx; } + +.l-31 { + left: 31rpx; } + +.l--31 { + left: -31rpx; } + +.l-32 { + left: 32rpx; } + +.l--32 { + left: -32rpx; } + +.l-33 { + left: 33rpx; } + +.l--33 { + left: -33rpx; } + +.l-34 { + left: 34rpx; } + +.l--34 { + left: -34rpx; } + +.l-35 { + left: 35rpx; } + +.l--35 { + left: -35rpx; } + +.l-36 { + left: 36rpx; } + +.l--36 { + left: -36rpx; } + +.l-37 { + left: 37rpx; } + +.l--37 { + left: -37rpx; } + +.l-38 { + left: 38rpx; } + +.l--38 { + left: -38rpx; } + +.l-39 { + left: 39rpx; } + +.l--39 { + left: -39rpx; } + +.l-40 { + left: 40rpx; } + +.l--40 { + left: -40rpx; } + +.l-41 { + left: 41rpx; } + +.l--41 { + left: -41rpx; } + +.l-42 { + left: 42rpx; } + +.l--42 { + left: -42rpx; } + +.l-43 { + left: 43rpx; } + +.l--43 { + left: -43rpx; } + +.l-44 { + left: 44rpx; } + +.l--44 { + left: -44rpx; } + +.l-45 { + left: 45rpx; } + +.l--45 { + left: -45rpx; } + +.l-46 { + left: 46rpx; } + +.l--46 { + left: -46rpx; } + +.l-47 { + left: 47rpx; } + +.l--47 { + left: -47rpx; } + +.l-48 { + left: 48rpx; } + +.l--48 { + left: -48rpx; } + +.l-49 { + left: 49rpx; } + +.l--49 { + left: -49rpx; } + +.l-50 { + left: 50rpx; } + +.l--50 { + left: -50rpx; } + +.l-n1 { + left: 4rpx; } + +.l--n1 { + left: -4rpx; } + +.l-n2 { + left: 8rpx; } + +.l--n2 { + left: -8rpx; } + +.l-n3 { + left: 12rpx; } + +.l--n3 { + left: -12rpx; } + +.l-n4 { + left: 16rpx; } + +.l--n4 { + left: -16rpx; } + +.l-n5 { + left: 20rpx; } + +.l--n5 { + left: -20rpx; } + +.l-n6 { + left: 24rpx; } + +.l--n6 { + left: -24rpx; } + +.l-n7 { + left: 28rpx; } + +.l--n7 { + left: -28rpx; } + +.l-n8 { + left: 32rpx; } + +.l--n8 { + left: -32rpx; } + +.l-n9 { + left: 36rpx; } + +.l--n9 { + left: -36rpx; } + +.l-n10 { + left: 40rpx; } + +.l--n10 { + left: -40rpx; } + +.l-n11 { + left: 44rpx; } + +.l--n11 { + left: -44rpx; } + +.l-n12 { + left: 48rpx; } + +.l--n12 { + left: -48rpx; } + +.l-n13 { + left: 52rpx; } + +.l--n13 { + left: -52rpx; } + +.l-n14 { + left: 56rpx; } + +.l--n14 { + left: -56rpx; } + +.l-n15 { + left: 60rpx; } + +.l--n15 { + left: -60rpx; } + +.l-n16 { + left: 64rpx; } + +.l--n16 { + left: -64rpx; } + +.l-n17 { + left: 68rpx; } + +.l--n17 { + left: -68rpx; } + +.l-n18 { + left: 72rpx; } + +.l--n18 { + left: -72rpx; } + +.l-n19 { + left: 76rpx; } + +.l--n19 { + left: -76rpx; } + +.l-n20 { + left: 80rpx; } + +.l--n20 { + left: -80rpx; } + +.l-n21 { + left: 84rpx; } + +.l--n21 { + left: -84rpx; } + +.l-n22 { + left: 88rpx; } + +.l--n22 { + left: -88rpx; } + +.l-n23 { + left: 92rpx; } + +.l--n23 { + left: -92rpx; } + +.l-n24 { + left: 96rpx; } + +.l--n24 { + left: -96rpx; } + +.l-n25 { + left: 100rpx; } + +.l--n25 { + left: -100rpx; } + +.grid { + display: grid !important; } + +.grid-col-1 { + grid-template-columns: repeat(1, 1fr); } + +.grid-col-2 { + grid-template-columns: repeat(2, 1fr); } + +.grid-col-3 { + grid-template-columns: repeat(3, 1fr); } + +.grid-col-4 { + grid-template-columns: repeat(4, 1fr); } + +.grid-col-5 { + grid-template-columns: repeat(5, 1fr); } + +.grid-col-6 { + grid-template-columns: repeat(6, 1fr); } + +.grid-col-7 { + grid-template-columns: repeat(7, 1fr); } + +.grid-col-8 { + grid-template-columns: repeat(8, 1fr); } + +.grid-col-9 { + grid-template-columns: repeat(9, 1fr); } + +.grid-col-10 { + grid-template-columns: repeat(10, 1fr); } + +.grid-col-11 { + grid-template-columns: repeat(11, 1fr); } + +.gap-1 { + gap: 2rpx; } + +.gap-col-1 { + grid-column-gap: 2rpx; } + +.gap-row-1 { + grid-row-gap: 2rpx; } + +.gap-2 { + gap: 4rpx; } + +.gap-col-2 { + grid-column-gap: 4rpx; } + +.gap-row-2 { + grid-row-gap: 4rpx; } + +.gap-3 { + gap: 6rpx; } + +.gap-col-3 { + grid-column-gap: 6rpx; } + +.gap-row-3 { + grid-row-gap: 6rpx; } + +.gap-4 { + gap: 8rpx; } + +.gap-col-4 { + grid-column-gap: 8rpx; } + +.gap-row-4 { + grid-row-gap: 8rpx; } + +.gap-5 { + gap: 10rpx; } + +.gap-col-5 { + grid-column-gap: 10rpx; } + +.gap-row-5 { + grid-row-gap: 10rpx; } + +.gap-6 { + gap: 12rpx; } + +.gap-col-6 { + grid-column-gap: 12rpx; } + +.gap-row-6 { + grid-row-gap: 12rpx; } + +.gap-7 { + gap: 14rpx; } + +.gap-col-7 { + grid-column-gap: 14rpx; } + +.gap-row-7 { + grid-row-gap: 14rpx; } + +.gap-8 { + gap: 16rpx; } + +.gap-col-8 { + grid-column-gap: 16rpx; } + +.gap-row-8 { + grid-row-gap: 16rpx; } + +.gap-9 { + gap: 18rpx; } + +.gap-col-9 { + grid-column-gap: 18rpx; } + +.gap-row-9 { + grid-row-gap: 18rpx; } + +.gap-10 { + gap: 20rpx; } + +.gap-col-10 { + grid-column-gap: 20rpx; } + +.gap-row-10 { + grid-row-gap: 20rpx; } + +.gap-11 { + gap: 22rpx; } + +.gap-col-11 { + grid-column-gap: 22rpx; } + +.gap-row-11 { + grid-row-gap: 22rpx; } + +.gap-12 { + gap: 24rpx; } + +.gap-col-12 { + grid-column-gap: 24rpx; } + +.gap-row-12 { + grid-row-gap: 24rpx; } + +.gap-13 { + gap: 26rpx; } + +.gap-col-13 { + grid-column-gap: 26rpx; } + +.gap-row-13 { + grid-row-gap: 26rpx; } + +.gap-14 { + gap: 28rpx; } + +.gap-col-14 { + grid-column-gap: 28rpx; } + +.gap-row-14 { + grid-row-gap: 28rpx; } + +.gap-15 { + gap: 30rpx; } + +.gap-col-15 { + grid-column-gap: 30rpx; } + +.gap-row-15 { + grid-row-gap: 30rpx; } + +.gap-16 { + gap: 32rpx; } + +.gap-col-16 { + grid-column-gap: 32rpx; } + +.gap-row-16 { + grid-row-gap: 32rpx; } + +.gap-17 { + gap: 34rpx; } + +.gap-col-17 { + grid-column-gap: 34rpx; } + +.gap-row-17 { + grid-row-gap: 34rpx; } + +.gap-18 { + gap: 36rpx; } + +.gap-col-18 { + grid-column-gap: 36rpx; } + +.gap-row-18 { + grid-row-gap: 36rpx; } + +.gap-19 { + gap: 38rpx; } + +.gap-col-19 { + grid-column-gap: 38rpx; } + +.gap-row-19 { + grid-row-gap: 38rpx; } + +.gap-20 { + gap: 40rpx; } + +.gap-col-20 { + grid-column-gap: 40rpx; } + +.gap-row-20 { + grid-row-gap: 40rpx; } + +.gap-21 { + gap: 42rpx; } + +.gap-col-21 { + grid-column-gap: 42rpx; } + +.gap-row-21 { + grid-row-gap: 42rpx; } + +.gap-22 { + gap: 44rpx; } + +.gap-col-22 { + grid-column-gap: 44rpx; } + +.gap-row-22 { + grid-row-gap: 44rpx; } + +.gap-23 { + gap: 46rpx; } + +.gap-col-23 { + grid-column-gap: 46rpx; } + +.gap-row-23 { + grid-row-gap: 46rpx; } + +.gap-24 { + gap: 48rpx; } + +.gap-col-24 { + grid-column-gap: 48rpx; } + +.gap-row-24 { + grid-row-gap: 48rpx; } + +.gap-25 { + gap: 50rpx; } + +.gap-col-25 { + grid-column-gap: 50rpx; } + +.gap-row-25 { + grid-row-gap: 50rpx; } + +.flex { + display: flex !important; } + +.flex-col { + flex-direction: column !important; } + +.flex-wrap { + flex-flow: row wrap !important; } + +/* #ifndef APP-PLUS-NVUE */ +.flex-shrink { + flex-shrink: 0 !important; } + +/* #endif */ +.flex-row { + flex-direction: row !important; } + +.flex-reverse { + flex-direction: row-reverse !important; } + +.flex-row-top-start { + justify-content: flex-start !important; + align-items: flex-start !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-top-center { + justify-content: center !important; + align-items: flex-start !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-top-end { + justify-content: flex-end !important; + align-items: flex-start !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-center-start { + justify-content: flex-start !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-center-center { + justify-content: center !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-center-end { + justify-content: flex-end !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-bottom-start { + justify-content: flex-start !important; + align-items: flex-end !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-bottom-center { + justify-content: center !important; + align-items: flex-end !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-bottom-end { + justify-content: flex-end !important; + align-items: flex-end !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-center-between { + justify-content: space-between !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-top-start { + justify-content: flex-start !important; + align-items: flex-start !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-top-center { + justify-content: flex-start !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-top-end { + justify-content: flex-start !important; + align-items: flex-end !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-center-start { + justify-content: center !important; + align-items: flex-start !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-center-center { + justify-content: center !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-center-end { + justify-content: center !important; + align-items: flex-end !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-bottom-start { + justify-content: flex-end !important; + align-items: flex-start !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-bottom-center { + justify-content: flex-end !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-col-bottom-end { + justify-content: flex-end !important; + align-items: flex-end !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-start { + justify-content: flex-start !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-end { + justify-content: flex-end !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-center { + justify-content: center !important; + align-items: center !important; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-between { + justify-content: space-between; } + +.flex-col-full { + flex-direction: column; + align-items: stretch; } + +.flex-around { + justify-content: space-around; } + +.flex-row-baseline-start { + justify-content: flex-start !important; + align-items: baseline !important; + align-content: center; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-baseline-center { + justify-content: center !important; + align-items: baseline !important; + align-content: center; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-row-baseline-end { + justify-content: flex-end !important; + align-items: baseline !important; + align-content: center; + /* #ifndef APP-PLUS-NVUE */ + align-content: center; + /* #endif */ + display: flex !important; } + +.flex-0 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 0 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 0; + /* #endif */ } + +.flex-1 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 1 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 1; + /* #endif */ } + +.flex-2 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 2 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 2; + /* #endif */ } + +.flex-3 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 3 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 3; + /* #endif */ } + +.flex-4 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 4 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 4; + /* #endif */ } + +.flex-5 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 5 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 5; + /* #endif */ } + +.flex-6 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 6 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 6; + /* #endif */ } + +.flex-7 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 7 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 7; + /* #endif */ } + +.flex-8 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 8 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 8; + /* #endif */ } + +.flex-9 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 9 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 9; + /* #endif */ } + +.flex-10 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 10 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 10; + /* #endif */ } + +.flex-11 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 11 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 11; + /* #endif */ } + +.flex-12 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 12 !important; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 12; + /* #endif */ } + +.text-red { + color: #f44336 !important; } + +.red { + background-color: #f44336; } + +.text-pink { + color: #e91e63 !important; } + +.pink { + background-color: #e91e63; } + +.text-purple { + color: #9c27b0 !important; } + +.purple { + background-color: #9c27b0; } + +.text-deep-purple { + color: #673ab7 !important; } + +.deep-purple { + background-color: #673ab7; } + +.text-indigo { + color: #3f51b5 !important; } + +.indigo { + background-color: #3f51b5; } + +.text-blue { + color: #2196f3 !important; } + +.blue { + background-color: #2196f3; } + +.text-light-blue { + color: #03a9f4 !important; } + +.light-blue { + background-color: #03a9f4; } + +.text-cyan { + color: #00bcd4 !important; } + +.cyan { + background-color: #00bcd4; } + +.text-teal { + color: #009688 !important; } + +.teal { + background-color: #009688; } + +.text-green { + color: #4caf50 !important; } + +.green { + background-color: #4caf50; } + +.text-light-green { + color: #8bc34a !important; } + +.light-green { + background-color: #8bc34a; } + +.text-lime { + color: #cddc39 !important; } + +.lime { + background-color: #cddc39; } + +.text-yellow { + color: #ffeb3b !important; } + +.yellow { + background-color: #ffeb3b; } + +.text-amber { + color: #ffc107 !important; } + +.amber { + background-color: #ffc107; } + +.text-orange { + color: #ff9800 !important; } + +.orange { + background-color: #ff9800; } + +.text-deep-orange { + color: #ff5722 !important; } + +.deep-orange { + background-color: #ff5722; } + +.text-brown { + color: #795548 !important; } + +.brown { + background-color: #795548; } + +.text-blue-grey { + color: #607d8b !important; } + +.blue-grey { + background-color: #607d8b; } + +.text-grey { + color: #9e9e9e !important; } + +.grey { + background-color: #9e9e9e; } + +.text-black { + color: #000000 !important; } + +.black { + background-color: #000000; } + +.text-white { + color: #ffffff !important; } + +.white { + background-color: #ffffff; } + +.text-lighten-5 { + color: #fafafa !important; } + +.lighten-5 { + background-color: #fafafa; } + +.text-lighten-4 { + color: #f5f5f5 !important; } + +.lighten-4 { + background-color: #f5f5f5; } + +.text-lighten-3 { + color: #eeeeee !important; } + +.lighten-3 { + background-color: #eeeeee; } + +.text-lighten-2 { + color: #e0e0e0 !important; } + +.lighten-2 { + background-color: #e0e0e0; } + +.text-lighten-1 { + color: #bdbdbd !important; } + +.lighten-1 { + background-color: #bdbdbd; } + +.text-darken-1 { + color: #757575 !important; } + +.darken-1 { + background-color: #757575; } + +.text-darken-2 { + color: #616161 !important; } + +.darken-2 { + background-color: #616161; } + +.text-darken-3 { + color: #424242 !important; } + +.darken-3 { + background-color: #424242; } + +.text-darken-4 { + color: #212121 !important; } + +.darken-4 { + background-color: #212121; } + +.text-darken-5 { + color: #131313 !important; } + +.darken-5 { + background-color: #131313; } + +.text-darken-6 { + color: #0a0a0a !important; } + +.darken-6 { + background-color: #0a0a0a; } diff --git a/uni_modules/UniDevTools/src/tmui/scss/noNvue.css.map b/uni_modules/UniDevTools/src/tmui/scss/noNvue.css.map new file mode 100644 index 0000000..608dfce --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/noNvue.css.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "sources": [ + "noNvue.css", + "noNvue.scss" + ], + "names": [], + "mappings": "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AA;ADgfJ;;ACrfE;EAKE,yCAAA;ADofJ;;ACzfE;EAKE,yCAAA;ADwfJ;;AC7fE;EAKE,yCAAA;AD4fJ;;ACjgBE;EAKE,yCAAA;ADggBJ;;ACrgBE;EAKE,yCAAA;ADogBJ;;ACzgBE;EAKE,yCAAA;ADwgBJ;;AC7gBE;EAKE,yCAAA;AD4gBJ;;ACjhBE;EAKE,yCAAA;ADghBJ;;ACrhBE;EAKE,yCAAA;ADohBJ;;ACzhBE;EAKE,yCAAA;ADwhBJ;;AC7hBE;EAKE,yCAAA;AD4hBJ;;ACjiBE;EAKE,yCAAA;ADgiBJ;;ACriBE;EAKE,yCAAA;ADoiBJ;;ACziBE;EAKE,yCAAA;ADwiBJ;;AC7iBE;EAKE,yCAAA;AD4iBJ;;ACjjBE;EAKE,yCAAA;ADgjBJ;;ACrjBE;EAKE,yCAAA;ADojBJ;;ACzjBE;EAKE,yCAAA;ADwjBJ;;AC7jBE;EAKE,yCAAA;AD4jBJ;;ACjkBE;EAKE,yCAAA;ADgkBJ;;ACrkBE;EAKE,yCAAA;ADokBJ;;ACzkBE;EAKE,yCAAA;ADwkBJ;;AC7kBE;EAKE,0CAAA;AD4kBJ;;ACjlBE;EAQE,0CAAA;AD6kBJ;;ACrlBE;EAQE,0CAAA;ADilBJ;;ACzlBE;EAQE,0CAAA;ADqlBJ;;AC7lBE;EAQE,2CAAA;ADylBJ;;ACjmBE;EAQE,2CAAA;AD6lBJ;;ACrmBE;EAQE,2CAAA;ADimBJ;;ACzmBE;EAQE,2CAAA;ADqmBJ;;AC7mBE;EAQE,2CAAA;ADymBJ;;ACjnBE;EAQE,2CAAA;AD6mBJ;;ACrnBE;EAQE,2CAAA;ADinBJ;;ACznBE;EAQE,2CAAA;ADqnBJ;;AC7nBE;EAQE,2CAAA;ADynBJ;;ACjoBE;EAQE,2CAAA;AD6nBJ;;ACroBE;EAQE,2CAAA;ADioBJ;;ACzoBE;EAQE,2CAAA;ADqoBJ;;AC7oBE;EAQE,2CAAA;ADyoBJ;;ACjpBE;EAQE,2CAAA;AD6oBJ;;ACrpBE;EAQE,2CAAA;ADipBJ;;ACzpBE;EAQE,2CAAA;ADqpBJ;;AC7pBE;EAQE,2CAAA;ADypBJ;;ACjqBE;EAQE,2CAAA;AD6pBJ;;ACrqBE;EAQE,2CAAA;ADiqBJ;;ACzqBE;EAQE,2CAAA;ADqqBJ;;AC7qBE;EAQE,2CAAA;ADyqBJ;;ACjrBE;EAQE,2CAAA;AD6qBJ;;ACrrBE;EAQE,4CAAA;ADirBJ;;ACzrBE;EAWE,2CAAA;ADkrBJ;;AC7rBE;EAWE,2CAAA;ADsrBJ;;ACjsBE;EAWE,2CAAA;AD0rBJ;;ACrsBE;EAWE,4CAAA;AD8rBJ;;ACzsBE;EAWE,4CAAA;ADksBJ;;AC7sBE;EAWE,4CAAA;ADssBJ;;ACjtBE;EAWE,4CAAA;AD0sBJ;;ACrtBE;EAWE,4CAAA;AD8sBJ;;ACztBE;EAWE,4CAAA;ADktBJ;;AC7tBE;EAWE,4CAAA;ADstBJ;;ACjuBE;EAWE,4CAAA;AD0tBJ;;ACruBE;EAWE,4CAAA;AD8tBJ;;ACzuBE;EAWE,4CAAA;ADkuBJ;;AC7uBE;EAWE,4CAAA;ADsuBJ;;ACjvBE;EAWE,4CAAA;AD0uBJ;;ACrvBE;EAWE,4CAAA;AD8uBJ;;ACzvBE;EAWE,4CAAA;ADkvBJ;;AC7vBE;EAWE,4CAAA;ADsvBJ;;ACjwBE;EAWE,4CAAA;AD0vBJ;;ACrwBE;EAWE,4CAAA;AD8vBJ;;ACzwBE;EAWE,4CAAA;ADkwBJ;;AC7wBE;EAWE,4CAAA;ADswBJ;;ACjxBE;EAWE,4CAAA;AD0wBJ;;ACrxBE;EAWE,4CAAA;AD8wBJ;;ACzxBE;EAWE,4CAAA;ADkxBJ;;AC7xBE;EAWE,6CAAA;ADsxBJ;;ACjyBE;EA8BE,8BAAA;ADuwBJ;;ACryBE;EA8BE,8BAAA;AD2wBJ;;ACzyBE;EA8BE,8BAAA;AD+wBJ;;AC7yBE;EA8BE,+BAAA;ADmxBJ;;ACjzBE;EA8BE,+BAAA;ADuxBJ;;ACrzBE;EA8BE,+BAAA;AD2xBJ;;ACzzBE;EA8BE,+BAAA;AD+xBJ;;AC7zBE;EA8BE,+BAAA;ADmyBJ;;ACj0BE;EA8BE,+BAAA;ADuyBJ;;ACr0BE;EA8BE,+BAAA;AD2yBJ;;ACz0BE;EA8BE,+BAAA;AD+yBJ;;AC70BE;EA8BE,+BAAA;ADmzBJ;;ACj1BE;EA8BE,+BAAA;ADuzBJ;;ACr1BE;EA8BE,+BAAA;AD2zBJ;;ACz1BE;EA8BE,+BAAA;AD+zBJ;;AC71BE;EA8BE,+BAAA;ADm0BJ;;ACj2BE;EA8BE,+BAAA;ADu0BJ;;ACr2BE;EA8BE,+BAAA;AD20BJ;;ACz2BE;EA8BE,+BAAA;AD+0BJ;;AC72BE;EA8BE,+BAAA;ADm1BJ;;ACj3BE;EA8BE,+BAAA;ADu1BJ;;ACr3BE;EA8BE,+BAAA;AD21BJ;;ACz3BE;EA8BE,+BAAA;AD+1BJ;;AC73BE;EA8BE,+BAAA;ADm2BJ;;ACj4BE;EA8BE,+BAAA;ADu2BJ;;ACr4BE;EA8BE,gCAAA;AD22BJ;;ACz4BE;EAcE,uCAAA;EACA,wCAAA;AD+3BJ;;AC94BE;EAcE,uCAAA;EACA,wCAAA;ADo4BJ;;ACn5BE;EAcE,uCAAA;EACA,wCAAA;ADy4BJ;;ACx5BE;EAcE,wCAAA;EACA,yCAAA;AD84BJ;;AC75BE;EAcE,wCAAA;EACA,yCAAA;ADm5BJ;;ACl6BE;EAcE,wCAAA;EACA,yCAAA;ADw5BJ;;ACv6BE;EAcE,wCAAA;EACA,yCAAA;AD65BJ;;AC56BE;EAcE,wCAAA;EACA,yCAAA;ADk6BJ;;ACj7BE;EAcE,wCAAA;EACA,yCAAA;ADu6BJ;;ACt7BE;EAcE,wCAAA;EACA,yCAAA;AD46BJ;;AC37BE;EAcE,wCAAA;EACA,yCAAA;ADi7BJ;;ACh8BE;EAcE,wCAAA;EACA,yCAAA;ADs7BJ;;ACr8BE;EAcE,wCAAA;EACA,yCAAA;AD27BJ;;AC18BE;EAcE,wCAAA;EACA,yCAAA;ADg8BJ;;AC/8BE;EAcE,wCAAA;EACA,yCAAA;ADq8BJ;;ACp9BE;EAcE,wCAAA;EACA,yCAAA;AD08BJ;;ACz9BE;EAcE,wCAAA;EACA,yCAAA;AD+8BJ;;AC99BE;EAcE,wCAAA;EACA,yCAAA;ADo9BJ;;ACn+BE;EAcE,wCAAA;EACA,yCAAA;ADy9BJ;;ACx+BE;EAcE,wCAAA;EACA,yCAAA;AD89BJ;;AC7+BE;EAcE,wCAAA;EACA,yCAAA;ADm+BJ;;ACl/BE;EAcE,wCAAA;EACA,yCAAA;ADw+BJ;;ACv/BE;EAcE,wCAAA;EACA,yCAAA;AD6+BJ;;AC5/BE;EAcE,wCAAA;EACA,yCAAA;ADk/BJ;;ACjgCE;EAcE,wCAAA;EACA,yCAAA;ADu/BJ;;ACtgCE;EAcE,yCAAA;EACA,0CAAA;AD4/BJ;;AC3gCE;EAkBE,0CAAA;EACA,2CAAA;AD6/BJ;;AChhCE;EAkBE,0CAAA;EACA,2CAAA;ADkgCJ;;ACrhCE;EAkBE,0CAAA;EACA,2CAAA;ADugCJ;;AC1hCE;EAkBE,2CAAA;EACA,4CAAA;AD4gCJ;;AC/hCE;EAkBE,2CAAA;EACA,4CAAA;ADihCJ;;ACpiCE;EAkBE,2CAAA;EACA,4CAAA;ADshCJ;;ACziCE;EAkBE,2CAAA;EACA,4CAAA;AD2hCJ;;AC9iCE;EAkBE,2CAAA;EACA,4CAAA;ADgiCJ;;ACnjCE;EAkBE,2CAAA;EACA,4CAAA;ADqiCJ;;ACxjCE;EAkBE,2CAAA;EACA,4CAAA;AD0iCJ;;AC7jCE;EAkBE,2CAAA;EACA,4CAAA;AD+iCJ;;AClkCE;EAkBE,2CAAA;EACA,4CAAA;ADojCJ;;ACvkCE;EAkBE,2CAAA;EACA,4CAAA;ADyjCJ;;AC5kCE;EAkBE,2CAAA;EACA,4CAAA;AD8jCJ;;ACjlCE;EAkBE,2CAAA;EACA,4CAAA;ADmkCJ;;ACtlCE;EAkBE,2CAAA;EACA,4CAAA;ADwkCJ;;AC3lCE;EAkBE,2CAAA;EACA,4CAAA;AD6kCJ;;AChmCE;EAkBE,2CAAA;EACA,4CAAA;ADklCJ;;ACrmCE;EAkBE,2CAAA;EACA,4CAAA;ADulCJ;;AC1mCE;EAkBE,2CAAA;EACA,4CAAA;AD4lCJ;;AC/mCE;EAkBE,2CAAA;EACA,4CAAA;ADimCJ;;ACpnCE;EAkBE,2CAAA;EACA,4CAAA;ADsmCJ;;ACznCE;EAkBE,2CAAA;EACA,4CAAA;AD2mCJ;;AC9nCE;EAkBE,2CAAA;EACA,4CAAA;ADgnCJ;;ACnoCE;EAkBE,2CAAA;EACA,4CAAA;ADqnCJ;;ACxoCE;EAkBE,4CAAA;EACA,6CAAA;AD0nCJ;;AC7oCE;EAsBE,uCAAA;EACA,0CAAA;AD2nCJ;;AClpCE;EAsBE,uCAAA;EACA,0CAAA;ADgoCJ;;ACvpCE;EAsBE,uCAAA;EACA,0CAAA;ADqoCJ;;AC5pCE;EAsBE,wCAAA;EACA,2CAAA;AD0oCJ;;ACjqCE;EAsBE,wCAAA;EACA,2CAAA;AD+oCJ;;ACtqCE;EAsBE,wCAAA;EACA,2CAAA;ADopCJ;;AC3qCE;EAsBE,wCAAA;EACA,2CAAA;ADypCJ;;AChrCE;EAsBE,wCAAA;EACA,2CAAA;AD8pCJ;;ACrrCE;EAsBE,wCAAA;EACA,2CAAA;ADmqCJ;;AC1rCE;EAsBE,wCAAA;EACA,2CAAA;ADwqCJ;;AC/rCE;EAsBE,wCAAA;EACA,2CAAA;AD6qCJ;;ACpsCE;EAsBE,wCAAA;EACA,2CAAA;ADkrCJ;;ACzsCE;EAsBE,wCAAA;EACA,2CAAA;ADurCJ;;AC9sCE;EAsBE,wCAAA;EACA,2CAAA;AD4rCJ;;ACntCE;EAsBE,wCAAA;EACA,2CAAA;ADisCJ;;ACxtCE;EAsBE,wCAAA;EACA,2CAAA;ADssCJ;;AC7tCE;EAsBE,wCAAA;EACA,2CAAA;AD2sCJ;;ACluCE;EAsBE,wCAAA;EACA,2CAAA;ADgtCJ;;ACvuCE;EAsBE,wCAAA;EACA,2CAAA;ADqtCJ;;AC5uCE;EAsBE,wCAAA;EACA,2CAAA;AD0tCJ;;ACjvCE;EAsBE,wCAAA;EACA,2CAAA;AD+tCJ;;ACtvCE;EAsBE,wCAAA;EACA,2CAAA;ADouCJ;;AC3vCE;EAsBE,wCAAA;EACA,2CAAA;ADyuCJ;;AChwCE;EAsBE,wCAAA;EACA,2CAAA;AD8uCJ;;ACrwCE;EAsBE,wCAAA;EACA,2CAAA;ADmvCJ;;AC1wCE;EAsBE,yCAAA;EACA,4CAAA;ADwvCJ;;AC/wCE;EA0BE,wCAAA;EACA,2CAAA;ADyvCJ;;ACpxCE;EA0BE,wCAAA;EACA,2CAAA;AD8vCJ;;ACzxCE;EA0BE,wCAAA;EACA,2CAAA;ADmwCJ;;AC9xCE;EA0BE,yCAAA;EACA,4CAAA;ADwwCJ;;ACnyCE;EA0BE,yCAAA;EACA,4CAAA;AD6wCJ;;ACxyCE;EA0BE,yCAAA;EACA,4CAAA;ADkxCJ;;AC7yCE;EA0BE,yCAAA;EACA,4CAAA;ADuxCJ;;AClzCE;EA0BE,yCAAA;EACA,4CAAA;AD4xCJ;;ACvzCE;EA0BE,yCAAA;EACA,4CAAA;ADiyCJ;;AC5zCE;EA0BE,yCAAA;EACA,4CAAA;ADsyCJ;;ACj0CE;EA0BE,yCAAA;EACA,4CAAA;AD2yCJ;;ACt0CE;EA0BE,yCAAA;EACA,4CAAA;ADgzCJ;;AC30CE;EA0BE,yCAAA;EACA,4CAAA;ADqzCJ;;ACh1CE;EA0BE,yCAAA;EACA,4CAAA;AD0zCJ;;ACr1CE;EA0BE,yCAAA;EACA,4CAAA;AD+zCJ;;AC11CE;EA0BE,yCAAA;EACA,4CAAA;ADo0CJ;;AC/1CE;EA0BE,yCAAA;EACA,4CAAA;ADy0CJ;;ACp2CE;EA0BE,yCAAA;EACA,4CAAA;AD80CJ;;ACz2CE;EA0BE,yCAAA;EACA,4CAAA;ADm1CJ;;AC92CE;EA0BE,yCAAA;EACA,4CAAA;ADw1CJ;;ACn3CE;EA0BE,yCAAA;EACA,4CAAA;AD61CJ;;ACx3CE;EA0BE,yCAAA;EACA,4CAAA;ADk2CJ;;AC73CE;EA0BE,yCAAA;EACA,4CAAA;ADu2CJ;;ACl4CE;EA0BE,yCAAA;EACA,4CAAA;AD42CJ;;ACv4CE;EA0BE,yCAAA;EACA,4CAAA;ADi3CJ;;AC54CE;EA0BE,0CAAA;EACA,6CAAA;ADs3CJ;;AC52CC;EACC,mBAAA;AD+2CF;;ACh3CC;EACC,mBAAA;ADm3CF;;ACp3CC;EACC,mBAAA;ADu3CF;;ACx3CC;EACC,oBAAA;AD23CF;;AC53CC;EACC,oBAAA;AD+3CF;;ACh4CC;EACC,oBAAA;ADm4CF;;ACp4CC;EACC,oBAAA;ADu4CF;;ACx4CC;EACC,oBAAA;AD24CF;;AC54CC;EACC,oBAAA;AD+4CF;;ACh5CC;EACC,oBAAA;ADm5CF;;ACp5CC;EACC,oBAAA;ADu5CF;;ACx5CC;EACC,oBAAA;AD25CF;;AC55CC;EACC,oBAAA;AD+5CF;;ACh6CC;EACC,oBAAA;ADm6CF;;ACp6CC;EACC,oBAAA;ADu6CF;;ACx6CC;EACC,oBAAA;AD26CF;;AC56CC;EACC,oBAAA;AD+6CF;;ACh7CC;EACC,oBAAA;ADm7CF;;ACp7CC;EACC,oBAAA;ADu7CF;;ACx7CC;EACC,oBAAA;AD27CF;;AC57CC;EACC,oBAAA;AD+7CF;;ACh8CC;EACC,oBAAA;ADm8CF;;ACp8CC;EACC,oBAAA;ADu8CF;;ACx8CC;EACC,oBAAA;AD28CF;;AC58CC;EACC,oBAAA;AD+8CF;;ACh9CC;EACC,qBAAA;ADm9CF;;ACp9CC;EACC,qBAAA;ADu9CF;;ACn9CA;EACC,6BAAA;ADs9CD;;ACl9CC;EAKE,UAAA;ADi9CH;;ACt9CC;EAEE,YAAA;ADw9CH;;AC19CC;EAEE,YAAA;AD49CH;;AC99CC;EAEE,YAAA;ADg+CH;;ACl+CC;EAEE,YAAA;ADo+CH;;ACt+CC;EAEE,YAAA;ADw+CH;;AC1+CC;EAEE,YAAA;AD4+CH;;AC9+CC;EAEE,YAAA;ADg/CH;;ACl/CC;EAEE,YAAA;ADo/CH;;ACt/CC;EAEE,YAAA;ADw/CH;;AC1/CC;EAQE,UAAA;ADs/CH;;ACj/CA,0BAAA;AACA;EACC,4CAAA;ADo/CD;;ACj/CC;EACC,4CAAA;ADo/CF;;ACr/CC;EACC,4CAAA;ADw/CF;;ACz/CC;EACC,4CAAA;AD4/CF;;AC7/CC;EACC,4CAAA;ADggDF;;ACjgDC;EACC,4CAAA;ADogDF;;ACrgDC;EACC,6CAAA;ADwgDF;;ACzgDC;EACC,6CAAA;AD4gDF;;AC7gDC;EACC,6CAAA;ADghDF;;ACjhDC;EACC,6CAAA;ADohDF;;ACrhDC;EACC,6CAAA;ADwhDF;;ACzhDC;EACC,6CAAA;AD4hDF;;AC7hDC;EACC,6CAAA;ADgiDF;;ACjiDC;EACC,6CAAA;ADoiDF;;ACriDC;EACC,6CAAA;ADwiDF;;ACziDC;EACC,6CAAA;AD4iDF;;AC7iDC;EACC,6CAAA;ADgjDF;;ACjjDC;EACC,6CAAA;ADojDF;;ACrjDC;EACC,6CAAA;ADwjDF;;ACzjDC;EACC,6CAAA;AD4jDF;;AC7jDC;EACC,6CAAA;ADgkDF;;ACjkDC;EACC,6CAAA;ADokDF;;ACrkDC;EACC,6CAAA;ADwkDF;;ACzkDC;EACC,6CAAA;AD4kDF;;AC7kDC;EACC,6CAAA;ADglDF;;ACjlDC;EACC,6CAAA;ADolDF;;ACrlDC;EACC,6CAAA;ADwlDF;;ACrlDA,WAAA;AAKE;EACC,qCAAA;ADolDH;;ACllDE;EACC,qCAAA;ADqlDH;;ACnlDE;EACC,qCAAA;ADslDH;;ACplDE;EACC,qCAAA;ADulDH;;ACnlDE;EACC,oCAAA;ADslDH;;ACplDE;EACC,oCAAA;ADulDH;;AC3lDE;EACC,oCAAA;AD8lDH;;AC5lDE;EACC,oCAAA;AD+lDH;;ACnmDE;EACC,oCAAA;ADsmDH;;ACpmDE;EACC,oCAAA;ADumDH;;AC3mDE;EACC,oCAAA;AD8mDH;;AC5mDE;EACC,oCAAA;AD+mDH;;ACnnDE;EACC,qCAAA;ADsnDH;;ACpnDE;EACC,qCAAA;ADunDH;;AChnDE;EAKE,6CAAA;AD+mDJ;;AC5mDE;EAKE,0CAAA;AD2mDJ;;ACxnDE;EAKE,6CAAA;ADunDJ;;ACpnDE;EAKE,0CAAA;ADmnDJ;;AChoDE;EAKE,6CAAA;AD+nDJ;;AC5nDE;EAKE,0CAAA;AD2nDJ;;ACxoDE;EAKE,6CAAA;ADuoDJ;;ACpoDE;EAKE,0CAAA;ADmoDJ;;AChpDE;EAKE,8CAAA;AD+oDJ;;AC5oDE;EAKE,2CAAA;AD2oDJ;;ACxpDE;EAKE,8CAAA;ADupDJ;;ACppDE;EAKE,2CAAA;ADmpDJ;;AChqDE;EAKE,8CAAA;AD+pDJ;;AC5pDE;EAKE,2CAAA;AD2pDJ;;ACxqDE;EAKE,8CAAA;ADuqDJ;;ACpqDE;EAKE,2CAAA;ADmqDJ;;AChrDE;EAKE,8CAAA;AD+qDJ;;AC5qDE;EAKE,2CAAA;AD2qDJ;;ACxrDE;EAKE,+CAAA;ADurDJ;;ACprDE;EAKE,4CAAA;ADmrDJ;;AChsDE;EAKE,4CAAA;AD+rDJ;;AC5rDE;EAKE,yCAAA;AD2rDJ;;ACxsDE;EAKE,4CAAA;ADusDJ;;ACpsDE;EAKE,yCAAA;ADmsDJ;;AChtDE;EAKE,4CAAA;AD+sDJ;;AC5sDE;EAKE,yCAAA;AD2sDJ;;ACxtDE;EAKE,4CAAA;ADutDJ;;ACptDE;EAKE,yCAAA;ADmtDJ;;AChuDE;EAKE,6CAAA;AD+tDJ;;AC5tDE;EAKE,0CAAA;AD2tDJ;;ACxuDE;EAKE,+CAAA;ADuuDJ;;ACpuDE;EAKE,4CAAA;ADmuDJ;;AChvDE;EAKE,+CAAA;AD+uDJ;;AC5uDE;EAKE,4CAAA;AD2uDJ;;ACxvDE;EAKE,+CAAA;ADuvDJ;;ACpvDE;EAKE,4CAAA;ADmvDJ;;AChwDE;EAKE,+CAAA;AD+vDJ;;AC5vDE;EAKE,4CAAA;AD2vDJ;;ACxwDE;EAKE,gDAAA;ADuwDJ;;ACpwDE;EAKE,6CAAA;ADmwDJ;;AChxDE;EAEE,wCAAA;ADkxDJ;;AC5wDE;EAEE,qCAAA;AD8wDJ;;ACxxDE;EAEE,wCAAA;AD0xDJ;;ACpxDE;EAEE,qCAAA;ADsxDJ;;AChyDE;EAEE,wCAAA;ADkyDJ;;AC5xDE;EAEE,qCAAA;AD8xDJ;;ACxyDE;EAEE,wCAAA;AD0yDJ;;ACpyDE;EAEE,qCAAA;ADsyDJ;;AChzDE;EAEE,yCAAA;ADkzDJ;;AC5yDE;EAEE,sCAAA;AD8yDJ;;ACjyDG;EACC,aAAA;ADoyDJ;;ACryDG;EACC,aAAA;ADwyDJ;;ACzyDG;EACC,aAAA;AD4yDJ;;AC7yDG;EACC,aAAA;ADgzDJ;;ACjzDG;EACC,aAAA;ADozDJ;;ACrzDG;EACC,aAAA;ADwzDJ;;ACzzDG;EACC,aAAA;AD4zDJ;;AC7zDG;EACC,aAAA;ADg0DJ;;ACj0DG;EACC,aAAA;ADo0DJ;;ACr0DG;EACC,aAAA;ADw0DJ;;ACz0DG;EACC,cAAA;AD40DJ;;AC70DG;EACC,cAAA;ADg1DJ;;ACj1DG;EACC,cAAA;ADo1DJ;;ACr1DG;EACC,cAAA;ADw1DJ;;ACz1DG;EACC,cAAA;AD41DJ;;AC71DG;EACC,cAAA;ADg2DJ;;ACj2DG;EACC,cAAA;ADo2DJ;;ACr2DG;EACC,cAAA;ADw2DJ;;ACz2DG;EACC,cAAA;AD42DJ;;AC72DG;EACC,cAAA;ADg3DJ;;ACj3DG;EACC,cAAA;ADo3DJ;;ACr3DG;EACC,cAAA;ADw3DJ;;ACz3DG;EACC,cAAA;AD43DJ;;AC73DG;EACC,cAAA;ADg4DJ;;ACj4DG;EACC,cAAA;ADo4DJ;;ACr4DG;EACC,cAAA;ADw4DJ;;ACz4DG;EACC,cAAA;AD44DJ;;AC74DG;EACC,cAAA;ADg5DJ;;ACj5DG;EACC,cAAA;ADo5DJ;;ACr5DG;EACC,cAAA;ADw5DJ;;ACz5DG;EACC,cAAA;AD45DJ;;AC75DG;EACC,cAAA;ADg6DJ;;ACj6DG;EACC,cAAA;ADo6DJ;;ACr6DG;EACC,cAAA;ADw6DJ;;ACz6DG;EACC,cAAA;AD46DJ;;AC76DG;EACC,cAAA;ADg7DJ;;ACj7DG;EACC,cAAA;ADo7DJ;;ACr7DG;EACC,cAAA;ADw7DJ;;ACz7DG;EACC,cAAA;AD47DJ;;AC77DG;EACC,cAAA;ADg8DJ;;ACj8DG;EACC,cAAA;ADo8DJ;;ACr8DG;EACC,cAAA;ADw8DJ;;ACz8DG;EACC,cAAA;AD48DJ;;AC78DG;EACC,cAAA;ADg9DJ;;ACj9DG;EACC,cAAA;ADo9DJ;;ACr9DG;EACC,cAAA;ADw9DJ;;ACz9DG;EACC,cAAA;AD49DJ;;AC79DG;EACC,cAAA;ADg+DJ;;ACj+DG;EACC,cAAA;ADo+DJ;;ACr+DG;EACC,cAAA;ADw+DJ;;ACz+DG;EACC,cAAA;AD4+DJ;;AC19DG;EACC,aAAA;AD69DJ;;AC99DG;EACC,aAAA;ADi+DJ;;ACl+DG;EACC,cAAA;ADq+DJ;;ACt+DG;EACC,cAAA;ADy+DJ;;AC1+DG;EACC,cAAA;AD6+DJ;;AC9+DG;EACC,cAAA;ADi/DJ;;ACl/DG;EACC,cAAA;ADq/DJ;;ACt/DG;EACC,cAAA;ADy/DJ;;AC1/DG;EACC,cAAA;AD6/DJ;;AC9/DG;EACC,cAAA;ADigEJ;;AClgEG;EACC,cAAA;ADqgEJ;;ACtgEG;EACC,cAAA;ADygEJ;;AC1gEG;EACC,cAAA;AD6gEJ;;AC9gEG;EACC,cAAA;ADihEJ;;AClhEG;EACC,cAAA;ADqhEJ;;ACthEG;EACC,cAAA;ADyhEJ;;AC1hEG;EACC,cAAA;AD6hEJ;;AC9hEG;EACC,cAAA;ADiiEJ;;ACliEG;EACC,cAAA;ADqiEJ;;ACtiEG;EACC,cAAA;ADyiEJ;;AC1iEG;EACC,cAAA;AD6iEJ;;AC9iEG;EACC,cAAA;ADijEJ;;ACljEG;EACC,cAAA;ADqjEJ;;ACtjEG;EACC,cAAA;ADyjEJ;;AC1jEG;EACC,eAAA;AD6jEJ;;ACjlEG;EACC,iBAAA;ADolEJ;;ACrlEG;EACC,iBAAA;ADwlEJ;;ACzlEG;EACC,iBAAA;AD4lEJ;;AC7lEG;EACC,iBAAA;ADgmEJ;;ACjmEG;EACC,iBAAA;ADomEJ;;ACrmEG;EACC,iBAAA;ADwmEJ;;ACzmEG;EACC,iBAAA;AD4mEJ;;AC7mEG;EACC,iBAAA;ADgnEJ;;ACjnEG;EACC,iBAAA;ADonEJ;;ACrnEG;EACC,iBAAA;ADwnEJ;;ACznEG;EACC,kBAAA;AD4nEJ;;AC7nEG;EACC,kBAAA;ADgoEJ;;ACjoEG;EACC,kBAAA;ADooEJ;;ACroEG;EACC,kBAAA;ADwoEJ;;ACzoEG;EACC,kBAAA;AD4oEJ;;AC7oEG;EACC,kBAAA;ADgpEJ;;ACjpEG;EACC,kBAAA;ADopEJ;;ACrpEG;EACC,kBAAA;ADwpEJ;;ACzpEG;EACC,kBAAA;AD4pEJ;;AC7pEG;EACC,kBAAA;ADgqEJ;;ACjqEG;EACC,kBAAA;ADoqEJ;;ACrqEG;EACC,kBAAA;ADwqEJ;;ACzqEG;EACC,kBAAA;AD4qEJ;;AC7qEG;EACC,kBAAA;ADgrEJ;;ACjrEG;EACC,kBAAA;ADorEJ;;ACrrEG;EACC,kBAAA;ADwrEJ;;ACzrEG;EACC,kBAAA;AD4rEJ;;AC7rEG;EACC,kBAAA;ADgsEJ;;ACjsEG;EACC,kBAAA;ADosEJ;;ACrsEG;EACC,kBAAA;ADwsEJ;;ACzsEG;EACC,kBAAA;AD4sEJ;;AC7sEG;EACC,kBAAA;ADgtEJ;;ACjtEG;EACC,kBAAA;ADotEJ;;ACrtEG;EACC,kBAAA;ADwtEJ;;ACztEG;EACC,kBAAA;AD4tEJ;;AC7tEG;EACC,kBAAA;ADguEJ;;ACjuEG;EACC,kBAAA;ADouEJ;;ACruEG;EACC,kBAAA;ADwuEJ;;ACzuEG;EACC,kBAAA;AD4uEJ;;AC7uEG;EACC,kBAAA;ADgvEJ;;ACjvEG;EACC,kBAAA;ADovEJ;;ACrvEG;EACC,kBAAA;ADwvEJ;;ACzvEG;EACC,kBAAA;AD4vEJ;;AC7vEG;EACC,kBAAA;ADgwEJ;;ACjwEG;EACC,kBAAA;ADowEJ;;ACrwEG;EACC,kBAAA;ADwwEJ;;ACzwEG;EACC,kBAAA;AD4wEJ;;AC7wEG;EACC,kBAAA;ADgxEJ;;ACjxEG;EACC,kBAAA;ADoxEJ;;ACrxEG;EACC,kBAAA;ADwxEJ;;ACzxEG;EACC,kBAAA;AD4xEJ;;AC1wEG;EACC,iBAAA;AD6wEJ;;AC9wEG;EACC,iBAAA;ADixEJ;;AClxEG;EACC,kBAAA;ADqxEJ;;ACtxEG;EACC,kBAAA;ADyxEJ;;AC1xEG;EACC,kBAAA;AD6xEJ;;AC9xEG;EACC,kBAAA;ADiyEJ;;AClyEG;EACC,kBAAA;ADqyEJ;;ACtyEG;EACC,kBAAA;ADyyEJ;;AC1yEG;EACC,kBAAA;AD6yEJ;;AC9yEG;EACC,kBAAA;ADizEJ;;AClzEG;EACC,kBAAA;ADqzEJ;;ACtzEG;EACC,kBAAA;ADyzEJ;;AC1zEG;EACC,kBAAA;AD6zEJ;;AC9zEG;EACC,kBAAA;ADi0EJ;;ACl0EG;EACC,kBAAA;ADq0EJ;;ACt0EG;EACC,kBAAA;ADy0EJ;;AC10EG;EACC,kBAAA;AD60EJ;;AC90EG;EACC,kBAAA;ADi1EJ;;ACl1EG;EACC,kBAAA;ADq1EJ;;ACt1EG;EACC,kBAAA;ADy1EJ;;AC11EG;EACC,kBAAA;AD61EJ;;AC91EG;EACC,kBAAA;ADi2EJ;;ACl2EG;EACC,kBAAA;ADq2EJ;;ACt2EG;EACC,kBAAA;ADy2EJ;;AC12EG;EACC,mBAAA;AD62EJ;;ACj4EG;EACC,mBAAA;ADo4EJ;;ACr4EG;EACC,mBAAA;ADw4EJ;;ACz4EG;EACC,mBAAA;AD44EJ;;AC74EG;EACC,mBAAA;ADg5EJ;;ACj5EG;EACC,mBAAA;ADo5EJ;;ACr5EG;EACC,mBAAA;ADw5EJ;;ACz5EG;EACC,mBAAA;AD45EJ;;AC75EG;EACC,mBAAA;ADg6EJ;;ACj6EG;EACC,mBAAA;ADo6EJ;;ACr6EG;EACC,mBAAA;ADw6EJ;;ACz6EG;EACC,oBAAA;AD46EJ;;AC76EG;EACC,oBAAA;ADg7EJ;;ACj7EG;EACC,oBAAA;ADo7EJ;;ACr7EG;EACC,oBAAA;ADw7EJ;;ACz7EG;EACC,oBAAA;AD47EJ;;AC77EG;EACC,oBAAA;ADg8EJ;;ACj8EG;EACC,oBAAA;ADo8EJ;;ACr8EG;EACC,oBAAA;ADw8EJ;;ACz8EG;EACC,oBAAA;AD48EJ;;AC78EG;EACC,oBAAA;ADg9EJ;;ACj9EG;EACC,oBAAA;ADo9EJ;;ACr9EG;EACC,oBAAA;ADw9EJ;;ACz9EG;EACC,oBAAA;AD49EJ;;AC79EG;EACC,oBAAA;ADg+EJ;;ACj+EG;EACC,oBAAA;ADo+EJ;;ACr+EG;EACC,oBAAA;ADw+EJ;;ACz+EG;EACC,oBAAA;AD4+EJ;;AC7+EG;EACC,oBAAA;ADg/EJ;;ACj/EG;EACC,oBAAA;ADo/EJ;;ACr/EG;EACC,oBAAA;ADw/EJ;;ACz/EG;EACC,oBAAA;AD4/EJ;;AC7/EG;EACC,oBAAA;ADggFJ;;ACjgFG;EACC,oBAAA;ADogFJ;;ACrgFG;EACC,oBAAA;ADwgFJ;;ACzgFG;EACC,oBAAA;AD4gFJ;;AC7gFG;EACC,oBAAA;ADghFJ;;ACjhFG;EACC,oBAAA;ADohFJ;;ACrhFG;EACC,oBAAA;ADwhFJ;;ACzhFG;EACC,oBAAA;AD4hFJ;;AC7hFG;EACC,oBAAA;ADgiFJ;;ACjiFG;EACC,oBAAA;ADoiFJ;;ACriFG;EACC,oBAAA;ADwiFJ;;ACziFG;EACC,oBAAA;AD4iFJ;;AC7iFG;EACC,oBAAA;ADgjFJ;;ACjjFG;EACC,oBAAA;ADojFJ;;ACrjFG;EACC,oBAAA;ADwjFJ;;ACzjFG;EACC,oBAAA;AD4jFJ;;AC7jFG;EACC,oBAAA;ADgkFJ;;ACjkFG;EACC,oBAAA;ADokFJ;;ACrkFG;EACC,oBAAA;ADwkFJ;;ACzkFG;EACC,oBAAA;AD4kFJ;;AC1jFG;EACC,mBAAA;AD6jFJ;;AC9jFG;EACC,mBAAA;ADikFJ;;AClkFG;EACC,oBAAA;ADqkFJ;;ACtkFG;EACC,oBAAA;ADykFJ;;AC1kFG;EACC,oBAAA;AD6kFJ;;AC9kFG;EACC,oBAAA;ADilFJ;;ACllFG;EACC,oBAAA;ADqlFJ;;ACtlFG;EACC,oBAAA;ADylFJ;;AC1lFG;EACC,oBAAA;AD6lFJ;;AC9lFG;EACC,oBAAA;ADimFJ;;AClmFG;EACC,oBAAA;ADqmFJ;;ACtmFG;EACC,oBAAA;ADymFJ;;AC1mFG;EACC,oBAAA;AD6mFJ;;AC9mFG;EACC,oBAAA;ADinFJ;;AClnFG;EACC,oBAAA;ADqnFJ;;ACtnFG;EACC,oBAAA;ADynFJ;;AC1nFG;EACC,oBAAA;AD6nFJ;;AC9nFG;EACC,oBAAA;ADioFJ;;ACloFG;EACC,oBAAA;ADqoFJ;;ACtoFG;EACC,oBAAA;ADyoFJ;;AC1oFG;EACC,oBAAA;AD6oFJ;;AC9oFG;EACC,oBAAA;ADipFJ;;AClpFG;EACC,oBAAA;ADqpFJ;;ACtpFG;EACC,oBAAA;ADypFJ;;AC1pFG;EACC,qBAAA;AD6pFJ;;ACjrFG;EACC,oBAAA;ADorFJ;;ACrrFG;EACC,oBAAA;ADwrFJ;;ACzrFG;EACC,oBAAA;AD4rFJ;;AC7rFG;EACC,oBAAA;ADgsFJ;;ACjsFG;EACC,oBAAA;ADosFJ;;ACrsFG;EACC,oBAAA;ADwsFJ;;ACzsFG;EACC,oBAAA;AD4sFJ;;AC7sFG;EACC,oBAAA;ADgtFJ;;ACjtFG;EACC,oBAAA;ADotFJ;;ACrtFG;EACC,oBAAA;ADwtFJ;;ACztFG;EACC,qBAAA;AD4tFJ;;AC7tFG;EACC,qBAAA;ADguFJ;;ACjuFG;EACC,qBAAA;ADouFJ;;ACruFG;EACC,qBAAA;ADwuFJ;;ACzuFG;EACC,qBAAA;AD4uFJ;;AC7uFG;EACC,qBAAA;ADgvFJ;;ACjvFG;EACC,qBAAA;ADovFJ;;ACrvFG;EACC,qBAAA;ADwvFJ;;ACzvFG;EACC,qBAAA;AD4vFJ;;AC7vFG;EACC,qBAAA;ADgwFJ;;ACjwFG;EACC,qBAAA;ADowFJ;;ACrwFG;EACC,qBAAA;ADwwFJ;;ACzwFG;EACC,qBAAA;AD4wFJ;;AC7wFG;EACC,qBAAA;ADgxFJ;;ACjxFG;EACC,qBAAA;ADoxFJ;;ACrxFG;EACC,qBAAA;ADwxFJ;;ACzxFG;EACC,qBAAA;AD4xFJ;;AC7xFG;EACC,qBAAA;ADgyFJ;;ACjyFG;EACC,qBAAA;ADoyFJ;;ACryFG;EACC,qBAAA;ADwyFJ;;ACzyFG;EACC,qBAAA;AD4yFJ;;AC7yFG;EACC,qBAAA;ADgzFJ;;ACjzFG;EACC,qBAAA;ADozFJ;;ACrzFG;EACC,qBAAA;ADwzFJ;;ACzzFG;EACC,qBAAA;AD4zFJ;;AC7zFG;EACC,qBAAA;ADg0FJ;;ACj0FG;EACC,qBAAA;ADo0FJ;;ACr0FG;EACC,qBAAA;ADw0FJ;;ACz0FG;EACC,qBAAA;AD40FJ;;AC70FG;EACC,qBAAA;ADg1FJ;;ACj1FG;EACC,qBAAA;ADo1FJ;;ACr1FG;EACC,qBAAA;ADw1FJ;;ACz1FG;EACC,qBAAA;AD41FJ;;AC71FG;EACC,qBAAA;ADg2FJ;;ACj2FG;EACC,qBAAA;ADo2FJ;;ACr2FG;EACC,qBAAA;ADw2FJ;;ACz2FG;EACC,qBAAA;AD42FJ;;AC72FG;EACC,qBAAA;ADg3FJ;;ACj3FG;EACC,qBAAA;ADo3FJ;;ACr3FG;EACC,qBAAA;ADw3FJ;;ACz3FG;EACC,qBAAA;AD43FJ;;AC12FG;EACC,oBAAA;AD62FJ;;AC92FG;EACC,oBAAA;ADi3FJ;;ACl3FG;EACC,qBAAA;ADq3FJ;;ACt3FG;EACC,qBAAA;ADy3FJ;;AC13FG;EACC,qBAAA;AD63FJ;;AC93FG;EACC,qBAAA;ADi4FJ;;ACl4FG;EACC,qBAAA;ADq4FJ;;ACt4FG;EACC,qBAAA;ADy4FJ;;AC14FG;EACC,qBAAA;AD64FJ;;AC94FG;EACC,qBAAA;ADi5FJ;;ACl5FG;EACC,qBAAA;ADq5FJ;;ACt5FG;EACC,qBAAA;ADy5FJ;;AC15FG;EACC,qBAAA;AD65FJ;;AC95FG;EACC,qBAAA;ADi6FJ;;ACl6FG;EACC,qBAAA;ADq6FJ;;ACt6FG;EACC,qBAAA;ADy6FJ;;AC16FG;EACC,qBAAA;AD66FJ;;AC96FG;EACC,qBAAA;ADi7FJ;;ACl7FG;EACC,qBAAA;ADq7FJ;;ACt7FG;EACC,qBAAA;ADy7FJ;;AC17FG;EACC,qBAAA;AD67FJ;;AC97FG;EACC,qBAAA;ADi8FJ;;ACl8FG;EACC,qBAAA;ADq8FJ;;ACt8FG;EACC,qBAAA;ADy8FJ;;AC18FG;EACC,sBAAA;AD68FJ;;ACj+FG;EACC,kBAAA;ADo+FJ;;ACr+FG;EACC,kBAAA;ADw+FJ;;ACz+FG;EACC,kBAAA;AD4+FJ;;AC7+FG;EACC,kBAAA;ADg/FJ;;ACj/FG;EACC,kBAAA;ADo/FJ;;ACr/FG;EACC,kBAAA;ADw/FJ;;ACz/FG;EACC,kBAAA;AD4/FJ;;AC7/FG;EACC,kBAAA;ADggGJ;;ACjgGG;EACC,kBAAA;ADogGJ;;ACrgGG;EACC,kBAAA;ADwgGJ;;ACzgGG;EACC,mBAAA;AD4gGJ;;AC7gGG;EACC,mBAAA;ADghGJ;;ACjhGG;EACC,mBAAA;ADohGJ;;ACrhGG;EACC,mBAAA;ADwhGJ;;ACzhGG;EACC,mBAAA;AD4hGJ;;AC7hGG;EACC,mBAAA;ADgiGJ;;ACjiGG;EACC,mBAAA;ADoiGJ;;ACriGG;EACC,mBAAA;ADwiGJ;;ACziGG;EACC,mBAAA;AD4iGJ;;AC7iGG;EACC,mBAAA;ADgjGJ;;ACjjGG;EACC,mBAAA;ADojGJ;;ACrjGG;EACC,mBAAA;ADwjGJ;;ACzjGG;EACC,mBAAA;AD4jGJ;;AC7jGG;EACC,mBAAA;ADgkGJ;;ACjkGG;EACC,mBAAA;ADokGJ;;ACrkGG;EACC,mBAAA;ADwkGJ;;ACzkGG;EACC,mBAAA;AD4kGJ;;AC7kGG;EACC,mBAAA;ADglGJ;;ACjlGG;EACC,mBAAA;ADolGJ;;ACrlGG;EACC,mBAAA;ADwlGJ;;ACzlGG;EACC,mBAAA;AD4lGJ;;AC7lGG;EACC,mBAAA;ADgmGJ;;ACjmGG;EACC,mBAAA;ADomGJ;;ACrmGG;EACC,mBAAA;ADwmGJ;;ACzmGG;EACC,mBAAA;AD4mGJ;;AC7mGG;EACC,mBAAA;ADgnGJ;;ACjnGG;EACC,mBAAA;ADonGJ;;ACrnGG;EACC,mBAAA;ADwnGJ;;ACznGG;EACC,mBAAA;AD4nGJ;;AC7nGG;EACC,mBAAA;ADgoGJ;;ACjoGG;EACC,mBAAA;ADooGJ;;ACroGG;EACC,mBAAA;ADwoGJ;;ACzoGG;EACC,mBAAA;AD4oGJ;;AC7oGG;EACC,mBAAA;ADgpGJ;;ACjpGG;EACC,mBAAA;ADopGJ;;ACrpGG;EACC,mBAAA;ADwpGJ;;ACzpGG;EACC,mBAAA;AD4pGJ;;AC7pGG;EACC,mBAAA;ADgqGJ;;ACjqGG;EACC,mBAAA;ADoqGJ;;ACrqGG;EACC,mBAAA;ADwqGJ;;ACzqGG;EACC,mBAAA;AD4qGJ;;AC1pGG;EACC,kBAAA;AD6pGJ;;AC9pGG;EACC,kBAAA;ADiqGJ;;AClqGG;EACC,mBAAA;ADqqGJ;;ACtqGG;EACC,mBAAA;ADyqGJ;;AC1qGG;EACC,mBAAA;AD6qGJ;;AC9qGG;EACC,mBAAA;ADirGJ;;AClrGG;EACC,mBAAA;ADqrGJ;;ACtrGG;EACC,mBAAA;ADyrGJ;;AC1rGG;EACC,mBAAA;AD6rGJ;;AC9rGG;EACC,mBAAA;ADisGJ;;AClsGG;EACC,mBAAA;ADqsGJ;;ACtsGG;EACC,mBAAA;ADysGJ;;AC1sGG;EACC,mBAAA;AD6sGJ;;AC9sGG;EACC,mBAAA;ADitGJ;;ACltGG;EACC,mBAAA;ADqtGJ;;ACttGG;EACC,mBAAA;ADytGJ;;AC1tGG;EACC,mBAAA;AD6tGJ;;AC9tGG;EACC,mBAAA;ADiuGJ;;ACluGG;EACC,mBAAA;ADquGJ;;ACtuGG;EACC,mBAAA;ADyuGJ;;AC1uGG;EACC,mBAAA;AD6uGJ;;AC9uGG;EACC,mBAAA;ADivGJ;;AClvGG;EACC,mBAAA;ADqvGJ;;ACtvGG;EACC,mBAAA;ADyvGJ;;AC1vGG;EACC,oBAAA;AD6vGJ;;AC5wGG;EACC,kBAAA;EACA,mBAAA;AD+wGJ;;ACjxGG;EACC,kBAAA;EACA,mBAAA;ADoxGJ;;ACtxGG;EACC,kBAAA;EACA,mBAAA;ADyxGJ;;AC3xGG;EACC,kBAAA;EACA,mBAAA;AD8xGJ;;AChyGG;EACC,kBAAA;EACA,mBAAA;ADmyGJ;;ACryGG;EACC,kBAAA;EACA,mBAAA;ADwyGJ;;AC1yGG;EACC,kBAAA;EACA,mBAAA;AD6yGJ;;AC/yGG;EACC,kBAAA;EACA,mBAAA;ADkzGJ;;ACpzGG;EACC,kBAAA;EACA,mBAAA;ADuzGJ;;ACzzGG;EACC,kBAAA;EACA,mBAAA;AD4zGJ;;AC9zGG;EACC,mBAAA;EACA,oBAAA;ADi0GJ;;ACn0GG;EACC,mBAAA;EACA,oBAAA;ADs0GJ;;ACx0GG;EACC,mBAAA;EACA,oBAAA;AD20GJ;;AC70GG;EACC,mBAAA;EACA,oBAAA;ADg1GJ;;ACl1GG;EACC,mBAAA;EACA,oBAAA;ADq1GJ;;ACv1GG;EACC,mBAAA;EACA,oBAAA;AD01GJ;;AC51GG;EACC,mBAAA;EACA,oBAAA;AD+1GJ;;ACj2GG;EACC,mBAAA;EACA,oBAAA;ADo2GJ;;ACt2GG;EACC,mBAAA;EACA,oBAAA;ADy2GJ;;AC32GG;EACC,mBAAA;EACA,oBAAA;AD82GJ;;ACh3GG;EACC,mBAAA;EACA,oBAAA;ADm3GJ;;ACr3GG;EACC,mBAAA;EACA,oBAAA;ADw3GJ;;AC13GG;EACC,mBAAA;EACA,oBAAA;AD63GJ;;AC/3GG;EACC,mBAAA;EACA,oBAAA;ADk4GJ;;ACp4GG;EACC,mBAAA;EACA,oBAAA;ADu4GJ;;ACz4GG;EACC,mBAAA;EACA,oBAAA;AD44GJ;;AC94GG;EACC,mBAAA;EACA,oBAAA;ADi5GJ;;ACn5GG;EACC,mBAAA;EACA,oBAAA;ADs5GJ;;ACx5GG;EACC,mBAAA;EACA,oBAAA;AD25GJ;;AC75GG;EACC,mBAAA;EACA,oBAAA;ADg6GJ;;ACl6GG;EACC,mBAAA;EACA,oBAAA;ADq6GJ;;ACv6GG;EACC,mBAAA;EACA,oBAAA;AD06GJ;;AC56GG;EACC,mBAAA;EACA,oBAAA;AD+6GJ;;ACj7GG;EACC,mBAAA;EACA,oBAAA;ADo7GJ;;ACt7GG;EACC,mBAAA;EACA,oBAAA;ADy7GJ;;AC37GG;EACC,mBAAA;EACA,oBAAA;AD87GJ;;ACh8GG;EACC,mBAAA;EACA,oBAAA;ADm8GJ;;ACr8GG;EACC,mBAAA;EACA,oBAAA;ADw8GJ;;AC18GG;EACC,mBAAA;EACA,oBAAA;AD68GJ;;AC/8GG;EACC,mBAAA;EACA,oBAAA;ADk9GJ;;ACp9GG;EACC,mBAAA;EACA,oBAAA;ADu9GJ;;ACz9GG;EACC,mBAAA;EACA,oBAAA;AD49GJ;;AC99GG;EACC,mBAAA;EACA,oBAAA;ADi+GJ;;ACn+GG;EACC,mBAAA;EACA,oBAAA;ADs+GJ;;ACx+GG;EACC,mBAAA;EACA,oBAAA;AD2+GJ;;AC7+GG;EACC,mBAAA;EACA,oBAAA;ADg/GJ;;ACl/GG;EACC,mBAAA;EACA,oBAAA;ADq/GJ;;ACv/GG;EACC,mBAAA;EACA,oBAAA;AD0/GJ;;AC5/GG;EACC,mBAAA;EACA,oBAAA;AD+/GJ;;ACjgHG;EACC,mBAAA;EACA,oBAAA;ADogHJ;;ACtgHG;EACC,mBAAA;EACA,oBAAA;ADygHJ;;ACx/GG;EACC,kBAAA;EACA,mBAAA;AD2/GJ;;AC7/GG;EACC,kBAAA;EACA,mBAAA;ADggHJ;;AClgHG;EACC,mBAAA;EACA,oBAAA;ADqgHJ;;ACvgHG;EACC,mBAAA;EACA,oBAAA;AD0gHJ;;AC5gHG;EACC,mBAAA;EACA,oBAAA;AD+gHJ;;ACjhHG;EACC,mBAAA;EACA,oBAAA;ADohHJ;;ACthHG;EACC,mBAAA;EACA,oBAAA;ADyhHJ;;AC3hHG;EACC,mBAAA;EACA,oBAAA;AD8hHJ;;AChiHG;EACC,mBAAA;EACA,oBAAA;ADmiHJ;;ACriHG;EACC,mBAAA;EACA,oBAAA;ADwiHJ;;AC1iHG;EACC,mBAAA;EACA,oBAAA;AD6iHJ;;AC/iHG;EACC,mBAAA;EACA,oBAAA;ADkjHJ;;ACpjHG;EACC,mBAAA;EACA,oBAAA;ADujHJ;;ACzjHG;EACC,mBAAA;EACA,oBAAA;AD4jHJ;;AC9jHG;EACC,mBAAA;EACA,oBAAA;ADikHJ;;ACnkHG;EACC,mBAAA;EACA,oBAAA;ADskHJ;;ACxkHG;EACC,mBAAA;EACA,oBAAA;AD2kHJ;;AC7kHG;EACC,mBAAA;EACA,oBAAA;ADglHJ;;ACllHG;EACC,mBAAA;EACA,oBAAA;ADqlHJ;;ACvlHG;EACC,mBAAA;EACA,oBAAA;AD0lHJ;;AC5lHG;EACC,mBAAA;EACA,oBAAA;AD+lHJ;;ACjmHG;EACC,mBAAA;EACA,oBAAA;ADomHJ;;ACtmHG;EACC,mBAAA;EACA,oBAAA;ADymHJ;;AC3mHG;EACC,mBAAA;EACA,oBAAA;AD8mHJ;;AChnHG;EACC,oBAAA;EACA,qBAAA;ADmnHJ;;ACloHG;EACC,iBAAA;EACA,oBAAA;ADqoHJ;;ACvoHG;EACC,iBAAA;EACA,oBAAA;AD0oHJ;;AC5oHG;EACC,iBAAA;EACA,oBAAA;AD+oHJ;;ACjpHG;EACC,iBAAA;EACA,oBAAA;ADopHJ;;ACtpHG;EACC,iBAAA;EACA,oBAAA;ADypHJ;;AC3pHG;EACC,iBAAA;EACA,oBAAA;AD8pHJ;;AChqHG;EACC,iBAAA;EACA,oBAAA;ADmqHJ;;ACrqHG;EACC,iBAAA;EACA,oBAAA;ADwqHJ;;AC1qHG;EACC,iBAAA;EACA,oBAAA;AD6qHJ;;AC/qHG;EACC,iBAAA;EACA,oBAAA;ADkrHJ;;ACprHG;EACC,kBAAA;EACA,qBAAA;ADurHJ;;ACzrHG;EACC,kBAAA;EACA,qBAAA;AD4rHJ;;AC9rHG;EACC,kBAAA;EACA,qBAAA;ADisHJ;;ACnsHG;EACC,kBAAA;EACA,qBAAA;ADssHJ;;ACxsHG;EACC,kBAAA;EACA,qBAAA;AD2sHJ;;AC7sHG;EACC,kBAAA;EACA,qBAAA;ADgtHJ;;ACltHG;EACC,kBAAA;EACA,qBAAA;ADqtHJ;;ACvtHG;EACC,kBAAA;EACA,qBAAA;AD0tHJ;;AC5tHG;EACC,kBAAA;EACA,qBAAA;AD+tHJ;;ACjuHG;EACC,kBAAA;EACA,qBAAA;ADouHJ;;ACtuHG;EACC,kBAAA;EACA,qBAAA;ADyuHJ;;AC3uHG;EACC,kBAAA;EACA,qBAAA;AD8uHJ;;AChvHG;EACC,kBAAA;EACA,qBAAA;ADmvHJ;;ACrvHG;EACC,kBAAA;EACA,qBAAA;ADwvHJ;;AC1vHG;EACC,kBAAA;EACA,qBAAA;AD6vHJ;;AC/vHG;EACC,kBAAA;EACA,qBAAA;ADkwHJ;;ACpwHG;EACC,kBAAA;EACA,qBAAA;ADuwHJ;;ACzwHG;EACC,kBAAA;EACA,qBAAA;AD4wHJ;;AC9wHG;EACC,kBAAA;EACA,qBAAA;ADixHJ;;ACnxHG;EACC,kBAAA;EACA,qBAAA;ADsxHJ;;ACxxHG;EACC,kBAAA;EACA,qBAAA;AD2xHJ;;AC7xHG;EACC,kBAAA;EACA,qBAAA;ADgyHJ;;AClyHG;EACC,kBAAA;EACA,qBAAA;ADqyHJ;;ACvyHG;EACC,kBAAA;EACA,qBAAA;AD0yHJ;;AC5yHG;EACC,kBAAA;EACA,qBAAA;AD+yHJ;;ACjzHG;EACC,kBAAA;EACA,qBAAA;ADozHJ;;ACtzHG;EACC,kBAAA;EACA,qBAAA;ADyzHJ;;AC3zHG;EACC,kBAAA;EACA,qBAAA;AD8zHJ;;ACh0HG;EACC,kBAAA;EACA,qBAAA;ADm0HJ;;ACr0HG;EACC,kBAAA;EACA,qBAAA;ADw0HJ;;AC10HG;EACC,kBAAA;EACA,qBAAA;AD60HJ;;AC/0HG;EACC,kBAAA;EACA,qBAAA;ADk1HJ;;ACp1HG;EACC,kBAAA;EACA,qBAAA;ADu1HJ;;ACz1HG;EACC,kBAAA;EACA,qBAAA;AD41HJ;;AC91HG;EACC,kBAAA;EACA,qBAAA;ADi2HJ;;ACn2HG;EACC,kBAAA;EACA,qBAAA;ADs2HJ;;ACx2HG;EACC,kBAAA;EACA,qBAAA;AD22HJ;;AC72HG;EACC,kBAAA;EACA,qBAAA;ADg3HJ;;ACl3HG;EACC,kBAAA;EACA,qBAAA;ADq3HJ;;ACv3HG;EACC,kBAAA;EACA,qBAAA;AD03HJ;;AC53HG;EACC,kBAAA;EACA,qBAAA;AD+3HJ;;AC92HG;EACC,iBAAA;EACA,oBAAA;ADi3HJ;;ACn3HG;EACC,iBAAA;EACA,oBAAA;ADs3HJ;;ACx3HG;EACC,kBAAA;EACA,qBAAA;AD23HJ;;AC73HG;EACC,kBAAA;EACA,qBAAA;ADg4HJ;;ACl4HG;EACC,kBAAA;EACA,qBAAA;ADq4HJ;;ACv4HG;EACC,kBAAA;EACA,qBAAA;AD04HJ;;AC54HG;EACC,kBAAA;EACA,qBAAA;AD+4HJ;;ACj5HG;EACC,kBAAA;EACA,qBAAA;ADo5HJ;;ACt5HG;EACC,kBAAA;EACA,qBAAA;ADy5HJ;;AC35HG;EACC,kBAAA;EACA,qBAAA;AD85HJ;;ACh6HG;EACC,kBAAA;EACA,qBAAA;ADm6HJ;;ACr6HG;EACC,kBAAA;EACA,qBAAA;ADw6HJ;;AC16HG;EACC,kBAAA;EACA,qBAAA;AD66HJ;;AC/6HG;EACC,kBAAA;EACA,qBAAA;ADk7HJ;;ACp7HG;EACC,kBAAA;EACA,qBAAA;ADu7HJ;;ACz7HG;EACC,kBAAA;EACA,qBAAA;AD47HJ;;AC97HG;EACC,kBAAA;EACA,qBAAA;ADi8HJ;;ACn8HG;EACC,kBAAA;EACA,qBAAA;ADs8HJ;;ACx8HG;EACC,kBAAA;EACA,qBAAA;AD28HJ;;AC78HG;EACC,kBAAA;EACA,qBAAA;ADg9HJ;;ACl9HG;EACC,kBAAA;EACA,qBAAA;ADq9HJ;;ACv9HG;EACC,kBAAA;EACA,qBAAA;AD09HJ;;AC59HG;EACC,kBAAA;EACA,qBAAA;AD+9HJ;;ACj+HG;EACC,kBAAA;EACA,qBAAA;ADo+HJ;;ACt+HG;EACC,mBAAA;EACA,sBAAA;ADy+HJ;;ACh+HG;EACC,YAAA;ADm+HJ;;ACp+HG;EACC,YAAA;ADu+HJ;;ACx+HG;EACC,YAAA;AD2+HJ;;AC5+HG;EACC,YAAA;AD++HJ;;ACh/HG;EACC,YAAA;ADm/HJ;;ACp/HG;EACC,YAAA;ADu/HJ;;ACx/HG;EACC,YAAA;AD2/HJ;;AC5/HG;EACC,YAAA;AD+/HJ;;AChgIG;EACC,YAAA;ADmgIJ;;ACpgIG;EACC,YAAA;ADugIJ;;ACxgIG;EACC,aAAA;AD2gIJ;;AC5gIG;EACC,aAAA;AD+gIJ;;AChhIG;EACC,aAAA;ADmhIJ;;ACphIG;EACC,aAAA;ADuhIJ;;ACxhIG;EACC,aAAA;AD2hIJ;;AC5hIG;EACC,aAAA;AD+hIJ;;AChiIG;EACC,aAAA;ADmiIJ;;ACpiIG;EACC,aAAA;ADuiIJ;;ACxiIG;EACC,aAAA;AD2iIJ;;AC5iIG;EACC,aAAA;AD+iIJ;;AChjIG;EACC,aAAA;ADmjIJ;;ACpjIG;EACC,aAAA;ADujIJ;;ACxjIG;EACC,aAAA;AD2jIJ;;AC5jIG;EACC,aAAA;AD+jIJ;;AChkIG;EACC,aAAA;ADmkIJ;;ACpkIG;EACC,aAAA;ADukIJ;;ACxkIG;EACC,aAAA;AD2kIJ;;AC5kIG;EACC,aAAA;AD+kIJ;;AChlIG;EACC,aAAA;ADmlIJ;;ACplIG;EACC,aAAA;ADulIJ;;ACxlIG;EACC,aAAA;AD2lIJ;;AC5lIG;EACC,aAAA;AD+lIJ;;AChmIG;EACC,aAAA;ADmmIJ;;ACpmIG;EACC,aAAA;ADumIJ;;ACxmIG;EACC,aAAA;AD2mIJ;;AC5mIG;EACC,aAAA;AD+mIJ;;AChnIG;EACC,aAAA;ADmnIJ;;ACpnIG;EACC,aAAA;ADunIJ;;ACxnIG;EACC,aAAA;AD2nIJ;;AC5nIG;EACC,aAAA;AD+nIJ;;AChoIG;EACC,aAAA;ADmoIJ;;ACpoIG;EACC,aAAA;ADuoIJ;;ACxoIG;EACC,aAAA;AD2oIJ;;AC5oIG;EACC,aAAA;AD+oIJ;;AChpIG;EACC,aAAA;ADmpIJ;;ACppIG;EACC,aAAA;ADupIJ;;ACxpIG;EACC,aAAA;AD2pIJ;;AC5pIG;EACC,aAAA;AD+pIJ;;AChqIG;EACC,aAAA;ADmqIJ;;ACpqIG;EACC,aAAA;ADuqIJ;;ACxqIG;EACC,aAAA;AD2qIJ;;ACppIG;EACC,YAAA;ADupIJ;;ACxpIG;EACC,YAAA;AD2pIJ;;AC5pIG;EACC,aAAA;AD+pIJ;;AChqIG;EACC,aAAA;ADmqIJ;;ACpqIG;EACC,aAAA;ADuqIJ;;ACxqIG;EACC,aAAA;AD2qIJ;;AC5qIG;EACC,aAAA;AD+qIJ;;AChrIG;EACC,aAAA;ADmrIJ;;ACprIG;EACC,aAAA;ADurIJ;;ACxrIG;EACC,aAAA;AD2rIJ;;AC5rIG;EACC,aAAA;AD+rIJ;;AChsIG;EACC,aAAA;ADmsIJ;;ACpsIG;EACC,aAAA;ADusIJ;;ACxsIG;EACC,aAAA;AD2sIJ;;AC5sIG;EACC,aAAA;AD+sIJ;;AChtIG;EACC,aAAA;ADmtIJ;;ACptIG;EACC,aAAA;ADutIJ;;ACxtIG;EACC,aAAA;AD2tIJ;;AC5tIG;EACC,aAAA;AD+tIJ;;AChuIG;EACC,aAAA;ADmuIJ;;ACpuIG;EACC,aAAA;ADuuIJ;;ACxuIG;EACC,aAAA;AD2uIJ;;AC5uIG;EACC,aAAA;AD+uIJ;;AChvIG;EACC,aAAA;ADmvIJ;;ACpvIG;EACC,cAAA;ADuvIJ;;AChxIG;EACC,gBAAA;ADmxIJ;;AChxII;EACC,iBAAA;ADmxIL;;ACxxIG;EACC,gBAAA;AD2xIJ;;ACxxII;EACC,iBAAA;AD2xIL;;AChyIG;EACC,gBAAA;ADmyIJ;;AChyII;EACC,iBAAA;ADmyIL;;ACxyIG;EACC,gBAAA;AD2yIJ;;ACxyII;EACC,iBAAA;AD2yIL;;AChzIG;EACC,gBAAA;ADmzIJ;;AChzII;EACC,iBAAA;ADmzIL;;ACxzIG;EACC,gBAAA;AD2zIJ;;ACxzII;EACC,iBAAA;AD2zIL;;ACh0IG;EACC,gBAAA;ADm0IJ;;ACh0II;EACC,iBAAA;ADm0IL;;ACx0IG;EACC,gBAAA;AD20IJ;;ACx0II;EACC,iBAAA;AD20IL;;ACh1IG;EACC,gBAAA;ADm1IJ;;ACh1II;EACC,iBAAA;ADm1IL;;ACx1IG;EACC,gBAAA;AD21IJ;;ACx1II;EACC,iBAAA;AD21IL;;ACh2IG;EACC,iBAAA;ADm2IJ;;ACh2II;EACC,kBAAA;ADm2IL;;ACx2IG;EACC,iBAAA;AD22IJ;;ACx2II;EACC,kBAAA;AD22IL;;ACh3IG;EACC,iBAAA;ADm3IJ;;ACh3II;EACC,kBAAA;ADm3IL;;ACx3IG;EACC,iBAAA;AD23IJ;;ACx3II;EACC,kBAAA;AD23IL;;ACh4IG;EACC,iBAAA;ADm4IJ;;ACh4II;EACC,kBAAA;ADm4IL;;ACx4IG;EACC,iBAAA;AD24IJ;;ACx4II;EACC,kBAAA;AD24IL;;ACh5IG;EACC,iBAAA;ADm5IJ;;ACh5II;EACC,kBAAA;ADm5IL;;ACx5IG;EACC,iBAAA;AD25IJ;;ACx5II;EACC,kBAAA;AD25IL;;ACh6IG;EACC,iBAAA;ADm6IJ;;ACh6II;EACC,kBAAA;ADm6IL;;ACx6IG;EACC,iBAAA;AD26IJ;;ACx6II;EACC,kBAAA;AD26IL;;ACh7IG;EACC,iBAAA;ADm7IJ;;ACh7II;EACC,kBAAA;ADm7IL;;ACx7IG;EACC,iBAAA;AD27IJ;;ACx7II;EACC,kBAAA;AD27IL;;ACh8IG;EACC,iBAAA;ADm8IJ;;ACh8II;EACC,kBAAA;ADm8IL;;ACx8IG;EACC,iBAAA;AD28IJ;;ACx8II;EACC,kBAAA;AD28IL;;ACh9IG;EACC,iBAAA;ADm9IJ;;ACh9II;EACC,kBAAA;ADm9IL;;ACx9IG;EACC,iBAAA;AD29IJ;;ACx9II;EACC,kBAAA;AD29IL;;ACh+IG;EACC,iBAAA;ADm+IJ;;ACh+II;EACC,kBAAA;ADm+IL;;ACx+IG;EACC,iBAAA;AD2+IJ;;ACx+II;EACC,kBAAA;AD2+IL;;ACh/IG;EACC,iBAAA;ADm/IJ;;ACh/II;EACC,kBAAA;ADm/IL;;ACx/IG;EACC,iBAAA;AD2/IJ;;ACx/II;EACC,kBAAA;AD2/IL;;AChgJG;EACC,iBAAA;ADmgJJ;;AChgJI;EACC,kBAAA;ADmgJL;;ACxgJG;EACC,iBAAA;AD2gJJ;;ACxgJI;EACC,kBAAA;AD2gJL;;AChhJG;EACC,iBAAA;ADmhJJ;;AChhJI;EACC,kBAAA;ADmhJL;;ACxhJG;EACC,iBAAA;AD2hJJ;;ACxhJI;EACC,kBAAA;AD2hJL;;AChiJG;EACC,iBAAA;ADmiJJ;;AChiJI;EACC,kBAAA;ADmiJL;;ACxiJG;EACC,iBAAA;AD2iJJ;;ACxiJI;EACC,kBAAA;AD2iJL;;AChjJG;EACC,iBAAA;ADmjJJ;;AChjJI;EACC,kBAAA;ADmjJL;;ACxjJG;EACC,iBAAA;AD2jJJ;;ACxjJI;EACC,kBAAA;AD2jJL;;AChkJG;EACC,iBAAA;ADmkJJ;;AChkJI;EACC,kBAAA;ADmkJL;;ACxkJG;EACC,iBAAA;AD2kJJ;;ACxkJI;EACC,kBAAA;AD2kJL;;AChlJG;EACC,iBAAA;ADmlJJ;;AChlJI;EACC,kBAAA;ADmlJL;;ACxlJG;EACC,iBAAA;AD2lJJ;;ACxlJI;EACC,kBAAA;AD2lJL;;AChmJG;EACC,iBAAA;ADmmJJ;;AChmJI;EACC,kBAAA;ADmmJL;;ACxmJG;EACC,iBAAA;AD2mJJ;;ACxmJI;EACC,kBAAA;AD2mJL;;AChnJG;EACC,iBAAA;ADmnJJ;;AChnJI;EACC,kBAAA;ADmnJL;;ACxnJG;EACC,iBAAA;AD2nJJ;;ACxnJI;EACC,kBAAA;AD2nJL;;AChoJG;EACC,iBAAA;ADmoJJ;;AChoJI;EACC,kBAAA;ADmoJL;;ACxoJG;EACC,iBAAA;AD2oJJ;;ACxoJI;EACC,kBAAA;AD2oJL;;AChpJG;EACC,iBAAA;ADmpJJ;;AChpJI;EACC,kBAAA;ADmpJL;;ACxpJG;EACC,iBAAA;AD2pJJ;;ACxpJI;EACC,kBAAA;AD2pJL;;AChqJG;EACC,iBAAA;ADmqJJ;;AChqJI;EACC,kBAAA;ADmqJL;;AChpJG;EACC,gBAAA;ADmpJJ;;AChpJI;EACC,iBAAA;ADmpJL;;ACxpJG;EACC,gBAAA;AD2pJJ;;ACxpJI;EACC,iBAAA;AD2pJL;;AChqJG;EACC,iBAAA;ADmqJJ;;AChqJI;EACC,kBAAA;ADmqJL;;ACxqJG;EACC,iBAAA;AD2qJJ;;ACxqJI;EACC,kBAAA;AD2qJL;;AChrJG;EACC,iBAAA;ADmrJJ;;AChrJI;EACC,kBAAA;ADmrJL;;ACxrJG;EACC,iBAAA;AD2rJJ;;ACxrJI;EACC,kBAAA;AD2rJL;;AChsJG;EACC,iBAAA;ADmsJJ;;AChsJI;EACC,kBAAA;ADmsJL;;ACxsJG;EACC,iBAAA;AD2sJJ;;ACxsJI;EACC,kBAAA;AD2sJL;;AChtJG;EACC,iBAAA;ADmtJJ;;AChtJI;EACC,kBAAA;ADmtJL;;ACxtJG;EACC,iBAAA;AD2tJJ;;ACxtJI;EACC,kBAAA;AD2tJL;;AChuJG;EACC,iBAAA;ADmuJJ;;AChuJI;EACC,kBAAA;ADmuJL;;ACxuJG;EACC,iBAAA;AD2uJJ;;ACxuJI;EACC,kBAAA;AD2uJL;;AChvJG;EACC,iBAAA;ADmvJJ;;AChvJI;EACC,kBAAA;ADmvJL;;ACxvJG;EACC,iBAAA;AD2vJJ;;ACxvJI;EACC,kBAAA;AD2vJL;;AChwJG;EACC,iBAAA;ADmwJJ;;AChwJI;EACC,kBAAA;ADmwJL;;ACxwJG;EACC,iBAAA;AD2wJJ;;ACxwJI;EACC,kBAAA;AD2wJL;;AChxJG;EACC,iBAAA;ADmxJJ;;AChxJI;EACC,kBAAA;ADmxJL;;ACxxJG;EACC,iBAAA;AD2xJJ;;ACxxJI;EACC,kBAAA;AD2xJL;;AChyJG;EACC,iBAAA;ADmyJJ;;AChyJI;EACC,kBAAA;ADmyJL;;ACxyJG;EACC,iBAAA;AD2yJJ;;ACxyJI;EACC,kBAAA;AD2yJL;;AChzJG;EACC,iBAAA;ADmzJJ;;AChzJI;EACC,kBAAA;ADmzJL;;ACxzJG;EACC,iBAAA;AD2zJJ;;ACxzJI;EACC,kBAAA;AD2zJL;;ACh0JG;EACC,iBAAA;ADm0JJ;;ACh0JI;EACC,kBAAA;ADm0JL;;ACx0JG;EACC,iBAAA;AD20JJ;;ACx0JI;EACC,kBAAA;AD20JL;;ACh1JG;EACC,kBAAA;ADm1JJ;;ACh1JI;EACC,mBAAA;ADm1JL;;ACh3JG;EACC,kBAAA;ADm3JJ;;ACh3JI;EACC,mBAAA;ADm3JL;;ACx3JG;EACC,kBAAA;AD23JJ;;ACx3JI;EACC,mBAAA;AD23JL;;ACh4JG;EACC,kBAAA;ADm4JJ;;ACh4JI;EACC,mBAAA;ADm4JL;;ACx4JG;EACC,kBAAA;AD24JJ;;ACx4JI;EACC,mBAAA;AD24JL;;ACh5JG;EACC,kBAAA;ADm5JJ;;ACh5JI;EACC,mBAAA;ADm5JL;;ACx5JG;EACC,kBAAA;AD25JJ;;ACx5JI;EACC,mBAAA;AD25JL;;ACh6JG;EACC,kBAAA;ADm6JJ;;ACh6JI;EACC,mBAAA;ADm6JL;;ACx6JG;EACC,kBAAA;AD26JJ;;ACx6JI;EACC,mBAAA;AD26JL;;ACh7JG;EACC,kBAAA;ADm7JJ;;ACh7JI;EACC,mBAAA;ADm7JL;;ACx7JG;EACC,kBAAA;AD27JJ;;ACx7JI;EACC,mBAAA;AD27JL;;ACh8JG;EACC,mBAAA;ADm8JJ;;ACh8JI;EACC,oBAAA;ADm8JL;;ACx8JG;EACC,mBAAA;AD28JJ;;ACx8JI;EACC,oBAAA;AD28JL;;ACh9JG;EACC,mBAAA;ADm9JJ;;ACh9JI;EACC,oBAAA;ADm9JL;;ACx9JG;EACC,mBAAA;AD29JJ;;ACx9JI;EACC,oBAAA;AD29JL;;ACh+JG;EACC,mBAAA;ADm+JJ;;ACh+JI;EACC,oBAAA;ADm+JL;;ACx+JG;EACC,mBAAA;AD2+JJ;;ACx+JI;EACC,oBAAA;AD2+JL;;ACh/JG;EACC,mBAAA;ADm/JJ;;ACh/JI;EACC,oBAAA;ADm/JL;;ACx/JG;EACC,mBAAA;AD2/JJ;;ACx/JI;EACC,oBAAA;AD2/JL;;AChgKG;EACC,mBAAA;ADmgKJ;;AChgKI;EACC,oBAAA;ADmgKL;;ACxgKG;EACC,mBAAA;AD2gKJ;;ACxgKI;EACC,oBAAA;AD2gKL;;AChhKG;EACC,mBAAA;ADmhKJ;;AChhKI;EACC,oBAAA;ADmhKL;;ACxhKG;EACC,mBAAA;AD2hKJ;;ACxhKI;EACC,oBAAA;AD2hKL;;AChiKG;EACC,mBAAA;ADmiKJ;;AChiKI;EACC,oBAAA;ADmiKL;;ACxiKG;EACC,mBAAA;AD2iKJ;;ACxiKI;EACC,oBAAA;AD2iKL;;AChjKG;EACC,mBAAA;ADmjKJ;;AChjKI;EACC,oBAAA;ADmjKL;;ACxjKG;EACC,mBAAA;AD2jKJ;;ACxjKI;EACC,oBAAA;AD2jKL;;AChkKG;EACC,mBAAA;ADmkKJ;;AChkKI;EACC,oBAAA;ADmkKL;;ACxkKG;EACC,mBAAA;AD2kKJ;;ACxkKI;EACC,oBAAA;AD2kKL;;AChlKG;EACC,mBAAA;ADmlKJ;;AChlKI;EACC,oBAAA;ADmlKL;;ACxlKG;EACC,mBAAA;AD2lKJ;;ACxlKI;EACC,oBAAA;AD2lKL;;AChmKG;EACC,mBAAA;ADmmKJ;;AChmKI;EACC,oBAAA;ADmmKL;;ACxmKG;EACC,mBAAA;AD2mKJ;;ACxmKI;EACC,oBAAA;AD2mKL;;AChnKG;EACC,mBAAA;ADmnKJ;;AChnKI;EACC,oBAAA;ADmnKL;;ACxnKG;EACC,mBAAA;AD2nKJ;;ACxnKI;EACC,oBAAA;AD2nKL;;AChoKG;EACC,mBAAA;ADmoKJ;;AChoKI;EACC,oBAAA;ADmoKL;;ACxoKG;EACC,mBAAA;AD2oKJ;;ACxoKI;EACC,oBAAA;AD2oKL;;AChpKG;EACC,mBAAA;ADmpKJ;;AChpKI;EACC,oBAAA;ADmpKL;;ACxpKG;EACC,mBAAA;AD2pKJ;;ACxpKI;EACC,oBAAA;AD2pKL;;AChqKG;EACC,mBAAA;ADmqKJ;;AChqKI;EACC,oBAAA;ADmqKL;;ACxqKG;EACC,mBAAA;AD2qKJ;;ACxqKI;EACC,oBAAA;AD2qKL;;AChrKG;EACC,mBAAA;ADmrKJ;;AChrKI;EACC,oBAAA;ADmrKL;;ACxrKG;EACC,mBAAA;AD2rKJ;;ACxrKI;EACC,oBAAA;AD2rKL;;AChsKG;EACC,mBAAA;ADmsKJ;;AChsKI;EACC,oBAAA;ADmsKL;;ACxsKG;EACC,mBAAA;AD2sKJ;;ACxsKI;EACC,oBAAA;AD2sKL;;AChtKG;EACC,mBAAA;ADmtKJ;;AChtKI;EACC,oBAAA;ADmtKL;;ACxtKG;EACC,mBAAA;AD2tKJ;;ACxtKI;EACC,oBAAA;AD2tKL;;AChuKG;EACC,mBAAA;ADmuKJ;;AChuKI;EACC,oBAAA;ADmuKL;;ACxuKG;EACC,mBAAA;AD2uKJ;;ACxuKI;EACC,oBAAA;AD2uKL;;AChvKG;EACC,mBAAA;ADmvKJ;;AChvKI;EACC,oBAAA;ADmvKL;;ACxvKG;EACC,mBAAA;AD2vKJ;;ACxvKI;EACC,oBAAA;AD2vKL;;AChwKG;EACC,mBAAA;ADmwKJ;;AChwKI;EACC,oBAAA;ADmwKL;;AChvKG;EACC,kBAAA;ADmvKJ;;AChvKI;EACC,mBAAA;ADmvKL;;ACxvKG;EACC,kBAAA;AD2vKJ;;ACxvKI;EACC,mBAAA;AD2vKL;;AChwKG;EACC,mBAAA;ADmwKJ;;AChwKI;EACC,oBAAA;ADmwKL;;ACxwKG;EACC,mBAAA;AD2wKJ;;ACxwKI;EACC,oBAAA;AD2wKL;;AChxKG;EACC,mBAAA;ADmxKJ;;AChxKI;EACC,oBAAA;ADmxKL;;ACxxKG;EACC,mBAAA;AD2xKJ;;ACxxKI;EACC,oBAAA;AD2xKL;;AChyKG;EACC,mBAAA;ADmyKJ;;AChyKI;EACC,oBAAA;ADmyKL;;ACxyKG;EACC,mBAAA;AD2yKJ;;ACxyKI;EACC,oBAAA;AD2yKL;;AChzKG;EACC,mBAAA;ADmzKJ;;AChzKI;EACC,oBAAA;ADmzKL;;ACxzKG;EACC,mBAAA;AD2zKJ;;ACxzKI;EACC,oBAAA;AD2zKL;;ACh0KG;EACC,mBAAA;ADm0KJ;;ACh0KI;EACC,oBAAA;ADm0KL;;ACx0KG;EACC,mBAAA;AD20KJ;;ACx0KI;EACC,oBAAA;AD20KL;;ACh1KG;EACC,mBAAA;ADm1KJ;;ACh1KI;EACC,oBAAA;ADm1KL;;ACx1KG;EACC,mBAAA;AD21KJ;;ACx1KI;EACC,oBAAA;AD21KL;;ACh2KG;EACC,mBAAA;ADm2KJ;;ACh2KI;EACC,oBAAA;ADm2KL;;ACx2KG;EACC,mBAAA;AD22KJ;;ACx2KI;EACC,oBAAA;AD22KL;;ACh3KG;EACC,mBAAA;ADm3KJ;;ACh3KI;EACC,oBAAA;ADm3KL;;ACx3KG;EACC,mBAAA;AD23KJ;;ACx3KI;EACC,oBAAA;AD23KL;;ACh4KG;EACC,mBAAA;ADm4KJ;;ACh4KI;EACC,oBAAA;ADm4KL;;ACx4KG;EACC,mBAAA;AD24KJ;;ACx4KI;EACC,oBAAA;AD24KL;;ACh5KG;EACC,mBAAA;ADm5KJ;;ACh5KI;EACC,oBAAA;ADm5KL;;ACx5KG;EACC,mBAAA;AD25KJ;;ACx5KI;EACC,oBAAA;AD25KL;;ACh6KG;EACC,mBAAA;ADm6KJ;;ACh6KI;EACC,oBAAA;ADm6KL;;ACx6KG;EACC,mBAAA;AD26KJ;;ACx6KI;EACC,oBAAA;AD26KL;;ACh7KG;EACC,oBAAA;ADm7KJ;;ACh7KI;EACC,qBAAA;ADm7KL;;ACh9KG;EACC,mBAAA;ADm9KJ;;ACh9KI;EACC,oBAAA;ADm9KL;;ACx9KG;EACC,mBAAA;AD29KJ;;ACx9KI;EACC,oBAAA;AD29KL;;ACh+KG;EACC,mBAAA;ADm+KJ;;ACh+KI;EACC,oBAAA;ADm+KL;;ACx+KG;EACC,mBAAA;AD2+KJ;;ACx+KI;EACC,oBAAA;AD2+KL;;ACh/KG;EACC,mBAAA;ADm/KJ;;ACh/KI;EACC,oBAAA;ADm/KL;;ACx/KG;EACC,mBAAA;AD2/KJ;;ACx/KI;EACC,oBAAA;AD2/KL;;AChgLG;EACC,mBAAA;ADmgLJ;;AChgLI;EACC,oBAAA;ADmgLL;;ACxgLG;EACC,mBAAA;AD2gLJ;;ACxgLI;EACC,oBAAA;AD2gLL;;AChhLG;EACC,mBAAA;ADmhLJ;;AChhLI;EACC,oBAAA;ADmhLL;;ACxhLG;EACC,mBAAA;AD2hLJ;;ACxhLI;EACC,oBAAA;AD2hLL;;AChiLG;EACC,oBAAA;ADmiLJ;;AChiLI;EACC,qBAAA;ADmiLL;;ACxiLG;EACC,oBAAA;AD2iLJ;;ACxiLI;EACC,qBAAA;AD2iLL;;AChjLG;EACC,oBAAA;ADmjLJ;;AChjLI;EACC,qBAAA;ADmjLL;;ACxjLG;EACC,oBAAA;AD2jLJ;;ACxjLI;EACC,qBAAA;AD2jLL;;AChkLG;EACC,oBAAA;ADmkLJ;;AChkLI;EACC,qBAAA;ADmkLL;;ACxkLG;EACC,oBAAA;AD2kLJ;;ACxkLI;EACC,qBAAA;AD2kLL;;AChlLG;EACC,oBAAA;ADmlLJ;;AChlLI;EACC,qBAAA;ADmlLL;;ACxlLG;EACC,oBAAA;AD2lLJ;;ACxlLI;EACC,qBAAA;AD2lLL;;AChmLG;EACC,oBAAA;ADmmLJ;;AChmLI;EACC,qBAAA;ADmmLL;;ACxmLG;EACC,oBAAA;AD2mLJ;;ACxmLI;EACC,qBAAA;AD2mLL;;AChnLG;EACC,oBAAA;ADmnLJ;;AChnLI;EACC,qBAAA;ADmnLL;;ACxnLG;EACC,oBAAA;AD2nLJ;;ACxnLI;EACC,qBAAA;AD2nLL;;AChoLG;EACC,oBAAA;ADmoLJ;;AChoLI;EACC,qBAAA;ADmoLL;;ACxoLG;EACC,oBAAA;AD2oLJ;;ACxoLI;EACC,qBAAA;AD2oLL;;AChpLG;EACC,oBAAA;ADmpLJ;;AChpLI;EACC,qBAAA;ADmpLL;;ACxpLG;EACC,oBAAA;AD2pLJ;;ACxpLI;EACC,qBAAA;AD2pLL;;AChqLG;EACC,oBAAA;ADmqLJ;;AChqLI;EACC,qBAAA;ADmqLL;;ACxqLG;EACC,oBAAA;AD2qLJ;;ACxqLI;EACC,qBAAA;AD2qLL;;AChrLG;EACC,oBAAA;ADmrLJ;;AChrLI;EACC,qBAAA;ADmrLL;;ACxrLG;EACC,oBAAA;AD2rLJ;;ACxrLI;EACC,qBAAA;AD2rLL;;AChsLG;EACC,oBAAA;ADmsLJ;;AChsLI;EACC,qBAAA;ADmsLL;;ACxsLG;EACC,oBAAA;AD2sLJ;;ACxsLI;EACC,qBAAA;AD2sLL;;AChtLG;EACC,oBAAA;ADmtLJ;;AChtLI;EACC,qBAAA;ADmtLL;;ACxtLG;EACC,oBAAA;AD2tLJ;;ACxtLI;EACC,qBAAA;AD2tLL;;AChuLG;EACC,oBAAA;ADmuLJ;;AChuLI;EACC,qBAAA;ADmuLL;;ACxuLG;EACC,oBAAA;AD2uLJ;;ACxuLI;EACC,qBAAA;AD2uLL;;AChvLG;EACC,oBAAA;ADmvLJ;;AChvLI;EACC,qBAAA;ADmvLL;;ACxvLG;EACC,oBAAA;AD2vLJ;;ACxvLI;EACC,qBAAA;AD2vLL;;AChwLG;EACC,oBAAA;ADmwLJ;;AChwLI;EACC,qBAAA;ADmwLL;;ACxwLG;EACC,oBAAA;AD2wLJ;;ACxwLI;EACC,qBAAA;AD2wLL;;AChxLG;EACC,oBAAA;ADmxLJ;;AChxLI;EACC,qBAAA;ADmxLL;;ACxxLG;EACC,oBAAA;AD2xLJ;;ACxxLI;EACC,qBAAA;AD2xLL;;AChyLG;EACC,oBAAA;ADmyLJ;;AChyLI;EACC,qBAAA;ADmyLL;;ACxyLG;EACC,oBAAA;AD2yLJ;;ACxyLI;EACC,qBAAA;AD2yLL;;AChzLG;EACC,oBAAA;ADmzLJ;;AChzLI;EACC,qBAAA;ADmzLL;;ACxzLG;EACC,oBAAA;AD2zLJ;;ACxzLI;EACC,qBAAA;AD2zLL;;ACh0LG;EACC,oBAAA;ADm0LJ;;ACh0LI;EACC,qBAAA;ADm0LL;;ACx0LG;EACC,oBAAA;AD20LJ;;ACx0LI;EACC,qBAAA;AD20LL;;ACh1LG;EACC,oBAAA;ADm1LJ;;ACh1LI;EACC,qBAAA;ADm1LL;;ACx1LG;EACC,oBAAA;AD21LJ;;ACx1LI;EACC,qBAAA;AD21LL;;ACh2LG;EACC,oBAAA;ADm2LJ;;ACh2LI;EACC,qBAAA;ADm2LL;;ACh1LG;EACC,mBAAA;ADm1LJ;;ACh1LI;EACC,oBAAA;ADm1LL;;ACx1LG;EACC,mBAAA;AD21LJ;;ACx1LI;EACC,oBAAA;AD21LL;;ACh2LG;EACC,oBAAA;ADm2LJ;;ACh2LI;EACC,qBAAA;ADm2LL;;ACx2LG;EACC,oBAAA;AD22LJ;;ACx2LI;EACC,qBAAA;AD22LL;;ACh3LG;EACC,oBAAA;ADm3LJ;;ACh3LI;EACC,qBAAA;ADm3LL;;ACx3LG;EACC,oBAAA;AD23LJ;;ACx3LI;EACC,qBAAA;AD23LL;;ACh4LG;EACC,oBAAA;ADm4LJ;;ACh4LI;EACC,qBAAA;ADm4LL;;ACx4LG;EACC,oBAAA;AD24LJ;;ACx4LI;EACC,qBAAA;AD24LL;;ACh5LG;EACC,oBAAA;ADm5LJ;;ACh5LI;EACC,qBAAA;ADm5LL;;ACx5LG;EACC,oBAAA;AD25LJ;;ACx5LI;EACC,qBAAA;AD25LL;;ACh6LG;EACC,oBAAA;ADm6LJ;;ACh6LI;EACC,qBAAA;ADm6LL;;ACx6LG;EACC,oBAAA;AD26LJ;;ACx6LI;EACC,qBAAA;AD26LL;;ACh7LG;EACC,oBAAA;ADm7LJ;;ACh7LI;EACC,qBAAA;ADm7LL;;ACx7LG;EACC,oBAAA;AD27LJ;;ACx7LI;EACC,qBAAA;AD27LL;;ACh8LG;EACC,oBAAA;ADm8LJ;;ACh8LI;EACC,qBAAA;ADm8LL;;ACx8LG;EACC,oBAAA;AD28LJ;;ACx8LI;EACC,qBAAA;AD28LL;;ACh9LG;EACC,oBAAA;ADm9LJ;;ACh9LI;EACC,qBAAA;ADm9LL;;ACx9LG;EACC,oBAAA;AD29LJ;;ACx9LI;EACC,qBAAA;AD29LL;;ACh+LG;EACC,oBAAA;ADm+LJ;;ACh+LI;EACC,qBAAA;ADm+LL;;ACx+LG;EACC,oBAAA;AD2+LJ;;ACx+LI;EACC,qBAAA;AD2+LL;;ACh/LG;EACC,oBAAA;ADm/LJ;;ACh/LI;EACC,qBAAA;ADm/LL;;ACx/LG;EACC,oBAAA;AD2/LJ;;ACx/LI;EACC,qBAAA;AD2/LL;;AChgMG;EACC,oBAAA;ADmgMJ;;AChgMI;EACC,qBAAA;ADmgML;;ACxgMG;EACC,oBAAA;AD2gMJ;;ACxgMI;EACC,qBAAA;AD2gML;;AChhMG;EACC,qBAAA;ADmhMJ;;AChhMI;EACC,sBAAA;ADmhML;;AChjMG;EACC,iBAAA;ADmjMJ;;AChjMI;EACC,kBAAA;ADmjML;;ACxjMG;EACC,iBAAA;AD2jMJ;;ACxjMI;EACC,kBAAA;AD2jML;;AChkMG;EACC,iBAAA;ADmkMJ;;AChkMI;EACC,kBAAA;ADmkML;;ACxkMG;EACC,iBAAA;AD2kMJ;;ACxkMI;EACC,kBAAA;AD2kML;;AChlMG;EACC,iBAAA;ADmlMJ;;AChlMI;EACC,kBAAA;ADmlML;;ACxlMG;EACC,iBAAA;AD2lMJ;;ACxlMI;EACC,kBAAA;AD2lML;;AChmMG;EACC,iBAAA;ADmmMJ;;AChmMI;EACC,kBAAA;ADmmML;;ACxmMG;EACC,iBAAA;AD2mMJ;;ACxmMI;EACC,kBAAA;AD2mML;;AChnMG;EACC,iBAAA;ADmnMJ;;AChnMI;EACC,kBAAA;ADmnML;;ACxnMG;EACC,iBAAA;AD2nMJ;;ACxnMI;EACC,kBAAA;AD2nML;;AChoMG;EACC,kBAAA;ADmoMJ;;AChoMI;EACC,mBAAA;ADmoML;;ACxoMG;EACC,kBAAA;AD2oMJ;;ACxoMI;EACC,mBAAA;AD2oML;;AChpMG;EACC,kBAAA;ADmpMJ;;AChpMI;EACC,mBAAA;ADmpML;;ACxpMG;EACC,kBAAA;AD2pMJ;;ACxpMI;EACC,mBAAA;AD2pML;;AChqMG;EACC,kBAAA;ADmqMJ;;AChqMI;EACC,mBAAA;ADmqML;;ACxqMG;EACC,kBAAA;AD2qMJ;;ACxqMI;EACC,mBAAA;AD2qML;;AChrMG;EACC,kBAAA;ADmrMJ;;AChrMI;EACC,mBAAA;ADmrML;;ACxrMG;EACC,kBAAA;AD2rMJ;;ACxrMI;EACC,mBAAA;AD2rML;;AChsMG;EACC,kBAAA;ADmsMJ;;AChsMI;EACC,mBAAA;ADmsML;;ACxsMG;EACC,kBAAA;AD2sMJ;;ACxsMI;EACC,mBAAA;AD2sML;;AChtMG;EACC,kBAAA;ADmtMJ;;AChtMI;EACC,mBAAA;ADmtML;;ACxtMG;EACC,kBAAA;AD2tMJ;;ACxtMI;EACC,mBAAA;AD2tML;;AChuMG;EACC,kBAAA;ADmuMJ;;AChuMI;EACC,mBAAA;ADmuML;;ACxuMG;EACC,kBAAA;AD2uMJ;;ACxuMI;EACC,mBAAA;AD2uML;;AChvMG;EACC,kBAAA;ADmvMJ;;AChvMI;EACC,mBAAA;ADmvML;;ACxvMG;EACC,kBAAA;AD2vMJ;;ACxvMI;EACC,mBAAA;AD2vML;;AChwMG;EACC,kBAAA;ADmwMJ;;AChwMI;EACC,mBAAA;ADmwML;;ACxwMG;EACC,kBAAA;AD2wMJ;;ACxwMI;EACC,mBAAA;AD2wML;;AChxMG;EACC,kBAAA;ADmxMJ;;AChxMI;EACC,mBAAA;ADmxML;;ACxxMG;EACC,kBAAA;AD2xMJ;;ACxxMI;EACC,mBAAA;AD2xML;;AChyMG;EACC,kBAAA;ADmyMJ;;AChyMI;EACC,mBAAA;ADmyML;;ACxyMG;EACC,kBAAA;AD2yMJ;;ACxyMI;EACC,mBAAA;AD2yML;;AChzMG;EACC,kBAAA;ADmzMJ;;AChzMI;EACC,mBAAA;ADmzML;;ACxzMG;EACC,kBAAA;AD2zMJ;;ACxzMI;EACC,mBAAA;AD2zML;;ACh0MG;EACC,kBAAA;ADm0MJ;;ACh0MI;EACC,mBAAA;ADm0ML;;ACx0MG;EACC,kBAAA;AD20MJ;;ACx0MI;EACC,mBAAA;AD20ML;;ACh1MG;EACC,kBAAA;ADm1MJ;;ACh1MI;EACC,mBAAA;ADm1ML;;ACx1MG;EACC,kBAAA;AD21MJ;;ACx1MI;EACC,mBAAA;AD21ML;;ACh2MG;EACC,kBAAA;ADm2MJ;;ACh2MI;EACC,mBAAA;ADm2ML;;ACx2MG;EACC,kBAAA;AD22MJ;;ACx2MI;EACC,mBAAA;AD22ML;;ACh3MG;EACC,kBAAA;ADm3MJ;;ACh3MI;EACC,mBAAA;ADm3ML;;ACx3MG;EACC,kBAAA;AD23MJ;;ACx3MI;EACC,mBAAA;AD23ML;;ACh4MG;EACC,kBAAA;ADm4MJ;;ACh4MI;EACC,mBAAA;ADm4ML;;ACx4MG;EACC,kBAAA;AD24MJ;;ACx4MI;EACC,mBAAA;AD24ML;;ACh5MG;EACC,kBAAA;ADm5MJ;;ACh5MI;EACC,mBAAA;ADm5ML;;ACx5MG;EACC,kBAAA;AD25MJ;;ACx5MI;EACC,mBAAA;AD25ML;;ACh6MG;EACC,kBAAA;ADm6MJ;;ACh6MI;EACC,mBAAA;ADm6ML;;ACx6MG;EACC,kBAAA;AD26MJ;;ACx6MI;EACC,mBAAA;AD26ML;;ACh7MG;EACC,kBAAA;ADm7MJ;;ACh7MI;EACC,mBAAA;ADm7ML;;ACx7MG;EACC,kBAAA;AD27MJ;;ACx7MI;EACC,mBAAA;AD27ML;;ACh8MG;EACC,kBAAA;ADm8MJ;;ACh8MI;EACC,mBAAA;ADm8ML;;ACh7MG;EACC,iBAAA;ADm7MJ;;ACh7MI;EACC,kBAAA;ADm7ML;;ACx7MG;EACC,iBAAA;AD27MJ;;ACx7MI;EACC,kBAAA;AD27ML;;ACh8MG;EACC,kBAAA;ADm8MJ;;ACh8MI;EACC,mBAAA;ADm8ML;;ACx8MG;EACC,kBAAA;AD28MJ;;ACx8MI;EACC,mBAAA;AD28ML;;ACh9MG;EACC,kBAAA;ADm9MJ;;ACh9MI;EACC,mBAAA;ADm9ML;;ACx9MG;EACC,kBAAA;AD29MJ;;ACx9MI;EACC,mBAAA;AD29ML;;ACh+MG;EACC,kBAAA;ADm+MJ;;ACh+MI;EACC,mBAAA;ADm+ML;;ACx+MG;EACC,kBAAA;AD2+MJ;;ACx+MI;EACC,mBAAA;AD2+ML;;ACh/MG;EACC,kBAAA;ADm/MJ;;ACh/MI;EACC,mBAAA;ADm/ML;;ACx/MG;EACC,kBAAA;AD2/MJ;;ACx/MI;EACC,mBAAA;AD2/ML;;AChgNG;EACC,kBAAA;ADmgNJ;;AChgNI;EACC,mBAAA;ADmgNL;;ACxgNG;EACC,kBAAA;AD2gNJ;;ACxgNI;EACC,mBAAA;AD2gNL;;AChhNG;EACC,kBAAA;ADmhNJ;;AChhNI;EACC,mBAAA;ADmhNL;;ACxhNG;EACC,kBAAA;AD2hNJ;;ACxhNI;EACC,mBAAA;AD2hNL;;AChiNG;EACC,kBAAA;ADmiNJ;;AChiNI;EACC,mBAAA;ADmiNL;;ACxiNG;EACC,kBAAA;AD2iNJ;;ACxiNI;EACC,mBAAA;AD2iNL;;AChjNG;EACC,kBAAA;ADmjNJ;;AChjNI;EACC,mBAAA;ADmjNL;;ACxjNG;EACC,kBAAA;AD2jNJ;;ACxjNI;EACC,mBAAA;AD2jNL;;AChkNG;EACC,kBAAA;ADmkNJ;;AChkNI;EACC,mBAAA;ADmkNL;;ACxkNG;EACC,kBAAA;AD2kNJ;;ACxkNI;EACC,mBAAA;AD2kNL;;AChlNG;EACC,kBAAA;ADmlNJ;;AChlNI;EACC,mBAAA;ADmlNL;;ACxlNG;EACC,kBAAA;AD2lNJ;;ACxlNI;EACC,mBAAA;AD2lNL;;AChmNG;EACC,kBAAA;ADmmNJ;;AChmNI;EACC,mBAAA;ADmmNL;;ACxmNG;EACC,kBAAA;AD2mNJ;;ACxmNI;EACC,mBAAA;AD2mNL;;AChnNG;EACC,mBAAA;ADmnNJ;;AChnNI;EACC,oBAAA;ADmnNL;;ACtoNG;EACC,iBAAA;EACA,kBAAA;ADyoNJ;;AC3oNG;EACC,iBAAA;EACA,kBAAA;AD8oNJ;;AChpNG;EACC,iBAAA;EACA,kBAAA;ADmpNJ;;ACrpNG;EACC,iBAAA;EACA,kBAAA;ADwpNJ;;AC1pNG;EACC,iBAAA;EACA,kBAAA;AD6pNJ;;AC/pNG;EACC,iBAAA;EACA,kBAAA;ADkqNJ;;ACpqNG;EACC,iBAAA;EACA,kBAAA;ADuqNJ;;ACzqNG;EACC,iBAAA;EACA,kBAAA;AD4qNJ;;AC9qNG;EACC,iBAAA;EACA,kBAAA;ADirNJ;;ACnrNG;EACC,iBAAA;EACA,kBAAA;ADsrNJ;;ACxrNG;EACC,kBAAA;EACA,mBAAA;AD2rNJ;;AC7rNG;EACC,kBAAA;EACA,mBAAA;ADgsNJ;;AClsNG;EACC,kBAAA;EACA,mBAAA;ADqsNJ;;ACvsNG;EACC,kBAAA;EACA,mBAAA;AD0sNJ;;AC5sNG;EACC,kBAAA;EACA,mBAAA;AD+sNJ;;ACjtNG;EACC,kBAAA;EACA,mBAAA;ADotNJ;;ACttNG;EACC,kBAAA;EACA,mBAAA;ADytNJ;;AC3tNG;EACC,kBAAA;EACA,mBAAA;AD8tNJ;;AChuNG;EACC,kBAAA;EACA,mBAAA;ADmuNJ;;ACruNG;EACC,kBAAA;EACA,mBAAA;ADwuNJ;;AC1uNG;EACC,kBAAA;EACA,mBAAA;AD6uNJ;;AC/uNG;EACC,kBAAA;EACA,mBAAA;ADkvNJ;;ACpvNG;EACC,kBAAA;EACA,mBAAA;ADuvNJ;;ACzvNG;EACC,kBAAA;EACA,mBAAA;AD4vNJ;;AC9vNG;EACC,kBAAA;EACA,mBAAA;ADiwNJ;;ACnwNG;EACC,kBAAA;EACA,mBAAA;ADswNJ;;ACxwNG;EACC,kBAAA;EACA,mBAAA;AD2wNJ;;AC7wNG;EACC,kBAAA;EACA,mBAAA;ADgxNJ;;AClxNG;EACC,kBAAA;EACA,mBAAA;ADqxNJ;;ACvxNG;EACC,kBAAA;EACA,mBAAA;AD0xNJ;;AC5xNG;EACC,kBAAA;EACA,mBAAA;AD+xNJ;;ACjyNG;EACC,kBAAA;EACA,mBAAA;ADoyNJ;;ACtyNG;EACC,kBAAA;EACA,mBAAA;ADyyNJ;;AC3yNG;EACC,kBAAA;EACA,mBAAA;AD8yNJ;;AChzNG;EACC,kBAAA;EACA,mBAAA;ADmzNJ;;ACrzNG;EACC,kBAAA;EACA,mBAAA;ADwzNJ;;AC1zNG;EACC,kBAAA;EACA,mBAAA;AD6zNJ;;AC/zNG;EACC,kBAAA;EACA,mBAAA;ADk0NJ;;ACp0NG;EACC,kBAAA;EACA,mBAAA;ADu0NJ;;ACz0NG;EACC,kBAAA;EACA,mBAAA;AD40NJ;;AC90NG;EACC,kBAAA;EACA,mBAAA;ADi1NJ;;ACn1NG;EACC,kBAAA;EACA,mBAAA;ADs1NJ;;ACx1NG;EACC,kBAAA;EACA,mBAAA;AD21NJ;;AC71NG;EACC,kBAAA;EACA,mBAAA;ADg2NJ;;ACl2NG;EACC,kBAAA;EACA,mBAAA;ADq2NJ;;ACv2NG;EACC,kBAAA;EACA,mBAAA;AD02NJ;;AC52NG;EACC,kBAAA;EACA,mBAAA;AD+2NJ;;ACj3NG;EACC,kBAAA;EACA,mBAAA;ADo3NJ;;ACt3NG;EACC,kBAAA;EACA,mBAAA;ADy3NJ;;AC33NG;EACC,kBAAA;EACA,mBAAA;AD83NJ;;ACh4NG;EACC,kBAAA;EACA,mBAAA;ADm4NJ;;AC72NG;EACC,iBAAA;EACA,kBAAA;ADg3NJ;;ACl3NG;EACC,iBAAA;EACA,kBAAA;ADq3NJ;;ACv3NG;EACC,kBAAA;EACA,mBAAA;AD03NJ;;AC53NG;EACC,kBAAA;EACA,mBAAA;AD+3NJ;;ACj4NG;EACC,kBAAA;EACA,mBAAA;ADo4NJ;;ACt4NG;EACC,kBAAA;EACA,mBAAA;ADy4NJ;;AC34NG;EACC,kBAAA;EACA,mBAAA;AD84NJ;;ACh5NG;EACC,kBAAA;EACA,mBAAA;ADm5NJ;;ACr5NG;EACC,kBAAA;EACA,mBAAA;ADw5NJ;;AC15NG;EACC,kBAAA;EACA,mBAAA;AD65NJ;;AC/5NG;EACC,kBAAA;EACA,mBAAA;ADk6NJ;;ACp6NG;EACC,kBAAA;EACA,mBAAA;ADu6NJ;;ACz6NG;EACC,kBAAA;EACA,mBAAA;AD46NJ;;AC96NG;EACC,kBAAA;EACA,mBAAA;ADi7NJ;;ACn7NG;EACC,kBAAA;EACA,mBAAA;ADs7NJ;;ACx7NG;EACC,kBAAA;EACA,mBAAA;AD27NJ;;AC77NG;EACC,kBAAA;EACA,mBAAA;ADg8NJ;;ACl8NG;EACC,kBAAA;EACA,mBAAA;ADq8NJ;;ACv8NG;EACC,kBAAA;EACA,mBAAA;AD08NJ;;AC58NG;EACC,kBAAA;EACA,mBAAA;AD+8NJ;;ACj9NG;EACC,kBAAA;EACA,mBAAA;ADo9NJ;;ACt9NG;EACC,kBAAA;EACA,mBAAA;ADy9NJ;;AC39NG;EACC,kBAAA;EACA,mBAAA;AD89NJ;;ACh+NG;EACC,kBAAA;EACA,mBAAA;ADm+NJ;;ACr+NG;EACC,mBAAA;EACA,oBAAA;ADw+NJ;;AC5/NG;EACC,gBAAA;EACA,mBAAA;AD+/NJ;;ACjgOG;EACC,gBAAA;EACA,mBAAA;ADogOJ;;ACtgOG;EACC,gBAAA;EACA,mBAAA;ADygOJ;;AC3gOG;EACC,gBAAA;EACA,mBAAA;AD8gOJ;;AChhOG;EACC,gBAAA;EACA,mBAAA;ADmhOJ;;ACrhOG;EACC,gBAAA;EACA,mBAAA;ADwhOJ;;AC1hOG;EACC,gBAAA;EACA,mBAAA;AD6hOJ;;AC/hOG;EACC,gBAAA;EACA,mBAAA;ADkiOJ;;ACpiOG;EACC,gBAAA;EACA,mBAAA;ADuiOJ;;ACziOG;EACC,gBAAA;EACA,mBAAA;AD4iOJ;;AC9iOG;EACC,iBAAA;EACA,oBAAA;ADijOJ;;ACnjOG;EACC,iBAAA;EACA,oBAAA;ADsjOJ;;ACxjOG;EACC,iBAAA;EACA,oBAAA;AD2jOJ;;AC7jOG;EACC,iBAAA;EACA,oBAAA;ADgkOJ;;AClkOG;EACC,iBAAA;EACA,oBAAA;ADqkOJ;;ACvkOG;EACC,iBAAA;EACA,oBAAA;AD0kOJ;;AC5kOG;EACC,iBAAA;EACA,oBAAA;AD+kOJ;;ACjlOG;EACC,iBAAA;EACA,oBAAA;ADolOJ;;ACtlOG;EACC,iBAAA;EACA,oBAAA;ADylOJ;;AC3lOG;EACC,iBAAA;EACA,oBAAA;AD8lOJ;;AChmOG;EACC,iBAAA;EACA,oBAAA;ADmmOJ;;ACrmOG;EACC,iBAAA;EACA,oBAAA;ADwmOJ;;AC1mOG;EACC,iBAAA;EACA,oBAAA;AD6mOJ;;AC/mOG;EACC,iBAAA;EACA,oBAAA;ADknOJ;;ACpnOG;EACC,iBAAA;EACA,oBAAA;ADunOJ;;ACznOG;EACC,iBAAA;EACA,oBAAA;AD4nOJ;;AC9nOG;EACC,iBAAA;EACA,oBAAA;ADioOJ;;ACnoOG;EACC,iBAAA;EACA,oBAAA;ADsoOJ;;ACxoOG;EACC,iBAAA;EACA,oBAAA;AD2oOJ;;AC7oOG;EACC,iBAAA;EACA,oBAAA;ADgpOJ;;AClpOG;EACC,iBAAA;EACA,oBAAA;ADqpOJ;;ACvpOG;EACC,iBAAA;EACA,oBAAA;AD0pOJ;;AC5pOG;EACC,iBAAA;EACA,oBAAA;AD+pOJ;;ACjqOG;EACC,iBAAA;EACA,oBAAA;ADoqOJ;;ACtqOG;EACC,iBAAA;EACA,oBAAA;ADyqOJ;;AC3qOG;EACC,iBAAA;EACA,oBAAA;AD8qOJ;;AChrOG;EACC,iBAAA;EACA,oBAAA;ADmrOJ;;ACrrOG;EACC,iBAAA;EACA,oBAAA;ADwrOJ;;AC1rOG;EACC,iBAAA;EACA,oBAAA;AD6rOJ;;AC/rOG;EACC,iBAAA;EACA,oBAAA;ADksOJ;;ACpsOG;EACC,iBAAA;EACA,oBAAA;ADusOJ;;ACzsOG;EACC,iBAAA;EACA,oBAAA;AD4sOJ;;AC9sOG;EACC,iBAAA;EACA,oBAAA;ADitOJ;;ACntOG;EACC,iBAAA;EACA,oBAAA;ADstOJ;;ACxtOG;EACC,iBAAA;EACA,oBAAA;AD2tOJ;;AC7tOG;EACC,iBAAA;EACA,oBAAA;ADguOJ;;ACluOG;EACC,iBAAA;EACA,oBAAA;ADquOJ;;ACvuOG;EACC,iBAAA;EACA,oBAAA;AD0uOJ;;AC5uOG;EACC,iBAAA;EACA,oBAAA;AD+uOJ;;ACjvOG;EACC,iBAAA;EACA,oBAAA;ADovOJ;;ACtvOG;EACC,iBAAA;EACA,oBAAA;ADyvOJ;;ACnuOG;EACC,gBAAA;EACA,mBAAA;ADsuOJ;;ACxuOG;EACC,gBAAA;EACA,mBAAA;AD2uOJ;;AC7uOG;EACC,iBAAA;EACA,oBAAA;ADgvOJ;;AClvOG;EACC,iBAAA;EACA,oBAAA;ADqvOJ;;ACvvOG;EACC,iBAAA;EACA,oBAAA;AD0vOJ;;AC5vOG;EACC,iBAAA;EACA,oBAAA;AD+vOJ;;ACjwOG;EACC,iBAAA;EACA,oBAAA;ADowOJ;;ACtwOG;EACC,iBAAA;EACA,oBAAA;ADywOJ;;AC3wOG;EACC,iBAAA;EACA,oBAAA;AD8wOJ;;AChxOG;EACC,iBAAA;EACA,oBAAA;ADmxOJ;;ACrxOG;EACC,iBAAA;EACA,oBAAA;ADwxOJ;;AC1xOG;EACC,iBAAA;EACA,oBAAA;AD6xOJ;;AC/xOG;EACC,iBAAA;EACA,oBAAA;ADkyOJ;;ACpyOG;EACC,iBAAA;EACA,oBAAA;ADuyOJ;;ACzyOG;EACC,iBAAA;EACA,oBAAA;AD4yOJ;;AC9yOG;EACC,iBAAA;EACA,oBAAA;ADizOJ;;ACnzOG;EACC,iBAAA;EACA,oBAAA;ADszOJ;;ACxzOG;EACC,iBAAA;EACA,oBAAA;AD2zOJ;;AC7zOG;EACC,iBAAA;EACA,oBAAA;ADg0OJ;;ACl0OG;EACC,iBAAA;EACA,oBAAA;ADq0OJ;;ACv0OG;EACC,iBAAA;EACA,oBAAA;AD00OJ;;AC50OG;EACC,iBAAA;EACA,oBAAA;AD+0OJ;;ACj1OG;EACC,iBAAA;EACA,oBAAA;ADo1OJ;;ACt1OG;EACC,iBAAA;EACA,oBAAA;ADy1OJ;;AC31OG;EACC,kBAAA;EACA,qBAAA;AD81OJ;;ACt1OE;EACC,SAAA;ADy1OH;;ACv1OE;EACC,UAAA;AD01OH;;AC91OE;EACC,SAAA;ADi2OH;;AC/1OE;EACC,UAAA;ADk2OH;;ACt2OE;EACC,SAAA;ADy2OH;;ACv2OE;EACC,UAAA;AD02OH;;AC92OE;EACC,SAAA;ADi3OH;;AC/2OE;EACC,UAAA;ADk3OH;;ACt3OE;EACC,SAAA;ADy3OH;;ACv3OE;EACC,UAAA;AD03OH;;AC93OE;EACC,SAAA;ADi4OH;;AC/3OE;EACC,UAAA;ADk4OH;;ACt4OE;EACC,SAAA;ADy4OH;;ACv4OE;EACC,UAAA;AD04OH;;AC94OE;EACC,SAAA;ADi5OH;;AC/4OE;EACC,UAAA;ADk5OH;;ACt5OE;EACC,SAAA;ADy5OH;;ACv5OE;EACC,UAAA;AD05OH;;AC95OE;EACC,SAAA;ADi6OH;;AC/5OE;EACC,UAAA;ADk6OH;;ACt6OE;EACC,UAAA;ADy6OH;;ACv6OE;EACC,WAAA;AD06OH;;AC96OE;EACC,UAAA;ADi7OH;;AC/6OE;EACC,WAAA;ADk7OH;;ACt7OE;EACC,UAAA;ADy7OH;;ACv7OE;EACC,WAAA;AD07OH;;AC97OE;EACC,UAAA;ADi8OH;;AC/7OE;EACC,WAAA;ADk8OH;;ACt8OE;EACC,UAAA;ADy8OH;;ACv8OE;EACC,WAAA;AD08OH;;AC98OE;EACC,UAAA;ADi9OH;;AC/8OE;EACC,WAAA;ADk9OH;;ACt9OE;EACC,UAAA;ADy9OH;;ACv9OE;EACC,WAAA;AD09OH;;AC99OE;EACC,UAAA;ADi+OH;;AC/9OE;EACC,WAAA;ADk+OH;;ACt+OE;EACC,UAAA;ADy+OH;;ACv+OE;EACC,WAAA;AD0+OH;;AC9+OE;EACC,UAAA;ADi/OH;;AC/+OE;EACC,WAAA;ADk/OH;;ACt/OE;EACC,UAAA;ADy/OH;;ACv/OE;EACC,WAAA;AD0/OH;;AC9/OE;EACC,UAAA;ADigPH;;AC//OE;EACC,WAAA;ADkgPH;;ACtgPE;EACC,UAAA;ADygPH;;ACvgPE;EACC,WAAA;AD0gPH;;AC9gPE;EACC,UAAA;ADihPH;;AC/gPE;EACC,WAAA;ADkhPH;;ACthPE;EACC,UAAA;ADyhPH;;ACvhPE;EACC,WAAA;AD0hPH;;AC9hPE;EACC,UAAA;ADiiPH;;AC/hPE;EACC,WAAA;ADkiPH;;ACtiPE;EACC,UAAA;ADyiPH;;ACviPE;EACC,WAAA;AD0iPH;;AC9iPE;EACC,UAAA;ADijPH;;AC/iPE;EACC,WAAA;ADkjPH;;ACtjPE;EACC,UAAA;ADyjPH;;ACvjPE;EACC,WAAA;AD0jPH;;AC9jPE;EACC,UAAA;ADikPH;;AC/jPE;EACC,WAAA;ADkkPH;;ACtkPE;EACC,UAAA;ADykPH;;ACvkPE;EACC,WAAA;AD0kPH;;AC9kPE;EACC,UAAA;ADilPH;;AC/kPE;EACC,WAAA;ADklPH;;ACtlPE;EACC,UAAA;ADylPH;;ACvlPE;EACC,WAAA;AD0lPH;;AC9lPE;EACC,UAAA;ADimPH;;AC/lPE;EACC,WAAA;ADkmPH;;ACtmPE;EACC,UAAA;ADymPH;;ACvmPE;EACC,WAAA;AD0mPH;;AC9mPE;EACC,UAAA;ADinPH;;AC/mPE;EACC,WAAA;ADknPH;;ACtnPE;EACC,UAAA;ADynPH;;ACvnPE;EACC,WAAA;AD0nPH;;AC9nPE;EACC,UAAA;ADioPH;;AC/nPE;EACC,WAAA;ADkoPH;;ACtoPE;EACC,UAAA;ADyoPH;;ACvoPE;EACC,WAAA;AD0oPH;;AC9oPE;EACC,UAAA;ADipPH;;AC/oPE;EACC,WAAA;ADkpPH;;ACtpPE;EACC,UAAA;ADypPH;;ACvpPE;EACC,WAAA;AD0pPH;;AC9pPE;EACC,UAAA;ADiqPH;;AC/pPE;EACC,WAAA;ADkqPH;;ACtqPE;EACC,UAAA;ADyqPH;;ACvqPE;EACC,WAAA;AD0qPH;;AC9qPE;EACC,UAAA;ADirPH;;AC/qPE;EACC,WAAA;ADkrPH;;ACtrPE;EACC,UAAA;ADyrPH;;ACvrPE;EACC,WAAA;AD0rPH;;AC9rPE;EACC,UAAA;ADisPH;;AC/rPE;EACC,WAAA;ADksPH;;ACtsPE;EACC,UAAA;ADysPH;;ACvsPE;EACC,WAAA;AD0sPH;;AC9sPE;EACC,UAAA;ADitPH;;AC/sPE;EACC,WAAA;ADktPH;;ACttPE;EACC,UAAA;ADytPH;;ACvtPE;EACC,WAAA;AD0tPH;;AC9tPE;EACC,UAAA;ADiuPH;;AC/tPE;EACC,WAAA;ADkuPH;;ACtuPE;EACC,UAAA;ADyuPH;;ACvuPE;EACC,WAAA;AD0uPH;;ACtuPE;EACC,SAAA;ADyuPH;;ACvuPE;EACC,UAAA;AD0uPH;;AC9uPE;EACC,SAAA;ADivPH;;AC/uPE;EACC,UAAA;ADkvPH;;ACtvPE;EACC,UAAA;ADyvPH;;ACvvPE;EACC,WAAA;AD0vPH;;AC9vPE;EACC,UAAA;ADiwPH;;AC/vPE;EACC,WAAA;ADkwPH;;ACtwPE;EACC,UAAA;ADywPH;;ACvwPE;EACC,WAAA;AD0wPH;;AC9wPE;EACC,UAAA;ADixPH;;AC/wPE;EACC,WAAA;ADkxPH;;ACtxPE;EACC,UAAA;ADyxPH;;ACvxPE;EACC,WAAA;AD0xPH;;AC9xPE;EACC,UAAA;ADiyPH;;AC/xPE;EACC,WAAA;ADkyPH;;ACtyPE;EACC,UAAA;ADyyPH;;ACvyPE;EACC,WAAA;AD0yPH;;AC9yPE;EACC,UAAA;ADizPH;;AC/yPE;EACC,WAAA;ADkzPH;;ACtzPE;EACC,UAAA;ADyzPH;;ACvzPE;EACC,WAAA;AD0zPH;;AC9zPE;EACC,UAAA;ADi0PH;;AC/zPE;EACC,WAAA;ADk0PH;;ACt0PE;EACC,UAAA;ADy0PH;;ACv0PE;EACC,WAAA;AD00PH;;AC90PE;EACC,UAAA;ADi1PH;;AC/0PE;EACC,WAAA;ADk1PH;;ACt1PE;EACC,UAAA;ADy1PH;;ACv1PE;EACC,WAAA;AD01PH;;AC91PE;EACC,UAAA;ADi2PH;;AC/1PE;EACC,WAAA;ADk2PH;;ACt2PE;EACC,UAAA;ADy2PH;;ACv2PE;EACC,WAAA;AD02PH;;AC92PE;EACC,UAAA;ADi3PH;;AC/2PE;EACC,WAAA;ADk3PH;;ACt3PE;EACC,UAAA;ADy3PH;;ACv3PE;EACC,WAAA;AD03PH;;AC93PE;EACC,UAAA;ADi4PH;;AC/3PE;EACC,WAAA;ADk4PH;;ACt4PE;EACC,UAAA;ADy4PH;;ACv4PE;EACC,WAAA;AD04PH;;AC94PE;EACC,UAAA;ADi5PH;;AC/4PE;EACC,WAAA;ADk5PH;;ACt5PE;EACC,UAAA;ADy5PH;;ACv5PE;EACC,WAAA;AD05PH;;AC95PE;EACC,UAAA;ADi6PH;;AC/5PE;EACC,WAAA;ADk6PH;;ACt6PE;EACC,WAAA;ADy6PH;;ACv6PE;EACC,YAAA;AD06PH;;ACt7PE;EACC,WAAA;ADy7PH;;ACv7PE;EACC,YAAA;AD07PH;;AC97PE;EACC,WAAA;ADi8PH;;AC/7PE;EACC,YAAA;ADk8PH;;ACt8PE;EACC,WAAA;ADy8PH;;ACv8PE;EACC,YAAA;AD08PH;;AC98PE;EACC,WAAA;ADi9PH;;AC/8PE;EACC,YAAA;ADk9PH;;ACt9PE;EACC,WAAA;ADy9PH;;ACv9PE;EACC,YAAA;AD09PH;;AC99PE;EACC,WAAA;ADi+PH;;AC/9PE;EACC,YAAA;ADk+PH;;ACt+PE;EACC,WAAA;ADy+PH;;ACv+PE;EACC,YAAA;AD0+PH;;AC9+PE;EACC,WAAA;ADi/PH;;AC/+PE;EACC,YAAA;ADk/PH;;ACt/PE;EACC,WAAA;ADy/PH;;ACv/PE;EACC,YAAA;AD0/PH;;AC9/PE;EACC,WAAA;ADigQH;;AC//PE;EACC,YAAA;ADkgQH;;ACtgQE;EACC,YAAA;ADygQH;;ACvgQE;EACC,aAAA;AD0gQH;;AC9gQE;EACC,YAAA;ADihQH;;AC/gQE;EACC,aAAA;ADkhQH;;ACthQE;EACC,YAAA;ADyhQH;;ACvhQE;EACC,aAAA;AD0hQH;;AC9hQE;EACC,YAAA;ADiiQH;;AC/hQE;EACC,aAAA;ADkiQH;;ACtiQE;EACC,YAAA;ADyiQH;;ACviQE;EACC,aAAA;AD0iQH;;AC9iQE;EACC,YAAA;ADijQH;;AC/iQE;EACC,aAAA;ADkjQH;;ACtjQE;EACC,YAAA;ADyjQH;;ACvjQE;EACC,aAAA;AD0jQH;;AC9jQE;EACC,YAAA;ADikQH;;AC/jQE;EACC,aAAA;ADkkQH;;ACtkQE;EACC,YAAA;ADykQH;;ACvkQE;EACC,aAAA;AD0kQH;;AC9kQE;EACC,YAAA;ADilQH;;AC/kQE;EACC,aAAA;ADklQH;;ACtlQE;EACC,YAAA;ADylQH;;ACvlQE;EACC,aAAA;AD0lQH;;AC9lQE;EACC,YAAA;ADimQH;;AC/lQE;EACC,aAAA;ADkmQH;;ACtmQE;EACC,YAAA;ADymQH;;ACvmQE;EACC,aAAA;AD0mQH;;AC9mQE;EACC,YAAA;ADinQH;;AC/mQE;EACC,aAAA;ADknQH;;ACtnQE;EACC,YAAA;ADynQH;;ACvnQE;EACC,aAAA;AD0nQH;;AC9nQE;EACC,YAAA;ADioQH;;AC/nQE;EACC,aAAA;ADkoQH;;ACtoQE;EACC,YAAA;ADyoQH;;ACvoQE;EACC,aAAA;AD0oQH;;AC9oQE;EACC,YAAA;ADipQH;;AC/oQE;EACC,aAAA;ADkpQH;;ACtpQE;EACC,YAAA;ADypQH;;ACvpQE;EACC,aAAA;AD0pQH;;AC9pQE;EACC,YAAA;ADiqQH;;AC/pQE;EACC,aAAA;ADkqQH;;ACtqQE;EACC,YAAA;ADyqQH;;ACvqQE;EACC,aAAA;AD0qQH;;AC9qQE;EACC,YAAA;ADirQH;;AC/qQE;EACC,aAAA;ADkrQH;;ACtrQE;EACC,YAAA;ADyrQH;;ACvrQE;EACC,aAAA;AD0rQH;;AC9rQE;EACC,YAAA;ADisQH;;AC/rQE;EACC,aAAA;ADksQH;;ACtsQE;EACC,YAAA;ADysQH;;ACvsQE;EACC,aAAA;AD0sQH;;AC9sQE;EACC,YAAA;ADitQH;;AC/sQE;EACC,aAAA;ADktQH;;ACttQE;EACC,YAAA;ADytQH;;ACvtQE;EACC,aAAA;AD0tQH;;AC9tQE;EACC,YAAA;ADiuQH;;AC/tQE;EACC,aAAA;ADkuQH;;ACtuQE;EACC,YAAA;ADyuQH;;ACvuQE;EACC,aAAA;AD0uQH;;AC9uQE;EACC,YAAA;ADivQH;;AC/uQE;EACC,aAAA;ADkvQH;;ACtvQE;EACC,YAAA;ADyvQH;;ACvvQE;EACC,aAAA;AD0vQH;;AC9vQE;EACC,YAAA;ADiwQH;;AC/vQE;EACC,aAAA;ADkwQH;;ACtwQE;EACC,YAAA;ADywQH;;ACvwQE;EACC,aAAA;AD0wQH;;AC9wQE;EACC,YAAA;ADixQH;;AC/wQE;EACC,aAAA;ADkxQH;;ACtxQE;EACC,YAAA;ADyxQH;;ACvxQE;EACC,aAAA;AD0xQH;;AC9xQE;EACC,YAAA;ADiyQH;;AC/xQE;EACC,aAAA;ADkyQH;;ACtyQE;EACC,YAAA;ADyyQH;;ACvyQE;EACC,aAAA;AD0yQH;;AC9yQE;EACC,YAAA;ADizQH;;AC/yQE;EACC,aAAA;ADkzQH;;ACtzQE;EACC,YAAA;ADyzQH;;ACvzQE;EACC,aAAA;AD0zQH;;AC9zQE;EACC,YAAA;ADi0QH;;AC/zQE;EACC,aAAA;ADk0QH;;ACt0QE;EACC,YAAA;ADy0QH;;ACv0QE;EACC,aAAA;AD00QH;;ACt0QE;EACC,WAAA;ADy0QH;;ACv0QE;EACC,YAAA;AD00QH;;AC90QE;EACC,WAAA;ADi1QH;;AC/0QE;EACC,YAAA;ADk1QH;;ACt1QE;EACC,YAAA;ADy1QH;;ACv1QE;EACC,aAAA;AD01QH;;AC91QE;EACC,YAAA;ADi2QH;;AC/1QE;EACC,aAAA;ADk2QH;;ACt2QE;EACC,YAAA;ADy2QH;;ACv2QE;EACC,aAAA;AD02QH;;AC92QE;EACC,YAAA;ADi3QH;;AC/2QE;EACC,aAAA;ADk3QH;;ACt3QE;EACC,YAAA;ADy3QH;;ACv3QE;EACC,aAAA;AD03QH;;AC93QE;EACC,YAAA;ADi4QH;;AC/3QE;EACC,aAAA;ADk4QH;;ACt4QE;EACC,YAAA;ADy4QH;;ACv4QE;EACC,aAAA;AD04QH;;AC94QE;EACC,YAAA;ADi5QH;;AC/4QE;EACC,aAAA;ADk5QH;;ACt5QE;EACC,YAAA;ADy5QH;;ACv5QE;EACC,aAAA;AD05QH;;AC95QE;EACC,YAAA;ADi6QH;;AC/5QE;EACC,aAAA;ADk6QH;;ACt6QE;EACC,YAAA;ADy6QH;;ACv6QE;EACC,aAAA;AD06QH;;AC96QE;EACC,YAAA;ADi7QH;;AC/6QE;EACC,aAAA;ADk7QH;;ACt7QE;EACC,YAAA;ADy7QH;;ACv7QE;EACC,aAAA;AD07QH;;AC97QE;EACC,YAAA;ADi8QH;;AC/7QE;EACC,aAAA;ADk8QH;;ACt8QE;EACC,YAAA;ADy8QH;;ACv8QE;EACC,aAAA;AD08QH;;AC98QE;EACC,YAAA;ADi9QH;;AC/8QE;EACC,aAAA;ADk9QH;;ACt9QE;EACC,YAAA;ADy9QH;;ACv9QE;EACC,aAAA;AD09QH;;AC99QE;EACC,YAAA;ADi+QH;;AC/9QE;EACC,aAAA;ADk+QH;;ACt+QE;EACC,YAAA;ADy+QH;;ACv+QE;EACC,aAAA;AD0+QH;;AC9+QE;EACC,YAAA;ADi/QH;;AC/+QE;EACC,aAAA;ADk/QH;;ACt/QE;EACC,YAAA;ADy/QH;;ACv/QE;EACC,aAAA;AD0/QH;;AC9/QE;EACC,YAAA;ADigRH;;AC//QE;EACC,aAAA;ADkgRH;;ACtgRE;EACC,aAAA;ADygRH;;ACvgRE;EACC,cAAA;AD0gRH;;ACthRE;EACC,YAAA;ADyhRH;;ACvhRE;EACC,aAAA;AD0hRH;;AC9hRE;EACC,YAAA;ADiiRH;;AC/hRE;EACC,aAAA;ADkiRH;;ACtiRE;EACC,YAAA;ADyiRH;;ACviRE;EACC,aAAA;AD0iRH;;AC9iRE;EACC,YAAA;ADijRH;;AC/iRE;EACC,aAAA;ADkjRH;;ACtjRE;EACC,YAAA;ADyjRH;;ACvjRE;EACC,aAAA;AD0jRH;;AC9jRE;EACC,YAAA;ADikRH;;AC/jRE;EACC,aAAA;ADkkRH;;ACtkRE;EACC,YAAA;ADykRH;;ACvkRE;EACC,aAAA;AD0kRH;;AC9kRE;EACC,YAAA;ADilRH;;AC/kRE;EACC,aAAA;ADklRH;;ACtlRE;EACC,YAAA;ADylRH;;ACvlRE;EACC,aAAA;AD0lRH;;AC9lRE;EACC,YAAA;ADimRH;;AC/lRE;EACC,aAAA;ADkmRH;;ACtmRE;EACC,aAAA;ADymRH;;ACvmRE;EACC,cAAA;AD0mRH;;AC9mRE;EACC,aAAA;ADinRH;;AC/mRE;EACC,cAAA;ADknRH;;ACtnRE;EACC,aAAA;ADynRH;;ACvnRE;EACC,cAAA;AD0nRH;;AC9nRE;EACC,aAAA;ADioRH;;AC/nRE;EACC,cAAA;ADkoRH;;ACtoRE;EACC,aAAA;ADyoRH;;ACvoRE;EACC,cAAA;AD0oRH;;AC9oRE;EACC,aAAA;ADipRH;;AC/oRE;EACC,cAAA;ADkpRH;;ACtpRE;EACC,aAAA;ADypRH;;ACvpRE;EACC,cAAA;AD0pRH;;AC9pRE;EACC,aAAA;ADiqRH;;AC/pRE;EACC,cAAA;ADkqRH;;ACtqRE;EACC,aAAA;ADyqRH;;ACvqRE;EACC,cAAA;AD0qRH;;AC9qRE;EACC,aAAA;ADirRH;;AC/qRE;EACC,cAAA;ADkrRH;;ACtrRE;EACC,aAAA;ADyrRH;;ACvrRE;EACC,cAAA;AD0rRH;;AC9rRE;EACC,aAAA;ADisRH;;AC/rRE;EACC,cAAA;ADksRH;;ACtsRE;EACC,aAAA;ADysRH;;ACvsRE;EACC,cAAA;AD0sRH;;AC9sRE;EACC,aAAA;ADitRH;;AC/sRE;EACC,cAAA;ADktRH;;ACttRE;EACC,aAAA;ADytRH;;ACvtRE;EACC,cAAA;AD0tRH;;AC9tRE;EACC,aAAA;ADiuRH;;AC/tRE;EACC,cAAA;ADkuRH;;ACtuRE;EACC,aAAA;ADyuRH;;ACvuRE;EACC,cAAA;AD0uRH;;AC9uRE;EACC,aAAA;ADivRH;;AC/uRE;EACC,cAAA;ADkvRH;;ACtvRE;EACC,aAAA;ADyvRH;;ACvvRE;EACC,cAAA;AD0vRH;;AC9vRE;EACC,aAAA;ADiwRH;;AC/vRE;EACC,cAAA;ADkwRH;;ACtwRE;EACC,aAAA;ADywRH;;ACvwRE;EACC,cAAA;AD0wRH;;AC9wRE;EACC,aAAA;ADixRH;;AC/wRE;EACC,cAAA;ADkxRH;;ACtxRE;EACC,aAAA;ADyxRH;;ACvxRE;EACC,cAAA;AD0xRH;;AC9xRE;EACC,aAAA;ADiyRH;;AC/xRE;EACC,cAAA;ADkyRH;;ACtyRE;EACC,aAAA;ADyyRH;;ACvyRE;EACC,cAAA;AD0yRH;;AC9yRE;EACC,aAAA;ADizRH;;AC/yRE;EACC,cAAA;ADkzRH;;ACtzRE;EACC,aAAA;ADyzRH;;ACvzRE;EACC,cAAA;AD0zRH;;AC9zRE;EACC,aAAA;ADi0RH;;AC/zRE;EACC,cAAA;ADk0RH;;ACt0RE;EACC,aAAA;ADy0RH;;ACv0RE;EACC,cAAA;AD00RH;;AC90RE;EACC,aAAA;ADi1RH;;AC/0RE;EACC,cAAA;ADk1RH;;ACt1RE;EACC,aAAA;ADy1RH;;ACv1RE;EACC,cAAA;AD01RH;;AC91RE;EACC,aAAA;ADi2RH;;AC/1RE;EACC,cAAA;ADk2RH;;ACt2RE;EACC,aAAA;ADy2RH;;ACv2RE;EACC,cAAA;AD02RH;;AC92RE;EACC,aAAA;ADi3RH;;AC/2RE;EACC,cAAA;ADk3RH;;ACt3RE;EACC,aAAA;ADy3RH;;ACv3RE;EACC,cAAA;AD03RH;;AC93RE;EACC,aAAA;ADi4RH;;AC/3RE;EACC,cAAA;ADk4RH;;ACt4RE;EACC,aAAA;ADy4RH;;ACv4RE;EACC,cAAA;AD04RH;;AC94RE;EACC,aAAA;ADi5RH;;AC/4RE;EACC,cAAA;ADk5RH;;ACt5RE;EACC,aAAA;ADy5RH;;ACv5RE;EACC,cAAA;AD05RH;;AC95RE;EACC,aAAA;ADi6RH;;AC/5RE;EACC,cAAA;ADk6RH;;ACt6RE;EACC,aAAA;ADy6RH;;ACv6RE;EACC,cAAA;AD06RH;;ACt6RE;EACC,YAAA;ADy6RH;;ACv6RE;EACC,aAAA;AD06RH;;AC96RE;EACC,YAAA;ADi7RH;;AC/6RE;EACC,aAAA;ADk7RH;;ACt7RE;EACC,aAAA;ADy7RH;;ACv7RE;EACC,cAAA;AD07RH;;AC97RE;EACC,aAAA;ADi8RH;;AC/7RE;EACC,cAAA;ADk8RH;;ACt8RE;EACC,aAAA;ADy8RH;;ACv8RE;EACC,cAAA;AD08RH;;AC98RE;EACC,aAAA;ADi9RH;;AC/8RE;EACC,cAAA;ADk9RH;;ACt9RE;EACC,aAAA;ADy9RH;;ACv9RE;EACC,cAAA;AD09RH;;AC99RE;EACC,aAAA;ADi+RH;;AC/9RE;EACC,cAAA;ADk+RH;;ACt+RE;EACC,aAAA;ADy+RH;;ACv+RE;EACC,cAAA;AD0+RH;;AC9+RE;EACC,aAAA;ADi/RH;;AC/+RE;EACC,cAAA;ADk/RH;;ACt/RE;EACC,aAAA;ADy/RH;;ACv/RE;EACC,cAAA;AD0/RH;;AC9/RE;EACC,aAAA;ADigSH;;AC//RE;EACC,cAAA;ADkgSH;;ACtgSE;EACC,aAAA;ADygSH;;ACvgSE;EACC,cAAA;AD0gSH;;AC9gSE;EACC,aAAA;ADihSH;;AC/gSE;EACC,cAAA;ADkhSH;;ACthSE;EACC,aAAA;ADyhSH;;ACvhSE;EACC,cAAA;AD0hSH;;AC9hSE;EACC,aAAA;ADiiSH;;AC/hSE;EACC,cAAA;ADkiSH;;ACtiSE;EACC,aAAA;ADyiSH;;ACviSE;EACC,cAAA;AD0iSH;;AC9iSE;EACC,aAAA;ADijSH;;AC/iSE;EACC,cAAA;ADkjSH;;ACtjSE;EACC,aAAA;ADyjSH;;ACvjSE;EACC,cAAA;AD0jSH;;AC9jSE;EACC,aAAA;ADikSH;;AC/jSE;EACC,cAAA;ADkkSH;;ACtkSE;EACC,aAAA;ADykSH;;ACvkSE;EACC,cAAA;AD0kSH;;AC9kSE;EACC,aAAA;ADilSH;;AC/kSE;EACC,cAAA;ADklSH;;ACtlSE;EACC,aAAA;ADylSH;;ACvlSE;EACC,cAAA;AD0lSH;;AC9lSE;EACC,aAAA;ADimSH;;AC/lSE;EACC,cAAA;ADkmSH;;ACtmSE;EACC,cAAA;ADymSH;;ACvmSE;EACC,eAAA;AD0mSH;;ACtnSE;EACC,UAAA;ADynSH;;ACvnSE;EACC,WAAA;AD0nSH;;AC9nSE;EACC,UAAA;ADioSH;;AC/nSE;EACC,WAAA;ADkoSH;;ACtoSE;EACC,UAAA;ADyoSH;;ACvoSE;EACC,WAAA;AD0oSH;;AC9oSE;EACC,UAAA;ADipSH;;AC/oSE;EACC,WAAA;ADkpSH;;ACtpSE;EACC,UAAA;ADypSH;;ACvpSE;EACC,WAAA;AD0pSH;;AC9pSE;EACC,UAAA;ADiqSH;;AC/pSE;EACC,WAAA;ADkqSH;;ACtqSE;EACC,UAAA;ADyqSH;;ACvqSE;EACC,WAAA;AD0qSH;;AC9qSE;EACC,UAAA;ADirSH;;AC/qSE;EACC,WAAA;ADkrSH;;ACtrSE;EACC,UAAA;ADyrSH;;ACvrSE;EACC,WAAA;AD0rSH;;AC9rSE;EACC,UAAA;ADisSH;;AC/rSE;EACC,WAAA;ADksSH;;ACtsSE;EACC,WAAA;ADysSH;;ACvsSE;EACC,YAAA;AD0sSH;;AC9sSE;EACC,WAAA;ADitSH;;AC/sSE;EACC,YAAA;ADktSH;;ACttSE;EACC,WAAA;ADytSH;;ACvtSE;EACC,YAAA;AD0tSH;;AC9tSE;EACC,WAAA;ADiuSH;;AC/tSE;EACC,YAAA;ADkuSH;;ACtuSE;EACC,WAAA;ADyuSH;;ACvuSE;EACC,YAAA;AD0uSH;;AC9uSE;EACC,WAAA;ADivSH;;AC/uSE;EACC,YAAA;ADkvSH;;ACtvSE;EACC,WAAA;ADyvSH;;ACvvSE;EACC,YAAA;AD0vSH;;AC9vSE;EACC,WAAA;ADiwSH;;AC/vSE;EACC,YAAA;ADkwSH;;ACtwSE;EACC,WAAA;ADywSH;;ACvwSE;EACC,YAAA;AD0wSH;;AC9wSE;EACC,WAAA;ADixSH;;AC/wSE;EACC,YAAA;ADkxSH;;ACtxSE;EACC,WAAA;ADyxSH;;ACvxSE;EACC,YAAA;AD0xSH;;AC9xSE;EACC,WAAA;ADiySH;;AC/xSE;EACC,YAAA;ADkySH;;ACtySE;EACC,WAAA;ADyySH;;ACvySE;EACC,YAAA;AD0ySH;;AC9ySE;EACC,WAAA;ADizSH;;AC/ySE;EACC,YAAA;ADkzSH;;ACtzSE;EACC,WAAA;ADyzSH;;ACvzSE;EACC,YAAA;AD0zSH;;AC9zSE;EACC,WAAA;ADi0SH;;AC/zSE;EACC,YAAA;ADk0SH;;ACt0SE;EACC,WAAA;ADy0SH;;ACv0SE;EACC,YAAA;AD00SH;;AC90SE;EACC,WAAA;ADi1SH;;AC/0SE;EACC,YAAA;ADk1SH;;ACt1SE;EACC,WAAA;ADy1SH;;ACv1SE;EACC,YAAA;AD01SH;;AC91SE;EACC,WAAA;ADi2SH;;AC/1SE;EACC,YAAA;ADk2SH;;ACt2SE;EACC,WAAA;ADy2SH;;ACv2SE;EACC,YAAA;AD02SH;;AC92SE;EACC,WAAA;ADi3SH;;AC/2SE;EACC,YAAA;ADk3SH;;ACt3SE;EACC,WAAA;ADy3SH;;ACv3SE;EACC,YAAA;AD03SH;;AC93SE;EACC,WAAA;ADi4SH;;AC/3SE;EACC,YAAA;ADk4SH;;ACt4SE;EACC,WAAA;ADy4SH;;ACv4SE;EACC,YAAA;AD04SH;;AC94SE;EACC,WAAA;ADi5SH;;AC/4SE;EACC,YAAA;ADk5SH;;ACt5SE;EACC,WAAA;ADy5SH;;ACv5SE;EACC,YAAA;AD05SH;;AC95SE;EACC,WAAA;ADi6SH;;AC/5SE;EACC,YAAA;ADk6SH;;ACt6SE;EACC,WAAA;ADy6SH;;ACv6SE;EACC,YAAA;AD06SH;;AC96SE;EACC,WAAA;ADi7SH;;AC/6SE;EACC,YAAA;ADk7SH;;ACt7SE;EACC,WAAA;ADy7SH;;ACv7SE;EACC,YAAA;AD07SH;;AC97SE;EACC,WAAA;ADi8SH;;AC/7SE;EACC,YAAA;ADk8SH;;ACt8SE;EACC,WAAA;ADy8SH;;ACv8SE;EACC,YAAA;AD08SH;;AC98SE;EACC,WAAA;ADi9SH;;AC/8SE;EACC,YAAA;ADk9SH;;ACt9SE;EACC,WAAA;ADy9SH;;ACv9SE;EACC,YAAA;AD09SH;;AC99SE;EACC,WAAA;ADi+SH;;AC/9SE;EACC,YAAA;ADk+SH;;ACt+SE;EACC,WAAA;ADy+SH;;ACv+SE;EACC,YAAA;AD0+SH;;AC9+SE;EACC,WAAA;ADi/SH;;AC/+SE;EACC,YAAA;ADk/SH;;ACt/SE;EACC,WAAA;ADy/SH;;ACv/SE;EACC,YAAA;AD0/SH;;AC9/SE;EACC,WAAA;ADigTH;;AC//SE;EACC,YAAA;ADkgTH;;ACtgTE;EACC,WAAA;ADygTH;;ACvgTE;EACC,YAAA;AD0gTH;;ACtgTE;EACC,UAAA;ADygTH;;ACvgTE;EACC,WAAA;AD0gTH;;AC9gTE;EACC,UAAA;ADihTH;;AC/gTE;EACC,WAAA;ADkhTH;;ACthTE;EACC,WAAA;ADyhTH;;ACvhTE;EACC,YAAA;AD0hTH;;AC9hTE;EACC,WAAA;ADiiTH;;AC/hTE;EACC,YAAA;ADkiTH;;ACtiTE;EACC,WAAA;ADyiTH;;ACviTE;EACC,YAAA;AD0iTH;;AC9iTE;EACC,WAAA;ADijTH;;AC/iTE;EACC,YAAA;ADkjTH;;ACtjTE;EACC,WAAA;ADyjTH;;ACvjTE;EACC,YAAA;AD0jTH;;AC9jTE;EACC,WAAA;ADikTH;;AC/jTE;EACC,YAAA;ADkkTH;;ACtkTE;EACC,WAAA;ADykTH;;ACvkTE;EACC,YAAA;AD0kTH;;AC9kTE;EACC,WAAA;ADilTH;;AC/kTE;EACC,YAAA;ADklTH;;ACtlTE;EACC,WAAA;ADylTH;;ACvlTE;EACC,YAAA;AD0lTH;;AC9lTE;EACC,WAAA;ADimTH;;AC/lTE;EACC,YAAA;ADkmTH;;ACtmTE;EACC,WAAA;ADymTH;;ACvmTE;EACC,YAAA;AD0mTH;;AC9mTE;EACC,WAAA;ADinTH;;AC/mTE;EACC,YAAA;ADknTH;;ACtnTE;EACC,WAAA;ADynTH;;ACvnTE;EACC,YAAA;AD0nTH;;AC9nTE;EACC,WAAA;ADioTH;;AC/nTE;EACC,YAAA;ADkoTH;;ACtoTE;EACC,WAAA;ADyoTH;;ACvoTE;EACC,YAAA;AD0oTH;;AC9oTE;EACC,WAAA;ADipTH;;AC/oTE;EACC,YAAA;ADkpTH;;ACtpTE;EACC,WAAA;A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yBAAA;ADy3TF;;ACv3TC;EACC,yBA1BO;ADo5TT;;AC93TC;EACC,yBAAA;ADi4TF;;AC/3TC;EACC,yBA1BO;AD45TT;;ACt4TC;EACC,yBAAA;ADy4TF;;ACv4TC;EACC,yBA1BO;ADo6TT;;AC94TC;EACC,yBAAA;ADi5TF;;AC/4TC;EACC,yBA1BO;AD46TT;;ACt5TC;EACC,yBAAA;ADy5TF;;ACv5TC;EACC,yBA1BO;ADo7TT;;AC95TC;EACC,yBAAA;ADi6TF;;AC/5TC;EACC,yBA1BO;AD47TT;;ACt6TC;EACC,yBAAA;ADy6TF;;ACv6TC;EACC,yBA1BO;ADo8TT;;AC96TC;EACC,yBAAA;ADi7TF;;AC/6TC;EACC,yBA1BO;AD48TT;;ACt7TC;EACC,yBAAA;ADy7TF;;ACv7TC;EACC,yBA1BO;ADo9TT;;AC97TC;EACC,yBAAA;ADi8TF;;AC/7TC;EACC,yBA1BO;AD49TT;;ACt8TC;EACC,yBAAA;ADy8TF;;ACv8TC;EACC,yBA1BO;ADo+TT;;AC98TC;EACC,yBAAA;ADi9TF;;AC/8TC;EACC,yBA1BO;AD4+TT;;ACt9TC;EACC,yBAAA;ADy9TF;;ACv9TC;EACC,yBA1BO;ADo/TT;;AC99TC;EACC,yBAAA;ADi+TF;;AC/9TC;EACC,yBA1BO;AD4/TT;;ACt+TC;EACC,yBAAA;ADy+TF;;ACv+TC;EACC,yBA1BO;ADogUT;;AC9+TC;EACC,yBAAA;ADi/TF;;AC/+TC;EACC,yBA1BO;AD4gUT;;AC9+TC;EACC,yBAAA;ADi/TF;;AC/+TC;EACC,yBAlDc;ADoiUhB;;ACt/TC;EACC,yBAAA;ADy/TF;;ACv/TC;EACC,yBAlDc;AD4iUhB;;AC9/TC;EACC,yBAAA;ADigUF;;AC//TC;EACC,yBAlDc;ADojUhB;;ACtgUC;EACC,yBAAA;ADygUF;;ACvgUC;EACC,yBAlDc;AD4jUhB;;AC9gUC;EACC,yBAAA;ADihUF;;AC/gUC;EACC,yBAlDc;ADokUhB;;ACthUC;EACC,yBAAA;ADyhUF;;ACvhUC;EACC,yBAlDc;AD4kUhB;;AC9hUC;EACC,yBAAA;ADiiUF;;AC/hUC;EACC,yBAlDc;ADolUhB;;ACtiUC;EACC,yBAAA;ADyiUF;;ACviUC;EACC,yBAlDc;AD4lUhB;;AC9iUC;EACC,yBAAA;ADijUF;;AC/iUC;EACC,yBAlDc;ADomUhB;;ACtjUC;EACC,yBAAA;ADyjUF;;ACvjUC;EACC,yBAlDc;AD4mUhB;;AC9jUC;EACC,yBAAA;ADikUF;;AC/jUC;EACC,yBAlDc;ADonUhB;;ACtkUC;EACC,yBAAA;ADykUF;;ACvkUC;EACC,yBAlDc;AD4nUhB;;AC9kUC;EACC,yBAAA;ADilUF;;AC/kUC;EACC,yBAlDc;ADooUhB;;ACtlUC;EACC,yBAAA;ADylUF;;ACvlUC;EACC,yBAlDc;AD4oUhB", + "file": "noNvue.css" +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/scss/noNvue.min.css b/uni_modules/UniDevTools/src/tmui/scss/noNvue.min.css new file mode 100644 index 0000000..40d817d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/noNvue.min.css @@ -0,0 +1 @@ +@charset "UTF-8";@font-face{font-family:tmicon;src:url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff')}.tmicon{font-family:tmicon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tmicon-paypal:before{content:"\e8c8"}.tmicon-google:before{content:"\e8c9"}.tmicon-apple-pay:before{content:"\f166"}.tmicon-Apple:before{content:"\edd8"}.tmicon-google-pay:before{content:"\ec04"}.tmicon-qiandai:before{content:"\e600"}.tmicon-quan:before{content:"\e601"}.tmicon-hongbao:before{content:"\e6da"}.tmicon-tongzhifill:before{content:"\e758"}.tmicon-renminbi3:before{content:"\e73e"}.tmicon-toupiao:before{content:"\e60e"}.tmicon-icon:before{content:"\e658"}.tmicon-svggeshi-:before{content:"\e65d"}.tmicon-meiyuan:before{content:"\eb1a"}.tmicon-qiche:before{content:"\e611"}.tmicon-tongzhi:before{content:"\e612"}.tmicon-huiyuan:before{content:"\e62f"}.tmicon-md-phone-portrait:before{content:"\e6c2"}.tmicon-md-planet:before{content:"\e6c3"}.tmicon-md-phone-landscape:before{content:"\e6c4"}.tmicon-md-power:before{content:"\e6c5"}.tmicon-md-redo:before{content:"\e6c6"}.tmicon-md-rocket:before{content:"\e6c7"}.tmicon-md-ribbon:before{content:"\e6c8"}.tmicon-md-undo:before{content:"\e6cb"}.tmicon-md-trending-down:before{content:"\e6cc"}.tmicon-md-trending-up:before{content:"\e6cd"}.tmicon-md-git-merge:before{content:"\e6de"}.tmicon-md-female:before{content:"\e6e2"}.tmicon-md-male:before{content:"\e6e3"}.tmicon-md-heart-dislike:before{content:"\e6e4"}.tmicon-md-heart1:before{content:"\e6e7"}.tmicon-ios-text:before{content:"\e6f1"}.tmicon-ios-rose:before{content:"\e6f2"}.tmicon-logo-game-controller-b:before{content:"\e6fd"}.tmicon-ios-beer:before{content:"\e707"}.tmicon-ios-cafe:before{content:"\e709"}.tmicon-ios-chatbubbles:before{content:"\e70a"}.tmicon-ios-color-palette:before{content:"\e70e"}.tmicon-ios-filing:before{content:"\e712"}.tmicon-ios-finger-print:before{content:"\e713"}.tmicon-ios-hand:before{content:"\e716"}.tmicon-ios-flower:before{content:"\e714"}.tmicon-ios-ice-cream:before{content:"\e719"}.tmicon-ios-grid:before{content:"\e71c"}.tmicon-ios-mail-open1:before{content:"\e71d"}.tmicon-ios-key:before{content:"\e71e"}.tmicon-ios-man:before{content:"\e71f"}.tmicon-meiyuan1:before{content:"\e90d"}.tmicon-zidingyi:before{content:"\e60d"}.tmicon-shuaxin:before{content:"\e6ce"}.tmicon-huiyuan1:before{content:"\e646"}.tmicon-yuan:before{content:"\e657"}.tmicon-ios-airplane:before{content:"\e852"}.tmicon-ios-woman:before{content:"\e859"}.tmicon-ios-aperture:before{content:"\e866"}.tmicon-ios-alarm:before{content:"\e868"}.tmicon-ios-arrow-dropdown:before{content:"\e869"}.tmicon-ios-arrow-dropleft-c:before{content:"\e876"}.tmicon-ios-arrow-dropleft:before{content:"\e87c"}.tmicon-ios-arrow-dropup:before{content:"\e87f"}.tmicon-ios-arrow-dropright-:before{content:"\e880"}.tmicon-ios-arrow-dropdown-c:before{content:"\e886"}.tmicon-ios-arrow-dropup-cir:before{content:"\e88d"}.tmicon-ios-arrow-dropright:before{content:"\e890"}.tmicon-ios-attach:before{content:"\e893"}.tmicon-ios-at:before{content:"\e894"}.tmicon-ios-bed:before{content:"\e895"}.tmicon-ios-battery-full:before{content:"\e896"}.tmicon-ios-bookmarks:before{content:"\e897"}.tmicon-ios-bluetooth:before{content:"\e898"}.tmicon-ios-cellular:before{content:"\e899"}.tmicon-ios-cut:before{content:"\e89a"}.tmicon-ios-leaf:before{content:"\e89b"}.tmicon-ios-mic:before{content:"\e89c"}.tmicon-ios-mail-open:before{content:"\e89d"}.tmicon-ios-partly-sunny:before{content:"\e8a0"}.tmicon-ios-radio-button-on:before{content:"\e8a1"}.tmicon-ios-radio-button-off:before{content:"\e8a2"}.tmicon-ios-remove:before{content:"\e8a3"}.tmicon-ios-remove-circle-ou:before{content:"\e8a4"}.tmicon-ios-remove-circle:before{content:"\e8a5"}.tmicon-ios-rocket:before{content:"\e8a6"}.tmicon-ios-ribbon:before{content:"\e8a7"}.tmicon-ios-star:before{content:"\e8a8"}.tmicon-ios-star-half:before{content:"\e8a9"}.tmicon-ios-star-outline:before{content:"\e8aa"}.tmicon-ios-snow:before{content:"\e8ab"}.tmicon-ios-stopwatch:before{content:"\e8ac"}.tmicon-ios-sunny:before{content:"\e8ad"}.tmicon-ios-unlock:before{content:"\e8ae"}.tmicon-ios-trophy:before{content:"\e8af"}.tmicon-ios-umbrella:before{content:"\e8b0"}.tmicon-ios-videocam:before{content:"\e8b1"}.tmicon-ios-volume-high:before{content:"\e8b2"}.tmicon-ios-water:before{content:"\e8b3"}.tmicon-ios-wifi:before{content:"\e8b4"}.tmicon-md-water:before{content:"\e8b5"}.tmicon-md-checkbox:before{content:"\e8b6"}.tmicon-md-chatbubbles:before{content:"\e8b7"}.tmicon-md-chatboxes:before{content:"\e8b8"}.tmicon-md-cloud-done:before{content:"\e8b9"}.tmicon-md-cloud-upload:before{content:"\e8ba"}.tmicon-md-cloudy:before{content:"\e8bb"}.tmicon-md-contrast:before{content:"\e8bc"}.tmicon-md-disc:before{content:"\e8bd"}.tmicon-md-heart-empty:before{content:"\e8be"}.tmicon-md-heart:before{content:"\e8bf"}.tmicon-md-home:before{content:"\e8c0"}.tmicon-md-mail-open:before{content:"\e8c1"}.tmicon-md-heart-half:before{content:"\e8c2"}.tmicon-md-person:before{content:"\e8c3"}.tmicon-md-people:before{content:"\e8c4"}.tmicon-md-more:before{content:"\e8c5"}.tmicon-md-moon:before{content:"\e8c6"}.tmicon-md-pin:before{content:"\e8c7"}.tmicon-gengduo:before{content:"\e73a"}.tmicon-ios:before{content:"\e60c"}.tmicon-wifi-off:before{content:"\e93a"}.tmicon-shiliangzhinengduixiang-:before{content:"\e6ad"}.tmicon-weixinzhifu:before{content:"\e605"}.tmicon-yinhangqia:before{content:"\e6c9"}.tmicon-yunshanfu:before{content:"\e68b"}.tmicon-toutiaoyangshi:before{content:"\e622"}.tmicon-douyin:before{content:"\e8db"}.tmicon-alipay:before{content:"\e8de"}.tmicon-huawei:before{content:"\e610"}.tmicon-lianjie:before{content:"\e665"}.tmicon-weixin:before{content:"\e63f"}.tmicon-pengyouquan:before{content:"\e615"}.tmicon-weibo:before{content:"\e608"}.tmicon-QQ:before{content:"\e60f"}.tmicon-xiaochengxu:before{content:"\e706"}.tmicon-display-code:before{content:"\e792"}.tmicon-display-arrow-right:before{content:"\e793"}.tmicon-display-arrow-left:before{content:"\e794"}.tmicon-laptop-error:before{content:"\e795"}.tmicon-laptop-check:before{content:"\e796"}.tmicon-laptop:before{content:"\e797"}.tmicon-mobile-error:before{content:"\e798"}.tmicon-mobile-check:before{content:"\e799"}.tmicon-mobile-alt:before{content:"\e79a"}.tmicon-aliwangwang:before{content:"\e79d"}.tmicon-nail:before{content:"\e79e"}.tmicon-nail-fixed:before{content:"\e79f"}.tmicon-edit:before{content:"\e7a0"}.tmicon-dollar:before{content:"\e7a1"}.tmicon-transanction:before{content:"\e7a2"}.tmicon-filter-fill:before{content:"\e7a3"}.tmicon-all-fill:before{content:"\e7a4"}.tmicon-databaseplus-fill:before{content:"\e7a5"}.tmicon-database-fill:before{content:"\e7a6"}.tmicon-commentlines-fill:before{content:"\e7a7"}.tmicon-commentdots-fill:before{content:"\e7a8"}.tmicon-paperplane-fill:before{content:"\e7a9"}.tmicon-eyeslash-fill:before{content:"\e7aa"}.tmicon-eye-fill:before{content:"\e7ab"}.tmicon-lightbulb-fill:before{content:"\e7ac"}.tmicon-flag-fill:before{content:"\e7ad"}.tmicon-tag-fill:before{content:"\e7ae"}.tmicon-position-fill:before{content:"\e7af"}.tmicon-location-fill:before{content:"\e7b0"}.tmicon-map-fill:before{content:"\e7b1"}.tmicon-inboxin-fill:before{content:"\e7b2"}.tmicon-box-fill:before{content:"\e7b3"}.tmicon-databaseset-fill:before{content:"\e7b4"}.tmicon-layergroup-fill:before{content:"\e7b5"}.tmicon-cry-fill:before{content:"\e7b6"}.tmicon-smile-fill:before{content:"\e7b7"}.tmicon-unlock-fill:before{content:"\e7b8"}.tmicon-lock-fill:before{content:"\e7b9"}.tmicon-alignright-fill:before{content:"\e7ba"}.tmicon-alignleft-fill:before{content:"\e7bb"}.tmicon-borderbottom-fill:before{content:"\e7bc"}.tmicon-bordertop-fill:before{content:"\e7bd"}.tmicon-aligncenter-fill:before{content:"\e7be"}.tmicon-sort-down-nogap-copy:before{content:"\f167"}.tmicon-borderverticle-fill:before{content:"\e7bf"}.tmicon-piccenter-fill:before{content:"\e7c0"}.tmicon-picside-fill:before{content:"\e7c1"}.tmicon-folderopen-fill:before{content:"\e7c2"}.tmicon-folderplus-fill:before{content:"\e7c3"}.tmicon-folder-fill:before{content:"\e7c4"}.tmicon-file-SQL:before{content:"\e7c5"}.tmicon-fileplus-fill:before{content:"\e7c6"}.tmicon-file-fill:before{content:"\e7c7"}.tmicon-copy-fill:before{content:"\e7c8"}.tmicon-headset-fill:before{content:"\e7c9"}.tmicon-phone-fill:before{content:"\e7ca"}.tmicon-pausecircle-fill:before{content:"\e7cb"}.tmicon-stopcircle-fill:before{content:"\e7cc"}.tmicon-playcircle-fill:before{content:"\e7cd"}.tmicon-delete-fill:before{content:"\e7ce"}.tmicon-picture-fill:before{content:"\e7cf"}.tmicon-mail-fill:before{content:"\e7d0"}.tmicon-heart-fill:before{content:"\e7d1"}.tmicon-collection-fill:before{content:"\e7d2"}.tmicon-user-group-fill:before{content:"\e7d3"}.tmicon-userplus-fill:before{content:"\e7d4"}.tmicon-user-fill:before{content:"\e7d5"}.tmicon-cog-fill:before{content:"\e7d6"}.tmicon-clock-fill:before{content:"\e7d7"}.tmicon-calendaralt-fill:before{content:"\e7d8"}.tmicon-clouddownload-fill:before{content:"\e7d9"}.tmicon-cloudupload-fill:before{content:"\e7da"}.tmicon-exchange-fill:before{content:"\e7db"}.tmicon-info-circle-fill:before{content:"\e7dc"}.tmicon-question-circle-fill:before{content:"\e7dd"}.tmicon-exclamationcircle-f:before{content:"\e7de"}.tmicon-minus-circle-fill:before{content:"\e7df"}.tmicon-plus-circle-fill:before{content:"\e7e0"}.tmicon-times-circle-fill:before{content:"\e7e1"}.tmicon-check-circle-fill:before{content:"\e7e2"}.tmicon-compressalt-fill:before{content:"\e7e3"}.tmicon-expandalt-fill:before{content:"\e7e4"}.tmicon-filter:before{content:"\e7e5"}.tmicon-all:before{content:"\e7e6"}.tmicon-database-plus:before{content:"\e7e7"}.tmicon-database:before{content:"\e7e8"}.tmicon-comment-lines:before{content:"\e7e9"}.tmicon-comment-dots:before{content:"\e7ea"}.tmicon-paper-plane:before{content:"\e7eb"}.tmicon-eye-slash:before{content:"\e7ec"}.tmicon-eye:before{content:"\e7ed"}.tmicon-lightbulb:before{content:"\e7ee"}.tmicon-flag:before{content:"\e7ef"}.tmicon-tag:before{content:"\e7f0"}.tmicon-position:before{content:"\e7f1"}.tmicon-location:before{content:"\e7f2"}.tmicon-map:before{content:"\e7f3"}.tmicon-inbox-in:before{content:"\e7f4"}.tmicon-box:before{content:"\e7f5"}.tmicon-database-set:before{content:"\e7f6"}.tmicon-layer-group:before{content:"\e7f7"}.tmicon-wind-cry:before{content:"\e7f8"}.tmicon-wind-smile:before{content:"\e7f9"}.tmicon-unlock:before{content:"\e7fa"}.tmicon-lock:before{content:"\e7fb"}.tmicon-align-right:before{content:"\e7fc"}.tmicon-align-left:before{content:"\e7fd"}.tmicon-border-bottom:before{content:"\e7fe"}.tmicon-border-top:before{content:"\e7ff"}.tmicon-align-center:before{content:"\e800"}.tmicon-border-verticle:before{content:"\e801"}.tmicon-pic-center:before{content:"\e802"}.tmicon-pic-side:before{content:"\e803"}.tmicon-folder-open:before{content:"\e804"}.tmicon-folder-plus:before{content:"\e805"}.tmicon-folder:before{content:"\e806"}.tmicon-file-SQL1:before{content:"\e807"}.tmicon-file-plus:before{content:"\e808"}.tmicon-file:before{content:"\e809"}.tmicon-copy:before{content:"\e80a"}.tmicon-headset:before{content:"\e80b"}.tmicon-phone:before{content:"\e80c"}.tmicon-pausecircle:before{content:"\e80d"}.tmicon-stopcircle:before{content:"\e80e"}.tmicon-playcircle:before{content:"\e80f"}.tmicon-delete:before{content:"\e810"}.tmicon-picture:before{content:"\e811"}.tmicon-mail:before{content:"\e812"}.tmicon-like:before{content:"\e813"}.tmicon-collection:before{content:"\e814"}.tmicon-user-group:before{content:"\e815"}.tmicon-account-plus:before{content:"\e816"}.tmicon-account:before{content:"\e817"}.tmicon-cog:before{content:"\e818"}.tmicon-clock:before{content:"\e819"}.tmicon-calendar-alt:before{content:"\e81a"}.tmicon-clouddownload:before{content:"\e81b"}.tmicon-cloudupload:before{content:"\e81c"}.tmicon-exchange:before{content:"\e81d"}.tmicon-info-circle:before{content:"\e81e"}.tmicon-question-circle:before{content:"\e81f"}.tmicon-exclamation-circle:before{content:"\e820"}.tmicon-minus-circle:before{content:"\e821"}.tmicon-plus-circle:before{content:"\e822"}.tmicon-times-circle:before{content:"\e823"}.tmicon-check-circle:before{content:"\e824"}.tmicon-compress-alt:before{content:"\e825"}.tmicon-expand-alt:before{content:"\e826"}.tmicon-ban:before{content:"\e827"}.tmicon-minus:before{content:"\e828"}.tmicon-plus:before{content:"\e829"}.tmicon-times:before{content:"\e82a"}.tmicon-check:before{content:"\e82b"}.tmicon-search-minus:before{content:"\e82c"}.tmicon-search-plus:before{content:"\e82d"}.tmicon-search:before{content:"\e82e"}.tmicon-reply:before{content:"\e82f"}.tmicon-undo:before{content:"\e830"}.tmicon-redo:before{content:"\e831"}.tmicon-external-link:before{content:"\e832"}.tmicon-arrows-alt:before{content:"\e833"}.tmicon-indent:before{content:"\e834"}.tmicon-outdent:before{content:"\e835"}.tmicon-sort-line:before{content:"\e836"}.tmicon-switch:before{content:"\e837"}.tmicon-wind-descending:before{content:"\e838"}.tmicon-wind-ascending:before{content:"\e839"}.tmicon-download:before{content:"\e83a"}.tmicon-upload:before{content:"\e83b"}.tmicon-arrow-to-bottom:before{content:"\e83c"}.tmicon-arrow-to-top:before{content:"\e83d"}.tmicon-long-arrow-down:before{content:"\e83e"}.tmicon-long-arrow-up:before{content:"\e83f"}.tmicon-arrow-right:before{content:"\e840"}.tmicon-arrow-left:before{content:"\e841"}.tmicon-sort:before{content:"\e842"}.tmicon-sort-down:before{content:"\e843"}.tmicon-sort-up:before{content:"\e844"}.tmicon-caret-right:before{content:"\e845"}.tmicon-caret-left:before{content:"\e846"}.tmicon-arrows-v:before{content:"\e847"}.tmicon-angle-double-down:before{content:"\e848"}.tmicon-angle-double-up:before{content:"\e849"}.tmicon-angle-double-right:before{content:"\e84a"}.tmicon-angle-double-left:before{content:"\e84b"}.tmicon-angle-down:before{content:"\e84c"}.tmicon-angle-up:before{content:"\e84d"}.tmicon-angle-right:before{content:"\e84e"}.tmicon-angle-left:before{content:"\e84f"}.tmicon-paperclip:before{content:"\e850"}.tmicon-connection:before{content:"\e851"}.tmicon-training:before{content:"\e853"}.tmicon-process:before{content:"\e854"}.tmicon-news:before{content:"\e855"}.tmicon-save:before{content:"\e856"}.tmicon-print:before{content:"\e857"}.tmicon-new-releases:before{content:"\e858"}.tmicon-release:before{content:"\e85a"}.tmicon-alert:before{content:"\e85b"}.tmicon-backspace:before{content:"\e85c"}.tmicon-gem:before{content:"\e85d"}.tmicon-integral:before{content:"\e85e"}.tmicon-star-circle:before{content:"\e85f"}.tmicon-user-circle:before{content:"\e860"}.tmicon-cloud-machine-fill:before{content:"\e861"}.tmicon-cloud-machine:before{content:"\e862"}.tmicon-terminal-fill:before{content:"\e863"}.tmicon-terminal:before{content:"\e864"}.tmicon-shopping-cart-fill:before{content:"\e865"}.tmicon-resource:before{content:"\e867"}.tmicon-rank:before{content:"\e86a"}.tmicon-sync-alt:before{content:"\e86b"}.tmicon-compass:before{content:"\e86c"}.tmicon-arrow-alt-from-top:before{content:"\e86d"}.tmicon-arrow-alt-from-botto:before{content:"\e86e"}.tmicon-menu:before{content:"\e86f"}.tmicon-icon-drag:before{content:"\e870"}.tmicon-early-warning:before{content:"\e871"}.tmicon-share:before{content:"\e872"}.tmicon-share1:before{content:"\e873"}.tmicon-management-:before{content:"\e874"}.tmicon-accesskeys:before{content:"\e875"}.tmicon-arrow-sortdown-smal:before{content:"\e877"}.tmicon-minus-square-fill:before{content:"\e878"}.tmicon-plus-square-fill:before{content:"\e879"}.tmicon-minus-square:before{content:"\e87a"}.tmicon-plus-square:before{content:"\e87b"}.tmicon-stepmode:before{content:"\e87d"}.tmicon-scrollingmode:before{content:"\e87e"}.tmicon-shoppingcart:before{content:"\e881"}.tmicon-waiting-fill:before{content:"\e882"}.tmicon-waiting:before{content:"\e883"}.tmicon-right-arrow-rect:before{content:"\e884"}.tmicon-left-arrow-rect:before{content:"\e885"}.tmicon-bell:before{content:"\e887"}.tmicon-structured-data:before{content:"\e888"}.tmicon-drag:before{content:"\e769"}.tmicon-vector:before{content:"\e889"}.tmicon-ellipsis-vertical:before{content:"\e76a"}.tmicon-NEW-copy:before{content:"\e88a"}.tmicon-gallery-view:before{content:"\e76b"}.tmicon-HOT-copy:before{content:"\e88b"}.tmicon-WIFI:before{content:"\e76c"}.tmicon-home:before{content:"\e88c"}.tmicon-bug-report:before{content:"\e76d"}.tmicon-monitoring:before{content:"\e88e"}.tmicon-qrcode:before{content:"\e76e"}.tmicon-diagnose:before{content:"\e88f"}.tmicon-scan:before{content:"\e76f"}.tmicon-loading:before{content:"\e891"}.tmicon-cut:before{content:"\e770"}.tmicon-Directory-tree:before{content:"\e892"}.tmicon-gift:before{content:"\e771"}.tmicon-application:before{content:"\e89e"}.tmicon-link:before{content:"\e772"}.tmicon-applicationgroup:before{content:"\e89f"}.tmicon-poweroff:before{content:"\e774"}.tmicon-key:before{content:"\e775"}.tmicon-safety-certificate:before{content:"\e776"}.tmicon-supervise:before{content:"\e777"}.tmicon-tag-subscipt:before{content:"\e78a"}.tmicon-chart-pie-alt:before{content:"\e78c"}.tmicon-chart-relation:before{content:"\e78d"}.tmicon-chart-scatter-plot:before{content:"\e78e"}.tmicon-chart-area:before{content:"\e78f"}.tmicon-chart-line:before{content:"\e790"}.tmicon-chart-bar:before{content:"\e791"}.tableHeader .uni-scroll-view::-webkit-scrollbar{display:none}.a-page,body,page{display:flex;flex-direction:column}.a-page,body,page,tm-app{min-height:100%;min-height:100vh;flex:1;display:flex;flex-direction:column}.nvue{display:flex;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start;box-sizing:border-box;flex-direction:column}.safe-height{height:var(--window-bottom)}.safe-top{height:var(--window-top)}.safe-statusbar{height:var(--status-bar-height)}.blur{backdrop-filter:blur(10px);background-color:rgba(0,0,0,.3)}.pointer{cursor:pointer}.pointer:hover{opacity:.7}.overflow{overflow:hidden}.overflow-x{overflow-x:hidden;overflow-y:auto}.overflow-y{overflow-x:auto;overflow-y:hidden}.relative{position:relative!important}.absolute{position:absolute!important}.fixed{position:fixed!important}.sticky{position:sticky!important}.fulled-height{display:flex;align-items:stretch}.clear{clear:both}.fulled{width:100%;display:block}.fulled-height{height:100%;display:block}.gray-100{filter:grayscale(100%)}.gray{filter:grayscale(25%)}.d-inline-block{display:inline-block!important}.d-block{display:block}.vertical-align-top{vertical-align:top}.vertical-align-middle{vertical-align:middle}.vertical-align-bottom{vertical-align:bottom}.wrap{white-space:pre-wrap;word-break:break-all}.nowrap{white-space:nowrap}.vertical-align-top{vertical-align:top}.vertical-align-middle{vertical-align:middle}.vertical-align-bottom{vertical-align:bottom}.zIndex-0{z-index:0}.zIndex-n0{z-index:0}.zIndex-1{z-index:1}.zIndex-n1{z-index:4}.zIndex-2{z-index:2}.zIndex-n2{z-index:8}.zIndex-3{z-index:3}.zIndex-n3{z-index:12}.zIndex-4{z-index:4}.zIndex-n4{z-index:16}.zIndex-5{z-index:5}.zIndex-n5{z-index:20}.zIndex-6{z-index:6}.zIndex-n6{z-index:24}.zIndex-7{z-index:7}.zIndex-n7{z-index:28}.zIndex-8{z-index:8}.zIndex-n8{z-index:32}.zIndex-9{z-index:9}.zIndex-n9{z-index:36}.zIndex-10{z-index:10}.zIndex-n10{z-index:40}.zIndex-11{z-index:11}.zIndex-n11{z-index:44}.zIndex-12{z-index:12}.zIndex-n12{z-index:48}.zIndex-13{z-index:13}.zIndex-n13{z-index:52}.zIndex-14{z-index:14}.zIndex-n14{z-index:56}.zIndex-15{z-index:15}.zIndex-n15{z-index:60}.zIndex-16{z-index:16}.zIndex-n16{z-index:64}.zIndex-17{z-index:17}.zIndex-n17{z-index:68}.zIndex-18{z-index:18}.zIndex-n18{z-index:72}.zIndex-19{z-index:19}.zIndex-n19{z-index:76}.zIndex-20{z-index:20}.zIndex-n20{z-index:80}.zIndex-21{z-index:21}.zIndex-n21{z-index:84}.zIndex-22{z-index:22}.zIndex-n22{z-index:88}.zIndex-23{z-index:23}.zIndex-n23{z-index:92}.zIndex-24{z-index:24}.zIndex-n24{z-index:96}.zIndex-25{z-index:25}.zIndex-n25{z-index:100}.zIndex-26{z-index:26}.zIndex-n26{z-index:104}.text-overflow{width:100%;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text-overflow-1{width:100%;display:-webkit-box;white-space:inherit;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}.text-overflow-2{width:100%;display:-webkit-box;white-space:inherit;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:ellipsis}.text-overflow-3{width:100%;display:-webkit-box;white-space:inherit;overflow:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis}.text-overflow-4{width:100%;display:-webkit-box;white-space:inherit;overflow:hidden;-webkit-line-clamp:4;-webkit-box-orient:vertical;text-overflow:ellipsis}.text-delete{text-decoration:line-through}.text-underline{text-decoration:underline}.text-size-xxs{font-size:20rpx}.text-size-xxs span{font-size:20rpx}.text-size-xxs{font-size:20rpx}.text-size-xs{font-size:22rpx}.text-size-xs span{font-size:22rpx}.text-size-xs{font-size:22rpx}.text-size-s{font-size:24rpx}.text-size-s span{font-size:24rpx}.text-size-s{font-size:24rpx}.text-size-m{font-size:28rpx}.text-size-m span{font-size:28rpx}.text-size-m{font-size:28rpx}.text-size-n{font-size:30rpx}.text-size-n span{font-size:30rpx}.text-size-n{font-size:30rpx}.text-size-g{font-size:34rpx}.text-size-g span{font-size:34rpx}.text-size-g{font-size:34rpx}.text-size-lg{font-size:36rpx}.text-size-lg span{font-size:36rpx}.text-size-lg{font-size:36rpx}.text-size-xl{font-size:40rpx}.text-size-xl span{font-size:40rpx}.text-size-xl{font-size:40rpx}.text-weight-s{font-weight:100}.text-weight-n{font-weight:400}.text-weight-b{font-weight:700}.text-align-left{text-align:left}.text-align-right{text-align:right}.text-align-center{text-align:center}.round-tl-0{border-top-left-radius:0rpx!important}.round-tl-1{border-top-left-radius:4rpx!important}.round-tl-2{border-top-left-radius:8rpx!important}.round-tl-3{border-top-left-radius:12rpx!important}.round-tl-4{border-top-left-radius:16rpx!important}.round-tl-5{border-top-left-radius:20rpx!important}.round-tl-6{border-top-left-radius:24rpx!important}.round-tl-7{border-top-left-radius:28rpx!important}.round-tl-8{border-top-left-radius:32rpx!important}.round-tl-9{border-top-left-radius:36rpx!important}.round-tl-10{border-top-left-radius:40rpx!important}.round-tl-11{border-top-left-radius:44rpx!important}.round-tl-12{border-top-left-radius:48rpx!important}.round-tl-13{border-top-left-radius:52rpx!important}.round-tl-14{border-top-left-radius:56rpx!important}.round-tl-15{border-top-left-radius:60rpx!important}.round-tl-16{border-top-left-radius:64rpx!important}.round-tl-17{border-top-left-radius:68rpx!important}.round-tl-18{border-top-left-radius:72rpx!important}.round-tl-19{border-top-left-radius:76rpx!important}.round-tl-20{border-top-left-radius:80rpx!important}.round-tl-21{border-top-left-radius:84rpx!important}.round-tl-22{border-top-left-radius:88rpx!important}.round-tl-23{border-top-left-radius:92rpx!important}.round-tl-24{border-top-left-radius:96rpx!important}.round-tl-25{border-top-left-radius:100rpx!important}.round-tr-0{border-top-right-radius:0rpx!important}.round-tr-1{border-top-right-radius:4rpx!important}.round-tr-2{border-top-right-radius:8rpx!important}.round-tr-3{border-top-right-radius:12rpx!important}.round-tr-4{border-top-right-radius:16rpx!important}.round-tr-5{border-top-right-radius:20rpx!important}.round-tr-6{border-top-right-radius:24rpx!important}.round-tr-7{border-top-right-radius:28rpx!important}.round-tr-8{border-top-right-radius:32rpx!important}.round-tr-9{border-top-right-radius:36rpx!important}.round-tr-10{border-top-right-radius:40rpx!important}.round-tr-11{border-top-right-radius:44rpx!important}.round-tr-12{border-top-right-radius:48rpx!important}.round-tr-13{border-top-right-radius:52rpx!important}.round-tr-14{border-top-right-radius:56rpx!important}.round-tr-15{border-top-right-radius:60rpx!important}.round-tr-16{border-top-right-radius:64rpx!important}.round-tr-17{border-top-right-radius:68rpx!important}.round-tr-18{border-top-right-radius:72rpx!important}.round-tr-19{border-top-right-radius:76rpx!important}.round-tr-20{border-top-right-radius:80rpx!important}.round-tr-21{border-top-right-radius:84rpx!important}.round-tr-22{border-top-right-radius:88rpx!important}.round-tr-23{border-top-right-radius:92rpx!important}.round-tr-24{border-top-right-radius:96rpx!important}.round-tr-25{border-top-right-radius:100rpx!important}.round-bl-0{border-bottom-left-radius:0rpx!important}.round-bl-1{border-bottom-left-radius:4rpx!important}.round-bl-2{border-bottom-left-radius:8rpx!important}.round-bl-3{border-bottom-left-radius:12rpx!important}.round-bl-4{border-bottom-left-radius:16rpx!important}.round-bl-5{border-bottom-left-radius:20rpx!important}.round-bl-6{border-bottom-left-radius:24rpx!important}.round-bl-7{border-bottom-left-radius:28rpx!important}.round-bl-8{border-bottom-left-radius:32rpx!important}.round-bl-9{border-bottom-left-radius:36rpx!important}.round-bl-10{border-bottom-left-radius:40rpx!important}.round-bl-11{border-bottom-left-radius:44rpx!important}.round-bl-12{border-bottom-left-radius:48rpx!important}.round-bl-13{border-bottom-left-radius:52rpx!important}.round-bl-14{border-bottom-left-radius:56rpx!important}.round-bl-15{border-bottom-left-radius:60rpx!important}.round-bl-16{border-bottom-left-radius:64rpx!important}.round-bl-17{border-bottom-left-radius:68rpx!important}.round-bl-18{border-bottom-left-radius:72rpx!important}.round-bl-19{border-bottom-left-radius:76rpx!important}.round-bl-20{border-bottom-left-radius:80rpx!important}.round-bl-21{border-bottom-left-radius:84rpx!important}.round-bl-22{border-bottom-left-radius:88rpx!important}.round-bl-23{border-bottom-left-radius:92rpx!important}.round-bl-24{border-bottom-left-radius:96rpx!important}.round-bl-25{border-bottom-left-radius:100rpx!important}.round-br-0{border-bottom-right-radius:0rpx!important}.round-br-1{border-bottom-right-radius:4rpx!important}.round-br-2{border-bottom-right-radius:8rpx!important}.round-br-3{border-bottom-right-radius:12rpx!important}.round-br-4{border-bottom-right-radius:16rpx!important}.round-br-5{border-bottom-right-radius:20rpx!important}.round-br-6{border-bottom-right-radius:24rpx!important}.round-br-7{border-bottom-right-radius:28rpx!important}.round-br-8{border-bottom-right-radius:32rpx!important}.round-br-9{border-bottom-right-radius:36rpx!important}.round-br-10{border-bottom-right-radius:40rpx!important}.round-br-11{border-bottom-right-radius:44rpx!important}.round-br-12{border-bottom-right-radius:48rpx!important}.round-br-13{border-bottom-right-radius:52rpx!important}.round-br-14{border-bottom-right-radius:56rpx!important}.round-br-15{border-bottom-right-radius:60rpx!important}.round-br-16{border-bottom-right-radius:64rpx!important}.round-br-17{border-bottom-right-radius:68rpx!important}.round-br-18{border-bottom-right-radius:72rpx!important}.round-br-19{border-bottom-right-radius:76rpx!important}.round-br-20{border-bottom-right-radius:80rpx!important}.round-br-21{border-bottom-right-radius:84rpx!important}.round-br-22{border-bottom-right-radius:88rpx!important}.round-br-23{border-bottom-right-radius:92rpx!important}.round-br-24{border-bottom-right-radius:96rpx!important}.round-br-25{border-bottom-right-radius:100rpx!important}.round-a-0{border-radius:0rpx!important}.round-a-1{border-radius:4rpx!important}.round-a-2{border-radius:8rpx!important}.round-a-3{border-radius:12rpx!important}.round-a-4{border-radius:16rpx!important}.round-a-5{border-radius:20rpx!important}.round-a-6{border-radius:24rpx!important}.round-a-7{border-radius:28rpx!important}.round-a-8{border-radius:32rpx!important}.round-a-9{border-radius:36rpx!important}.round-a-10{border-radius:40rpx!important}.round-a-11{border-radius:44rpx!important}.round-a-12{border-radius:48rpx!important}.round-a-13{border-radius:52rpx!important}.round-a-14{border-radius:56rpx!important}.round-a-15{border-radius:60rpx!important}.round-a-16{border-radius:64rpx!important}.round-a-17{border-radius:68rpx!important}.round-a-18{border-radius:72rpx!important}.round-a-19{border-radius:76rpx!important}.round-a-20{border-radius:80rpx!important}.round-a-21{border-radius:84rpx!important}.round-a-22{border-radius:88rpx!important}.round-a-23{border-radius:92rpx!important}.round-a-24{border-radius:96rpx!important}.round-a-25{border-radius:100rpx!important}.round-t-0{border-top-left-radius:0rpx!important;border-top-right-radius:0rpx!important}.round-t-1{border-top-left-radius:4rpx!important;border-top-right-radius:4rpx!important}.round-t-2{border-top-left-radius:8rpx!important;border-top-right-radius:8rpx!important}.round-t-3{border-top-left-radius:12rpx!important;border-top-right-radius:12rpx!important}.round-t-4{border-top-left-radius:16rpx!important;border-top-right-radius:16rpx!important}.round-t-5{border-top-left-radius:20rpx!important;border-top-right-radius:20rpx!important}.round-t-6{border-top-left-radius:24rpx!important;border-top-right-radius:24rpx!important}.round-t-7{border-top-left-radius:28rpx!important;border-top-right-radius:28rpx!important}.round-t-8{border-top-left-radius:32rpx!important;border-top-right-radius:32rpx!important}.round-t-9{border-top-left-radius:36rpx!important;border-top-right-radius:36rpx!important}.round-t-10{border-top-left-radius:40rpx!important;border-top-right-radius:40rpx!important}.round-t-11{border-top-left-radius:44rpx!important;border-top-right-radius:44rpx!important}.round-t-12{border-top-left-radius:48rpx!important;border-top-right-radius:48rpx!important}.round-t-13{border-top-left-radius:52rpx!important;border-top-right-radius:52rpx!important}.round-t-14{border-top-left-radius:56rpx!important;border-top-right-radius:56rpx!important}.round-t-15{border-top-left-radius:60rpx!important;border-top-right-radius:60rpx!important}.round-t-16{border-top-left-radius:64rpx!important;border-top-right-radius:64rpx!important}.round-t-17{border-top-left-radius:68rpx!important;border-top-right-radius:68rpx!important}.round-t-18{border-top-left-radius:72rpx!important;border-top-right-radius:72rpx!important}.round-t-19{border-top-left-radius:76rpx!important;border-top-right-radius:76rpx!important}.round-t-20{border-top-left-radius:80rpx!important;border-top-right-radius:80rpx!important}.round-t-21{border-top-left-radius:84rpx!important;border-top-right-radius:84rpx!important}.round-t-22{border-top-left-radius:88rpx!important;border-top-right-radius:88rpx!important}.round-t-23{border-top-left-radius:92rpx!important;border-top-right-radius:92rpx!important}.round-t-24{border-top-left-radius:96rpx!important;border-top-right-radius:96rpx!important}.round-t-25{border-top-left-radius:100rpx!important;border-top-right-radius:100rpx!important}.round-b-0{border-bottom-left-radius:0rpx!important;border-bottom-right-radius:0rpx!important}.round-b-1{border-bottom-left-radius:4rpx!important;border-bottom-right-radius:4rpx!important}.round-b-2{border-bottom-left-radius:8rpx!important;border-bottom-right-radius:8rpx!important}.round-b-3{border-bottom-left-radius:12rpx!important;border-bottom-right-radius:12rpx!important}.round-b-4{border-bottom-left-radius:16rpx!important;border-bottom-right-radius:16rpx!important}.round-b-5{border-bottom-left-radius:20rpx!important;border-bottom-right-radius:20rpx!important}.round-b-6{border-bottom-left-radius:24rpx!important;border-bottom-right-radius:24rpx!important}.round-b-7{border-bottom-left-radius:28rpx!important;border-bottom-right-radius:28rpx!important}.round-b-8{border-bottom-left-radius:32rpx!important;border-bottom-right-radius:32rpx!important}.round-b-9{border-bottom-left-radius:36rpx!important;border-bottom-right-radius:36rpx!important}.round-b-10{border-bottom-left-radius:40rpx!important;border-bottom-right-radius:40rpx!important}.round-b-11{border-bottom-left-radius:44rpx!important;border-bottom-right-radius:44rpx!important}.round-b-12{border-bottom-left-radius:48rpx!important;border-bottom-right-radius:48rpx!important}.round-b-13{border-bottom-left-radius:52rpx!important;border-bottom-right-radius:52rpx!important}.round-b-14{border-bottom-left-radius:56rpx!important;border-bottom-right-radius:56rpx!important}.round-b-15{border-bottom-left-radius:60rpx!important;border-bottom-right-radius:60rpx!important}.round-b-16{border-bottom-left-radius:64rpx!important;border-bottom-right-radius:64rpx!important}.round-b-17{border-bottom-left-radius:68rpx!important;border-bottom-right-radius:68rpx!important}.round-b-18{border-bottom-left-radius:72rpx!important;border-bottom-right-radius:72rpx!important}.round-b-19{border-bottom-left-radius:76rpx!important;border-bottom-right-radius:76rpx!important}.round-b-20{border-bottom-left-radius:80rpx!important;border-bottom-right-radius:80rpx!important}.round-b-21{border-bottom-left-radius:84rpx!important;border-bottom-right-radius:84rpx!important}.round-b-22{border-bottom-left-radius:88rpx!important;border-bottom-right-radius:88rpx!important}.round-b-23{border-bottom-left-radius:92rpx!important;border-bottom-right-radius:92rpx!important}.round-b-24{border-bottom-left-radius:96rpx!important;border-bottom-right-radius:96rpx!important}.round-b-25{border-bottom-left-radius:100rpx!important;border-bottom-right-radius:100rpx!important}.round-l-0{border-top-left-radius:0rpx!important;border-bottom-left-radius:0rpx!important}.round-l-1{border-top-left-radius:4rpx!important;border-bottom-left-radius:4rpx!important}.round-l-2{border-top-left-radius:8rpx!important;border-bottom-left-radius:8rpx!important}.round-l-3{border-top-left-radius:12rpx!important;border-bottom-left-radius:12rpx!important}.round-l-4{border-top-left-radius:16rpx!important;border-bottom-left-radius:16rpx!important}.round-l-5{border-top-left-radius:20rpx!important;border-bottom-left-radius:20rpx!important}.round-l-6{border-top-left-radius:24rpx!important;border-bottom-left-radius:24rpx!important}.round-l-7{border-top-left-radius:28rpx!important;border-bottom-left-radius:28rpx!important}.round-l-8{border-top-left-radius:32rpx!important;border-bottom-left-radius:32rpx!important}.round-l-9{border-top-left-radius:36rpx!important;border-bottom-left-radius:36rpx!important}.round-l-10{border-top-left-radius:40rpx!important;border-bottom-left-radius:40rpx!important}.round-l-11{border-top-left-radius:44rpx!important;border-bottom-left-radius:44rpx!important}.round-l-12{border-top-left-radius:48rpx!important;border-bottom-left-radius:48rpx!important}.round-l-13{border-top-left-radius:52rpx!important;border-bottom-left-radius:52rpx!important}.round-l-14{border-top-left-radius:56rpx!important;border-bottom-left-radius:56rpx!important}.round-l-15{border-top-left-radius:60rpx!important;border-bottom-left-radius:60rpx!important}.round-l-16{border-top-left-radius:64rpx!important;border-bottom-left-radius:64rpx!important}.round-l-17{border-top-left-radius:68rpx!important;border-bottom-left-radius:68rpx!important}.round-l-18{border-top-left-radius:72rpx!important;border-bottom-left-radius:72rpx!important}.round-l-19{border-top-left-radius:76rpx!important;border-bottom-left-radius:76rpx!important}.round-l-20{border-top-left-radius:80rpx!important;border-bottom-left-radius:80rpx!important}.round-l-21{border-top-left-radius:84rpx!important;border-bottom-left-radius:84rpx!important}.round-l-22{border-top-left-radius:88rpx!important;border-bottom-left-radius:88rpx!important}.round-l-23{border-top-left-radius:92rpx!important;border-bottom-left-radius:92rpx!important}.round-l-24{border-top-left-radius:96rpx!important;border-bottom-left-radius:96rpx!important}.round-l-25{border-top-left-radius:100rpx!important;border-bottom-left-radius:100rpx!important}.round-r-0{border-top-right-radius:0rpx!important;border-bottom-right-radius:0rpx!important}.round-r-1{border-top-right-radius:4rpx!important;border-bottom-right-radius:4rpx!important}.round-r-2{border-top-right-radius:8rpx!important;border-bottom-right-radius:8rpx!important}.round-r-3{border-top-right-radius:12rpx!important;border-bottom-right-radius:12rpx!important}.round-r-4{border-top-right-radius:16rpx!important;border-bottom-right-radius:16rpx!important}.round-r-5{border-top-right-radius:20rpx!important;border-bottom-right-radius:20rpx!important}.round-r-6{border-top-right-radius:24rpx!important;border-bottom-right-radius:24rpx!important}.round-r-7{border-top-right-radius:28rpx!important;border-bottom-right-radius:28rpx!important}.round-r-8{border-top-right-radius:32rpx!important;border-bottom-right-radius:32rpx!important}.round-r-9{border-top-right-radius:36rpx!important;border-bottom-right-radius:36rpx!important}.round-r-10{border-top-right-radius:40rpx!important;border-bottom-right-radius:40rpx!important}.round-r-11{border-top-right-radius:44rpx!important;border-bottom-right-radius:44rpx!important}.round-r-12{border-top-right-radius:48rpx!important;border-bottom-right-radius:48rpx!important}.round-r-13{border-top-right-radius:52rpx!important;border-bottom-right-radius:52rpx!important}.round-r-14{border-top-right-radius:56rpx!important;border-bottom-right-radius:56rpx!important}.round-r-15{border-top-right-radius:60rpx!important;border-bottom-right-radius:60rpx!important}.round-r-16{border-top-right-radius:64rpx!important;border-bottom-right-radius:64rpx!important}.round-r-17{border-top-right-radius:68rpx!important;border-bottom-right-radius:68rpx!important}.round-r-18{border-top-right-radius:72rpx!important;border-bottom-right-radius:72rpx!important}.round-r-19{border-top-right-radius:76rpx!important;border-bottom-right-radius:76rpx!important}.round-r-20{border-top-right-radius:80rpx!important;border-bottom-right-radius:80rpx!important}.round-r-21{border-top-right-radius:84rpx!important;border-bottom-right-radius:84rpx!important}.round-r-22{border-top-right-radius:88rpx!important;border-bottom-right-radius:88rpx!important}.round-r-23{border-top-right-radius:92rpx!important;border-bottom-right-radius:92rpx!important}.round-r-24{border-top-right-radius:96rpx!important;border-bottom-right-radius:96rpx!important}.round-r-25{border-top-right-radius:100rpx!important;border-bottom-right-radius:100rpx!important}.round-0{border-radius:0rpx}.round-1{border-radius:4rpx}.round-2{border-radius:8rpx}.round-3{border-radius:12rpx}.round-4{border-radius:16rpx}.round-5{border-radius:20rpx}.round-6{border-radius:24rpx}.round-7{border-radius:28rpx}.round-8{border-radius:32rpx}.round-9{border-radius:36rpx}.round-10{border-radius:40rpx}.round-11{border-radius:44rpx}.round-12{border-radius:48rpx}.round-13{border-radius:52rpx}.round-14{border-radius:56rpx}.round-15{border-radius:60rpx}.round-16{border-radius:64rpx}.round-17{border-radius:68rpx}.round-18{border-radius:72rpx}.round-19{border-radius:76rpx}.round-20{border-radius:80rpx}.round-21{border-radius:84rpx}.round-22{border-radius:88rpx}.round-23{border-radius:92rpx}.round-24{border-radius:96rpx}.round-25{border-radius:100rpx}.round-26{border-radius:104rpx}.rounded{border-radius:50%!important}.opacity-0{opacity:0}.opacity-1{opacity:.1}.opacity-2{opacity:.2}.opacity-3{opacity:.3}.opacity-4{opacity:.4}.opacity-5{opacity:.5}.opacity-6{opacity:.6}.opacity-7{opacity:.7}.opacity-8{opacity:.8}.opacity-9{opacity:.9}.opacity-10{opacity:1}.shadow{box-shadow:0 2rpx 12rpx rgba(0,0,0,.08)}.shadow-0{box-shadow:0 0rpx 10rpx rgba(0,0,0,.08)}.shadow-1{box-shadow:0 2rpx 12rpx rgba(0,0,0,.08)}.shadow-2{box-shadow:0 4rpx 14rpx rgba(0,0,0,.08)}.shadow-3{box-shadow:0 6rpx 16rpx rgba(0,0,0,.08)}.shadow-4{box-shadow:0 8rpx 18rpx rgba(0,0,0,.08)}.shadow-5{box-shadow:0 10rpx 20rpx rgba(0,0,0,.08)}.shadow-6{box-shadow:0 12rpx 22rpx rgba(0,0,0,.08)}.shadow-7{box-shadow:0 14rpx 24rpx rgba(0,0,0,.08)}.shadow-8{box-shadow:0 16rpx 26rpx rgba(0,0,0,.08)}.shadow-9{box-shadow:0 18rpx 28rpx rgba(0,0,0,.08)}.shadow-10{box-shadow:0 20rpx 30rpx rgba(0,0,0,.08)}.shadow-11{box-shadow:0 22rpx 32rpx rgba(0,0,0,.08)}.shadow-12{box-shadow:0 24rpx 34rpx rgba(0,0,0,.08)}.shadow-13{box-shadow:0 26rpx 36rpx rgba(0,0,0,.08)}.shadow-14{box-shadow:0 28rpx 38rpx rgba(0,0,0,.08)}.shadow-15{box-shadow:0 30rpx 40rpx rgba(0,0,0,.08)}.shadow-16{box-shadow:0 32rpx 42rpx rgba(0,0,0,.08)}.shadow-17{box-shadow:0 34rpx 44rpx rgba(0,0,0,.08)}.shadow-18{box-shadow:0 36rpx 46rpx rgba(0,0,0,.08)}.shadow-19{box-shadow:0 38rpx 48rpx rgba(0,0,0,.08)}.shadow-20{box-shadow:0 40rpx 50rpx rgba(0,0,0,.08)}.shadow-21{box-shadow:0 42rpx 52rpx rgba(0,0,0,.08)}.shadow-22{box-shadow:0 44rpx 54rpx rgba(0,0,0,.08)}.shadow-23{box-shadow:0 46rpx 56rpx rgba(0,0,0,.08)}.shadow-24{box-shadow:0 48rpx 58rpx rgba(0,0,0,.08)}.shadow-25{box-shadow:0 50rpx 60rpx rgba(0,0,0,.08)}.border-0{border:solid 0rpx #f5f5f5!important}.border-0-bk{border:solid 0rpx #282828!important}.border{border:solid 2rpx #f5f5f5!important}.border-bk{border:solid 2rpx #282828!important}.border-1{border:solid 2px #f5f5f5!important}.border-1-bk{border:solid 2px #f5f5f5!important}.border-2{border:solid 4px #f5f5f5!important}.border-2-bk{border:solid 4px #f5f5f5!important}.border-3{border:solid 6px #f5f5f5!important}.border-3-bk{border:solid 6px #f5f5f5!important}.border-4{border:solid 8px #f5f5f5!important}.border-4-bk{border:solid 8px #f5f5f5!important}.border-5{border:solid 10px #f5f5f5!important}.border-5-bk{border:solid 10px #f5f5f5!important}.border-l-1{border-left:solid 2rpx #f5f5f5!important}.border-l-1-bk{border-left:solid 2rpx #282828!important}.border-l-2{border-left:solid 4rpx #f5f5f5!important}.border-l-2-bk{border-left:solid 4rpx #282828!important}.border-l-3{border-left:solid 6rpx #f5f5f5!important}.border-l-3-bk{border-left:solid 6rpx #282828!important}.border-l-4{border-left:solid 8rpx #f5f5f5!important}.border-l-4-bk{border-left:solid 8rpx #282828!important}.border-l-5{border-left:solid 10rpx #f5f5f5!important}.border-l-5-bk{border-left:solid 10rpx #282828!important}.border-r-1{border-right:solid 2rpx #f5f5f5!important}.border-r-1-bk{border-right:solid 2rpx #282828!important}.border-r-2{border-right:solid 4rpx #f5f5f5!important}.border-r-2-bk{border-right:solid 4rpx #282828!important}.border-r-3{border-right:solid 6rpx #f5f5f5!important}.border-r-3-bk{border-right:solid 6rpx #282828!important}.border-r-4{border-right:solid 8rpx #f5f5f5!important}.border-r-4-bk{border-right:solid 8rpx #282828!important}.border-r-5{border-right:solid 10rpx #f5f5f5!important}.border-r-5-bk{border-right:solid 10rpx #282828!important}.border-t-1{border-top:solid 2rpx #f5f5f5!important}.border-t-1-bk{border-top:solid 2rpx #282828!important}.border-t-2{border-top:solid 4rpx #f5f5f5!important}.border-t-2-bk{border-top:solid 4rpx #282828!important}.border-t-3{border-top:solid 6rpx #f5f5f5!important}.border-t-3-bk{border-top:solid 6rpx #282828!important}.border-t-4{border-top:solid 8rpx #f5f5f5!important}.border-t-4-bk{border-top:solid 8rpx #282828!important}.border-t-5{border-top:solid 10rpx #f5f5f5!important}.border-t-5-bk{border-top:solid 10rpx #282828!important}.border-b-1{border-bottom:solid 2rpx #f5f5f5!important}.border-b-1-bk{border-bottom:solid 2rpx #282828!important}.border-b-2{border-bottom:solid 4rpx #f5f5f5!important}.border-b-2-bk{border-bottom:solid 4rpx #282828!important}.border-b-3{border-bottom:solid 6rpx #f5f5f5!important}.border-b-3-bk{border-bottom:solid 6rpx #282828!important}.border-b-4{border-bottom:solid 8rpx #f5f5f5!important}.border-b-4-bk{border-bottom:solid 8rpx #282828!important}.border-b-5{border-bottom:solid 10rpx #f5f5f5!important}.border-b-5-bk{border-bottom:solid 10rpx #282828!important}.border-a-1{border:solid 2rpx #f5f5f5!important}.border-a-1-bk{border:solid 2rpx #282828!important}.border-a-2{border:solid 4rpx #f5f5f5!important}.border-a-2-bk{border:solid 4rpx #282828!important}.border-a-3{border:solid 6rpx #f5f5f5!important}.border-a-3-bk{border:solid 6rpx #282828!important}.border-a-4{border:solid 8rpx #f5f5f5!important}.border-a-4-bk{border:solid 8rpx #282828!important}.border-a-5{border:solid 10rpx #f5f5f5!important}.border-a-5-bk{border:solid 10rpx #282828!important}.pa-0{padding:0rpx}.pa-1{padding:1rpx}.pa-2{padding:2rpx}.pa-3{padding:3rpx}.pa-4{padding:4rpx}.pa-5{padding:5rpx}.pa-6{padding:6rpx}.pa-7{padding:7rpx}.pa-8{padding:8rpx}.pa-9{padding:9rpx}.pa-10{padding:10rpx}.pa-11{padding:11rpx}.pa-12{padding:12rpx}.pa-13{padding:13rpx}.pa-14{padding:14rpx}.pa-15{padding:15rpx}.pa-16{padding:16rpx}.pa-17{padding:17rpx}.pa-18{padding:18rpx}.pa-19{padding:19rpx}.pa-20{padding:20rpx}.pa-21{padding:21rpx}.pa-22{padding:22rpx}.pa-23{padding:23rpx}.pa-24{padding:24rpx}.pa-25{padding:25rpx}.pa-26{padding:26rpx}.pa-27{padding:27rpx}.pa-28{padding:28rpx}.pa-29{padding:29rpx}.pa-30{padding:30rpx}.pa-31{padding:31rpx}.pa-32{padding:32rpx}.pa-33{padding:33rpx}.pa-34{padding:34rpx}.pa-35{padding:35rpx}.pa-36{padding:36rpx}.pa-37{padding:37rpx}.pa-38{padding:38rpx}.pa-39{padding:39rpx}.pa-40{padding:40rpx}.pa-41{padding:41rpx}.pa-42{padding:42rpx}.pa-43{padding:43rpx}.pa-44{padding:44rpx}.pa-45{padding:45rpx}.pa-46{padding:46rpx}.pa-47{padding:47rpx}.pa-48{padding:48rpx}.pa-49{padding:49rpx}.pa-50{padding:50rpx}.pa-n1{padding:4rpx}.pa-n2{padding:8rpx}.pa-n3{padding:12rpx}.pa-n4{padding:16rpx}.pa-n5{padding:20rpx}.pa-n6{padding:24rpx}.pa-n7{padding:28rpx}.pa-n8{padding:32rpx}.pa-n9{padding:36rpx}.pa-n10{padding:40rpx}.pa-n11{padding:44rpx}.pa-n12{padding:48rpx}.pa-n13{padding:52rpx}.pa-n14{padding:56rpx}.pa-n15{padding:60rpx}.pa-n16{padding:64rpx}.pa-n17{padding:68rpx}.pa-n18{padding:72rpx}.pa-n19{padding:76rpx}.pa-n20{padding:80rpx}.pa-n21{padding:84rpx}.pa-n22{padding:88rpx}.pa-n23{padding:92rpx}.pa-n24{padding:96rpx}.pa-n25{padding:100rpx}.pt-0{padding-top:0rpx}.pt-1{padding-top:1rpx}.pt-2{padding-top:2rpx}.pt-3{padding-top:3rpx}.pt-4{padding-top:4rpx}.pt-5{padding-top:5rpx}.pt-6{padding-top:6rpx}.pt-7{padding-top:7rpx}.pt-8{padding-top:8rpx}.pt-9{padding-top:9rpx}.pt-10{padding-top:10rpx}.pt-11{padding-top:11rpx}.pt-12{padding-top:12rpx}.pt-13{padding-top:13rpx}.pt-14{padding-top:14rpx}.pt-15{padding-top:15rpx}.pt-16{padding-top:16rpx}.pt-17{padding-top:17rpx}.pt-18{padding-top:18rpx}.pt-19{padding-top:19rpx}.pt-20{padding-top:20rpx}.pt-21{padding-top:21rpx}.pt-22{padding-top:22rpx}.pt-23{padding-top:23rpx}.pt-24{padding-top:24rpx}.pt-25{padding-top:25rpx}.pt-26{padding-top:26rpx}.pt-27{padding-top:27rpx}.pt-28{padding-top:28rpx}.pt-29{padding-top:29rpx}.pt-30{padding-top:30rpx}.pt-31{padding-top:31rpx}.pt-32{padding-top:32rpx}.pt-33{padding-top:33rpx}.pt-34{padding-top:34rpx}.pt-35{padding-top:35rpx}.pt-36{padding-top:36rpx}.pt-37{padding-top:37rpx}.pt-38{padding-top:38rpx}.pt-39{padding-top:39rpx}.pt-40{padding-top:40rpx}.pt-41{padding-top:41rpx}.pt-42{padding-top:42rpx}.pt-43{padding-top:43rpx}.pt-44{padding-top:44rpx}.pt-45{padding-top:45rpx}.pt-46{padding-top:46rpx}.pt-47{padding-top:47rpx}.pt-48{padding-top:48rpx}.pt-49{padding-top:49rpx}.pt-50{padding-top:50rpx}.pt-n1{padding-top:4rpx}.pt-n2{padding-top:8rpx}.pt-n3{padding-top:12rpx}.pt-n4{padding-top:16rpx}.pt-n5{padding-top:20rpx}.pt-n6{padding-top:24rpx}.pt-n7{padding-top:28rpx}.pt-n8{padding-top:32rpx}.pt-n9{padding-top:36rpx}.pt-n10{padding-top:40rpx}.pt-n11{padding-top:44rpx}.pt-n12{padding-top:48rpx}.pt-n13{padding-top:52rpx}.pt-n14{padding-top:56rpx}.pt-n15{padding-top:60rpx}.pt-n16{padding-top:64rpx}.pt-n17{padding-top:68rpx}.pt-n18{padding-top:72rpx}.pt-n19{padding-top:76rpx}.pt-n20{padding-top:80rpx}.pt-n21{padding-top:84rpx}.pt-n22{padding-top:88rpx}.pt-n23{padding-top:92rpx}.pt-n24{padding-top:96rpx}.pt-n25{padding-top:100rpx}.pr-0{padding-right:0rpx}.pr-1{padding-right:1rpx}.pr-2{padding-right:2rpx}.pr-3{padding-right:3rpx}.pr-4{padding-right:4rpx}.pr-5{padding-right:5rpx}.pr-6{padding-right:6rpx}.pr-7{padding-right:7rpx}.pr-8{padding-right:8rpx}.pr-9{padding-right:9rpx}.pr-10{padding-right:10rpx}.pr-11{padding-right:11rpx}.pr-12{padding-right:12rpx}.pr-13{padding-right:13rpx}.pr-14{padding-right:14rpx}.pr-15{padding-right:15rpx}.pr-16{padding-right:16rpx}.pr-17{padding-right:17rpx}.pr-18{padding-right:18rpx}.pr-19{padding-right:19rpx}.pr-20{padding-right:20rpx}.pr-21{padding-right:21rpx}.pr-22{padding-right:22rpx}.pr-23{padding-right:23rpx}.pr-24{padding-right:24rpx}.pr-25{padding-right:25rpx}.pr-26{padding-right:26rpx}.pr-27{padding-right:27rpx}.pr-28{padding-right:28rpx}.pr-29{padding-right:29rpx}.pr-30{padding-right:30rpx}.pr-31{padding-right:31rpx}.pr-32{padding-right:32rpx}.pr-33{padding-right:33rpx}.pr-34{padding-right:34rpx}.pr-35{padding-right:35rpx}.pr-36{padding-right:36rpx}.pr-37{padding-right:37rpx}.pr-38{padding-right:38rpx}.pr-39{padding-right:39rpx}.pr-40{padding-right:40rpx}.pr-41{padding-right:41rpx}.pr-42{padding-right:42rpx}.pr-43{padding-right:43rpx}.pr-44{padding-right:44rpx}.pr-45{padding-right:45rpx}.pr-46{padding-right:46rpx}.pr-47{padding-right:47rpx}.pr-48{padding-right:48rpx}.pr-49{padding-right:49rpx}.pr-50{padding-right:50rpx}.pr-n1{padding-right:4rpx}.pr-n2{padding-right:8rpx}.pr-n3{padding-right:12rpx}.pr-n4{padding-right:16rpx}.pr-n5{padding-right:20rpx}.pr-n6{padding-right:24rpx}.pr-n7{padding-right:28rpx}.pr-n8{padding-right:32rpx}.pr-n9{padding-right:36rpx}.pr-n10{padding-right:40rpx}.pr-n11{padding-right:44rpx}.pr-n12{padding-right:48rpx}.pr-n13{padding-right:52rpx}.pr-n14{padding-right:56rpx}.pr-n15{padding-right:60rpx}.pr-n16{padding-right:64rpx}.pr-n17{padding-right:68rpx}.pr-n18{padding-right:72rpx}.pr-n19{padding-right:76rpx}.pr-n20{padding-right:80rpx}.pr-n21{padding-right:84rpx}.pr-n22{padding-right:88rpx}.pr-n23{padding-right:92rpx}.pr-n24{padding-right:96rpx}.pr-n25{padding-right:100rpx}.pb-0{padding-bottom:0rpx}.pb-1{padding-bottom:1rpx}.pb-2{padding-bottom:2rpx}.pb-3{padding-bottom:3rpx}.pb-4{padding-bottom:4rpx}.pb-5{padding-bottom:5rpx}.pb-6{padding-bottom:6rpx}.pb-7{padding-bottom:7rpx}.pb-8{padding-bottom:8rpx}.pb-9{padding-bottom:9rpx}.pb-10{padding-bottom:10rpx}.pb-11{padding-bottom:11rpx}.pb-12{padding-bottom:12rpx}.pb-13{padding-bottom:13rpx}.pb-14{padding-bottom:14rpx}.pb-15{padding-bottom:15rpx}.pb-16{padding-bottom:16rpx}.pb-17{padding-bottom:17rpx}.pb-18{padding-bottom:18rpx}.pb-19{padding-bottom:19rpx}.pb-20{padding-bottom:20rpx}.pb-21{padding-bottom:21rpx}.pb-22{padding-bottom:22rpx}.pb-23{padding-bottom:23rpx}.pb-24{padding-bottom:24rpx}.pb-25{padding-bottom:25rpx}.pb-26{padding-bottom:26rpx}.pb-27{padding-bottom:27rpx}.pb-28{padding-bottom:28rpx}.pb-29{padding-bottom:29rpx}.pb-30{padding-bottom:30rpx}.pb-31{padding-bottom:31rpx}.pb-32{padding-bottom:32rpx}.pb-33{padding-bottom:33rpx}.pb-34{padding-bottom:34rpx}.pb-35{padding-bottom:35rpx}.pb-36{padding-bottom:36rpx}.pb-37{padding-bottom:37rpx}.pb-38{padding-bottom:38rpx}.pb-39{padding-bottom:39rpx}.pb-40{padding-bottom:40rpx}.pb-41{padding-bottom:41rpx}.pb-42{padding-bottom:42rpx}.pb-43{padding-bottom:43rpx}.pb-44{padding-bottom:44rpx}.pb-45{padding-bottom:45rpx}.pb-46{padding-bottom:46rpx}.pb-47{padding-bottom:47rpx}.pb-48{padding-bottom:48rpx}.pb-49{padding-bottom:49rpx}.pb-50{padding-bottom:50rpx}.pb-n1{padding-bottom:4rpx}.pb-n2{padding-bottom:8rpx}.pb-n3{padding-bottom:12rpx}.pb-n4{padding-bottom:16rpx}.pb-n5{padding-bottom:20rpx}.pb-n6{padding-bottom:24rpx}.pb-n7{padding-bottom:28rpx}.pb-n8{padding-bottom:32rpx}.pb-n9{padding-bottom:36rpx}.pb-n10{padding-bottom:40rpx}.pb-n11{padding-bottom:44rpx}.pb-n12{padding-bottom:48rpx}.pb-n13{padding-bottom:52rpx}.pb-n14{padding-bottom:56rpx}.pb-n15{padding-bottom:60rpx}.pb-n16{padding-bottom:64rpx}.pb-n17{padding-bottom:68rpx}.pb-n18{padding-bottom:72rpx}.pb-n19{padding-bottom:76rpx}.pb-n20{padding-bottom:80rpx}.pb-n21{padding-bottom:84rpx}.pb-n22{padding-bottom:88rpx}.pb-n23{padding-bottom:92rpx}.pb-n24{padding-bottom:96rpx}.pb-n25{padding-bottom:100rpx}.pl-0{padding-left:0rpx}.pl-1{padding-left:1rpx}.pl-2{padding-left:2rpx}.pl-3{padding-left:3rpx}.pl-4{padding-left:4rpx}.pl-5{padding-left:5rpx}.pl-6{padding-left:6rpx}.pl-7{padding-left:7rpx}.pl-8{padding-left:8rpx}.pl-9{padding-left:9rpx}.pl-10{padding-left:10rpx}.pl-11{padding-left:11rpx}.pl-12{padding-left:12rpx}.pl-13{padding-left:13rpx}.pl-14{padding-left:14rpx}.pl-15{padding-left:15rpx}.pl-16{padding-left:16rpx}.pl-17{padding-left:17rpx}.pl-18{padding-left:18rpx}.pl-19{padding-left:19rpx}.pl-20{padding-left:20rpx}.pl-21{padding-left:21rpx}.pl-22{padding-left:22rpx}.pl-23{padding-left:23rpx}.pl-24{padding-left:24rpx}.pl-25{padding-left:25rpx}.pl-26{padding-left:26rpx}.pl-27{padding-left:27rpx}.pl-28{padding-left:28rpx}.pl-29{padding-left:29rpx}.pl-30{padding-left:30rpx}.pl-31{padding-left:31rpx}.pl-32{padding-left:32rpx}.pl-33{padding-left:33rpx}.pl-34{padding-left:34rpx}.pl-35{padding-left:35rpx}.pl-36{padding-left:36rpx}.pl-37{padding-left:37rpx}.pl-38{padding-left:38rpx}.pl-39{padding-left:39rpx}.pl-40{padding-left:40rpx}.pl-41{padding-left:41rpx}.pl-42{padding-left:42rpx}.pl-43{padding-left:43rpx}.pl-44{padding-left:44rpx}.pl-45{padding-left:45rpx}.pl-46{padding-left:46rpx}.pl-47{padding-left:47rpx}.pl-48{padding-left:48rpx}.pl-49{padding-left:49rpx}.pl-50{padding-left:50rpx}.pl-n1{padding-left:4rpx}.pl-n2{padding-left:8rpx}.pl-n3{padding-left:12rpx}.pl-n4{padding-left:16rpx}.pl-n5{padding-left:20rpx}.pl-n6{padding-left:24rpx}.pl-n7{padding-left:28rpx}.pl-n8{padding-left:32rpx}.pl-n9{padding-left:36rpx}.pl-n10{padding-left:40rpx}.pl-n11{padding-left:44rpx}.pl-n12{padding-left:48rpx}.pl-n13{padding-left:52rpx}.pl-n14{padding-left:56rpx}.pl-n15{padding-left:60rpx}.pl-n16{padding-left:64rpx}.pl-n17{padding-left:68rpx}.pl-n18{padding-left:72rpx}.pl-n19{padding-left:76rpx}.pl-n20{padding-left:80rpx}.pl-n21{padding-left:84rpx}.pl-n22{padding-left:88rpx}.pl-n23{padding-left:92rpx}.pl-n24{padding-left:96rpx}.pl-n25{padding-left:100rpx}.px-0{padding-left:0rpx;padding-right:0rpx}.px-1{padding-left:1rpx;padding-right:1rpx}.px-2{padding-left:2rpx;padding-right:2rpx}.px-3{padding-left:3rpx;padding-right:3rpx}.px-4{padding-left:4rpx;padding-right:4rpx}.px-5{padding-left:5rpx;padding-right:5rpx}.px-6{padding-left:6rpx;padding-right:6rpx}.px-7{padding-left:7rpx;padding-right:7rpx}.px-8{padding-left:8rpx;padding-right:8rpx}.px-9{padding-left:9rpx;padding-right:9rpx}.px-10{padding-left:10rpx;padding-right:10rpx}.px-11{padding-left:11rpx;padding-right:11rpx}.px-12{padding-left:12rpx;padding-right:12rpx}.px-13{padding-left:13rpx;padding-right:13rpx}.px-14{padding-left:14rpx;padding-right:14rpx}.px-15{padding-left:15rpx;padding-right:15rpx}.px-16{padding-left:16rpx;padding-right:16rpx}.px-17{padding-left:17rpx;padding-right:17rpx}.px-18{padding-left:18rpx;padding-right:18rpx}.px-19{padding-left:19rpx;padding-right:19rpx}.px-20{padding-left:20rpx;padding-right:20rpx}.px-21{padding-left:21rpx;padding-right:21rpx}.px-22{padding-left:22rpx;padding-right:22rpx}.px-23{padding-left:23rpx;padding-right:23rpx}.px-24{padding-left:24rpx;padding-right:24rpx}.px-25{padding-left:25rpx;padding-right:25rpx}.px-26{padding-left:26rpx;padding-right:26rpx}.px-27{padding-left:27rpx;padding-right:27rpx}.px-28{padding-left:28rpx;padding-right:28rpx}.px-29{padding-left:29rpx;padding-right:29rpx}.px-30{padding-left:30rpx;padding-right:30rpx}.px-31{padding-left:31rpx;padding-right:31rpx}.px-32{padding-left:32rpx;padding-right:32rpx}.px-33{padding-left:33rpx;padding-right:33rpx}.px-34{padding-left:34rpx;padding-right:34rpx}.px-35{padding-left:35rpx;padding-right:35rpx}.px-36{padding-left:36rpx;padding-right:36rpx}.px-37{padding-left:37rpx;padding-right:37rpx}.px-38{padding-left:38rpx;padding-right:38rpx}.px-39{padding-left:39rpx;padding-right:39rpx}.px-40{padding-left:40rpx;padding-right:40rpx}.px-41{padding-left:41rpx;padding-right:41rpx}.px-42{padding-left:42rpx;padding-right:42rpx}.px-43{padding-left:43rpx;padding-right:43rpx}.px-44{padding-left:44rpx;padding-right:44rpx}.px-45{padding-left:45rpx;padding-right:45rpx}.px-46{padding-left:46rpx;padding-right:46rpx}.px-47{padding-left:47rpx;padding-right:47rpx}.px-48{padding-left:48rpx;padding-right:48rpx}.px-49{padding-left:49rpx;padding-right:49rpx}.px-50{padding-left:50rpx;padding-right:50rpx}.px-n1{padding-left:4rpx;padding-right:4rpx}.px-n2{padding-left:8rpx;padding-right:8rpx}.px-n3{padding-left:12rpx;padding-right:12rpx}.px-n4{padding-left:16rpx;padding-right:16rpx}.px-n5{padding-left:20rpx;padding-right:20rpx}.px-n6{padding-left:24rpx;padding-right:24rpx}.px-n7{padding-left:28rpx;padding-right:28rpx}.px-n8{padding-left:32rpx;padding-right:32rpx}.px-n9{padding-left:36rpx;padding-right:36rpx}.px-n10{padding-left:40rpx;padding-right:40rpx}.px-n11{padding-left:44rpx;padding-right:44rpx}.px-n12{padding-left:48rpx;padding-right:48rpx}.px-n13{padding-left:52rpx;padding-right:52rpx}.px-n14{padding-left:56rpx;padding-right:56rpx}.px-n15{padding-left:60rpx;padding-right:60rpx}.px-n16{padding-left:64rpx;padding-right:64rpx}.px-n17{padding-left:68rpx;padding-right:68rpx}.px-n18{padding-left:72rpx;padding-right:72rpx}.px-n19{padding-left:76rpx;padding-right:76rpx}.px-n20{padding-left:80rpx;padding-right:80rpx}.px-n21{padding-left:84rpx;padding-right:84rpx}.px-n22{padding-left:88rpx;padding-right:88rpx}.px-n23{padding-left:92rpx;padding-right:92rpx}.px-n24{padding-left:96rpx;padding-right:96rpx}.px-n25{padding-left:100rpx;padding-right:100rpx}.py-0{padding-top:0rpx;padding-bottom:0rpx}.py-1{padding-top:1rpx;padding-bottom:1rpx}.py-2{padding-top:2rpx;padding-bottom:2rpx}.py-3{padding-top:3rpx;padding-bottom:3rpx}.py-4{padding-top:4rpx;padding-bottom:4rpx}.py-5{padding-top:5rpx;padding-bottom:5rpx}.py-6{padding-top:6rpx;padding-bottom:6rpx}.py-7{padding-top:7rpx;padding-bottom:7rpx}.py-8{padding-top:8rpx;padding-bottom:8rpx}.py-9{padding-top:9rpx;padding-bottom:9rpx}.py-10{padding-top:10rpx;padding-bottom:10rpx}.py-11{padding-top:11rpx;padding-bottom:11rpx}.py-12{padding-top:12rpx;padding-bottom:12rpx}.py-13{padding-top:13rpx;padding-bottom:13rpx}.py-14{padding-top:14rpx;padding-bottom:14rpx}.py-15{padding-top:15rpx;padding-bottom:15rpx}.py-16{padding-top:16rpx;padding-bottom:16rpx}.py-17{padding-top:17rpx;padding-bottom:17rpx}.py-18{padding-top:18rpx;padding-bottom:18rpx}.py-19{padding-top:19rpx;padding-bottom:19rpx}.py-20{padding-top:20rpx;padding-bottom:20rpx}.py-21{padding-top:21rpx;padding-bottom:21rpx}.py-22{padding-top:22rpx;padding-bottom:22rpx}.py-23{padding-top:23rpx;padding-bottom:23rpx}.py-24{padding-top:24rpx;padding-bottom:24rpx}.py-25{padding-top:25rpx;padding-bottom:25rpx}.py-26{padding-top:26rpx;padding-bottom:26rpx}.py-27{padding-top:27rpx;padding-bottom:27rpx}.py-28{padding-top:28rpx;padding-bottom:28rpx}.py-29{padding-top:29rpx;padding-bottom:29rpx}.py-30{padding-top:30rpx;padding-bottom:30rpx}.py-31{padding-top:31rpx;padding-bottom:31rpx}.py-32{padding-top:32rpx;padding-bottom:32rpx}.py-33{padding-top:33rpx;padding-bottom:33rpx}.py-34{padding-top:34rpx;padding-bottom:34rpx}.py-35{padding-top:35rpx;padding-bottom:35rpx}.py-36{padding-top:36rpx;padding-bottom:36rpx}.py-37{padding-top:37rpx;padding-bottom:37rpx}.py-38{padding-top:38rpx;padding-bottom:38rpx}.py-39{padding-top:39rpx;padding-bottom:39rpx}.py-40{padding-top:40rpx;padding-bottom:40rpx}.py-41{padding-top:41rpx;padding-bottom:41rpx}.py-42{padding-top:42rpx;padding-bottom:42rpx}.py-43{padding-top:43rpx;padding-bottom:43rpx}.py-44{padding-top:44rpx;padding-bottom:44rpx}.py-45{padding-top:45rpx;padding-bottom:45rpx}.py-46{padding-top:46rpx;padding-bottom:46rpx}.py-47{padding-top:47rpx;padding-bottom:47rpx}.py-48{padding-top:48rpx;padding-bottom:48rpx}.py-49{padding-top:49rpx;padding-bottom:49rpx}.py-50{padding-top:50rpx;padding-bottom:50rpx}.py-n1{padding-top:4rpx;padding-bottom:4rpx}.py-n2{padding-top:8rpx;padding-bottom:8rpx}.py-n3{padding-top:12rpx;padding-bottom:12rpx}.py-n4{padding-top:16rpx;padding-bottom:16rpx}.py-n5{padding-top:20rpx;padding-bottom:20rpx}.py-n6{padding-top:24rpx;padding-bottom:24rpx}.py-n7{padding-top:28rpx;padding-bottom:28rpx}.py-n8{padding-top:32rpx;padding-bottom:32rpx}.py-n9{padding-top:36rpx;padding-bottom:36rpx}.py-n10{padding-top:40rpx;padding-bottom:40rpx}.py-n11{padding-top:44rpx;padding-bottom:44rpx}.py-n12{padding-top:48rpx;padding-bottom:48rpx}.py-n13{padding-top:52rpx;padding-bottom:52rpx}.py-n14{padding-top:56rpx;padding-bottom:56rpx}.py-n15{padding-top:60rpx;padding-bottom:60rpx}.py-n16{padding-top:64rpx;padding-bottom:64rpx}.py-n17{padding-top:68rpx;padding-bottom:68rpx}.py-n18{padding-top:72rpx;padding-bottom:72rpx}.py-n19{padding-top:76rpx;padding-bottom:76rpx}.py-n20{padding-top:80rpx;padding-bottom:80rpx}.py-n21{padding-top:84rpx;padding-bottom:84rpx}.py-n22{padding-top:88rpx;padding-bottom:88rpx}.py-n23{padding-top:92rpx;padding-bottom:92rpx}.py-n24{padding-top:96rpx;padding-bottom:96rpx}.py-n25{padding-top:100rpx;padding-bottom:100rpx}.ma-0{margin:0rpx}.ma-1{margin:1rpx}.ma-2{margin:2rpx}.ma-3{margin:3rpx}.ma-4{margin:4rpx}.ma-5{margin:5rpx}.ma-6{margin:6rpx}.ma-7{margin:7rpx}.ma-8{margin:8rpx}.ma-9{margin:9rpx}.ma-10{margin:10rpx}.ma-11{margin:11rpx}.ma-12{margin:12rpx}.ma-13{margin:13rpx}.ma-14{margin:14rpx}.ma-15{margin:15rpx}.ma-16{margin:16rpx}.ma-17{margin:17rpx}.ma-18{margin:18rpx}.ma-19{margin:19rpx}.ma-20{margin:20rpx}.ma-21{margin:21rpx}.ma-22{margin:22rpx}.ma-23{margin:23rpx}.ma-24{margin:24rpx}.ma-25{margin:25rpx}.ma-26{margin:26rpx}.ma-27{margin:27rpx}.ma-28{margin:28rpx}.ma-29{margin:29rpx}.ma-30{margin:30rpx}.ma-31{margin:31rpx}.ma-32{margin:32rpx}.ma-33{margin:33rpx}.ma-34{margin:34rpx}.ma-35{margin:35rpx}.ma-36{margin:36rpx}.ma-37{margin:37rpx}.ma-38{margin:38rpx}.ma-39{margin:39rpx}.ma-40{margin:40rpx}.ma-41{margin:41rpx}.ma-42{margin:42rpx}.ma-43{margin:43rpx}.ma-44{margin:44rpx}.ma-45{margin:45rpx}.ma-46{margin:46rpx}.ma-47{margin:47rpx}.ma-48{margin:48rpx}.ma-49{margin:49rpx}.ma-50{margin:50rpx}.ma-n1{margin:4rpx}.ma-n2{margin:8rpx}.ma-n3{margin:12rpx}.ma-n4{margin:16rpx}.ma-n5{margin:20rpx}.ma-n6{margin:24rpx}.ma-n7{margin:28rpx}.ma-n8{margin:32rpx}.ma-n9{margin:36rpx}.ma-n10{margin:40rpx}.ma-n11{margin:44rpx}.ma-n12{margin:48rpx}.ma-n13{margin:52rpx}.ma-n14{margin:56rpx}.ma-n15{margin:60rpx}.ma-n16{margin:64rpx}.ma-n17{margin:68rpx}.ma-n18{margin:72rpx}.ma-n19{margin:76rpx}.ma-n20{margin:80rpx}.ma-n21{margin:84rpx}.ma-n22{margin:88rpx}.ma-n23{margin:92rpx}.ma-n24{margin:96rpx}.ma-n25{margin:100rpx}.mt-0{margin-top:0rpx}.mt--0{margin-top:0rpx}.mt-1{margin-top:1rpx}.mt--1{margin-top:-1rpx}.mt-2{margin-top:2rpx}.mt--2{margin-top:-2rpx}.mt-3{margin-top:3rpx}.mt--3{margin-top:-3rpx}.mt-4{margin-top:4rpx}.mt--4{margin-top:-4rpx}.mt-5{margin-top:5rpx}.mt--5{margin-top:-5rpx}.mt-6{margin-top:6rpx}.mt--6{margin-top:-6rpx}.mt-7{margin-top:7rpx}.mt--7{margin-top:-7rpx}.mt-8{margin-top:8rpx}.mt--8{margin-top:-8rpx}.mt-9{margin-top:9rpx}.mt--9{margin-top:-9rpx}.mt-10{margin-top:10rpx}.mt--10{margin-top:-10rpx}.mt-11{margin-top:11rpx}.mt--11{margin-top:-11rpx}.mt-12{margin-top:12rpx}.mt--12{margin-top:-12rpx}.mt-13{margin-top:13rpx}.mt--13{margin-top:-13rpx}.mt-14{margin-top:14rpx}.mt--14{margin-top:-14rpx}.mt-15{margin-top:15rpx}.mt--15{margin-top:-15rpx}.mt-16{margin-top:16rpx}.mt--16{margin-top:-16rpx}.mt-17{margin-top:17rpx}.mt--17{margin-top:-17rpx}.mt-18{margin-top:18rpx}.mt--18{margin-top:-18rpx}.mt-19{margin-top:19rpx}.mt--19{margin-top:-19rpx}.mt-20{margin-top:20rpx}.mt--20{margin-top:-20rpx}.mt-21{margin-top:21rpx}.mt--21{margin-top:-21rpx}.mt-22{margin-top:22rpx}.mt--22{margin-top:-22rpx}.mt-23{margin-top:23rpx}.mt--23{margin-top:-23rpx}.mt-24{margin-top:24rpx}.mt--24{margin-top:-24rpx}.mt-25{margin-top:25rpx}.mt--25{margin-top:-25rpx}.mt-26{margin-top:26rpx}.mt--26{margin-top:-26rpx}.mt-27{margin-top:27rpx}.mt--27{margin-top:-27rpx}.mt-28{margin-top:28rpx}.mt--28{margin-top:-28rpx}.mt-29{margin-top:29rpx}.mt--29{margin-top:-29rpx}.mt-30{margin-top:30rpx}.mt--30{margin-top:-30rpx}.mt-31{margin-top:31rpx}.mt--31{margin-top:-31rpx}.mt-32{margin-top:32rpx}.mt--32{margin-top:-32rpx}.mt-33{margin-top:33rpx}.mt--33{margin-top:-33rpx}.mt-34{margin-top:34rpx}.mt--34{margin-top:-34rpx}.mt-35{margin-top:35rpx}.mt--35{margin-top:-35rpx}.mt-36{margin-top:36rpx}.mt--36{margin-top:-36rpx}.mt-37{margin-top:37rpx}.mt--37{margin-top:-37rpx}.mt-38{margin-top:38rpx}.mt--38{margin-top:-38rpx}.mt-39{margin-top:39rpx}.mt--39{margin-top:-39rpx}.mt-40{margin-top:40rpx}.mt--40{margin-top:-40rpx}.mt-41{margin-top:41rpx}.mt--41{margin-top:-41rpx}.mt-42{margin-top:42rpx}.mt--42{margin-top:-42rpx}.mt-43{margin-top:43rpx}.mt--43{margin-top:-43rpx}.mt-44{margin-top:44rpx}.mt--44{margin-top:-44rpx}.mt-45{margin-top:45rpx}.mt--45{margin-top:-45rpx}.mt-46{margin-top:46rpx}.mt--46{margin-top:-46rpx}.mt-47{margin-top:47rpx}.mt--47{margin-top:-47rpx}.mt-48{margin-top:48rpx}.mt--48{margin-top:-48rpx}.mt-49{margin-top:49rpx}.mt--49{margin-top:-49rpx}.mt-50{margin-top:50rpx}.mt--50{margin-top:-50rpx}.mt-n1{margin-top:4rpx}.mt--n1{margin-top:-4rpx}.mt-n2{margin-top:8rpx}.mt--n2{margin-top:-8rpx}.mt-n3{margin-top:12rpx}.mt--n3{margin-top:-12rpx}.mt-n4{margin-top:16rpx}.mt--n4{margin-top:-16rpx}.mt-n5{margin-top:20rpx}.mt--n5{margin-top:-20rpx}.mt-n6{margin-top:24rpx}.mt--n6{margin-top:-24rpx}.mt-n7{margin-top:28rpx}.mt--n7{margin-top:-28rpx}.mt-n8{margin-top:32rpx}.mt--n8{margin-top:-32rpx}.mt-n9{margin-top:36rpx}.mt--n9{margin-top:-36rpx}.mt-n10{margin-top:40rpx}.mt--n10{margin-top:-40rpx}.mt-n11{margin-top:44rpx}.mt--n11{margin-top:-44rpx}.mt-n12{margin-top:48rpx}.mt--n12{margin-top:-48rpx}.mt-n13{margin-top:52rpx}.mt--n13{margin-top:-52rpx}.mt-n14{margin-top:56rpx}.mt--n14{margin-top:-56rpx}.mt-n15{margin-top:60rpx}.mt--n15{margin-top:-60rpx}.mt-n16{margin-top:64rpx}.mt--n16{margin-top:-64rpx}.mt-n17{margin-top:68rpx}.mt--n17{margin-top:-68rpx}.mt-n18{margin-top:72rpx}.mt--n18{margin-top:-72rpx}.mt-n19{margin-top:76rpx}.mt--n19{margin-top:-76rpx}.mt-n20{margin-top:80rpx}.mt--n20{margin-top:-80rpx}.mt-n21{margin-top:84rpx}.mt--n21{margin-top:-84rpx}.mt-n22{margin-top:88rpx}.mt--n22{margin-top:-88rpx}.mt-n23{margin-top:92rpx}.mt--n23{margin-top:-92rpx}.mt-n24{margin-top:96rpx}.mt--n24{margin-top:-96rpx}.mt-n25{margin-top:100rpx}.mt--n25{margin-top:-100rpx}.mr-0{margin-right:0rpx}.mr--0{margin-right:0rpx}.mr-1{margin-right:1rpx}.mr--1{margin-right:-1rpx}.mr-2{margin-right:2rpx}.mr--2{margin-right:-2rpx}.mr-3{margin-right:3rpx}.mr--3{margin-right:-3rpx}.mr-4{margin-right:4rpx}.mr--4{margin-right:-4rpx}.mr-5{margin-right:5rpx}.mr--5{margin-right:-5rpx}.mr-6{margin-right:6rpx}.mr--6{margin-right:-6rpx}.mr-7{margin-right:7rpx}.mr--7{margin-right:-7rpx}.mr-8{margin-right:8rpx}.mr--8{margin-right:-8rpx}.mr-9{margin-right:9rpx}.mr--9{margin-right:-9rpx}.mr-10{margin-right:10rpx}.mr--10{margin-right:-10rpx}.mr-11{margin-right:11rpx}.mr--11{margin-right:-11rpx}.mr-12{margin-right:12rpx}.mr--12{margin-right:-12rpx}.mr-13{margin-right:13rpx}.mr--13{margin-right:-13rpx}.mr-14{margin-right:14rpx}.mr--14{margin-right:-14rpx}.mr-15{margin-right:15rpx}.mr--15{margin-right:-15rpx}.mr-16{margin-right:16rpx}.mr--16{margin-right:-16rpx}.mr-17{margin-right:17rpx}.mr--17{margin-right:-17rpx}.mr-18{margin-right:18rpx}.mr--18{margin-right:-18rpx}.mr-19{margin-right:19rpx}.mr--19{margin-right:-19rpx}.mr-20{margin-right:20rpx}.mr--20{margin-right:-20rpx}.mr-21{margin-right:21rpx}.mr--21{margin-right:-21rpx}.mr-22{margin-right:22rpx}.mr--22{margin-right:-22rpx}.mr-23{margin-right:23rpx}.mr--23{margin-right:-23rpx}.mr-24{margin-right:24rpx}.mr--24{margin-right:-24rpx}.mr-25{margin-right:25rpx}.mr--25{margin-right:-25rpx}.mr-26{margin-right:26rpx}.mr--26{margin-right:-26rpx}.mr-27{margin-right:27rpx}.mr--27{margin-right:-27rpx}.mr-28{margin-right:28rpx}.mr--28{margin-right:-28rpx}.mr-29{margin-right:29rpx}.mr--29{margin-right:-29rpx}.mr-30{margin-right:30rpx}.mr--30{margin-right:-30rpx}.mr-31{margin-right:31rpx}.mr--31{margin-right:-31rpx}.mr-32{margin-right:32rpx}.mr--32{margin-right:-32rpx}.mr-33{margin-right:33rpx}.mr--33{margin-right:-33rpx}.mr-34{margin-right:34rpx}.mr--34{margin-right:-34rpx}.mr-35{margin-right:35rpx}.mr--35{margin-right:-35rpx}.mr-36{margin-right:36rpx}.mr--36{margin-right:-36rpx}.mr-37{margin-right:37rpx}.mr--37{margin-right:-37rpx}.mr-38{margin-right:38rpx}.mr--38{margin-right:-38rpx}.mr-39{margin-right:39rpx}.mr--39{margin-right:-39rpx}.mr-40{margin-right:40rpx}.mr--40{margin-right:-40rpx}.mr-41{margin-right:41rpx}.mr--41{margin-right:-41rpx}.mr-42{margin-right:42rpx}.mr--42{margin-right:-42rpx}.mr-43{margin-right:43rpx}.mr--43{margin-right:-43rpx}.mr-44{margin-right:44rpx}.mr--44{margin-right:-44rpx}.mr-45{margin-right:45rpx}.mr--45{margin-right:-45rpx}.mr-46{margin-right:46rpx}.mr--46{margin-right:-46rpx}.mr-47{margin-right:47rpx}.mr--47{margin-right:-47rpx}.mr-48{margin-right:48rpx}.mr--48{margin-right:-48rpx}.mr-49{margin-right:49rpx}.mr--49{margin-right:-49rpx}.mr-50{margin-right:50rpx}.mr--50{margin-right:-50rpx}.mr-n1{margin-right:4rpx}.mr--n1{margin-right:-4rpx}.mr-n2{margin-right:8rpx}.mr--n2{margin-right:-8rpx}.mr-n3{margin-right:12rpx}.mr--n3{margin-right:-12rpx}.mr-n4{margin-right:16rpx}.mr--n4{margin-right:-16rpx}.mr-n5{margin-right:20rpx}.mr--n5{margin-right:-20rpx}.mr-n6{margin-right:24rpx}.mr--n6{margin-right:-24rpx}.mr-n7{margin-right:28rpx}.mr--n7{margin-right:-28rpx}.mr-n8{margin-right:32rpx}.mr--n8{margin-right:-32rpx}.mr-n9{margin-right:36rpx}.mr--n9{margin-right:-36rpx}.mr-n10{margin-right:40rpx}.mr--n10{margin-right:-40rpx}.mr-n11{margin-right:44rpx}.mr--n11{margin-right:-44rpx}.mr-n12{margin-right:48rpx}.mr--n12{margin-right:-48rpx}.mr-n13{margin-right:52rpx}.mr--n13{margin-right:-52rpx}.mr-n14{margin-right:56rpx}.mr--n14{margin-right:-56rpx}.mr-n15{margin-right:60rpx}.mr--n15{margin-right:-60rpx}.mr-n16{margin-right:64rpx}.mr--n16{margin-right:-64rpx}.mr-n17{margin-right:68rpx}.mr--n17{margin-right:-68rpx}.mr-n18{margin-right:72rpx}.mr--n18{margin-right:-72rpx}.mr-n19{margin-right:76rpx}.mr--n19{margin-right:-76rpx}.mr-n20{margin-right:80rpx}.mr--n20{margin-right:-80rpx}.mr-n21{margin-right:84rpx}.mr--n21{margin-right:-84rpx}.mr-n22{margin-right:88rpx}.mr--n22{margin-right:-88rpx}.mr-n23{margin-right:92rpx}.mr--n23{margin-right:-92rpx}.mr-n24{margin-right:96rpx}.mr--n24{margin-right:-96rpx}.mr-n25{margin-right:100rpx}.mr--n25{margin-right:-100rpx}.mb-0{margin-bottom:0rpx}.mb--0{margin-bottom:0rpx}.mb-1{margin-bottom:1rpx}.mb--1{margin-bottom:-1rpx}.mb-2{margin-bottom:2rpx}.mb--2{margin-bottom:-2rpx}.mb-3{margin-bottom:3rpx}.mb--3{margin-bottom:-3rpx}.mb-4{margin-bottom:4rpx}.mb--4{margin-bottom:-4rpx}.mb-5{margin-bottom:5rpx}.mb--5{margin-bottom:-5rpx}.mb-6{margin-bottom:6rpx}.mb--6{margin-bottom:-6rpx}.mb-7{margin-bottom:7rpx}.mb--7{margin-bottom:-7rpx}.mb-8{margin-bottom:8rpx}.mb--8{margin-bottom:-8rpx}.mb-9{margin-bottom:9rpx}.mb--9{margin-bottom:-9rpx}.mb-10{margin-bottom:10rpx}.mb--10{margin-bottom:-10rpx}.mb-11{margin-bottom:11rpx}.mb--11{margin-bottom:-11rpx}.mb-12{margin-bottom:12rpx}.mb--12{margin-bottom:-12rpx}.mb-13{margin-bottom:13rpx}.mb--13{margin-bottom:-13rpx}.mb-14{margin-bottom:14rpx}.mb--14{margin-bottom:-14rpx}.mb-15{margin-bottom:15rpx}.mb--15{margin-bottom:-15rpx}.mb-16{margin-bottom:16rpx}.mb--16{margin-bottom:-16rpx}.mb-17{margin-bottom:17rpx}.mb--17{margin-bottom:-17rpx}.mb-18{margin-bottom:18rpx}.mb--18{margin-bottom:-18rpx}.mb-19{margin-bottom:19rpx}.mb--19{margin-bottom:-19rpx}.mb-20{margin-bottom:20rpx}.mb--20{margin-bottom:-20rpx}.mb-21{margin-bottom:21rpx}.mb--21{margin-bottom:-21rpx}.mb-22{margin-bottom:22rpx}.mb--22{margin-bottom:-22rpx}.mb-23{margin-bottom:23rpx}.mb--23{margin-bottom:-23rpx}.mb-24{margin-bottom:24rpx}.mb--24{margin-bottom:-24rpx}.mb-25{margin-bottom:25rpx}.mb--25{margin-bottom:-25rpx}.mb-26{margin-bottom:26rpx}.mb--26{margin-bottom:-26rpx}.mb-27{margin-bottom:27rpx}.mb--27{margin-bottom:-27rpx}.mb-28{margin-bottom:28rpx}.mb--28{margin-bottom:-28rpx}.mb-29{margin-bottom:29rpx}.mb--29{margin-bottom:-29rpx}.mb-30{margin-bottom:30rpx}.mb--30{margin-bottom:-30rpx}.mb-31{margin-bottom:31rpx}.mb--31{margin-bottom:-31rpx}.mb-32{margin-bottom:32rpx}.mb--32{margin-bottom:-32rpx}.mb-33{margin-bottom:33rpx}.mb--33{margin-bottom:-33rpx}.mb-34{margin-bottom:34rpx}.mb--34{margin-bottom:-34rpx}.mb-35{margin-bottom:35rpx}.mb--35{margin-bottom:-35rpx}.mb-36{margin-bottom:36rpx}.mb--36{margin-bottom:-36rpx}.mb-37{margin-bottom:37rpx}.mb--37{margin-bottom:-37rpx}.mb-38{margin-bottom:38rpx}.mb--38{margin-bottom:-38rpx}.mb-39{margin-bottom:39rpx}.mb--39{margin-bottom:-39rpx}.mb-40{margin-bottom:40rpx}.mb--40{margin-bottom:-40rpx}.mb-41{margin-bottom:41rpx}.mb--41{margin-bottom:-41rpx}.mb-42{margin-bottom:42rpx}.mb--42{margin-bottom:-42rpx}.mb-43{margin-bottom:43rpx}.mb--43{margin-bottom:-43rpx}.mb-44{margin-bottom:44rpx}.mb--44{margin-bottom:-44rpx}.mb-45{margin-bottom:45rpx}.mb--45{margin-bottom:-45rpx}.mb-46{margin-bottom:46rpx}.mb--46{margin-bottom:-46rpx}.mb-47{margin-bottom:47rpx}.mb--47{margin-bottom:-47rpx}.mb-48{margin-bottom:48rpx}.mb--48{margin-bottom:-48rpx}.mb-49{margin-bottom:49rpx}.mb--49{margin-bottom:-49rpx}.mb-50{margin-bottom:50rpx}.mb--50{margin-bottom:-50rpx}.mb-n1{margin-bottom:4rpx}.mb--n1{margin-bottom:-4rpx}.mb-n2{margin-bottom:8rpx}.mb--n2{margin-bottom:-8rpx}.mb-n3{margin-bottom:12rpx}.mb--n3{margin-bottom:-12rpx}.mb-n4{margin-bottom:16rpx}.mb--n4{margin-bottom:-16rpx}.mb-n5{margin-bottom:20rpx}.mb--n5{margin-bottom:-20rpx}.mb-n6{margin-bottom:24rpx}.mb--n6{margin-bottom:-24rpx}.mb-n7{margin-bottom:28rpx}.mb--n7{margin-bottom:-28rpx}.mb-n8{margin-bottom:32rpx}.mb--n8{margin-bottom:-32rpx}.mb-n9{margin-bottom:36rpx}.mb--n9{margin-bottom:-36rpx}.mb-n10{margin-bottom:40rpx}.mb--n10{margin-bottom:-40rpx}.mb-n11{margin-bottom:44rpx}.mb--n11{margin-bottom:-44rpx}.mb-n12{margin-bottom:48rpx}.mb--n12{margin-bottom:-48rpx}.mb-n13{margin-bottom:52rpx}.mb--n13{margin-bottom:-52rpx}.mb-n14{margin-bottom:56rpx}.mb--n14{margin-bottom:-56rpx}.mb-n15{margin-bottom:60rpx}.mb--n15{margin-bottom:-60rpx}.mb-n16{margin-bottom:64rpx}.mb--n16{margin-bottom:-64rpx}.mb-n17{margin-bottom:68rpx}.mb--n17{margin-bottom:-68rpx}.mb-n18{margin-bottom:72rpx}.mb--n18{margin-bottom:-72rpx}.mb-n19{margin-bottom:76rpx}.mb--n19{margin-bottom:-76rpx}.mb-n20{margin-bottom:80rpx}.mb--n20{margin-bottom:-80rpx}.mb-n21{margin-bottom:84rpx}.mb--n21{margin-bottom:-84rpx}.mb-n22{margin-bottom:88rpx}.mb--n22{margin-bottom:-88rpx}.mb-n23{margin-bottom:92rpx}.mb--n23{margin-bottom:-92rpx}.mb-n24{margin-bottom:96rpx}.mb--n24{margin-bottom:-96rpx}.mb-n25{margin-bottom:100rpx}.mb--n25{margin-bottom:-100rpx}.ml-0{margin-left:0rpx}.ml--0{margin-left:0rpx}.ml-1{margin-left:1rpx}.ml--1{margin-left:-1rpx}.ml-2{margin-left:2rpx}.ml--2{margin-left:-2rpx}.ml-3{margin-left:3rpx}.ml--3{margin-left:-3rpx}.ml-4{margin-left:4rpx}.ml--4{margin-left:-4rpx}.ml-5{margin-left:5rpx}.ml--5{margin-left:-5rpx}.ml-6{margin-left:6rpx}.ml--6{margin-left:-6rpx}.ml-7{margin-left:7rpx}.ml--7{margin-left:-7rpx}.ml-8{margin-left:8rpx}.ml--8{margin-left:-8rpx}.ml-9{margin-left:9rpx}.ml--9{margin-left:-9rpx}.ml-10{margin-left:10rpx}.ml--10{margin-left:-10rpx}.ml-11{margin-left:11rpx}.ml--11{margin-left:-11rpx}.ml-12{margin-left:12rpx}.ml--12{margin-left:-12rpx}.ml-13{margin-left:13rpx}.ml--13{margin-left:-13rpx}.ml-14{margin-left:14rpx}.ml--14{margin-left:-14rpx}.ml-15{margin-left:15rpx}.ml--15{margin-left:-15rpx}.ml-16{margin-left:16rpx}.ml--16{margin-left:-16rpx}.ml-17{margin-left:17rpx}.ml--17{margin-left:-17rpx}.ml-18{margin-left:18rpx}.ml--18{margin-left:-18rpx}.ml-19{margin-left:19rpx}.ml--19{margin-left:-19rpx}.ml-20{margin-left:20rpx}.ml--20{margin-left:-20rpx}.ml-21{margin-left:21rpx}.ml--21{margin-left:-21rpx}.ml-22{margin-left:22rpx}.ml--22{margin-left:-22rpx}.ml-23{margin-left:23rpx}.ml--23{margin-left:-23rpx}.ml-24{margin-left:24rpx}.ml--24{margin-left:-24rpx}.ml-25{margin-left:25rpx}.ml--25{margin-left:-25rpx}.ml-26{margin-left:26rpx}.ml--26{margin-left:-26rpx}.ml-27{margin-left:27rpx}.ml--27{margin-left:-27rpx}.ml-28{margin-left:28rpx}.ml--28{margin-left:-28rpx}.ml-29{margin-left:29rpx}.ml--29{margin-left:-29rpx}.ml-30{margin-left:30rpx}.ml--30{margin-left:-30rpx}.ml-31{margin-left:31rpx}.ml--31{margin-left:-31rpx}.ml-32{margin-left:32rpx}.ml--32{margin-left:-32rpx}.ml-33{margin-left:33rpx}.ml--33{margin-left:-33rpx}.ml-34{margin-left:34rpx}.ml--34{margin-left:-34rpx}.ml-35{margin-left:35rpx}.ml--35{margin-left:-35rpx}.ml-36{margin-left:36rpx}.ml--36{margin-left:-36rpx}.ml-37{margin-left:37rpx}.ml--37{margin-left:-37rpx}.ml-38{margin-left:38rpx}.ml--38{margin-left:-38rpx}.ml-39{margin-left:39rpx}.ml--39{margin-left:-39rpx}.ml-40{margin-left:40rpx}.ml--40{margin-left:-40rpx}.ml-41{margin-left:41rpx}.ml--41{margin-left:-41rpx}.ml-42{margin-left:42rpx}.ml--42{margin-left:-42rpx}.ml-43{margin-left:43rpx}.ml--43{margin-left:-43rpx}.ml-44{margin-left:44rpx}.ml--44{margin-left:-44rpx}.ml-45{margin-left:45rpx}.ml--45{margin-left:-45rpx}.ml-46{margin-left:46rpx}.ml--46{margin-left:-46rpx}.ml-47{margin-left:47rpx}.ml--47{margin-left:-47rpx}.ml-48{margin-left:48rpx}.ml--48{margin-left:-48rpx}.ml-49{margin-left:49rpx}.ml--49{margin-left:-49rpx}.ml-50{margin-left:50rpx}.ml--50{margin-left:-50rpx}.ml-n1{margin-left:4rpx}.ml--n1{margin-left:-4rpx}.ml-n2{margin-left:8rpx}.ml--n2{margin-left:-8rpx}.ml-n3{margin-left:12rpx}.ml--n3{margin-left:-12rpx}.ml-n4{margin-left:16rpx}.ml--n4{margin-left:-16rpx}.ml-n5{margin-left:20rpx}.ml--n5{margin-left:-20rpx}.ml-n6{margin-left:24rpx}.ml--n6{margin-left:-24rpx}.ml-n7{margin-left:28rpx}.ml--n7{margin-left:-28rpx}.ml-n8{margin-left:32rpx}.ml--n8{margin-left:-32rpx}.ml-n9{margin-left:36rpx}.ml--n9{margin-left:-36rpx}.ml-n10{margin-left:40rpx}.ml--n10{margin-left:-40rpx}.ml-n11{margin-left:44rpx}.ml--n11{margin-left:-44rpx}.ml-n12{margin-left:48rpx}.ml--n12{margin-left:-48rpx}.ml-n13{margin-left:52rpx}.ml--n13{margin-left:-52rpx}.ml-n14{margin-left:56rpx}.ml--n14{margin-left:-56rpx}.ml-n15{margin-left:60rpx}.ml--n15{margin-left:-60rpx}.ml-n16{margin-left:64rpx}.ml--n16{margin-left:-64rpx}.ml-n17{margin-left:68rpx}.ml--n17{margin-left:-68rpx}.ml-n18{margin-left:72rpx}.ml--n18{margin-left:-72rpx}.ml-n19{margin-left:76rpx}.ml--n19{margin-left:-76rpx}.ml-n20{margin-left:80rpx}.ml--n20{margin-left:-80rpx}.ml-n21{margin-left:84rpx}.ml--n21{margin-left:-84rpx}.ml-n22{margin-left:88rpx}.ml--n22{margin-left:-88rpx}.ml-n23{margin-left:92rpx}.ml--n23{margin-left:-92rpx}.ml-n24{margin-left:96rpx}.ml--n24{margin-left:-96rpx}.ml-n25{margin-left:100rpx}.ml--n25{margin-left:-100rpx}.mx-0{margin-left:0rpx;margin-right:0rpx}.mx-1{margin-left:1rpx;margin-right:1rpx}.mx-2{margin-left:2rpx;margin-right:2rpx}.mx-3{margin-left:3rpx;margin-right:3rpx}.mx-4{margin-left:4rpx;margin-right:4rpx}.mx-5{margin-left:5rpx;margin-right:5rpx}.mx-6{margin-left:6rpx;margin-right:6rpx}.mx-7{margin-left:7rpx;margin-right:7rpx}.mx-8{margin-left:8rpx;margin-right:8rpx}.mx-9{margin-left:9rpx;margin-right:9rpx}.mx-10{margin-left:10rpx;margin-right:10rpx}.mx-11{margin-left:11rpx;margin-right:11rpx}.mx-12{margin-left:12rpx;margin-right:12rpx}.mx-13{margin-left:13rpx;margin-right:13rpx}.mx-14{margin-left:14rpx;margin-right:14rpx}.mx-15{margin-left:15rpx;margin-right:15rpx}.mx-16{margin-left:16rpx;margin-right:16rpx}.mx-17{margin-left:17rpx;margin-right:17rpx}.mx-18{margin-left:18rpx;margin-right:18rpx}.mx-19{margin-left:19rpx;margin-right:19rpx}.mx-20{margin-left:20rpx;margin-right:20rpx}.mx-21{margin-left:21rpx;margin-right:21rpx}.mx-22{margin-left:22rpx;margin-right:22rpx}.mx-23{margin-left:23rpx;margin-right:23rpx}.mx-24{margin-left:24rpx;margin-right:24rpx}.mx-25{margin-left:25rpx;margin-right:25rpx}.mx-26{margin-left:26rpx;margin-right:26rpx}.mx-27{margin-left:27rpx;margin-right:27rpx}.mx-28{margin-left:28rpx;margin-right:28rpx}.mx-29{margin-left:29rpx;margin-right:29rpx}.mx-30{margin-left:30rpx;margin-right:30rpx}.mx-31{margin-left:31rpx;margin-right:31rpx}.mx-32{margin-left:32rpx;margin-right:32rpx}.mx-33{margin-left:33rpx;margin-right:33rpx}.mx-34{margin-left:34rpx;margin-right:34rpx}.mx-35{margin-left:35rpx;margin-right:35rpx}.mx-36{margin-left:36rpx;margin-right:36rpx}.mx-37{margin-left:37rpx;margin-right:37rpx}.mx-38{margin-left:38rpx;margin-right:38rpx}.mx-39{margin-left:39rpx;margin-right:39rpx}.mx-40{margin-left:40rpx;margin-right:40rpx}.mx-41{margin-left:41rpx;margin-right:41rpx}.mx-42{margin-left:42rpx;margin-right:42rpx}.mx-43{margin-left:43rpx;margin-right:43rpx}.mx-44{margin-left:44rpx;margin-right:44rpx}.mx-45{margin-left:45rpx;margin-right:45rpx}.mx-46{margin-left:46rpx;margin-right:46rpx}.mx-47{margin-left:47rpx;margin-right:47rpx}.mx-48{margin-left:48rpx;margin-right:48rpx}.mx-49{margin-left:49rpx;margin-right:49rpx}.mx-50{margin-left:50rpx;margin-right:50rpx}.mx-n1{margin-left:4rpx;margin-right:4rpx}.mx-n2{margin-left:8rpx;margin-right:8rpx}.mx-n3{margin-left:12rpx;margin-right:12rpx}.mx-n4{margin-left:16rpx;margin-right:16rpx}.mx-n5{margin-left:20rpx;margin-right:20rpx}.mx-n6{margin-left:24rpx;margin-right:24rpx}.mx-n7{margin-left:28rpx;margin-right:28rpx}.mx-n8{margin-left:32rpx;margin-right:32rpx}.mx-n9{margin-left:36rpx;margin-right:36rpx}.mx-n10{margin-left:40rpx;margin-right:40rpx}.mx-n11{margin-left:44rpx;margin-right:44rpx}.mx-n12{margin-left:48rpx;margin-right:48rpx}.mx-n13{margin-left:52rpx;margin-right:52rpx}.mx-n14{margin-left:56rpx;margin-right:56rpx}.mx-n15{margin-left:60rpx;margin-right:60rpx}.mx-n16{margin-left:64rpx;margin-right:64rpx}.mx-n17{margin-left:68rpx;margin-right:68rpx}.mx-n18{margin-left:72rpx;margin-right:72rpx}.mx-n19{margin-left:76rpx;margin-right:76rpx}.mx-n20{margin-left:80rpx;margin-right:80rpx}.mx-n21{margin-left:84rpx;margin-right:84rpx}.mx-n22{margin-left:88rpx;margin-right:88rpx}.mx-n23{margin-left:92rpx;margin-right:92rpx}.mx-n24{margin-left:96rpx;margin-right:96rpx}.mx-n25{margin-left:100rpx;margin-right:100rpx}.my-0{margin-top:0rpx;margin-bottom:0rpx}.my-1{margin-top:1rpx;margin-bottom:1rpx}.my-2{margin-top:2rpx;margin-bottom:2rpx}.my-3{margin-top:3rpx;margin-bottom:3rpx}.my-4{margin-top:4rpx;margin-bottom:4rpx}.my-5{margin-top:5rpx;margin-bottom:5rpx}.my-6{margin-top:6rpx;margin-bottom:6rpx}.my-7{margin-top:7rpx;margin-bottom:7rpx}.my-8{margin-top:8rpx;margin-bottom:8rpx}.my-9{margin-top:9rpx;margin-bottom:9rpx}.my-10{margin-top:10rpx;margin-bottom:10rpx}.my-11{margin-top:11rpx;margin-bottom:11rpx}.my-12{margin-top:12rpx;margin-bottom:12rpx}.my-13{margin-top:13rpx;margin-bottom:13rpx}.my-14{margin-top:14rpx;margin-bottom:14rpx}.my-15{margin-top:15rpx;margin-bottom:15rpx}.my-16{margin-top:16rpx;margin-bottom:16rpx}.my-17{margin-top:17rpx;margin-bottom:17rpx}.my-18{margin-top:18rpx;margin-bottom:18rpx}.my-19{margin-top:19rpx;margin-bottom:19rpx}.my-20{margin-top:20rpx;margin-bottom:20rpx}.my-21{margin-top:21rpx;margin-bottom:21rpx}.my-22{margin-top:22rpx;margin-bottom:22rpx}.my-23{margin-top:23rpx;margin-bottom:23rpx}.my-24{margin-top:24rpx;margin-bottom:24rpx}.my-25{margin-top:25rpx;margin-bottom:25rpx}.my-26{margin-top:26rpx;margin-bottom:26rpx}.my-27{margin-top:27rpx;margin-bottom:27rpx}.my-28{margin-top:28rpx;margin-bottom:28rpx}.my-29{margin-top:29rpx;margin-bottom:29rpx}.my-30{margin-top:30rpx;margin-bottom:30rpx}.my-31{margin-top:31rpx;margin-bottom:31rpx}.my-32{margin-top:32rpx;margin-bottom:32rpx}.my-33{margin-top:33rpx;margin-bottom:33rpx}.my-34{margin-top:34rpx;margin-bottom:34rpx}.my-35{margin-top:35rpx;margin-bottom:35rpx}.my-36{margin-top:36rpx;margin-bottom:36rpx}.my-37{margin-top:37rpx;margin-bottom:37rpx}.my-38{margin-top:38rpx;margin-bottom:38rpx}.my-39{margin-top:39rpx;margin-bottom:39rpx}.my-40{margin-top:40rpx;margin-bottom:40rpx}.my-41{margin-top:41rpx;margin-bottom:41rpx}.my-42{margin-top:42rpx;margin-bottom:42rpx}.my-43{margin-top:43rpx;margin-bottom:43rpx}.my-44{margin-top:44rpx;margin-bottom:44rpx}.my-45{margin-top:45rpx;margin-bottom:45rpx}.my-46{margin-top:46rpx;margin-bottom:46rpx}.my-47{margin-top:47rpx;margin-bottom:47rpx}.my-48{margin-top:48rpx;margin-bottom:48rpx}.my-49{margin-top:49rpx;margin-bottom:49rpx}.my-50{margin-top:50rpx;margin-bottom:50rpx}.my-n1{margin-top:4rpx;margin-bottom:4rpx}.my-n2{margin-top:8rpx;margin-bottom:8rpx}.my-n3{margin-top:12rpx;margin-bottom:12rpx}.my-n4{margin-top:16rpx;margin-bottom:16rpx}.my-n5{margin-top:20rpx;margin-bottom:20rpx}.my-n6{margin-top:24rpx;margin-bottom:24rpx}.my-n7{margin-top:28rpx;margin-bottom:28rpx}.my-n8{margin-top:32rpx;margin-bottom:32rpx}.my-n9{margin-top:36rpx;margin-bottom:36rpx}.my-n10{margin-top:40rpx;margin-bottom:40rpx}.my-n11{margin-top:44rpx;margin-bottom:44rpx}.my-n12{margin-top:48rpx;margin-bottom:48rpx}.my-n13{margin-top:52rpx;margin-bottom:52rpx}.my-n14{margin-top:56rpx;margin-bottom:56rpx}.my-n15{margin-top:60rpx;margin-bottom:60rpx}.my-n16{margin-top:64rpx;margin-bottom:64rpx}.my-n17{margin-top:68rpx;margin-bottom:68rpx}.my-n18{margin-top:72rpx;margin-bottom:72rpx}.my-n19{margin-top:76rpx;margin-bottom:76rpx}.my-n20{margin-top:80rpx;margin-bottom:80rpx}.my-n21{margin-top:84rpx;margin-bottom:84rpx}.my-n22{margin-top:88rpx;margin-bottom:88rpx}.my-n23{margin-top:92rpx;margin-bottom:92rpx}.my-n24{margin-top:96rpx;margin-bottom:96rpx}.my-n25{margin-top:100rpx;margin-bottom:100rpx}.t-0{top:0rpx}.t--0{top:0rpx}.t-1{top:1rpx}.t--1{top:-1rpx}.t-2{top:2rpx}.t--2{top:-2rpx}.t-3{top:3rpx}.t--3{top:-3rpx}.t-4{top:4rpx}.t--4{top:-4rpx}.t-5{top:5rpx}.t--5{top:-5rpx}.t-6{top:6rpx}.t--6{top:-6rpx}.t-7{top:7rpx}.t--7{top:-7rpx}.t-8{top:8rpx}.t--8{top:-8rpx}.t-9{top:9rpx}.t--9{top:-9rpx}.t-10{top:10rpx}.t--10{top:-10rpx}.t-11{top:11rpx}.t--11{top:-11rpx}.t-12{top:12rpx}.t--12{top:-12rpx}.t-13{top:13rpx}.t--13{top:-13rpx}.t-14{top:14rpx}.t--14{top:-14rpx}.t-15{top:15rpx}.t--15{top:-15rpx}.t-16{top:16rpx}.t--16{top:-16rpx}.t-17{top:17rpx}.t--17{top:-17rpx}.t-18{top:18rpx}.t--18{top:-18rpx}.t-19{top:19rpx}.t--19{top:-19rpx}.t-20{top:20rpx}.t--20{top:-20rpx}.t-21{top:21rpx}.t--21{top:-21rpx}.t-22{top:22rpx}.t--22{top:-22rpx}.t-23{top:23rpx}.t--23{top:-23rpx}.t-24{top:24rpx}.t--24{top:-24rpx}.t-25{top:25rpx}.t--25{top:-25rpx}.t-26{top:26rpx}.t--26{top:-26rpx}.t-27{top:27rpx}.t--27{top:-27rpx}.t-28{top:28rpx}.t--28{top:-28rpx}.t-29{top:29rpx}.t--29{top:-29rpx}.t-30{top:30rpx}.t--30{top:-30rpx}.t-31{top:31rpx}.t--31{top:-31rpx}.t-32{top:32rpx}.t--32{top:-32rpx}.t-33{top:33rpx}.t--33{top:-33rpx}.t-34{top:34rpx}.t--34{top:-34rpx}.t-35{top:35rpx}.t--35{top:-35rpx}.t-36{top:36rpx}.t--36{top:-36rpx}.t-37{top:37rpx}.t--37{top:-37rpx}.t-38{top:38rpx}.t--38{top:-38rpx}.t-39{top:39rpx}.t--39{top:-39rpx}.t-40{top:40rpx}.t--40{top:-40rpx}.t-41{top:41rpx}.t--41{top:-41rpx}.t-42{top:42rpx}.t--42{top:-42rpx}.t-43{top:43rpx}.t--43{top:-43rpx}.t-44{top:44rpx}.t--44{top:-44rpx}.t-45{top:45rpx}.t--45{top:-45rpx}.t-46{top:46rpx}.t--46{top:-46rpx}.t-47{top:47rpx}.t--47{top:-47rpx}.t-48{top:48rpx}.t--48{top:-48rpx}.t-49{top:49rpx}.t--49{top:-49rpx}.t-50{top:50rpx}.t--50{top:-50rpx}.t-n1{top:4rpx}.t--n1{top:-4rpx}.t-n2{top:8rpx}.t--n2{top:-8rpx}.t-n3{top:12rpx}.t--n3{top:-12rpx}.t-n4{top:16rpx}.t--n4{top:-16rpx}.t-n5{top:20rpx}.t--n5{top:-20rpx}.t-n6{top:24rpx}.t--n6{top:-24rpx}.t-n7{top:28rpx}.t--n7{top:-28rpx}.t-n8{top:32rpx}.t--n8{top:-32rpx}.t-n9{top:36rpx}.t--n9{top:-36rpx}.t-n10{top:40rpx}.t--n10{top:-40rpx}.t-n11{top:44rpx}.t--n11{top:-44rpx}.t-n12{top:48rpx}.t--n12{top:-48rpx}.t-n13{top:52rpx}.t--n13{top:-52rpx}.t-n14{top:56rpx}.t--n14{top:-56rpx}.t-n15{top:60rpx}.t--n15{top:-60rpx}.t-n16{top:64rpx}.t--n16{top:-64rpx}.t-n17{top:68rpx}.t--n17{top:-68rpx}.t-n18{top:72rpx}.t--n18{top:-72rpx}.t-n19{top:76rpx}.t--n19{top:-76rpx}.t-n20{top:80rpx}.t--n20{top:-80rpx}.t-n21{top:84rpx}.t--n21{top:-84rpx}.t-n22{top:88rpx}.t--n22{top:-88rpx}.t-n23{top:92rpx}.t--n23{top:-92rpx}.t-n24{top:96rpx}.t--n24{top:-96rpx}.t-n25{top:100rpx}.t--n25{top:-100rpx}.r-0{right:0rpx}.r--0{right:0rpx}.r-1{right:1rpx}.r--1{right:-1rpx}.r-2{right:2rpx}.r--2{right:-2rpx}.r-3{right:3rpx}.r--3{right:-3rpx}.r-4{right:4rpx}.r--4{right:-4rpx}.r-5{right:5rpx}.r--5{right:-5rpx}.r-6{right:6rpx}.r--6{right:-6rpx}.r-7{right:7rpx}.r--7{right:-7rpx}.r-8{right:8rpx}.r--8{right:-8rpx}.r-9{right:9rpx}.r--9{right:-9rpx}.r-10{right:10rpx}.r--10{right:-10rpx}.r-11{right:11rpx}.r--11{right:-11rpx}.r-12{right:12rpx}.r--12{right:-12rpx}.r-13{right:13rpx}.r--13{right:-13rpx}.r-14{right:14rpx}.r--14{right:-14rpx}.r-15{right:15rpx}.r--15{right:-15rpx}.r-16{right:16rpx}.r--16{right:-16rpx}.r-17{right:17rpx}.r--17{right:-17rpx}.r-18{right:18rpx}.r--18{right:-18rpx}.r-19{right:19rpx}.r--19{right:-19rpx}.r-20{right:20rpx}.r--20{right:-20rpx}.r-21{right:21rpx}.r--21{right:-21rpx}.r-22{right:22rpx}.r--22{right:-22rpx}.r-23{right:23rpx}.r--23{right:-23rpx}.r-24{right:24rpx}.r--24{right:-24rpx}.r-25{right:25rpx}.r--25{right:-25rpx}.r-26{right:26rpx}.r--26{right:-26rpx}.r-27{right:27rpx}.r--27{right:-27rpx}.r-28{right:28rpx}.r--28{right:-28rpx}.r-29{right:29rpx}.r--29{right:-29rpx}.r-30{right:30rpx}.r--30{right:-30rpx}.r-31{right:31rpx}.r--31{right:-31rpx}.r-32{right:32rpx}.r--32{right:-32rpx}.r-33{right:33rpx}.r--33{right:-33rpx}.r-34{right:34rpx}.r--34{right:-34rpx}.r-35{right:35rpx}.r--35{right:-35rpx}.r-36{right:36rpx}.r--36{right:-36rpx}.r-37{right:37rpx}.r--37{right:-37rpx}.r-38{right:38rpx}.r--38{right:-38rpx}.r-39{right:39rpx}.r--39{right:-39rpx}.r-40{right:40rpx}.r--40{right:-40rpx}.r-41{right:41rpx}.r--41{right:-41rpx}.r-42{right:42rpx}.r--42{right:-42rpx}.r-43{right:43rpx}.r--43{right:-43rpx}.r-44{right:44rpx}.r--44{right:-44rpx}.r-45{right:45rpx}.r--45{right:-45rpx}.r-46{right:46rpx}.r--46{right:-46rpx}.r-47{right:47rpx}.r--47{right:-47rpx}.r-48{right:48rpx}.r--48{right:-48rpx}.r-49{right:49rpx}.r--49{right:-49rpx}.r-50{right:50rpx}.r--50{right:-50rpx}.r-n1{right:4rpx}.r--n1{right:-4rpx}.r-n2{right:8rpx}.r--n2{right:-8rpx}.r-n3{right:12rpx}.r--n3{right:-12rpx}.r-n4{right:16rpx}.r--n4{right:-16rpx}.r-n5{right:20rpx}.r--n5{right:-20rpx}.r-n6{right:24rpx}.r--n6{right:-24rpx}.r-n7{right:28rpx}.r--n7{right:-28rpx}.r-n8{right:32rpx}.r--n8{right:-32rpx}.r-n9{right:36rpx}.r--n9{right:-36rpx}.r-n10{right:40rpx}.r--n10{right:-40rpx}.r-n11{right:44rpx}.r--n11{right:-44rpx}.r-n12{right:48rpx}.r--n12{right:-48rpx}.r-n13{right:52rpx}.r--n13{right:-52rpx}.r-n14{right:56rpx}.r--n14{right:-56rpx}.r-n15{right:60rpx}.r--n15{right:-60rpx}.r-n16{right:64rpx}.r--n16{right:-64rpx}.r-n17{right:68rpx}.r--n17{right:-68rpx}.r-n18{right:72rpx}.r--n18{right:-72rpx}.r-n19{right:76rpx}.r--n19{right:-76rpx}.r-n20{right:80rpx}.r--n20{right:-80rpx}.r-n21{right:84rpx}.r--n21{right:-84rpx}.r-n22{right:88rpx}.r--n22{right:-88rpx}.r-n23{right:92rpx}.r--n23{right:-92rpx}.r-n24{right:96rpx}.r--n24{right:-96rpx}.r-n25{right:100rpx}.r--n25{right:-100rpx}.b-0{bottom:0rpx}.b--0{bottom:0rpx}.b-1{bottom:1rpx}.b--1{bottom:-1rpx}.b-2{bottom:2rpx}.b--2{bottom:-2rpx}.b-3{bottom:3rpx}.b--3{bottom:-3rpx}.b-4{bottom:4rpx}.b--4{bottom:-4rpx}.b-5{bottom:5rpx}.b--5{bottom:-5rpx}.b-6{bottom:6rpx}.b--6{bottom:-6rpx}.b-7{bottom:7rpx}.b--7{bottom:-7rpx}.b-8{bottom:8rpx}.b--8{bottom:-8rpx}.b-9{bottom:9rpx}.b--9{bottom:-9rpx}.b-10{bottom:10rpx}.b--10{bottom:-10rpx}.b-11{bottom:11rpx}.b--11{bottom:-11rpx}.b-12{bottom:12rpx}.b--12{bottom:-12rpx}.b-13{bottom:13rpx}.b--13{bottom:-13rpx}.b-14{bottom:14rpx}.b--14{bottom:-14rpx}.b-15{bottom:15rpx}.b--15{bottom:-15rpx}.b-16{bottom:16rpx}.b--16{bottom:-16rpx}.b-17{bottom:17rpx}.b--17{bottom:-17rpx}.b-18{bottom:18rpx}.b--18{bottom:-18rpx}.b-19{bottom:19rpx}.b--19{bottom:-19rpx}.b-20{bottom:20rpx}.b--20{bottom:-20rpx}.b-21{bottom:21rpx}.b--21{bottom:-21rpx}.b-22{bottom:22rpx}.b--22{bottom:-22rpx}.b-23{bottom:23rpx}.b--23{bottom:-23rpx}.b-24{bottom:24rpx}.b--24{bottom:-24rpx}.b-25{bottom:25rpx}.b--25{bottom:-25rpx}.b-26{bottom:26rpx}.b--26{bottom:-26rpx}.b-27{bottom:27rpx}.b--27{bottom:-27rpx}.b-28{bottom:28rpx}.b--28{bottom:-28rpx}.b-29{bottom:29rpx}.b--29{bottom:-29rpx}.b-30{bottom:30rpx}.b--30{bottom:-30rpx}.b-31{bottom:31rpx}.b--31{bottom:-31rpx}.b-32{bottom:32rpx}.b--32{bottom:-32rpx}.b-33{bottom:33rpx}.b--33{bottom:-33rpx}.b-34{bottom:34rpx}.b--34{bottom:-34rpx}.b-35{bottom:35rpx}.b--35{bottom:-35rpx}.b-36{bottom:36rpx}.b--36{bottom:-36rpx}.b-37{bottom:37rpx}.b--37{bottom:-37rpx}.b-38{bottom:38rpx}.b--38{bottom:-38rpx}.b-39{bottom:39rpx}.b--39{bottom:-39rpx}.b-40{bottom:40rpx}.b--40{bottom:-40rpx}.b-41{bottom:41rpx}.b--41{bottom:-41rpx}.b-42{bottom:42rpx}.b--42{bottom:-42rpx}.b-43{bottom:43rpx}.b--43{bottom:-43rpx}.b-44{bottom:44rpx}.b--44{bottom:-44rpx}.b-45{bottom:45rpx}.b--45{bottom:-45rpx}.b-46{bottom:46rpx}.b--46{bottom:-46rpx}.b-47{bottom:47rpx}.b--47{bottom:-47rpx}.b-48{bottom:48rpx}.b--48{bottom:-48rpx}.b-49{bottom:49rpx}.b--49{bottom:-49rpx}.b-50{bottom:50rpx}.b--50{bottom:-50rpx}.b-n1{bottom:4rpx}.b--n1{bottom:-4rpx}.b-n2{bottom:8rpx}.b--n2{bottom:-8rpx}.b-n3{bottom:12rpx}.b--n3{bottom:-12rpx}.b-n4{bottom:16rpx}.b--n4{bottom:-16rpx}.b-n5{bottom:20rpx}.b--n5{bottom:-20rpx}.b-n6{bottom:24rpx}.b--n6{bottom:-24rpx}.b-n7{bottom:28rpx}.b--n7{bottom:-28rpx}.b-n8{bottom:32rpx}.b--n8{bottom:-32rpx}.b-n9{bottom:36rpx}.b--n9{bottom:-36rpx}.b-n10{bottom:40rpx}.b--n10{bottom:-40rpx}.b-n11{bottom:44rpx}.b--n11{bottom:-44rpx}.b-n12{bottom:48rpx}.b--n12{bottom:-48rpx}.b-n13{bottom:52rpx}.b--n13{bottom:-52rpx}.b-n14{bottom:56rpx}.b--n14{bottom:-56rpx}.b-n15{bottom:60rpx}.b--n15{bottom:-60rpx}.b-n16{bottom:64rpx}.b--n16{bottom:-64rpx}.b-n17{bottom:68rpx}.b--n17{bottom:-68rpx}.b-n18{bottom:72rpx}.b--n18{bottom:-72rpx}.b-n19{bottom:76rpx}.b--n19{bottom:-76rpx}.b-n20{bottom:80rpx}.b--n20{bottom:-80rpx}.b-n21{bottom:84rpx}.b--n21{bottom:-84rpx}.b-n22{bottom:88rpx}.b--n22{bottom:-88rpx}.b-n23{bottom:92rpx}.b--n23{bottom:-92rpx}.b-n24{bottom:96rpx}.b--n24{bottom:-96rpx}.b-n25{bottom:100rpx}.b--n25{bottom:-100rpx}.l-0{left:0rpx}.l--0{left:0rpx}.l-1{left:1rpx}.l--1{left:-1rpx}.l-2{left:2rpx}.l--2{left:-2rpx}.l-3{left:3rpx}.l--3{left:-3rpx}.l-4{left:4rpx}.l--4{left:-4rpx}.l-5{left:5rpx}.l--5{left:-5rpx}.l-6{left:6rpx}.l--6{left:-6rpx}.l-7{left:7rpx}.l--7{left:-7rpx}.l-8{left:8rpx}.l--8{left:-8rpx}.l-9{left:9rpx}.l--9{left:-9rpx}.l-10{left:10rpx}.l--10{left:-10rpx}.l-11{left:11rpx}.l--11{left:-11rpx}.l-12{left:12rpx}.l--12{left:-12rpx}.l-13{left:13rpx}.l--13{left:-13rpx}.l-14{left:14rpx}.l--14{left:-14rpx}.l-15{left:15rpx}.l--15{left:-15rpx}.l-16{left:16rpx}.l--16{left:-16rpx}.l-17{left:17rpx}.l--17{left:-17rpx}.l-18{left:18rpx}.l--18{left:-18rpx}.l-19{left:19rpx}.l--19{left:-19rpx}.l-20{left:20rpx}.l--20{left:-20rpx}.l-21{left:21rpx}.l--21{left:-21rpx}.l-22{left:22rpx}.l--22{left:-22rpx}.l-23{left:23rpx}.l--23{left:-23rpx}.l-24{left:24rpx}.l--24{left:-24rpx}.l-25{left:25rpx}.l--25{left:-25rpx}.l-26{left:26rpx}.l--26{left:-26rpx}.l-27{left:27rpx}.l--27{left:-27rpx}.l-28{left:28rpx}.l--28{left:-28rpx}.l-29{left:29rpx}.l--29{left:-29rpx}.l-30{left:30rpx}.l--30{left:-30rpx}.l-31{left:31rpx}.l--31{left:-31rpx}.l-32{left:32rpx}.l--32{left:-32rpx}.l-33{left:33rpx}.l--33{left:-33rpx}.l-34{left:34rpx}.l--34{left:-34rpx}.l-35{left:35rpx}.l--35{left:-35rpx}.l-36{left:36rpx}.l--36{left:-36rpx}.l-37{left:37rpx}.l--37{left:-37rpx}.l-38{left:38rpx}.l--38{left:-38rpx}.l-39{left:39rpx}.l--39{left:-39rpx}.l-40{left:40rpx}.l--40{left:-40rpx}.l-41{left:41rpx}.l--41{left:-41rpx}.l-42{left:42rpx}.l--42{left:-42rpx}.l-43{left:43rpx}.l--43{left:-43rpx}.l-44{left:44rpx}.l--44{left:-44rpx}.l-45{left:45rpx}.l--45{left:-45rpx}.l-46{left:46rpx}.l--46{left:-46rpx}.l-47{left:47rpx}.l--47{left:-47rpx}.l-48{left:48rpx}.l--48{left:-48rpx}.l-49{left:49rpx}.l--49{left:-49rpx}.l-50{left:50rpx}.l--50{left:-50rpx}.l-n1{left:4rpx}.l--n1{left:-4rpx}.l-n2{left:8rpx}.l--n2{left:-8rpx}.l-n3{left:12rpx}.l--n3{left:-12rpx}.l-n4{left:16rpx}.l--n4{left:-16rpx}.l-n5{left:20rpx}.l--n5{left:-20rpx}.l-n6{left:24rpx}.l--n6{left:-24rpx}.l-n7{left:28rpx}.l--n7{left:-28rpx}.l-n8{left:32rpx}.l--n8{left:-32rpx}.l-n9{left:36rpx}.l--n9{left:-36rpx}.l-n10{left:40rpx}.l--n10{left:-40rpx}.l-n11{left:44rpx}.l--n11{left:-44rpx}.l-n12{left:48rpx}.l--n12{left:-48rpx}.l-n13{left:52rpx}.l--n13{left:-52rpx}.l-n14{left:56rpx}.l--n14{left:-56rpx}.l-n15{left:60rpx}.l--n15{left:-60rpx}.l-n16{left:64rpx}.l--n16{left:-64rpx}.l-n17{left:68rpx}.l--n17{left:-68rpx}.l-n18{left:72rpx}.l--n18{left:-72rpx}.l-n19{left:76rpx}.l--n19{left:-76rpx}.l-n20{left:80rpx}.l--n20{left:-80rpx}.l-n21{left:84rpx}.l--n21{left:-84rpx}.l-n22{left:88rpx}.l--n22{left:-88rpx}.l-n23{left:92rpx}.l--n23{left:-92rpx}.l-n24{left:96rpx}.l--n24{left:-96rpx}.l-n25{left:100rpx}.l--n25{left:-100rpx}.grid{display:grid!important}.grid-col-1{grid-template-columns:repeat(1,1fr)}.grid-col-2{grid-template-columns:repeat(2,1fr)}.grid-col-3{grid-template-columns:repeat(3,1fr)}.grid-col-4{grid-template-columns:repeat(4,1fr)}.grid-col-5{grid-template-columns:repeat(5,1fr)}.grid-col-6{grid-template-columns:repeat(6,1fr)}.grid-col-7{grid-template-columns:repeat(7,1fr)}.grid-col-8{grid-template-columns:repeat(8,1fr)}.grid-col-9{grid-template-columns:repeat(9,1fr)}.grid-col-10{grid-template-columns:repeat(10,1fr)}.grid-col-11{grid-template-columns:repeat(11,1fr)}.gap-1{gap:2rpx}.gap-col-1{grid-column-gap:2rpx}.gap-row-1{grid-row-gap:2rpx}.gap-2{gap:4rpx}.gap-col-2{grid-column-gap:4rpx}.gap-row-2{grid-row-gap:4rpx}.gap-3{gap:6rpx}.gap-col-3{grid-column-gap:6rpx}.gap-row-3{grid-row-gap:6rpx}.gap-4{gap:8rpx}.gap-col-4{grid-column-gap:8rpx}.gap-row-4{grid-row-gap:8rpx}.gap-5{gap:10rpx}.gap-col-5{grid-column-gap:10rpx}.gap-row-5{grid-row-gap:10rpx}.gap-6{gap:12rpx}.gap-col-6{grid-column-gap:12rpx}.gap-row-6{grid-row-gap:12rpx}.gap-7{gap:14rpx}.gap-col-7{grid-column-gap:14rpx}.gap-row-7{grid-row-gap:14rpx}.gap-8{gap:16rpx}.gap-col-8{grid-column-gap:16rpx}.gap-row-8{grid-row-gap:16rpx}.gap-9{gap:18rpx}.gap-col-9{grid-column-gap:18rpx}.gap-row-9{grid-row-gap:18rpx}.gap-10{gap:20rpx}.gap-col-10{grid-column-gap:20rpx}.gap-row-10{grid-row-gap:20rpx}.gap-11{gap:22rpx}.gap-col-11{grid-column-gap:22rpx}.gap-row-11{grid-row-gap:22rpx}.gap-12{gap:24rpx}.gap-col-12{grid-column-gap:24rpx}.gap-row-12{grid-row-gap:24rpx}.gap-13{gap:26rpx}.gap-col-13{grid-column-gap:26rpx}.gap-row-13{grid-row-gap:26rpx}.gap-14{gap:28rpx}.gap-col-14{grid-column-gap:28rpx}.gap-row-14{grid-row-gap:28rpx}.gap-15{gap:30rpx}.gap-col-15{grid-column-gap:30rpx}.gap-row-15{grid-row-gap:30rpx}.gap-16{gap:32rpx}.gap-col-16{grid-column-gap:32rpx}.gap-row-16{grid-row-gap:32rpx}.gap-17{gap:34rpx}.gap-col-17{grid-column-gap:34rpx}.gap-row-17{grid-row-gap:34rpx}.gap-18{gap:36rpx}.gap-col-18{grid-column-gap:36rpx}.gap-row-18{grid-row-gap:36rpx}.gap-19{gap:38rpx}.gap-col-19{grid-column-gap:38rpx}.gap-row-19{grid-row-gap:38rpx}.gap-20{gap:40rpx}.gap-col-20{grid-column-gap:40rpx}.gap-row-20{grid-row-gap:40rpx}.gap-21{gap:42rpx}.gap-col-21{grid-column-gap:42rpx}.gap-row-21{grid-row-gap:42rpx}.gap-22{gap:44rpx}.gap-col-22{grid-column-gap:44rpx}.gap-row-22{grid-row-gap:44rpx}.gap-23{gap:46rpx}.gap-col-23{grid-column-gap:46rpx}.gap-row-23{grid-row-gap:46rpx}.gap-24{gap:48rpx}.gap-col-24{grid-column-gap:48rpx}.gap-row-24{grid-row-gap:48rpx}.gap-25{gap:50rpx}.gap-col-25{grid-column-gap:50rpx}.gap-row-25{grid-row-gap:50rpx}.flex{display:flex!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-flow:row wrap!important}.flex-shrink{flex-shrink:0!important}.flex-row{flex-direction:row!important}.flex-reverse{flex-direction:row-reverse!important}.flex-row-top-start{justify-content:flex-start!important;align-items:flex-start!important;align-content:center;display:flex!important}.flex-row-top-center{justify-content:center!important;align-items:flex-start!important;align-content:center;display:flex!important}.flex-row-top-end{justify-content:flex-end!important;align-items:flex-start!important;align-content:center;display:flex!important}.flex-row-center-start{justify-content:flex-start!important;align-items:center!important;align-content:center;display:flex!important}.flex-row-center-center{justify-content:center!important;align-items:center!important;align-content:center;display:flex!important}.flex-row-center-end{justify-content:flex-end!important;align-items:center!important;align-content:center;display:flex!important}.flex-row-bottom-start{justify-content:flex-start!important;align-items:flex-end!important;align-content:center;display:flex!important}.flex-row-bottom-center{justify-content:center!important;align-items:flex-end!important;align-content:center;display:flex!important}.flex-row-bottom-end{justify-content:flex-end!important;align-items:flex-end!important;align-content:center;display:flex!important}.flex-row-center-between{justify-content:space-between!important;align-items:center!important;align-content:center;display:flex!important}.flex-col-top-start{justify-content:flex-start!important;align-items:flex-start!important;align-content:center;display:flex!important}.flex-col-top-center{justify-content:flex-start!important;align-items:center!important;align-content:center;display:flex!important}.flex-col-top-end{justify-content:flex-start!important;align-items:flex-end!important;align-content:center;display:flex!important}.flex-col-center-start{justify-content:center!important;align-items:flex-start!important;align-content:center;display:flex!important}.flex-col-center-center{justify-content:center!important;align-items:center!important;align-content:center;display:flex!important}.flex-col-center-end{justify-content:center!important;align-items:flex-end!important;align-content:center;display:flex!important}.flex-col-bottom-start{justify-content:flex-end!important;align-items:flex-start!important;align-content:center;display:flex!important}.flex-col-bottom-center{justify-content:flex-end!important;align-items:center!important;align-content:center;display:flex!important}.flex-col-bottom-end{justify-content:flex-end!important;align-items:flex-end!important;align-content:center;display:flex!important}.flex-start{justify-content:flex-start!important;align-items:center!important;align-content:center;display:flex!important}.flex-end{justify-content:flex-end!important;align-items:center!important;align-content:center;display:flex!important}.flex-center{justify-content:center!important;align-items:center!important;align-content:center;display:flex!important}.flex-between{justify-content:space-between}.flex-col-full{flex-direction:column;align-items:stretch}.flex-around{justify-content:space-around}.flex-row-baseline-start{justify-content:flex-start!important;align-items:baseline!important;align-content:center;align-content:center;display:flex!important}.flex-row-baseline-center{justify-content:center!important;align-items:baseline!important;align-content:center;align-content:center;display:flex!important}.flex-row-baseline-end{justify-content:flex-end!important;align-items:baseline!important;align-content:center;align-content:center;display:flex!important}.flex-0{flex-grow:0!important;flex:0}.flex-1{flex-grow:1!important;flex:1}.flex-2{flex-grow:2!important;flex:2}.flex-3{flex-grow:3!important;flex:3}.flex-4{flex-grow:4!important;flex:4}.flex-5{flex-grow:5!important;flex:5}.flex-6{flex-grow:6!important;flex:6}.flex-7{flex-grow:7!important;flex:7}.flex-8{flex-grow:8!important;flex:8}.flex-9{flex-grow:9!important;flex:9}.flex-10{flex-grow:10!important;flex:10}.flex-11{flex-grow:11!important;flex:11}.flex-12{flex-grow:12!important;flex:12}.text-red{color:#f44336!important}.red{background-color:#f44336}.text-pink{color:#e91e63!important}.pink{background-color:#e91e63}.text-purple{color:#9c27b0!important}.purple{background-color:#9c27b0}.text-deep-purple{color:#673ab7!important}.deep-purple{background-color:#673ab7}.text-indigo{color:#3f51b5!important}.indigo{background-color:#3f51b5}.text-blue{color:#2196f3!important}.blue{background-color:#2196f3}.text-light-blue{color:#03a9f4!important}.light-blue{background-color:#03a9f4}.text-cyan{color:#00bcd4!important}.cyan{background-color:#00bcd4}.text-teal{color:#009688!important}.teal{background-color:#009688}.text-green{color:#4caf50!important}.green{background-color:#4caf50}.text-light-green{color:#8bc34a!important}.light-green{background-color:#8bc34a}.text-lime{color:#cddc39!important}.lime{background-color:#cddc39}.text-yellow{color:#ffeb3b!important}.yellow{background-color:#ffeb3b}.text-amber{color:#ffc107!important}.amber{background-color:#ffc107}.text-orange{color:#ff9800!important}.orange{background-color:#ff9800}.text-deep-orange{color:#ff5722!important}.deep-orange{background-color:#ff5722}.text-brown{color:#795548!important}.brown{background-color:#795548}.text-blue-grey{color:#607d8b!important}.blue-grey{background-color:#607d8b}.text-grey{color:#9e9e9e!important}.grey{background-color:#9e9e9e}.text-black{color:#000!important}.black{background-color:#000}.text-white{color:#fff!important}.white{background-color:#fff}.text-lighten-5{color:#fafafa!important}.lighten-5{background-color:#fafafa}.text-lighten-4{color:#f5f5f5!important}.lighten-4{background-color:#f5f5f5}.text-lighten-3{color:#eee!important}.lighten-3{background-color:#eee}.text-lighten-2{color:#e0e0e0!important}.lighten-2{background-color:#e0e0e0}.text-lighten-1{color:#bdbdbd!important}.lighten-1{background-color:#bdbdbd}.text-darken-1{color:#757575!important}.darken-1{background-color:#757575}.text-darken-2{color:#616161!important}.darken-2{background-color:#616161}.text-darken-3{color:#424242!important}.darken-3{background-color:#424242}.text-darken-4{color:#212121!important}.darken-4{background-color:#212121}.text-darken-5{color:#131313!important}.darken-5{background-color:#131313}.text-darken-6{color:#0a0a0a!important}.darken-6{background-color:#0a0a0a} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/scss/nvue.css b/uni_modules/UniDevTools/src/tmui/scss/nvue.css new file mode 100644 index 0000000..a163c90 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/nvue.css @@ -0,0 +1,8034 @@ +.overflow { + overflow: hidden; } + +.relative { + position: relative; } + +.absolute { + position: absolute; } + +.fixed { + position: fixed; } + +.sticky { + position: sticky; } + +.fulled-height { + display: flex; + align-items: stretch; } + +.fulled-height { + display: flex; + align-items: stretch; } + +.zIndex-0 { + z-index: 0; } + +.zIndex-n0 { + z-index: 0; } + +.zIndex-1 { + z-index: 1; } + +.zIndex-n1 { + z-index: 4; } + +.zIndex-2 { + z-index: 2; } + +.zIndex-n2 { + z-index: 8; } + +.zIndex-3 { + z-index: 3; } + +.zIndex-n3 { + z-index: 12; } + +.zIndex-4 { + z-index: 4; } + +.zIndex-n4 { + z-index: 16; } + +.zIndex-5 { + z-index: 5; } + +.zIndex-n5 { + z-index: 20; } + +.zIndex-6 { + z-index: 6; } + +.zIndex-n6 { + z-index: 24; } + +.zIndex-7 { + z-index: 7; } + +.zIndex-n7 { + z-index: 28; } + +.zIndex-8 { + z-index: 8; } + +.zIndex-n8 { + z-index: 32; } + +.zIndex-9 { + z-index: 9; } + +.zIndex-n9 { + z-index: 36; } + +.zIndex-10 { + z-index: 10; } + +.zIndex-n10 { + z-index: 40; } + +.zIndex-11 { + z-index: 11; } + +.zIndex-n11 { + z-index: 44; } + +.zIndex-12 { + z-index: 12; } + +.zIndex-n12 { + z-index: 48; } + +.zIndex-13 { + z-index: 13; } + +.zIndex-n13 { + z-index: 52; } + +.zIndex-14 { + z-index: 14; } + +.zIndex-n14 { + z-index: 56; } + +.zIndex-15 { + z-index: 15; } + +.zIndex-n15 { + z-index: 60; } + +.zIndex-16 { + z-index: 16; } + +.zIndex-n16 { + z-index: 64; } + +.zIndex-17 { + z-index: 17; } + +.zIndex-n17 { + z-index: 68; } + +.zIndex-18 { + z-index: 18; } + +.zIndex-n18 { + z-index: 72; } + +.zIndex-19 { + z-index: 19; } + +.zIndex-n19 { + z-index: 76; } + +.zIndex-20 { + z-index: 20; } + +.zIndex-n20 { + z-index: 80; } + +.zIndex-21 { + z-index: 21; } + +.zIndex-n21 { + z-index: 84; } + +.zIndex-22 { + z-index: 22; } + +.zIndex-n22 { + z-index: 88; } + +.zIndex-23 { + z-index: 23; } + +.zIndex-n23 { + z-index: 92; } + +.zIndex-24 { + z-index: 24; } + +.zIndex-n24 { + z-index: 96; } + +.zIndex-25 { + z-index: 25; } + +.zIndex-n25 { + z-index: 100; } + +.zIndex-26 { + z-index: 26; } + +.zIndex-n26 { + z-index: 104; } + +.text-overflow { + text-overflow: ellipsis; } + +.text-overflow-1 { + text-overflow: ellipsis; + lines: 1; } + +.text-overflow-2 { + text-overflow: ellipsis; + lines: 2; } + +.text-overflow-3 { + text-overflow: ellipsis; + lines: 3; } + +.text-overflow-4 { + text-overflow: ellipsis; + lines: 4; } + +.text-delete { + text-decoration: line-through; } + +.text-underline { + text-decoration: underline; } + +.text-size-xxs { + font-size: 20rpx; } + +.text-size-xs { + font-size: 22rpx; } + +.text-size-s { + font-size: 24rpx; } + +.text-size-m { + font-size: 28rpx; } + +.text-size-n { + font-size: 30rpx; } + +.text-size-g { + font-size: 34rpx; } + +.text-size-lg { + font-size: 36rpx; } + +.text-size-xl { + font-size: 40rpx; } + +.text-weight-s { + font-weight: 100; } + +.text-weight-n { + font-weight: 400; } + +.text-weight-b { + font-weight: 700; } + +.text-align-left { + text-align: left; } + +.text-align-right { + text-align: right; } + +.text-align-center { + text-align: center; } + +.round-tl-0 { + border-top-left-radius: 0rpx; } + +.round-tl-1 { + border-top-left-radius: 4rpx; } + +.round-tl-2 { + border-top-left-radius: 8rpx; } + +.round-tl-3 { + border-top-left-radius: 12rpx; } + +.round-tl-4 { + border-top-left-radius: 16rpx; } + +.round-tl-5 { + border-top-left-radius: 20rpx; } + +.round-tl-6 { + border-top-left-radius: 24rpx; } + +.round-tl-7 { + border-top-left-radius: 28rpx; } + +.round-tl-8 { + border-top-left-radius: 32rpx; } + +.round-tl-9 { + border-top-left-radius: 36rpx; } + +.round-tl-10 { + border-top-left-radius: 40rpx; } + +.round-tl-11 { + border-top-left-radius: 44rpx; } + +.round-tl-12 { + border-top-left-radius: 48rpx; } + +.round-tl-13 { + border-top-left-radius: 52rpx; } + +.round-tl-14 { + border-top-left-radius: 56rpx; } + +.round-tl-15 { + border-top-left-radius: 60rpx; } + +.round-tl-16 { + border-top-left-radius: 64rpx; } + +.round-tl-17 { + border-top-left-radius: 68rpx; } + +.round-tl-18 { + border-top-left-radius: 72rpx; } + +.round-tl-19 { + border-top-left-radius: 76rpx; } + +.round-tl-20 { + border-top-left-radius: 80rpx; } + +.round-tl-21 { + border-top-left-radius: 84rpx; } + +.round-tl-22 { + border-top-left-radius: 88rpx; } + +.round-tl-23 { + border-top-left-radius: 92rpx; } + +.round-tl-24 { + border-top-left-radius: 96rpx; } + +.round-tl-25 { + border-top-left-radius: 100rpx; } + +.round-tr-0 { + border-top-right-radius: 0rpx; } + +.round-tr-1 { + border-top-right-radius: 4rpx; } + +.round-tr-2 { + border-top-right-radius: 8rpx; } + +.round-tr-3 { + border-top-right-radius: 12rpx; } + +.round-tr-4 { + border-top-right-radius: 16rpx; } + +.round-tr-5 { + border-top-right-radius: 20rpx; } + +.round-tr-6 { + border-top-right-radius: 24rpx; } + +.round-tr-7 { + border-top-right-radius: 28rpx; } + +.round-tr-8 { + border-top-right-radius: 32rpx; } + +.round-tr-9 { + border-top-right-radius: 36rpx; } + +.round-tr-10 { + border-top-right-radius: 40rpx; } + +.round-tr-11 { + border-top-right-radius: 44rpx; } + +.round-tr-12 { + border-top-right-radius: 48rpx; } + +.round-tr-13 { + border-top-right-radius: 52rpx; } + +.round-tr-14 { + border-top-right-radius: 56rpx; } + +.round-tr-15 { + border-top-right-radius: 60rpx; } + +.round-tr-16 { + border-top-right-radius: 64rpx; } + +.round-tr-17 { + border-top-right-radius: 68rpx; } + +.round-tr-18 { + border-top-right-radius: 72rpx; } + +.round-tr-19 { + border-top-right-radius: 76rpx; } + +.round-tr-20 { + border-top-right-radius: 80rpx; } + +.round-tr-21 { + border-top-right-radius: 84rpx; } + +.round-tr-22 { + border-top-right-radius: 88rpx; } + +.round-tr-23 { + border-top-right-radius: 92rpx; } + +.round-tr-24 { + border-top-right-radius: 96rpx; } + +.round-tr-25 { + border-top-right-radius: 100rpx; } + +.round-bl-0 { + border-bottom-left-radius: 0rpx; } + +.round-bl-1 { + border-bottom-left-radius: 4rpx; } + +.round-bl-2 { + border-bottom-left-radius: 8rpx; } + +.round-bl-3 { + border-bottom-left-radius: 12rpx; } + +.round-bl-4 { + border-bottom-left-radius: 16rpx; } + +.round-bl-5 { + border-bottom-left-radius: 20rpx; } + +.round-bl-6 { + border-bottom-left-radius: 24rpx; } + +.round-bl-7 { + border-bottom-left-radius: 28rpx; } + +.round-bl-8 { + border-bottom-left-radius: 32rpx; } + +.round-bl-9 { + border-bottom-left-radius: 36rpx; } + +.round-bl-10 { + border-bottom-left-radius: 40rpx; } + +.round-bl-11 { + border-bottom-left-radius: 44rpx; } + +.round-bl-12 { + border-bottom-left-radius: 48rpx; } + +.round-bl-13 { + border-bottom-left-radius: 52rpx; } + +.round-bl-14 { + border-bottom-left-radius: 56rpx; } + +.round-bl-15 { + border-bottom-left-radius: 60rpx; } + +.round-bl-16 { + border-bottom-left-radius: 64rpx; } + +.round-bl-17 { + border-bottom-left-radius: 68rpx; } + +.round-bl-18 { + border-bottom-left-radius: 72rpx; } + +.round-bl-19 { + border-bottom-left-radius: 76rpx; } + +.round-bl-20 { + border-bottom-left-radius: 80rpx; } + +.round-bl-21 { + border-bottom-left-radius: 84rpx; } + +.round-bl-22 { + border-bottom-left-radius: 88rpx; } + +.round-bl-23 { + border-bottom-left-radius: 92rpx; } + +.round-bl-24 { + border-bottom-left-radius: 96rpx; } + +.round-bl-25 { + border-bottom-left-radius: 100rpx; } + +.round-br-0 { + border-bottom-right-radius: 0rpx; } + +.round-br-1 { + border-bottom-right-radius: 4rpx; } + +.round-br-2 { + border-bottom-right-radius: 8rpx; } + +.round-br-3 { + border-bottom-right-radius: 12rpx; } + +.round-br-4 { + border-bottom-right-radius: 16rpx; } + +.round-br-5 { + border-bottom-right-radius: 20rpx; } + +.round-br-6 { + border-bottom-right-radius: 24rpx; } + +.round-br-7 { + border-bottom-right-radius: 28rpx; } + +.round-br-8 { + border-bottom-right-radius: 32rpx; } + +.round-br-9 { + border-bottom-right-radius: 36rpx; } + +.round-br-10 { + border-bottom-right-radius: 40rpx; } + +.round-br-11 { + border-bottom-right-radius: 44rpx; } + +.round-br-12 { + border-bottom-right-radius: 48rpx; } + +.round-br-13 { + border-bottom-right-radius: 52rpx; } + +.round-br-14 { + border-bottom-right-radius: 56rpx; } + +.round-br-15 { + border-bottom-right-radius: 60rpx; } + +.round-br-16 { + border-bottom-right-radius: 64rpx; } + +.round-br-17 { + border-bottom-right-radius: 68rpx; } + +.round-br-18 { + border-bottom-right-radius: 72rpx; } + +.round-br-19 { + border-bottom-right-radius: 76rpx; } + +.round-br-20 { + border-bottom-right-radius: 80rpx; } + +.round-br-21 { + border-bottom-right-radius: 84rpx; } + +.round-br-22 { + border-bottom-right-radius: 88rpx; } + +.round-br-23 { + border-bottom-right-radius: 92rpx; } + +.round-br-24 { + border-bottom-right-radius: 96rpx; } + +.round-br-25 { + border-bottom-right-radius: 100rpx; } + +.round-a-0 { + border-radius: 0rpx; } + +.round-a-1 { + border-radius: 4rpx; } + +.round-a-2 { + border-radius: 8rpx; } + +.round-a-3 { + border-radius: 12rpx; } + +.round-a-4 { + border-radius: 16rpx; } + +.round-a-5 { + border-radius: 20rpx; } + +.round-a-6 { + border-radius: 24rpx; } + +.round-a-7 { + border-radius: 28rpx; } + +.round-a-8 { + border-radius: 32rpx; } + +.round-a-9 { + border-radius: 36rpx; } + +.round-a-10 { + border-radius: 40rpx; } + +.round-a-11 { + border-radius: 44rpx; } + +.round-a-12 { + border-radius: 48rpx; } + +.round-a-13 { + border-radius: 52rpx; } + +.round-a-14 { + border-radius: 56rpx; } + +.round-a-15 { + border-radius: 60rpx; } + +.round-a-16 { + border-radius: 64rpx; } + +.round-a-17 { + border-radius: 68rpx; } + +.round-a-18 { + border-radius: 72rpx; } + +.round-a-19 { + border-radius: 76rpx; } + +.round-a-20 { + border-radius: 80rpx; } + +.round-a-21 { + border-radius: 84rpx; } + +.round-a-22 { + border-radius: 88rpx; } + +.round-a-23 { + border-radius: 92rpx; } + +.round-a-24 { + border-radius: 96rpx; } + +.round-a-25 { + border-radius: 100rpx; } + +.round-t-0 { + border-top-left-radius: 0rpx; + border-top-right-radius: 0rpx; } + +.round-t-1 { + border-top-left-radius: 4rpx; + border-top-right-radius: 4rpx; } + +.round-t-2 { + border-top-left-radius: 8rpx; + border-top-right-radius: 8rpx; } + +.round-t-3 { + border-top-left-radius: 12rpx; + border-top-right-radius: 12rpx; } + +.round-t-4 { + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; } + +.round-t-5 { + border-top-left-radius: 20rpx; + border-top-right-radius: 20rpx; } + +.round-t-6 { + border-top-left-radius: 24rpx; + border-top-right-radius: 24rpx; } + +.round-t-7 { + border-top-left-radius: 28rpx; + border-top-right-radius: 28rpx; } + +.round-t-8 { + border-top-left-radius: 32rpx; + border-top-right-radius: 32rpx; } + +.round-t-9 { + border-top-left-radius: 36rpx; + border-top-right-radius: 36rpx; } + +.round-t-10 { + border-top-left-radius: 40rpx; + border-top-right-radius: 40rpx; } + +.round-t-11 { + border-top-left-radius: 44rpx; + border-top-right-radius: 44rpx; } + +.round-t-12 { + border-top-left-radius: 48rpx; + border-top-right-radius: 48rpx; } + +.round-t-13 { + border-top-left-radius: 52rpx; + border-top-right-radius: 52rpx; } + +.round-t-14 { + border-top-left-radius: 56rpx; + border-top-right-radius: 56rpx; } + +.round-t-15 { + border-top-left-radius: 60rpx; + border-top-right-radius: 60rpx; } + +.round-t-16 { + border-top-left-radius: 64rpx; + border-top-right-radius: 64rpx; } + +.round-t-17 { + border-top-left-radius: 68rpx; + border-top-right-radius: 68rpx; } + +.round-t-18 { + border-top-left-radius: 72rpx; + border-top-right-radius: 72rpx; } + +.round-t-19 { + border-top-left-radius: 76rpx; + border-top-right-radius: 76rpx; } + +.round-t-20 { + border-top-left-radius: 80rpx; + border-top-right-radius: 80rpx; } + +.round-t-21 { + border-top-left-radius: 84rpx; + border-top-right-radius: 84rpx; } + +.round-t-22 { + border-top-left-radius: 88rpx; + border-top-right-radius: 88rpx; } + +.round-t-23 { + border-top-left-radius: 92rpx; + border-top-right-radius: 92rpx; } + +.round-t-24 { + border-top-left-radius: 96rpx; + border-top-right-radius: 96rpx; } + +.round-t-25 { + border-top-left-radius: 100rpx; + border-top-right-radius: 100rpx; } + +.round-b-0 { + border-bottom-left-radius: 0rpx; + border-bottom-right-radius: 0rpx; } + +.round-b-1 { + border-bottom-left-radius: 4rpx; + border-bottom-right-radius: 4rpx; } + +.round-b-2 { + border-bottom-left-radius: 8rpx; + border-bottom-right-radius: 8rpx; } + +.round-b-3 { + border-bottom-left-radius: 12rpx; + border-bottom-right-radius: 12rpx; } + +.round-b-4 { + border-bottom-left-radius: 16rpx; + border-bottom-right-radius: 16rpx; } + +.round-b-5 { + border-bottom-left-radius: 20rpx; + border-bottom-right-radius: 20rpx; } + +.round-b-6 { + border-bottom-left-radius: 24rpx; + border-bottom-right-radius: 24rpx; } + +.round-b-7 { + border-bottom-left-radius: 28rpx; + border-bottom-right-radius: 28rpx; } + +.round-b-8 { + border-bottom-left-radius: 32rpx; + border-bottom-right-radius: 32rpx; } + +.round-b-9 { + border-bottom-left-radius: 36rpx; + border-bottom-right-radius: 36rpx; } + +.round-b-10 { + border-bottom-left-radius: 40rpx; + border-bottom-right-radius: 40rpx; } + +.round-b-11 { + border-bottom-left-radius: 44rpx; + border-bottom-right-radius: 44rpx; } + +.round-b-12 { + border-bottom-left-radius: 48rpx; + border-bottom-right-radius: 48rpx; } + +.round-b-13 { + border-bottom-left-radius: 52rpx; + border-bottom-right-radius: 52rpx; } + +.round-b-14 { + border-bottom-left-radius: 56rpx; + border-bottom-right-radius: 56rpx; } + +.round-b-15 { + border-bottom-left-radius: 60rpx; + border-bottom-right-radius: 60rpx; } + +.round-b-16 { + border-bottom-left-radius: 64rpx; + border-bottom-right-radius: 64rpx; } + +.round-b-17 { + border-bottom-left-radius: 68rpx; + border-bottom-right-radius: 68rpx; } + +.round-b-18 { + border-bottom-left-radius: 72rpx; + border-bottom-right-radius: 72rpx; } + +.round-b-19 { + border-bottom-left-radius: 76rpx; + border-bottom-right-radius: 76rpx; } + +.round-b-20 { + border-bottom-left-radius: 80rpx; + border-bottom-right-radius: 80rpx; } + +.round-b-21 { + border-bottom-left-radius: 84rpx; + border-bottom-right-radius: 84rpx; } + +.round-b-22 { + border-bottom-left-radius: 88rpx; + border-bottom-right-radius: 88rpx; } + +.round-b-23 { + border-bottom-left-radius: 92rpx; + border-bottom-right-radius: 92rpx; } + +.round-b-24 { + border-bottom-left-radius: 96rpx; + border-bottom-right-radius: 96rpx; } + +.round-b-25 { + border-bottom-left-radius: 100rpx; + border-bottom-right-radius: 100rpx; } + +.round-l-0 { + border-top-left-radius: 0rpx; + border-bottom-left-radius: 0rpx; } + +.round-l-1 { + border-top-left-radius: 4rpx; + border-bottom-left-radius: 4rpx; } + +.round-l-2 { + border-top-left-radius: 8rpx; + border-bottom-left-radius: 8rpx; } + +.round-l-3 { + border-top-left-radius: 12rpx; + border-bottom-left-radius: 12rpx; } + +.round-l-4 { + border-top-left-radius: 16rpx; + border-bottom-left-radius: 16rpx; } + +.round-l-5 { + border-top-left-radius: 20rpx; + border-bottom-left-radius: 20rpx; } + +.round-l-6 { + border-top-left-radius: 24rpx; + border-bottom-left-radius: 24rpx; } + +.round-l-7 { + border-top-left-radius: 28rpx; + border-bottom-left-radius: 28rpx; } + +.round-l-8 { + border-top-left-radius: 32rpx; + border-bottom-left-radius: 32rpx; } + +.round-l-9 { + border-top-left-radius: 36rpx; + border-bottom-left-radius: 36rpx; } + +.round-l-10 { + border-top-left-radius: 40rpx; + border-bottom-left-radius: 40rpx; } + +.round-l-11 { + border-top-left-radius: 44rpx; + border-bottom-left-radius: 44rpx; } + +.round-l-12 { + border-top-left-radius: 48rpx; + border-bottom-left-radius: 48rpx; } + +.round-l-13 { + border-top-left-radius: 52rpx; + border-bottom-left-radius: 52rpx; } + +.round-l-14 { + border-top-left-radius: 56rpx; + border-bottom-left-radius: 56rpx; } + +.round-l-15 { + border-top-left-radius: 60rpx; + border-bottom-left-radius: 60rpx; } + +.round-l-16 { + border-top-left-radius: 64rpx; + border-bottom-left-radius: 64rpx; } + +.round-l-17 { + border-top-left-radius: 68rpx; + border-bottom-left-radius: 68rpx; } + +.round-l-18 { + border-top-left-radius: 72rpx; + border-bottom-left-radius: 72rpx; } + +.round-l-19 { + border-top-left-radius: 76rpx; + border-bottom-left-radius: 76rpx; } + +.round-l-20 { + border-top-left-radius: 80rpx; + border-bottom-left-radius: 80rpx; } + +.round-l-21 { + border-top-left-radius: 84rpx; + border-bottom-left-radius: 84rpx; } + +.round-l-22 { + border-top-left-radius: 88rpx; + border-bottom-left-radius: 88rpx; } + +.round-l-23 { + border-top-left-radius: 92rpx; + border-bottom-left-radius: 92rpx; } + +.round-l-24 { + border-top-left-radius: 96rpx; + border-bottom-left-radius: 96rpx; } + +.round-l-25 { + border-top-left-radius: 100rpx; + border-bottom-left-radius: 100rpx; } + +.round-r-0 { + border-top-right-radius: 0rpx; + border-bottom-right-radius: 0rpx; } + +.round-r-1 { + border-top-right-radius: 4rpx; + border-bottom-right-radius: 4rpx; } + +.round-r-2 { + border-top-right-radius: 8rpx; + border-bottom-right-radius: 8rpx; } + +.round-r-3 { + border-top-right-radius: 12rpx; + border-bottom-right-radius: 12rpx; } + +.round-r-4 { + border-top-right-radius: 16rpx; + border-bottom-right-radius: 16rpx; } + +.round-r-5 { + border-top-right-radius: 20rpx; + border-bottom-right-radius: 20rpx; } + +.round-r-6 { + border-top-right-radius: 24rpx; + border-bottom-right-radius: 24rpx; } + +.round-r-7 { + border-top-right-radius: 28rpx; + border-bottom-right-radius: 28rpx; } + +.round-r-8 { + border-top-right-radius: 32rpx; + border-bottom-right-radius: 32rpx; } + +.round-r-9 { + border-top-right-radius: 36rpx; + border-bottom-right-radius: 36rpx; } + +.round-r-10 { + border-top-right-radius: 40rpx; + border-bottom-right-radius: 40rpx; } + +.round-r-11 { + border-top-right-radius: 44rpx; + border-bottom-right-radius: 44rpx; } + +.round-r-12 { + border-top-right-radius: 48rpx; + border-bottom-right-radius: 48rpx; } + +.round-r-13 { + border-top-right-radius: 52rpx; + border-bottom-right-radius: 52rpx; } + +.round-r-14 { + border-top-right-radius: 56rpx; + border-bottom-right-radius: 56rpx; } + +.round-r-15 { + border-top-right-radius: 60rpx; + border-bottom-right-radius: 60rpx; } + +.round-r-16 { + border-top-right-radius: 64rpx; + border-bottom-right-radius: 64rpx; } + +.round-r-17 { + border-top-right-radius: 68rpx; + border-bottom-right-radius: 68rpx; } + +.round-r-18 { + border-top-right-radius: 72rpx; + border-bottom-right-radius: 72rpx; } + +.round-r-19 { + border-top-right-radius: 76rpx; + border-bottom-right-radius: 76rpx; } + +.round-r-20 { + border-top-right-radius: 80rpx; + border-bottom-right-radius: 80rpx; } + +.round-r-21 { + border-top-right-radius: 84rpx; + border-bottom-right-radius: 84rpx; } + +.round-r-22 { + border-top-right-radius: 88rpx; + border-bottom-right-radius: 88rpx; } + +.round-r-23 { + border-top-right-radius: 92rpx; + border-bottom-right-radius: 92rpx; } + +.round-r-24 { + border-top-right-radius: 96rpx; + border-bottom-right-radius: 96rpx; } + +.round-r-25 { + border-top-right-radius: 100rpx; + border-bottom-right-radius: 100rpx; } + +.round-0 { + border-radius: 0rpx; } + +.round-1 { + border-radius: 4rpx; } + +.round-2 { + border-radius: 8rpx; } + +.round-3 { + border-radius: 12rpx; } + +.round-4 { + border-radius: 16rpx; } + +.round-5 { + border-radius: 20rpx; } + +.round-6 { + border-radius: 24rpx; } + +.round-7 { + border-radius: 28rpx; } + +.round-8 { + border-radius: 32rpx; } + +.round-9 { + border-radius: 36rpx; } + +.round-10 { + border-radius: 40rpx; } + +.round-11 { + border-radius: 44rpx; } + +.round-12 { + border-radius: 48rpx; } + +.round-13 { + border-radius: 52rpx; } + +.round-14 { + border-radius: 56rpx; } + +.round-15 { + border-radius: 60rpx; } + +.round-16 { + border-radius: 64rpx; } + +.round-17 { + border-radius: 68rpx; } + +.round-18 { + border-radius: 72rpx; } + +.round-19 { + border-radius: 76rpx; } + +.round-20 { + border-radius: 80rpx; } + +.round-21 { + border-radius: 84rpx; } + +.round-22 { + border-radius: 88rpx; } + +.round-23 { + border-radius: 92rpx; } + +.round-24 { + border-radius: 96rpx; } + +.round-25 { + border-radius: 100rpx; } + +.round-26 { + border-radius: 104rpx; } + +.rounded { + border-radius: 50%; } + +.opacity-0 { + opacity: 0; } + +.opacity-1 { + opacity: 0.1; } + +.opacity-2 { + opacity: 0.2; } + +.opacity-3 { + opacity: 0.3; } + +.opacity-4 { + opacity: 0.4; } + +.opacity-5 { + opacity: 0.5; } + +.opacity-6 { + opacity: 0.6; } + +.opacity-7 { + opacity: 0.7; } + +.opacity-8 { + opacity: 0.8; } + +.opacity-9 { + opacity: 0.9; } + +.opacity-10 { + opacity: 1; } + +.border-0 { + border: solid 0rpx #f5f5f5; } + +.border-0-bk { + border: solid 0rpx #282828; } + +.border { + border: solid 2rpx #f5f5f5; } + +.border-bk { + border: solid 2rpx #282828; } + +.border-1 { + border: solid 2px #f5f5f5; } + +.border-1-bk { + border: solid 2px #f5f5f5; } + +.border-2 { + border: solid 4px #f5f5f5; } + +.border-2-bk { + border: solid 4px #f5f5f5; } + +.border-3 { + border: solid 6px #f5f5f5; } + +.border-3-bk { + border: solid 6px #f5f5f5; } + +.border-4 { + border: solid 8px #f5f5f5; } + +.border-4-bk { + border: solid 8px #f5f5f5; } + +.border-5 { + border: solid 10px #f5f5f5; } + +.border-5-bk { + border: solid 10px #f5f5f5; } + +.border-l-1 { + border-left: solid 2rpx whitesmoke; } + +.border-l-1-bk { + border-left: solid 2rpx #282828; } + +.border-l-2 { + border-left: solid 4rpx whitesmoke; } + +.border-l-2-bk { + border-left: solid 4rpx #282828; } + +.border-l-3 { + border-left: solid 6rpx whitesmoke; } + +.border-l-3-bk { + border-left: solid 6rpx #282828; } + +.border-l-4 { + border-left: solid 8rpx whitesmoke; } + +.border-l-4-bk { + border-left: solid 8rpx #282828; } + +.border-l-5 { + border-left: solid 10rpx whitesmoke; } + +.border-l-5-bk { + border-left: solid 10rpx #282828; } + +.border-r-1 { + border-right: solid 2rpx whitesmoke; } + +.border-r-1-bk { + border-right: solid 2rpx #282828; } + +.border-r-2 { + border-right: solid 4rpx whitesmoke; } + +.border-r-2-bk { + border-right: solid 4rpx #282828; } + +.border-r-3 { + border-right: solid 6rpx whitesmoke; } + +.border-r-3-bk { + border-right: solid 6rpx #282828; } + +.border-r-4 { + border-right: solid 8rpx whitesmoke; } + +.border-r-4-bk { + border-right: solid 8rpx #282828; } + +.border-r-5 { + border-right: solid 10rpx whitesmoke; } + +.border-r-5-bk { + border-right: solid 10rpx #282828; } + +.border-t-1 { + border-top: solid 2rpx whitesmoke; } + +.border-t-1-bk { + border-top: solid 2rpx #282828; } + +.border-t-2 { + border-top: solid 4rpx whitesmoke; } + +.border-t-2-bk { + border-top: solid 4rpx #282828; } + +.border-t-3 { + border-top: solid 6rpx whitesmoke; } + +.border-t-3-bk { + border-top: solid 6rpx #282828; } + +.border-t-4 { + border-top: solid 8rpx whitesmoke; } + +.border-t-4-bk { + border-top: solid 8rpx #282828; } + +.border-t-5 { + border-top: solid 10rpx whitesmoke; } + +.border-t-5-bk { + border-top: solid 10rpx #282828; } + +.border-b-1 { + border-bottom: solid 2rpx whitesmoke; } + +.border-b-1-bk { + border-bottom: solid 2rpx #282828; } + +.border-b-2 { + border-bottom: solid 4rpx whitesmoke; } + +.border-b-2-bk { + border-bottom: solid 4rpx #282828; } + +.border-b-3 { + border-bottom: solid 6rpx whitesmoke; } + +.border-b-3-bk { + border-bottom: solid 6rpx #282828; } + +.border-b-4 { + border-bottom: solid 8rpx whitesmoke; } + +.border-b-4-bk { + border-bottom: solid 8rpx #282828; } + +.border-b-5 { + border-bottom: solid 10rpx whitesmoke; } + +.border-b-5-bk { + border-bottom: solid 10rpx #282828; } + +.border-a-1 { + border: solid 2rpx whitesmoke; } + +.border-a-1-bk { + border: solid 2rpx #282828; } + +.border-a-2 { + border: solid 4rpx whitesmoke; } + +.border-a-2-bk { + border: solid 4rpx #282828; } + +.border-a-3 { + border: solid 6rpx whitesmoke; } + +.border-a-3-bk { + border: solid 6rpx #282828; } + +.border-a-4 { + border: solid 8rpx whitesmoke; } + +.border-a-4-bk { + border: solid 8rpx #282828; } + +.border-a-5 { + border: solid 10rpx whitesmoke; } + +.border-a-5-bk { + border: solid 10rpx #282828; } + +.pa-0 { + padding: 0rpx; } + +.pa-1 { + padding: 1rpx; } + +.pa-2 { + padding: 2rpx; } + +.pa-3 { + padding: 3rpx; } + +.pa-4 { + padding: 4rpx; } + +.pa-5 { + padding: 5rpx; } + +.pa-6 { + padding: 6rpx; } + +.pa-7 { + padding: 7rpx; } + +.pa-8 { + padding: 8rpx; } + +.pa-9 { + padding: 9rpx; } + +.pa-10 { + padding: 10rpx; } + +.pa-11 { + padding: 11rpx; } + +.pa-12 { + padding: 12rpx; } + +.pa-13 { + padding: 13rpx; } + +.pa-14 { + padding: 14rpx; } + +.pa-15 { + padding: 15rpx; } + +.pa-16 { + padding: 16rpx; } + +.pa-17 { + padding: 17rpx; } + +.pa-18 { + padding: 18rpx; } + +.pa-19 { + padding: 19rpx; } + +.pa-20 { + padding: 20rpx; } + +.pa-21 { + padding: 21rpx; } + +.pa-22 { + padding: 22rpx; } + +.pa-23 { + padding: 23rpx; } + +.pa-24 { + padding: 24rpx; } + +.pa-25 { + padding: 25rpx; } + +.pa-26 { + padding: 26rpx; } + +.pa-27 { + padding: 27rpx; } + +.pa-28 { + padding: 28rpx; } + +.pa-29 { + padding: 29rpx; } + +.pa-30 { + padding: 30rpx; } + +.pa-31 { + padding: 31rpx; } + +.pa-32 { + padding: 32rpx; } + +.pa-33 { + padding: 33rpx; } + +.pa-34 { + padding: 34rpx; } + +.pa-35 { + padding: 35rpx; } + +.pa-36 { + padding: 36rpx; } + +.pa-37 { + padding: 37rpx; } + +.pa-38 { + padding: 38rpx; } + +.pa-39 { + padding: 39rpx; } + +.pa-40 { + padding: 40rpx; } + +.pa-41 { + padding: 41rpx; } + +.pa-42 { + padding: 42rpx; } + +.pa-43 { + padding: 43rpx; } + +.pa-44 { + padding: 44rpx; } + +.pa-45 { + padding: 45rpx; } + +.pa-46 { + padding: 46rpx; } + +.pa-47 { + padding: 47rpx; } + +.pa-48 { + padding: 48rpx; } + +.pa-49 { + padding: 49rpx; } + +.pa-50 { + padding: 50rpx; } + +.pa-n1 { + padding: 4rpx; } + +.pa-n2 { + padding: 8rpx; } + +.pa-n3 { + padding: 12rpx; } + +.pa-n4 { + padding: 16rpx; } + +.pa-n5 { + padding: 20rpx; } + +.pa-n6 { + padding: 24rpx; } + +.pa-n7 { + padding: 28rpx; } + +.pa-n8 { + padding: 32rpx; } + +.pa-n9 { + padding: 36rpx; } + +.pa-n10 { + padding: 40rpx; } + +.pa-n11 { + padding: 44rpx; } + +.pa-n12 { + padding: 48rpx; } + +.pa-n13 { + padding: 52rpx; } + +.pa-n14 { + padding: 56rpx; } + +.pa-n15 { + padding: 60rpx; } + +.pa-n16 { + padding: 64rpx; } + +.pa-n17 { + padding: 68rpx; } + +.pa-n18 { + padding: 72rpx; } + +.pa-n19 { + padding: 76rpx; } + +.pa-n20 { + padding: 80rpx; } + +.pa-n21 { + padding: 84rpx; } + +.pa-n22 { + padding: 88rpx; } + +.pa-n23 { + padding: 92rpx; } + +.pa-n24 { + padding: 96rpx; } + +.pa-n25 { + padding: 100rpx; } + +.pt-0 { + padding-top: 0rpx; } + +.pt-1 { + padding-top: 1rpx; } + +.pt-2 { + padding-top: 2rpx; } + +.pt-3 { + padding-top: 3rpx; } + +.pt-4 { + padding-top: 4rpx; } + +.pt-5 { + padding-top: 5rpx; } + +.pt-6 { + padding-top: 6rpx; } + +.pt-7 { + padding-top: 7rpx; } + +.pt-8 { + padding-top: 8rpx; } + +.pt-9 { + padding-top: 9rpx; } + +.pt-10 { + padding-top: 10rpx; } + +.pt-11 { + padding-top: 11rpx; } + +.pt-12 { + padding-top: 12rpx; } + +.pt-13 { + padding-top: 13rpx; } + +.pt-14 { + padding-top: 14rpx; } + +.pt-15 { + padding-top: 15rpx; } + +.pt-16 { + padding-top: 16rpx; } + +.pt-17 { + padding-top: 17rpx; } + +.pt-18 { + padding-top: 18rpx; } + +.pt-19 { + padding-top: 19rpx; } + +.pt-20 { + padding-top: 20rpx; } + +.pt-21 { + padding-top: 21rpx; } + +.pt-22 { + padding-top: 22rpx; } + +.pt-23 { + padding-top: 23rpx; } + +.pt-24 { + padding-top: 24rpx; } + +.pt-25 { + padding-top: 25rpx; } + +.pt-26 { + padding-top: 26rpx; } + +.pt-27 { + padding-top: 27rpx; } + +.pt-28 { + padding-top: 28rpx; } + +.pt-29 { + padding-top: 29rpx; } + +.pt-30 { + padding-top: 30rpx; } + +.pt-31 { + padding-top: 31rpx; } + +.pt-32 { + padding-top: 32rpx; } + +.pt-33 { + padding-top: 33rpx; } + +.pt-34 { + padding-top: 34rpx; } + +.pt-35 { + padding-top: 35rpx; } + +.pt-36 { + padding-top: 36rpx; } + +.pt-37 { + padding-top: 37rpx; } + +.pt-38 { + padding-top: 38rpx; } + +.pt-39 { + padding-top: 39rpx; } + +.pt-40 { + padding-top: 40rpx; } + +.pt-41 { + padding-top: 41rpx; } + +.pt-42 { + padding-top: 42rpx; } + +.pt-43 { + padding-top: 43rpx; } + +.pt-44 { + padding-top: 44rpx; } + +.pt-45 { + padding-top: 45rpx; } + +.pt-46 { + padding-top: 46rpx; } + +.pt-47 { + padding-top: 47rpx; } + +.pt-48 { + padding-top: 48rpx; } + +.pt-49 { + padding-top: 49rpx; } + +.pt-50 { + padding-top: 50rpx; } + +.pt-n1 { + padding-top: 4rpx; } + +.pt-n2 { + padding-top: 8rpx; } + +.pt-n3 { + padding-top: 12rpx; } + +.pt-n4 { + padding-top: 16rpx; } + +.pt-n5 { + padding-top: 20rpx; } + +.pt-n6 { + padding-top: 24rpx; } + +.pt-n7 { + padding-top: 28rpx; } + +.pt-n8 { + padding-top: 32rpx; } + +.pt-n9 { + padding-top: 36rpx; } + +.pt-n10 { + padding-top: 40rpx; } + +.pt-n11 { + padding-top: 44rpx; } + +.pt-n12 { + padding-top: 48rpx; } + +.pt-n13 { + padding-top: 52rpx; } + +.pt-n14 { + padding-top: 56rpx; } + +.pt-n15 { + padding-top: 60rpx; } + +.pt-n16 { + padding-top: 64rpx; } + +.pt-n17 { + padding-top: 68rpx; } + +.pt-n18 { + padding-top: 72rpx; } + +.pt-n19 { + padding-top: 76rpx; } + +.pt-n20 { + padding-top: 80rpx; } + +.pt-n21 { + padding-top: 84rpx; } + +.pt-n22 { + padding-top: 88rpx; } + +.pt-n23 { + padding-top: 92rpx; } + +.pt-n24 { + padding-top: 96rpx; } + +.pt-n25 { + padding-top: 100rpx; } + +.pr-0 { + padding-right: 0rpx; } + +.pr-1 { + padding-right: 1rpx; } + +.pr-2 { + padding-right: 2rpx; } + +.pr-3 { + padding-right: 3rpx; } + +.pr-4 { + padding-right: 4rpx; } + +.pr-5 { + padding-right: 5rpx; } + +.pr-6 { + padding-right: 6rpx; } + +.pr-7 { + padding-right: 7rpx; } + +.pr-8 { + padding-right: 8rpx; } + +.pr-9 { + padding-right: 9rpx; } + +.pr-10 { + padding-right: 10rpx; } + +.pr-11 { + padding-right: 11rpx; } + +.pr-12 { + padding-right: 12rpx; } + +.pr-13 { + padding-right: 13rpx; } + +.pr-14 { + padding-right: 14rpx; } + +.pr-15 { + padding-right: 15rpx; } + +.pr-16 { + padding-right: 16rpx; } + +.pr-17 { + padding-right: 17rpx; } + +.pr-18 { + padding-right: 18rpx; } + +.pr-19 { + padding-right: 19rpx; } + +.pr-20 { + padding-right: 20rpx; } + +.pr-21 { + padding-right: 21rpx; } + +.pr-22 { + padding-right: 22rpx; } + +.pr-23 { + padding-right: 23rpx; } + +.pr-24 { + padding-right: 24rpx; } + +.pr-25 { + padding-right: 25rpx; } + +.pr-26 { + padding-right: 26rpx; } + +.pr-27 { + padding-right: 27rpx; } + +.pr-28 { + padding-right: 28rpx; } + +.pr-29 { + padding-right: 29rpx; } + +.pr-30 { + padding-right: 30rpx; } + +.pr-31 { + padding-right: 31rpx; } + +.pr-32 { + padding-right: 32rpx; } + +.pr-33 { + padding-right: 33rpx; } + +.pr-34 { + padding-right: 34rpx; } + +.pr-35 { + padding-right: 35rpx; } + +.pr-36 { + padding-right: 36rpx; } + +.pr-37 { + padding-right: 37rpx; } + +.pr-38 { + padding-right: 38rpx; } + +.pr-39 { + padding-right: 39rpx; } + +.pr-40 { + padding-right: 40rpx; } + +.pr-41 { + padding-right: 41rpx; } + +.pr-42 { + padding-right: 42rpx; } + +.pr-43 { + padding-right: 43rpx; } + +.pr-44 { + padding-right: 44rpx; } + +.pr-45 { + padding-right: 45rpx; } + +.pr-46 { + padding-right: 46rpx; } + +.pr-47 { + padding-right: 47rpx; } + +.pr-48 { + padding-right: 48rpx; } + +.pr-49 { + padding-right: 49rpx; } + +.pr-50 { + padding-right: 50rpx; } + +.pr-n1 { + padding-right: 4rpx; } + +.pr-n2 { + padding-right: 8rpx; } + +.pr-n3 { + padding-right: 12rpx; } + +.pr-n4 { + padding-right: 16rpx; } + +.pr-n5 { + padding-right: 20rpx; } + +.pr-n6 { + padding-right: 24rpx; } + +.pr-n7 { + padding-right: 28rpx; } + +.pr-n8 { + padding-right: 32rpx; } + +.pr-n9 { + padding-right: 36rpx; } + +.pr-n10 { + padding-right: 40rpx; } + +.pr-n11 { + padding-right: 44rpx; } + +.pr-n12 { + padding-right: 48rpx; } + +.pr-n13 { + padding-right: 52rpx; } + +.pr-n14 { + padding-right: 56rpx; } + +.pr-n15 { + padding-right: 60rpx; } + +.pr-n16 { + padding-right: 64rpx; } + +.pr-n17 { + padding-right: 68rpx; } + +.pr-n18 { + padding-right: 72rpx; } + +.pr-n19 { + padding-right: 76rpx; } + +.pr-n20 { + padding-right: 80rpx; } + +.pr-n21 { + padding-right: 84rpx; } + +.pr-n22 { + padding-right: 88rpx; } + +.pr-n23 { + padding-right: 92rpx; } + +.pr-n24 { + padding-right: 96rpx; } + +.pr-n25 { + padding-right: 100rpx; } + +.pb-0 { + padding-bottom: 0rpx; } + +.pb-1 { + padding-bottom: 1rpx; } + +.pb-2 { + padding-bottom: 2rpx; } + +.pb-3 { + padding-bottom: 3rpx; } + +.pb-4 { + padding-bottom: 4rpx; } + +.pb-5 { + padding-bottom: 5rpx; } + +.pb-6 { + padding-bottom: 6rpx; } + +.pb-7 { + padding-bottom: 7rpx; } + +.pb-8 { + padding-bottom: 8rpx; } + +.pb-9 { + padding-bottom: 9rpx; } + +.pb-10 { + padding-bottom: 10rpx; } + +.pb-11 { + padding-bottom: 11rpx; } + +.pb-12 { + padding-bottom: 12rpx; } + +.pb-13 { + padding-bottom: 13rpx; } + +.pb-14 { + padding-bottom: 14rpx; } + +.pb-15 { + padding-bottom: 15rpx; } + +.pb-16 { + padding-bottom: 16rpx; } + +.pb-17 { + padding-bottom: 17rpx; } + +.pb-18 { + padding-bottom: 18rpx; } + +.pb-19 { + padding-bottom: 19rpx; } + +.pb-20 { + padding-bottom: 20rpx; } + +.pb-21 { + padding-bottom: 21rpx; } + +.pb-22 { + padding-bottom: 22rpx; } + +.pb-23 { + padding-bottom: 23rpx; } + +.pb-24 { + padding-bottom: 24rpx; } + +.pb-25 { + padding-bottom: 25rpx; } + +.pb-26 { + padding-bottom: 26rpx; } + +.pb-27 { + padding-bottom: 27rpx; } + +.pb-28 { + padding-bottom: 28rpx; } + +.pb-29 { + padding-bottom: 29rpx; } + +.pb-30 { + padding-bottom: 30rpx; } + +.pb-31 { + padding-bottom: 31rpx; } + +.pb-32 { + padding-bottom: 32rpx; } + +.pb-33 { + padding-bottom: 33rpx; } + +.pb-34 { + padding-bottom: 34rpx; } + +.pb-35 { + padding-bottom: 35rpx; } + +.pb-36 { + padding-bottom: 36rpx; } + +.pb-37 { + padding-bottom: 37rpx; } + +.pb-38 { + padding-bottom: 38rpx; } + +.pb-39 { + padding-bottom: 39rpx; } + +.pb-40 { + padding-bottom: 40rpx; } + +.pb-41 { + padding-bottom: 41rpx; } + +.pb-42 { + padding-bottom: 42rpx; } + +.pb-43 { + padding-bottom: 43rpx; } + +.pb-44 { + padding-bottom: 44rpx; } + +.pb-45 { + padding-bottom: 45rpx; } + +.pb-46 { + padding-bottom: 46rpx; } + +.pb-47 { + padding-bottom: 47rpx; } + +.pb-48 { + padding-bottom: 48rpx; } + +.pb-49 { + padding-bottom: 49rpx; } + +.pb-50 { + padding-bottom: 50rpx; } + +.pb-n1 { + padding-bottom: 4rpx; } + +.pb-n2 { + padding-bottom: 8rpx; } + +.pb-n3 { + padding-bottom: 12rpx; } + +.pb-n4 { + padding-bottom: 16rpx; } + +.pb-n5 { + padding-bottom: 20rpx; } + +.pb-n6 { + padding-bottom: 24rpx; } + +.pb-n7 { + padding-bottom: 28rpx; } + +.pb-n8 { + padding-bottom: 32rpx; } + +.pb-n9 { + padding-bottom: 36rpx; } + +.pb-n10 { + padding-bottom: 40rpx; } + +.pb-n11 { + padding-bottom: 44rpx; } + +.pb-n12 { + padding-bottom: 48rpx; } + +.pb-n13 { + padding-bottom: 52rpx; } + +.pb-n14 { + padding-bottom: 56rpx; } + +.pb-n15 { + padding-bottom: 60rpx; } + +.pb-n16 { + padding-bottom: 64rpx; } + +.pb-n17 { + padding-bottom: 68rpx; } + +.pb-n18 { + padding-bottom: 72rpx; } + +.pb-n19 { + padding-bottom: 76rpx; } + +.pb-n20 { + padding-bottom: 80rpx; } + +.pb-n21 { + padding-bottom: 84rpx; } + +.pb-n22 { + padding-bottom: 88rpx; } + +.pb-n23 { + padding-bottom: 92rpx; } + +.pb-n24 { + padding-bottom: 96rpx; } + +.pb-n25 { + padding-bottom: 100rpx; } + +.pl-0 { + padding-left: 0rpx; } + +.pl-1 { + padding-left: 1rpx; } + +.pl-2 { + padding-left: 2rpx; } + +.pl-3 { + padding-left: 3rpx; } + +.pl-4 { + padding-left: 4rpx; } + +.pl-5 { + padding-left: 5rpx; } + +.pl-6 { + padding-left: 6rpx; } + +.pl-7 { + padding-left: 7rpx; } + +.pl-8 { + padding-left: 8rpx; } + +.pl-9 { + padding-left: 9rpx; } + +.pl-10 { + padding-left: 10rpx; } + +.pl-11 { + padding-left: 11rpx; } + +.pl-12 { + padding-left: 12rpx; } + +.pl-13 { + padding-left: 13rpx; } + +.pl-14 { + padding-left: 14rpx; } + +.pl-15 { + padding-left: 15rpx; } + +.pl-16 { + padding-left: 16rpx; } + +.pl-17 { + padding-left: 17rpx; } + +.pl-18 { + padding-left: 18rpx; } + +.pl-19 { + padding-left: 19rpx; } + +.pl-20 { + padding-left: 20rpx; } + +.pl-21 { + padding-left: 21rpx; } + +.pl-22 { + padding-left: 22rpx; } + +.pl-23 { + padding-left: 23rpx; } + +.pl-24 { + padding-left: 24rpx; } + +.pl-25 { + padding-left: 25rpx; } + +.pl-26 { + padding-left: 26rpx; } + +.pl-27 { + padding-left: 27rpx; } + +.pl-28 { + padding-left: 28rpx; } + +.pl-29 { + padding-left: 29rpx; } + +.pl-30 { + padding-left: 30rpx; } + +.pl-31 { + padding-left: 31rpx; } + +.pl-32 { + padding-left: 32rpx; } + +.pl-33 { + padding-left: 33rpx; } + +.pl-34 { + padding-left: 34rpx; } + +.pl-35 { + padding-left: 35rpx; } + +.pl-36 { + padding-left: 36rpx; } + +.pl-37 { + padding-left: 37rpx; } + +.pl-38 { + padding-left: 38rpx; } + +.pl-39 { + padding-left: 39rpx; } + +.pl-40 { + padding-left: 40rpx; } + +.pl-41 { + padding-left: 41rpx; } + +.pl-42 { + padding-left: 42rpx; } + +.pl-43 { + padding-left: 43rpx; } + +.pl-44 { + padding-left: 44rpx; } + +.pl-45 { + padding-left: 45rpx; } + +.pl-46 { + padding-left: 46rpx; } + +.pl-47 { + padding-left: 47rpx; } + +.pl-48 { + padding-left: 48rpx; } + +.pl-49 { + padding-left: 49rpx; } + +.pl-50 { + padding-left: 50rpx; } + +.pl-n1 { + padding-left: 4rpx; } + +.pl-n2 { + padding-left: 8rpx; } + +.pl-n3 { + padding-left: 12rpx; } + +.pl-n4 { + padding-left: 16rpx; } + +.pl-n5 { + padding-left: 20rpx; } + +.pl-n6 { + padding-left: 24rpx; } + +.pl-n7 { + padding-left: 28rpx; } + +.pl-n8 { + padding-left: 32rpx; } + +.pl-n9 { + padding-left: 36rpx; } + +.pl-n10 { + padding-left: 40rpx; } + +.pl-n11 { + padding-left: 44rpx; } + +.pl-n12 { + padding-left: 48rpx; } + +.pl-n13 { + padding-left: 52rpx; } + +.pl-n14 { + padding-left: 56rpx; } + +.pl-n15 { + padding-left: 60rpx; } + +.pl-n16 { + padding-left: 64rpx; } + +.pl-n17 { + padding-left: 68rpx; } + +.pl-n18 { + padding-left: 72rpx; } + +.pl-n19 { + padding-left: 76rpx; } + +.pl-n20 { + padding-left: 80rpx; } + +.pl-n21 { + padding-left: 84rpx; } + +.pl-n22 { + padding-left: 88rpx; } + +.pl-n23 { + padding-left: 92rpx; } + +.pl-n24 { + padding-left: 96rpx; } + +.pl-n25 { + padding-left: 100rpx; } + +.px-0 { + padding-left: 0rpx; + padding-right: 0rpx; } + +.px-1 { + padding-left: 1rpx; + padding-right: 1rpx; } + +.px-2 { + padding-left: 2rpx; + padding-right: 2rpx; } + +.px-3 { + padding-left: 3rpx; + padding-right: 3rpx; } + +.px-4 { + padding-left: 4rpx; + padding-right: 4rpx; } + +.px-5 { + padding-left: 5rpx; + padding-right: 5rpx; } + +.px-6 { + padding-left: 6rpx; + padding-right: 6rpx; } + +.px-7 { + padding-left: 7rpx; + padding-right: 7rpx; } + +.px-8 { + padding-left: 8rpx; + padding-right: 8rpx; } + +.px-9 { + padding-left: 9rpx; + padding-right: 9rpx; } + +.px-10 { + padding-left: 10rpx; + padding-right: 10rpx; } + +.px-11 { + padding-left: 11rpx; + padding-right: 11rpx; } + +.px-12 { + padding-left: 12rpx; + padding-right: 12rpx; } + +.px-13 { + padding-left: 13rpx; + padding-right: 13rpx; } + +.px-14 { + padding-left: 14rpx; + padding-right: 14rpx; } + +.px-15 { + padding-left: 15rpx; + padding-right: 15rpx; } + +.px-16 { + padding-left: 16rpx; + padding-right: 16rpx; } + +.px-17 { + padding-left: 17rpx; + padding-right: 17rpx; } + +.px-18 { + padding-left: 18rpx; + padding-right: 18rpx; } + +.px-19 { + padding-left: 19rpx; + padding-right: 19rpx; } + +.px-20 { + padding-left: 20rpx; + padding-right: 20rpx; } + +.px-21 { + padding-left: 21rpx; + padding-right: 21rpx; } + +.px-22 { + padding-left: 22rpx; + padding-right: 22rpx; } + +.px-23 { + padding-left: 23rpx; + padding-right: 23rpx; } + +.px-24 { + padding-left: 24rpx; + padding-right: 24rpx; } + +.px-25 { + padding-left: 25rpx; + padding-right: 25rpx; } + +.px-26 { + padding-left: 26rpx; + padding-right: 26rpx; } + +.px-27 { + padding-left: 27rpx; + padding-right: 27rpx; } + +.px-28 { + padding-left: 28rpx; + padding-right: 28rpx; } + +.px-29 { + padding-left: 29rpx; + padding-right: 29rpx; } + +.px-30 { + padding-left: 30rpx; + padding-right: 30rpx; } + +.px-31 { + padding-left: 31rpx; + padding-right: 31rpx; } + +.px-32 { + padding-left: 32rpx; + padding-right: 32rpx; } + +.px-33 { + padding-left: 33rpx; + padding-right: 33rpx; } + +.px-34 { + padding-left: 34rpx; + padding-right: 34rpx; } + +.px-35 { + padding-left: 35rpx; + padding-right: 35rpx; } + +.px-36 { + padding-left: 36rpx; + padding-right: 36rpx; } + +.px-37 { + padding-left: 37rpx; + padding-right: 37rpx; } + +.px-38 { + padding-left: 38rpx; + padding-right: 38rpx; } + +.px-39 { + padding-left: 39rpx; + padding-right: 39rpx; } + +.px-40 { + padding-left: 40rpx; + padding-right: 40rpx; } + +.px-41 { + padding-left: 41rpx; + padding-right: 41rpx; } + +.px-42 { + padding-left: 42rpx; + padding-right: 42rpx; } + +.px-43 { + padding-left: 43rpx; + padding-right: 43rpx; } + +.px-44 { + padding-left: 44rpx; + padding-right: 44rpx; } + +.px-45 { + padding-left: 45rpx; + padding-right: 45rpx; } + +.px-46 { + padding-left: 46rpx; + padding-right: 46rpx; } + +.px-47 { + padding-left: 47rpx; + padding-right: 47rpx; } + +.px-48 { + padding-left: 48rpx; + padding-right: 48rpx; } + +.px-49 { + padding-left: 49rpx; + padding-right: 49rpx; } + +.px-50 { + padding-left: 50rpx; + padding-right: 50rpx; } + +.px-n1 { + padding-left: 4rpx; + padding-right: 4rpx; } + +.px-n2 { + padding-left: 8rpx; + padding-right: 8rpx; } + +.px-n3 { + padding-left: 12rpx; + padding-right: 12rpx; } + +.px-n4 { + padding-left: 16rpx; + padding-right: 16rpx; } + +.px-n5 { + padding-left: 20rpx; + padding-right: 20rpx; } + +.px-n6 { + padding-left: 24rpx; + padding-right: 24rpx; } + +.px-n7 { + padding-left: 28rpx; + padding-right: 28rpx; } + +.px-n8 { + padding-left: 32rpx; + padding-right: 32rpx; } + +.px-n9 { + padding-left: 36rpx; + padding-right: 36rpx; } + +.px-n10 { + padding-left: 40rpx; + padding-right: 40rpx; } + +.px-n11 { + padding-left: 44rpx; + padding-right: 44rpx; } + +.px-n12 { + padding-left: 48rpx; + padding-right: 48rpx; } + +.px-n13 { + padding-left: 52rpx; + padding-right: 52rpx; } + +.px-n14 { + padding-left: 56rpx; + padding-right: 56rpx; } + +.px-n15 { + padding-left: 60rpx; + padding-right: 60rpx; } + +.px-n16 { + padding-left: 64rpx; + padding-right: 64rpx; } + +.px-n17 { + padding-left: 68rpx; + padding-right: 68rpx; } + +.px-n18 { + padding-left: 72rpx; + padding-right: 72rpx; } + +.px-n19 { + padding-left: 76rpx; + padding-right: 76rpx; } + +.px-n20 { + padding-left: 80rpx; + padding-right: 80rpx; } + +.px-n21 { + padding-left: 84rpx; + padding-right: 84rpx; } + +.px-n22 { + padding-left: 88rpx; + padding-right: 88rpx; } + +.px-n23 { + padding-left: 92rpx; + padding-right: 92rpx; } + +.px-n24 { + padding-left: 96rpx; + padding-right: 96rpx; } + +.px-n25 { + padding-left: 100rpx; + padding-right: 100rpx; } + +.py-0 { + padding-top: 0rpx; + padding-bottom: 0rpx; } + +.py-1 { + padding-top: 1rpx; + padding-bottom: 1rpx; } + +.py-2 { + padding-top: 2rpx; + padding-bottom: 2rpx; } + +.py-3 { + padding-top: 3rpx; + padding-bottom: 3rpx; } + +.py-4 { + padding-top: 4rpx; + padding-bottom: 4rpx; } + +.py-5 { + padding-top: 5rpx; + padding-bottom: 5rpx; } + +.py-6 { + padding-top: 6rpx; + padding-bottom: 6rpx; } + +.py-7 { + padding-top: 7rpx; + padding-bottom: 7rpx; } + +.py-8 { + padding-top: 8rpx; + padding-bottom: 8rpx; } + +.py-9 { + padding-top: 9rpx; + padding-bottom: 9rpx; } + +.py-10 { + padding-top: 10rpx; + padding-bottom: 10rpx; } + +.py-11 { + padding-top: 11rpx; + padding-bottom: 11rpx; } + +.py-12 { + padding-top: 12rpx; + padding-bottom: 12rpx; } + +.py-13 { + padding-top: 13rpx; + padding-bottom: 13rpx; } + +.py-14 { + padding-top: 14rpx; + padding-bottom: 14rpx; } + +.py-15 { + padding-top: 15rpx; + padding-bottom: 15rpx; } + +.py-16 { + padding-top: 16rpx; + padding-bottom: 16rpx; } + +.py-17 { + padding-top: 17rpx; + padding-bottom: 17rpx; } + +.py-18 { + padding-top: 18rpx; + padding-bottom: 18rpx; } + +.py-19 { + padding-top: 19rpx; + padding-bottom: 19rpx; } + +.py-20 { + padding-top: 20rpx; + padding-bottom: 20rpx; } + +.py-21 { + padding-top: 21rpx; + padding-bottom: 21rpx; } + +.py-22 { + padding-top: 22rpx; + padding-bottom: 22rpx; } + +.py-23 { + padding-top: 23rpx; + padding-bottom: 23rpx; } + +.py-24 { + padding-top: 24rpx; + padding-bottom: 24rpx; } + +.py-25 { + padding-top: 25rpx; + padding-bottom: 25rpx; } + +.py-26 { + padding-top: 26rpx; + padding-bottom: 26rpx; } + +.py-27 { + padding-top: 27rpx; + padding-bottom: 27rpx; } + +.py-28 { + padding-top: 28rpx; + padding-bottom: 28rpx; } + +.py-29 { + padding-top: 29rpx; + padding-bottom: 29rpx; } + +.py-30 { + padding-top: 30rpx; + padding-bottom: 30rpx; } + +.py-31 { + padding-top: 31rpx; + padding-bottom: 31rpx; } + +.py-32 { + padding-top: 32rpx; + padding-bottom: 32rpx; } + +.py-33 { + padding-top: 33rpx; + padding-bottom: 33rpx; } + +.py-34 { + padding-top: 34rpx; + padding-bottom: 34rpx; } + +.py-35 { + padding-top: 35rpx; + padding-bottom: 35rpx; } + +.py-36 { + padding-top: 36rpx; + padding-bottom: 36rpx; } + +.py-37 { + padding-top: 37rpx; + padding-bottom: 37rpx; } + +.py-38 { + padding-top: 38rpx; + padding-bottom: 38rpx; } + +.py-39 { + padding-top: 39rpx; + padding-bottom: 39rpx; } + +.py-40 { + padding-top: 40rpx; + padding-bottom: 40rpx; } + +.py-41 { + padding-top: 41rpx; + padding-bottom: 41rpx; } + +.py-42 { + padding-top: 42rpx; + padding-bottom: 42rpx; } + +.py-43 { + padding-top: 43rpx; + padding-bottom: 43rpx; } + +.py-44 { + padding-top: 44rpx; + padding-bottom: 44rpx; } + +.py-45 { + padding-top: 45rpx; + padding-bottom: 45rpx; } + +.py-46 { + padding-top: 46rpx; + padding-bottom: 46rpx; } + +.py-47 { + padding-top: 47rpx; + padding-bottom: 47rpx; } + +.py-48 { + padding-top: 48rpx; + padding-bottom: 48rpx; } + +.py-49 { + padding-top: 49rpx; + padding-bottom: 49rpx; } + +.py-50 { + padding-top: 50rpx; + padding-bottom: 50rpx; } + +.py-n1 { + padding-top: 4rpx; + padding-bottom: 4rpx; } + +.py-n2 { + padding-top: 8rpx; + padding-bottom: 8rpx; } + +.py-n3 { + padding-top: 12rpx; + padding-bottom: 12rpx; } + +.py-n4 { + padding-top: 16rpx; + padding-bottom: 16rpx; } + +.py-n5 { + padding-top: 20rpx; + padding-bottom: 20rpx; } + +.py-n6 { + padding-top: 24rpx; + padding-bottom: 24rpx; } + +.py-n7 { + padding-top: 28rpx; + padding-bottom: 28rpx; } + +.py-n8 { + padding-top: 32rpx; + padding-bottom: 32rpx; } + +.py-n9 { + padding-top: 36rpx; + padding-bottom: 36rpx; } + +.py-n10 { + padding-top: 40rpx; + padding-bottom: 40rpx; } + +.py-n11 { + padding-top: 44rpx; + padding-bottom: 44rpx; } + +.py-n12 { + padding-top: 48rpx; + padding-bottom: 48rpx; } + +.py-n13 { + padding-top: 52rpx; + padding-bottom: 52rpx; } + +.py-n14 { + padding-top: 56rpx; + padding-bottom: 56rpx; } + +.py-n15 { + padding-top: 60rpx; + padding-bottom: 60rpx; } + +.py-n16 { + padding-top: 64rpx; + padding-bottom: 64rpx; } + +.py-n17 { + padding-top: 68rpx; + padding-bottom: 68rpx; } + +.py-n18 { + padding-top: 72rpx; + padding-bottom: 72rpx; } + +.py-n19 { + padding-top: 76rpx; + padding-bottom: 76rpx; } + +.py-n20 { + padding-top: 80rpx; + padding-bottom: 80rpx; } + +.py-n21 { + padding-top: 84rpx; + padding-bottom: 84rpx; } + +.py-n22 { + padding-top: 88rpx; + padding-bottom: 88rpx; } + +.py-n23 { + padding-top: 92rpx; + padding-bottom: 92rpx; } + +.py-n24 { + padding-top: 96rpx; + padding-bottom: 96rpx; } + +.py-n25 { + padding-top: 100rpx; + padding-bottom: 100rpx; } + +.ma-0 { + margin: 0rpx; } + +.ma-1 { + margin: 1rpx; } + +.ma-2 { + margin: 2rpx; } + +.ma-3 { + margin: 3rpx; } + +.ma-4 { + margin: 4rpx; } + +.ma-5 { + margin: 5rpx; } + +.ma-6 { + margin: 6rpx; } + +.ma-7 { + margin: 7rpx; } + +.ma-8 { + margin: 8rpx; } + +.ma-9 { + margin: 9rpx; } + +.ma-10 { + margin: 10rpx; } + +.ma-11 { + margin: 11rpx; } + +.ma-12 { + margin: 12rpx; } + +.ma-13 { + margin: 13rpx; } + +.ma-14 { + margin: 14rpx; } + +.ma-15 { + margin: 15rpx; } + +.ma-16 { + margin: 16rpx; } + +.ma-17 { + margin: 17rpx; } + +.ma-18 { + margin: 18rpx; } + +.ma-19 { + margin: 19rpx; } + +.ma-20 { + margin: 20rpx; } + +.ma-21 { + margin: 21rpx; } + +.ma-22 { + margin: 22rpx; } + +.ma-23 { + margin: 23rpx; } + +.ma-24 { + margin: 24rpx; } + +.ma-25 { + margin: 25rpx; } + +.ma-26 { + margin: 26rpx; } + +.ma-27 { + margin: 27rpx; } + +.ma-28 { + margin: 28rpx; } + +.ma-29 { + margin: 29rpx; } + +.ma-30 { + margin: 30rpx; } + +.ma-31 { + margin: 31rpx; } + +.ma-32 { + margin: 32rpx; } + +.ma-33 { + margin: 33rpx; } + +.ma-34 { + margin: 34rpx; } + +.ma-35 { + margin: 35rpx; } + +.ma-36 { + margin: 36rpx; } + +.ma-37 { + margin: 37rpx; } + +.ma-38 { + margin: 38rpx; } + +.ma-39 { + margin: 39rpx; } + +.ma-40 { + margin: 40rpx; } + +.ma-41 { + margin: 41rpx; } + +.ma-42 { + margin: 42rpx; } + +.ma-43 { + margin: 43rpx; } + +.ma-44 { + margin: 44rpx; } + +.ma-45 { + margin: 45rpx; } + +.ma-46 { + margin: 46rpx; } + +.ma-47 { + margin: 47rpx; } + +.ma-48 { + margin: 48rpx; } + +.ma-49 { + margin: 49rpx; } + +.ma-50 { + margin: 50rpx; } + +.ma-n1 { + margin: 4rpx; } + +.ma-n2 { + margin: 8rpx; } + +.ma-n3 { + margin: 12rpx; } + +.ma-n4 { + margin: 16rpx; } + +.ma-n5 { + margin: 20rpx; } + +.ma-n6 { + margin: 24rpx; } + +.ma-n7 { + margin: 28rpx; } + +.ma-n8 { + margin: 32rpx; } + +.ma-n9 { + margin: 36rpx; } + +.ma-n10 { + margin: 40rpx; } + +.ma-n11 { + margin: 44rpx; } + +.ma-n12 { + margin: 48rpx; } + +.ma-n13 { + margin: 52rpx; } + +.ma-n14 { + margin: 56rpx; } + +.ma-n15 { + margin: 60rpx; } + +.ma-n16 { + margin: 64rpx; } + +.ma-n17 { + margin: 68rpx; } + +.ma-n18 { + margin: 72rpx; } + +.ma-n19 { + margin: 76rpx; } + +.ma-n20 { + margin: 80rpx; } + +.ma-n21 { + margin: 84rpx; } + +.ma-n22 { + margin: 88rpx; } + +.ma-n23 { + margin: 92rpx; } + +.ma-n24 { + margin: 96rpx; } + +.ma-n25 { + margin: 100rpx; } + +.mt-0 { + margin-top: 0rpx; } + +.mt--0 { + margin-top: -0rpx; } + +.mt-1 { + margin-top: 1rpx; } + +.mt--1 { + margin-top: -1rpx; } + +.mt-2 { + margin-top: 2rpx; } + +.mt--2 { + margin-top: -2rpx; } + +.mt-3 { + margin-top: 3rpx; } + +.mt--3 { + margin-top: -3rpx; } + +.mt-4 { + margin-top: 4rpx; } + +.mt--4 { + margin-top: -4rpx; } + +.mt-5 { + margin-top: 5rpx; } + +.mt--5 { + margin-top: -5rpx; } + +.mt-6 { + margin-top: 6rpx; } + +.mt--6 { + margin-top: -6rpx; } + +.mt-7 { + margin-top: 7rpx; } + +.mt--7 { + margin-top: -7rpx; } + +.mt-8 { + margin-top: 8rpx; } + +.mt--8 { + margin-top: -8rpx; } + +.mt-9 { + margin-top: 9rpx; } + +.mt--9 { + margin-top: -9rpx; } + +.mt-10 { + margin-top: 10rpx; } + +.mt--10 { + margin-top: -10rpx; } + +.mt-11 { + margin-top: 11rpx; } + +.mt--11 { + margin-top: -11rpx; } + +.mt-12 { + margin-top: 12rpx; } + +.mt--12 { + margin-top: -12rpx; } + +.mt-13 { + margin-top: 13rpx; } + +.mt--13 { + margin-top: -13rpx; } + +.mt-14 { + margin-top: 14rpx; } + +.mt--14 { + margin-top: -14rpx; } + +.mt-15 { + margin-top: 15rpx; } + +.mt--15 { + margin-top: -15rpx; } + +.mt-16 { + margin-top: 16rpx; } + +.mt--16 { + margin-top: -16rpx; } + +.mt-17 { + margin-top: 17rpx; } + +.mt--17 { + margin-top: -17rpx; } + +.mt-18 { + margin-top: 18rpx; } + +.mt--18 { + margin-top: -18rpx; } + +.mt-19 { + margin-top: 19rpx; } + +.mt--19 { + margin-top: -19rpx; } + +.mt-20 { + margin-top: 20rpx; } + +.mt--20 { + margin-top: -20rpx; } + +.mt-21 { + margin-top: 21rpx; } + +.mt--21 { + margin-top: -21rpx; } + +.mt-22 { + margin-top: 22rpx; } + +.mt--22 { + margin-top: -22rpx; } + +.mt-23 { + margin-top: 23rpx; } + +.mt--23 { + margin-top: -23rpx; } + +.mt-24 { + margin-top: 24rpx; } + +.mt--24 { + margin-top: -24rpx; } + +.mt-25 { + margin-top: 25rpx; } + +.mt--25 { + margin-top: -25rpx; } + +.mt-26 { + margin-top: 26rpx; } + +.mt--26 { + margin-top: -26rpx; } + +.mt-27 { + margin-top: 27rpx; } + +.mt--27 { + margin-top: -27rpx; } + +.mt-28 { + margin-top: 28rpx; } + +.mt--28 { + margin-top: -28rpx; } + +.mt-29 { + margin-top: 29rpx; } + +.mt--29 { + margin-top: -29rpx; } + +.mt-30 { + margin-top: 30rpx; } + +.mt--30 { + margin-top: -30rpx; } + +.mt-31 { + margin-top: 31rpx; } + +.mt--31 { + margin-top: -31rpx; } + +.mt-32 { + margin-top: 32rpx; } + +.mt--32 { + margin-top: -32rpx; } + +.mt-33 { + margin-top: 33rpx; } + +.mt--33 { + margin-top: -33rpx; } + +.mt-34 { + margin-top: 34rpx; } + +.mt--34 { + margin-top: -34rpx; } + +.mt-35 { + margin-top: 35rpx; } + +.mt--35 { + margin-top: -35rpx; } + +.mt-36 { + margin-top: 36rpx; } + +.mt--36 { + margin-top: -36rpx; } + +.mt-37 { + margin-top: 37rpx; } + +.mt--37 { + margin-top: -37rpx; } + +.mt-38 { + margin-top: 38rpx; } + +.mt--38 { + margin-top: -38rpx; } + +.mt-39 { + margin-top: 39rpx; } + +.mt--39 { + margin-top: -39rpx; } + +.mt-40 { + margin-top: 40rpx; } + +.mt--40 { + margin-top: -40rpx; } + +.mt-41 { + margin-top: 41rpx; } + +.mt--41 { + margin-top: -41rpx; } + +.mt-42 { + margin-top: 42rpx; } + +.mt--42 { + margin-top: -42rpx; } + +.mt-43 { + margin-top: 43rpx; } + +.mt--43 { + margin-top: -43rpx; } + +.mt-44 { + margin-top: 44rpx; } + +.mt--44 { + margin-top: -44rpx; } + +.mt-45 { + margin-top: 45rpx; } + +.mt--45 { + margin-top: -45rpx; } + +.mt-46 { + margin-top: 46rpx; } + +.mt--46 { + margin-top: -46rpx; } + +.mt-47 { + margin-top: 47rpx; } + +.mt--47 { + margin-top: -47rpx; } + +.mt-48 { + margin-top: 48rpx; } + +.mt--48 { + margin-top: -48rpx; } + +.mt-49 { + margin-top: 49rpx; } + +.mt--49 { + margin-top: -49rpx; } + +.mt-50 { + margin-top: 50rpx; } + +.mt--50 { + margin-top: -50rpx; } + +.mt-n1 { + margin-top: 4rpx; } + +.mt--n1 { + margin-top: -4rpx; } + +.mt-n2 { + margin-top: 8rpx; } + +.mt--n2 { + margin-top: -8rpx; } + +.mt-n3 { + margin-top: 12rpx; } + +.mt--n3 { + margin-top: -12rpx; } + +.mt-n4 { + margin-top: 16rpx; } + +.mt--n4 { + margin-top: -16rpx; } + +.mt-n5 { + margin-top: 20rpx; } + +.mt--n5 { + margin-top: -20rpx; } + +.mt-n6 { + margin-top: 24rpx; } + +.mt--n6 { + margin-top: -24rpx; } + +.mt-n7 { + margin-top: 28rpx; } + +.mt--n7 { + margin-top: -28rpx; } + +.mt-n8 { + margin-top: 32rpx; } + +.mt--n8 { + margin-top: -32rpx; } + +.mt-n9 { + margin-top: 36rpx; } + +.mt--n9 { + margin-top: -36rpx; } + +.mt-n10 { + margin-top: 40rpx; } + +.mt--n10 { + margin-top: -40rpx; } + +.mt-n11 { + margin-top: 44rpx; } + +.mt--n11 { + margin-top: -44rpx; } + +.mt-n12 { + margin-top: 48rpx; } + +.mt--n12 { + margin-top: -48rpx; } + +.mt-n13 { + margin-top: 52rpx; } + +.mt--n13 { + margin-top: -52rpx; } + +.mt-n14 { + margin-top: 56rpx; } + +.mt--n14 { + margin-top: -56rpx; } + +.mt-n15 { + margin-top: 60rpx; } + +.mt--n15 { + margin-top: -60rpx; } + +.mt-n16 { + margin-top: 64rpx; } + +.mt--n16 { + margin-top: -64rpx; } + +.mt-n17 { + margin-top: 68rpx; } + +.mt--n17 { + margin-top: -68rpx; } + +.mt-n18 { + margin-top: 72rpx; } + +.mt--n18 { + margin-top: -72rpx; } + +.mt-n19 { + margin-top: 76rpx; } + +.mt--n19 { + margin-top: -76rpx; } + +.mt-n20 { + margin-top: 80rpx; } + +.mt--n20 { + margin-top: -80rpx; } + +.mt-n21 { + margin-top: 84rpx; } + +.mt--n21 { + margin-top: -84rpx; } + +.mt-n22 { + margin-top: 88rpx; } + +.mt--n22 { + margin-top: -88rpx; } + +.mt-n23 { + margin-top: 92rpx; } + +.mt--n23 { + margin-top: -92rpx; } + +.mt-n24 { + margin-top: 96rpx; } + +.mt--n24 { + margin-top: -96rpx; } + +.mt-n25 { + margin-top: 100rpx; } + +.mt--n25 { + margin-top: -100rpx; } + +.mr-0 { + margin-right: 0rpx; } + +.mr--0 { + margin-right: -0rpx; } + +.mr-1 { + margin-right: 1rpx; } + +.mr--1 { + margin-right: -1rpx; } + +.mr-2 { + margin-right: 2rpx; } + +.mr--2 { + margin-right: -2rpx; } + +.mr-3 { + margin-right: 3rpx; } + +.mr--3 { + margin-right: -3rpx; } + +.mr-4 { + margin-right: 4rpx; } + +.mr--4 { + margin-right: -4rpx; } + +.mr-5 { + margin-right: 5rpx; } + +.mr--5 { + margin-right: -5rpx; } + +.mr-6 { + margin-right: 6rpx; } + +.mr--6 { + margin-right: -6rpx; } + +.mr-7 { + margin-right: 7rpx; } + +.mr--7 { + margin-right: -7rpx; } + +.mr-8 { + margin-right: 8rpx; } + +.mr--8 { + margin-right: -8rpx; } + +.mr-9 { + margin-right: 9rpx; } + +.mr--9 { + margin-right: -9rpx; } + +.mr-10 { + margin-right: 10rpx; } + +.mr--10 { + margin-right: -10rpx; } + +.mr-11 { + margin-right: 11rpx; } + +.mr--11 { + margin-right: -11rpx; } + +.mr-12 { + margin-right: 12rpx; } + +.mr--12 { + margin-right: -12rpx; } + +.mr-13 { + margin-right: 13rpx; } + +.mr--13 { + margin-right: -13rpx; } + +.mr-14 { + margin-right: 14rpx; } + +.mr--14 { + margin-right: -14rpx; } + +.mr-15 { + margin-right: 15rpx; } + +.mr--15 { + margin-right: -15rpx; } + +.mr-16 { + margin-right: 16rpx; } + +.mr--16 { + margin-right: -16rpx; } + +.mr-17 { + margin-right: 17rpx; } + +.mr--17 { + margin-right: -17rpx; } + +.mr-18 { + margin-right: 18rpx; } + +.mr--18 { + margin-right: -18rpx; } + +.mr-19 { + margin-right: 19rpx; } + +.mr--19 { + margin-right: -19rpx; } + +.mr-20 { + margin-right: 20rpx; } + +.mr--20 { + margin-right: -20rpx; } + +.mr-21 { + margin-right: 21rpx; } + +.mr--21 { + margin-right: -21rpx; } + +.mr-22 { + margin-right: 22rpx; } + +.mr--22 { + margin-right: -22rpx; } + +.mr-23 { + margin-right: 23rpx; } + +.mr--23 { + margin-right: -23rpx; } + +.mr-24 { + margin-right: 24rpx; } + +.mr--24 { + margin-right: -24rpx; } + +.mr-25 { + margin-right: 25rpx; } + +.mr--25 { + margin-right: -25rpx; } + +.mr-26 { + margin-right: 26rpx; } + +.mr--26 { + margin-right: -26rpx; } + +.mr-27 { + margin-right: 27rpx; } + +.mr--27 { + margin-right: -27rpx; } + +.mr-28 { + margin-right: 28rpx; } + +.mr--28 { + margin-right: -28rpx; } + +.mr-29 { + margin-right: 29rpx; } + +.mr--29 { + margin-right: -29rpx; } + +.mr-30 { + margin-right: 30rpx; } + +.mr--30 { + margin-right: -30rpx; } + +.mr-31 { + margin-right: 31rpx; } + +.mr--31 { + margin-right: -31rpx; } + +.mr-32 { + margin-right: 32rpx; } + +.mr--32 { + margin-right: -32rpx; } + +.mr-33 { + margin-right: 33rpx; } + +.mr--33 { + margin-right: -33rpx; } + +.mr-34 { + margin-right: 34rpx; } + +.mr--34 { + margin-right: -34rpx; } + +.mr-35 { + margin-right: 35rpx; } + +.mr--35 { + margin-right: -35rpx; } + +.mr-36 { + margin-right: 36rpx; } + +.mr--36 { + margin-right: -36rpx; } + +.mr-37 { + margin-right: 37rpx; } + +.mr--37 { + margin-right: -37rpx; } + +.mr-38 { + margin-right: 38rpx; } + +.mr--38 { + margin-right: -38rpx; } + +.mr-39 { + margin-right: 39rpx; } + +.mr--39 { + margin-right: -39rpx; } + +.mr-40 { + margin-right: 40rpx; } + +.mr--40 { + margin-right: -40rpx; } + +.mr-41 { + margin-right: 41rpx; } + +.mr--41 { + margin-right: -41rpx; } + +.mr-42 { + margin-right: 42rpx; } + +.mr--42 { + margin-right: -42rpx; } + +.mr-43 { + margin-right: 43rpx; } + +.mr--43 { + margin-right: -43rpx; } + +.mr-44 { + margin-right: 44rpx; } + +.mr--44 { + margin-right: -44rpx; } + +.mr-45 { + margin-right: 45rpx; } + +.mr--45 { + margin-right: -45rpx; } + +.mr-46 { + margin-right: 46rpx; } + +.mr--46 { + margin-right: -46rpx; } + +.mr-47 { + margin-right: 47rpx; } + +.mr--47 { + margin-right: -47rpx; } + +.mr-48 { + margin-right: 48rpx; } + +.mr--48 { + margin-right: -48rpx; } + +.mr-49 { + margin-right: 49rpx; } + +.mr--49 { + margin-right: -49rpx; } + +.mr-50 { + margin-right: 50rpx; } + +.mr--50 { + margin-right: -50rpx; } + +.mr-n1 { + margin-right: 4rpx; } + +.mr--n1 { + margin-right: -4rpx; } + +.mr-n2 { + margin-right: 8rpx; } + +.mr--n2 { + margin-right: -8rpx; } + +.mr-n3 { + margin-right: 12rpx; } + +.mr--n3 { + margin-right: -12rpx; } + +.mr-n4 { + margin-right: 16rpx; } + +.mr--n4 { + margin-right: -16rpx; } + +.mr-n5 { + margin-right: 20rpx; } + +.mr--n5 { + margin-right: -20rpx; } + +.mr-n6 { + margin-right: 24rpx; } + +.mr--n6 { + margin-right: -24rpx; } + +.mr-n7 { + margin-right: 28rpx; } + +.mr--n7 { + margin-right: -28rpx; } + +.mr-n8 { + margin-right: 32rpx; } + +.mr--n8 { + margin-right: -32rpx; } + +.mr-n9 { + margin-right: 36rpx; } + +.mr--n9 { + margin-right: -36rpx; } + +.mr-n10 { + margin-right: 40rpx; } + +.mr--n10 { + margin-right: -40rpx; } + +.mr-n11 { + margin-right: 44rpx; } + +.mr--n11 { + margin-right: -44rpx; } + +.mr-n12 { + margin-right: 48rpx; } + +.mr--n12 { + margin-right: -48rpx; } + +.mr-n13 { + margin-right: 52rpx; } + +.mr--n13 { + margin-right: -52rpx; } + +.mr-n14 { + margin-right: 56rpx; } + +.mr--n14 { + margin-right: -56rpx; } + +.mr-n15 { + margin-right: 60rpx; } + +.mr--n15 { + margin-right: -60rpx; } + +.mr-n16 { + margin-right: 64rpx; } + +.mr--n16 { + margin-right: -64rpx; } + +.mr-n17 { + margin-right: 68rpx; } + +.mr--n17 { + margin-right: -68rpx; } + +.mr-n18 { + margin-right: 72rpx; } + +.mr--n18 { + margin-right: -72rpx; } + +.mr-n19 { + margin-right: 76rpx; } + +.mr--n19 { + margin-right: -76rpx; } + +.mr-n20 { + margin-right: 80rpx; } + +.mr--n20 { + margin-right: -80rpx; } + +.mr-n21 { + margin-right: 84rpx; } + +.mr--n21 { + margin-right: -84rpx; } + +.mr-n22 { + margin-right: 88rpx; } + +.mr--n22 { + margin-right: -88rpx; } + +.mr-n23 { + margin-right: 92rpx; } + +.mr--n23 { + margin-right: -92rpx; } + +.mr-n24 { + margin-right: 96rpx; } + +.mr--n24 { + margin-right: -96rpx; } + +.mr-n25 { + margin-right: 100rpx; } + +.mr--n25 { + margin-right: -100rpx; } + +.mb-0 { + margin-bottom: 0rpx; } + +.mb--0 { + margin-bottom: -0rpx; } + +.mb-1 { + margin-bottom: 1rpx; } + +.mb--1 { + margin-bottom: -1rpx; } + +.mb-2 { + margin-bottom: 2rpx; } + +.mb--2 { + margin-bottom: -2rpx; } + +.mb-3 { + margin-bottom: 3rpx; } + +.mb--3 { + margin-bottom: -3rpx; } + +.mb-4 { + margin-bottom: 4rpx; } + +.mb--4 { + margin-bottom: -4rpx; } + +.mb-5 { + margin-bottom: 5rpx; } + +.mb--5 { + margin-bottom: -5rpx; } + +.mb-6 { + margin-bottom: 6rpx; } + +.mb--6 { + margin-bottom: -6rpx; } + +.mb-7 { + margin-bottom: 7rpx; } + +.mb--7 { + margin-bottom: -7rpx; } + +.mb-8 { + margin-bottom: 8rpx; } + +.mb--8 { + margin-bottom: -8rpx; } + +.mb-9 { + margin-bottom: 9rpx; } + +.mb--9 { + margin-bottom: -9rpx; } + +.mb-10 { + margin-bottom: 10rpx; } + +.mb--10 { + margin-bottom: -10rpx; } + +.mb-11 { + margin-bottom: 11rpx; } + +.mb--11 { + margin-bottom: -11rpx; } + +.mb-12 { + margin-bottom: 12rpx; } + +.mb--12 { + margin-bottom: -12rpx; } + +.mb-13 { + margin-bottom: 13rpx; } + +.mb--13 { + margin-bottom: -13rpx; } + +.mb-14 { + margin-bottom: 14rpx; } + +.mb--14 { + margin-bottom: -14rpx; } + +.mb-15 { + margin-bottom: 15rpx; } + +.mb--15 { + margin-bottom: -15rpx; } + +.mb-16 { + margin-bottom: 16rpx; } + +.mb--16 { + margin-bottom: -16rpx; } + +.mb-17 { + margin-bottom: 17rpx; } + +.mb--17 { + margin-bottom: -17rpx; } + +.mb-18 { + margin-bottom: 18rpx; } + +.mb--18 { + margin-bottom: -18rpx; } + +.mb-19 { + margin-bottom: 19rpx; } + +.mb--19 { + margin-bottom: -19rpx; } + +.mb-20 { + margin-bottom: 20rpx; } + +.mb--20 { + margin-bottom: -20rpx; } + +.mb-21 { + margin-bottom: 21rpx; } + +.mb--21 { + margin-bottom: -21rpx; } + +.mb-22 { + margin-bottom: 22rpx; } + +.mb--22 { + margin-bottom: -22rpx; } + +.mb-23 { + margin-bottom: 23rpx; } + +.mb--23 { + margin-bottom: -23rpx; } + +.mb-24 { + margin-bottom: 24rpx; } + +.mb--24 { + margin-bottom: -24rpx; } + +.mb-25 { + margin-bottom: 25rpx; } + +.mb--25 { + margin-bottom: -25rpx; } + +.mb-26 { + margin-bottom: 26rpx; } + +.mb--26 { + margin-bottom: -26rpx; } + +.mb-27 { + margin-bottom: 27rpx; } + +.mb--27 { + margin-bottom: -27rpx; } + +.mb-28 { + margin-bottom: 28rpx; } + +.mb--28 { + margin-bottom: -28rpx; } + +.mb-29 { + margin-bottom: 29rpx; } + +.mb--29 { + margin-bottom: -29rpx; } + +.mb-30 { + margin-bottom: 30rpx; } + +.mb--30 { + margin-bottom: -30rpx; } + +.mb-31 { + margin-bottom: 31rpx; } + +.mb--31 { + margin-bottom: -31rpx; } + +.mb-32 { + margin-bottom: 32rpx; } + +.mb--32 { + margin-bottom: -32rpx; } + +.mb-33 { + margin-bottom: 33rpx; } + +.mb--33 { + margin-bottom: -33rpx; } + +.mb-34 { + margin-bottom: 34rpx; } + +.mb--34 { + margin-bottom: -34rpx; } + +.mb-35 { + margin-bottom: 35rpx; } + +.mb--35 { + margin-bottom: -35rpx; } + +.mb-36 { + margin-bottom: 36rpx; } + +.mb--36 { + margin-bottom: -36rpx; } + +.mb-37 { + margin-bottom: 37rpx; } + +.mb--37 { + margin-bottom: -37rpx; } + +.mb-38 { + margin-bottom: 38rpx; } + +.mb--38 { + margin-bottom: -38rpx; } + +.mb-39 { + margin-bottom: 39rpx; } + +.mb--39 { + margin-bottom: -39rpx; } + +.mb-40 { + margin-bottom: 40rpx; } + +.mb--40 { + margin-bottom: -40rpx; } + +.mb-41 { + margin-bottom: 41rpx; } + +.mb--41 { + margin-bottom: -41rpx; } + +.mb-42 { + margin-bottom: 42rpx; } + +.mb--42 { + margin-bottom: -42rpx; } + +.mb-43 { + margin-bottom: 43rpx; } + +.mb--43 { + margin-bottom: -43rpx; } + +.mb-44 { + margin-bottom: 44rpx; } + +.mb--44 { + margin-bottom: -44rpx; } + +.mb-45 { + margin-bottom: 45rpx; } + +.mb--45 { + margin-bottom: -45rpx; } + +.mb-46 { + margin-bottom: 46rpx; } + +.mb--46 { + margin-bottom: -46rpx; } + +.mb-47 { + margin-bottom: 47rpx; } + +.mb--47 { + margin-bottom: -47rpx; } + +.mb-48 { + margin-bottom: 48rpx; } + +.mb--48 { + margin-bottom: -48rpx; } + +.mb-49 { + margin-bottom: 49rpx; } + +.mb--49 { + margin-bottom: -49rpx; } + +.mb-50 { + margin-bottom: 50rpx; } + +.mb--50 { + margin-bottom: -50rpx; } + +.mb-n1 { + margin-bottom: 4rpx; } + +.mb--n1 { + margin-bottom: -4rpx; } + +.mb-n2 { + margin-bottom: 8rpx; } + +.mb--n2 { + margin-bottom: -8rpx; } + +.mb-n3 { + margin-bottom: 12rpx; } + +.mb--n3 { + margin-bottom: -12rpx; } + +.mb-n4 { + margin-bottom: 16rpx; } + +.mb--n4 { + margin-bottom: -16rpx; } + +.mb-n5 { + margin-bottom: 20rpx; } + +.mb--n5 { + margin-bottom: -20rpx; } + +.mb-n6 { + margin-bottom: 24rpx; } + +.mb--n6 { + margin-bottom: -24rpx; } + +.mb-n7 { + margin-bottom: 28rpx; } + +.mb--n7 { + margin-bottom: -28rpx; } + +.mb-n8 { + margin-bottom: 32rpx; } + +.mb--n8 { + margin-bottom: -32rpx; } + +.mb-n9 { + margin-bottom: 36rpx; } + +.mb--n9 { + margin-bottom: -36rpx; } + +.mb-n10 { + margin-bottom: 40rpx; } + +.mb--n10 { + margin-bottom: -40rpx; } + +.mb-n11 { + margin-bottom: 44rpx; } + +.mb--n11 { + margin-bottom: -44rpx; } + +.mb-n12 { + margin-bottom: 48rpx; } + +.mb--n12 { + margin-bottom: -48rpx; } + +.mb-n13 { + margin-bottom: 52rpx; } + +.mb--n13 { + margin-bottom: -52rpx; } + +.mb-n14 { + margin-bottom: 56rpx; } + +.mb--n14 { + margin-bottom: -56rpx; } + +.mb-n15 { + margin-bottom: 60rpx; } + +.mb--n15 { + margin-bottom: -60rpx; } + +.mb-n16 { + margin-bottom: 64rpx; } + +.mb--n16 { + margin-bottom: -64rpx; } + +.mb-n17 { + margin-bottom: 68rpx; } + +.mb--n17 { + margin-bottom: -68rpx; } + +.mb-n18 { + margin-bottom: 72rpx; } + +.mb--n18 { + margin-bottom: -72rpx; } + +.mb-n19 { + margin-bottom: 76rpx; } + +.mb--n19 { + margin-bottom: -76rpx; } + +.mb-n20 { + margin-bottom: 80rpx; } + +.mb--n20 { + margin-bottom: -80rpx; } + +.mb-n21 { + margin-bottom: 84rpx; } + +.mb--n21 { + margin-bottom: -84rpx; } + +.mb-n22 { + margin-bottom: 88rpx; } + +.mb--n22 { + margin-bottom: -88rpx; } + +.mb-n23 { + margin-bottom: 92rpx; } + +.mb--n23 { + margin-bottom: -92rpx; } + +.mb-n24 { + margin-bottom: 96rpx; } + +.mb--n24 { + margin-bottom: -96rpx; } + +.mb-n25 { + margin-bottom: 100rpx; } + +.mb--n25 { + margin-bottom: -100rpx; } + +.ml-0 { + margin-left: 0rpx; } + +.ml--0 { + margin-left: -0rpx; } + +.ml-1 { + margin-left: 1rpx; } + +.ml--1 { + margin-left: -1rpx; } + +.ml-2 { + margin-left: 2rpx; } + +.ml--2 { + margin-left: -2rpx; } + +.ml-3 { + margin-left: 3rpx; } + +.ml--3 { + margin-left: -3rpx; } + +.ml-4 { + margin-left: 4rpx; } + +.ml--4 { + margin-left: -4rpx; } + +.ml-5 { + margin-left: 5rpx; } + +.ml--5 { + margin-left: -5rpx; } + +.ml-6 { + margin-left: 6rpx; } + +.ml--6 { + margin-left: -6rpx; } + +.ml-7 { + margin-left: 7rpx; } + +.ml--7 { + margin-left: -7rpx; } + +.ml-8 { + margin-left: 8rpx; } + +.ml--8 { + margin-left: -8rpx; } + +.ml-9 { + margin-left: 9rpx; } + +.ml--9 { + margin-left: -9rpx; } + +.ml-10 { + margin-left: 10rpx; } + +.ml--10 { + margin-left: -10rpx; } + +.ml-11 { + margin-left: 11rpx; } + +.ml--11 { + margin-left: -11rpx; } + +.ml-12 { + margin-left: 12rpx; } + +.ml--12 { + margin-left: -12rpx; } + +.ml-13 { + margin-left: 13rpx; } + +.ml--13 { + margin-left: -13rpx; } + +.ml-14 { + margin-left: 14rpx; } + +.ml--14 { + margin-left: -14rpx; } + +.ml-15 { + margin-left: 15rpx; } + +.ml--15 { + margin-left: -15rpx; } + +.ml-16 { + margin-left: 16rpx; } + +.ml--16 { + margin-left: -16rpx; } + +.ml-17 { + margin-left: 17rpx; } + +.ml--17 { + margin-left: -17rpx; } + +.ml-18 { + margin-left: 18rpx; } + +.ml--18 { + margin-left: -18rpx; } + +.ml-19 { + margin-left: 19rpx; } + +.ml--19 { + margin-left: -19rpx; } + +.ml-20 { + margin-left: 20rpx; } + +.ml--20 { + margin-left: -20rpx; } + +.ml-21 { + margin-left: 21rpx; } + +.ml--21 { + margin-left: -21rpx; } + +.ml-22 { + margin-left: 22rpx; } + +.ml--22 { + margin-left: -22rpx; } + +.ml-23 { + margin-left: 23rpx; } + +.ml--23 { + margin-left: -23rpx; } + +.ml-24 { + margin-left: 24rpx; } + +.ml--24 { + margin-left: -24rpx; } + +.ml-25 { + margin-left: 25rpx; } + +.ml--25 { + margin-left: -25rpx; } + +.ml-26 { + margin-left: 26rpx; } + +.ml--26 { + margin-left: -26rpx; } + +.ml-27 { + margin-left: 27rpx; } + +.ml--27 { + margin-left: -27rpx; } + +.ml-28 { + margin-left: 28rpx; } + +.ml--28 { + margin-left: -28rpx; } + +.ml-29 { + margin-left: 29rpx; } + +.ml--29 { + margin-left: -29rpx; } + +.ml-30 { + margin-left: 30rpx; } + +.ml--30 { + margin-left: -30rpx; } + +.ml-31 { + margin-left: 31rpx; } + +.ml--31 { + margin-left: -31rpx; } + +.ml-32 { + margin-left: 32rpx; } + +.ml--32 { + margin-left: -32rpx; } + +.ml-33 { + margin-left: 33rpx; } + +.ml--33 { + margin-left: -33rpx; } + +.ml-34 { + margin-left: 34rpx; } + +.ml--34 { + margin-left: -34rpx; } + +.ml-35 { + margin-left: 35rpx; } + +.ml--35 { + margin-left: -35rpx; } + +.ml-36 { + margin-left: 36rpx; } + +.ml--36 { + margin-left: -36rpx; } + +.ml-37 { + margin-left: 37rpx; } + +.ml--37 { + margin-left: -37rpx; } + +.ml-38 { + margin-left: 38rpx; } + +.ml--38 { + margin-left: -38rpx; } + +.ml-39 { + margin-left: 39rpx; } + +.ml--39 { + margin-left: -39rpx; } + +.ml-40 { + margin-left: 40rpx; } + +.ml--40 { + margin-left: -40rpx; } + +.ml-41 { + margin-left: 41rpx; } + +.ml--41 { + margin-left: -41rpx; } + +.ml-42 { + margin-left: 42rpx; } + +.ml--42 { + margin-left: -42rpx; } + +.ml-43 { + margin-left: 43rpx; } + +.ml--43 { + margin-left: -43rpx; } + +.ml-44 { + margin-left: 44rpx; } + +.ml--44 { + margin-left: -44rpx; } + +.ml-45 { + margin-left: 45rpx; } + +.ml--45 { + margin-left: -45rpx; } + +.ml-46 { + margin-left: 46rpx; } + +.ml--46 { + margin-left: -46rpx; } + +.ml-47 { + margin-left: 47rpx; } + +.ml--47 { + margin-left: -47rpx; } + +.ml-48 { + margin-left: 48rpx; } + +.ml--48 { + margin-left: -48rpx; } + +.ml-49 { + margin-left: 49rpx; } + +.ml--49 { + margin-left: -49rpx; } + +.ml-50 { + margin-left: 50rpx; } + +.ml--50 { + margin-left: -50rpx; } + +.ml-n1 { + margin-left: 4rpx; } + +.ml--n1 { + margin-left: -4rpx; } + +.ml-n2 { + margin-left: 8rpx; } + +.ml--n2 { + margin-left: -8rpx; } + +.ml-n3 { + margin-left: 12rpx; } + +.ml--n3 { + margin-left: -12rpx; } + +.ml-n4 { + margin-left: 16rpx; } + +.ml--n4 { + margin-left: -16rpx; } + +.ml-n5 { + margin-left: 20rpx; } + +.ml--n5 { + margin-left: -20rpx; } + +.ml-n6 { + margin-left: 24rpx; } + +.ml--n6 { + margin-left: -24rpx; } + +.ml-n7 { + margin-left: 28rpx; } + +.ml--n7 { + margin-left: -28rpx; } + +.ml-n8 { + margin-left: 32rpx; } + +.ml--n8 { + margin-left: -32rpx; } + +.ml-n9 { + margin-left: 36rpx; } + +.ml--n9 { + margin-left: -36rpx; } + +.ml-n10 { + margin-left: 40rpx; } + +.ml--n10 { + margin-left: -40rpx; } + +.ml-n11 { + margin-left: 44rpx; } + +.ml--n11 { + margin-left: -44rpx; } + +.ml-n12 { + margin-left: 48rpx; } + +.ml--n12 { + margin-left: -48rpx; } + +.ml-n13 { + margin-left: 52rpx; } + +.ml--n13 { + margin-left: -52rpx; } + +.ml-n14 { + margin-left: 56rpx; } + +.ml--n14 { + margin-left: -56rpx; } + +.ml-n15 { + margin-left: 60rpx; } + +.ml--n15 { + margin-left: -60rpx; } + +.ml-n16 { + margin-left: 64rpx; } + +.ml--n16 { + margin-left: -64rpx; } + +.ml-n17 { + margin-left: 68rpx; } + +.ml--n17 { + margin-left: -68rpx; } + +.ml-n18 { + margin-left: 72rpx; } + +.ml--n18 { + margin-left: -72rpx; } + +.ml-n19 { + margin-left: 76rpx; } + +.ml--n19 { + margin-left: -76rpx; } + +.ml-n20 { + margin-left: 80rpx; } + +.ml--n20 { + margin-left: -80rpx; } + +.ml-n21 { + margin-left: 84rpx; } + +.ml--n21 { + margin-left: -84rpx; } + +.ml-n22 { + margin-left: 88rpx; } + +.ml--n22 { + margin-left: -88rpx; } + +.ml-n23 { + margin-left: 92rpx; } + +.ml--n23 { + margin-left: -92rpx; } + +.ml-n24 { + margin-left: 96rpx; } + +.ml--n24 { + margin-left: -96rpx; } + +.ml-n25 { + margin-left: 100rpx; } + +.ml--n25 { + margin-left: -100rpx; } + +.mx-0 { + margin-left: 0rpx; + margin-right: 0rpx; } + +.mx-1 { + margin-left: 1rpx; + margin-right: 1rpx; } + +.mx-2 { + margin-left: 2rpx; + margin-right: 2rpx; } + +.mx-3 { + margin-left: 3rpx; + margin-right: 3rpx; } + +.mx-4 { + margin-left: 4rpx; + margin-right: 4rpx; } + +.mx-5 { + margin-left: 5rpx; + margin-right: 5rpx; } + +.mx-6 { + margin-left: 6rpx; + margin-right: 6rpx; } + +.mx-7 { + margin-left: 7rpx; + margin-right: 7rpx; } + +.mx-8 { + margin-left: 8rpx; + margin-right: 8rpx; } + +.mx-9 { + margin-left: 9rpx; + margin-right: 9rpx; } + +.mx-10 { + margin-left: 10rpx; + margin-right: 10rpx; } + +.mx-11 { + margin-left: 11rpx; + margin-right: 11rpx; } + +.mx-12 { + margin-left: 12rpx; + margin-right: 12rpx; } + +.mx-13 { + margin-left: 13rpx; + margin-right: 13rpx; } + +.mx-14 { + margin-left: 14rpx; + margin-right: 14rpx; } + +.mx-15 { + margin-left: 15rpx; + margin-right: 15rpx; } + +.mx-16 { + margin-left: 16rpx; + margin-right: 16rpx; } + +.mx-17 { + margin-left: 17rpx; + margin-right: 17rpx; } + +.mx-18 { + margin-left: 18rpx; + margin-right: 18rpx; } + +.mx-19 { + margin-left: 19rpx; + margin-right: 19rpx; } + +.mx-20 { + margin-left: 20rpx; + margin-right: 20rpx; } + +.mx-21 { + margin-left: 21rpx; + margin-right: 21rpx; } + +.mx-22 { + margin-left: 22rpx; + margin-right: 22rpx; } + +.mx-23 { + margin-left: 23rpx; + margin-right: 23rpx; } + +.mx-24 { + margin-left: 24rpx; + margin-right: 24rpx; } + +.mx-25 { + margin-left: 25rpx; + margin-right: 25rpx; } + +.mx-26 { + margin-left: 26rpx; + margin-right: 26rpx; } + +.mx-27 { + margin-left: 27rpx; + margin-right: 27rpx; } + +.mx-28 { + margin-left: 28rpx; + margin-right: 28rpx; } + +.mx-29 { + margin-left: 29rpx; + margin-right: 29rpx; } + +.mx-30 { + margin-left: 30rpx; + margin-right: 30rpx; } + +.mx-31 { + margin-left: 31rpx; + margin-right: 31rpx; } + +.mx-32 { + margin-left: 32rpx; + margin-right: 32rpx; } + +.mx-33 { + margin-left: 33rpx; + margin-right: 33rpx; } + +.mx-34 { + margin-left: 34rpx; + margin-right: 34rpx; } + +.mx-35 { + margin-left: 35rpx; + margin-right: 35rpx; } + +.mx-36 { + margin-left: 36rpx; + margin-right: 36rpx; } + +.mx-37 { + margin-left: 37rpx; + margin-right: 37rpx; } + +.mx-38 { + margin-left: 38rpx; + margin-right: 38rpx; } + +.mx-39 { + margin-left: 39rpx; + margin-right: 39rpx; } + +.mx-40 { + margin-left: 40rpx; + margin-right: 40rpx; } + +.mx-41 { + margin-left: 41rpx; + margin-right: 41rpx; } + +.mx-42 { + margin-left: 42rpx; + margin-right: 42rpx; } + +.mx-43 { + margin-left: 43rpx; + margin-right: 43rpx; } + +.mx-44 { + margin-left: 44rpx; + margin-right: 44rpx; } + +.mx-45 { + margin-left: 45rpx; + margin-right: 45rpx; } + +.mx-46 { + margin-left: 46rpx; + margin-right: 46rpx; } + +.mx-47 { + margin-left: 47rpx; + margin-right: 47rpx; } + +.mx-48 { + margin-left: 48rpx; + margin-right: 48rpx; } + +.mx-49 { + margin-left: 49rpx; + margin-right: 49rpx; } + +.mx-50 { + margin-left: 50rpx; + margin-right: 50rpx; } + +.mx-n1 { + margin-left: 4rpx; + margin-right: 4rpx; } + +.mx-n2 { + margin-left: 8rpx; + margin-right: 8rpx; } + +.mx-n3 { + margin-left: 12rpx; + margin-right: 12rpx; } + +.mx-n4 { + margin-left: 16rpx; + margin-right: 16rpx; } + +.mx-n5 { + margin-left: 20rpx; + margin-right: 20rpx; } + +.mx-n6 { + margin-left: 24rpx; + margin-right: 24rpx; } + +.mx-n7 { + margin-left: 28rpx; + margin-right: 28rpx; } + +.mx-n8 { + margin-left: 32rpx; + margin-right: 32rpx; } + +.mx-n9 { + margin-left: 36rpx; + margin-right: 36rpx; } + +.mx-n10 { + margin-left: 40rpx; + margin-right: 40rpx; } + +.mx-n11 { + margin-left: 44rpx; + margin-right: 44rpx; } + +.mx-n12 { + margin-left: 48rpx; + margin-right: 48rpx; } + +.mx-n13 { + margin-left: 52rpx; + margin-right: 52rpx; } + +.mx-n14 { + margin-left: 56rpx; + margin-right: 56rpx; } + +.mx-n15 { + margin-left: 60rpx; + margin-right: 60rpx; } + +.mx-n16 { + margin-left: 64rpx; + margin-right: 64rpx; } + +.mx-n17 { + margin-left: 68rpx; + margin-right: 68rpx; } + +.mx-n18 { + margin-left: 72rpx; + margin-right: 72rpx; } + +.mx-n19 { + margin-left: 76rpx; + margin-right: 76rpx; } + +.mx-n20 { + margin-left: 80rpx; + margin-right: 80rpx; } + +.mx-n21 { + margin-left: 84rpx; + margin-right: 84rpx; } + +.mx-n22 { + margin-left: 88rpx; + margin-right: 88rpx; } + +.mx-n23 { + margin-left: 92rpx; + margin-right: 92rpx; } + +.mx-n24 { + margin-left: 96rpx; + margin-right: 96rpx; } + +.mx-n25 { + margin-left: 100rpx; + margin-right: 100rpx; } + +.my-0 { + margin-top: 0rpx; + margin-bottom: 0rpx; } + +.my-1 { + margin-top: 1rpx; + margin-bottom: 1rpx; } + +.my-2 { + margin-top: 2rpx; + margin-bottom: 2rpx; } + +.my-3 { + margin-top: 3rpx; + margin-bottom: 3rpx; } + +.my-4 { + margin-top: 4rpx; + margin-bottom: 4rpx; } + +.my-5 { + margin-top: 5rpx; + margin-bottom: 5rpx; } + +.my-6 { + margin-top: 6rpx; + margin-bottom: 6rpx; } + +.my-7 { + margin-top: 7rpx; + margin-bottom: 7rpx; } + +.my-8 { + margin-top: 8rpx; + margin-bottom: 8rpx; } + +.my-9 { + margin-top: 9rpx; + margin-bottom: 9rpx; } + +.my-10 { + margin-top: 10rpx; + margin-bottom: 10rpx; } + +.my-11 { + margin-top: 11rpx; + margin-bottom: 11rpx; } + +.my-12 { + margin-top: 12rpx; + margin-bottom: 12rpx; } + +.my-13 { + margin-top: 13rpx; + margin-bottom: 13rpx; } + +.my-14 { + margin-top: 14rpx; + margin-bottom: 14rpx; } + +.my-15 { + margin-top: 15rpx; + margin-bottom: 15rpx; } + +.my-16 { + margin-top: 16rpx; + margin-bottom: 16rpx; } + +.my-17 { + margin-top: 17rpx; + margin-bottom: 17rpx; } + +.my-18 { + margin-top: 18rpx; + margin-bottom: 18rpx; } + +.my-19 { + margin-top: 19rpx; + margin-bottom: 19rpx; } + +.my-20 { + margin-top: 20rpx; + margin-bottom: 20rpx; } + +.my-21 { + margin-top: 21rpx; + margin-bottom: 21rpx; } + +.my-22 { + margin-top: 22rpx; + margin-bottom: 22rpx; } + +.my-23 { + margin-top: 23rpx; + margin-bottom: 23rpx; } + +.my-24 { + margin-top: 24rpx; + margin-bottom: 24rpx; } + +.my-25 { + margin-top: 25rpx; + margin-bottom: 25rpx; } + +.my-26 { + margin-top: 26rpx; + margin-bottom: 26rpx; } + +.my-27 { + margin-top: 27rpx; + margin-bottom: 27rpx; } + +.my-28 { + margin-top: 28rpx; + margin-bottom: 28rpx; } + +.my-29 { + margin-top: 29rpx; + margin-bottom: 29rpx; } + +.my-30 { + margin-top: 30rpx; + margin-bottom: 30rpx; } + +.my-31 { + margin-top: 31rpx; + margin-bottom: 31rpx; } + +.my-32 { + margin-top: 32rpx; + margin-bottom: 32rpx; } + +.my-33 { + margin-top: 33rpx; + margin-bottom: 33rpx; } + +.my-34 { + margin-top: 34rpx; + margin-bottom: 34rpx; } + +.my-35 { + margin-top: 35rpx; + margin-bottom: 35rpx; } + +.my-36 { + margin-top: 36rpx; + margin-bottom: 36rpx; } + +.my-37 { + margin-top: 37rpx; + margin-bottom: 37rpx; } + +.my-38 { + margin-top: 38rpx; + margin-bottom: 38rpx; } + +.my-39 { + margin-top: 39rpx; + margin-bottom: 39rpx; } + +.my-40 { + margin-top: 40rpx; + margin-bottom: 40rpx; } + +.my-41 { + margin-top: 41rpx; + margin-bottom: 41rpx; } + +.my-42 { + margin-top: 42rpx; + margin-bottom: 42rpx; } + +.my-43 { + margin-top: 43rpx; + margin-bottom: 43rpx; } + +.my-44 { + margin-top: 44rpx; + margin-bottom: 44rpx; } + +.my-45 { + margin-top: 45rpx; + margin-bottom: 45rpx; } + +.my-46 { + margin-top: 46rpx; + margin-bottom: 46rpx; } + +.my-47 { + margin-top: 47rpx; + margin-bottom: 47rpx; } + +.my-48 { + margin-top: 48rpx; + margin-bottom: 48rpx; } + +.my-49 { + margin-top: 49rpx; + margin-bottom: 49rpx; } + +.my-50 { + margin-top: 50rpx; + margin-bottom: 50rpx; } + +.my-n1 { + margin-top: 4rpx; + margin-bottom: 4rpx; } + +.my-n2 { + margin-top: 8rpx; + margin-bottom: 8rpx; } + +.my-n3 { + margin-top: 12rpx; + margin-bottom: 12rpx; } + +.my-n4 { + margin-top: 16rpx; + margin-bottom: 16rpx; } + +.my-n5 { + margin-top: 20rpx; + margin-bottom: 20rpx; } + +.my-n6 { + margin-top: 24rpx; + margin-bottom: 24rpx; } + +.my-n7 { + margin-top: 28rpx; + margin-bottom: 28rpx; } + +.my-n8 { + margin-top: 32rpx; + margin-bottom: 32rpx; } + +.my-n9 { + margin-top: 36rpx; + margin-bottom: 36rpx; } + +.my-n10 { + margin-top: 40rpx; + margin-bottom: 40rpx; } + +.my-n11 { + margin-top: 44rpx; + margin-bottom: 44rpx; } + +.my-n12 { + margin-top: 48rpx; + margin-bottom: 48rpx; } + +.my-n13 { + margin-top: 52rpx; + margin-bottom: 52rpx; } + +.my-n14 { + margin-top: 56rpx; + margin-bottom: 56rpx; } + +.my-n15 { + margin-top: 60rpx; + margin-bottom: 60rpx; } + +.my-n16 { + margin-top: 64rpx; + margin-bottom: 64rpx; } + +.my-n17 { + margin-top: 68rpx; + margin-bottom: 68rpx; } + +.my-n18 { + margin-top: 72rpx; + margin-bottom: 72rpx; } + +.my-n19 { + margin-top: 76rpx; + margin-bottom: 76rpx; } + +.my-n20 { + margin-top: 80rpx; + margin-bottom: 80rpx; } + +.my-n21 { + margin-top: 84rpx; + margin-bottom: 84rpx; } + +.my-n22 { + margin-top: 88rpx; + margin-bottom: 88rpx; } + +.my-n23 { + margin-top: 92rpx; + margin-bottom: 92rpx; } + +.my-n24 { + margin-top: 96rpx; + margin-bottom: 96rpx; } + +.my-n25 { + margin-top: 100rpx; + margin-bottom: 100rpx; } + +.t-0 { + top: 0rpx; } + +.t--0 { + top: -0rpx; } + +.t-1 { + top: 1rpx; } + +.t--1 { + top: -1rpx; } + +.t-2 { + top: 2rpx; } + +.t--2 { + top: -2rpx; } + +.t-3 { + top: 3rpx; } + +.t--3 { + top: -3rpx; } + +.t-4 { + top: 4rpx; } + +.t--4 { + top: -4rpx; } + +.t-5 { + top: 5rpx; } + +.t--5 { + top: -5rpx; } + +.t-6 { + top: 6rpx; } + +.t--6 { + top: -6rpx; } + +.t-7 { + top: 7rpx; } + +.t--7 { + top: -7rpx; } + +.t-8 { + top: 8rpx; } + +.t--8 { + top: -8rpx; } + +.t-9 { + top: 9rpx; } + +.t--9 { + top: -9rpx; } + +.t-10 { + top: 10rpx; } + +.t--10 { + top: -10rpx; } + +.t-11 { + top: 11rpx; } + +.t--11 { + top: -11rpx; } + +.t-12 { + top: 12rpx; } + +.t--12 { + top: -12rpx; } + +.t-13 { + top: 13rpx; } + +.t--13 { + top: -13rpx; } + +.t-14 { + top: 14rpx; } + +.t--14 { + top: -14rpx; } + +.t-15 { + top: 15rpx; } + +.t--15 { + top: -15rpx; } + +.t-16 { + top: 16rpx; } + +.t--16 { + top: -16rpx; } + +.t-17 { + top: 17rpx; } + +.t--17 { + top: -17rpx; } + +.t-18 { + top: 18rpx; } + +.t--18 { + top: -18rpx; } + +.t-19 { + top: 19rpx; } + +.t--19 { + top: -19rpx; } + +.t-20 { + top: 20rpx; } + +.t--20 { + top: -20rpx; } + +.t-21 { + top: 21rpx; } + +.t--21 { + top: -21rpx; } + +.t-22 { + top: 22rpx; } + +.t--22 { + top: -22rpx; } + +.t-23 { + top: 23rpx; } + +.t--23 { + top: -23rpx; } + +.t-24 { + top: 24rpx; } + +.t--24 { + top: -24rpx; } + +.t-25 { + top: 25rpx; } + +.t--25 { + top: -25rpx; } + +.t-26 { + top: 26rpx; } + +.t--26 { + top: -26rpx; } + +.t-27 { + top: 27rpx; } + +.t--27 { + top: -27rpx; } + +.t-28 { + top: 28rpx; } + +.t--28 { + top: -28rpx; } + +.t-29 { + top: 29rpx; } + +.t--29 { + top: -29rpx; } + +.t-30 { + top: 30rpx; } + +.t--30 { + top: -30rpx; } + +.t-31 { + top: 31rpx; } + +.t--31 { + top: -31rpx; } + +.t-32 { + top: 32rpx; } + +.t--32 { + top: -32rpx; } + +.t-33 { + top: 33rpx; } + +.t--33 { + top: -33rpx; } + +.t-34 { + top: 34rpx; } + +.t--34 { + top: -34rpx; } + +.t-35 { + top: 35rpx; } + +.t--35 { + top: -35rpx; } + +.t-36 { + top: 36rpx; } + +.t--36 { + top: -36rpx; } + +.t-37 { + top: 37rpx; } + +.t--37 { + top: -37rpx; } + +.t-38 { + top: 38rpx; } + +.t--38 { + top: -38rpx; } + +.t-39 { + top: 39rpx; } + +.t--39 { + top: -39rpx; } + +.t-40 { + top: 40rpx; } + +.t--40 { + top: -40rpx; } + +.t-41 { + top: 41rpx; } + +.t--41 { + top: -41rpx; } + +.t-42 { + top: 42rpx; } + +.t--42 { + top: -42rpx; } + +.t-43 { + top: 43rpx; } + +.t--43 { + top: -43rpx; } + +.t-44 { + top: 44rpx; } + +.t--44 { + top: -44rpx; } + +.t-45 { + top: 45rpx; } + +.t--45 { + top: -45rpx; } + +.t-46 { + top: 46rpx; } + +.t--46 { + top: -46rpx; } + +.t-47 { + top: 47rpx; } + +.t--47 { + top: -47rpx; } + +.t-48 { + top: 48rpx; } + +.t--48 { + top: -48rpx; } + +.t-49 { + top: 49rpx; } + +.t--49 { + top: -49rpx; } + +.t-50 { + top: 50rpx; } + +.t--50 { + top: -50rpx; } + +.t-n1 { + top: 4rpx; } + +.t--n1 { + top: -4rpx; } + +.t-n2 { + top: 8rpx; } + +.t--n2 { + top: -8rpx; } + +.t-n3 { + top: 12rpx; } + +.t--n3 { + top: -12rpx; } + +.t-n4 { + top: 16rpx; } + +.t--n4 { + top: -16rpx; } + +.t-n5 { + top: 20rpx; } + +.t--n5 { + top: -20rpx; } + +.t-n6 { + top: 24rpx; } + +.t--n6 { + top: -24rpx; } + +.t-n7 { + top: 28rpx; } + +.t--n7 { + top: -28rpx; } + +.t-n8 { + top: 32rpx; } + +.t--n8 { + top: -32rpx; } + +.t-n9 { + top: 36rpx; } + +.t--n9 { + top: -36rpx; } + +.t-n10 { + top: 40rpx; } + +.t--n10 { + top: -40rpx; } + +.t-n11 { + top: 44rpx; } + +.t--n11 { + top: -44rpx; } + +.t-n12 { + top: 48rpx; } + +.t--n12 { + top: -48rpx; } + +.t-n13 { + top: 52rpx; } + +.t--n13 { + top: -52rpx; } + +.t-n14 { + top: 56rpx; } + +.t--n14 { + top: -56rpx; } + +.t-n15 { + top: 60rpx; } + +.t--n15 { + top: -60rpx; } + +.t-n16 { + top: 64rpx; } + +.t--n16 { + top: -64rpx; } + +.t-n17 { + top: 68rpx; } + +.t--n17 { + top: -68rpx; } + +.t-n18 { + top: 72rpx; } + +.t--n18 { + top: -72rpx; } + +.t-n19 { + top: 76rpx; } + +.t--n19 { + top: -76rpx; } + +.t-n20 { + top: 80rpx; } + +.t--n20 { + top: -80rpx; } + +.t-n21 { + top: 84rpx; } + +.t--n21 { + top: -84rpx; } + +.t-n22 { + top: 88rpx; } + +.t--n22 { + top: -88rpx; } + +.t-n23 { + top: 92rpx; } + +.t--n23 { + top: -92rpx; } + +.t-n24 { + top: 96rpx; } + +.t--n24 { + top: -96rpx; } + +.t-n25 { + top: 100rpx; } + +.t--n25 { + top: -100rpx; } + +.r-0 { + right: 0rpx; } + +.r--0 { + right: -0rpx; } + +.r-1 { + right: 1rpx; } + +.r--1 { + right: -1rpx; } + +.r-2 { + right: 2rpx; } + +.r--2 { + right: -2rpx; } + +.r-3 { + right: 3rpx; } + +.r--3 { + right: -3rpx; } + +.r-4 { + right: 4rpx; } + +.r--4 { + right: -4rpx; } + +.r-5 { + right: 5rpx; } + +.r--5 { + right: -5rpx; } + +.r-6 { + right: 6rpx; } + +.r--6 { + right: -6rpx; } + +.r-7 { + right: 7rpx; } + +.r--7 { + right: -7rpx; } + +.r-8 { + right: 8rpx; } + +.r--8 { + right: -8rpx; } + +.r-9 { + right: 9rpx; } + +.r--9 { + right: -9rpx; } + +.r-10 { + right: 10rpx; } + +.r--10 { + right: -10rpx; } + +.r-11 { + right: 11rpx; } + +.r--11 { + right: -11rpx; } + +.r-12 { + right: 12rpx; } + +.r--12 { + right: -12rpx; } + +.r-13 { + right: 13rpx; } + +.r--13 { + right: -13rpx; } + +.r-14 { + right: 14rpx; } + +.r--14 { + right: -14rpx; } + +.r-15 { + right: 15rpx; } + +.r--15 { + right: -15rpx; } + +.r-16 { + right: 16rpx; } + +.r--16 { + right: -16rpx; } + +.r-17 { + right: 17rpx; } + +.r--17 { + right: -17rpx; } + +.r-18 { + right: 18rpx; } + +.r--18 { + right: -18rpx; } + +.r-19 { + right: 19rpx; } + +.r--19 { + right: -19rpx; } + +.r-20 { + right: 20rpx; } + +.r--20 { + right: -20rpx; } + +.r-21 { + right: 21rpx; } + +.r--21 { + right: -21rpx; } + +.r-22 { + right: 22rpx; } + +.r--22 { + right: -22rpx; } + +.r-23 { + right: 23rpx; } + +.r--23 { + right: -23rpx; } + +.r-24 { + right: 24rpx; } + +.r--24 { + right: -24rpx; } + +.r-25 { + right: 25rpx; } + +.r--25 { + right: -25rpx; } + +.r-26 { + right: 26rpx; } + +.r--26 { + right: -26rpx; } + +.r-27 { + right: 27rpx; } + +.r--27 { + right: -27rpx; } + +.r-28 { + right: 28rpx; } + +.r--28 { + right: -28rpx; } + +.r-29 { + right: 29rpx; } + +.r--29 { + right: -29rpx; } + +.r-30 { + right: 30rpx; } + +.r--30 { + right: -30rpx; } + +.r-31 { + right: 31rpx; } + +.r--31 { + right: -31rpx; } + +.r-32 { + right: 32rpx; } + +.r--32 { + right: -32rpx; } + +.r-33 { + right: 33rpx; } + +.r--33 { + right: -33rpx; } + +.r-34 { + right: 34rpx; } + +.r--34 { + right: -34rpx; } + +.r-35 { + right: 35rpx; } + +.r--35 { + right: -35rpx; } + +.r-36 { + right: 36rpx; } + +.r--36 { + right: -36rpx; } + +.r-37 { + right: 37rpx; } + +.r--37 { + right: -37rpx; } + +.r-38 { + right: 38rpx; } + +.r--38 { + right: -38rpx; } + +.r-39 { + right: 39rpx; } + +.r--39 { + right: -39rpx; } + +.r-40 { + right: 40rpx; } + +.r--40 { + right: -40rpx; } + +.r-41 { + right: 41rpx; } + +.r--41 { + right: -41rpx; } + +.r-42 { + right: 42rpx; } + +.r--42 { + right: -42rpx; } + +.r-43 { + right: 43rpx; } + +.r--43 { + right: -43rpx; } + +.r-44 { + right: 44rpx; } + +.r--44 { + right: -44rpx; } + +.r-45 { + right: 45rpx; } + +.r--45 { + right: -45rpx; } + +.r-46 { + right: 46rpx; } + +.r--46 { + right: -46rpx; } + +.r-47 { + right: 47rpx; } + +.r--47 { + right: -47rpx; } + +.r-48 { + right: 48rpx; } + +.r--48 { + right: -48rpx; } + +.r-49 { + right: 49rpx; } + +.r--49 { + right: -49rpx; } + +.r-50 { + right: 50rpx; } + +.r--50 { + right: -50rpx; } + +.r-n1 { + right: 4rpx; } + +.r--n1 { + right: -4rpx; } + +.r-n2 { + right: 8rpx; } + +.r--n2 { + right: -8rpx; } + +.r-n3 { + right: 12rpx; } + +.r--n3 { + right: -12rpx; } + +.r-n4 { + right: 16rpx; } + +.r--n4 { + right: -16rpx; } + +.r-n5 { + right: 20rpx; } + +.r--n5 { + right: -20rpx; } + +.r-n6 { + right: 24rpx; } + +.r--n6 { + right: -24rpx; } + +.r-n7 { + right: 28rpx; } + +.r--n7 { + right: -28rpx; } + +.r-n8 { + right: 32rpx; } + +.r--n8 { + right: -32rpx; } + +.r-n9 { + right: 36rpx; } + +.r--n9 { + right: -36rpx; } + +.r-n10 { + right: 40rpx; } + +.r--n10 { + right: -40rpx; } + +.r-n11 { + right: 44rpx; } + +.r--n11 { + right: -44rpx; } + +.r-n12 { + right: 48rpx; } + +.r--n12 { + right: -48rpx; } + +.r-n13 { + right: 52rpx; } + +.r--n13 { + right: -52rpx; } + +.r-n14 { + right: 56rpx; } + +.r--n14 { + right: -56rpx; } + +.r-n15 { + right: 60rpx; } + +.r--n15 { + right: -60rpx; } + +.r-n16 { + right: 64rpx; } + +.r--n16 { + right: -64rpx; } + +.r-n17 { + right: 68rpx; } + +.r--n17 { + right: -68rpx; } + +.r-n18 { + right: 72rpx; } + +.r--n18 { + right: -72rpx; } + +.r-n19 { + right: 76rpx; } + +.r--n19 { + right: -76rpx; } + +.r-n20 { + right: 80rpx; } + +.r--n20 { + right: -80rpx; } + +.r-n21 { + right: 84rpx; } + +.r--n21 { + right: -84rpx; } + +.r-n22 { + right: 88rpx; } + +.r--n22 { + right: -88rpx; } + +.r-n23 { + right: 92rpx; } + +.r--n23 { + right: -92rpx; } + +.r-n24 { + right: 96rpx; } + +.r--n24 { + right: -96rpx; } + +.r-n25 { + right: 100rpx; } + +.r--n25 { + right: -100rpx; } + +.b-0 { + bottom: 0rpx; } + +.b--0 { + bottom: -0rpx; } + +.b-1 { + bottom: 1rpx; } + +.b--1 { + bottom: -1rpx; } + +.b-2 { + bottom: 2rpx; } + +.b--2 { + bottom: -2rpx; } + +.b-3 { + bottom: 3rpx; } + +.b--3 { + bottom: -3rpx; } + +.b-4 { + bottom: 4rpx; } + +.b--4 { + bottom: -4rpx; } + +.b-5 { + bottom: 5rpx; } + +.b--5 { + bottom: -5rpx; } + +.b-6 { + bottom: 6rpx; } + +.b--6 { + bottom: -6rpx; } + +.b-7 { + bottom: 7rpx; } + +.b--7 { + bottom: -7rpx; } + +.b-8 { + bottom: 8rpx; } + +.b--8 { + bottom: -8rpx; } + +.b-9 { + bottom: 9rpx; } + +.b--9 { + bottom: -9rpx; } + +.b-10 { + bottom: 10rpx; } + +.b--10 { + bottom: -10rpx; } + +.b-11 { + bottom: 11rpx; } + +.b--11 { + bottom: -11rpx; } + +.b-12 { + bottom: 12rpx; } + +.b--12 { + bottom: -12rpx; } + +.b-13 { + bottom: 13rpx; } + +.b--13 { + bottom: -13rpx; } + +.b-14 { + bottom: 14rpx; } + +.b--14 { + bottom: -14rpx; } + +.b-15 { + bottom: 15rpx; } + +.b--15 { + bottom: -15rpx; } + +.b-16 { + bottom: 16rpx; } + +.b--16 { + bottom: -16rpx; } + +.b-17 { + bottom: 17rpx; } + +.b--17 { + bottom: -17rpx; } + +.b-18 { + bottom: 18rpx; } + +.b--18 { + bottom: -18rpx; } + +.b-19 { + bottom: 19rpx; } + +.b--19 { + bottom: -19rpx; } + +.b-20 { + bottom: 20rpx; } + +.b--20 { + bottom: -20rpx; } + +.b-21 { + bottom: 21rpx; } + +.b--21 { + bottom: -21rpx; } + +.b-22 { + bottom: 22rpx; } + +.b--22 { + bottom: -22rpx; } + +.b-23 { + bottom: 23rpx; } + +.b--23 { + bottom: -23rpx; } + +.b-24 { + bottom: 24rpx; } + +.b--24 { + bottom: -24rpx; } + +.b-25 { + bottom: 25rpx; } + +.b--25 { + bottom: -25rpx; } + +.b-26 { + bottom: 26rpx; } + +.b--26 { + bottom: -26rpx; } + +.b-27 { + bottom: 27rpx; } + +.b--27 { + bottom: -27rpx; } + +.b-28 { + bottom: 28rpx; } + +.b--28 { + bottom: -28rpx; } + +.b-29 { + bottom: 29rpx; } + +.b--29 { + bottom: -29rpx; } + +.b-30 { + bottom: 30rpx; } + +.b--30 { + bottom: -30rpx; } + +.b-31 { + bottom: 31rpx; } + +.b--31 { + bottom: -31rpx; } + +.b-32 { + bottom: 32rpx; } + +.b--32 { + bottom: -32rpx; } + +.b-33 { + bottom: 33rpx; } + +.b--33 { + bottom: -33rpx; } + +.b-34 { + bottom: 34rpx; } + +.b--34 { + bottom: -34rpx; } + +.b-35 { + bottom: 35rpx; } + +.b--35 { + bottom: -35rpx; } + +.b-36 { + bottom: 36rpx; } + +.b--36 { + bottom: -36rpx; } + +.b-37 { + bottom: 37rpx; } + +.b--37 { + bottom: -37rpx; } + +.b-38 { + bottom: 38rpx; } + +.b--38 { + bottom: -38rpx; } + +.b-39 { + bottom: 39rpx; } + +.b--39 { + bottom: -39rpx; } + +.b-40 { + bottom: 40rpx; } + +.b--40 { + bottom: -40rpx; } + +.b-41 { + bottom: 41rpx; } + +.b--41 { + bottom: -41rpx; } + +.b-42 { + bottom: 42rpx; } + +.b--42 { + bottom: -42rpx; } + +.b-43 { + bottom: 43rpx; } + +.b--43 { + bottom: -43rpx; } + +.b-44 { + bottom: 44rpx; } + +.b--44 { + bottom: -44rpx; } + +.b-45 { + bottom: 45rpx; } + +.b--45 { + bottom: -45rpx; } + +.b-46 { + bottom: 46rpx; } + +.b--46 { + bottom: -46rpx; } + +.b-47 { + bottom: 47rpx; } + +.b--47 { + bottom: -47rpx; } + +.b-48 { + bottom: 48rpx; } + +.b--48 { + bottom: -48rpx; } + +.b-49 { + bottom: 49rpx; } + +.b--49 { + bottom: -49rpx; } + +.b-50 { + bottom: 50rpx; } + +.b--50 { + bottom: -50rpx; } + +.b-n1 { + bottom: 4rpx; } + +.b--n1 { + bottom: -4rpx; } + +.b-n2 { + bottom: 8rpx; } + +.b--n2 { + bottom: -8rpx; } + +.b-n3 { + bottom: 12rpx; } + +.b--n3 { + bottom: -12rpx; } + +.b-n4 { + bottom: 16rpx; } + +.b--n4 { + bottom: -16rpx; } + +.b-n5 { + bottom: 20rpx; } + +.b--n5 { + bottom: -20rpx; } + +.b-n6 { + bottom: 24rpx; } + +.b--n6 { + bottom: -24rpx; } + +.b-n7 { + bottom: 28rpx; } + +.b--n7 { + bottom: -28rpx; } + +.b-n8 { + bottom: 32rpx; } + +.b--n8 { + bottom: -32rpx; } + +.b-n9 { + bottom: 36rpx; } + +.b--n9 { + bottom: -36rpx; } + +.b-n10 { + bottom: 40rpx; } + +.b--n10 { + bottom: -40rpx; } + +.b-n11 { + bottom: 44rpx; } + +.b--n11 { + bottom: -44rpx; } + +.b-n12 { + bottom: 48rpx; } + +.b--n12 { + bottom: -48rpx; } + +.b-n13 { + bottom: 52rpx; } + +.b--n13 { + bottom: -52rpx; } + +.b-n14 { + bottom: 56rpx; } + +.b--n14 { + bottom: -56rpx; } + +.b-n15 { + bottom: 60rpx; } + +.b--n15 { + bottom: -60rpx; } + +.b-n16 { + bottom: 64rpx; } + +.b--n16 { + bottom: -64rpx; } + +.b-n17 { + bottom: 68rpx; } + +.b--n17 { + bottom: -68rpx; } + +.b-n18 { + bottom: 72rpx; } + +.b--n18 { + bottom: -72rpx; } + +.b-n19 { + bottom: 76rpx; } + +.b--n19 { + bottom: -76rpx; } + +.b-n20 { + bottom: 80rpx; } + +.b--n20 { + bottom: -80rpx; } + +.b-n21 { + bottom: 84rpx; } + +.b--n21 { + bottom: -84rpx; } + +.b-n22 { + bottom: 88rpx; } + +.b--n22 { + bottom: -88rpx; } + +.b-n23 { + bottom: 92rpx; } + +.b--n23 { + bottom: -92rpx; } + +.b-n24 { + bottom: 96rpx; } + +.b--n24 { + bottom: -96rpx; } + +.b-n25 { + bottom: 100rpx; } + +.b--n25 { + bottom: -100rpx; } + +.l-0 { + left: 0rpx; } + +.l--0 { + left: -0rpx; } + +.l-1 { + left: 1rpx; } + +.l--1 { + left: -1rpx; } + +.l-2 { + left: 2rpx; } + +.l--2 { + left: -2rpx; } + +.l-3 { + left: 3rpx; } + +.l--3 { + left: -3rpx; } + +.l-4 { + left: 4rpx; } + +.l--4 { + left: -4rpx; } + +.l-5 { + left: 5rpx; } + +.l--5 { + left: -5rpx; } + +.l-6 { + left: 6rpx; } + +.l--6 { + left: -6rpx; } + +.l-7 { + left: 7rpx; } + +.l--7 { + left: -7rpx; } + +.l-8 { + left: 8rpx; } + +.l--8 { + left: -8rpx; } + +.l-9 { + left: 9rpx; } + +.l--9 { + left: -9rpx; } + +.l-10 { + left: 10rpx; } + +.l--10 { + left: -10rpx; } + +.l-11 { + left: 11rpx; } + +.l--11 { + left: -11rpx; } + +.l-12 { + left: 12rpx; } + +.l--12 { + left: -12rpx; } + +.l-13 { + left: 13rpx; } + +.l--13 { + left: -13rpx; } + +.l-14 { + left: 14rpx; } + +.l--14 { + left: -14rpx; } + +.l-15 { + left: 15rpx; } + +.l--15 { + left: -15rpx; } + +.l-16 { + left: 16rpx; } + +.l--16 { + left: -16rpx; } + +.l-17 { + left: 17rpx; } + +.l--17 { + left: -17rpx; } + +.l-18 { + left: 18rpx; } + +.l--18 { + left: -18rpx; } + +.l-19 { + left: 19rpx; } + +.l--19 { + left: -19rpx; } + +.l-20 { + left: 20rpx; } + +.l--20 { + left: -20rpx; } + +.l-21 { + left: 21rpx; } + +.l--21 { + left: -21rpx; } + +.l-22 { + left: 22rpx; } + +.l--22 { + left: -22rpx; } + +.l-23 { + left: 23rpx; } + +.l--23 { + left: -23rpx; } + +.l-24 { + left: 24rpx; } + +.l--24 { + left: -24rpx; } + +.l-25 { + left: 25rpx; } + +.l--25 { + left: -25rpx; } + +.l-26 { + left: 26rpx; } + +.l--26 { + left: -26rpx; } + +.l-27 { + left: 27rpx; } + +.l--27 { + left: -27rpx; } + +.l-28 { + left: 28rpx; } + +.l--28 { + left: -28rpx; } + +.l-29 { + left: 29rpx; } + +.l--29 { + left: -29rpx; } + +.l-30 { + left: 30rpx; } + +.l--30 { + left: -30rpx; } + +.l-31 { + left: 31rpx; } + +.l--31 { + left: -31rpx; } + +.l-32 { + left: 32rpx; } + +.l--32 { + left: -32rpx; } + +.l-33 { + left: 33rpx; } + +.l--33 { + left: -33rpx; } + +.l-34 { + left: 34rpx; } + +.l--34 { + left: -34rpx; } + +.l-35 { + left: 35rpx; } + +.l--35 { + left: -35rpx; } + +.l-36 { + left: 36rpx; } + +.l--36 { + left: -36rpx; } + +.l-37 { + left: 37rpx; } + +.l--37 { + left: -37rpx; } + +.l-38 { + left: 38rpx; } + +.l--38 { + left: -38rpx; } + +.l-39 { + left: 39rpx; } + +.l--39 { + left: -39rpx; } + +.l-40 { + left: 40rpx; } + +.l--40 { + left: -40rpx; } + +.l-41 { + left: 41rpx; } + +.l--41 { + left: -41rpx; } + +.l-42 { + left: 42rpx; } + +.l--42 { + left: -42rpx; } + +.l-43 { + left: 43rpx; } + +.l--43 { + left: -43rpx; } + +.l-44 { + left: 44rpx; } + +.l--44 { + left: -44rpx; } + +.l-45 { + left: 45rpx; } + +.l--45 { + left: -45rpx; } + +.l-46 { + left: 46rpx; } + +.l--46 { + left: -46rpx; } + +.l-47 { + left: 47rpx; } + +.l--47 { + left: -47rpx; } + +.l-48 { + left: 48rpx; } + +.l--48 { + left: -48rpx; } + +.l-49 { + left: 49rpx; } + +.l--49 { + left: -49rpx; } + +.l-50 { + left: 50rpx; } + +.l--50 { + left: -50rpx; } + +.l-n1 { + left: 4rpx; } + +.l--n1 { + left: -4rpx; } + +.l-n2 { + left: 8rpx; } + +.l--n2 { + left: -8rpx; } + +.l-n3 { + left: 12rpx; } + +.l--n3 { + left: -12rpx; } + +.l-n4 { + left: 16rpx; } + +.l--n4 { + left: -16rpx; } + +.l-n5 { + left: 20rpx; } + +.l--n5 { + left: -20rpx; } + +.l-n6 { + left: 24rpx; } + +.l--n6 { + left: -24rpx; } + +.l-n7 { + left: 28rpx; } + +.l--n7 { + left: -28rpx; } + +.l-n8 { + left: 32rpx; } + +.l--n8 { + left: -32rpx; } + +.l-n9 { + left: 36rpx; } + +.l--n9 { + left: -36rpx; } + +.l-n10 { + left: 40rpx; } + +.l--n10 { + left: -40rpx; } + +.l-n11 { + left: 44rpx; } + +.l--n11 { + left: -44rpx; } + +.l-n12 { + left: 48rpx; } + +.l--n12 { + left: -48rpx; } + +.l-n13 { + left: 52rpx; } + +.l--n13 { + left: -52rpx; } + +.l-n14 { + left: 56rpx; } + +.l--n14 { + left: -56rpx; } + +.l-n15 { + left: 60rpx; } + +.l--n15 { + left: -60rpx; } + +.l-n16 { + left: 64rpx; } + +.l--n16 { + left: -64rpx; } + +.l-n17 { + left: 68rpx; } + +.l--n17 { + left: -68rpx; } + +.l-n18 { + left: 72rpx; } + +.l--n18 { + left: -72rpx; } + +.l-n19 { + left: 76rpx; } + +.l--n19 { + left: -76rpx; } + +.l-n20 { + left: 80rpx; } + +.l--n20 { + left: -80rpx; } + +.l-n21 { + left: 84rpx; } + +.l--n21 { + left: -84rpx; } + +.l-n22 { + left: 88rpx; } + +.l--n22 { + left: -88rpx; } + +.l-n23 { + left: 92rpx; } + +.l--n23 { + left: -92rpx; } + +.l-n24 { + left: 96rpx; } + +.l--n24 { + left: -96rpx; } + +.l-n25 { + left: 100rpx; } + +.l--n25 { + left: -100rpx; } + +.flex { + display: flex; } + +.flex-col { + flex-direction: column; } + +.flex-wrap { + flex-flow: row wrap; } + +/* #ifndef APP-PLUS-NVUE */ +.flex-shrink { + flex-shrink: 0; } + +/* #endif */ +.flex-row { + flex-direction: row; } + +.flex-reverse { + flex-direction: row-reverse; } + +.flex-row-top-start { + justify-content: flex-start; + align-items: flex-start; + display: flex; } + +.flex-row-top-center { + justify-content: center; + align-items: flex-start; + display: flex; } + +.flex-row-top-end { + justify-content: flex-end; + align-items: flex-start; + display: flex; } + +.flex-row-center-start { + justify-content: flex-start; + align-items: center; + display: flex; } + +.flex-row-center-center { + justify-content: center; + align-items: center; + display: flex; } + +.flex-row-center-end { + justify-content: flex-end; + align-items: center; + display: flex; } + +.flex-row-bottom-start { + justify-content: flex-start; + align-items: flex-end; + display: flex; } + +.flex-row-bottom-center { + justify-content: center; + align-items: flex-end; + display: flex; } + +.flex-row-bottom-end { + justify-content: flex-end; + align-items: flex-end; + display: flex; } + +.flex-row-center-between { + justify-content: space-between; + align-items: center; + display: flex; } + +.flex-col-top-start { + justify-content: flex-start; + align-items: flex-start; + display: flex; } + +.flex-col-top-center { + justify-content: flex-start; + align-items: center; + display: flex; } + +.flex-col-top-end { + justify-content: flex-start; + align-items: flex-end; + display: flex; } + +.flex-col-center-start { + justify-content: center; + align-items: flex-start; + display: flex; } + +.flex-col-center-center { + justify-content: center; + align-items: center; + display: flex; } + +.flex-col-center-end { + justify-content: center; + align-items: flex-end; + display: flex; } + +.flex-col-bottom-start { + justify-content: flex-end; + align-items: flex-start; + display: flex; } + +.flex-col-bottom-center { + justify-content: flex-end; + align-items: center; + display: flex; } + +.flex-col-bottom-end { + justify-content: flex-end; + align-items: flex-end; + display: flex; } + +.flex-start { + justify-content: flex-start; + align-items: center; + display: flex; } + +.flex-end { + justify-content: flex-end; + align-items: center; + display: flex; } + +.flex-center { + justify-content: center; + align-items: center; + display: flex; } + +.flex-between { + justify-content: space-between; } + +.flex-col-full { + flex-direction: column; + align-items: stretch; } + +.flex-around { + justify-content: space-around; } + +.flex-0 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 0; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 0; + /* #endif */ } + +.flex-1 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 1; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 1; + /* #endif */ } + +.flex-2 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 2; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 2; + /* #endif */ } + +.flex-3 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 3; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 3; + /* #endif */ } + +.flex-4 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 4; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 4; + /* #endif */ } + +.flex-5 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 5; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 5; + /* #endif */ } + +.flex-6 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 6; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 6; + /* #endif */ } + +.flex-7 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 7; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 7; + /* #endif */ } + +.flex-8 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 8; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 8; + /* #endif */ } + +.flex-9 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 9; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 9; + /* #endif */ } + +.flex-10 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 10; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 10; + /* #endif */ } + +.flex-11 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 11; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 11; + /* #endif */ } + +.flex-12 { + /* #ifndef APP-PLUS-NVUE */ + flex-grow: 12; + /* #endif */ + /* #ifdef APP-PLUS-NVUE */ + flex: 12; + /* #endif */ } + +.text-red { + color: #f44336; } + +.red { + background-color: #f44336; } + +.text-pink { + color: #e91e63; } + +.pink { + background-color: #e91e63; } + +.text-purple { + color: #9c27b0; } + +.purple { + background-color: #9c27b0; } + +.text-deep-purple { + color: #673ab7; } + +.deep-purple { + background-color: #673ab7; } + +.text-indigo { + color: #3f51b5; } + +.indigo { + background-color: #3f51b5; } + +.text-blue { + color: #2196f3; } + +.blue { + background-color: #2196f3; } + +.text-light-blue { + color: #03a9f4; } + +.light-blue { + background-color: #03a9f4; } + +.text-cyan { + color: #00bcd4; } + +.cyan { + background-color: #00bcd4; } + +.text-teal { + color: #009688; } + +.teal { + background-color: #009688; } + +.text-green { + color: #4caf50; } + +.green { + background-color: #4caf50; } + +.text-light-green { + color: #8bc34a; } + +.light-green { + background-color: #8bc34a; } + +.text-lime { + color: #cddc39; } + +.lime { + background-color: #cddc39; } + +.text-yellow { + color: #ffeb3b; } + +.yellow { + background-color: #ffeb3b; } + +.text-amber { + color: #ffc107; } + +.amber { + background-color: #ffc107; } + +.text-orange { + color: #ff9800; } + +.orange { + background-color: #ff9800; } + +.text-deep-orange { + color: #ff5722; } + +.deep-orange { + background-color: #ff5722; } + +.text-brown { + color: #795548; } + +.brown { + background-color: #795548; } + +.text-blue-grey { + color: #607d8b; } + +.blue-grey { + background-color: #607d8b; } + +.text-grey { + color: #9e9e9e; } + +.grey { + background-color: #9e9e9e; } + +.text-black { + color: #000000; } + +.black { + background-color: #000000; } + +.text-white { + color: #ffffff; } + +.white { + background-color: #ffffff; } + +.text-lighten-5 { + color: #fafafa; } + +.lighten-5 { + background-color: #fafafa; } + +.text-lighten-4 { + color: #f5f5f5; } + +.lighten-4 { + background-color: #f5f5f5; } + +.text-lighten-3 { + color: #eeeeee; } + +.lighten-3 { + background-color: #eeeeee; } + +.text-lighten-2 { + color: #e0e0e0; } + +.lighten-2 { + background-color: #e0e0e0; } + +.text-lighten-1 { + color: #bdbdbd; } + +.lighten-1 { + background-color: #bdbdbd; } + +.text-darken-1 { + color: #757575; } + +.darken-1 { + background-color: #757575; } + +.text-darken-2 { + color: #616161; } + +.darken-2 { + background-color: #616161; } + +.text-darken-3 { + color: #424242; } + +.darken-3 { + background-color: #424242; } + +.text-darken-4 { + color: #212121; } + +.darken-4 { + background-color: #212121; } + +.text-darken-5 { + color: #131313; } + +.darken-5 { + background-color: #131313; } + +.text-darken-6 { + color: #0a0a0a; } + +.darken-6 { + background-color: #0a0a0a; } diff --git a/uni_modules/UniDevTools/src/tmui/scss/nvue.css.map b/uni_modules/UniDevTools/src/tmui/scss/nvue.css.map new file mode 100644 index 0000000..ff84b27 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/nvue.css.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "sources": [ + "nvue.scss", + "nvue.css" + ], + "names": [], + "mappings": "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AAA;AC6TJ;;AD/TE;EAEE,6BAAA;ACiUJ;;ADnUE;EAEE,6BAAA;ACqUJ;;ADvUE;EAEE,6BAAA;ACyUJ;;AD3UE;EAEE,6BAAA;AC6UJ;;AD/UE;EAEE,6BAAA;ACiVJ;;ADnVE;EAEE,6BAAA;ACqVJ;;ADvVE;EAEE,6BAAA;ACyVJ;;AD3VE;EAEE,8BAAA;AC6VJ;;AD/VE;EAKE,6BAAA;AC8VJ;;ADnWE;EAKE,6BAAA;ACkWJ;;ADvWE;EAKE,6BAAA;ACsWJ;;AD3WE;EAKE,8BAAA;AC0WJ;;AD/WE;EAKE,8BAAA;AC8WJ;;ADnXE;EAKE,8BAAA;ACkXJ;;ADvXE;EAKE,8BAAA;ACsXJ;;AD3XE;EAKE,8BAAA;AC0XJ;;AD/XE;EAKE,8BAAA;AC8XJ;;ADnYE;EAKE,8BAAA;ACkYJ;;ADvYE;EAKE,8BAAA;ACsYJ;;AD3YE;EAKE,8BAAA;AC0YJ;;AD/YE;EAKE,8BAAA;AC8YJ;;ADnZE;EAKE,8BAAA;ACkZJ;;ADvZE;EAKE,8BAAA;ACsZJ;;AD3ZE;EAKE,8BAAA;AC0ZJ;;AD/ZE;EAKE,8BAAA;AC8ZJ;;ADnaE;EAKE,8BAAA;ACkaJ;;ADvaE;EAKE,8BAAA;ACsaJ;;AD3aE;EAKE,8BAAA;AC0aJ;;AD/aE;EAKE,8BAAA;AC8aJ;;ADnbE;EAKE,8BAAA;ACkbJ;;ADvbE;EAKE,8BAAA;ACsbJ;;AD3bE;EAKE,8BAAA;AC0bJ;;AD/bE;EAKE,8BAAA;AC8bJ;;ADncE;EAKE,+BAAA;ACkcJ;;ADvcE;EAQE,+BAAA;ACmcJ;;AD3cE;EAQE,+BAAA;ACucJ;;AD/cE;EAQE,+BAAA;AC2cJ;;ADndE;EAQE,gCAAA;AC+cJ;;ADvdE;EAQE,gCAAA;ACmdJ;;AD3dE;EAQE,gCAAA;ACudJ;;AD/dE;EAQE,gCAAA;AC2dJ;;ADneE;EAQE,gCAAA;AC+dJ;;ADveE;EAQE,gCAAA;ACmeJ;;AD3eE;EAQE,gCAAA;ACueJ;;AD/eE;EAQE,gCAAA;AC2eJ;;ADnfE;EAQE,gCAAA;AC+eJ;;ADvfE;EAQE,gCAAA;ACmfJ;;AD3fE;EAQE,gCAAA;ACufJ;;AD/fE;EAQE,gCAAA;AC2fJ;;ADngBE;EAQE,gCAAA;AC+fJ;;ADvgBE;EAQE,gCAAA;ACmgBJ;;AD3gBE;EAQE,gCAAA;ACugBJ;;AD/gBE;EAQE,gCAAA;AC2gBJ;;ADnhBE;EAQE,gCAAA;AC+gBJ;;ADvhBE;EAQE,gCAAA;ACmhBJ;;AD3hBE;EAQE,gCAAA;ACuhBJ;;AD/hBE;EAQE,gCAAA;AC2hBJ;;ADniBE;EAQE,gCAAA;AC+hBJ;;ADviBE;EAQE,gCAAA;ACmiBJ;;AD3iBE;EAQE,iCAAA;ACuiBJ;;AD/iBE;EAWE,gCAAA;ACwiBJ;;ADnjBE;EAWE,gCAAA;AC4iBJ;;ADvjBE;EAWE,gCAAA;ACgjBJ;;AD3jBE;EAWE,iCAAA;ACojBJ;;AD/jBE;EAWE,iCAAA;ACwjBJ;;ADnkBE;EAWE,iCAAA;AC4jBJ;;ADvkBE;EAWE,iCAAA;ACgkBJ;;AD3kBE;EAWE,iCAAA;ACokBJ;;AD/kBE;EAWE,iCAAA;ACwkBJ;;ADnlBE;EAWE,iCAAA;AC4kBJ;;ADvlBE;EAWE,iCAAA;ACglBJ;;AD3lBE;EAWE,iCAAA;AColBJ;;AD/lBE;EAWE,iCAAA;ACwlBJ;;ADnmBE;EAWE,iCAAA;AC4lBJ;;ADvmBE;EAWE,iCAAA;ACgmBJ;;AD3mBE;EAWE,iCAAA;AComBJ;;AD/mBE;EAWE,iCAAA;ACwmBJ;;ADnnBE;EAWE,iCAAA;AC4mBJ;;ADvnBE;EAWE,iCAAA;ACgnBJ;;AD3nBE;EAWE,iCAAA;AConBJ;;AD/nBE;EAWE,iCAAA;ACwnBJ;;ADnoBE;EAWE,iCAAA;AC4nBJ;;ADvoBE;EAWE,iCAAA;ACgoBJ;;AD3oBE;EAWE,iCAAA;ACooBJ;;AD/oBE;EAWE,iCAAA;ACwoBJ;;ADnpBE;EAWE,kCAAA;AC4oBJ;;ADvpBE;EA8BE,mBAAA;AC6nBJ;;AD3pBE;EA8BE,mBAAA;ACioBJ;;AD/pBE;EA8BE,mBAAA;ACqoBJ;;ADnqBE;EA8BE,oBAAA;ACyoBJ;;ADvqBE;EA8BE,oBAAA;AC6oBJ;;AD3qBE;EA8BE,oBAAA;ACipBJ;;AD/qBE;EA8BE,oBAAA;ACqpBJ;;ADnrBE;EA8BE,oBAAA;ACypBJ;;ADvrBE;EA8BE,oBAAA;AC6pBJ;;AD3rBE;EA8BE,oBAAA;ACiqBJ;;AD/rBE;EA8BE,oBAAA;ACqqBJ;;ADnsBE;EA8BE,oBAAA;ACyqBJ;;ADvsBE;EA8BE,oBAAA;AC6qBJ;;AD3sBE;EA8BE,oBAAA;ACirBJ;;AD/sBE;EA8BE,oBAAA;ACqrBJ;;ADntBE;EA8BE,oBAAA;ACyrBJ;;ADvtBE;EA8BE,oBAAA;AC6rBJ;;AD3tBE;EA8BE,oBAAA;ACisBJ;;AD/tBE;EA8BE,oBAAA;ACqsBJ;;ADnuBE;EA8BE,oBAAA;ACysBJ;;ADvuBE;EA8BE,oBAAA;AC6sBJ;;AD3uBE;EA8BE,oBAAA;ACitBJ;;AD/uBE;EA8BE,oBAAA;ACqtBJ;;ADnvBE;EA8BE,oBAAA;ACytBJ;;ADvvBE;EA8BE,oBAAA;AC6tBJ;;AD3vBE;EA8BE,qBAAA;ACiuBJ;;AD/vBE;EAcE,4BAAA;EACA,6BAAA;ACqvBJ;;ADpwBE;EAcE,4BAAA;EACA,6BAAA;AC0vBJ;;ADzwBE;EAcE,4BAAA;EACA,6BAAA;AC+vBJ;;AD9wBE;EAcE,6BAAA;EACA,8BAAA;ACowBJ;;ADnxBE;EAcE,6BAAA;EACA,8BAAA;ACywBJ;;ADxxBE;EAcE,6BAAA;EACA,8BAAA;AC8wBJ;;AD7xBE;EAcE,6BAAA;EACA,8BAAA;ACmxBJ;;ADlyBE;EAcE,6BAAA;EACA,8BAAA;ACwxBJ;;ADvyBE;EAcE,6BAAA;EACA,8BAAA;AC6xBJ;;AD5yBE;EAcE,6BAAA;EACA,8BAAA;ACkyBJ;;ADjzBE;EAcE,6BAAA;EACA,8BAAA;ACuyBJ;;ADtzBE;EAcE,6BAAA;EACA,8BAAA;AC4yBJ;;AD3zBE;EAcE,6BAAA;EACA,8BAAA;ACizBJ;;ADh0BE;EAcE,6BAAA;EACA,8BAAA;ACszBJ;;ADr0BE;EAcE,6BAAA;EACA,8BAAA;AC2zBJ;;AD10BE;EAcE,6BAAA;EACA,8BAAA;ACg0BJ;;AD/0BE;EAcE,6BAAA;EACA,8BAAA;ACq0BJ;;ADp1BE;EAcE,6BAAA;EACA,8BAAA;AC00BJ;;ADz1BE;EAcE,6BAAA;EACA,8BAAA;AC+0BJ;;AD91BE;EAcE,6BAAA;EACA,8BAAA;ACo1BJ;;ADn2BE;EAcE,6BAAA;EACA,8BAAA;ACy1BJ;;ADx2BE;EAcE,6BAAA;EACA,8BAAA;AC81BJ;;AD72BE;EAcE,6BAAA;EACA,8BAAA;ACm2BJ;;ADl3BE;EAcE,6BAAA;EACA,8BAAA;ACw2BJ;;ADv3BE;EAcE,6BAAA;EACA,8BAAA;AC62BJ;;AD53BE;EAcE,8BAAA;EACA,+BAAA;ACk3BJ;;ADj4BE;EAkBE,+BAAA;EACA,gCAAA;ACm3BJ;;ADt4BE;EAkBE,+BAAA;EACA,gCAAA;ACw3BJ;;AD34BE;EAkBE,+BAAA;EACA,gCAAA;AC63BJ;;ADh5BE;EAkBE,gCAAA;EACA,iCAAA;ACk4BJ;;ADr5BE;EAkBE,gCAAA;EACA,iCAAA;ACu4BJ;;AD15BE;EAkBE,gCAAA;EACA,iCAAA;AC44BJ;;AD/5BE;EAkBE,gCAAA;EACA,iCAAA;ACi5BJ;;ADp6BE;EAkBE,gCAAA;EACA,iCAAA;ACs5BJ;;ADz6BE;EAkBE,gCAAA;EACA,iCAAA;AC25BJ;;AD96BE;EAkBE,gCAAA;EACA,iCAAA;ACg6BJ;;ADn7BE;EAkBE,gCAAA;EACA,iCAAA;ACq6BJ;;ADx7BE;EAkBE,gCAAA;EACA,iCAAA;AC06BJ;;AD77BE;EAkBE,gCAAA;EACA,iCAAA;AC+6BJ;;ADl8BE;EAkBE,gCAAA;EACA,iCAAA;ACo7BJ;;ADv8BE;EAkBE,gCAAA;EACA,iCAAA;ACy7BJ;;AD58BE;EAkBE,gCAAA;EACA,iCAAA;AC87BJ;;ADj9BE;EAkBE,gCAAA;EACA,iCAAA;ACm8BJ;;ADt9BE;EAkBE,gCAAA;EACA,iCAAA;ACw8BJ;;AD39BE;EAkBE,gCAAA;EACA,iCAAA;AC68BJ;;ADh+BE;EAkBE,gCAAA;EACA,iCAAA;ACk9BJ;;ADr+BE;EAkBE,gCAAA;EACA,iCAAA;ACu9BJ;;AD1+BE;EAkBE,gCAAA;EACA,iCAAA;AC49BJ;;AD/+BE;EAkBE,gCAAA;EACA,iCAAA;ACi+BJ;;ADp/BE;EAkBE,gCAAA;EACA,iCAAA;ACs+BJ;;ADz/BE;EAkBE,gCAAA;EACA,iCAAA;AC2+BJ;;AD9/BE;EAkBE,iCAAA;EACA,kCAAA;ACg/BJ;;ADngCE;EAsBE,4BAAA;EACA,+BAAA;ACi/BJ;;ADxgCE;EAsBE,4BAAA;EACA,+BAAA;ACs/BJ;;AD7gCE;EAsBE,4BAAA;EACA,+BAAA;AC2/BJ;;ADlhCE;EAsBE,6BAAA;EACA,gCAAA;ACggCJ;;ADvhCE;EAsBE,6BAAA;EACA,gCAAA;ACqgCJ;;AD5hCE;EAsBE,6BAAA;EACA,gCAAA;AC0gCJ;;ADjiCE;EAsBE,6BAAA;EACA,gCAAA;AC+gCJ;;ADtiCE;EAsBE,6BAAA;EACA,gCAAA;ACohCJ;;AD3iCE;EAsBE,6BAAA;EACA,gCAAA;ACyhCJ;;ADhjCE;EAsBE,6BAAA;EACA,gCAAA;AC8hCJ;;ADrjCE;EAsBE,6BAAA;EACA,gCAAA;ACmiCJ;;AD1jCE;EAsBE,6BAAA;EACA,gCAAA;ACwiCJ;;AD/jCE;EAsBE,6BAAA;EACA,gCAAA;AC6iCJ;;ADpkCE;EAsBE,6BAAA;EACA,gCAAA;ACkjCJ;;ADzkCE;EAsBE,6BAAA;EACA,gCAAA;ACujCJ;;AD9kCE;EAsBE,6BAAA;EACA,gCAAA;AC4jCJ;;ADnlCE;EAsBE,6BAAA;EACA,gCAAA;ACikCJ;;ADxlCE;EAsBE,6BAAA;EACA,gCAAA;ACskCJ;;AD7lCE;EAsBE,6BAAA;EACA,gCAAA;AC2kCJ;;ADlmCE;EAsBE,6BAAA;EACA,gCAAA;ACglCJ;;ADvmCE;EAsBE,6BAAA;EACA,gCAAA;ACqlCJ;;AD5mCE;EAsBE,6BAAA;EACA,gCAAA;AC0lCJ;;ADjnCE;EAsBE,6BAAA;EACA,gCAAA;AC+lCJ;;ADtnCE;EAsBE,6BAAA;EACA,gCAAA;AComCJ;;AD3nCE;EAsBE,6BAAA;EACA,gCAAA;ACymCJ;;ADhoCE;EAsBE,8BAAA;EACA,iCAAA;AC8mCJ;;ADroCE;EA0BE,6BAAA;EACA,gCAAA;AC+mCJ;;AD1oCE;EA0BE,6BAAA;EACA,gCAAA;AConCJ;;AD/oCE;EA0BE,6BAAA;EACA,gCAAA;ACynCJ;;ADppCE;EA0BE,8BAAA;EACA,iCAAA;AC8nCJ;;ADzpCE;EA0BE,8BAAA;EACA,iCAAA;ACmoCJ;;AD9pCE;EA0BE,8BAAA;EACA,iCAAA;ACwoCJ;;ADnqCE;EA0BE,8BAAA;EACA,iCAAA;AC6oCJ;;ADxqCE;EA0BE,8BAAA;EACA,iCAAA;ACkpCJ;;AD7qCE;EA0BE,8BAAA;EACA,iCAAA;ACupCJ;;ADlrCE;EA0BE,8BAAA;EACA,iCAAA;AC4pCJ;;ADvrCE;EA0BE,8BAAA;EACA,iCAAA;ACiqCJ;;AD5rCE;EA0BE,8BAAA;EACA,iCAAA;ACsqCJ;;ADjsCE;EA0BE,8BAAA;EACA,iCAAA;AC2qCJ;;ADtsCE;EA0BE,8BAAA;EACA,iCAAA;ACgrCJ;;AD3sCE;EA0BE,8BAAA;EACA,iCAAA;ACqrCJ;;ADhtCE;EA0BE,8BAAA;EACA,iCAAA;AC0rCJ;;ADrtCE;EA0BE,8BAAA;EACA,iCAAA;AC+rCJ;;AD1tCE;EA0BE,8BAAA;EACA,iCAAA;ACosCJ;;AD/tCE;EA0BE,8BAAA;EACA,iCAAA;ACysCJ;;ADpuCE;EA0BE,8BAAA;EACA,iCAAA;AC8sCJ;;ADzuCE;EA0BE,8BAAA;EACA,iCAAA;ACmtCJ;;AD9uCE;EA0BE,8BAAA;EACA,iCAAA;ACwtCJ;;ADnvCE;EA0BE,8BAAA;EACA,iCAAA;AC6tCJ;;ADxvCE;EA0BE,8BAAA;EACA,iCAAA;ACkuCJ;;AD7vCE;EA0BE,8BAAA;EACA,iCAAA;ACuuCJ;;ADlwCE;EA0BE,+BAAA;EACA,kCAAA;AC4uCJ;;ADluCC;EACC,mBAAA;ACquCF;;ADtuCC;EACC,mBAAA;ACyuCF;;AD1uCC;EACC,mBAAA;AC6uCF;;AD9uCC;EACC,oBAAA;ACivCF;;ADlvCC;EACC,oBAAA;ACqvCF;;ADtvCC;EACC,oBAAA;ACyvCF;;AD1vCC;EACC,oBAAA;AC6vCF;;AD9vCC;EACC,oBAAA;ACiwCF;;ADlwCC;EACC,oBAAA;ACqwCF;;ADtwCC;EACC,oBAAA;ACywCF;;AD1wCC;EACC,oBAAA;AC6wCF;;AD9wCC;EACC,oBAAA;ACixCF;;ADlxCC;EACC,oBAAA;ACqxCF;;ADtxCC;EACC,oBAAA;ACyxCF;;AD1xCC;EACC,oBAAA;AC6xCF;;AD9xCC;EACC,oBAAA;ACiyCF;;ADlyCC;EACC,oBAAA;ACqyCF;;ADtyCC;EACC,oBAAA;ACyyCF;;AD1yCC;EACC,oBAAA;AC6yCF;;AD9yCC;EACC,oBAAA;ACizCF;;ADlzCC;EACC,oBAAA;ACqzCF;;ADtzCC;EACC,oBAAA;ACyzCF;;AD1zCC;EACC,oBAAA;AC6zCF;;AD9zCC;EACC,oBAAA;ACi0CF;;ADl0CC;EACC,oBAAA;ACq0CF;;ADt0CC;EACC,qBAAA;ACy0CF;;AD10CC;EACC,qBAAA;AC60CF;;ADz0CA;EACC,kBAAA;AC40CD;;ADx0CC;EAKE,UAAA;ACu0CH;;AD50CC;EAEE,YAAA;AC80CH;;ADh1CC;EAEE,YAAA;ACk1CH;;ADp1CC;EAEE,YAAA;ACs1CH;;ADx1CC;EAEE,YAAA;AC01CH;;AD51CC;EAEE,YAAA;AC81CH;;ADh2CC;EAEE,YAAA;ACk2CH;;ADp2CC;EAEE,YAAA;ACs2CH;;ADx2CC;EAEE,YAAA;AC02CH;;AD52CC;EAEE,YAAA;AC82CH;;ADh3CC;EAQE,UAAA;AC42CH;;ADp2CE;EACC,0BAAA;ACu2CH;;ADr2CE;EACC,0BAAA;ACw2CH;;ADt2CE;EACC,0BAAA;ACy2CH;;ADv2CE;EACC,0BAAA;AC02CH;;ADt2CE;EACC,yBAAA;ACy2CH;;ADv2CE;EACC,yBAAA;AC02CH;;AD92CE;EACC,yBAAA;ACi3CH;;AD/2CE;EACC,yBAAA;ACk3CH;;ADt3CE;EACC,yBAAA;ACy3CH;;ADv3CE;EACC,yBAAA;AC03CH;;AD93CE;EACC,yBAAA;ACi4CH;;AD/3CE;EACC,yBAAA;ACk4CH;;ADt4CE;EACC,0BAAA;ACy4CH;;ADv4CE;EACC,0BAAA;AC04CH;;ADn4CE;EAKE,kCAAA;ACk4CJ;;AD/3CE;EAKE,+BAAA;AC83CJ;;AD34CE;EAKE,kCAAA;AC04CJ;;ADv4CE;EAKE,+BAAA;ACs4CJ;;ADn5CE;EAKE,kCAAA;ACk5CJ;;AD/4CE;EAKE,+BAAA;AC84CJ;;AD35CE;EAKE,kCAAA;AC05CJ;;ADv5CE;EAKE,+BAAA;ACs5CJ;;ADn6CE;EAKE,mCAAA;ACk6CJ;;AD/5CE;EAKE,gCAAA;AC85CJ;;AD36CE;EAKE,mCAAA;AC06CJ;;ADv6CE;EAKE,gCAAA;ACs6CJ;;ADn7CE;EAKE,mCAAA;ACk7CJ;;AD/6CE;EAKE,gCAAA;AC86CJ;;AD37CE;EAKE,mCAAA;AC07CJ;;ADv7CE;EAKE,gCAAA;ACs7CJ;;ADn8CE;EAKE,mCAAA;ACk8CJ;;AD/7CE;EAKE,gCAAA;AC87CJ;;AD38CE;EAKE,oCAAA;AC08CJ;;ADv8CE;EAKE,iCAAA;ACs8CJ;;ADn9CE;EAKE,iCAAA;ACk9CJ;;AD/8CE;EAKE,8BAAA;AC88CJ;;AD39CE;EAKE,iCAAA;AC09CJ;;ADv9CE;EAKE,8BAAA;ACs9CJ;;ADn+CE;EAKE,iCAAA;ACk+CJ;;AD/9CE;EAKE,8BAAA;AC89CJ;;AD3+CE;EAKE,iCAAA;AC0+CJ;;ADv+CE;EAKE,8BAAA;ACs+CJ;;ADn/CE;EAKE,kCAAA;ACk/CJ;;AD/+CE;EAKE,+BAAA;AC8+CJ;;AD3/CE;EAKE,oCAAA;AC0/CJ;;ADv/CE;EAKE,iCAAA;ACs/CJ;;ADngDE;EAKE,oCAAA;ACkgDJ;;AD//CE;EAKE,iCAAA;AC8/CJ;;AD3gDE;EAKE,oCAAA;AC0gDJ;;ADvgDE;EAKE,iCAAA;ACsgDJ;;ADnhDE;EAKE,oCAAA;ACkhDJ;;AD/gDE;EAKE,iCAAA;AC8gDJ;;AD3hDE;EAKE,qCAAA;AC0hDJ;;ADvhDE;EAKE,kCAAA;ACshDJ;;ADniDE;EAEE,6BAAA;ACqiDJ;;AD/hDE;EAEE,0BAAA;ACiiDJ;;AD3iDE;EAEE,6BAAA;AC6iDJ;;ADviDE;EAEE,0BAAA;ACyiDJ;;ADnjDE;EAEE,6BAAA;ACqjDJ;;AD/iDE;EAEE,0BAAA;ACijDJ;;AD3jDE;EAEE,6BAAA;AC6jDJ;;ADvjDE;EAEE,0BAAA;ACyjDJ;;ADnkDE;EAEE,8BAAA;ACqkDJ;;AD/jDE;EAEE,2BAAA;ACikDJ;;ADpjDG;EACC,aAAA;ACujDJ;;ADxjDG;EACC,aAAA;AC2jDJ;;AD5jDG;EACC,aAAA;AC+jDJ;;ADhkDG;EACC,aAAA;ACmkDJ;;ADpkDG;EACC,aAAA;ACukDJ;;ADxkDG;EACC,aAAA;AC2kDJ;;AD5kDG;EACC,aAAA;AC+kDJ;;ADhlDG;EACC,aAAA;ACmlDJ;;ADplDG;EACC,aAAA;ACulDJ;;ADxlDG;EACC,aAAA;AC2lDJ;;AD5lDG;EACC,cAAA;AC+lDJ;;ADhmDG;EACC,cAAA;ACmmDJ;;ADpmDG;EACC,cAAA;ACumDJ;;ADxmDG;EACC,cAAA;AC2mDJ;;AD5mDG;EACC,cAAA;AC+mDJ;;ADhnDG;EACC,cAAA;ACmnDJ;;ADpnDG;EACC,cAAA;ACunDJ;;ADxnDG;EACC,cAAA;AC2nDJ;;AD5nDG;EACC,cAAA;AC+nDJ;;ADhoDG;EACC,cAAA;ACmoDJ;;ADpoDG;EACC,cAAA;ACuoDJ;;ADxoDG;EACC,cAAA;AC2oDJ;;AD5oDG;EACC,cAAA;AC+oDJ;;ADhpDG;EACC,cAAA;ACmpDJ;;ADppDG;EACC,cAAA;ACupDJ;;ADxpDG;EACC,cAAA;AC2pDJ;;AD5pDG;EACC,cAAA;AC+pDJ;;ADhqDG;EACC,cAAA;ACmqDJ;;ADpqDG;EACC,cAAA;ACuqDJ;;ADxqDG;EACC,cAAA;AC2qDJ;;AD5qDG;EACC,cAAA;AC+qDJ;;ADhrDG;EACC,cAAA;ACmrDJ;;ADprDG;EACC,cAAA;ACurDJ;;ADxrDG;EACC,cAAA;AC2rDJ;;AD5rDG;EACC,cAAA;AC+rDJ;;ADhsDG;EACC,cAAA;ACmsDJ;;ADpsDG;EACC,cAAA;ACusDJ;;ADxsDG;EACC,cAAA;AC2sDJ;;AD5sDG;EACC,cAAA;AC+sDJ;;ADhtDG;EACC,cAAA;ACmtDJ;;ADptDG;EACC,cAAA;ACutDJ;;ADxtDG;EACC,cAAA;AC2tDJ;;AD5tDG;EACC,cAAA;AC+tDJ;;ADhuDG;EACC,cAAA;ACmuDJ;;ADpuDG;EACC,cAAA;ACuuDJ;;ADxuDG;EACC,cAAA;AC2uDJ;;AD5uDG;EACC,cAAA;AC+uDJ;;ADhvDG;EACC,cAAA;ACmvDJ;;ADpvDG;EACC,cAAA;ACuvDJ;;ADxvDG;EACC,cAAA;AC2vDJ;;AD5vDG;EACC,cAAA;AC+vDJ;;AD7uDG;EACC,aAAA;ACgvDJ;;ADjvDG;EACC,aAAA;ACovDJ;;ADrvDG;EACC,cAAA;ACwvDJ;;ADzvDG;EACC,cAAA;AC4vDJ;;AD7vDG;EACC,cAAA;ACgwDJ;;ADjwDG;EACC,cAAA;ACowDJ;;ADrwDG;EACC,cAAA;ACwwDJ;;ADzwDG;EACC,cAAA;AC4wDJ;;AD7wDG;EACC,cAAA;ACgxDJ;;ADjxDG;EACC,cAAA;ACoxDJ;;ADrxDG;EACC,cAAA;ACwxDJ;;ADzxDG;EACC,cAAA;AC4xDJ;;AD7xDG;EACC,cAAA;ACgyDJ;;ADjyDG;EACC,cAAA;ACoyDJ;;ADryDG;EACC,cAAA;ACwyDJ;;ADzyDG;EACC,cAAA;AC4yDJ;;AD7yDG;EACC,cAAA;ACgzDJ;;ADjzDG;EACC,cAAA;ACozDJ;;ADrzDG;EACC,cAAA;ACwzDJ;;ADzzDG;EACC,cAAA;AC4zDJ;;AD7zDG;EACC,cAAA;ACg0DJ;;ADj0DG;EACC,cAAA;ACo0DJ;;ADr0DG;EACC,cAAA;ACw0DJ;;ADz0DG;EACC,cAAA;AC40DJ;;AD70DG;EACC,eAAA;ACg1DJ;;ADp2DG;EACC,iBAAA;ACu2DJ;;ADx2DG;EACC,iBAAA;AC22DJ;;AD52DG;EACC,iBAAA;AC+2DJ;;ADh3DG;EACC,iBAAA;ACm3DJ;;ADp3DG;EACC,iBAAA;ACu3DJ;;ADx3DG;EACC,iBAAA;AC23DJ;;AD53DG;EACC,iBAAA;AC+3DJ;;ADh4DG;EACC,iBAAA;ACm4DJ;;ADp4DG;EACC,iBAAA;ACu4DJ;;ADx4DG;EACC,iBAAA;AC24DJ;;AD54DG;EACC,kBAAA;AC+4DJ;;ADh5DG;EACC,kBAAA;ACm5DJ;;ADp5DG;EACC,kBAAA;ACu5DJ;;ADx5DG;EACC,kBAAA;AC25DJ;;AD55DG;EACC,kBAAA;AC+5DJ;;ADh6DG;EACC,kBAAA;ACm6DJ;;ADp6DG;EACC,kBAAA;ACu6DJ;;ADx6DG;EACC,kBAAA;AC26DJ;;AD56DG;EACC,kBAAA;AC+6DJ;;ADh7DG;EACC,kBAAA;ACm7DJ;;ADp7DG;EACC,kBAAA;ACu7DJ;;ADx7DG;EACC,kBAAA;AC27DJ;;AD57DG;EACC,kBAAA;AC+7DJ;;ADh8DG;EACC,kBAAA;ACm8DJ;;ADp8DG;EACC,kBAAA;ACu8DJ;;ADx8DG;EACC,kBAAA;AC28DJ;;AD58DG;EACC,kBAAA;AC+8DJ;;ADh9DG;EACC,kBAAA;ACm9DJ;;ADp9DG;EACC,kBAAA;ACu9DJ;;ADx9DG;EACC,kBAAA;AC29DJ;;AD59DG;EACC,kBAAA;AC+9DJ;;ADh+DG;EACC,kBAAA;ACm+DJ;;ADp+DG;EACC,kBAAA;ACu+DJ;;ADx+DG;EACC,kBAAA;AC2+DJ;;AD5+DG;EACC,kBAAA;AC++DJ;;ADh/DG;EACC,kBAAA;ACm/DJ;;ADp/DG;EACC,kBAAA;ACu/DJ;;ADx/DG;EACC,kBAAA;AC2/DJ;;AD5/DG;EACC,kBAAA;AC+/DJ;;ADhgEG;EACC,kBAAA;ACmgEJ;;ADpgEG;EACC,kBAAA;ACugEJ;;ADxgEG;EACC,kBAAA;AC2gEJ;;AD5gEG;EACC,kBAAA;AC+gEJ;;ADhhEG;EACC,kBAAA;ACmhEJ;;ADphEG;EACC,kBAAA;ACuhEJ;;ADxhEG;EACC,kBAAA;AC2hEJ;;AD5hEG;EACC,kBAAA;AC+hEJ;;ADhiEG;EACC,kBAAA;ACmiEJ;;ADpiEG;EACC,kBAAA;ACuiEJ;;ADxiEG;EACC,kBAAA;AC2iEJ;;AD5iEG;EACC,kBAAA;AC+iEJ;;AD7hEG;EACC,iBAAA;ACgiEJ;;ADjiEG;EACC,iBAAA;ACoiEJ;;ADriEG;EACC,kBAAA;ACwiEJ;;ADziEG;EACC,kBAAA;AC4iEJ;;AD7iEG;EACC,kBAAA;ACgjEJ;;ADjjEG;EACC,kBAAA;ACojEJ;;ADrjEG;EACC,kBAAA;ACwjEJ;;ADzjEG;EACC,kBAAA;AC4jEJ;;AD7jEG;EACC,kBAAA;ACgkEJ;;ADjkEG;EACC,kBAAA;ACokEJ;;ADrkEG;EACC,kBAAA;ACwkEJ;;ADzkEG;EACC,kBAAA;AC4kEJ;;AD7kEG;EACC,kBAAA;ACglEJ;;ADjlEG;EACC,kBAAA;AColEJ;;ADrlEG;EACC,kBAAA;ACwlEJ;;ADzlEG;EACC,kBAAA;AC4lEJ;;AD7lEG;EACC,kBAAA;ACgmEJ;;ADjmEG;EACC,kBAAA;AComEJ;;ADrmEG;EACC,kBAAA;ACwmEJ;;ADzmEG;EACC,kBAAA;AC4mEJ;;AD7mEG;EACC,kBAAA;ACgnEJ;;ADjnEG;EACC,kBAAA;AConEJ;;ADrnEG;EACC,kBAAA;ACwnEJ;;ADznEG;EACC,kBAAA;AC4nEJ;;AD7nEG;EACC,mBAAA;ACgoEJ;;ADppEG;EACC,mBAAA;ACupEJ;;ADxpEG;EACC,mBAAA;AC2pEJ;;AD5pEG;EACC,mBAAA;AC+pEJ;;ADhqEG;EACC,mBAAA;ACmqEJ;;ADpqEG;EACC,mBAAA;ACuqEJ;;ADxqEG;EACC,mBAAA;AC2qEJ;;AD5qEG;EACC,mBAAA;AC+qEJ;;ADhrEG;EACC,mBAAA;ACmrEJ;;ADprEG;EACC,mBAAA;ACurEJ;;ADxrEG;EACC,mBAAA;AC2rEJ;;AD5rEG;EACC,oBAAA;AC+rEJ;;ADhsEG;EACC,oBAAA;ACmsEJ;;ADpsEG;EACC,oBAAA;ACusEJ;;ADxsEG;EACC,oBAAA;AC2sEJ;;AD5sEG;EACC,oBAAA;AC+sEJ;;ADhtEG;EACC,oBAAA;ACmtEJ;;ADptEG;EACC,oBAAA;ACutEJ;;ADxtEG;EACC,oBAAA;AC2tEJ;;AD5tEG;EACC,oBAAA;AC+tEJ;;ADhuEG;EACC,oBAAA;ACmuEJ;;ADpuEG;EACC,oBAAA;ACuuEJ;;ADxuEG;EACC,oBAAA;AC2uEJ;;AD5uEG;EACC,oBAAA;AC+uEJ;;ADhvEG;EACC,oBAAA;ACmvEJ;;ADpvEG;EACC,oBAAA;ACuvEJ;;ADxvEG;EACC,oBAAA;AC2vEJ;;AD5vEG;EACC,oBAAA;AC+vEJ;;ADhwEG;EACC,oBAAA;ACmwEJ;;ADpwEG;EACC,oBAAA;ACuwEJ;;ADxwEG;EACC,oBAAA;AC2wEJ;;AD5wEG;EACC,oBAAA;AC+wEJ;;ADhxEG;EACC,oBAAA;ACmxEJ;;ADpxEG;EACC,oBAAA;ACuxEJ;;ADxxEG;EACC,oBAAA;AC2xEJ;;AD5xEG;EACC,oBAAA;AC+xEJ;;ADhyEG;EACC,oBAAA;ACmyEJ;;ADpyEG;EACC,oBAAA;ACuyEJ;;ADxyEG;EACC,oBAAA;AC2yEJ;;AD5yEG;EACC,oBAAA;AC+yEJ;;ADhzEG;EACC,oBAAA;ACmzEJ;;ADpzEG;EACC,oBAAA;ACuzEJ;;ADxzEG;EACC,oBAAA;AC2zEJ;;AD5zEG;EACC,oBAAA;AC+zEJ;;ADh0EG;EACC,oBAAA;ACm0EJ;;ADp0EG;EACC,oBAAA;ACu0EJ;;ADx0EG;EACC,oBAAA;AC20EJ;;AD50EG;EACC,oBAAA;AC+0EJ;;ADh1EG;EACC,oBAAA;ACm1EJ;;ADp1EG;EACC,oBAAA;ACu1EJ;;ADx1EG;EACC,oBAAA;AC21EJ;;AD51EG;EACC,oBAAA;AC+1EJ;;AD70EG;EACC,mBAAA;ACg1EJ;;ADj1EG;EACC,mBAAA;ACo1EJ;;ADr1EG;EACC,oBAAA;ACw1EJ;;ADz1EG;EACC,oBAAA;AC41EJ;;AD71EG;EACC,oBAAA;ACg2EJ;;ADj2EG;EACC,oBAAA;ACo2EJ;;ADr2EG;EACC,oBAAA;ACw2EJ;;ADz2EG;EACC,oBAAA;AC42EJ;;AD72EG;EACC,oBAAA;ACg3EJ;;ADj3EG;EACC,oBAAA;ACo3EJ;;ADr3EG;EACC,oBAAA;ACw3EJ;;ADz3EG;EACC,oBAAA;AC43EJ;;AD73EG;EACC,oBAAA;ACg4EJ;;ADj4EG;EACC,oBAAA;ACo4EJ;;ADr4EG;EACC,oBAAA;ACw4EJ;;ADz4EG;EACC,oBAAA;AC44EJ;;AD74EG;EACC,oBAAA;ACg5EJ;;ADj5EG;EACC,oBAAA;ACo5EJ;;ADr5EG;EACC,oBAAA;ACw5EJ;;ADz5EG;EACC,oBAAA;AC45EJ;;AD75EG;EACC,oBAAA;ACg6EJ;;ADj6EG;EACC,oBAAA;ACo6EJ;;ADr6EG;EACC,oBAAA;ACw6EJ;;ADz6EG;EACC,oBAAA;AC46EJ;;AD76EG;EACC,qBAAA;ACg7EJ;;ADp8EG;EACC,oBAAA;ACu8EJ;;ADx8EG;EACC,oBAAA;AC28EJ;;AD58EG;EACC,oBAAA;AC+8EJ;;ADh9EG;EACC,oBAAA;ACm9EJ;;ADp9EG;EACC,oBAAA;ACu9EJ;;ADx9EG;EACC,oBAAA;AC29EJ;;AD59EG;EACC,oBAAA;AC+9EJ;;ADh+EG;EACC,oBAAA;ACm+EJ;;ADp+EG;EACC,oBAAA;ACu+EJ;;ADx+EG;EACC,oBAAA;AC2+EJ;;AD5+EG;EACC,qBAAA;AC++EJ;;ADh/EG;EACC,qBAAA;ACm/EJ;;ADp/EG;EACC,qBAAA;ACu/EJ;;ADx/EG;EACC,qBAAA;AC2/EJ;;AD5/EG;EACC,qBAAA;AC+/EJ;;ADhgFG;EACC,qBAAA;ACmgFJ;;ADpgFG;EACC,qBAAA;ACugFJ;;ADxgFG;EACC,qBAAA;AC2gFJ;;AD5gFG;EACC,qBAAA;AC+gFJ;;ADhhFG;EACC,qBAAA;ACmhFJ;;ADphFG;EACC,qBAAA;ACuhFJ;;ADxhFG;EACC,qBAAA;AC2hFJ;;AD5hFG;EACC,qBAAA;AC+hFJ;;ADhiFG;EACC,qBAAA;ACmiFJ;;ADpiFG;EACC,qBAAA;ACuiFJ;;ADxiFG;EACC,qBAAA;AC2iFJ;;AD5iFG;EACC,qBAAA;AC+iFJ;;ADhjFG;EACC,qBAAA;ACmjFJ;;ADpjFG;EACC,qBAAA;ACujFJ;;ADxjFG;EACC,qBAAA;AC2jFJ;;AD5jFG;EACC,qBAAA;AC+jFJ;;ADhkFG;EACC,qBAAA;ACmkFJ;;ADpkFG;EACC,qBAAA;ACukFJ;;ADxkFG;EACC,qBAAA;AC2kFJ;;AD5kFG;EACC,qBAAA;AC+kFJ;;ADhlFG;EACC,qBAAA;ACmlFJ;;ADplFG;EACC,qBAAA;ACulFJ;;ADxlFG;EACC,qBAAA;AC2lFJ;;AD5lFG;EACC,qBAAA;AC+lFJ;;ADhmFG;EACC,qBAAA;ACmmFJ;;ADpmFG;EACC,qBAAA;ACumFJ;;ADxmFG;EACC,qBAAA;AC2mFJ;;AD5mFG;EACC,qBAAA;AC+mFJ;;ADhnFG;EACC,qBAAA;ACmnFJ;;ADpnFG;EACC,qBAAA;ACunFJ;;ADxnFG;EACC,qBAAA;AC2nFJ;;AD5nFG;EACC,qBAAA;AC+nFJ;;ADhoFG;EACC,qBAAA;ACmoFJ;;ADpoFG;EACC,qBAAA;ACuoFJ;;ADxoFG;EACC,qBAAA;AC2oFJ;;AD5oFG;EACC,qBAAA;AC+oFJ;;AD7nFG;EACC,oBAAA;ACgoFJ;;ADjoFG;EACC,oBAAA;ACooFJ;;ADroFG;EACC,qBAAA;ACwoFJ;;ADzoFG;EACC,qBAAA;AC4oFJ;;AD7oFG;EACC,qBAAA;ACgpFJ;;ADjpFG;EACC,qBAAA;ACopFJ;;ADrpFG;EACC,qBAAA;ACwpFJ;;ADzpFG;EACC,qBAAA;AC4pFJ;;AD7pFG;EACC,qBAAA;ACgqFJ;;ADjqFG;EACC,qBAAA;ACoqFJ;;ADrqFG;EACC,qBAAA;ACwqFJ;;ADzqFG;EACC,qBAAA;AC4qFJ;;AD7qFG;EACC,qBAAA;ACgrFJ;;ADjrFG;EACC,qBAAA;ACorFJ;;ADrrFG;EACC,qBAAA;ACwrFJ;;ADzrFG;EACC,qBAAA;AC4rFJ;;AD7rFG;EACC,qBAAA;ACgsFJ;;ADjsFG;EACC,qBAAA;ACosFJ;;ADrsFG;EACC,qBAAA;ACwsFJ;;ADzsFG;EACC,qBAAA;AC4sFJ;;AD7sFG;EACC,qBAAA;ACgtFJ;;ADjtFG;EACC,qBAAA;ACotFJ;;ADrtFG;EACC,qBAAA;ACwtFJ;;ADztFG;EACC,qBAAA;AC4tFJ;;AD7tFG;EACC,sBAAA;ACguFJ;;ADpvFG;EACC,kBAAA;ACuvFJ;;ADxvFG;EACC,kBAAA;AC2vFJ;;AD5vFG;EACC,kBAAA;AC+vFJ;;ADhwFG;EACC,kBAAA;ACmwFJ;;ADpwFG;EACC,kBAAA;ACuwFJ;;ADxwFG;EACC,kBAAA;AC2wFJ;;AD5wFG;EACC,kBAAA;AC+wFJ;;ADhxFG;EACC,kBAAA;ACmxFJ;;ADpxFG;EACC,kBAAA;ACuxFJ;;ADxxFG;EACC,kBAAA;AC2xFJ;;AD5xFG;EACC,mBAAA;AC+xFJ;;ADhyFG;EACC,mBAAA;ACmyFJ;;ADpyFG;EACC,mBAAA;ACuyFJ;;ADxyFG;EACC,mBAAA;AC2yFJ;;AD5yFG;EACC,mBAAA;AC+yFJ;;ADhzFG;EACC,mBAAA;ACmzFJ;;ADpzFG;EACC,mBAAA;ACuzFJ;;ADxzFG;EACC,mBAAA;AC2zFJ;;AD5zFG;EACC,mBAAA;AC+zFJ;;ADh0FG;EACC,mBAAA;ACm0FJ;;ADp0FG;EACC,mBAAA;ACu0FJ;;ADx0FG;EACC,mBAAA;AC20FJ;;AD50FG;EACC,mBAAA;AC+0FJ;;ADh1FG;EACC,mBAAA;ACm1FJ;;ADp1FG;EACC,mBAAA;ACu1FJ;;ADx1FG;EACC,mBAAA;AC21FJ;;AD51FG;EACC,mBAAA;AC+1FJ;;ADh2FG;EACC,mBAAA;ACm2FJ;;ADp2FG;EACC,mBAAA;ACu2FJ;;ADx2FG;EACC,mBAAA;AC22FJ;;AD52FG;EACC,mBAAA;AC+2FJ;;ADh3FG;EACC,mBAAA;ACm3FJ;;ADp3FG;EACC,mBAAA;ACu3FJ;;ADx3FG;EACC,mBAAA;AC23FJ;;AD53FG;EACC,mBAAA;AC+3FJ;;ADh4FG;EACC,mBAAA;ACm4FJ;;ADp4FG;EACC,mBAAA;ACu4FJ;;ADx4FG;EACC,mBAAA;AC24FJ;;AD54FG;EACC,mBAAA;AC+4FJ;;ADh5FG;EACC,mBAAA;ACm5FJ;;ADp5FG;EACC,mBAAA;ACu5FJ;;ADx5FG;EACC,mBAAA;AC25FJ;;AD55FG;EACC,mBAAA;AC+5FJ;;ADh6FG;EACC,mBAAA;ACm6FJ;;ADp6FG;EACC,mBAAA;ACu6FJ;;ADx6FG;EACC,mBAAA;AC26FJ;;AD56FG;EACC,mBAAA;AC+6FJ;;ADh7FG;EACC,mBAAA;ACm7FJ;;ADp7FG;EACC,mBAAA;ACu7FJ;;ADx7FG;EACC,mBAAA;AC27FJ;;AD57FG;EACC,mBAAA;AC+7FJ;;AD76FG;EACC,kBAAA;ACg7FJ;;ADj7FG;EACC,kBAAA;ACo7FJ;;ADr7FG;EACC,mBAAA;ACw7FJ;;ADz7FG;EACC,mBAAA;AC47FJ;;AD77FG;EACC,mBAAA;ACg8FJ;;ADj8FG;EACC,mBAAA;ACo8FJ;;ADr8FG;EACC,mBAAA;ACw8FJ;;ADz8FG;EACC,mBAAA;AC48FJ;;AD78FG;EACC,mBAAA;ACg9FJ;;ADj9FG;EACC,mBAAA;ACo9FJ;;ADr9FG;EACC,mBAAA;ACw9FJ;;ADz9FG;EACC,mBAAA;AC49FJ;;AD79FG;EACC,mBAAA;ACg+FJ;;ADj+FG;EACC,mBAAA;ACo+FJ;;ADr+FG;EACC,mBAAA;ACw+FJ;;ADz+FG;EACC,mBAAA;AC4+FJ;;AD7+FG;EACC,mBAAA;ACg/FJ;;ADj/FG;EACC,mBAAA;ACo/FJ;;ADr/FG;EACC,mBAAA;ACw/FJ;;ADz/FG;EACC,mBAAA;AC4/FJ;;AD7/FG;EACC,mBAAA;ACggGJ;;ADjgGG;EACC,mBAAA;ACogGJ;;ADrgGG;EACC,mBAAA;ACwgGJ;;ADzgGG;EACC,mBAAA;AC4gGJ;;AD7gGG;EACC,oBAAA;ACghGJ;;AD/hGG;EACC,kBAAA;EACA,mBAAA;ACkiGJ;;ADpiGG;EACC,kBAAA;EACA,mBAAA;ACuiGJ;;ADziGG;EACC,kBAAA;EACA,mBAAA;AC4iGJ;;AD9iGG;EACC,kBAAA;EACA,mBAAA;ACijGJ;;ADnjGG;EACC,kBAAA;EACA,mBAAA;ACsjGJ;;ADxjGG;EACC,kBAAA;EACA,mBAAA;AC2jGJ;;AD7jGG;EACC,kBAAA;EACA,mBAAA;ACgkGJ;;ADlkGG;EACC,kBAAA;EACA,mBAAA;ACqkGJ;;ADvkGG;EACC,kBAAA;EACA,mBAAA;AC0kGJ;;AD5kGG;EACC,kBAAA;EACA,mBAAA;AC+kGJ;;ADjlGG;EACC,mBAAA;EACA,oBAAA;AColGJ;;ADtlGG;EACC,mBAAA;EACA,oBAAA;ACylGJ;;AD3lGG;EACC,mBAAA;EACA,oBAAA;AC8lGJ;;ADhmGG;EACC,mBAAA;EACA,oBAAA;ACmmGJ;;ADrmGG;EACC,mBAAA;EACA,oBAAA;ACwmGJ;;AD1mGG;EACC,mBAAA;EACA,oBAAA;AC6mGJ;;AD/mGG;EACC,mBAAA;EACA,oBAAA;ACknGJ;;ADpnGG;EACC,mBAAA;EACA,oBAAA;ACunGJ;;ADznGG;EACC,mBAAA;EACA,oBAAA;AC4nGJ;;AD9nGG;EACC,mBAAA;EACA,oBAAA;ACioGJ;;ADnoGG;EACC,mBAAA;EACA,oBAAA;ACsoGJ;;ADxoGG;EACC,mBAAA;EACA,oBAAA;AC2oGJ;;AD7oGG;EACC,mBAAA;EACA,oBAAA;ACgpGJ;;ADlpGG;EACC,mBAAA;EACA,oBAAA;ACqpGJ;;ADvpGG;EACC,mBAAA;EACA,oBAAA;AC0pGJ;;AD5pGG;EACC,mBAAA;EACA,oBAAA;AC+pGJ;;ADjqGG;EACC,mBAAA;EACA,oBAAA;ACoqGJ;;ADtqGG;EACC,mBAAA;EACA,oBAAA;ACyqGJ;;AD3qGG;EACC,mBAAA;EACA,oBAAA;AC8qGJ;;ADhrGG;EACC,mBAAA;EACA,oBAAA;ACmrGJ;;ADrrGG;EACC,mBAAA;EACA,oBAAA;ACwrGJ;;AD1rGG;EACC,mBAAA;EACA,oBAAA;AC6rGJ;;AD/rGG;EACC,mBAAA;EACA,oBAAA;ACksGJ;;ADpsGG;EACC,mBAAA;EACA,oBAAA;ACusGJ;;ADzsGG;EACC,mBAAA;EACA,oBAAA;AC4sGJ;;AD9sGG;EACC,mBAAA;EACA,oBAAA;ACitGJ;;ADntGG;EACC,mBAAA;EACA,oBAAA;ACstGJ;;ADxtGG;EACC,mBAAA;EACA,oBAAA;AC2tGJ;;AD7tGG;EACC,mBAAA;EACA,oBAAA;ACguGJ;;ADluGG;EACC,mBAAA;EACA,oBAAA;ACquGJ;;ADvuGG;EACC,mBAAA;EACA,oBAAA;AC0uGJ;;AD5uGG;EACC,mBAAA;EACA,oBAAA;AC+uGJ;;ADjvGG;EACC,mBAAA;EACA,oBAAA;ACovGJ;;ADtvGG;EACC,mBAAA;EACA,oBAAA;ACyvGJ;;AD3vGG;EACC,mBAAA;EACA,oBAAA;AC8vGJ;;ADhwGG;EACC,mBAAA;EACA,oBAAA;ACmwGJ;;ADrwGG;EACC,mBAAA;EACA,oBAAA;ACwwGJ;;AD1wGG;EACC,mBAAA;EACA,oBAAA;AC6wGJ;;AD/wGG;EACC,mBAAA;EACA,oBAAA;ACkxGJ;;ADpxGG;EACC,mBAAA;EACA,oBAAA;ACuxGJ;;ADzxGG;EACC,mBAAA;EACA,oBAAA;AC4xGJ;;AD3wGG;EACC,kBAAA;EACA,mBAAA;AC8wGJ;;ADhxGG;EACC,kBAAA;EACA,mBAAA;ACmxGJ;;ADrxGG;EACC,mBAAA;EACA,oBAAA;ACwxGJ;;AD1xGG;EACC,mBAAA;EACA,oBAAA;AC6xGJ;;AD/xGG;EACC,mBAAA;EACA,oBAAA;ACkyGJ;;ADpyGG;EACC,mBAAA;EACA,oBAAA;ACuyGJ;;ADzyGG;EACC,mBAAA;EACA,oBAAA;AC4yGJ;;AD9yGG;EACC,mBAAA;EACA,oBAAA;ACizGJ;;ADnzGG;EACC,mBAAA;EACA,oBAAA;ACszGJ;;ADxzGG;EACC,mBAAA;EACA,oBAAA;AC2zGJ;;AD7zGG;EACC,mBAAA;EACA,oBAAA;ACg0GJ;;ADl0GG;EACC,mBAAA;EACA,oBAAA;ACq0GJ;;ADv0GG;EACC,mBAAA;EACA,oBAAA;AC00GJ;;AD50GG;EACC,mBAAA;EACA,oBAAA;AC+0GJ;;ADj1GG;EACC,mBAAA;EACA,oBAAA;ACo1GJ;;ADt1GG;EACC,mBAAA;EACA,oBAAA;ACy1GJ;;AD31GG;EACC,mBAAA;EACA,oBAAA;AC81GJ;;ADh2GG;EACC,mBAAA;EACA,oBAAA;ACm2GJ;;ADr2GG;EACC,mBAAA;EACA,oBAAA;ACw2GJ;;AD12GG;EACC,mBAAA;EACA,oBAAA;AC62GJ;;AD/2GG;EACC,mBAAA;EACA,oBAAA;ACk3GJ;;ADp3GG;EACC,mBAAA;EACA,oBAAA;ACu3GJ;;ADz3GG;EACC,mBAAA;EACA,oBAAA;AC43GJ;;AD93GG;EACC,mBAAA;EACA,oBAAA;ACi4GJ;;ADn4GG;EACC,oBAAA;EACA,qBAAA;ACs4GJ;;ADr5GG;EACC,iBAAA;EACA,oBAAA;ACw5GJ;;AD15GG;EACC,iBAAA;EACA,oBAAA;AC65GJ;;AD/5GG;EACC,iBAAA;EACA,oBAAA;ACk6GJ;;ADp6GG;EACC,iBAAA;EACA,oBAAA;ACu6GJ;;ADz6GG;EACC,iBAAA;EACA,oBAAA;AC46GJ;;AD96GG;EACC,iBAAA;EACA,oBAAA;ACi7GJ;;ADn7GG;EACC,iBAAA;EACA,oBAAA;ACs7GJ;;ADx7GG;EACC,iBAAA;EACA,oBAAA;AC27GJ;;AD77GG;EACC,iBAAA;EACA,oBAAA;ACg8GJ;;ADl8GG;EACC,iBAAA;EACA,oBAAA;ACq8GJ;;ADv8GG;EACC,kBAAA;EACA,qBAAA;AC08GJ;;AD58GG;EACC,kBAAA;EACA,qBAAA;AC+8GJ;;ADj9GG;EACC,kBAAA;EACA,qBAAA;ACo9GJ;;ADt9GG;EACC,kBAAA;EACA,qBAAA;ACy9GJ;;AD39GG;EACC,kBAAA;EACA,qBAAA;AC89GJ;;ADh+GG;EACC,kBAAA;EACA,qBAAA;ACm+GJ;;ADr+GG;EACC,kBAAA;EACA,qBAAA;ACw+GJ;;AD1+GG;EACC,kBAAA;EACA,qBAAA;AC6+GJ;;AD/+GG;EACC,kBAAA;EACA,qBAAA;ACk/GJ;;ADp/GG;EACC,kBAAA;EACA,qBAAA;ACu/GJ;;ADz/GG;EACC,kBAAA;EACA,qBAAA;AC4/GJ;;AD9/GG;EACC,kBAAA;EACA,qBAAA;ACigHJ;;ADngHG;EACC,kBAAA;EACA,qBAAA;ACsgHJ;;ADxgHG;EACC,kBAAA;EACA,qBAAA;AC2gHJ;;AD7gHG;EACC,kBAAA;EACA,qBAAA;ACghHJ;;ADlhHG;EACC,kBAAA;EACA,qBAAA;ACqhHJ;;ADvhHG;EACC,kBAAA;EACA,qBAAA;AC0hHJ;;AD5hHG;EACC,kBAAA;EACA,qBAAA;AC+hHJ;;ADjiHG;EACC,kBAAA;EACA,qBAAA;ACoiHJ;;ADtiHG;EACC,kBAAA;EACA,qBAAA;ACyiHJ;;AD3iHG;EACC,kBAAA;EACA,qBAAA;AC8iHJ;;ADhjHG;EACC,kBAAA;EACA,qBAAA;ACmjHJ;;ADrjHG;EACC,kBAAA;EACA,qBAAA;ACwjHJ;;AD1jHG;EACC,kBAAA;EACA,qBAAA;AC6jHJ;;AD/jHG;EACC,kBAAA;EACA,qBAAA;ACkkHJ;;ADpkHG;EACC,kBAAA;EACA,qBAAA;ACukHJ;;ADzkHG;EACC,kBAAA;EACA,qBAAA;AC4kHJ;;AD9kHG;EACC,kBAAA;EACA,qBAAA;ACilHJ;;ADnlHG;EACC,kBAAA;EACA,qBAAA;ACslHJ;;ADxlHG;EACC,kBAAA;EACA,qBAAA;AC2lHJ;;AD7lHG;EACC,kBAAA;EACA,qBAAA;ACgmHJ;;ADlmHG;EACC,kBAAA;EACA,qBAAA;ACqmHJ;;ADvmHG;EACC,kBAAA;EACA,qBAAA;AC0mHJ;;AD5mHG;EACC,kBAAA;EACA,qBAAA;AC+mHJ;;ADjnHG;EACC,kBAAA;EACA,qBAAA;AConHJ;;ADtnHG;EACC,kBAAA;EACA,qBAAA;ACynHJ;;AD3nHG;EACC,kBAAA;EACA,qBAAA;AC8nHJ;;ADhoHG;EACC,kBAAA;EACA,qBAAA;ACmoHJ;;ADroHG;EACC,kBAAA;EACA,qBAAA;ACwoHJ;;AD1oHG;EACC,kBAAA;EACA,qBAAA;AC6oHJ;;AD/oHG;EACC,kBAAA;EACA,qBAAA;ACkpHJ;;ADjoHG;EACC,iBAAA;EACA,oBAAA;ACooHJ;;ADtoHG;EACC,iBAAA;EACA,oBAAA;ACyoHJ;;AD3oHG;EACC,kBAAA;EACA,qBAAA;AC8oHJ;;ADhpHG;EACC,kBAAA;EACA,qBAAA;ACmpHJ;;ADrpHG;EACC,kBAAA;EACA,qBAAA;ACwpHJ;;AD1pHG;EACC,kBAAA;EACA,qBAAA;AC6pHJ;;AD/pHG;EACC,kBAAA;EACA,qBAAA;ACkqHJ;;ADpqHG;EACC,kBAAA;EACA,qBAAA;ACuqHJ;;ADzqHG;EACC,kBAAA;EACA,qBAAA;AC4qHJ;;AD9qHG;EACC,kBAAA;EACA,qBAAA;ACirHJ;;ADnrHG;EACC,kBAAA;EACA,qBAAA;ACsrHJ;;ADxrHG;EACC,kBAAA;EACA,qBAAA;AC2rHJ;;AD7rHG;EACC,kBAAA;EACA,qBAAA;ACgsHJ;;ADlsHG;EACC,kBAAA;EACA,qBAAA;ACqsHJ;;ADvsHG;EACC,kBAAA;EACA,qBAAA;AC0sHJ;;AD5sHG;EACC,kBAAA;EACA,qBAAA;AC+sHJ;;ADjtHG;EACC,kBAAA;EACA,qBAAA;ACotHJ;;ADttHG;EACC,kBAAA;EACA,qBAAA;ACytHJ;;AD3tHG;EACC,kBAAA;EACA,qBAAA;AC8tHJ;;ADhuHG;EACC,kBAAA;EACA,qBAAA;ACmuHJ;;ADruHG;EACC,kBAAA;EACA,qBAAA;ACwuHJ;;AD1uHG;EACC,kBAAA;EACA,qBAAA;AC6uHJ;;AD/uHG;EACC,kBAAA;EACA,qBAAA;ACkvHJ;;ADpvHG;EACC,kBAAA;EACA,qBAAA;ACuvHJ;;ADzvHG;EACC,mBAAA;EACA,sBAAA;AC4vHJ;;ADnvHG;EACC,YAAA;ACsvHJ;;ADvvHG;EACC,YAAA;AC0vHJ;;AD3vHG;EACC,YAAA;AC8vHJ;;AD/vHG;EACC,YAAA;ACkwHJ;;ADnwHG;EACC,YAAA;ACswHJ;;ADvwHG;EACC,YAAA;AC0wHJ;;AD3wHG;EACC,YAAA;AC8wHJ;;AD/wHG;EACC,YAAA;ACkxHJ;;ADnxHG;EACC,YAAA;ACsxHJ;;ADvxHG;EACC,YAAA;AC0xHJ;;AD3xHG;EACC,aAAA;AC8xHJ;;AD/xHG;EACC,aAAA;ACkyHJ;;ADnyHG;EACC,aAAA;ACsyHJ;;ADvyHG;EACC,aAAA;AC0yHJ;;AD3yHG;EACC,aAAA;AC8yHJ;;AD/yHG;EACC,aAAA;ACkzHJ;;ADnzHG;EACC,aAAA;ACszHJ;;ADvzHG;EACC,aAAA;AC0zHJ;;AD3zHG;EACC,aAAA;AC8zHJ;;AD/zHG;EACC,aAAA;ACk0HJ;;ADn0HG;EACC,aAAA;ACs0HJ;;ADv0HG;EACC,aAAA;AC00HJ;;AD30HG;EACC,aAAA;AC80HJ;;AD/0HG;EACC,aAAA;ACk1HJ;;ADn1HG;EACC,aAAA;ACs1HJ;;ADv1HG;EACC,aAAA;AC01HJ;;AD31HG;EACC,aAAA;AC81HJ;;AD/1HG;EACC,aAAA;ACk2HJ;;ADn2HG;EACC,aAAA;ACs2HJ;;ADv2HG;EACC,aAAA;AC02HJ;;AD32HG;EACC,aAAA;AC82HJ;;AD/2HG;EACC,aAAA;ACk3HJ;;ADn3HG;EACC,aAAA;ACs3HJ;;ADv3HG;EACC,aAAA;AC03HJ;;AD33HG;EACC,aAAA;AC83HJ;;AD/3HG;EACC,aAAA;ACk4HJ;;ADn4HG;EACC,aAAA;ACs4HJ;;ADv4HG;EACC,aAAA;AC04HJ;;AD34HG;EACC,aAAA;AC84HJ;;AD/4HG;EACC,aAAA;ACk5HJ;;ADn5HG;EACC,aAAA;ACs5HJ;;ADv5HG;EACC,aAAA;AC05HJ;;AD35HG;EACC,aAAA;AC85HJ;;AD/5HG;EACC,aAAA;ACk6HJ;;ADn6HG;EACC,aAAA;ACs6HJ;;ADv6HG;EACC,aAAA;AC06HJ;;AD36HG;EACC,aAAA;AC86HJ;;AD/6HG;EACC,aAAA;ACk7HJ;;ADn7HG;EACC,aAAA;ACs7HJ;;ADv7HG;EACC,aAAA;AC07HJ;;AD37HG;EACC,aAAA;AC87HJ;;ADv6HG;EACC,YAAA;AC06HJ;;AD36HG;EACC,YAAA;AC86HJ;;AD/6HG;EACC,aAAA;ACk7HJ;;ADn7HG;EACC,aAAA;ACs7HJ;;ADv7HG;EACC,aAAA;AC07HJ;;AD37HG;EACC,aAAA;AC87HJ;;AD/7HG;EACC,aAAA;ACk8HJ;;ADn8HG;EACC,aAAA;ACs8HJ;;ADv8HG;EACC,aAAA;AC08HJ;;AD38HG;EACC,aAAA;AC88HJ;;AD/8HG;EACC,aAAA;ACk9HJ;;ADn9HG;EACC,aAAA;ACs9HJ;;ADv9HG;EACC,aAAA;AC09HJ;;AD39HG;EACC,aAAA;AC89HJ;;AD/9HG;EACC,aAAA;ACk+HJ;;ADn+HG;EACC,aAAA;ACs+HJ;;ADv+HG;EACC,aAAA;AC0+HJ;;AD3+HG;EACC,aAAA;AC8+HJ;;AD/+HG;EACC,aAAA;ACk/HJ;;ADn/HG;EACC,aAAA;ACs/HJ;;ADv/HG;EACC,aAAA;AC0/HJ;;AD3/HG;EACC,aAAA;AC8/HJ;;AD//HG;EACC,aAAA;ACkgIJ;;ADngIG;EACC,aAAA;ACsgIJ;;ADvgIG;EACC,cAAA;AC0gIJ;;ADniIG;EACC,gBAAA;ACsiIJ;;ADniII;EACC,iBAAA;ACsiIL;;AD3iIG;EACC,gBAAA;AC8iIJ;;AD3iII;EACC,iBAAA;AC8iIL;;ADnjIG;EACC,gBAAA;ACsjIJ;;ADnjII;EACC,iBAAA;ACsjIL;;AD3jIG;EACC,gBAAA;AC8jIJ;;AD3jII;EACC,iBAAA;AC8jIL;;ADnkIG;EACC,gBAAA;ACskIJ;;ADnkII;EACC,iBAAA;ACskIL;;AD3kIG;EACC,gBAAA;AC8kIJ;;AD3kII;EACC,iBAAA;AC8kIL;;ADnlIG;EACC,gBAAA;ACslIJ;;ADnlII;EACC,iBAAA;ACslIL;;AD3lIG;EACC,gBAAA;AC8lIJ;;AD3lII;EACC,iBAAA;AC8lIL;;ADnmIG;EACC,gBAAA;ACsmIJ;;ADnmII;EACC,iBAAA;ACsmIL;;AD3mIG;EACC,gBAAA;AC8mIJ;;AD3mII;EACC,iBAAA;AC8mIL;;ADnnIG;EACC,iBAAA;ACsnIJ;;ADnnII;EACC,kBAAA;ACsnIL;;AD3nIG;EACC,iBAAA;AC8nIJ;;AD3nII;EACC,kBAAA;AC8nIL;;ADnoIG;EACC,iBAAA;ACsoIJ;;ADnoII;EACC,kBAAA;ACsoIL;;AD3oIG;EACC,iBAAA;AC8oIJ;;AD3oII;EACC,kBAAA;AC8oIL;;ADnpIG;EACC,iBAAA;ACspIJ;;ADnpII;EACC,kBAAA;ACspIL;;AD3pIG;EACC,iBAAA;AC8pIJ;;AD3pII;EACC,kBAAA;AC8pIL;;ADnqIG;EACC,iBAAA;ACsqIJ;;ADnqII;EACC,kBAAA;ACsqIL;;AD3qIG;EACC,iBAAA;AC8qIJ;;AD3qII;EACC,kBAAA;AC8qIL;;ADnrIG;EACC,iBAAA;ACsrIJ;;ADnrII;EACC,kBAAA;ACsrIL;;AD3rIG;EACC,iBAAA;AC8rIJ;;AD3rII;EACC,kBAAA;AC8rIL;;ADnsIG;EACC,iBAAA;ACssIJ;;ADnsII;EACC,kBAAA;ACssIL;;AD3sIG;EACC,iBAAA;AC8sIJ;;AD3sII;EACC,kBAAA;AC8sIL;;ADntIG;EACC,iBAAA;ACstIJ;;ADntII;EACC,kBAAA;ACstIL;;AD3tIG;EACC,iBAAA;AC8tIJ;;AD3tII;EACC,kBAAA;AC8tIL;;ADnuIG;EACC,iBAAA;ACsuIJ;;ADnuII;EACC,kBAAA;ACsuIL;;AD3uIG;EACC,iBAAA;AC8uIJ;;AD3uII;EACC,kBAAA;AC8uIL;;ADnvIG;EACC,iBAAA;ACsvIJ;;ADnvII;EACC,kBAAA;ACsvIL;;AD3vIG;EACC,iBAAA;AC8vIJ;;AD3vII;EACC,kBAAA;AC8vIL;;ADnwIG;EACC,iBAAA;ACswIJ;;ADnwII;EACC,kBAAA;ACswIL;;AD3wIG;EACC,iBAAA;AC8wIJ;;AD3wII;EACC,kBAAA;AC8wIL;;ADnxIG;EACC,iBAAA;ACsxIJ;;ADnxII;EACC,kBAAA;ACsxIL;;AD3xIG;EACC,iBAAA;AC8xIJ;;AD3xII;EACC,kBAAA;AC8xIL;;ADnyIG;EACC,iBAAA;ACsyIJ;;ADnyII;EACC,kBAAA;ACsyIL;;AD3yIG;EACC,iBAAA;AC8yIJ;;AD3yII;EACC,kBAAA;AC8yIL;;ADnzIG;EACC,iBAAA;ACszIJ;;ADnzII;EACC,kBAAA;ACszIL;;AD3zIG;EACC,iBAAA;AC8zIJ;;AD3zII;EACC,kBAAA;AC8zIL;;ADn0IG;EACC,iBAAA;ACs0IJ;;ADn0II;EACC,kBAAA;ACs0IL;;AD30IG;EACC,iBAAA;AC80IJ;;AD30II;EACC,kBAAA;AC80IL;;ADn1IG;EACC,iBAAA;ACs1IJ;;ADn1II;EACC,kBAAA;ACs1IL;;AD31IG;EACC,iBAAA;AC81IJ;;AD31II;EACC,kBAAA;AC81IL;;ADn2IG;EACC,iBAAA;ACs2IJ;;ADn2II;EACC,kBAAA;ACs2IL;;AD32IG;EACC,iBAAA;AC82IJ;;AD32II;EACC,kBAAA;AC82IL;;ADn3IG;EACC,iBAAA;ACs3IJ;;ADn3II;EACC,kBAAA;ACs3IL;;AD33IG;EACC,iBAAA;AC83IJ;;AD33II;EACC,kBAAA;AC83IL;;ADn4IG;EACC,iBAAA;ACs4IJ;;ADn4II;EACC,kBAAA;ACs4IL;;AD34IG;EACC,iBAAA;AC84IJ;;AD34II;EACC,kBAAA;AC84IL;;ADn5IG;EACC,iBAAA;ACs5IJ;;ADn5II;EACC,kBAAA;ACs5IL;;AD35IG;EACC,iBAAA;AC85IJ;;AD35II;EACC,kBAAA;AC85IL;;ADn6IG;EACC,iBAAA;ACs6IJ;;ADn6II;EACC,kBAAA;ACs6IL;;AD36IG;EACC,iBAAA;AC86IJ;;AD36II;EACC,kBAAA;AC86IL;;ADn7IG;EACC,iBAAA;ACs7IJ;;ADn7II;EACC,kBAAA;ACs7IL;;ADn6IG;EACC,gBAAA;ACs6IJ;;ADn6II;EACC,iBAAA;ACs6IL;;AD36IG;EACC,gBAAA;AC86IJ;;AD36II;EACC,iBAAA;AC86IL;;ADn7IG;EACC,iBAAA;ACs7IJ;;ADn7II;EACC,kBAAA;ACs7IL;;AD37IG;EACC,iBAAA;AC87IJ;;AD37II;EACC,kBAAA;AC87IL;;ADn8IG;EACC,iBAAA;ACs8IJ;;ADn8II;EACC,kBAAA;ACs8IL;;AD38IG;EACC,iBAAA;AC88IJ;;AD38II;EACC,kBAAA;AC88IL;;ADn9IG;EACC,iBAAA;ACs9IJ;;ADn9II;EACC,kBAAA;ACs9IL;;AD39IG;EACC,iBAAA;AC89IJ;;AD39II;EACC,kBAAA;AC89IL;;ADn+IG;EACC,iBAAA;ACs+IJ;;ADn+II;EACC,kBAAA;ACs+IL;;AD3+IG;EACC,iBAAA;AC8+IJ;;AD3+II;EACC,kBAAA;AC8+IL;;ADn/IG;EACC,iBAAA;ACs/IJ;;ADn/II;EACC,kBAAA;ACs/IL;;AD3/IG;EACC,iBAAA;AC8/IJ;;AD3/II;EACC,kBAAA;AC8/IL;;ADngJG;EACC,iBAAA;ACsgJJ;;ADngJI;EACC,kBAAA;ACsgJL;;AD3gJG;EACC,iBAAA;AC8gJJ;;AD3gJI;EACC,kBAAA;AC8gJL;;ADnhJG;EACC,iBAAA;ACshJJ;;ADnhJI;EACC,kBAAA;ACshJL;;AD3hJG;EACC,iBAAA;AC8hJJ;;AD3hJI;EACC,kBAAA;AC8hJL;;ADniJG;EACC,iBAAA;ACsiJJ;;ADniJI;EACC,kBAAA;ACsiJL;;AD3iJG;EACC,iBAAA;AC8iJJ;;AD3iJI;EACC,kBAAA;AC8iJL;;ADnjJG;EACC,iBAAA;ACsjJJ;;ADnjJI;EACC,kBAAA;ACsjJL;;AD3jJG;EACC,iBAAA;AC8jJJ;;AD3jJI;EACC,kBAAA;AC8jJL;;ADnkJG;EACC,iBAAA;ACskJJ;;ADnkJI;EACC,kBAAA;ACskJL;;AD3kJG;EACC,iBAAA;AC8kJJ;;AD3kJI;EACC,kBAAA;AC8kJL;;ADnlJG;EACC,iBAAA;ACslJJ;;ADnlJI;EACC,kBAAA;ACslJL;;AD3lJG;EACC,iBAAA;AC8lJJ;;AD3lJI;EACC,kBAAA;AC8lJL;;ADnmJG;EACC,kBAAA;ACsmJJ;;ADnmJI;EACC,mBAAA;ACsmJL;;ADnoJG;EACC,kBAAA;ACsoJJ;;ADnoJI;EACC,mBAAA;ACsoJL;;AD3oJG;EACC,kBAAA;AC8oJJ;;AD3oJI;EACC,mBAAA;AC8oJL;;ADnpJG;EACC,kBAAA;ACspJJ;;ADnpJI;EACC,mBAAA;ACspJL;;AD3pJG;EACC,kBAAA;AC8pJJ;;AD3pJI;EACC,mBAAA;AC8pJL;;ADnqJG;EACC,kBAAA;ACsqJJ;;ADnqJI;EACC,mBAAA;ACsqJL;;AD3qJG;EACC,kBAAA;AC8qJJ;;AD3qJI;EACC,mBAAA;AC8qJL;;ADnrJG;EACC,kBAAA;ACsrJJ;;ADnrJI;EACC,mBAAA;ACsrJL;;AD3rJG;EACC,kBAAA;AC8rJJ;;AD3rJI;EACC,mBAAA;AC8rJL;;ADnsJG;EACC,kBAAA;ACssJJ;;ADnsJI;EACC,mBAAA;ACssJL;;AD3sJG;EACC,kBAAA;AC8sJJ;;AD3sJI;EACC,mBAAA;AC8sJL;;ADntJG;EACC,mBAAA;ACstJJ;;ADntJI;EACC,oBAAA;ACstJL;;AD3tJG;EACC,mBAAA;AC8tJJ;;AD3tJI;EACC,oBAAA;AC8tJL;;ADnuJG;EACC,mBAAA;ACsuJJ;;ADnuJI;EACC,oBAAA;ACsuJL;;AD3uJG;EACC,mBAAA;AC8uJJ;;AD3uJI;EACC,oBAAA;AC8uJL;;ADnvJG;EACC,mBAAA;ACsvJJ;;ADnvJI;EACC,oBAAA;ACsvJL;;AD3vJG;EACC,mBAAA;AC8vJJ;;AD3vJI;EACC,oBAAA;AC8vJL;;ADnwJG;EACC,mBAAA;ACswJJ;;ADnwJI;EACC,oBAAA;ACswJL;;AD3wJG;EACC,mBAAA;AC8wJJ;;AD3wJI;EACC,oBAAA;AC8wJL;;ADnxJG;EACC,mBAAA;ACsxJJ;;ADnxJI;EACC,oBAAA;ACsxJL;;AD3xJG;EACC,mBAAA;AC8xJJ;;AD3xJI;EACC,oBAAA;AC8xJL;;ADnyJG;EACC,mBAAA;ACsyJJ;;ADnyJI;EACC,oBAAA;ACsyJL;;AD3yJG;EACC,mBAAA;AC8yJJ;;AD3yJI;EACC,oBAAA;AC8yJL;;ADnzJG;EACC,mBAAA;ACszJJ;;ADnzJI;EACC,oBAAA;ACszJL;;AD3zJG;EACC,mBAAA;AC8zJJ;;AD3zJI;EACC,oBAAA;AC8zJL;;ADn0JG;EACC,mBAAA;ACs0JJ;;ADn0JI;EACC,oBAAA;ACs0JL;;AD30JG;EACC,mBAAA;AC80JJ;;AD30JI;EACC,oBAAA;AC80JL;;ADn1JG;EACC,mBAAA;ACs1JJ;;ADn1JI;EACC,oBAAA;ACs1JL;;AD31JG;EACC,mBAAA;AC81JJ;;AD31JI;EACC,oBAAA;AC81JL;;ADn2JG;EACC,mBAAA;ACs2JJ;;ADn2JI;EACC,oBAAA;ACs2JL;;AD32JG;EACC,mBAAA;AC82JJ;;AD32JI;EACC,oBAAA;AC82JL;;ADn3JG;EACC,mBAAA;ACs3JJ;;ADn3JI;EACC,oBAAA;ACs3JL;;AD33JG;EACC,mBAAA;AC83JJ;;AD33JI;EACC,oBAAA;AC83JL;;ADn4JG;EACC,mBAAA;ACs4JJ;;ADn4JI;EACC,oBAAA;ACs4JL;;AD34JG;EACC,mBAAA;AC84JJ;;AD34JI;EACC,oBAAA;AC84JL;;ADn5JG;EACC,mBAAA;ACs5JJ;;ADn5JI;EACC,oBAAA;ACs5JL;;AD35JG;EACC,mBAAA;AC85JJ;;AD35JI;EACC,oBAAA;AC85JL;;ADn6JG;EACC,mBAAA;ACs6JJ;;ADn6JI;EACC,oBAAA;ACs6JL;;AD36JG;EACC,mBAAA;AC86JJ;;AD36JI;EACC,oBAAA;AC86JL;;ADn7JG;EACC,mBAAA;ACs7JJ;;ADn7JI;EACC,oBAAA;ACs7JL;;AD37JG;EACC,mBAAA;AC87JJ;;AD37JI;EACC,oBAAA;AC87JL;;ADn8JG;EACC,mBAAA;ACs8JJ;;ADn8JI;EACC,oBAAA;ACs8JL;;AD38JG;EACC,mBAAA;AC88JJ;;AD38JI;EACC,oBAAA;AC88JL;;ADn9JG;EACC,mBAAA;ACs9JJ;;ADn9JI;EACC,oBAAA;ACs9JL;;AD39JG;EACC,mBAAA;AC89JJ;;AD39JI;EACC,oBAAA;AC89JL;;ADn+JG;EACC,mBAAA;ACs+JJ;;ADn+JI;EACC,oBAAA;ACs+JL;;AD3+JG;EACC,mBAAA;AC8+JJ;;AD3+JI;EACC,oBAAA;AC8+JL;;ADn/JG;EACC,mBAAA;ACs/JJ;;ADn/JI;EACC,oBAAA;ACs/JL;;AD3/JG;EACC,mBAAA;AC8/JJ;;AD3/JI;EACC,oBAAA;AC8/JL;;ADngKG;EACC,mBAAA;ACsgKJ;;ADngKI;EACC,oBAAA;ACsgKL;;AD3gKG;EACC,mBAAA;AC8gKJ;;AD3gKI;EACC,oBAAA;AC8gKL;;ADnhKG;EACC,mBAAA;ACshKJ;;ADnhKI;EACC,oBAAA;ACshKL;;ADngKG;EACC,kBAAA;ACsgKJ;;ADngKI;EACC,mBAAA;ACsgKL;;AD3gKG;EACC,kBAAA;AC8gKJ;;AD3gKI;EACC,mBAAA;AC8gKL;;ADnhKG;EACC,mBAAA;ACshKJ;;ADnhKI;EACC,oBAAA;ACshKL;;AD3hKG;EACC,mBAAA;AC8hKJ;;AD3hKI;EACC,oBAAA;AC8hKL;;ADniKG;EACC,mBAAA;ACsiKJ;;ADniKI;EACC,oBAAA;ACsiKL;;AD3iKG;EACC,mBAAA;AC8iKJ;;AD3iKI;EACC,oBAAA;AC8iKL;;ADnjKG;EACC,mBAAA;ACsjKJ;;ADnjKI;EACC,oBAAA;ACsjKL;;AD3jKG;EACC,mBAAA;AC8jKJ;;AD3jKI;EACC,oBAAA;AC8jKL;;ADnkKG;EACC,mBAAA;ACskKJ;;ADnkKI;EACC,oBAAA;ACskKL;;AD3kKG;EACC,mBAAA;AC8kKJ;;AD3kKI;EACC,oBAAA;AC8kKL;;ADnlKG;EACC,mBAAA;ACslKJ;;ADnlKI;EACC,oBAAA;ACslKL;;AD3lKG;EACC,mBAAA;AC8lKJ;;AD3lKI;EACC,oBAAA;AC8lKL;;ADnmKG;EACC,mBAAA;ACsmKJ;;ADnmKI;EACC,oBAAA;ACsmKL;;AD3mKG;EACC,mBAAA;AC8mKJ;;AD3mKI;EACC,oBAAA;AC8mKL;;ADnnKG;EACC,mBAAA;ACsnKJ;;ADnnKI;EACC,oBAAA;ACsnKL;;AD3nKG;EACC,mBAAA;AC8nKJ;;AD3nKI;EACC,oBAAA;AC8nKL;;ADnoKG;EACC,mBAAA;ACsoKJ;;ADnoKI;EACC,oBAAA;ACsoKL;;AD3oKG;EACC,mBAAA;AC8oKJ;;AD3oKI;EACC,oBAAA;AC8oKL;;ADnpKG;EACC,mBAAA;ACspKJ;;ADnpKI;EACC,oBAAA;ACspKL;;AD3pKG;EACC,mBAAA;AC8pKJ;;AD3pKI;EACC,oBAAA;AC8pKL;;ADnqKG;EACC,mBAAA;ACsqKJ;;ADnqKI;EACC,oBAAA;ACsqKL;;AD3qKG;EACC,mBAAA;AC8qKJ;;AD3qKI;EACC,oBAAA;AC8qKL;;ADnrKG;EACC,mBAAA;ACsrKJ;;ADnrKI;EACC,oBAAA;ACsrKL;;AD3rKG;EACC,mBAAA;AC8rKJ;;AD3rKI;EACC,oBAAA;AC8rKL;;ADnsKG;EACC,oBAAA;ACssKJ;;ADnsKI;EACC,qBAAA;ACssKL;;ADnuKG;EACC,mBAAA;ACsuKJ;;ADnuKI;EACC,oBAAA;ACsuKL;;AD3uKG;EACC,mBAAA;AC8uKJ;;AD3uKI;EACC,oBAAA;AC8uKL;;ADnvKG;EACC,mBAAA;ACsvKJ;;ADnvKI;EACC,oBAAA;ACsvKL;;AD3vKG;EACC,mBAAA;AC8vKJ;;AD3vKI;EACC,oBAAA;AC8vKL;;ADnwKG;EACC,mBAAA;ACswKJ;;ADnwKI;EACC,oBAAA;ACswKL;;AD3wKG;EACC,mBAAA;AC8wKJ;;AD3wKI;EACC,oBAAA;AC8wKL;;ADnxKG;EACC,mBAAA;ACsxKJ;;ADnxKI;EACC,oBAAA;ACsxKL;;AD3xKG;EACC,mBAAA;AC8xKJ;;AD3xKI;EACC,oBAAA;AC8xKL;;ADnyKG;EACC,mBAAA;ACsyKJ;;ADnyKI;EACC,oBAAA;ACsyKL;;AD3yKG;EACC,mBAAA;AC8yKJ;;AD3yKI;EACC,oBAAA;AC8yKL;;ADnzKG;EACC,oBAAA;ACszKJ;;ADnzKI;EACC,qBAAA;ACszKL;;AD3zKG;EACC,oBAAA;AC8zKJ;;AD3zKI;EACC,qBAAA;AC8zKL;;ADn0KG;EACC,oBAAA;ACs0KJ;;ADn0KI;EACC,qBAAA;ACs0KL;;AD30KG;EACC,oBAAA;AC80KJ;;AD30KI;EACC,qBAAA;AC80KL;;ADn1KG;EACC,oBAAA;ACs1KJ;;ADn1KI;EACC,qBAAA;ACs1KL;;AD31KG;EACC,oBAAA;AC81KJ;;AD31KI;EACC,qBAAA;AC81KL;;ADn2KG;EACC,oBAAA;ACs2KJ;;ADn2KI;EACC,qBAAA;ACs2KL;;AD32KG;EACC,oBAAA;AC82KJ;;AD32KI;EACC,qBAAA;AC82KL;;ADn3KG;EACC,oBAAA;ACs3KJ;;ADn3KI;EACC,qBAAA;ACs3KL;;AD33KG;EACC,oBAAA;AC83KJ;;AD33KI;EACC,qBAAA;AC83KL;;ADn4KG;EACC,oBAAA;ACs4KJ;;ADn4KI;EACC,qBAAA;ACs4KL;;AD34KG;EACC,oBAAA;AC84KJ;;AD34KI;EACC,qBAAA;AC84KL;;ADn5KG;EACC,oBAAA;ACs5KJ;;ADn5KI;EACC,qBAAA;ACs5KL;;AD35KG;EACC,oBAAA;AC85KJ;;AD35KI;EACC,qBAAA;AC85KL;;ADn6KG;EACC,oBAAA;ACs6KJ;;ADn6KI;EACC,qBAAA;ACs6KL;;AD36KG;EACC,oBAAA;AC86KJ;;AD36KI;EACC,qBAAA;AC86KL;;ADn7KG;EACC,oBAAA;ACs7KJ;;ADn7KI;EACC,qBAAA;ACs7KL;;AD37KG;EACC,oBAAA;AC87KJ;;AD37KI;EACC,qBAAA;AC87KL;;ADn8KG;EACC,oBAAA;ACs8KJ;;ADn8KI;EACC,qBAAA;ACs8KL;;AD38KG;EACC,oBAAA;AC88KJ;;AD38KI;EACC,qBAAA;AC88KL;;ADn9KG;EACC,oBAAA;ACs9KJ;;ADn9KI;EACC,qBAAA;ACs9KL;;AD39KG;EACC,oBAAA;AC89KJ;;AD39KI;EACC,qBAAA;AC89KL;;ADn+KG;EACC,oBAAA;ACs+KJ;;ADn+KI;EACC,qBAAA;ACs+KL;;AD3+KG;EACC,oBAAA;AC8+KJ;;AD3+KI;EACC,qBAAA;AC8+KL;;ADn/KG;EACC,oBAAA;ACs/KJ;;ADn/KI;EACC,qBAAA;ACs/KL;;AD3/KG;EACC,oBAAA;AC8/KJ;;AD3/KI;EACC,qBAAA;AC8/KL;;ADngLG;EACC,oBAAA;ACsgLJ;;ADngLI;EACC,qBAAA;ACsgLL;;AD3gLG;EACC,oBAAA;AC8gLJ;;AD3gLI;EACC,qBAAA;AC8gLL;;ADnhLG;EACC,oBAAA;ACshLJ;;ADnhLI;EACC,qBAAA;ACshLL;;AD3hLG;EACC,oBAAA;AC8hLJ;;AD3hLI;EACC,qBAAA;AC8hLL;;ADniLG;EACC,oBAAA;ACsiLJ;;ADniLI;EACC,qBAAA;ACsiLL;;AD3iLG;EACC,oBAAA;AC8iLJ;;AD3iLI;EACC,qBAAA;AC8iLL;;ADnjLG;EACC,oBAAA;ACsjLJ;;ADnjLI;EACC,qBAAA;ACsjLL;;AD3jLG;EACC,oBAAA;AC8jLJ;;AD3jLI;EACC,qBAAA;AC8jLL;;ADnkLG;EACC,oBAAA;ACskLJ;;ADnkLI;EACC,qBAAA;ACskLL;;AD3kLG;EACC,oBAAA;AC8kLJ;;AD3kLI;EACC,qBAAA;AC8kLL;;ADnlLG;EACC,oBAAA;ACslLJ;;ADnlLI;EACC,qBAAA;ACslLL;;AD3lLG;EACC,oBAAA;AC8lLJ;;AD3lLI;EACC,qBAAA;AC8lLL;;ADnmLG;EACC,oBAAA;ACsmLJ;;ADnmLI;EACC,qBAAA;ACsmLL;;AD3mLG;EACC,oBAAA;AC8mLJ;;AD3mLI;EACC,qBAAA;AC8mLL;;ADnnLG;EACC,oBAAA;ACsnLJ;;ADnnLI;EACC,qBAAA;ACsnLL;;ADnmLG;EACC,mBAAA;ACsmLJ;;ADnmLI;EACC,oBAAA;ACsmLL;;AD3mLG;EACC,mBAAA;AC8mLJ;;AD3mLI;EACC,oBAAA;AC8mLL;;ADnnLG;EACC,oBAAA;ACsnLJ;;ADnnLI;EACC,qBAAA;ACsnLL;;AD3nLG;EACC,oBAAA;AC8nLJ;;AD3nLI;EACC,qBAAA;AC8nLL;;ADnoLG;EACC,oBAAA;ACsoLJ;;ADnoLI;EACC,qBAAA;ACsoLL;;AD3oLG;EACC,oBAAA;AC8oLJ;;AD3oLI;EACC,qBAAA;AC8oLL;;ADnpLG;EACC,oBAAA;ACspLJ;;ADnpLI;EACC,qBAAA;ACspLL;;AD3pLG;EACC,oBAAA;AC8pLJ;;AD3pLI;EACC,qBAAA;AC8pLL;;ADnqLG;EACC,oBAAA;ACsqLJ;;ADnqLI;EACC,qBAAA;ACsqLL;;AD3qLG;EACC,oBAAA;AC8qLJ;;AD3qLI;EACC,qBAAA;AC8qLL;;ADnrLG;EACC,oBAAA;ACsrLJ;;ADnrLI;EACC,qBAAA;ACsrLL;;AD3rLG;EACC,oBAAA;AC8rLJ;;AD3rLI;EACC,qBAAA;AC8rLL;;ADnsLG;EACC,oBAAA;ACssLJ;;ADnsLI;EACC,qBAAA;ACssLL;;AD3sLG;EACC,oBAAA;AC8sLJ;;AD3sLI;EACC,qBAAA;AC8sLL;;ADntLG;EACC,oBAAA;ACstLJ;;ADntLI;EACC,qBAAA;ACstLL;;AD3tLG;EACC,oBAAA;AC8tLJ;;AD3tLI;EACC,qBAAA;AC8tLL;;ADnuLG;EACC,oBAAA;ACsuLJ;;ADnuLI;EACC,qBAAA;ACsuLL;;AD3uLG;EACC,oBAAA;AC8uLJ;;AD3uLI;EACC,qBAAA;AC8uLL;;ADnvLG;EACC,oBAAA;ACsvLJ;;ADnvLI;EACC,qBAAA;ACsvLL;;AD3vLG;EACC,oBAAA;AC8vLJ;;AD3vLI;EACC,qBAAA;AC8vLL;;ADnwLG;EACC,oBAAA;ACswLJ;;ADnwLI;EACC,qBAAA;ACswLL;;AD3wLG;EACC,oBAAA;AC8wLJ;;AD3wLI;EACC,qBAAA;AC8wLL;;ADnxLG;EACC,oBAAA;ACsxLJ;;ADnxLI;EACC,qBAAA;ACsxLL;;AD3xLG;EACC,oBAAA;AC8xLJ;;AD3xLI;EACC,qBAAA;AC8xLL;;ADnyLG;EACC,qBAAA;ACsyLJ;;ADnyLI;EACC,sBAAA;ACsyLL;;ADn0LG;EACC,iBAAA;ACs0LJ;;ADn0LI;EACC,kBAAA;ACs0LL;;AD30LG;EACC,iBAAA;AC80LJ;;AD30LI;EACC,kBAAA;AC80LL;;ADn1LG;EACC,iBAAA;ACs1LJ;;ADn1LI;EACC,kBAAA;ACs1LL;;AD31LG;EACC,iBAAA;AC81LJ;;AD31LI;EACC,kBAAA;AC81LL;;ADn2LG;EACC,iBAAA;ACs2LJ;;ADn2LI;EACC,kBAAA;ACs2LL;;AD32LG;EACC,iBAAA;AC82LJ;;AD32LI;EACC,kBAAA;AC82LL;;ADn3LG;EACC,iBAAA;ACs3LJ;;ADn3LI;EACC,kBAAA;ACs3LL;;AD33LG;EACC,iBAAA;AC83LJ;;AD33LI;EACC,kBAAA;AC83LL;;ADn4LG;EACC,iBAAA;ACs4LJ;;ADn4LI;EACC,kBAAA;ACs4LL;;AD34LG;EACC,iBAAA;AC84LJ;;AD34LI;EACC,kBAAA;AC84LL;;ADn5LG;EACC,kBAAA;ACs5LJ;;ADn5LI;EACC,mBAAA;ACs5LL;;AD35LG;EACC,kBAAA;AC85LJ;;AD35LI;EACC,mBAAA;AC85LL;;ADn6LG;EACC,kBAAA;ACs6LJ;;ADn6LI;EACC,mBAAA;ACs6LL;;AD36LG;EACC,kBAAA;AC86LJ;;AD36LI;EACC,mBAAA;AC86LL;;ADn7LG;EACC,kBAAA;ACs7LJ;;ADn7LI;EACC,mBAAA;ACs7LL;;AD37LG;EACC,kBAAA;AC87LJ;;AD37LI;EACC,mBAAA;AC87LL;;ADn8LG;EACC,kBAAA;ACs8LJ;;ADn8LI;EACC,mBAAA;ACs8LL;;AD38LG;EACC,kBAAA;AC88LJ;;AD38LI;EACC,mBAAA;AC88LL;;ADn9LG;EACC,kBAAA;ACs9LJ;;ADn9LI;EACC,mBAAA;ACs9LL;;AD39LG;EACC,kBAAA;AC89LJ;;AD39LI;EACC,mBAAA;AC89LL;;ADn+LG;EACC,kBAAA;ACs+LJ;;ADn+LI;EACC,mBAAA;ACs+LL;;AD3+LG;EACC,kBAAA;AC8+LJ;;AD3+LI;EACC,mBAAA;AC8+LL;;ADn/LG;EACC,kBAAA;ACs/LJ;;ADn/LI;EACC,mBAAA;ACs/LL;;AD3/LG;EACC,kBAAA;AC8/LJ;;AD3/LI;EACC,mBAAA;AC8/LL;;ADngMG;EACC,kBAAA;ACsgMJ;;ADngMI;EACC,mBAAA;ACsgML;;AD3gMG;EACC,kBAAA;AC8gMJ;;AD3gMI;EACC,mBAAA;AC8gML;;ADnhMG;EACC,kBAAA;ACshMJ;;ADnhMI;EACC,mBAAA;ACshML;;AD3hMG;EACC,kBAAA;AC8hMJ;;AD3hMI;EACC,mBAAA;AC8hML;;ADniMG;EACC,kBAAA;ACsiMJ;;ADniMI;EACC,mBAAA;ACsiML;;AD3iMG;EACC,kBAAA;AC8iMJ;;AD3iMI;EACC,mBAAA;AC8iML;;ADnjMG;EACC,kBAAA;ACsjMJ;;ADnjMI;EACC,mBAAA;ACsjML;;AD3jMG;EACC,kBAAA;AC8jMJ;;AD3jMI;EACC,mBAAA;AC8jML;;ADnkMG;EACC,kBAAA;ACskMJ;;ADnkMI;EACC,mBAAA;ACskML;;AD3kMG;EACC,kBAAA;AC8kMJ;;AD3kMI;EACC,mBAAA;AC8kML;;ADnlMG;EACC,kBAAA;ACslMJ;;ADnlMI;EACC,mBAAA;ACslML;;AD3lMG;EACC,kBAAA;AC8lMJ;;AD3lMI;EACC,mBAAA;AC8lML;;ADnmMG;EACC,kBAAA;ACsmMJ;;ADnmMI;EACC,mBAAA;ACsmML;;AD3mMG;EACC,kBAAA;AC8mMJ;;AD3mMI;EACC,mBAAA;AC8mML;;ADnnMG;EACC,kBAAA;ACsnMJ;;ADnnMI;EACC,mBAAA;ACsnML;;AD3nMG;EACC,kBAAA;AC8nMJ;;AD3nMI;EACC,mBAAA;AC8nML;;ADnoMG;EACC,kBAAA;ACsoMJ;;ADnoMI;EACC,mBAAA;ACsoML;;AD3oMG;EACC,kBAAA;AC8oMJ;;AD3oMI;EACC,mBAAA;AC8oML;;ADnpMG;EACC,kBAAA;ACspMJ;;ADnpMI;EACC,mBAAA;ACspML;;AD3pMG;EACC,kBAAA;AC8pMJ;;AD3pMI;EACC,mBAAA;AC8pML;;ADnqMG;EACC,kBAAA;ACsqMJ;;ADnqMI;EACC,mBAAA;ACsqML;;AD3qMG;EACC,kBAAA;AC8qMJ;;AD3qMI;EACC,mBAAA;AC8qML;;ADnrMG;EACC,kBAAA;ACsrMJ;;ADnrMI;EACC,mBAAA;ACsrML;;AD3rMG;EACC,kBAAA;AC8rMJ;;AD3rMI;EACC,mBAAA;AC8rML;;ADnsMG;EACC,kBAAA;ACssMJ;;ADnsMI;EACC,mBAAA;ACssML;;AD3sMG;EACC,kBAAA;AC8sMJ;;AD3sMI;EACC,mBAAA;AC8sML;;ADntMG;EACC,kBAAA;ACstMJ;;ADntMI;EACC,mBAAA;ACstML;;ADnsMG;EACC,iBAAA;ACssMJ;;ADnsMI;EACC,kBAAA;ACssML;;AD3sMG;EACC,iBAAA;AC8sMJ;;AD3sMI;EACC,kBAAA;AC8sML;;ADntMG;EACC,kBAAA;ACstMJ;;ADntMI;EACC,mBAAA;ACstML;;AD3tMG;EACC,kBAAA;AC8tMJ;;AD3tMI;EACC,mBAAA;AC8tML;;ADnuMG;EACC,kBAAA;ACsuMJ;;ADnuMI;EACC,mBAAA;ACsuML;;AD3uMG;EACC,kBAAA;AC8uMJ;;AD3uMI;EACC,mBAAA;AC8uML;;ADnvMG;EACC,kBAAA;ACsvMJ;;ADnvMI;EACC,mBAAA;ACsvML;;AD3vMG;EACC,kBAAA;AC8vMJ;;AD3vMI;EACC,mBAAA;AC8vML;;ADnwMG;EACC,kBAAA;ACswMJ;;ADnwMI;EACC,mBAAA;ACswML;;AD3wMG;EACC,kBAAA;AC8wMJ;;AD3wMI;EACC,mBAAA;AC8wML;;ADnxMG;EACC,kBAAA;ACsxMJ;;ADnxMI;EACC,mBAAA;ACsxML;;AD3xMG;EACC,kBAAA;AC8xMJ;;AD3xMI;EACC,mBAAA;AC8xML;;ADnyMG;EACC,kBAAA;ACsyMJ;;ADnyMI;EACC,mBAAA;ACsyML;;AD3yMG;EACC,kBAAA;AC8yMJ;;AD3yMI;EACC,mBAAA;AC8yML;;ADnzMG;EACC,kBAAA;ACszMJ;;ADnzMI;EACC,mBAAA;ACszML;;AD3zMG;EACC,kBAAA;AC8zMJ;;AD3zMI;EACC,mBAAA;AC8zML;;ADn0MG;EACC,kBAAA;ACs0MJ;;ADn0MI;EACC,mBAAA;ACs0ML;;AD30MG;EACC,kBAAA;AC80MJ;;AD30MI;EACC,mBAAA;AC80ML;;ADn1MG;EACC,kBAAA;ACs1MJ;;ADn1MI;EACC,mBAAA;ACs1ML;;AD31MG;EACC,kBAAA;AC81MJ;;AD31MI;EACC,mBAAA;AC81ML;;ADn2MG;EACC,kBAAA;ACs2MJ;;ADn2MI;EACC,mBAAA;ACs2ML;;AD32MG;EACC,kBAAA;AC82MJ;;AD32MI;EACC,mBAAA;AC82ML;;ADn3MG;EACC,kBAAA;ACs3MJ;;ADn3MI;EACC,mBAAA;ACs3ML;;AD33MG;EACC,kBAAA;AC83MJ;;AD33MI;EACC,mBAAA;AC83ML;;ADn4MG;EACC,mBAAA;ACs4MJ;;ADn4MI;EACC,oBAAA;ACs4ML;;ADz5MG;EACC,iBAAA;EACA,kBAAA;AC45MJ;;AD95MG;EACC,iBAAA;EACA,kBAAA;ACi6MJ;;ADn6MG;EACC,iBAAA;EACA,kBAAA;ACs6MJ;;ADx6MG;EACC,iBAAA;EACA,kBAAA;AC26MJ;;AD76MG;EACC,iBAAA;EACA,kBAAA;ACg7MJ;;ADl7MG;EACC,iBAAA;EACA,kBAAA;ACq7MJ;;ADv7MG;EACC,iBAAA;EACA,kBAAA;AC07MJ;;AD57MG;EACC,iBAAA;EACA,kBAAA;AC+7MJ;;ADj8MG;EACC,iBAAA;EACA,kBAAA;ACo8MJ;;ADt8MG;EACC,iBAAA;EACA,kBAAA;ACy8MJ;;AD38MG;EACC,kBAAA;EACA,mBAAA;AC88MJ;;ADh9MG;EACC,kBAAA;EACA,mBAAA;ACm9MJ;;ADr9MG;EACC,kBAAA;EACA,mBAAA;ACw9MJ;;AD19MG;EACC,kBAAA;EACA,mBAAA;AC69MJ;;AD/9MG;EACC,kBAAA;EACA,mBAAA;ACk+MJ;;ADp+MG;EACC,kBAAA;EACA,mBAAA;ACu+MJ;;ADz+MG;EACC,kBAAA;EACA,mBAAA;AC4+MJ;;AD9+MG;EACC,kBAAA;EACA,mBAAA;ACi/MJ;;ADn/MG;EACC,kBAAA;EACA,mBAAA;ACs/MJ;;ADx/MG;EACC,kBAAA;EACA,mBAAA;AC2/MJ;;AD7/MG;EACC,kBAAA;EACA,mBAAA;ACggNJ;;ADlgNG;EACC,kBAAA;EACA,mBAAA;ACqgNJ;;ADvgNG;EACC,kBAAA;EACA,mBAAA;AC0gNJ;;AD5gNG;EACC,kBAAA;EACA,mBAAA;AC+gNJ;;ADjhNG;EACC,kBAAA;EACA,mBAAA;ACohNJ;;ADthNG;EACC,kBAAA;EACA,mBAAA;ACyhNJ;;AD3hNG;EACC,kBAAA;EACA,mBAAA;AC8hNJ;;ADhiNG;EACC,kBAAA;EACA,mBAAA;ACmiNJ;;ADriNG;EACC,kBAAA;EACA,mBAAA;ACwiNJ;;AD1iNG;EACC,kBAAA;EACA,mBAAA;AC6iNJ;;AD/iNG;EACC,kBAAA;EACA,mBAAA;ACkjNJ;;ADpjNG;EACC,kBAAA;EACA,mBAAA;ACujNJ;;ADzjNG;EACC,kBAAA;EACA,mBAAA;AC4jNJ;;AD9jNG;EACC,kBAAA;EACA,mBAAA;ACikNJ;;ADnkNG;EACC,kBAAA;EACA,mBAAA;ACskNJ;;ADxkNG;EACC,kBAAA;EACA,mBAAA;AC2kNJ;;AD7kNG;EACC,kBAAA;EACA,mBAAA;ACglNJ;;ADllNG;EACC,kBAAA;EACA,mBAAA;ACqlNJ;;ADvlNG;EACC,kBAAA;EACA,mBAAA;AC0lNJ;;AD5lNG;EACC,kBAAA;EACA,mBAAA;AC+lNJ;;ADjmNG;EACC,kBAAA;EACA,mBAAA;AComNJ;;ADtmNG;EACC,kBAAA;EACA,mBAAA;ACymNJ;;AD3mNG;EACC,kBAAA;EACA,mBAAA;AC8mNJ;;ADhnNG;EACC,kBAAA;EACA,mBAAA;ACmnNJ;;ADrnNG;EACC,kBAAA;EACA,mBAAA;ACwnNJ;;AD1nNG;EACC,kBAAA;EACA,mBAAA;AC6nNJ;;AD/nNG;EACC,kBAAA;EACA,mBAAA;ACkoNJ;;ADpoNG;EACC,kBAAA;EACA,mBAAA;ACuoNJ;;ADzoNG;EACC,kBAAA;EACA,mBAAA;AC4oNJ;;AD9oNG;EACC,kBAAA;EACA,mBAAA;ACipNJ;;ADnpNG;EACC,kBAAA;EACA,mBAAA;ACspNJ;;ADhoNG;EACC,iBAAA;EACA,kBAAA;ACmoNJ;;ADroNG;EACC,iBAAA;EACA,kBAAA;ACwoNJ;;AD1oNG;EACC,kBAAA;EACA,mBAAA;AC6oNJ;;AD/oNG;EACC,kBAAA;EACA,mBAAA;ACkpNJ;;ADppNG;EACC,kBAAA;EACA,mBAAA;ACupNJ;;ADzpNG;EACC,kBAAA;EACA,mBAAA;AC4pNJ;;AD9pNG;EACC,kBAAA;EACA,mBAAA;ACiqNJ;;ADnqNG;EACC,kBAAA;EACA,mBAAA;ACsqNJ;;ADxqNG;EACC,kBAAA;EACA,mBAAA;AC2qNJ;;AD7qNG;EACC,kBAAA;EACA,mBAAA;ACgrNJ;;ADlrNG;EACC,kBAAA;EACA,mBAAA;ACqrNJ;;ADvrNG;EACC,kBAAA;EACA,mBAAA;AC0rNJ;;AD5rNG;EACC,kBAAA;EACA,mBAAA;AC+rNJ;;ADjsNG;EACC,kBAAA;EACA,mBAAA;ACosNJ;;ADtsNG;EACC,kBAAA;EACA,mBAAA;ACysNJ;;AD3sNG;EACC,kBAAA;EACA,mBAAA;AC8sNJ;;ADhtNG;EACC,kBAAA;EACA,mBAAA;ACmtNJ;;ADrtNG;EACC,kBAAA;EACA,mBAAA;ACwtNJ;;AD1tNG;EACC,kBAAA;EACA,mBAAA;AC6tNJ;;AD/tNG;EACC,kBAAA;EACA,mBAAA;ACkuNJ;;ADpuNG;EACC,kBAAA;EACA,mBAAA;ACuuNJ;;ADzuNG;EACC,kBAAA;EACA,mBAAA;AC4uNJ;;AD9uNG;EACC,kBAAA;EACA,mBAAA;ACivNJ;;ADnvNG;EACC,kBAAA;EACA,mBAAA;ACsvNJ;;ADxvNG;EACC,mBAAA;EACA,oBAAA;AC2vNJ;;AD/wNG;EACC,gBAAA;EACA,mBAAA;ACkxNJ;;ADpxNG;EACC,gBAAA;EACA,mBAAA;ACuxNJ;;ADzxNG;EACC,gBAAA;EACA,mBAAA;AC4xNJ;;AD9xNG;EACC,gBAAA;EACA,mBAAA;ACiyNJ;;ADnyNG;EACC,gBAAA;EACA,mBAAA;ACsyNJ;;ADxyNG;EACC,gBAAA;EACA,mBAAA;AC2yNJ;;AD7yNG;EACC,gBAAA;EACA,mBAAA;ACgzNJ;;ADlzNG;EACC,gBAAA;EACA,mBAAA;ACqzNJ;;ADvzNG;EACC,gBAAA;EACA,mBAAA;AC0zNJ;;AD5zNG;EACC,gBAAA;EACA,mBAAA;AC+zNJ;;ADj0NG;EACC,iBAAA;EACA,oBAAA;ACo0NJ;;ADt0NG;EACC,iBAAA;EACA,oBAAA;ACy0NJ;;AD30NG;EACC,iBAAA;EACA,oBAAA;AC80NJ;;ADh1NG;EACC,iBAAA;EACA,oBAAA;ACm1NJ;;ADr1NG;EACC,iBAAA;EACA,oBAAA;ACw1NJ;;AD11NG;EACC,iBAAA;EACA,oBAAA;AC61NJ;;AD/1NG;EACC,iBAAA;EACA,oBAAA;ACk2NJ;;ADp2NG;EACC,iBAAA;EACA,oBAAA;ACu2NJ;;ADz2NG;EACC,iBAAA;EACA,oBAAA;AC42NJ;;AD92NG;EACC,iBAAA;EACA,oBAAA;ACi3NJ;;ADn3NG;EACC,iBAAA;EACA,oBAAA;ACs3NJ;;ADx3NG;EACC,iBAAA;EACA,oBAAA;AC23NJ;;AD73NG;EACC,iBAAA;EACA,oBAAA;ACg4NJ;;ADl4NG;EACC,iBAAA;EACA,oBAAA;ACq4NJ;;ADv4NG;EACC,iBAAA;EACA,oBAAA;AC04NJ;;AD54NG;EACC,iBAAA;EACA,oBAAA;AC+4NJ;;ADj5NG;EACC,iBAAA;EACA,oBAAA;ACo5NJ;;ADt5NG;EACC,iBAAA;EACA,oBAAA;ACy5NJ;;AD35NG;EACC,iBAAA;EACA,oBAAA;AC85NJ;;ADh6NG;EACC,iBAAA;EACA,oBAAA;ACm6NJ;;ADr6NG;EACC,iBAAA;EACA,oBAAA;ACw6NJ;;AD16NG;EACC,iBAAA;EACA,oBAAA;AC66NJ;;AD/6NG;EACC,iBAAA;EACA,oBAAA;ACk7NJ;;ADp7NG;EACC,iBAAA;EACA,oBAAA;ACu7NJ;;ADz7NG;EACC,iBAAA;EACA,oBAAA;AC47NJ;;AD97NG;EACC,iBAAA;EACA,oBAAA;ACi8NJ;;ADn8NG;EACC,iBAAA;EACA,oBAAA;ACs8NJ;;ADx8NG;EACC,iBAAA;EACA,oBAAA;AC28NJ;;AD78NG;EACC,iBAAA;EACA,oBAAA;ACg9NJ;;ADl9NG;EACC,iBAAA;EACA,oBAAA;ACq9NJ;;ADv9NG;EACC,iBAAA;EACA,oBAAA;AC09NJ;;AD59NG;EACC,iBAAA;EACA,oBAAA;AC+9NJ;;ADj+NG;EACC,iBAAA;EACA,oBAAA;ACo+NJ;;ADt+NG;EACC,iBAAA;EACA,oBAAA;ACy+NJ;;AD3+NG;EACC,iBAAA;EACA,oBAAA;AC8+NJ;;ADh/NG;EACC,iBAAA;EACA,oBAAA;ACm/NJ;;ADr/NG;EACC,iBAAA;EACA,oBAAA;ACw/NJ;;AD1/NG;EACC,iBAAA;EACA,oBAAA;AC6/NJ;;AD//NG;EACC,iBAAA;EACA,oBAAA;ACkgOJ;;ADpgOG;EACC,iBAAA;EACA,oBAAA;ACugOJ;;ADzgOG;EACC,iBAAA;EACA,oBAAA;AC4gOJ;;ADt/NG;EACC,gBAAA;EACA,mBAAA;ACy/NJ;;AD3/NG;EACC,gBAAA;EACA,mBAAA;AC8/NJ;;ADhgOG;EACC,iBAAA;EACA,oBAAA;ACmgOJ;;ADrgOG;EACC,iBAAA;EACA,oBAAA;ACwgOJ;;AD1gOG;EACC,iBAAA;EACA,oBAAA;AC6gOJ;;AD/gOG;EACC,iBAAA;EACA,oBAAA;ACkhOJ;;ADphOG;EACC,iBAAA;EACA,oBAAA;ACuhOJ;;ADzhOG;EACC,iBAAA;EACA,oBAAA;AC4hOJ;;AD9hOG;EACC,iBAAA;EACA,oBAAA;ACiiOJ;;ADniOG;EACC,iBAAA;EACA,oBAAA;ACsiOJ;;ADxiOG;EACC,iBAAA;EACA,oBAAA;AC2iOJ;;AD7iOG;EACC,iBAAA;EACA,oBAAA;ACgjOJ;;ADljOG;EACC,iBAAA;EACA,oBAAA;ACqjOJ;;ADvjOG;EACC,iBAAA;EACA,oBAAA;AC0jOJ;;AD5jOG;EACC,iBAAA;EACA,oBAAA;AC+jOJ;;ADjkOG;EACC,iBAAA;EACA,oBAAA;ACokOJ;;ADtkOG;EACC,iBAAA;EACA,oBAAA;ACykOJ;;AD3kOG;EACC,iBAAA;EACA,oBAAA;AC8kOJ;;ADhlOG;EACC,iBAAA;EACA,oBAAA;ACmlOJ;;ADrlOG;EACC,iBAAA;EACA,oBAAA;ACwlOJ;;AD1lOG;EACC,iBAAA;EACA,oBAAA;AC6lOJ;;AD/lOG;EACC,iBAAA;EACA,oBAAA;ACkmOJ;;ADpmOG;EACC,iBAAA;EACA,oBAAA;ACumOJ;;ADzmOG;EACC,iBAAA;EACA,oBAAA;AC4mOJ;;AD9mOG;EACC,kBAAA;EACA,qBAAA;ACinOJ;;ADzmOE;EACC,SAAA;AC4mOH;;AD1mOE;EACC,UAAA;AC6mOH;;ADjnOE;EACC,SAAA;AConOH;;ADlnOE;EACC,UAAA;ACqnOH;;ADznOE;EACC,SAAA;AC4nOH;;AD1nOE;EACC,UAAA;AC6nOH;;ADjoOE;EACC,SAAA;ACooOH;;ADloOE;EACC,UAAA;ACqoOH;;ADzoOE;EACC,SAAA;AC4oOH;;AD1oOE;EACC,UAAA;AC6oOH;;ADjpOE;EACC,SAAA;ACopOH;;ADlpOE;EACC,UAAA;ACqpOH;;ADzpOE;EACC,SAAA;AC4pOH;;AD1pOE;EACC,UAAA;AC6pOH;;ADjqOE;EACC,SAAA;ACoqOH;;ADlqOE;EACC,UAAA;ACqqOH;;ADzqOE;EACC,SAAA;AC4qOH;;AD1qOE;EACC,UAAA;AC6qOH;;ADjrOE;EACC,SAAA;ACorOH;;ADlrOE;EACC,UAAA;ACqrOH;;ADzrOE;EACC,UAAA;AC4rOH;;AD1rOE;EACC,WAAA;AC6rOH;;ADjsOE;EACC,UAAA;ACosOH;;ADlsOE;EACC,WAAA;ACqsOH;;ADzsOE;EACC,UAAA;AC4sOH;;AD1sOE;EACC,WAAA;AC6sOH;;ADjtOE;EACC,UAAA;ACotOH;;ADltOE;EACC,WAAA;ACqtOH;;ADztOE;EACC,UAAA;AC4tOH;;AD1tOE;EACC,WAAA;AC6tOH;;ADjuOE;EACC,UAAA;ACouOH;;ADluOE;EACC,WAAA;ACquOH;;ADzuOE;EACC,UAAA;AC4uOH;;AD1uOE;EACC,WAAA;AC6uOH;;ADjvOE;EACC,UAAA;ACovOH;;ADlvOE;EACC,WAAA;ACqvOH;;ADzvOE;EACC,UAAA;AC4vOH;;AD1vOE;EACC,WAAA;AC6vOH;;ADjwOE;EACC,UAAA;ACowOH;;ADlwOE;EACC,WAAA;ACqwOH;;ADzwOE;EACC,UAAA;AC4wOH;;AD1wOE;EACC,WAAA;AC6wOH;;ADjxOE;EACC,UAAA;ACoxOH;;ADlxOE;EACC,WAAA;ACqxOH;;ADzxOE;EACC,UAAA;AC4xOH;;AD1xOE;EACC,WAAA;AC6xOH;;ADjyOE;EACC,UAAA;ACoyOH;;ADlyOE;EACC,WAAA;ACqyOH;;ADzyOE;EACC,UAAA;AC4yOH;;AD1yOE;EACC,WAAA;AC6yOH;;ADjzOE;EACC,UAAA;ACozOH;;ADlzOE;EACC,WAAA;ACqzOH;;ADzzOE;EACC,UAAA;AC4zOH;;AD1zOE;EACC,WAAA;AC6zOH;;ADj0OE;EACC,UAAA;ACo0OH;;ADl0OE;EACC,WAAA;ACq0OH;;ADz0OE;EACC,UAAA;AC40OH;;AD10OE;EACC,WAAA;AC60OH;;ADj1OE;EACC,UAAA;ACo1OH;;ADl1OE;EACC,WAAA;ACq1OH;;ADz1OE;EACC,UAAA;AC41OH;;AD11OE;EACC,WAAA;AC61OH;;ADj2OE;EACC,UAAA;ACo2OH;;ADl2OE;EACC,WAAA;ACq2OH;;ADz2OE;EACC,UAAA;AC42OH;;AD12OE;EACC,WAAA;AC62OH;;ADj3OE;EACC,UAAA;ACo3OH;;ADl3OE;EACC,WAAA;ACq3OH;;ADz3OE;EACC,UAAA;AC43OH;;AD13OE;EACC,WAAA;AC63OH;;ADj4OE;EACC,UAAA;ACo4OH;;ADl4OE;EACC,WAAA;ACq4OH;;ADz4OE;EACC,UAAA;AC44OH;;AD14OE;EACC,WAAA;AC64OH;;ADj5OE;EACC,UAAA;ACo5OH;;ADl5OE;EACC,WAAA;ACq5OH;;ADz5OE;EACC,UAAA;AC45OH;;AD15OE;EACC,WAAA;AC65OH;;ADj6OE;EACC,UAAA;ACo6OH;;ADl6OE;EACC,WAAA;ACq6OH;;ADz6OE;EACC,UAAA;AC46OH;;AD16OE;EACC,WAAA;AC66OH;;ADj7OE;EACC,UAAA;ACo7OH;;ADl7OE;EACC,WAAA;ACq7OH;;ADz7OE;EACC,UAAA;AC47OH;;AD17OE;EACC,WAAA;AC67OH;;ADj8OE;EACC,UAAA;ACo8OH;;ADl8OE;EACC,WAAA;ACq8OH;;ADz8OE;EACC,UAAA;AC48OH;;AD18OE;EACC,WAAA;AC68OH;;ADj9OE;EACC,UAAA;ACo9OH;;ADl9OE;EACC,WAAA;ACq9OH;;ADz9OE;EACC,UAAA;AC49OH;;AD19OE;EACC,WAAA;AC69OH;;ADj+OE;EACC,UAAA;ACo+OH;;ADl+OE;EACC,WAAA;ACq+OH;;ADz+OE;EACC,UAAA;AC4+OH;;AD1+OE;EACC,WAAA;AC6+OH;;ADj/OE;EACC,UAAA;ACo/OH;;ADl/OE;EACC,WAAA;ACq/OH;;ADz/OE;EACC,UAAA;AC4/OH;;AD1/OE;EACC,WAAA;AC6/OH;;ADz/OE;EACC,SAAA;AC4/OH;;AD1/OE;EACC,UAAA;AC6/OH;;ADjgPE;EACC,SAAA;ACogPH;;ADlgPE;EACC,UAAA;ACqgPH;;ADzgPE;EACC,UAAA;AC4gPH;;AD1gPE;EACC,WAAA;AC6gPH;;ADjhPE;EACC,UAAA;ACohPH;;ADlhPE;EACC,WAAA;ACqhPH;;ADzhPE;EACC,UAAA;AC4hPH;;AD1hPE;EACC,WAAA;AC6hPH;;ADjiPE;EACC,UAAA;ACoiPH;;ADliPE;EACC,WAAA;ACqiPH;;ADziPE;EACC,UAAA;AC4iPH;;AD1iPE;EACC,WAAA;AC6iPH;;ADjjPE;EACC,UAAA;ACojPH;;ADljPE;EACC,WAAA;ACqjPH;;ADzjPE;EACC,UAAA;AC4jPH;;AD1jPE;EACC,WAAA;AC6jPH;;ADjkPE;EACC,UAAA;ACokPH;;ADlkPE;EACC,WAAA;ACqkPH;;ADzkPE;EACC,UAAA;AC4kPH;;AD1kPE;EACC,WAAA;AC6kPH;;ADjlPE;EACC,UAAA;AColPH;;ADllPE;EACC,WAAA;ACqlPH;;ADzlPE;EACC,UAAA;AC4lPH;;AD1lPE;EACC,WAAA;AC6lPH;;ADjmPE;EACC,UAAA;AComPH;;ADlmPE;EACC,WAAA;ACqmPH;;ADzmPE;EACC,UAAA;AC4mPH;;AD1mPE;EACC,WAAA;AC6mPH;;ADjnPE;EACC,UAAA;AConPH;;ADlnPE;EACC,WAAA;ACqnPH;;ADznPE;EACC,UAAA;AC4nPH;;AD1nPE;EACC,WAAA;AC6nPH;;ADjoPE;EACC,UAAA;ACooPH;;ADloPE;EACC,WAAA;ACqoPH;;ADzoPE;EACC,UAAA;AC4oPH;;AD1oPE;EACC,WAAA;AC6oPH;;ADjpPE;EACC,UAAA;ACopPH;;ADlpPE;EACC,WAAA;ACqpPH;;ADzpPE;EACC,UAAA;AC4pPH;;AD1pPE;EACC,WAAA;AC6pPH;;ADjqPE;EACC,UAAA;ACoqPH;;ADlqPE;EACC,WAAA;ACqqPH;;ADzqPE;EACC,UAAA;AC4qPH;;AD1qPE;EACC,WAAA;AC6qPH;;ADjrPE;EACC,UAAA;ACorPH;;ADlrPE;EACC,WAAA;ACqrPH;;ADzrPE;EACC,WAAA;AC4rPH;;AD1rPE;EACC,YAAA;AC6rPH;;ADzsPE;EACC,WAAA;AC4sPH;;AD1sPE;EACC,YAAA;AC6sPH;;ADjtPE;EACC,WAAA;ACotPH;;ADltPE;EACC,YAAA;ACqtPH;;ADztPE;EACC,WAAA;AC4tPH;;AD1tPE;EACC,YAAA;AC6tPH;;ADjuPE;EACC,WAAA;ACouPH;;ADluPE;EACC,YAAA;ACquPH;;ADzuPE;EACC,WAAA;AC4uPH;;AD1uPE;EACC,YAAA;AC6uPH;;ADjvPE;EACC,WAAA;ACovPH;;ADlvPE;EACC,YAAA;ACqvPH;;ADzvPE;EACC,WAAA;AC4vPH;;AD1vPE;EACC,YAAA;AC6vPH;;ADjwPE;EACC,WAAA;ACowPH;;ADlwPE;EACC,YAAA;ACqwPH;;ADzwPE;EACC,WAAA;AC4wPH;;AD1wPE;EACC,YAAA;AC6wPH;;ADjxPE;EACC,WAAA;ACoxPH;;ADlxPE;EACC,YAAA;ACqxPH;;ADzxPE;EACC,YAAA;AC4xPH;;AD1xPE;EACC,aAAA;AC6xPH;;ADjyPE;EACC,YAAA;ACoyPH;;ADlyPE;EACC,aAAA;ACqyPH;;ADzyPE;EACC,YAAA;AC4yPH;;AD1yPE;EACC,aAAA;AC6yPH;;ADjzPE;EACC,YAAA;ACozPH;;ADlzPE;EACC,aAAA;ACqzPH;;ADzzPE;EACC,YAAA;AC4zPH;;AD1zPE;EACC,aAAA;AC6zPH;;ADj0PE;EACC,YAAA;ACo0PH;;ADl0PE;EACC,aAAA;ACq0PH;;ADz0PE;EACC,YAAA;AC40PH;;AD10PE;EACC,aAAA;AC60PH;;ADj1PE;EACC,YAAA;ACo1PH;;ADl1PE;EACC,aAAA;ACq1PH;;ADz1PE;EACC,YAAA;AC41PH;;AD11PE;EACC,aAAA;AC61PH;;ADj2PE;EACC,YAAA;ACo2PH;;ADl2PE;EACC,aAAA;ACq2PH;;ADz2PE;EACC,YAAA;AC42PH;;AD12PE;EACC,aAAA;AC62PH;;ADj3PE;EACC,YAAA;ACo3PH;;ADl3PE;EACC,aAAA;ACq3PH;;ADz3PE;EACC,YAAA;AC43PH;;AD13PE;EACC,aAAA;AC63PH;;ADj4PE;EACC,YAAA;ACo4PH;;ADl4PE;EACC,aAAA;ACq4PH;;ADz4PE;EACC,YAAA;AC44PH;;AD14PE;EACC,aAAA;AC64PH;;ADj5PE;EACC,YAAA;ACo5PH;;ADl5PE;EACC,aAAA;ACq5PH;;ADz5PE;EACC,YAAA;AC45PH;;AD15PE;EACC,aAAA;AC65PH;;ADj6PE;EACC,YAAA;ACo6PH;;ADl6PE;EACC,aAAA;ACq6PH;;ADz6PE;EACC,YAAA;AC46PH;;AD16PE;EACC,aAAA;AC66PH;;ADj7PE;EACC,YAAA;ACo7PH;;ADl7PE;EACC,aAAA;ACq7PH;;ADz7PE;EACC,YAAA;AC47PH;;AD17PE;EACC,aAAA;AC67PH;;ADj8PE;EACC,YAAA;ACo8PH;;ADl8PE;EACC,aAAA;ACq8PH;;ADz8PE;EACC,YAAA;AC48PH;;AD18PE;EACC,aAAA;AC68PH;;ADj9PE;EACC,YAAA;ACo9PH;;ADl9PE;EACC,aAAA;ACq9PH;;ADz9PE;EACC,YAAA;AC49PH;;AD19PE;EACC,aAAA;AC69PH;;ADj+PE;EACC,YAAA;ACo+PH;;ADl+PE;EACC,aAAA;ACq+PH;;ADz+PE;EACC,YAAA;AC4+PH;;AD1+PE;EACC,aAAA;AC6+PH;;ADj/PE;EACC,YAAA;ACo/PH;;ADl/PE;EACC,aAAA;ACq/PH;;ADz/PE;EACC,YAAA;AC4/PH;;AD1/PE;EACC,aAAA;AC6/PH;;ADjgQE;EACC,YAAA;ACogQH;;ADlgQE;EACC,aAAA;ACqgQH;;ADzgQE;EACC,YAAA;AC4gQH;;AD1gQE;EACC,aAAA;AC6gQH;;ADjhQE;EACC,YAAA;ACohQH;;ADlhQE;EACC,aAAA;ACqhQH;;ADzhQE;EACC,YAAA;AC4hQH;;AD1hQE;EACC,aAAA;AC6hQH;;ADjiQE;EACC,YAAA;ACoiQH;;ADliQE;EACC,aAAA;ACqiQH;;ADziQE;EACC,YAAA;AC4iQH;;AD1iQE;EACC,aAAA;AC6iQH;;ADjjQE;EACC,YAAA;ACojQH;;ADljQE;EACC,aAAA;ACqjQH;;ADzjQE;EACC,YAAA;AC4jQH;;AD1jQE;EACC,aAAA;AC6jQH;;ADjkQE;EACC,YAAA;ACokQH;;ADlkQE;EACC,aAAA;ACqkQH;;ADzkQE;EACC,YAAA;AC4kQH;;AD1kQE;EACC,aAAA;AC6kQH;;ADjlQE;EACC,YAAA;AColQH;;ADllQE;EACC,aAAA;ACqlQH;;ADzlQE;EACC,YAAA;AC4lQH;;AD1lQE;EACC,aAAA;AC6lQH;;ADzlQE;EACC,WAAA;AC4lQH;;AD1lQE;EACC,YAAA;AC6lQH;;ADjmQE;EACC,WAAA;AComQH;;ADlmQE;EACC,YAAA;ACqmQH;;ADzmQE;EACC,YAAA;AC4mQH;;AD1mQE;EACC,aAAA;AC6mQH;;ADjnQE;EACC,YAAA;AConQH;;ADlnQE;EACC,aAAA;ACqnQH;;ADznQE;EACC,YAAA;AC4nQH;;AD1nQE;EACC,aAAA;AC6nQH;;ADjoQE;EACC,YAAA;ACooQH;;ADloQE;EACC,aAAA;ACqoQH;;ADzoQE;EACC,YAAA;AC4oQH;;AD1oQE;EACC,aAAA;AC6oQH;;ADjpQE;EACC,YAAA;ACopQH;;ADlpQE;EACC,aAAA;ACqpQH;;ADzpQE;EACC,YAAA;AC4pQH;;AD1pQE;EACC,aAAA;AC6pQH;;ADjqQE;EACC,YAAA;ACoqQH;;ADlqQE;EACC,aAAA;ACqqQH;;ADzqQE;EACC,YAAA;AC4qQH;;AD1qQE;EACC,aAAA;AC6qQH;;ADjrQE;EACC,YAAA;ACorQH;;ADlrQE;EACC,aAAA;ACqrQH;;ADzrQE;EACC,YAAA;AC4rQH;;AD1rQE;EACC,aAAA;AC6rQH;;ADjsQE;EACC,YAAA;ACosQH;;ADlsQE;EACC,aAAA;ACqsQH;;ADzsQE;EACC,YAAA;AC4sQH;;AD1sQE;EACC,aAAA;AC6sQH;;ADjtQE;EACC,YAAA;ACotQH;;ADltQE;EACC,aAAA;ACqtQH;;ADztQE;EACC,YAAA;AC4tQH;;AD1tQE;EACC,aAAA;AC6tQH;;ADjuQE;EACC,YAAA;ACouQH;;ADluQE;EACC,aAAA;ACquQH;;ADzuQE;EACC,YAAA;AC4uQH;;AD1uQE;EACC,aAAA;AC6uQH;;ADjvQE;EACC,YAAA;ACovQH;;ADlvQE;EACC,aAAA;ACqvQH;;ADzvQE;EACC,YAAA;AC4vQH;;AD1vQE;EACC,aAAA;AC6vQH;;ADjwQE;EACC,YAAA;ACowQH;;ADlwQE;EACC,aAAA;ACqwQH;;ADzwQE;EACC,YAAA;AC4wQH;;AD1wQE;EACC,aAAA;AC6wQH;;ADjxQE;EACC,YAAA;ACoxQH;;ADlxQE;EACC,aAAA;ACqxQH;;ADzxQE;EACC,aAAA;AC4xQH;;AD1xQE;EACC,cAAA;AC6xQH;;ADzyQE;EACC,YAAA;AC4yQH;;AD1yQE;EACC,aAAA;AC6yQH;;ADjzQE;EACC,YAAA;ACozQH;;ADlzQE;EACC,aAAA;ACqzQH;;ADzzQE;EACC,YAAA;AC4zQH;;AD1zQE;EACC,aAAA;AC6zQH;;ADj0QE;EACC,YAAA;ACo0QH;;ADl0QE;EACC,aAAA;ACq0QH;;ADz0QE;EACC,YAAA;AC40QH;;AD10QE;EACC,aAAA;AC60QH;;ADj1QE;EACC,YAAA;ACo1QH;;ADl1QE;EACC,aAAA;ACq1QH;;ADz1QE;EACC,YAAA;AC41QH;;AD11QE;EACC,aAAA;AC61QH;;ADj2QE;EACC,YAAA;ACo2QH;;ADl2QE;EACC,aAAA;ACq2QH;;ADz2QE;EACC,YAAA;AC42QH;;AD12QE;EACC,aAAA;AC62QH;;ADj3QE;EACC,YAAA;ACo3QH;;ADl3QE;EACC,aAAA;ACq3QH;;ADz3QE;EACC,aAAA;AC43QH;;AD13QE;EACC,cAAA;AC63QH;;ADj4QE;EACC,aAAA;ACo4QH;;ADl4QE;EACC,cAAA;ACq4QH;;ADz4QE;EACC,aAAA;AC44QH;;AD14QE;EACC,cAAA;AC64QH;;ADj5QE;EACC,aAAA;ACo5QH;;ADl5QE;EACC,cAAA;ACq5QH;;ADz5QE;EACC,aAAA;AC45QH;;AD15QE;EACC,cAAA;AC65QH;;ADj6QE;EACC,aAAA;ACo6QH;;ADl6QE;EACC,cAAA;ACq6QH;;ADz6QE;EACC,aAAA;AC46QH;;AD16QE;EACC,cAAA;AC66QH;;ADj7QE;EACC,aAAA;ACo7QH;;ADl7QE;EACC,cAAA;ACq7QH;;ADz7QE;EACC,aAAA;AC47QH;;AD17QE;EACC,cAAA;AC67QH;;ADj8QE;EACC,aAAA;ACo8QH;;ADl8QE;EACC,cAAA;ACq8QH;;ADz8QE;EACC,aAAA;AC48QH;;AD18QE;EACC,cAAA;AC68QH;;ADj9QE;EACC,aAAA;ACo9QH;;ADl9QE;EACC,cAAA;ACq9QH;;ADz9QE;EACC,aAAA;AC49QH;;AD19QE;EACC,cAAA;AC69QH;;ADj+QE;EACC,aAAA;ACo+QH;;ADl+QE;EACC,cAAA;ACq+QH;;ADz+QE;EACC,aAAA;AC4+QH;;AD1+QE;EACC,cAAA;AC6+QH;;ADj/QE;EACC,aAAA;ACo/QH;;ADl/QE;EACC,cAAA;ACq/QH;;ADz/QE;EACC,aAAA;AC4/QH;;AD1/QE;EACC,cAAA;AC6/QH;;ADjgRE;EACC,aAAA;ACogRH;;ADlgRE;EACC,cAAA;ACqgRH;;ADzgRE;EACC,aAAA;AC4gRH;;AD1gRE;EACC,cAAA;AC6gRH;;ADjhRE;EACC,aAAA;ACohRH;;ADlhRE;EACC,cAAA;ACqhRH;;ADzhRE;EACC,aAAA;AC4hRH;;AD1hRE;EACC,cAAA;AC6hRH;;ADjiRE;EACC,aAAA;ACoiRH;;ADliRE;EACC,cAAA;ACqiRH;;ADziRE;EACC,aAAA;AC4iRH;;AD1iRE;EACC,cAAA;AC6iRH;;ADjjRE;EACC,aAAA;ACojRH;;ADljRE;EACC,cAAA;ACqjRH;;ADzjRE;EACC,aAAA;AC4jRH;;AD1jRE;EACC,cAAA;AC6jRH;;ADjkRE;EACC,aAAA;ACokRH;;ADlkRE;EACC,cAAA;ACqkRH;;ADzkRE;EACC,aAAA;AC4kRH;;AD1kRE;EACC,cAAA;AC6kRH;;ADjlRE;EACC,aAAA;AColRH;;ADllRE;EACC,cAAA;ACqlRH;;ADzlRE;EACC,aAAA;AC4lRH;;AD1lRE;EACC,cAAA;AC6lRH;;ADjmRE;EACC,aAAA;AComRH;;ADlmRE;EACC,cAAA;ACqmRH;;ADzmRE;EACC,aAAA;AC4mRH;;AD1mRE;EACC,cAAA;AC6mRH;;ADjnRE;EACC,aAAA;AConRH;;ADlnRE;EACC,cAAA;ACqnRH;;ADznRE;EACC,aAAA;AC4nRH;;AD1nRE;EACC,cAAA;AC6nRH;;ADjoRE;EACC,aAAA;ACooRH;;ADloRE;EACC,cAAA;ACqoRH;;ADzoRE;EACC,aAAA;AC4oRH;;AD1oRE;EACC,cAAA;AC6oRH;;ADjpRE;EACC,aAAA;ACopRH;;ADlpRE;EACC,cAAA;ACqpRH;;ADzpRE;EACC,aAAA;AC4pRH;;AD1pRE;EACC,cAAA;AC6pRH;;ADjqRE;EACC,aAAA;ACoqRH;;ADlqRE;EACC,cAAA;ACqqRH;;ADzqRE;EACC,aAAA;AC4qRH;;AD1qRE;EACC,cAAA;AC6qRH;;ADjrRE;EACC,aAAA;ACorRH;;ADlrRE;EACC,cAAA;ACqrRH;;ADzrRE;EACC,aAAA;AC4rRH;;AD1rRE;EACC,cAAA;AC6rRH;;ADzrRE;EACC,YAAA;AC4rRH;;AD1rRE;EACC,aAAA;AC6rRH;;ADjsRE;EACC,YAAA;ACosRH;;ADlsRE;EACC,aAAA;ACqsRH;;ADzsRE;EACC,aAAA;AC4sRH;;AD1sRE;EACC,cAAA;AC6sRH;;ADjtRE;EACC,aAAA;ACotRH;;ADltRE;EACC,cAAA;ACqtRH;;ADztRE;EACC,aAAA;AC4tRH;;AD1tRE;EACC,cAAA;AC6tRH;;ADjuRE;EACC,aAAA;ACouRH;;ADluRE;EACC,cAAA;ACquRH;;ADzuRE;EACC,aAAA;AC4uRH;;AD1uRE;EACC,cAAA;AC6uRH;;ADjvRE;EACC,aAAA;ACovRH;;ADlvRE;EACC,cAAA;ACqvRH;;ADzvRE;EACC,aAAA;AC4vRH;;AD1vRE;EACC,cAAA;AC6vRH;;ADjwRE;EACC,aAAA;ACowRH;;ADlwRE;EACC,cAAA;ACqwRH;;ADzwRE;EACC,aAAA;AC4wRH;;AD1wRE;EACC,cAAA;AC6wRH;;ADjxRE;EACC,aAAA;ACoxRH;;ADlxRE;EACC,cAAA;ACqxRH;;ADzxRE;EACC,aAAA;AC4xRH;;AD1xRE;EACC,cAAA;AC6xRH;;ADjyRE;EACC,aAAA;ACoyRH;;ADlyRE;EACC,cAAA;ACqyRH;;ADzyRE;EACC,aAAA;AC4yRH;;AD1yRE;EACC,cAAA;AC6yRH;;ADjzRE;EACC,aAAA;ACozRH;;ADlzRE;EACC,cAAA;ACqzRH;;ADzzRE;EACC,aAAA;AC4zRH;;AD1zRE;EACC,cAAA;AC6zRH;;ADj0RE;EACC,aAAA;ACo0RH;;ADl0RE;EACC,cAAA;ACq0RH;;ADz0RE;EACC,aAAA;AC40RH;;AD10RE;EACC,cAAA;AC60RH;;ADj1RE;EACC,aAAA;ACo1RH;;ADl1RE;EACC,cAAA;ACq1RH;;ADz1RE;EACC,aAAA;AC41RH;;AD11RE;EACC,cAAA;AC61RH;;ADj2RE;EACC,aAAA;ACo2RH;;ADl2RE;EACC,cAAA;ACq2RH;;ADz2RE;EACC,aAAA;AC42RH;;AD12RE;EACC,cAAA;AC62RH;;ADj3RE;EACC,aAAA;ACo3RH;;ADl3RE;EACC,cAAA;ACq3RH;;ADz3RE;EACC,cAAA;AC43RH;;AD13RE;EACC,eAAA;AC63RH;;ADz4RE;EACC,UAAA;AC44RH;;AD14RE;EACC,WAAA;AC64RH;;ADj5RE;EACC,UAAA;ACo5RH;;ADl5RE;EACC,WAAA;ACq5RH;;ADz5RE;EACC,UAAA;AC45RH;;AD15RE;EACC,WAAA;AC65RH;;ADj6RE;EACC,UAAA;ACo6RH;;ADl6RE;EACC,WAAA;ACq6RH;;ADz6RE;EACC,UAAA;AC46RH;;AD16RE;EACC,WAAA;AC66RH;;ADj7RE;EACC,UAAA;ACo7RH;;ADl7RE;EACC,WAAA;ACq7RH;;ADz7RE;EACC,UAAA;AC47RH;;AD17RE;EACC,WAAA;AC67RH;;ADj8RE;EACC,UAAA;ACo8RH;;ADl8RE;EACC,WAAA;ACq8RH;;ADz8RE;EACC,UAAA;AC48RH;;AD18RE;EACC,WAAA;AC68RH;;ADj9RE;EACC,UAAA;ACo9RH;;ADl9RE;EACC,WAAA;ACq9RH;;ADz9RE;EACC,WAAA;AC49RH;;AD19RE;EACC,YAAA;AC69RH;;ADj+RE;EACC,WAAA;ACo+RH;;ADl+RE;EACC,YAAA;ACq+RH;;ADz+RE;EACC,WAAA;AC4+RH;;AD1+RE;EACC,YAAA;AC6+RH;;ADj/RE;EACC,WAAA;ACo/RH;;ADl/RE;EACC,YAAA;ACq/RH;;ADz/RE;EACC,WAAA;AC4/RH;;AD1/RE;EACC,YAAA;AC6/RH;;ADjgSE;EACC,WAAA;ACogSH;;ADlgSE;EACC,YAAA;ACqgSH;;ADzgSE;EACC,WAAA;AC4gSH;;AD1gSE;EACC,YAAA;AC6gSH;;ADjhSE;EACC,WAAA;ACohSH;;ADlhSE;EACC,YAAA;ACqhSH;;ADzhSE;EACC,WAAA;AC4hSH;;AD1hSE;EACC,YAAA;AC6hSH;;ADjiSE;EACC,WAAA;ACoiSH;;ADliSE;EACC,YAAA;ACqiSH;;ADziSE;EACC,WAAA;AC4iSH;;AD1iSE;EACC,YAAA;AC6iSH;;ADjjSE;EACC,WAAA;ACojSH;;ADljSE;EACC,YAAA;ACqjSH;;ADzjSE;EACC,WAAA;AC4jSH;;AD1jSE;EACC,YAAA;AC6jSH;;ADjkSE;EACC,WAAA;ACokSH;;ADlkSE;EACC,YAAA;ACqkSH;;ADzkSE;EACC,WAAA;AC4kSH;;AD1kSE;EACC,YAAA;AC6kSH;;ADjlSE;EACC,WAAA;AColSH;;ADllSE;EACC,YAAA;ACqlSH;;ADzlSE;EACC,WAAA;AC4lSH;;AD1lSE;EACC,YAAA;AC6lSH;;ADjmSE;EACC,WAAA;AComSH;;ADlmSE;EACC,YAAA;ACqmSH;;ADzmSE;EACC,WAAA;AC4mSH;;AD1mSE;EACC,YAAA;AC6mSH;;ADjnSE;EACC,WAAA;AConSH;;ADlnSE;EACC,YAAA;ACqnSH;;ADznSE;EACC,WAAA;AC4nSH;;AD1nSE;EACC,YAAA;AC6nSH;;ADjoSE;EACC,WAAA;ACooSH;;ADloSE;EACC,YAAA;ACqoSH;;ADzoSE;EACC,WAAA;AC4oSH;;AD1oSE;EACC,YAAA;AC6oSH;;ADjpSE;EACC,WAAA;ACopSH;;ADlpSE;EACC,YAAA;ACqpSH;;ADzpSE;EACC,WAAA;AC4pSH;;AD1pSE;EACC,YAAA;AC6pSH;;ADjqSE;EACC,WAAA;ACoqSH;;ADlqSE;EACC,YAAA;ACqqSH;;ADzqSE;EACC,WAAA;AC4qSH;;AD1qSE;EACC,YAAA;AC6qSH;;ADjrSE;EACC,WAAA;ACorSH;;ADlrSE;EACC,YAAA;ACqrSH;;ADzrSE;EACC,WAAA;AC4rSH;;AD1rSE;EACC,YAAA;AC6rSH;;ADjsSE;EACC,WAAA;ACosSH;;ADlsSE;EACC,YAAA;ACqsSH;;ADzsSE;EACC,WAAA;AC4sSH;;AD1sSE;EACC,YAAA;AC6sSH;;ADjtSE;EACC,WAAA;ACotSH;;ADltSE;EACC,YAAA;ACqtSH;;ADztSE;EACC,WAAA;AC4tSH;;AD1tSE;EACC,YAAA;AC6tSH;;ADjuSE;EACC,WAAA;ACouSH;;ADluSE;EACC,YAAA;ACquSH;;ADzuSE;EACC,WAAA;AC4uSH;;AD1uSE;EACC,YAAA;AC6uSH;;ADjvSE;EACC,WAAA;ACovSH;;ADlvSE;EACC,YAAA;ACqvSH;;ADzvSE;EACC,WAAA;AC4vSH;;AD1vSE;EACC,YAAA;AC6vSH;;ADjwSE;EACC,WAAA;ACowSH;;ADlwSE;EACC,YAAA;ACqwSH;;ADzwSE;EACC,WAAA;AC4wSH;;AD1wSE;EACC,YAAA;AC6wSH;;ADjxSE;EACC,WAAA;ACoxSH;;ADlxSE;EACC,YAAA;ACqxSH;;ADzxSE;EACC,WAAA;AC4xSH;;AD1xSE;EACC,YAAA;AC6xSH;;ADzxSE;EACC,UAAA;AC4xSH;;AD1xSE;EACC,WAAA;AC6xSH;;ADjySE;EACC,UAAA;ACoySH;;ADlySE;EACC,WAAA;ACqySH;;ADzySE;EACC,WAAA;AC4ySH;;AD1ySE;EACC,YAAA;AC6ySH;;ADjzSE;EACC,WAAA;ACozSH;;ADlzSE;EACC,YAAA;ACqzSH;;ADzzSE;EACC,WAAA;AC4zSH;;AD1zSE;EACC,YAAA;AC6zS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mmTT;;AD7kTC;EACC,cAvBO;ACumTT;;AD9kTC;EACC,yBA1BO;AC2mTT;;ADrlTC;EACC,cAvBO;AC+mTT;;ADtlTC;EACC,yBA1BO;ACmnTT;;AD7lTC;EACC,cAvBO;ACunTT;;AD9lTC;EACC,yBA1BO;AC2nTT;;ADrmTC;EACC,cAvBO;AC+nTT;;ADtmTC;EACC,yBA1BO;ACmoTT;;AD7mTC;EACC,cAvBO;ACuoTT;;AD9mTC;EACC,yBA1BO;AC2oTT;;ADrnTC;EACC,cAvBO;AC+oTT;;ADtnTC;EACC,yBA1BO;ACmpTT;;AD7nTC;EACC,cAvBO;ACupTT;;AD9nTC;EACC,yBA1BO;AC2pTT;;ADroTC;EACC,cAvBO;AC+pTT;;ADtoTC;EACC,yBA1BO;ACmqTT;;AD7oTC;EACC,cAvBO;ACuqTT;;AD9oTC;EACC,yBA1BO;AC2qTT;;ADrpTC;EACC,cAvBO;AC+qTT;;ADtpTC;EACC,yBA1BO;ACmrTT;;AD7pTC;EACC,cAvBO;ACurTT;;AD9pTC;EACC,yBA1BO;AC2rTT;;ADrqTC;EACC,cAvBO;AC+rTT;;ADtqTC;EACC,yBA1BO;ACmsTT;;AD7qTC;EACC,cAvBO;ACusTT;;AD9qTC;EACC,yBA1BO;AC2sTT;;ADrrTC;EACC,cAvBO;AC+sTT;;ADtrTC;EACC,yBA1BO;ACmtTT;;AD7rTC;EACC,cAvBO;ACutTT;;AD9rTC;EACC,yBA1BO;AC2tTT;;ADrsTC;EACC,cAvBO;AC+tTT;;ADtsTC;EACC,yBA1BO;ACmuTT;;ADrsTC;EACC,cA/Cc;ACuvThB;;ADtsTC;EACC,yBAlDc;AC2vThB;;AD7sTC;EACC,cA/Cc;AC+vThB;;AD9sTC;EACC,yBAlDc;ACmwThB;;ADrtTC;EACC,cA/Cc;ACuwThB;;ADttTC;EACC,yBAlDc;AC2wThB;;AD7tTC;EACC,cA/Cc;AC+wThB;;AD9tTC;EACC,yBAlDc;ACmxThB;;ADruTC;EACC,cA/Cc;ACuxThB;;ADtuTC;EACC,yBAlDc;AC2xThB;;AD7uTC;EACC,cA/Cc;AC+xThB;;AD9uTC;EACC,yBAlDc;ACmyThB;;ADrvTC;EACC,cA/Cc;ACuyThB;;ADtvTC;EACC,yBAlDc;AC2yThB;;AD7vTC;EACC,cA/Cc;AC+yThB;;AD9vTC;EACC,yBAlDc;ACmzThB;;ADrwTC;EACC,cA/Cc;ACuzThB;;ADtwTC;EACC,yBAlDc;AC2zThB;;AD7wTC;EACC,cA/Cc;AC+zThB;;AD9wTC;EACC,yBAlDc;ACm0ThB;;ADrxTC;EACC,cA/Cc;ACu0ThB;;ADtxTC;EACC,yBAlDc;AC20ThB;;AD7xTC;EACC,cA/Cc;AC+0ThB;;AD9xTC;EACC,yBAlDc;ACm1ThB;;ADryTC;EACC,cA/Cc;ACu1ThB;;ADtyTC;EACC,yBAlDc;AC21ThB;;AD7yTC;EACC,cA/Cc;AC+1ThB;;AD9yTC;EACC,yBAlDc;ACm2ThB", + "file": "nvue.css" +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/scss/nvue.min.css b/uni_modules/UniDevTools/src/tmui/scss/nvue.min.css new file mode 100644 index 0000000..1ef9e7f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/scss/nvue.min.css @@ -0,0 +1 @@ +.overflow{overflow:hidden}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.fulled-height{display:flex;align-items:stretch}.fulled-height{display:flex;align-items:stretch}.zIndex-0{z-index:0}.zIndex-n0{z-index:0}.zIndex-1{z-index:1}.zIndex-n1{z-index:4}.zIndex-2{z-index:2}.zIndex-n2{z-index:8}.zIndex-3{z-index:3}.zIndex-n3{z-index:12}.zIndex-4{z-index:4}.zIndex-n4{z-index:16}.zIndex-5{z-index:5}.zIndex-n5{z-index:20}.zIndex-6{z-index:6}.zIndex-n6{z-index:24}.zIndex-7{z-index:7}.zIndex-n7{z-index:28}.zIndex-8{z-index:8}.zIndex-n8{z-index:32}.zIndex-9{z-index:9}.zIndex-n9{z-index:36}.zIndex-10{z-index:10}.zIndex-n10{z-index:40}.zIndex-11{z-index:11}.zIndex-n11{z-index:44}.zIndex-12{z-index:12}.zIndex-n12{z-index:48}.zIndex-13{z-index:13}.zIndex-n13{z-index:52}.zIndex-14{z-index:14}.zIndex-n14{z-index:56}.zIndex-15{z-index:15}.zIndex-n15{z-index:60}.zIndex-16{z-index:16}.zIndex-n16{z-index:64}.zIndex-17{z-index:17}.zIndex-n17{z-index:68}.zIndex-18{z-index:18}.zIndex-n18{z-index:72}.zIndex-19{z-index:19}.zIndex-n19{z-index:76}.zIndex-20{z-index:20}.zIndex-n20{z-index:80}.zIndex-21{z-index:21}.zIndex-n21{z-index:84}.zIndex-22{z-index:22}.zIndex-n22{z-index:88}.zIndex-23{z-index:23}.zIndex-n23{z-index:92}.zIndex-24{z-index:24}.zIndex-n24{z-index:96}.zIndex-25{z-index:25}.zIndex-n25{z-index:100}.zIndex-26{z-index:26}.zIndex-n26{z-index:104}.text-overflow{text-overflow:ellipsis}.text-overflow-1{text-overflow:ellipsis;lines:1}.text-overflow-2{text-overflow:ellipsis;lines:2}.text-overflow-3{text-overflow:ellipsis;lines:3}.text-overflow-4{text-overflow:ellipsis;lines:4}.text-delete{text-decoration:line-through}.text-underline{text-decoration:underline}.text-size-xxs{font-size:20rpx}.text-size-xs{font-size:22rpx}.text-size-s{font-size:24rpx}.text-size-m{font-size:28rpx}.text-size-n{font-size:30rpx}.text-size-g{font-size:34rpx}.text-size-lg{font-size:36rpx}.text-size-xl{font-size:40rpx}.text-weight-s{font-weight:100}.text-weight-n{font-weight:400}.text-weight-b{font-weight:700}.text-align-left{text-align:left}.text-align-right{text-align:right}.text-align-center{text-align:center}.round-tl-0{border-top-left-radius:0rpx}.round-tl-1{border-top-left-radius:4rpx}.round-tl-2{border-top-left-radius:8rpx}.round-tl-3{border-top-left-radius:12rpx}.round-tl-4{border-top-left-radius:16rpx}.round-tl-5{border-top-left-radius:20rpx}.round-tl-6{border-top-left-radius:24rpx}.round-tl-7{border-top-left-radius:28rpx}.round-tl-8{border-top-left-radius:32rpx}.round-tl-9{border-top-left-radius:36rpx}.round-tl-10{border-top-left-radius:40rpx}.round-tl-11{border-top-left-radius:44rpx}.round-tl-12{border-top-left-radius:48rpx}.round-tl-13{border-top-left-radius:52rpx}.round-tl-14{border-top-left-radius:56rpx}.round-tl-15{border-top-left-radius:60rpx}.round-tl-16{border-top-left-radius:64rpx}.round-tl-17{border-top-left-radius:68rpx}.round-tl-18{border-top-left-radius:72rpx}.round-tl-19{border-top-left-radius:76rpx}.round-tl-20{border-top-left-radius:80rpx}.round-tl-21{border-top-left-radius:84rpx}.round-tl-22{border-top-left-radius:88rpx}.round-tl-23{border-top-left-radius:92rpx}.round-tl-24{border-top-left-radius:96rpx}.round-tl-25{border-top-left-radius:100rpx}.round-tr-0{border-top-right-radius:0rpx}.round-tr-1{border-top-right-radius:4rpx}.round-tr-2{border-top-right-radius:8rpx}.round-tr-3{border-top-right-radius:12rpx}.round-tr-4{border-top-right-radius:16rpx}.round-tr-5{border-top-right-radius:20rpx}.round-tr-6{border-top-right-radius:24rpx}.round-tr-7{border-top-right-radius:28rpx}.round-tr-8{border-top-right-radius:32rpx}.round-tr-9{border-top-right-radius:36rpx}.round-tr-10{border-top-right-radius:40rpx}.round-tr-11{border-top-right-radius:44rpx}.round-tr-12{border-top-right-radius:48rpx}.round-tr-13{border-top-right-radius:52rpx}.round-tr-14{border-top-right-radius:56rpx}.round-tr-15{border-top-right-radius:60rpx}.round-tr-16{border-top-right-radius:64rpx}.round-tr-17{border-top-right-radius:68rpx}.round-tr-18{border-top-right-radius:72rpx}.round-tr-19{border-top-right-radius:76rpx}.round-tr-20{border-top-right-radius:80rpx}.round-tr-21{border-top-right-radius:84rpx}.round-tr-22{border-top-right-radius:88rpx}.round-tr-23{border-top-right-radius:92rpx}.round-tr-24{border-top-right-radius:96rpx}.round-tr-25{border-top-right-radius:100rpx}.round-bl-0{border-bottom-left-radius:0rpx}.round-bl-1{border-bottom-left-radius:4rpx}.round-bl-2{border-bottom-left-radius:8rpx}.round-bl-3{border-bottom-left-radius:12rpx}.round-bl-4{border-bottom-left-radius:16rpx}.round-bl-5{border-bottom-left-radius:20rpx}.round-bl-6{border-bottom-left-radius:24rpx}.round-bl-7{border-bottom-left-radius:28rpx}.round-bl-8{border-bottom-left-radius:32rpx}.round-bl-9{border-bottom-left-radius:36rpx}.round-bl-10{border-bottom-left-radius:40rpx}.round-bl-11{border-bottom-left-radius:44rpx}.round-bl-12{border-bottom-left-radius:48rpx}.round-bl-13{border-bottom-left-radius:52rpx}.round-bl-14{border-bottom-left-radius:56rpx}.round-bl-15{border-bottom-left-radius:60rpx}.round-bl-16{border-bottom-left-radius:64rpx}.round-bl-17{border-bottom-left-radius:68rpx}.round-bl-18{border-bottom-left-radius:72rpx}.round-bl-19{border-bottom-left-radius:76rpx}.round-bl-20{border-bottom-left-radius:80rpx}.round-bl-21{border-bottom-left-radius:84rpx}.round-bl-22{border-bottom-left-radius:88rpx}.round-bl-23{border-bottom-left-radius:92rpx}.round-bl-24{border-bottom-left-radius:96rpx}.round-bl-25{border-bottom-left-radius:100rpx}.round-br-0{border-bottom-right-radius:0rpx}.round-br-1{border-bottom-right-radius:4rpx}.round-br-2{border-bottom-right-radius:8rpx}.round-br-3{border-bottom-right-radius:12rpx}.round-br-4{border-bottom-right-radius:16rpx}.round-br-5{border-bottom-right-radius:20rpx}.round-br-6{border-bottom-right-radius:24rpx}.round-br-7{border-bottom-right-radius:28rpx}.round-br-8{border-bottom-right-radius:32rpx}.round-br-9{border-bottom-right-radius:36rpx}.round-br-10{border-bottom-right-radius:40rpx}.round-br-11{border-bottom-right-radius:44rpx}.round-br-12{border-bottom-right-radius:48rpx}.round-br-13{border-bottom-right-radius:52rpx}.round-br-14{border-bottom-right-radius:56rpx}.round-br-15{border-bottom-right-radius:60rpx}.round-br-16{border-bottom-right-radius:64rpx}.round-br-17{border-bottom-right-radius:68rpx}.round-br-18{border-bottom-right-radius:72rpx}.round-br-19{border-bottom-right-radius:76rpx}.round-br-20{border-bottom-right-radius:80rpx}.round-br-21{border-bottom-right-radius:84rpx}.round-br-22{border-bottom-right-radius:88rpx}.round-br-23{border-bottom-right-radius:92rpx}.round-br-24{border-bottom-right-radius:96rpx}.round-br-25{border-bottom-right-radius:100rpx}.round-a-0{border-radius:0rpx}.round-a-1{border-radius:4rpx}.round-a-2{border-radius:8rpx}.round-a-3{border-radius:12rpx}.round-a-4{border-radius:16rpx}.round-a-5{border-radius:20rpx}.round-a-6{border-radius:24rpx}.round-a-7{border-radius:28rpx}.round-a-8{border-radius:32rpx}.round-a-9{border-radius:36rpx}.round-a-10{border-radius:40rpx}.round-a-11{border-radius:44rpx}.round-a-12{border-radius:48rpx}.round-a-13{border-radius:52rpx}.round-a-14{border-radius:56rpx}.round-a-15{border-radius:60rpx}.round-a-16{border-radius:64rpx}.round-a-17{border-radius:68rpx}.round-a-18{border-radius:72rpx}.round-a-19{border-radius:76rpx}.round-a-20{border-radius:80rpx}.round-a-21{border-radius:84rpx}.round-a-22{border-radius:88rpx}.round-a-23{border-radius:92rpx}.round-a-24{border-radius:96rpx}.round-a-25{border-radius:100rpx}.round-t-0{border-top-left-radius:0rpx;border-top-right-radius:0rpx}.round-t-1{border-top-left-radius:4rpx;border-top-right-radius:4rpx}.round-t-2{border-top-left-radius:8rpx;border-top-right-radius:8rpx}.round-t-3{border-top-left-radius:12rpx;border-top-right-radius:12rpx}.round-t-4{border-top-left-radius:16rpx;border-top-right-radius:16rpx}.round-t-5{border-top-left-radius:20rpx;border-top-right-radius:20rpx}.round-t-6{border-top-left-radius:24rpx;border-top-right-radius:24rpx}.round-t-7{border-top-left-radius:28rpx;border-top-right-radius:28rpx}.round-t-8{border-top-left-radius:32rpx;border-top-right-radius:32rpx}.round-t-9{border-top-left-radius:36rpx;border-top-right-radius:36rpx}.round-t-10{border-top-left-radius:40rpx;border-top-right-radius:40rpx}.round-t-11{border-top-left-radius:44rpx;border-top-right-radius:44rpx}.round-t-12{border-top-left-radius:48rpx;border-top-right-radius:48rpx}.round-t-13{border-top-left-radius:52rpx;border-top-right-radius:52rpx}.round-t-14{border-top-left-radius:56rpx;border-top-right-radius:56rpx}.round-t-15{border-top-left-radius:60rpx;border-top-right-radius:60rpx}.round-t-16{border-top-left-radius:64rpx;border-top-right-radius:64rpx}.round-t-17{border-top-left-radius:68rpx;border-top-right-radius:68rpx}.round-t-18{border-top-left-radius:72rpx;border-top-right-radius:72rpx}.round-t-19{border-top-left-radius:76rpx;border-top-right-radius:76rpx}.round-t-20{border-top-left-radius:80rpx;border-top-right-radius:80rpx}.round-t-21{border-top-left-radius:84rpx;border-top-right-radius:84rpx}.round-t-22{border-top-left-radius:88rpx;border-top-right-radius:88rpx}.round-t-23{border-top-left-radius:92rpx;border-top-right-radius:92rpx}.round-t-24{border-top-left-radius:96rpx;border-top-right-radius:96rpx}.round-t-25{border-top-left-radius:100rpx;border-top-right-radius:100rpx}.round-b-0{border-bottom-left-radius:0rpx;border-bottom-right-radius:0rpx}.round-b-1{border-bottom-left-radius:4rpx;border-bottom-right-radius:4rpx}.round-b-2{border-bottom-left-radius:8rpx;border-bottom-right-radius:8rpx}.round-b-3{border-bottom-left-radius:12rpx;border-bottom-right-radius:12rpx}.round-b-4{border-bottom-left-radius:16rpx;border-bottom-right-radius:16rpx}.round-b-5{border-bottom-left-radius:20rpx;border-bottom-right-radius:20rpx}.round-b-6{border-bottom-left-radius:24rpx;border-bottom-right-radius:24rpx}.round-b-7{border-bottom-left-radius:28rpx;border-bottom-right-radius:28rpx}.round-b-8{border-bottom-left-radius:32rpx;border-bottom-right-radius:32rpx}.round-b-9{border-bottom-left-radius:36rpx;border-bottom-right-radius:36rpx}.round-b-10{border-bottom-left-radius:40rpx;border-bottom-right-radius:40rpx}.round-b-11{border-bottom-left-radius:44rpx;border-bottom-right-radius:44rpx}.round-b-12{border-bottom-left-radius:48rpx;border-bottom-right-radius:48rpx}.round-b-13{border-bottom-left-radius:52rpx;border-bottom-right-radius:52rpx}.round-b-14{border-bottom-left-radius:56rpx;border-bottom-right-radius:56rpx}.round-b-15{border-bottom-left-radius:60rpx;border-bottom-right-radius:60rpx}.round-b-16{border-bottom-left-radius:64rpx;border-bottom-right-radius:64rpx}.round-b-17{border-bottom-left-radius:68rpx;border-bottom-right-radius:68rpx}.round-b-18{border-bottom-left-radius:72rpx;border-bottom-right-radius:72rpx}.round-b-19{border-bottom-left-radius:76rpx;border-bottom-right-radius:76rpx}.round-b-20{border-bottom-left-radius:80rpx;border-bottom-right-radius:80rpx}.round-b-21{border-bottom-left-radius:84rpx;border-bottom-right-radius:84rpx}.round-b-22{border-bottom-left-radius:88rpx;border-bottom-right-radius:88rpx}.round-b-23{border-bottom-left-radius:92rpx;border-bottom-right-radius:92rpx}.round-b-24{border-bottom-left-radius:96rpx;border-bottom-right-radius:96rpx}.round-b-25{border-bottom-left-radius:100rpx;border-bottom-right-radius:100rpx}.round-l-0{border-top-left-radius:0rpx;border-bottom-left-radius:0rpx}.round-l-1{border-top-left-radius:4rpx;border-bottom-left-radius:4rpx}.round-l-2{border-top-left-radius:8rpx;border-bottom-left-radius:8rpx}.round-l-3{border-top-left-radius:12rpx;border-bottom-left-radius:12rpx}.round-l-4{border-top-left-radius:16rpx;border-bottom-left-radius:16rpx}.round-l-5{border-top-left-radius:20rpx;border-bottom-left-radius:20rpx}.round-l-6{border-top-left-radius:24rpx;border-bottom-left-radius:24rpx}.round-l-7{border-top-left-radius:28rpx;border-bottom-left-radius:28rpx}.round-l-8{border-top-left-radius:32rpx;border-bottom-left-radius:32rpx}.round-l-9{border-top-left-radius:36rpx;border-bottom-left-radius:36rpx}.round-l-10{border-top-left-radius:40rpx;border-bottom-left-radius:40rpx}.round-l-11{border-top-left-radius:44rpx;border-bottom-left-radius:44rpx}.round-l-12{border-top-left-radius:48rpx;border-bottom-left-radius:48rpx}.round-l-13{border-top-left-radius:52rpx;border-bottom-left-radius:52rpx}.round-l-14{border-top-left-radius:56rpx;border-bottom-left-radius:56rpx}.round-l-15{border-top-left-radius:60rpx;border-bottom-left-radius:60rpx}.round-l-16{border-top-left-radius:64rpx;border-bottom-left-radius:64rpx}.round-l-17{border-top-left-radius:68rpx;border-bottom-left-radius:68rpx}.round-l-18{border-top-left-radius:72rpx;border-bottom-left-radius:72rpx}.round-l-19{border-top-left-radius:76rpx;border-bottom-left-radius:76rpx}.round-l-20{border-top-left-radius:80rpx;border-bottom-left-radius:80rpx}.round-l-21{border-top-left-radius:84rpx;border-bottom-left-radius:84rpx}.round-l-22{border-top-left-radius:88rpx;border-bottom-left-radius:88rpx}.round-l-23{border-top-left-radius:92rpx;border-bottom-left-radius:92rpx}.round-l-24{border-top-left-radius:96rpx;border-bottom-left-radius:96rpx}.round-l-25{border-top-left-radius:100rpx;border-bottom-left-radius:100rpx}.round-r-0{border-top-right-radius:0rpx;border-bottom-right-radius:0rpx}.round-r-1{border-top-right-radius:4rpx;border-bottom-right-radius:4rpx}.round-r-2{border-top-right-radius:8rpx;border-bottom-right-radius:8rpx}.round-r-3{border-top-right-radius:12rpx;border-bottom-right-radius:12rpx}.round-r-4{border-top-right-radius:16rpx;border-bottom-right-radius:16rpx}.round-r-5{border-top-right-radius:20rpx;border-bottom-right-radius:20rpx}.round-r-6{border-top-right-radius:24rpx;border-bottom-right-radius:24rpx}.round-r-7{border-top-right-radius:28rpx;border-bottom-right-radius:28rpx}.round-r-8{border-top-right-radius:32rpx;border-bottom-right-radius:32rpx}.round-r-9{border-top-right-radius:36rpx;border-bottom-right-radius:36rpx}.round-r-10{border-top-right-radius:40rpx;border-bottom-right-radius:40rpx}.round-r-11{border-top-right-radius:44rpx;border-bottom-right-radius:44rpx}.round-r-12{border-top-right-radius:48rpx;border-bottom-right-radius:48rpx}.round-r-13{border-top-right-radius:52rpx;border-bottom-right-radius:52rpx}.round-r-14{border-top-right-radius:56rpx;border-bottom-right-radius:56rpx}.round-r-15{border-top-right-radius:60rpx;border-bottom-right-radius:60rpx}.round-r-16{border-top-right-radius:64rpx;border-bottom-right-radius:64rpx}.round-r-17{border-top-right-radius:68rpx;border-bottom-right-radius:68rpx}.round-r-18{border-top-right-radius:72rpx;border-bottom-right-radius:72rpx}.round-r-19{border-top-right-radius:76rpx;border-bottom-right-radius:76rpx}.round-r-20{border-top-right-radius:80rpx;border-bottom-right-radius:80rpx}.round-r-21{border-top-right-radius:84rpx;border-bottom-right-radius:84rpx}.round-r-22{border-top-right-radius:88rpx;border-bottom-right-radius:88rpx}.round-r-23{border-top-right-radius:92rpx;border-bottom-right-radius:92rpx}.round-r-24{border-top-right-radius:96rpx;border-bottom-right-radius:96rpx}.round-r-25{border-top-right-radius:100rpx;border-bottom-right-radius:100rpx}.round-0{border-radius:0rpx}.round-1{border-radius:4rpx}.round-2{border-radius:8rpx}.round-3{border-radius:12rpx}.round-4{border-radius:16rpx}.round-5{border-radius:20rpx}.round-6{border-radius:24rpx}.round-7{border-radius:28rpx}.round-8{border-radius:32rpx}.round-9{border-radius:36rpx}.round-10{border-radius:40rpx}.round-11{border-radius:44rpx}.round-12{border-radius:48rpx}.round-13{border-radius:52rpx}.round-14{border-radius:56rpx}.round-15{border-radius:60rpx}.round-16{border-radius:64rpx}.round-17{border-radius:68rpx}.round-18{border-radius:72rpx}.round-19{border-radius:76rpx}.round-20{border-radius:80rpx}.round-21{border-radius:84rpx}.round-22{border-radius:88rpx}.round-23{border-radius:92rpx}.round-24{border-radius:96rpx}.round-25{border-radius:100rpx}.round-26{border-radius:104rpx}.rounded{border-radius:50%}.opacity-0{opacity:0}.opacity-1{opacity:.1}.opacity-2{opacity:.2}.opacity-3{opacity:.3}.opacity-4{opacity:.4}.opacity-5{opacity:.5}.opacity-6{opacity:.6}.opacity-7{opacity:.7}.opacity-8{opacity:.8}.opacity-9{opacity:.9}.opacity-10{opacity:1}.border-0{border:solid 0rpx #f5f5f5}.border-0-bk{border:solid 0rpx #282828}.border{border:solid 2rpx #f5f5f5}.border-bk{border:solid 2rpx #282828}.border-1{border:solid 2px #f5f5f5}.border-1-bk{border:solid 2px #f5f5f5}.border-2{border:solid 4px #f5f5f5}.border-2-bk{border:solid 4px #f5f5f5}.border-3{border:solid 6px #f5f5f5}.border-3-bk{border:solid 6px #f5f5f5}.border-4{border:solid 8px #f5f5f5}.border-4-bk{border:solid 8px #f5f5f5}.border-5{border:solid 10px #f5f5f5}.border-5-bk{border:solid 10px #f5f5f5}.border-l-1{border-left:solid 2rpx #f5f5f5}.border-l-1-bk{border-left:solid 2rpx #282828}.border-l-2{border-left:solid 4rpx #f5f5f5}.border-l-2-bk{border-left:solid 4rpx #282828}.border-l-3{border-left:solid 6rpx #f5f5f5}.border-l-3-bk{border-left:solid 6rpx #282828}.border-l-4{border-left:solid 8rpx #f5f5f5}.border-l-4-bk{border-left:solid 8rpx #282828}.border-l-5{border-left:solid 10rpx #f5f5f5}.border-l-5-bk{border-left:solid 10rpx #282828}.border-r-1{border-right:solid 2rpx #f5f5f5}.border-r-1-bk{border-right:solid 2rpx #282828}.border-r-2{border-right:solid 4rpx #f5f5f5}.border-r-2-bk{border-right:solid 4rpx #282828}.border-r-3{border-right:solid 6rpx #f5f5f5}.border-r-3-bk{border-right:solid 6rpx #282828}.border-r-4{border-right:solid 8rpx #f5f5f5}.border-r-4-bk{border-right:solid 8rpx #282828}.border-r-5{border-right:solid 10rpx #f5f5f5}.border-r-5-bk{border-right:solid 10rpx #282828}.border-t-1{border-top:solid 2rpx #f5f5f5}.border-t-1-bk{border-top:solid 2rpx #282828}.border-t-2{border-top:solid 4rpx #f5f5f5}.border-t-2-bk{border-top:solid 4rpx #282828}.border-t-3{border-top:solid 6rpx #f5f5f5}.border-t-3-bk{border-top:solid 6rpx #282828}.border-t-4{border-top:solid 8rpx #f5f5f5}.border-t-4-bk{border-top:solid 8rpx #282828}.border-t-5{border-top:solid 10rpx #f5f5f5}.border-t-5-bk{border-top:solid 10rpx #282828}.border-b-1{border-bottom:solid 2rpx #f5f5f5}.border-b-1-bk{border-bottom:solid 2rpx #282828}.border-b-2{border-bottom:solid 4rpx #f5f5f5}.border-b-2-bk{border-bottom:solid 4rpx #282828}.border-b-3{border-bottom:solid 6rpx #f5f5f5}.border-b-3-bk{border-bottom:solid 6rpx #282828}.border-b-4{border-bottom:solid 8rpx #f5f5f5}.border-b-4-bk{border-bottom:solid 8rpx #282828}.border-b-5{border-bottom:solid 10rpx #f5f5f5}.border-b-5-bk{border-bottom:solid 10rpx #282828}.border-a-1{border:solid 2rpx #f5f5f5}.border-a-1-bk{border:solid 2rpx #282828}.border-a-2{border:solid 4rpx #f5f5f5}.border-a-2-bk{border:solid 4rpx #282828}.border-a-3{border:solid 6rpx #f5f5f5}.border-a-3-bk{border:solid 6rpx #282828}.border-a-4{border:solid 8rpx #f5f5f5}.border-a-4-bk{border:solid 8rpx #282828}.border-a-5{border:solid 10rpx #f5f5f5}.border-a-5-bk{border:solid 10rpx #282828}.pa-0{padding:0rpx}.pa-1{padding:1rpx}.pa-2{padding:2rpx}.pa-3{padding:3rpx}.pa-4{padding:4rpx}.pa-5{padding:5rpx}.pa-6{padding:6rpx}.pa-7{padding:7rpx}.pa-8{padding:8rpx}.pa-9{padding:9rpx}.pa-10{padding:10rpx}.pa-11{padding:11rpx}.pa-12{padding:12rpx}.pa-13{padding:13rpx}.pa-14{padding:14rpx}.pa-15{padding:15rpx}.pa-16{padding:16rpx}.pa-17{padding:17rpx}.pa-18{padding:18rpx}.pa-19{padding:19rpx}.pa-20{padding:20rpx}.pa-21{padding:21rpx}.pa-22{padding:22rpx}.pa-23{padding:23rpx}.pa-24{padding:24rpx}.pa-25{padding:25rpx}.pa-26{padding:26rpx}.pa-27{padding:27rpx}.pa-28{padding:28rpx}.pa-29{padding:29rpx}.pa-30{padding:30rpx}.pa-31{padding:31rpx}.pa-32{padding:32rpx}.pa-33{padding:33rpx}.pa-34{padding:34rpx}.pa-35{padding:35rpx}.pa-36{padding:36rpx}.pa-37{padding:37rpx}.pa-38{padding:38rpx}.pa-39{padding:39rpx}.pa-40{padding:40rpx}.pa-41{padding:41rpx}.pa-42{padding:42rpx}.pa-43{padding:43rpx}.pa-44{padding:44rpx}.pa-45{padding:45rpx}.pa-46{padding:46rpx}.pa-47{padding:47rpx}.pa-48{padding:48rpx}.pa-49{padding:49rpx}.pa-50{padding:50rpx}.pa-n1{padding:4rpx}.pa-n2{padding:8rpx}.pa-n3{padding:12rpx}.pa-n4{padding:16rpx}.pa-n5{padding:20rpx}.pa-n6{padding:24rpx}.pa-n7{padding:28rpx}.pa-n8{padding:32rpx}.pa-n9{padding:36rpx}.pa-n10{padding:40rpx}.pa-n11{padding:44rpx}.pa-n12{padding:48rpx}.pa-n13{padding:52rpx}.pa-n14{padding:56rpx}.pa-n15{padding:60rpx}.pa-n16{padding:64rpx}.pa-n17{padding:68rpx}.pa-n18{padding:72rpx}.pa-n19{padding:76rpx}.pa-n20{padding:80rpx}.pa-n21{padding:84rpx}.pa-n22{padding:88rpx}.pa-n23{padding:92rpx}.pa-n24{padding:96rpx}.pa-n25{padding:100rpx}.pt-0{padding-top:0rpx}.pt-1{padding-top:1rpx}.pt-2{padding-top:2rpx}.pt-3{padding-top:3rpx}.pt-4{padding-top:4rpx}.pt-5{padding-top:5rpx}.pt-6{padding-top:6rpx}.pt-7{padding-top:7rpx}.pt-8{padding-top:8rpx}.pt-9{padding-top:9rpx}.pt-10{padding-top:10rpx}.pt-11{padding-top:11rpx}.pt-12{padding-top:12rpx}.pt-13{padding-top:13rpx}.pt-14{padding-top:14rpx}.pt-15{padding-top:15rpx}.pt-16{padding-top:16rpx}.pt-17{padding-top:17rpx}.pt-18{padding-top:18rpx}.pt-19{padding-top:19rpx}.pt-20{padding-top:20rpx}.pt-21{padding-top:21rpx}.pt-22{padding-top:22rpx}.pt-23{padding-top:23rpx}.pt-24{padding-top:24rpx}.pt-25{padding-top:25rpx}.pt-26{padding-top:26rpx}.pt-27{padding-top:27rpx}.pt-28{padding-top:28rpx}.pt-29{padding-top:29rpx}.pt-30{padding-top:30rpx}.pt-31{padding-top:31rpx}.pt-32{padding-top:32rpx}.pt-33{padding-top:33rpx}.pt-34{padding-top:34rpx}.pt-35{padding-top:35rpx}.pt-36{padding-top:36rpx}.pt-37{padding-top:37rpx}.pt-38{padding-top:38rpx}.pt-39{padding-top:39rpx}.pt-40{padding-top:40rpx}.pt-41{padding-top:41rpx}.pt-42{padding-top:42rpx}.pt-43{padding-top:43rpx}.pt-44{padding-top:44rpx}.pt-45{padding-top:45rpx}.pt-46{padding-top:46rpx}.pt-47{padding-top:47rpx}.pt-48{padding-top:48rpx}.pt-49{padding-top:49rpx}.pt-50{padding-top:50rpx}.pt-n1{padding-top:4rpx}.pt-n2{padding-top:8rpx}.pt-n3{padding-top:12rpx}.pt-n4{padding-top:16rpx}.pt-n5{padding-top:20rpx}.pt-n6{padding-top:24rpx}.pt-n7{padding-top:28rpx}.pt-n8{padding-top:32rpx}.pt-n9{padding-top:36rpx}.pt-n10{padding-top:40rpx}.pt-n11{padding-top:44rpx}.pt-n12{padding-top:48rpx}.pt-n13{padding-top:52rpx}.pt-n14{padding-top:56rpx}.pt-n15{padding-top:60rpx}.pt-n16{padding-top:64rpx}.pt-n17{padding-top:68rpx}.pt-n18{padding-top:72rpx}.pt-n19{padding-top:76rpx}.pt-n20{padding-top:80rpx}.pt-n21{padding-top:84rpx}.pt-n22{padding-top:88rpx}.pt-n23{padding-top:92rpx}.pt-n24{padding-top:96rpx}.pt-n25{padding-top:100rpx}.pr-0{padding-right:0rpx}.pr-1{padding-right:1rpx}.pr-2{padding-right:2rpx}.pr-3{padding-right:3rpx}.pr-4{padding-right:4rpx}.pr-5{padding-right:5rpx}.pr-6{padding-right:6rpx}.pr-7{padding-right:7rpx}.pr-8{padding-right:8rpx}.pr-9{padding-right:9rpx}.pr-10{padding-right:10rpx}.pr-11{padding-right:11rpx}.pr-12{padding-right:12rpx}.pr-13{padding-right:13rpx}.pr-14{padding-right:14rpx}.pr-15{padding-right:15rpx}.pr-16{padding-right:16rpx}.pr-17{padding-right:17rpx}.pr-18{padding-right:18rpx}.pr-19{padding-right:19rpx}.pr-20{padding-right:20rpx}.pr-21{padding-right:21rpx}.pr-22{padding-right:22rpx}.pr-23{padding-right:23rpx}.pr-24{padding-right:24rpx}.pr-25{padding-right:25rpx}.pr-26{padding-right:26rpx}.pr-27{padding-right:27rpx}.pr-28{padding-right:28rpx}.pr-29{padding-right:29rpx}.pr-30{padding-right:30rpx}.pr-31{padding-right:31rpx}.pr-32{padding-right:32rpx}.pr-33{padding-right:33rpx}.pr-34{padding-right:34rpx}.pr-35{padding-right:35rpx}.pr-36{padding-right:36rpx}.pr-37{padding-right:37rpx}.pr-38{padding-right:38rpx}.pr-39{padding-right:39rpx}.pr-40{padding-right:40rpx}.pr-41{padding-right:41rpx}.pr-42{padding-right:42rpx}.pr-43{padding-right:43rpx}.pr-44{padding-right:44rpx}.pr-45{padding-right:45rpx}.pr-46{padding-right:46rpx}.pr-47{padding-right:47rpx}.pr-48{padding-right:48rpx}.pr-49{padding-right:49rpx}.pr-50{padding-right:50rpx}.pr-n1{padding-right:4rpx}.pr-n2{padding-right:8rpx}.pr-n3{padding-right:12rpx}.pr-n4{padding-right:16rpx}.pr-n5{padding-right:20rpx}.pr-n6{padding-right:24rpx}.pr-n7{padding-right:28rpx}.pr-n8{padding-right:32rpx}.pr-n9{padding-right:36rpx}.pr-n10{padding-right:40rpx}.pr-n11{padding-right:44rpx}.pr-n12{padding-right:48rpx}.pr-n13{padding-right:52rpx}.pr-n14{padding-right:56rpx}.pr-n15{padding-right:60rpx}.pr-n16{padding-right:64rpx}.pr-n17{padding-right:68rpx}.pr-n18{padding-right:72rpx}.pr-n19{padding-right:76rpx}.pr-n20{padding-right:80rpx}.pr-n21{padding-right:84rpx}.pr-n22{padding-right:88rpx}.pr-n23{padding-right:92rpx}.pr-n24{padding-right:96rpx}.pr-n25{padding-right:100rpx}.pb-0{padding-bottom:0rpx}.pb-1{padding-bottom:1rpx}.pb-2{padding-bottom:2rpx}.pb-3{padding-bottom:3rpx}.pb-4{padding-bottom:4rpx}.pb-5{padding-bottom:5rpx}.pb-6{padding-bottom:6rpx}.pb-7{padding-bottom:7rpx}.pb-8{padding-bottom:8rpx}.pb-9{padding-bottom:9rpx}.pb-10{padding-bottom:10rpx}.pb-11{padding-bottom:11rpx}.pb-12{padding-bottom:12rpx}.pb-13{padding-bottom:13rpx}.pb-14{padding-bottom:14rpx}.pb-15{padding-bottom:15rpx}.pb-16{padding-bottom:16rpx}.pb-17{padding-bottom:17rpx}.pb-18{padding-bottom:18rpx}.pb-19{padding-bottom:19rpx}.pb-20{padding-bottom:20rpx}.pb-21{padding-bottom:21rpx}.pb-22{padding-bottom:22rpx}.pb-23{padding-bottom:23rpx}.pb-24{padding-bottom:24rpx}.pb-25{padding-bottom:25rpx}.pb-26{padding-bottom:26rpx}.pb-27{padding-bottom:27rpx}.pb-28{padding-bottom:28rpx}.pb-29{padding-bottom:29rpx}.pb-30{padding-bottom:30rpx}.pb-31{padding-bottom:31rpx}.pb-32{padding-bottom:32rpx}.pb-33{padding-bottom:33rpx}.pb-34{padding-bottom:34rpx}.pb-35{padding-bottom:35rpx}.pb-36{padding-bottom:36rpx}.pb-37{padding-bottom:37rpx}.pb-38{padding-bottom:38rpx}.pb-39{padding-bottom:39rpx}.pb-40{padding-bottom:40rpx}.pb-41{padding-bottom:41rpx}.pb-42{padding-bottom:42rpx}.pb-43{padding-bottom:43rpx}.pb-44{padding-bottom:44rpx}.pb-45{padding-bottom:45rpx}.pb-46{padding-bottom:46rpx}.pb-47{padding-bottom:47rpx}.pb-48{padding-bottom:48rpx}.pb-49{padding-bottom:49rpx}.pb-50{padding-bottom:50rpx}.pb-n1{padding-bottom:4rpx}.pb-n2{padding-bottom:8rpx}.pb-n3{padding-bottom:12rpx}.pb-n4{padding-bottom:16rpx}.pb-n5{padding-bottom:20rpx}.pb-n6{padding-bottom:24rpx}.pb-n7{padding-bottom:28rpx}.pb-n8{padding-bottom:32rpx}.pb-n9{padding-bottom:36rpx}.pb-n10{padding-bottom:40rpx}.pb-n11{padding-bottom:44rpx}.pb-n12{padding-bottom:48rpx}.pb-n13{padding-bottom:52rpx}.pb-n14{padding-bottom:56rpx}.pb-n15{padding-bottom:60rpx}.pb-n16{padding-bottom:64rpx}.pb-n17{padding-bottom:68rpx}.pb-n18{padding-bottom:72rpx}.pb-n19{padding-bottom:76rpx}.pb-n20{padding-bottom:80rpx}.pb-n21{padding-bottom:84rpx}.pb-n22{padding-bottom:88rpx}.pb-n23{padding-bottom:92rpx}.pb-n24{padding-bottom:96rpx}.pb-n25{padding-bottom:100rpx}.pl-0{padding-left:0rpx}.pl-1{padding-left:1rpx}.pl-2{padding-left:2rpx}.pl-3{padding-left:3rpx}.pl-4{padding-left:4rpx}.pl-5{padding-left:5rpx}.pl-6{padding-left:6rpx}.pl-7{padding-left:7rpx}.pl-8{padding-left:8rpx}.pl-9{padding-left:9rpx}.pl-10{padding-left:10rpx}.pl-11{padding-left:11rpx}.pl-12{padding-left:12rpx}.pl-13{padding-left:13rpx}.pl-14{padding-left:14rpx}.pl-15{padding-left:15rpx}.pl-16{padding-left:16rpx}.pl-17{padding-left:17rpx}.pl-18{padding-left:18rpx}.pl-19{padding-left:19rpx}.pl-20{padding-left:20rpx}.pl-21{padding-left:21rpx}.pl-22{padding-left:22rpx}.pl-23{padding-left:23rpx}.pl-24{padding-left:24rpx}.pl-25{padding-left:25rpx}.pl-26{padding-left:26rpx}.pl-27{padding-left:27rpx}.pl-28{padding-left:28rpx}.pl-29{padding-left:29rpx}.pl-30{padding-left:30rpx}.pl-31{padding-left:31rpx}.pl-32{padding-left:32rpx}.pl-33{padding-left:33rpx}.pl-34{padding-left:34rpx}.pl-35{padding-left:35rpx}.pl-36{padding-left:36rpx}.pl-37{padding-left:37rpx}.pl-38{padding-left:38rpx}.pl-39{padding-left:39rpx}.pl-40{padding-left:40rpx}.pl-41{padding-left:41rpx}.pl-42{padding-left:42rpx}.pl-43{padding-left:43rpx}.pl-44{padding-left:44rpx}.pl-45{padding-left:45rpx}.pl-46{padding-left:46rpx}.pl-47{padding-left:47rpx}.pl-48{padding-left:48rpx}.pl-49{padding-left:49rpx}.pl-50{padding-left:50rpx}.pl-n1{padding-left:4rpx}.pl-n2{padding-left:8rpx}.pl-n3{padding-left:12rpx}.pl-n4{padding-left:16rpx}.pl-n5{padding-left:20rpx}.pl-n6{padding-left:24rpx}.pl-n7{padding-left:28rpx}.pl-n8{padding-left:32rpx}.pl-n9{padding-left:36rpx}.pl-n10{padding-left:40rpx}.pl-n11{padding-left:44rpx}.pl-n12{padding-left:48rpx}.pl-n13{padding-left:52rpx}.pl-n14{padding-left:56rpx}.pl-n15{padding-left:60rpx}.pl-n16{padding-left:64rpx}.pl-n17{padding-left:68rpx}.pl-n18{padding-left:72rpx}.pl-n19{padding-left:76rpx}.pl-n20{padding-left:80rpx}.pl-n21{padding-left:84rpx}.pl-n22{padding-left:88rpx}.pl-n23{padding-left:92rpx}.pl-n24{padding-left:96rpx}.pl-n25{padding-left:100rpx}.px-0{padding-left:0rpx;padding-right:0rpx}.px-1{padding-left:1rpx;padding-right:1rpx}.px-2{padding-left:2rpx;padding-right:2rpx}.px-3{padding-left:3rpx;padding-right:3rpx}.px-4{padding-left:4rpx;padding-right:4rpx}.px-5{padding-left:5rpx;padding-right:5rpx}.px-6{padding-left:6rpx;padding-right:6rpx}.px-7{padding-left:7rpx;padding-right:7rpx}.px-8{padding-left:8rpx;padding-right:8rpx}.px-9{padding-left:9rpx;padding-right:9rpx}.px-10{padding-left:10rpx;padding-right:10rpx}.px-11{padding-left:11rpx;padding-right:11rpx}.px-12{padding-left:12rpx;padding-right:12rpx}.px-13{padding-left:13rpx;padding-right:13rpx}.px-14{padding-left:14rpx;padding-right:14rpx}.px-15{padding-left:15rpx;padding-right:15rpx}.px-16{padding-left:16rpx;padding-right:16rpx}.px-17{padding-left:17rpx;padding-right:17rpx}.px-18{padding-left:18rpx;padding-right:18rpx}.px-19{padding-left:19rpx;padding-right:19rpx}.px-20{padding-left:20rpx;padding-right:20rpx}.px-21{padding-left:21rpx;padding-right:21rpx}.px-22{padding-left:22rpx;padding-right:22rpx}.px-23{padding-left:23rpx;padding-right:23rpx}.px-24{padding-left:24rpx;padding-right:24rpx}.px-25{padding-left:25rpx;padding-right:25rpx}.px-26{padding-left:26rpx;padding-right:26rpx}.px-27{padding-left:27rpx;padding-right:27rpx}.px-28{padding-left:28rpx;padding-right:28rpx}.px-29{padding-left:29rpx;padding-right:29rpx}.px-30{padding-left:30rpx;padding-right:30rpx}.px-31{padding-left:31rpx;padding-right:31rpx}.px-32{padding-left:32rpx;padding-right:32rpx}.px-33{padding-left:33rpx;padding-right:33rpx}.px-34{padding-left:34rpx;padding-right:34rpx}.px-35{padding-left:35rpx;padding-right:35rpx}.px-36{padding-left:36rpx;padding-right:36rpx}.px-37{padding-left:37rpx;padding-right:37rpx}.px-38{padding-left:38rpx;padding-right:38rpx}.px-39{padding-left:39rpx;padding-right:39rpx}.px-40{padding-left:40rpx;padding-right:40rpx}.px-41{padding-left:41rpx;padding-right:41rpx}.px-42{padding-left:42rpx;padding-right:42rpx}.px-43{padding-left:43rpx;padding-right:43rpx}.px-44{padding-left:44rpx;padding-right:44rpx}.px-45{padding-left:45rpx;padding-right:45rpx}.px-46{padding-left:46rpx;padding-right:46rpx}.px-47{padding-left:47rpx;padding-right:47rpx}.px-48{padding-left:48rpx;padding-right:48rpx}.px-49{padding-left:49rpx;padding-right:49rpx}.px-50{padding-left:50rpx;padding-right:50rpx}.px-n1{padding-left:4rpx;padding-right:4rpx}.px-n2{padding-left:8rpx;padding-right:8rpx}.px-n3{padding-left:12rpx;padding-right:12rpx}.px-n4{padding-left:16rpx;padding-right:16rpx}.px-n5{padding-left:20rpx;padding-right:20rpx}.px-n6{padding-left:24rpx;padding-right:24rpx}.px-n7{padding-left:28rpx;padding-right:28rpx}.px-n8{padding-left:32rpx;padding-right:32rpx}.px-n9{padding-left:36rpx;padding-right:36rpx}.px-n10{padding-left:40rpx;padding-right:40rpx}.px-n11{padding-left:44rpx;padding-right:44rpx}.px-n12{padding-left:48rpx;padding-right:48rpx}.px-n13{padding-left:52rpx;padding-right:52rpx}.px-n14{padding-left:56rpx;padding-right:56rpx}.px-n15{padding-left:60rpx;padding-right:60rpx}.px-n16{padding-left:64rpx;padding-right:64rpx}.px-n17{padding-left:68rpx;padding-right:68rpx}.px-n18{padding-left:72rpx;padding-right:72rpx}.px-n19{padding-left:76rpx;padding-right:76rpx}.px-n20{padding-left:80rpx;padding-right:80rpx}.px-n21{padding-left:84rpx;padding-right:84rpx}.px-n22{padding-left:88rpx;padding-right:88rpx}.px-n23{padding-left:92rpx;padding-right:92rpx}.px-n24{padding-left:96rpx;padding-right:96rpx}.px-n25{padding-left:100rpx;padding-right:100rpx}.py-0{padding-top:0rpx;padding-bottom:0rpx}.py-1{padding-top:1rpx;padding-bottom:1rpx}.py-2{padding-top:2rpx;padding-bottom:2rpx}.py-3{padding-top:3rpx;padding-bottom:3rpx}.py-4{padding-top:4rpx;padding-bottom:4rpx}.py-5{padding-top:5rpx;padding-bottom:5rpx}.py-6{padding-top:6rpx;padding-bottom:6rpx}.py-7{padding-top:7rpx;padding-bottom:7rpx}.py-8{padding-top:8rpx;padding-bottom:8rpx}.py-9{padding-top:9rpx;padding-bottom:9rpx}.py-10{padding-top:10rpx;padding-bottom:10rpx}.py-11{padding-top:11rpx;padding-bottom:11rpx}.py-12{padding-top:12rpx;padding-bottom:12rpx}.py-13{padding-top:13rpx;padding-bottom:13rpx}.py-14{padding-top:14rpx;padding-bottom:14rpx}.py-15{padding-top:15rpx;padding-bottom:15rpx}.py-16{padding-top:16rpx;padding-bottom:16rpx}.py-17{padding-top:17rpx;padding-bottom:17rpx}.py-18{padding-top:18rpx;padding-bottom:18rpx}.py-19{padding-top:19rpx;padding-bottom:19rpx}.py-20{padding-top:20rpx;padding-bottom:20rpx}.py-21{padding-top:21rpx;padding-bottom:21rpx}.py-22{padding-top:22rpx;padding-bottom:22rpx}.py-23{padding-top:23rpx;padding-bottom:23rpx}.py-24{padding-top:24rpx;padding-bottom:24rpx}.py-25{padding-top:25rpx;padding-bottom:25rpx}.py-26{padding-top:26rpx;padding-bottom:26rpx}.py-27{padding-top:27rpx;padding-bottom:27rpx}.py-28{padding-top:28rpx;padding-bottom:28rpx}.py-29{padding-top:29rpx;padding-bottom:29rpx}.py-30{padding-top:30rpx;padding-bottom:30rpx}.py-31{padding-top:31rpx;padding-bottom:31rpx}.py-32{padding-top:32rpx;padding-bottom:32rpx}.py-33{padding-top:33rpx;padding-bottom:33rpx}.py-34{padding-top:34rpx;padding-bottom:34rpx}.py-35{padding-top:35rpx;padding-bottom:35rpx}.py-36{padding-top:36rpx;padding-bottom:36rpx}.py-37{padding-top:37rpx;padding-bottom:37rpx}.py-38{padding-top:38rpx;padding-bottom:38rpx}.py-39{padding-top:39rpx;padding-bottom:39rpx}.py-40{padding-top:40rpx;padding-bottom:40rpx}.py-41{padding-top:41rpx;padding-bottom:41rpx}.py-42{padding-top:42rpx;padding-bottom:42rpx}.py-43{padding-top:43rpx;padding-bottom:43rpx}.py-44{padding-top:44rpx;padding-bottom:44rpx}.py-45{padding-top:45rpx;padding-bottom:45rpx}.py-46{padding-top:46rpx;padding-bottom:46rpx}.py-47{padding-top:47rpx;padding-bottom:47rpx}.py-48{padding-top:48rpx;padding-bottom:48rpx}.py-49{padding-top:49rpx;padding-bottom:49rpx}.py-50{padding-top:50rpx;padding-bottom:50rpx}.py-n1{padding-top:4rpx;padding-bottom:4rpx}.py-n2{padding-top:8rpx;padding-bottom:8rpx}.py-n3{padding-top:12rpx;padding-bottom:12rpx}.py-n4{padding-top:16rpx;padding-bottom:16rpx}.py-n5{padding-top:20rpx;padding-bottom:20rpx}.py-n6{padding-top:24rpx;padding-bottom:24rpx}.py-n7{padding-top:28rpx;padding-bottom:28rpx}.py-n8{padding-top:32rpx;padding-bottom:32rpx}.py-n9{padding-top:36rpx;padding-bottom:36rpx}.py-n10{padding-top:40rpx;padding-bottom:40rpx}.py-n11{padding-top:44rpx;padding-bottom:44rpx}.py-n12{padding-top:48rpx;padding-bottom:48rpx}.py-n13{padding-top:52rpx;padding-bottom:52rpx}.py-n14{padding-top:56rpx;padding-bottom:56rpx}.py-n15{padding-top:60rpx;padding-bottom:60rpx}.py-n16{padding-top:64rpx;padding-bottom:64rpx}.py-n17{padding-top:68rpx;padding-bottom:68rpx}.py-n18{padding-top:72rpx;padding-bottom:72rpx}.py-n19{padding-top:76rpx;padding-bottom:76rpx}.py-n20{padding-top:80rpx;padding-bottom:80rpx}.py-n21{padding-top:84rpx;padding-bottom:84rpx}.py-n22{padding-top:88rpx;padding-bottom:88rpx}.py-n23{padding-top:92rpx;padding-bottom:92rpx}.py-n24{padding-top:96rpx;padding-bottom:96rpx}.py-n25{padding-top:100rpx;padding-bottom:100rpx}.ma-0{margin:0rpx}.ma-1{margin:1rpx}.ma-2{margin:2rpx}.ma-3{margin:3rpx}.ma-4{margin:4rpx}.ma-5{margin:5rpx}.ma-6{margin:6rpx}.ma-7{margin:7rpx}.ma-8{margin:8rpx}.ma-9{margin:9rpx}.ma-10{margin:10rpx}.ma-11{margin:11rpx}.ma-12{margin:12rpx}.ma-13{margin:13rpx}.ma-14{margin:14rpx}.ma-15{margin:15rpx}.ma-16{margin:16rpx}.ma-17{margin:17rpx}.ma-18{margin:18rpx}.ma-19{margin:19rpx}.ma-20{margin:20rpx}.ma-21{margin:21rpx}.ma-22{margin:22rpx}.ma-23{margin:23rpx}.ma-24{margin:24rpx}.ma-25{margin:25rpx}.ma-26{margin:26rpx}.ma-27{margin:27rpx}.ma-28{margin:28rpx}.ma-29{margin:29rpx}.ma-30{margin:30rpx}.ma-31{margin:31rpx}.ma-32{margin:32rpx}.ma-33{margin:33rpx}.ma-34{margin:34rpx}.ma-35{margin:35rpx}.ma-36{margin:36rpx}.ma-37{margin:37rpx}.ma-38{margin:38rpx}.ma-39{margin:39rpx}.ma-40{margin:40rpx}.ma-41{margin:41rpx}.ma-42{margin:42rpx}.ma-43{margin:43rpx}.ma-44{margin:44rpx}.ma-45{margin:45rpx}.ma-46{margin:46rpx}.ma-47{margin:47rpx}.ma-48{margin:48rpx}.ma-49{margin:49rpx}.ma-50{margin:50rpx}.ma-n1{margin:4rpx}.ma-n2{margin:8rpx}.ma-n3{margin:12rpx}.ma-n4{margin:16rpx}.ma-n5{margin:20rpx}.ma-n6{margin:24rpx}.ma-n7{margin:28rpx}.ma-n8{margin:32rpx}.ma-n9{margin:36rpx}.ma-n10{margin:40rpx}.ma-n11{margin:44rpx}.ma-n12{margin:48rpx}.ma-n13{margin:52rpx}.ma-n14{margin:56rpx}.ma-n15{margin:60rpx}.ma-n16{margin:64rpx}.ma-n17{margin:68rpx}.ma-n18{margin:72rpx}.ma-n19{margin:76rpx}.ma-n20{margin:80rpx}.ma-n21{margin:84rpx}.ma-n22{margin:88rpx}.ma-n23{margin:92rpx}.ma-n24{margin:96rpx}.ma-n25{margin:100rpx}.mt-0{margin-top:0rpx}.mt--0{margin-top:0rpx}.mt-1{margin-top:1rpx}.mt--1{margin-top:-1rpx}.mt-2{margin-top:2rpx}.mt--2{margin-top:-2rpx}.mt-3{margin-top:3rpx}.mt--3{margin-top:-3rpx}.mt-4{margin-top:4rpx}.mt--4{margin-top:-4rpx}.mt-5{margin-top:5rpx}.mt--5{margin-top:-5rpx}.mt-6{margin-top:6rpx}.mt--6{margin-top:-6rpx}.mt-7{margin-top:7rpx}.mt--7{margin-top:-7rpx}.mt-8{margin-top:8rpx}.mt--8{margin-top:-8rpx}.mt-9{margin-top:9rpx}.mt--9{margin-top:-9rpx}.mt-10{margin-top:10rpx}.mt--10{margin-top:-10rpx}.mt-11{margin-top:11rpx}.mt--11{margin-top:-11rpx}.mt-12{margin-top:12rpx}.mt--12{margin-top:-12rpx}.mt-13{margin-top:13rpx}.mt--13{margin-top:-13rpx}.mt-14{margin-top:14rpx}.mt--14{margin-top:-14rpx}.mt-15{margin-top:15rpx}.mt--15{margin-top:-15rpx}.mt-16{margin-top:16rpx}.mt--16{margin-top:-16rpx}.mt-17{margin-top:17rpx}.mt--17{margin-top:-17rpx}.mt-18{margin-top:18rpx}.mt--18{margin-top:-18rpx}.mt-19{margin-top:19rpx}.mt--19{margin-top:-19rpx}.mt-20{margin-top:20rpx}.mt--20{margin-top:-20rpx}.mt-21{margin-top:21rpx}.mt--21{margin-top:-21rpx}.mt-22{margin-top:22rpx}.mt--22{margin-top:-22rpx}.mt-23{margin-top:23rpx}.mt--23{margin-top:-23rpx}.mt-24{margin-top:24rpx}.mt--24{margin-top:-24rpx}.mt-25{margin-top:25rpx}.mt--25{margin-top:-25rpx}.mt-26{margin-top:26rpx}.mt--26{margin-top:-26rpx}.mt-27{margin-top:27rpx}.mt--27{margin-top:-27rpx}.mt-28{margin-top:28rpx}.mt--28{margin-top:-28rpx}.mt-29{margin-top:29rpx}.mt--29{margin-top:-29rpx}.mt-30{margin-top:30rpx}.mt--30{margin-top:-30rpx}.mt-31{margin-top:31rpx}.mt--31{margin-top:-31rpx}.mt-32{margin-top:32rpx}.mt--32{margin-top:-32rpx}.mt-33{margin-top:33rpx}.mt--33{margin-top:-33rpx}.mt-34{margin-top:34rpx}.mt--34{margin-top:-34rpx}.mt-35{margin-top:35rpx}.mt--35{margin-top:-35rpx}.mt-36{margin-top:36rpx}.mt--36{margin-top:-36rpx}.mt-37{margin-top:37rpx}.mt--37{margin-top:-37rpx}.mt-38{margin-top:38rpx}.mt--38{margin-top:-38rpx}.mt-39{margin-top:39rpx}.mt--39{margin-top:-39rpx}.mt-40{margin-top:40rpx}.mt--40{margin-top:-40rpx}.mt-41{margin-top:41rpx}.mt--41{margin-top:-41rpx}.mt-42{margin-top:42rpx}.mt--42{margin-top:-42rpx}.mt-43{margin-top:43rpx}.mt--43{margin-top:-43rpx}.mt-44{margin-top:44rpx}.mt--44{margin-top:-44rpx}.mt-45{margin-top:45rpx}.mt--45{margin-top:-45rpx}.mt-46{margin-top:46rpx}.mt--46{margin-top:-46rpx}.mt-47{margin-top:47rpx}.mt--47{margin-top:-47rpx}.mt-48{margin-top:48rpx}.mt--48{margin-top:-48rpx}.mt-49{margin-top:49rpx}.mt--49{margin-top:-49rpx}.mt-50{margin-top:50rpx}.mt--50{margin-top:-50rpx}.mt-n1{margin-top:4rpx}.mt--n1{margin-top:-4rpx}.mt-n2{margin-top:8rpx}.mt--n2{margin-top:-8rpx}.mt-n3{margin-top:12rpx}.mt--n3{margin-top:-12rpx}.mt-n4{margin-top:16rpx}.mt--n4{margin-top:-16rpx}.mt-n5{margin-top:20rpx}.mt--n5{margin-top:-20rpx}.mt-n6{margin-top:24rpx}.mt--n6{margin-top:-24rpx}.mt-n7{margin-top:28rpx}.mt--n7{margin-top:-28rpx}.mt-n8{margin-top:32rpx}.mt--n8{margin-top:-32rpx}.mt-n9{margin-top:36rpx}.mt--n9{margin-top:-36rpx}.mt-n10{margin-top:40rpx}.mt--n10{margin-top:-40rpx}.mt-n11{margin-top:44rpx}.mt--n11{margin-top:-44rpx}.mt-n12{margin-top:48rpx}.mt--n12{margin-top:-48rpx}.mt-n13{margin-top:52rpx}.mt--n13{margin-top:-52rpx}.mt-n14{margin-top:56rpx}.mt--n14{margin-top:-56rpx}.mt-n15{margin-top:60rpx}.mt--n15{margin-top:-60rpx}.mt-n16{margin-top:64rpx}.mt--n16{margin-top:-64rpx}.mt-n17{margin-top:68rpx}.mt--n17{margin-top:-68rpx}.mt-n18{margin-top:72rpx}.mt--n18{margin-top:-72rpx}.mt-n19{margin-top:76rpx}.mt--n19{margin-top:-76rpx}.mt-n20{margin-top:80rpx}.mt--n20{margin-top:-80rpx}.mt-n21{margin-top:84rpx}.mt--n21{margin-top:-84rpx}.mt-n22{margin-top:88rpx}.mt--n22{margin-top:-88rpx}.mt-n23{margin-top:92rpx}.mt--n23{margin-top:-92rpx}.mt-n24{margin-top:96rpx}.mt--n24{margin-top:-96rpx}.mt-n25{margin-top:100rpx}.mt--n25{margin-top:-100rpx}.mr-0{margin-right:0rpx}.mr--0{margin-right:0rpx}.mr-1{margin-right:1rpx}.mr--1{margin-right:-1rpx}.mr-2{margin-right:2rpx}.mr--2{margin-right:-2rpx}.mr-3{margin-right:3rpx}.mr--3{margin-right:-3rpx}.mr-4{margin-right:4rpx}.mr--4{margin-right:-4rpx}.mr-5{margin-right:5rpx}.mr--5{margin-right:-5rpx}.mr-6{margin-right:6rpx}.mr--6{margin-right:-6rpx}.mr-7{margin-right:7rpx}.mr--7{margin-right:-7rpx}.mr-8{margin-right:8rpx}.mr--8{margin-right:-8rpx}.mr-9{margin-right:9rpx}.mr--9{margin-right:-9rpx}.mr-10{margin-right:10rpx}.mr--10{margin-right:-10rpx}.mr-11{margin-right:11rpx}.mr--11{margin-right:-11rpx}.mr-12{margin-right:12rpx}.mr--12{margin-right:-12rpx}.mr-13{margin-right:13rpx}.mr--13{margin-right:-13rpx}.mr-14{margin-right:14rpx}.mr--14{margin-right:-14rpx}.mr-15{margin-right:15rpx}.mr--15{margin-right:-15rpx}.mr-16{margin-right:16rpx}.mr--16{margin-right:-16rpx}.mr-17{margin-right:17rpx}.mr--17{margin-right:-17rpx}.mr-18{margin-right:18rpx}.mr--18{margin-right:-18rpx}.mr-19{margin-right:19rpx}.mr--19{margin-right:-19rpx}.mr-20{margin-right:20rpx}.mr--20{margin-right:-20rpx}.mr-21{margin-right:21rpx}.mr--21{margin-right:-21rpx}.mr-22{margin-right:22rpx}.mr--22{margin-right:-22rpx}.mr-23{margin-right:23rpx}.mr--23{margin-right:-23rpx}.mr-24{margin-right:24rpx}.mr--24{margin-right:-24rpx}.mr-25{margin-right:25rpx}.mr--25{margin-right:-25rpx}.mr-26{margin-right:26rpx}.mr--26{margin-right:-26rpx}.mr-27{margin-right:27rpx}.mr--27{margin-right:-27rpx}.mr-28{margin-right:28rpx}.mr--28{margin-right:-28rpx}.mr-29{margin-right:29rpx}.mr--29{margin-right:-29rpx}.mr-30{margin-right:30rpx}.mr--30{margin-right:-30rpx}.mr-31{margin-right:31rpx}.mr--31{margin-right:-31rpx}.mr-32{margin-right:32rpx}.mr--32{margin-right:-32rpx}.mr-33{margin-right:33rpx}.mr--33{margin-right:-33rpx}.mr-34{margin-right:34rpx}.mr--34{margin-right:-34rpx}.mr-35{margin-right:35rpx}.mr--35{margin-right:-35rpx}.mr-36{margin-right:36rpx}.mr--36{margin-right:-36rpx}.mr-37{margin-right:37rpx}.mr--37{margin-right:-37rpx}.mr-38{margin-right:38rpx}.mr--38{margin-right:-38rpx}.mr-39{margin-right:39rpx}.mr--39{margin-right:-39rpx}.mr-40{margin-right:40rpx}.mr--40{margin-right:-40rpx}.mr-41{margin-right:41rpx}.mr--41{margin-right:-41rpx}.mr-42{margin-right:42rpx}.mr--42{margin-right:-42rpx}.mr-43{margin-right:43rpx}.mr--43{margin-right:-43rpx}.mr-44{margin-right:44rpx}.mr--44{margin-right:-44rpx}.mr-45{margin-right:45rpx}.mr--45{margin-right:-45rpx}.mr-46{margin-right:46rpx}.mr--46{margin-right:-46rpx}.mr-47{margin-right:47rpx}.mr--47{margin-right:-47rpx}.mr-48{margin-right:48rpx}.mr--48{margin-right:-48rpx}.mr-49{margin-right:49rpx}.mr--49{margin-right:-49rpx}.mr-50{margin-right:50rpx}.mr--50{margin-right:-50rpx}.mr-n1{margin-right:4rpx}.mr--n1{margin-right:-4rpx}.mr-n2{margin-right:8rpx}.mr--n2{margin-right:-8rpx}.mr-n3{margin-right:12rpx}.mr--n3{margin-right:-12rpx}.mr-n4{margin-right:16rpx}.mr--n4{margin-right:-16rpx}.mr-n5{margin-right:20rpx}.mr--n5{margin-right:-20rpx}.mr-n6{margin-right:24rpx}.mr--n6{margin-right:-24rpx}.mr-n7{margin-right:28rpx}.mr--n7{margin-right:-28rpx}.mr-n8{margin-right:32rpx}.mr--n8{margin-right:-32rpx}.mr-n9{margin-right:36rpx}.mr--n9{margin-right:-36rpx}.mr-n10{margin-right:40rpx}.mr--n10{margin-right:-40rpx}.mr-n11{margin-right:44rpx}.mr--n11{margin-right:-44rpx}.mr-n12{margin-right:48rpx}.mr--n12{margin-right:-48rpx}.mr-n13{margin-right:52rpx}.mr--n13{margin-right:-52rpx}.mr-n14{margin-right:56rpx}.mr--n14{margin-right:-56rpx}.mr-n15{margin-right:60rpx}.mr--n15{margin-right:-60rpx}.mr-n16{margin-right:64rpx}.mr--n16{margin-right:-64rpx}.mr-n17{margin-right:68rpx}.mr--n17{margin-right:-68rpx}.mr-n18{margin-right:72rpx}.mr--n18{margin-right:-72rpx}.mr-n19{margin-right:76rpx}.mr--n19{margin-right:-76rpx}.mr-n20{margin-right:80rpx}.mr--n20{margin-right:-80rpx}.mr-n21{margin-right:84rpx}.mr--n21{margin-right:-84rpx}.mr-n22{margin-right:88rpx}.mr--n22{margin-right:-88rpx}.mr-n23{margin-right:92rpx}.mr--n23{margin-right:-92rpx}.mr-n24{margin-right:96rpx}.mr--n24{margin-right:-96rpx}.mr-n25{margin-right:100rpx}.mr--n25{margin-right:-100rpx}.mb-0{margin-bottom:0rpx}.mb--0{margin-bottom:0rpx}.mb-1{margin-bottom:1rpx}.mb--1{margin-bottom:-1rpx}.mb-2{margin-bottom:2rpx}.mb--2{margin-bottom:-2rpx}.mb-3{margin-bottom:3rpx}.mb--3{margin-bottom:-3rpx}.mb-4{margin-bottom:4rpx}.mb--4{margin-bottom:-4rpx}.mb-5{margin-bottom:5rpx}.mb--5{margin-bottom:-5rpx}.mb-6{margin-bottom:6rpx}.mb--6{margin-bottom:-6rpx}.mb-7{margin-bottom:7rpx}.mb--7{margin-bottom:-7rpx}.mb-8{margin-bottom:8rpx}.mb--8{margin-bottom:-8rpx}.mb-9{margin-bottom:9rpx}.mb--9{margin-bottom:-9rpx}.mb-10{margin-bottom:10rpx}.mb--10{margin-bottom:-10rpx}.mb-11{margin-bottom:11rpx}.mb--11{margin-bottom:-11rpx}.mb-12{margin-bottom:12rpx}.mb--12{margin-bottom:-12rpx}.mb-13{margin-bottom:13rpx}.mb--13{margin-bottom:-13rpx}.mb-14{margin-bottom:14rpx}.mb--14{margin-bottom:-14rpx}.mb-15{margin-bottom:15rpx}.mb--15{margin-bottom:-15rpx}.mb-16{margin-bottom:16rpx}.mb--16{margin-bottom:-16rpx}.mb-17{margin-bottom:17rpx}.mb--17{margin-bottom:-17rpx}.mb-18{margin-bottom:18rpx}.mb--18{margin-bottom:-18rpx}.mb-19{margin-bottom:19rpx}.mb--19{margin-bottom:-19rpx}.mb-20{margin-bottom:20rpx}.mb--20{margin-bottom:-20rpx}.mb-21{margin-bottom:21rpx}.mb--21{margin-bottom:-21rpx}.mb-22{margin-bottom:22rpx}.mb--22{margin-bottom:-22rpx}.mb-23{margin-bottom:23rpx}.mb--23{margin-bottom:-23rpx}.mb-24{margin-bottom:24rpx}.mb--24{margin-bottom:-24rpx}.mb-25{margin-bottom:25rpx}.mb--25{margin-bottom:-25rpx}.mb-26{margin-bottom:26rpx}.mb--26{margin-bottom:-26rpx}.mb-27{margin-bottom:27rpx}.mb--27{margin-bottom:-27rpx}.mb-28{margin-bottom:28rpx}.mb--28{margin-bottom:-28rpx}.mb-29{margin-bottom:29rpx}.mb--29{margin-bottom:-29rpx}.mb-30{margin-bottom:30rpx}.mb--30{margin-bottom:-30rpx}.mb-31{margin-bottom:31rpx}.mb--31{margin-bottom:-31rpx}.mb-32{margin-bottom:32rpx}.mb--32{margin-bottom:-32rpx}.mb-33{margin-bottom:33rpx}.mb--33{margin-bottom:-33rpx}.mb-34{margin-bottom:34rpx}.mb--34{margin-bottom:-34rpx}.mb-35{margin-bottom:35rpx}.mb--35{margin-bottom:-35rpx}.mb-36{margin-bottom:36rpx}.mb--36{margin-bottom:-36rpx}.mb-37{margin-bottom:37rpx}.mb--37{margin-bottom:-37rpx}.mb-38{margin-bottom:38rpx}.mb--38{margin-bottom:-38rpx}.mb-39{margin-bottom:39rpx}.mb--39{margin-bottom:-39rpx}.mb-40{margin-bottom:40rpx}.mb--40{margin-bottom:-40rpx}.mb-41{margin-bottom:41rpx}.mb--41{margin-bottom:-41rpx}.mb-42{margin-bottom:42rpx}.mb--42{margin-bottom:-42rpx}.mb-43{margin-bottom:43rpx}.mb--43{margin-bottom:-43rpx}.mb-44{margin-bottom:44rpx}.mb--44{margin-bottom:-44rpx}.mb-45{margin-bottom:45rpx}.mb--45{margin-bottom:-45rpx}.mb-46{margin-bottom:46rpx}.mb--46{margin-bottom:-46rpx}.mb-47{margin-bottom:47rpx}.mb--47{margin-bottom:-47rpx}.mb-48{margin-bottom:48rpx}.mb--48{margin-bottom:-48rpx}.mb-49{margin-bottom:49rpx}.mb--49{margin-bottom:-49rpx}.mb-50{margin-bottom:50rpx}.mb--50{margin-bottom:-50rpx}.mb-n1{margin-bottom:4rpx}.mb--n1{margin-bottom:-4rpx}.mb-n2{margin-bottom:8rpx}.mb--n2{margin-bottom:-8rpx}.mb-n3{margin-bottom:12rpx}.mb--n3{margin-bottom:-12rpx}.mb-n4{margin-bottom:16rpx}.mb--n4{margin-bottom:-16rpx}.mb-n5{margin-bottom:20rpx}.mb--n5{margin-bottom:-20rpx}.mb-n6{margin-bottom:24rpx}.mb--n6{margin-bottom:-24rpx}.mb-n7{margin-bottom:28rpx}.mb--n7{margin-bottom:-28rpx}.mb-n8{margin-bottom:32rpx}.mb--n8{margin-bottom:-32rpx}.mb-n9{margin-bottom:36rpx}.mb--n9{margin-bottom:-36rpx}.mb-n10{margin-bottom:40rpx}.mb--n10{margin-bottom:-40rpx}.mb-n11{margin-bottom:44rpx}.mb--n11{margin-bottom:-44rpx}.mb-n12{margin-bottom:48rpx}.mb--n12{margin-bottom:-48rpx}.mb-n13{margin-bottom:52rpx}.mb--n13{margin-bottom:-52rpx}.mb-n14{margin-bottom:56rpx}.mb--n14{margin-bottom:-56rpx}.mb-n15{margin-bottom:60rpx}.mb--n15{margin-bottom:-60rpx}.mb-n16{margin-bottom:64rpx}.mb--n16{margin-bottom:-64rpx}.mb-n17{margin-bottom:68rpx}.mb--n17{margin-bottom:-68rpx}.mb-n18{margin-bottom:72rpx}.mb--n18{margin-bottom:-72rpx}.mb-n19{margin-bottom:76rpx}.mb--n19{margin-bottom:-76rpx}.mb-n20{margin-bottom:80rpx}.mb--n20{margin-bottom:-80rpx}.mb-n21{margin-bottom:84rpx}.mb--n21{margin-bottom:-84rpx}.mb-n22{margin-bottom:88rpx}.mb--n22{margin-bottom:-88rpx}.mb-n23{margin-bottom:92rpx}.mb--n23{margin-bottom:-92rpx}.mb-n24{margin-bottom:96rpx}.mb--n24{margin-bottom:-96rpx}.mb-n25{margin-bottom:100rpx}.mb--n25{margin-bottom:-100rpx}.ml-0{margin-left:0rpx}.ml--0{margin-left:0rpx}.ml-1{margin-left:1rpx}.ml--1{margin-left:-1rpx}.ml-2{margin-left:2rpx}.ml--2{margin-left:-2rpx}.ml-3{margin-left:3rpx}.ml--3{margin-left:-3rpx}.ml-4{margin-left:4rpx}.ml--4{margin-left:-4rpx}.ml-5{margin-left:5rpx}.ml--5{margin-left:-5rpx}.ml-6{margin-left:6rpx}.ml--6{margin-left:-6rpx}.ml-7{margin-left:7rpx}.ml--7{margin-left:-7rpx}.ml-8{margin-left:8rpx}.ml--8{margin-left:-8rpx}.ml-9{margin-left:9rpx}.ml--9{margin-left:-9rpx}.ml-10{margin-left:10rpx}.ml--10{margin-left:-10rpx}.ml-11{margin-left:11rpx}.ml--11{margin-left:-11rpx}.ml-12{margin-left:12rpx}.ml--12{margin-left:-12rpx}.ml-13{margin-left:13rpx}.ml--13{margin-left:-13rpx}.ml-14{margin-left:14rpx}.ml--14{margin-left:-14rpx}.ml-15{margin-left:15rpx}.ml--15{margin-left:-15rpx}.ml-16{margin-left:16rpx}.ml--16{margin-left:-16rpx}.ml-17{margin-left:17rpx}.ml--17{margin-left:-17rpx}.ml-18{margin-left:18rpx}.ml--18{margin-left:-18rpx}.ml-19{margin-left:19rpx}.ml--19{margin-left:-19rpx}.ml-20{margin-left:20rpx}.ml--20{margin-left:-20rpx}.ml-21{margin-left:21rpx}.ml--21{margin-left:-21rpx}.ml-22{margin-left:22rpx}.ml--22{margin-left:-22rpx}.ml-23{margin-left:23rpx}.ml--23{margin-left:-23rpx}.ml-24{margin-left:24rpx}.ml--24{margin-left:-24rpx}.ml-25{margin-left:25rpx}.ml--25{margin-left:-25rpx}.ml-26{margin-left:26rpx}.ml--26{margin-left:-26rpx}.ml-27{margin-left:27rpx}.ml--27{margin-left:-27rpx}.ml-28{margin-left:28rpx}.ml--28{margin-left:-28rpx}.ml-29{margin-left:29rpx}.ml--29{margin-left:-29rpx}.ml-30{margin-left:30rpx}.ml--30{margin-left:-30rpx}.ml-31{margin-left:31rpx}.ml--31{margin-left:-31rpx}.ml-32{margin-left:32rpx}.ml--32{margin-left:-32rpx}.ml-33{margin-left:33rpx}.ml--33{margin-left:-33rpx}.ml-34{margin-left:34rpx}.ml--34{margin-left:-34rpx}.ml-35{margin-left:35rpx}.ml--35{margin-left:-35rpx}.ml-36{margin-left:36rpx}.ml--36{margin-left:-36rpx}.ml-37{margin-left:37rpx}.ml--37{margin-left:-37rpx}.ml-38{margin-left:38rpx}.ml--38{margin-left:-38rpx}.ml-39{margin-left:39rpx}.ml--39{margin-left:-39rpx}.ml-40{margin-left:40rpx}.ml--40{margin-left:-40rpx}.ml-41{margin-left:41rpx}.ml--41{margin-left:-41rpx}.ml-42{margin-left:42rpx}.ml--42{margin-left:-42rpx}.ml-43{margin-left:43rpx}.ml--43{margin-left:-43rpx}.ml-44{margin-left:44rpx}.ml--44{margin-left:-44rpx}.ml-45{margin-left:45rpx}.ml--45{margin-left:-45rpx}.ml-46{margin-left:46rpx}.ml--46{margin-left:-46rpx}.ml-47{margin-left:47rpx}.ml--47{margin-left:-47rpx}.ml-48{margin-left:48rpx}.ml--48{margin-left:-48rpx}.ml-49{margin-left:49rpx}.ml--49{margin-left:-49rpx}.ml-50{margin-left:50rpx}.ml--50{margin-left:-50rpx}.ml-n1{margin-left:4rpx}.ml--n1{margin-left:-4rpx}.ml-n2{margin-left:8rpx}.ml--n2{margin-left:-8rpx}.ml-n3{margin-left:12rpx}.ml--n3{margin-left:-12rpx}.ml-n4{margin-left:16rpx}.ml--n4{margin-left:-16rpx}.ml-n5{margin-left:20rpx}.ml--n5{margin-left:-20rpx}.ml-n6{margin-left:24rpx}.ml--n6{margin-left:-24rpx}.ml-n7{margin-left:28rpx}.ml--n7{margin-left:-28rpx}.ml-n8{margin-left:32rpx}.ml--n8{margin-left:-32rpx}.ml-n9{margin-left:36rpx}.ml--n9{margin-left:-36rpx}.ml-n10{margin-left:40rpx}.ml--n10{margin-left:-40rpx}.ml-n11{margin-left:44rpx}.ml--n11{margin-left:-44rpx}.ml-n12{margin-left:48rpx}.ml--n12{margin-left:-48rpx}.ml-n13{margin-left:52rpx}.ml--n13{margin-left:-52rpx}.ml-n14{margin-left:56rpx}.ml--n14{margin-left:-56rpx}.ml-n15{margin-left:60rpx}.ml--n15{margin-left:-60rpx}.ml-n16{margin-left:64rpx}.ml--n16{margin-left:-64rpx}.ml-n17{margin-left:68rpx}.ml--n17{margin-left:-68rpx}.ml-n18{margin-left:72rpx}.ml--n18{margin-left:-72rpx}.ml-n19{margin-left:76rpx}.ml--n19{margin-left:-76rpx}.ml-n20{margin-left:80rpx}.ml--n20{margin-left:-80rpx}.ml-n21{margin-left:84rpx}.ml--n21{margin-left:-84rpx}.ml-n22{margin-left:88rpx}.ml--n22{margin-left:-88rpx}.ml-n23{margin-left:92rpx}.ml--n23{margin-left:-92rpx}.ml-n24{margin-left:96rpx}.ml--n24{margin-left:-96rpx}.ml-n25{margin-left:100rpx}.ml--n25{margin-left:-100rpx}.mx-0{margin-left:0rpx;margin-right:0rpx}.mx-1{margin-left:1rpx;margin-right:1rpx}.mx-2{margin-left:2rpx;margin-right:2rpx}.mx-3{margin-left:3rpx;margin-right:3rpx}.mx-4{margin-left:4rpx;margin-right:4rpx}.mx-5{margin-left:5rpx;margin-right:5rpx}.mx-6{margin-left:6rpx;margin-right:6rpx}.mx-7{margin-left:7rpx;margin-right:7rpx}.mx-8{margin-left:8rpx;margin-right:8rpx}.mx-9{margin-left:9rpx;margin-right:9rpx}.mx-10{margin-left:10rpx;margin-right:10rpx}.mx-11{margin-left:11rpx;margin-right:11rpx}.mx-12{margin-left:12rpx;margin-right:12rpx}.mx-13{margin-left:13rpx;margin-right:13rpx}.mx-14{margin-left:14rpx;margin-right:14rpx}.mx-15{margin-left:15rpx;margin-right:15rpx}.mx-16{margin-left:16rpx;margin-right:16rpx}.mx-17{margin-left:17rpx;margin-right:17rpx}.mx-18{margin-left:18rpx;margin-right:18rpx}.mx-19{margin-left:19rpx;margin-right:19rpx}.mx-20{margin-left:20rpx;margin-right:20rpx}.mx-21{margin-left:21rpx;margin-right:21rpx}.mx-22{margin-left:22rpx;margin-right:22rpx}.mx-23{margin-left:23rpx;margin-right:23rpx}.mx-24{margin-left:24rpx;margin-right:24rpx}.mx-25{margin-left:25rpx;margin-right:25rpx}.mx-26{margin-left:26rpx;margin-right:26rpx}.mx-27{margin-left:27rpx;margin-right:27rpx}.mx-28{margin-left:28rpx;margin-right:28rpx}.mx-29{margin-left:29rpx;margin-right:29rpx}.mx-30{margin-left:30rpx;margin-right:30rpx}.mx-31{margin-left:31rpx;margin-right:31rpx}.mx-32{margin-left:32rpx;margin-right:32rpx}.mx-33{margin-left:33rpx;margin-right:33rpx}.mx-34{margin-left:34rpx;margin-right:34rpx}.mx-35{margin-left:35rpx;margin-right:35rpx}.mx-36{margin-left:36rpx;margin-right:36rpx}.mx-37{margin-left:37rpx;margin-right:37rpx}.mx-38{margin-left:38rpx;margin-right:38rpx}.mx-39{margin-left:39rpx;margin-right:39rpx}.mx-40{margin-left:40rpx;margin-right:40rpx}.mx-41{margin-left:41rpx;margin-right:41rpx}.mx-42{margin-left:42rpx;margin-right:42rpx}.mx-43{margin-left:43rpx;margin-right:43rpx}.mx-44{margin-left:44rpx;margin-right:44rpx}.mx-45{margin-left:45rpx;margin-right:45rpx}.mx-46{margin-left:46rpx;margin-right:46rpx}.mx-47{margin-left:47rpx;margin-right:47rpx}.mx-48{margin-left:48rpx;margin-right:48rpx}.mx-49{margin-left:49rpx;margin-right:49rpx}.mx-50{margin-left:50rpx;margin-right:50rpx}.mx-n1{margin-left:4rpx;margin-right:4rpx}.mx-n2{margin-left:8rpx;margin-right:8rpx}.mx-n3{margin-left:12rpx;margin-right:12rpx}.mx-n4{margin-left:16rpx;margin-right:16rpx}.mx-n5{margin-left:20rpx;margin-right:20rpx}.mx-n6{margin-left:24rpx;margin-right:24rpx}.mx-n7{margin-left:28rpx;margin-right:28rpx}.mx-n8{margin-left:32rpx;margin-right:32rpx}.mx-n9{margin-left:36rpx;margin-right:36rpx}.mx-n10{margin-left:40rpx;margin-right:40rpx}.mx-n11{margin-left:44rpx;margin-right:44rpx}.mx-n12{margin-left:48rpx;margin-right:48rpx}.mx-n13{margin-left:52rpx;margin-right:52rpx}.mx-n14{margin-left:56rpx;margin-right:56rpx}.mx-n15{margin-left:60rpx;margin-right:60rpx}.mx-n16{margin-left:64rpx;margin-right:64rpx}.mx-n17{margin-left:68rpx;margin-right:68rpx}.mx-n18{margin-left:72rpx;margin-right:72rpx}.mx-n19{margin-left:76rpx;margin-right:76rpx}.mx-n20{margin-left:80rpx;margin-right:80rpx}.mx-n21{margin-left:84rpx;margin-right:84rpx}.mx-n22{margin-left:88rpx;margin-right:88rpx}.mx-n23{margin-left:92rpx;margin-right:92rpx}.mx-n24{margin-left:96rpx;margin-right:96rpx}.mx-n25{margin-left:100rpx;margin-right:100rpx}.my-0{margin-top:0rpx;margin-bottom:0rpx}.my-1{margin-top:1rpx;margin-bottom:1rpx}.my-2{margin-top:2rpx;margin-bottom:2rpx}.my-3{margin-top:3rpx;margin-bottom:3rpx}.my-4{margin-top:4rpx;margin-bottom:4rpx}.my-5{margin-top:5rpx;margin-bottom:5rpx}.my-6{margin-top:6rpx;margin-bottom:6rpx}.my-7{margin-top:7rpx;margin-bottom:7rpx}.my-8{margin-top:8rpx;margin-bottom:8rpx}.my-9{margin-top:9rpx;margin-bottom:9rpx}.my-10{margin-top:10rpx;margin-bottom:10rpx}.my-11{margin-top:11rpx;margin-bottom:11rpx}.my-12{margin-top:12rpx;margin-bottom:12rpx}.my-13{margin-top:13rpx;margin-bottom:13rpx}.my-14{margin-top:14rpx;margin-bottom:14rpx}.my-15{margin-top:15rpx;margin-bottom:15rpx}.my-16{margin-top:16rpx;margin-bottom:16rpx}.my-17{margin-top:17rpx;margin-bottom:17rpx}.my-18{margin-top:18rpx;margin-bottom:18rpx}.my-19{margin-top:19rpx;margin-bottom:19rpx}.my-20{margin-top:20rpx;margin-bottom:20rpx}.my-21{margin-top:21rpx;margin-bottom:21rpx}.my-22{margin-top:22rpx;margin-bottom:22rpx}.my-23{margin-top:23rpx;margin-bottom:23rpx}.my-24{margin-top:24rpx;margin-bottom:24rpx}.my-25{margin-top:25rpx;margin-bottom:25rpx}.my-26{margin-top:26rpx;margin-bottom:26rpx}.my-27{margin-top:27rpx;margin-bottom:27rpx}.my-28{margin-top:28rpx;margin-bottom:28rpx}.my-29{margin-top:29rpx;margin-bottom:29rpx}.my-30{margin-top:30rpx;margin-bottom:30rpx}.my-31{margin-top:31rpx;margin-bottom:31rpx}.my-32{margin-top:32rpx;margin-bottom:32rpx}.my-33{margin-top:33rpx;margin-bottom:33rpx}.my-34{margin-top:34rpx;margin-bottom:34rpx}.my-35{margin-top:35rpx;margin-bottom:35rpx}.my-36{margin-top:36rpx;margin-bottom:36rpx}.my-37{margin-top:37rpx;margin-bottom:37rpx}.my-38{margin-top:38rpx;margin-bottom:38rpx}.my-39{margin-top:39rpx;margin-bottom:39rpx}.my-40{margin-top:40rpx;margin-bottom:40rpx}.my-41{margin-top:41rpx;margin-bottom:41rpx}.my-42{margin-top:42rpx;margin-bottom:42rpx}.my-43{margin-top:43rpx;margin-bottom:43rpx}.my-44{margin-top:44rpx;margin-bottom:44rpx}.my-45{margin-top:45rpx;margin-bottom:45rpx}.my-46{margin-top:46rpx;margin-bottom:46rpx}.my-47{margin-top:47rpx;margin-bottom:47rpx}.my-48{margin-top:48rpx;margin-bottom:48rpx}.my-49{margin-top:49rpx;margin-bottom:49rpx}.my-50{margin-top:50rpx;margin-bottom:50rpx}.my-n1{margin-top:4rpx;margin-bottom:4rpx}.my-n2{margin-top:8rpx;margin-bottom:8rpx}.my-n3{margin-top:12rpx;margin-bottom:12rpx}.my-n4{margin-top:16rpx;margin-bottom:16rpx}.my-n5{margin-top:20rpx;margin-bottom:20rpx}.my-n6{margin-top:24rpx;margin-bottom:24rpx}.my-n7{margin-top:28rpx;margin-bottom:28rpx}.my-n8{margin-top:32rpx;margin-bottom:32rpx}.my-n9{margin-top:36rpx;margin-bottom:36rpx}.my-n10{margin-top:40rpx;margin-bottom:40rpx}.my-n11{margin-top:44rpx;margin-bottom:44rpx}.my-n12{margin-top:48rpx;margin-bottom:48rpx}.my-n13{margin-top:52rpx;margin-bottom:52rpx}.my-n14{margin-top:56rpx;margin-bottom:56rpx}.my-n15{margin-top:60rpx;margin-bottom:60rpx}.my-n16{margin-top:64rpx;margin-bottom:64rpx}.my-n17{margin-top:68rpx;margin-bottom:68rpx}.my-n18{margin-top:72rpx;margin-bottom:72rpx}.my-n19{margin-top:76rpx;margin-bottom:76rpx}.my-n20{margin-top:80rpx;margin-bottom:80rpx}.my-n21{margin-top:84rpx;margin-bottom:84rpx}.my-n22{margin-top:88rpx;margin-bottom:88rpx}.my-n23{margin-top:92rpx;margin-bottom:92rpx}.my-n24{margin-top:96rpx;margin-bottom:96rpx}.my-n25{margin-top:100rpx;margin-bottom:100rpx}.t-0{top:0rpx}.t--0{top:0rpx}.t-1{top:1rpx}.t--1{top:-1rpx}.t-2{top:2rpx}.t--2{top:-2rpx}.t-3{top:3rpx}.t--3{top:-3rpx}.t-4{top:4rpx}.t--4{top:-4rpx}.t-5{top:5rpx}.t--5{top:-5rpx}.t-6{top:6rpx}.t--6{top:-6rpx}.t-7{top:7rpx}.t--7{top:-7rpx}.t-8{top:8rpx}.t--8{top:-8rpx}.t-9{top:9rpx}.t--9{top:-9rpx}.t-10{top:10rpx}.t--10{top:-10rpx}.t-11{top:11rpx}.t--11{top:-11rpx}.t-12{top:12rpx}.t--12{top:-12rpx}.t-13{top:13rpx}.t--13{top:-13rpx}.t-14{top:14rpx}.t--14{top:-14rpx}.t-15{top:15rpx}.t--15{top:-15rpx}.t-16{top:16rpx}.t--16{top:-16rpx}.t-17{top:17rpx}.t--17{top:-17rpx}.t-18{top:18rpx}.t--18{top:-18rpx}.t-19{top:19rpx}.t--19{top:-19rpx}.t-20{top:20rpx}.t--20{top:-20rpx}.t-21{top:21rpx}.t--21{top:-21rpx}.t-22{top:22rpx}.t--22{top:-22rpx}.t-23{top:23rpx}.t--23{top:-23rpx}.t-24{top:24rpx}.t--24{top:-24rpx}.t-25{top:25rpx}.t--25{top:-25rpx}.t-26{top:26rpx}.t--26{top:-26rpx}.t-27{top:27rpx}.t--27{top:-27rpx}.t-28{top:28rpx}.t--28{top:-28rpx}.t-29{top:29rpx}.t--29{top:-29rpx}.t-30{top:30rpx}.t--30{top:-30rpx}.t-31{top:31rpx}.t--31{top:-31rpx}.t-32{top:32rpx}.t--32{top:-32rpx}.t-33{top:33rpx}.t--33{top:-33rpx}.t-34{top:34rpx}.t--34{top:-34rpx}.t-35{top:35rpx}.t--35{top:-35rpx}.t-36{top:36rpx}.t--36{top:-36rpx}.t-37{top:37rpx}.t--37{top:-37rpx}.t-38{top:38rpx}.t--38{top:-38rpx}.t-39{top:39rpx}.t--39{top:-39rpx}.t-40{top:40rpx}.t--40{top:-40rpx}.t-41{top:41rpx}.t--41{top:-41rpx}.t-42{top:42rpx}.t--42{top:-42rpx}.t-43{top:43rpx}.t--43{top:-43rpx}.t-44{top:44rpx}.t--44{top:-44rpx}.t-45{top:45rpx}.t--45{top:-45rpx}.t-46{top:46rpx}.t--46{top:-46rpx}.t-47{top:47rpx}.t--47{top:-47rpx}.t-48{top:48rpx}.t--48{top:-48rpx}.t-49{top:49rpx}.t--49{top:-49rpx}.t-50{top:50rpx}.t--50{top:-50rpx}.t-n1{top:4rpx}.t--n1{top:-4rpx}.t-n2{top:8rpx}.t--n2{top:-8rpx}.t-n3{top:12rpx}.t--n3{top:-12rpx}.t-n4{top:16rpx}.t--n4{top:-16rpx}.t-n5{top:20rpx}.t--n5{top:-20rpx}.t-n6{top:24rpx}.t--n6{top:-24rpx}.t-n7{top:28rpx}.t--n7{top:-28rpx}.t-n8{top:32rpx}.t--n8{top:-32rpx}.t-n9{top:36rpx}.t--n9{top:-36rpx}.t-n10{top:40rpx}.t--n10{top:-40rpx}.t-n11{top:44rpx}.t--n11{top:-44rpx}.t-n12{top:48rpx}.t--n12{top:-48rpx}.t-n13{top:52rpx}.t--n13{top:-52rpx}.t-n14{top:56rpx}.t--n14{top:-56rpx}.t-n15{top:60rpx}.t--n15{top:-60rpx}.t-n16{top:64rpx}.t--n16{top:-64rpx}.t-n17{top:68rpx}.t--n17{top:-68rpx}.t-n18{top:72rpx}.t--n18{top:-72rpx}.t-n19{top:76rpx}.t--n19{top:-76rpx}.t-n20{top:80rpx}.t--n20{top:-80rpx}.t-n21{top:84rpx}.t--n21{top:-84rpx}.t-n22{top:88rpx}.t--n22{top:-88rpx}.t-n23{top:92rpx}.t--n23{top:-92rpx}.t-n24{top:96rpx}.t--n24{top:-96rpx}.t-n25{top:100rpx}.t--n25{top:-100rpx}.r-0{right:0rpx}.r--0{right:0rpx}.r-1{right:1rpx}.r--1{right:-1rpx}.r-2{right:2rpx}.r--2{right:-2rpx}.r-3{right:3rpx}.r--3{right:-3rpx}.r-4{right:4rpx}.r--4{right:-4rpx}.r-5{right:5rpx}.r--5{right:-5rpx}.r-6{right:6rpx}.r--6{right:-6rpx}.r-7{right:7rpx}.r--7{right:-7rpx}.r-8{right:8rpx}.r--8{right:-8rpx}.r-9{right:9rpx}.r--9{right:-9rpx}.r-10{right:10rpx}.r--10{right:-10rpx}.r-11{right:11rpx}.r--11{right:-11rpx}.r-12{right:12rpx}.r--12{right:-12rpx}.r-13{right:13rpx}.r--13{right:-13rpx}.r-14{right:14rpx}.r--14{right:-14rpx}.r-15{right:15rpx}.r--15{right:-15rpx}.r-16{right:16rpx}.r--16{right:-16rpx}.r-17{right:17rpx}.r--17{right:-17rpx}.r-18{right:18rpx}.r--18{right:-18rpx}.r-19{right:19rpx}.r--19{right:-19rpx}.r-20{right:20rpx}.r--20{right:-20rpx}.r-21{right:21rpx}.r--21{right:-21rpx}.r-22{right:22rpx}.r--22{right:-22rpx}.r-23{right:23rpx}.r--23{right:-23rpx}.r-24{right:24rpx}.r--24{right:-24rpx}.r-25{right:25rpx}.r--25{right:-25rpx}.r-26{right:26rpx}.r--26{right:-26rpx}.r-27{right:27rpx}.r--27{right:-27rpx}.r-28{right:28rpx}.r--28{right:-28rpx}.r-29{right:29rpx}.r--29{right:-29rpx}.r-30{right:30rpx}.r--30{right:-30rpx}.r-31{right:31rpx}.r--31{right:-31rpx}.r-32{right:32rpx}.r--32{right:-32rpx}.r-33{right:33rpx}.r--33{right:-33rpx}.r-34{right:34rpx}.r--34{right:-34rpx}.r-35{right:35rpx}.r--35{right:-35rpx}.r-36{right:36rpx}.r--36{right:-36rpx}.r-37{right:37rpx}.r--37{right:-37rpx}.r-38{right:38rpx}.r--38{right:-38rpx}.r-39{right:39rpx}.r--39{right:-39rpx}.r-40{right:40rpx}.r--40{right:-40rpx}.r-41{right:41rpx}.r--41{right:-41rpx}.r-42{right:42rpx}.r--42{right:-42rpx}.r-43{right:43rpx}.r--43{right:-43rpx}.r-44{right:44rpx}.r--44{right:-44rpx}.r-45{right:45rpx}.r--45{right:-45rpx}.r-46{right:46rpx}.r--46{right:-46rpx}.r-47{right:47rpx}.r--47{right:-47rpx}.r-48{right:48rpx}.r--48{right:-48rpx}.r-49{right:49rpx}.r--49{right:-49rpx}.r-50{right:50rpx}.r--50{right:-50rpx}.r-n1{right:4rpx}.r--n1{right:-4rpx}.r-n2{right:8rpx}.r--n2{right:-8rpx}.r-n3{right:12rpx}.r--n3{right:-12rpx}.r-n4{right:16rpx}.r--n4{right:-16rpx}.r-n5{right:20rpx}.r--n5{right:-20rpx}.r-n6{right:24rpx}.r--n6{right:-24rpx}.r-n7{right:28rpx}.r--n7{right:-28rpx}.r-n8{right:32rpx}.r--n8{right:-32rpx}.r-n9{right:36rpx}.r--n9{right:-36rpx}.r-n10{right:40rpx}.r--n10{right:-40rpx}.r-n11{right:44rpx}.r--n11{right:-44rpx}.r-n12{right:48rpx}.r--n12{right:-48rpx}.r-n13{right:52rpx}.r--n13{right:-52rpx}.r-n14{right:56rpx}.r--n14{right:-56rpx}.r-n15{right:60rpx}.r--n15{right:-60rpx}.r-n16{right:64rpx}.r--n16{right:-64rpx}.r-n17{right:68rpx}.r--n17{right:-68rpx}.r-n18{right:72rpx}.r--n18{right:-72rpx}.r-n19{right:76rpx}.r--n19{right:-76rpx}.r-n20{right:80rpx}.r--n20{right:-80rpx}.r-n21{right:84rpx}.r--n21{right:-84rpx}.r-n22{right:88rpx}.r--n22{right:-88rpx}.r-n23{right:92rpx}.r--n23{right:-92rpx}.r-n24{right:96rpx}.r--n24{right:-96rpx}.r-n25{right:100rpx}.r--n25{right:-100rpx}.b-0{bottom:0rpx}.b--0{bottom:0rpx}.b-1{bottom:1rpx}.b--1{bottom:-1rpx}.b-2{bottom:2rpx}.b--2{bottom:-2rpx}.b-3{bottom:3rpx}.b--3{bottom:-3rpx}.b-4{bottom:4rpx}.b--4{bottom:-4rpx}.b-5{bottom:5rpx}.b--5{bottom:-5rpx}.b-6{bottom:6rpx}.b--6{bottom:-6rpx}.b-7{bottom:7rpx}.b--7{bottom:-7rpx}.b-8{bottom:8rpx}.b--8{bottom:-8rpx}.b-9{bottom:9rpx}.b--9{bottom:-9rpx}.b-10{bottom:10rpx}.b--10{bottom:-10rpx}.b-11{bottom:11rpx}.b--11{bottom:-11rpx}.b-12{bottom:12rpx}.b--12{bottom:-12rpx}.b-13{bottom:13rpx}.b--13{bottom:-13rpx}.b-14{bottom:14rpx}.b--14{bottom:-14rpx}.b-15{bottom:15rpx}.b--15{bottom:-15rpx}.b-16{bottom:16rpx}.b--16{bottom:-16rpx}.b-17{bottom:17rpx}.b--17{bottom:-17rpx}.b-18{bottom:18rpx}.b--18{bottom:-18rpx}.b-19{bottom:19rpx}.b--19{bottom:-19rpx}.b-20{bottom:20rpx}.b--20{bottom:-20rpx}.b-21{bottom:21rpx}.b--21{bottom:-21rpx}.b-22{bottom:22rpx}.b--22{bottom:-22rpx}.b-23{bottom:23rpx}.b--23{bottom:-23rpx}.b-24{bottom:24rpx}.b--24{bottom:-24rpx}.b-25{bottom:25rpx}.b--25{bottom:-25rpx}.b-26{bottom:26rpx}.b--26{bottom:-26rpx}.b-27{bottom:27rpx}.b--27{bottom:-27rpx}.b-28{bottom:28rpx}.b--28{bottom:-28rpx}.b-29{bottom:29rpx}.b--29{bottom:-29rpx}.b-30{bottom:30rpx}.b--30{bottom:-30rpx}.b-31{bottom:31rpx}.b--31{bottom:-31rpx}.b-32{bottom:32rpx}.b--32{bottom:-32rpx}.b-33{bottom:33rpx}.b--33{bottom:-33rpx}.b-34{bottom:34rpx}.b--34{bottom:-34rpx}.b-35{bottom:35rpx}.b--35{bottom:-35rpx}.b-36{bottom:36rpx}.b--36{bottom:-36rpx}.b-37{bottom:37rpx}.b--37{bottom:-37rpx}.b-38{bottom:38rpx}.b--38{bottom:-38rpx}.b-39{bottom:39rpx}.b--39{bottom:-39rpx}.b-40{bottom:40rpx}.b--40{bottom:-40rpx}.b-41{bottom:41rpx}.b--41{bottom:-41rpx}.b-42{bottom:42rpx}.b--42{bottom:-42rpx}.b-43{bottom:43rpx}.b--43{bottom:-43rpx}.b-44{bottom:44rpx}.b--44{bottom:-44rpx}.b-45{bottom:45rpx}.b--45{bottom:-45rpx}.b-46{bottom:46rpx}.b--46{bottom:-46rpx}.b-47{bottom:47rpx}.b--47{bottom:-47rpx}.b-48{bottom:48rpx}.b--48{bottom:-48rpx}.b-49{bottom:49rpx}.b--49{bottom:-49rpx}.b-50{bottom:50rpx}.b--50{bottom:-50rpx}.b-n1{bottom:4rpx}.b--n1{bottom:-4rpx}.b-n2{bottom:8rpx}.b--n2{bottom:-8rpx}.b-n3{bottom:12rpx}.b--n3{bottom:-12rpx}.b-n4{bottom:16rpx}.b--n4{bottom:-16rpx}.b-n5{bottom:20rpx}.b--n5{bottom:-20rpx}.b-n6{bottom:24rpx}.b--n6{bottom:-24rpx}.b-n7{bottom:28rpx}.b--n7{bottom:-28rpx}.b-n8{bottom:32rpx}.b--n8{bottom:-32rpx}.b-n9{bottom:36rpx}.b--n9{bottom:-36rpx}.b-n10{bottom:40rpx}.b--n10{bottom:-40rpx}.b-n11{bottom:44rpx}.b--n11{bottom:-44rpx}.b-n12{bottom:48rpx}.b--n12{bottom:-48rpx}.b-n13{bottom:52rpx}.b--n13{bottom:-52rpx}.b-n14{bottom:56rpx}.b--n14{bottom:-56rpx}.b-n15{bottom:60rpx}.b--n15{bottom:-60rpx}.b-n16{bottom:64rpx}.b--n16{bottom:-64rpx}.b-n17{bottom:68rpx}.b--n17{bottom:-68rpx}.b-n18{bottom:72rpx}.b--n18{bottom:-72rpx}.b-n19{bottom:76rpx}.b--n19{bottom:-76rpx}.b-n20{bottom:80rpx}.b--n20{bottom:-80rpx}.b-n21{bottom:84rpx}.b--n21{bottom:-84rpx}.b-n22{bottom:88rpx}.b--n22{bottom:-88rpx}.b-n23{bottom:92rpx}.b--n23{bottom:-92rpx}.b-n24{bottom:96rpx}.b--n24{bottom:-96rpx}.b-n25{bottom:100rpx}.b--n25{bottom:-100rpx}.l-0{left:0rpx}.l--0{left:0rpx}.l-1{left:1rpx}.l--1{left:-1rpx}.l-2{left:2rpx}.l--2{left:-2rpx}.l-3{left:3rpx}.l--3{left:-3rpx}.l-4{left:4rpx}.l--4{left:-4rpx}.l-5{left:5rpx}.l--5{left:-5rpx}.l-6{left:6rpx}.l--6{left:-6rpx}.l-7{left:7rpx}.l--7{left:-7rpx}.l-8{left:8rpx}.l--8{left:-8rpx}.l-9{left:9rpx}.l--9{left:-9rpx}.l-10{left:10rpx}.l--10{left:-10rpx}.l-11{left:11rpx}.l--11{left:-11rpx}.l-12{left:12rpx}.l--12{left:-12rpx}.l-13{left:13rpx}.l--13{left:-13rpx}.l-14{left:14rpx}.l--14{left:-14rpx}.l-15{left:15rpx}.l--15{left:-15rpx}.l-16{left:16rpx}.l--16{left:-16rpx}.l-17{left:17rpx}.l--17{left:-17rpx}.l-18{left:18rpx}.l--18{left:-18rpx}.l-19{left:19rpx}.l--19{left:-19rpx}.l-20{left:20rpx}.l--20{left:-20rpx}.l-21{left:21rpx}.l--21{left:-21rpx}.l-22{left:22rpx}.l--22{left:-22rpx}.l-23{left:23rpx}.l--23{left:-23rpx}.l-24{left:24rpx}.l--24{left:-24rpx}.l-25{left:25rpx}.l--25{left:-25rpx}.l-26{left:26rpx}.l--26{left:-26rpx}.l-27{left:27rpx}.l--27{left:-27rpx}.l-28{left:28rpx}.l--28{left:-28rpx}.l-29{left:29rpx}.l--29{left:-29rpx}.l-30{left:30rpx}.l--30{left:-30rpx}.l-31{left:31rpx}.l--31{left:-31rpx}.l-32{left:32rpx}.l--32{left:-32rpx}.l-33{left:33rpx}.l--33{left:-33rpx}.l-34{left:34rpx}.l--34{left:-34rpx}.l-35{left:35rpx}.l--35{left:-35rpx}.l-36{left:36rpx}.l--36{left:-36rpx}.l-37{left:37rpx}.l--37{left:-37rpx}.l-38{left:38rpx}.l--38{left:-38rpx}.l-39{left:39rpx}.l--39{left:-39rpx}.l-40{left:40rpx}.l--40{left:-40rpx}.l-41{left:41rpx}.l--41{left:-41rpx}.l-42{left:42rpx}.l--42{left:-42rpx}.l-43{left:43rpx}.l--43{left:-43rpx}.l-44{left:44rpx}.l--44{left:-44rpx}.l-45{left:45rpx}.l--45{left:-45rpx}.l-46{left:46rpx}.l--46{left:-46rpx}.l-47{left:47rpx}.l--47{left:-47rpx}.l-48{left:48rpx}.l--48{left:-48rpx}.l-49{left:49rpx}.l--49{left:-49rpx}.l-50{left:50rpx}.l--50{left:-50rpx}.l-n1{left:4rpx}.l--n1{left:-4rpx}.l-n2{left:8rpx}.l--n2{left:-8rpx}.l-n3{left:12rpx}.l--n3{left:-12rpx}.l-n4{left:16rpx}.l--n4{left:-16rpx}.l-n5{left:20rpx}.l--n5{left:-20rpx}.l-n6{left:24rpx}.l--n6{left:-24rpx}.l-n7{left:28rpx}.l--n7{left:-28rpx}.l-n8{left:32rpx}.l--n8{left:-32rpx}.l-n9{left:36rpx}.l--n9{left:-36rpx}.l-n10{left:40rpx}.l--n10{left:-40rpx}.l-n11{left:44rpx}.l--n11{left:-44rpx}.l-n12{left:48rpx}.l--n12{left:-48rpx}.l-n13{left:52rpx}.l--n13{left:-52rpx}.l-n14{left:56rpx}.l--n14{left:-56rpx}.l-n15{left:60rpx}.l--n15{left:-60rpx}.l-n16{left:64rpx}.l--n16{left:-64rpx}.l-n17{left:68rpx}.l--n17{left:-68rpx}.l-n18{left:72rpx}.l--n18{left:-72rpx}.l-n19{left:76rpx}.l--n19{left:-76rpx}.l-n20{left:80rpx}.l--n20{left:-80rpx}.l-n21{left:84rpx}.l--n21{left:-84rpx}.l-n22{left:88rpx}.l--n22{left:-88rpx}.l-n23{left:92rpx}.l--n23{left:-92rpx}.l-n24{left:96rpx}.l--n24{left:-96rpx}.l-n25{left:100rpx}.l--n25{left:-100rpx}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-flow:row wrap}.flex-shrink{flex-shrink:0}.flex-row{flex-direction:row}.flex-reverse{flex-direction:row-reverse}.flex-row-top-start{justify-content:flex-start;align-items:flex-start;display:flex}.flex-row-top-center{justify-content:center;align-items:flex-start;display:flex}.flex-row-top-end{justify-content:flex-end;align-items:flex-start;display:flex}.flex-row-center-start{justify-content:flex-start;align-items:center;display:flex}.flex-row-center-center{justify-content:center;align-items:center;display:flex}.flex-row-center-end{justify-content:flex-end;align-items:center;display:flex}.flex-row-bottom-start{justify-content:flex-start;align-items:flex-end;display:flex}.flex-row-bottom-center{justify-content:center;align-items:flex-end;display:flex}.flex-row-bottom-end{justify-content:flex-end;align-items:flex-end;display:flex}.flex-row-center-between{justify-content:space-between;align-items:center;display:flex}.flex-col-top-start{justify-content:flex-start;align-items:flex-start;display:flex}.flex-col-top-center{justify-content:flex-start;align-items:center;display:flex}.flex-col-top-end{justify-content:flex-start;align-items:flex-end;display:flex}.flex-col-center-start{justify-content:center;align-items:flex-start;display:flex}.flex-col-center-center{justify-content:center;align-items:center;display:flex}.flex-col-center-end{justify-content:center;align-items:flex-end;display:flex}.flex-col-bottom-start{justify-content:flex-end;align-items:flex-start;display:flex}.flex-col-bottom-center{justify-content:flex-end;align-items:center;display:flex}.flex-col-bottom-end{justify-content:flex-end;align-items:flex-end;display:flex}.flex-start{justify-content:flex-start;align-items:center;display:flex}.flex-end{justify-content:flex-end;align-items:center;display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between}.flex-col-full{flex-direction:column;align-items:stretch}.flex-around{justify-content:space-around}.flex-0{flex-grow:0;flex:0}.flex-1{flex-grow:1;flex:1}.flex-2{flex-grow:2;flex:2}.flex-3{flex-grow:3;flex:3}.flex-4{flex-grow:4;flex:4}.flex-5{flex-grow:5;flex:5}.flex-6{flex-grow:6;flex:6}.flex-7{flex-grow:7;flex:7}.flex-8{flex-grow:8;flex:8}.flex-9{flex-grow:9;flex:9}.flex-10{flex-grow:10;flex:10}.flex-11{flex-grow:11;flex:11}.flex-12{flex-grow:12;flex:12}.text-red{color:#f44336}.red{background-color:#f44336}.text-pink{color:#e91e63}.pink{background-color:#e91e63}.text-purple{color:#9c27b0}.purple{background-color:#9c27b0}.text-deep-purple{color:#673ab7}.deep-purple{background-color:#673ab7}.text-indigo{color:#3f51b5}.indigo{background-color:#3f51b5}.text-blue{color:#2196f3}.blue{background-color:#2196f3}.text-light-blue{color:#03a9f4}.light-blue{background-color:#03a9f4}.text-cyan{color:#00bcd4}.cyan{background-color:#00bcd4}.text-teal{color:#009688}.teal{background-color:#009688}.text-green{color:#4caf50}.green{background-color:#4caf50}.text-light-green{color:#8bc34a}.light-green{background-color:#8bc34a}.text-lime{color:#cddc39}.lime{background-color:#cddc39}.text-yellow{color:#ffeb3b}.yellow{background-color:#ffeb3b}.text-amber{color:#ffc107}.amber{background-color:#ffc107}.text-orange{color:#ff9800}.orange{background-color:#ff9800}.text-deep-orange{color:#ff5722}.deep-orange{background-color:#ff5722}.text-brown{color:#795548}.brown{background-color:#795548}.text-blue-grey{color:#607d8b}.blue-grey{background-color:#607d8b}.text-grey{color:#9e9e9e}.grey{background-color:#9e9e9e}.text-black{color:#000}.black{background-color:#000}.text-white{color:#fff}.white{background-color:#fff}.text-lighten-5{color:#fafafa}.lighten-5{background-color:#fafafa}.text-lighten-4{color:#f5f5f5}.lighten-4{background-color:#f5f5f5}.text-lighten-3{color:#eee}.lighten-3{background-color:#eee}.text-lighten-2{color:#e0e0e0}.lighten-2{background-color:#e0e0e0}.text-lighten-1{color:#bdbdbd}.lighten-1{background-color:#bdbdbd}.text-darken-1{color:#757575}.darken-1{background-color:#757575}.text-darken-2{color:#616161}.darken-2{background-color:#616161}.text-darken-3{color:#424242}.darken-3{background-color:#424242}.text-darken-4{color:#212121}.darken-4{background-color:#212121}.text-darken-5{color:#131313}.darken-5{background-color:#131313}.text-darken-6{color:#0a0a0a}.darken-6{background-color:#0a0a0a} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/theme.json b/uni_modules/UniDevTools/src/tmui/theme.json new file mode 100644 index 0000000..ffbef1c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/theme.json @@ -0,0 +1,12 @@ +{ + "light": { + "navTxtStyle": "black", + "navBgColor": "#FFFFFF", + "bgColor": "#F5F5F5" + }, + "dark": { + "navBgColor": "#292929", + "navTxtStyle": "white", + "bgColor": "#1f1f1f" + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/CHANGELOG.md b/uni_modules/UniDevTools/src/tmui/tool/dayjs/CHANGELOG.md new file mode 100644 index 0000000..d3190aa --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/CHANGELOG.md @@ -0,0 +1,824 @@ +## [1.11.1](https://github.com/iamkun/dayjs/compare/v1.11.0...v1.11.1) (2022-04-15) + + +### Bug Fixes + +* add Bengali (Bangladesh) [bn-bd] locale ([#1806](https://github.com/iamkun/dayjs/issues/1806)) ([840ed76](https://github.com/iamkun/dayjs/commit/840ed76eedc085afefc4dedd05f31d44196b63b0)) +* refactor replace deprecated String.prototype.substr() ([#1836](https://github.com/iamkun/dayjs/issues/1836)) ([627fa39](https://github.com/iamkun/dayjs/commit/627fa393e4daf83c92431162dbe18534b23fcbae)) +* Update German [de] locale, adds the abbreviations for month including a . in the end, as in September -> Sept. ([#1831](https://github.com/iamkun/dayjs/issues/1831)) ([4e2802c](https://github.com/iamkun/dayjs/commit/4e2802cc3bec2941ffb737a15fb531c90951eafe)) +* update Italian (Switzerland) [it-ch] locale relativeTime ([#1829](https://github.com/iamkun/dayjs/issues/1829)) ([8e6d11d](https://github.com/iamkun/dayjs/commit/8e6d11d053393d97bee1ba411adb2d82de1a58c4)) +* update Kurdish [ku] locale strings and formatted output contains non-standard kurdish characters ([#1848](https://github.com/iamkun/dayjs/issues/1848)) ([a597d0b](https://github.com/iamkun/dayjs/commit/a597d0b1b8dd28e626f8c59d326622088f7b51e7)) +* update locale bo [Tibetan]: corrected the orders in formats ([#1823](https://github.com/iamkun/dayjs/issues/1823)) ([e790516](https://github.com/iamkun/dayjs/commit/e79051617af6787358f6c9b5443d987b8b53a9e1)) + +# [1.11.0](https://github.com/iamkun/dayjs/compare/v1.10.8...v1.11.0) (2022-03-14) + + +### Bug Fixes + +* Add Kirundi (rn) locale ([#1793](https://github.com/iamkun/dayjs/issues/1793)) ([74e5247](https://github.com/iamkun/dayjs/commit/74e5247227a779fffde39bdfcd1ee19911496709)) +* add missing date shorthand D type definition ([#1752](https://github.com/iamkun/dayjs/issues/1752)) ([b045baf](https://github.com/iamkun/dayjs/commit/b045baf1646a81f7e4f446f355d02d5fb0ef4aa7)) +* Add relative time to Galician (gl) and fix ordinals ([#1800](https://github.com/iamkun/dayjs/issues/1800)) ([dcbf170](https://github.com/iamkun/dayjs/commit/dcbf1708400624addfbddbc71e0f6a9ac15fa961)) +* update German locales (de-at, de-ch) ([#1775](https://github.com/iamkun/dayjs/issues/1775)) ([f9055a7](https://github.com/iamkun/dayjs/commit/f9055a77bf3d84c575e5fcf99e21611138ba64d7)) +* update Icelandic [is] locale relativeTime config ([#1796](https://github.com/iamkun/dayjs/issues/1796)) ([76f9e17](https://github.com/iamkun/dayjs/commit/76f9e1756de7e99c01e471dab30ea074b9ec9629)) +* Update index.d.ts note ([#1716](https://github.com/iamkun/dayjs/issues/1716)) ([5a108ff](https://github.com/iamkun/dayjs/commit/5a108ff3159c53fd270ea7638f33c35c934d6457)) +* Update locale German [de] monthsShort ([#1746](https://github.com/iamkun/dayjs/issues/1746)) ([4a7b7d0](https://github.com/iamkun/dayjs/commit/4a7b7d07c885bb9338514c234dbb708e24e9863e)) +* update meridiem function to Kurdish (ku) locale ([#1725](https://github.com/iamkun/dayjs/issues/1725)) ([efd3904](https://github.com/iamkun/dayjs/commit/efd3904ff8cbf0a4fc064911dda76fc86b669f7b)) +* update updateLocal plugin typescript types ([#1692](https://github.com/iamkun/dayjs/issues/1692)) ([c7a3f73](https://github.com/iamkun/dayjs/commit/c7a3f73064dbb63b4d365b2ad4c792f075f4d8d8)) + + +### Features + +* Fallback to language only locale + support uppercase locales ([#1524](https://github.com/iamkun/dayjs/issues/1524)) ([9138dc2](https://github.com/iamkun/dayjs/commit/9138dc28206875372da4fb74c64716437cd11b95)) + +## [1.10.8](https://github.com/iamkun/dayjs/compare/v1.10.7...v1.10.8) (2022-02-28) + + +### Bug Fixes + +* set locale pt, pt-br correct weekdays and months ([#1697](https://github.com/iamkun/dayjs/issues/1697)) ([e019301](https://github.com/iamkun/dayjs/commit/e01930171c8235f58a114236f146086428f99569)) + +## [1.10.7](https://github.com/iamkun/dayjs/compare/v1.10.6...v1.10.7) (2021-09-10) + + +### Bug Fixes + +* Add Spanish (Mexico) [es-mx] locale ([#1614](https://github.com/iamkun/dayjs/issues/1614)) ([3393f2a](https://github.com/iamkun/dayjs/commit/3393f2ad55346d55902683a2e31c6f253d96c8c2)) +* Add Arabic (Iraq) [ar-iq] locale ([#1627](https://github.com/iamkun/dayjs/issues/1627)) ([b5a1391](https://github.com/iamkun/dayjs/commit/b5a1391011b247d08863d291542db5937b23b427)) +* add format object type to type file ([#1572](https://github.com/iamkun/dayjs/issues/1572)) ([5a79cc6](https://github.com/iamkun/dayjs/commit/5a79cc6408e825d9e123629eb44fc19c996d7751)) +* duration plugin when parsing duration from ISO string, set missing components to 0 instead of NaN ([#1611](https://github.com/iamkun/dayjs/issues/1611)) ([252585b](https://github.com/iamkun/dayjs/commit/252585b4b2bd59508150e21bb994908a9d78f9b0)) +* narrow type for `add` and `subtract` ([#1576](https://github.com/iamkun/dayjs/issues/1576)) ([1686962](https://github.com/iamkun/dayjs/commit/16869621b1a42563064dbf87f80c1ebfd74c1188)) +* update customParseFormat plugin strict x X parsing ([#1571](https://github.com/iamkun/dayjs/issues/1571)) ([08adda5](https://github.com/iamkun/dayjs/commit/08adda54edbcca38601f57841921d0f87f84e49e)) +* update Lithuanian [lt] locale spelling for single month ([#1609](https://github.com/iamkun/dayjs/issues/1609)) ([255dc54](https://github.com/iamkun/dayjs/commit/255dc54d9295de135a9037ce6ca13cae4bfd2cfb)) +* Update Norwegian Bokmål [nb] local yearStart 4 ([#1608](https://github.com/iamkun/dayjs/issues/1608)) ([7a8467c](https://github.com/iamkun/dayjs/commit/7a8467c0b7d59821f7e19d4a6973bcda8e4c19b1)) +* update plugin advancedFormat `isValid` validation ([#1566](https://github.com/iamkun/dayjs/issues/1566)) ([755fc8b](https://github.com/iamkun/dayjs/commit/755fc8bb1c532eb991459f180eee81367d12016c)) +* update Sinhalese [si] locale month name ([#1475](https://github.com/iamkun/dayjs/issues/1475)) ([63de2a8](https://github.com/iamkun/dayjs/commit/63de2a8b7dcd7e68c132c85d88572d4c9d296907)) +* update utcOffset plugin type file ([#1604](https://github.com/iamkun/dayjs/issues/1604)) ([f68e4b1](https://github.com/iamkun/dayjs/commit/f68e4b1a29fc33542f74cde10ec6d9fb045ca37e)) + +## [1.10.6](https://github.com/iamkun/dayjs/compare/v1.10.5...v1.10.6) (2021-07-06) + + +### Bug Fixes + +* add invalid date string override ([#1465](https://github.com/iamkun/dayjs/issues/1465)) ([#1470](https://github.com/iamkun/dayjs/issues/1470)) ([06f88f4](https://github.com/iamkun/dayjs/commit/06f88f425828b1ce96b737332d25145a95a4ee9d)) +* add sv-fi Finland Swedish locale ([#1522](https://github.com/iamkun/dayjs/issues/1522)) ([8e32164](https://github.com/iamkun/dayjs/commit/8e32164855cff724642e24c37a631eb4c4d760c8)) +* customParseFormat support parsing X x timestamp ([#1567](https://github.com/iamkun/dayjs/issues/1567)) ([eb087f5](https://github.com/iamkun/dayjs/commit/eb087f52861313b8dd8a5c1b77858665ec72859e)) +* dayjs ConfigTypeMap add null & undefined ([#1560](https://github.com/iamkun/dayjs/issues/1560)) ([b5e40e6](https://github.com/iamkun/dayjs/commit/b5e40e6f16abeaea6a0facfa466d20aefaa8a444)) +* Fix DayOfYear plugin when using BadMutable plugin ([#1511](https://github.com/iamkun/dayjs/issues/1511)) ([0b0c6a3](https://github.com/iamkun/dayjs/commit/0b0c6a31ec9c0aff991b0e8dd6eed116201274cc)) +* Implement ordinal in Bulgarian translation (fixes [#1501](https://github.com/iamkun/dayjs/issues/1501)) ([#1502](https://github.com/iamkun/dayjs/issues/1502)) ([b728da5](https://github.com/iamkun/dayjs/commit/b728da5ed9ed08210004ed20ce5fcd52a92de7da)) +* more strict delimiter in REGEX_PARSE ([#1555](https://github.com/iamkun/dayjs/issues/1555)) ([bfdab5c](https://github.com/iamkun/dayjs/commit/bfdab5c0d45a5736b68e8e1b1354fc021e05f607)) +* parameter type ([#1549](https://github.com/iamkun/dayjs/issues/1549)) ([f369844](https://github.com/iamkun/dayjs/commit/f369844dd69d253c4c7cbf68150939db3db233be)) +* update customParseFormat plugin to custom two-digit year parse function ([#1421](https://github.com/iamkun/dayjs/issues/1421)) ([bb5df55](https://github.com/iamkun/dayjs/commit/bb5df55cd3975dc7638b8f4e762afa470b6620f7)) +* update names of weekdays and months in Bulgarian [bg] to lowercase ([#1438](https://github.com/iamkun/dayjs/issues/1438)) ([b246210](https://github.com/iamkun/dayjs/commit/b24621091fec9cf6704de21e4b323f6f0c4abbf1)) +* update type file `.diff` ([#1505](https://github.com/iamkun/dayjs/issues/1505)) ([6508494](https://github.com/iamkun/dayjs/commit/6508494a4e62977b4397baaeef293d1bcf3c7235)) +* update UTC plugin type file for strict parsing ([#1443](https://github.com/iamkun/dayjs/issues/1443)) ([b4f28df](https://github.com/iamkun/dayjs/commit/b4f28df219fe63202dffdbeeaec5677c4d2c9111)) + +## [1.10.5](https://github.com/iamkun/dayjs/compare/v1.10.4...v1.10.5) (2021-05-26) + + +### Bug Fixes + +* add meridiem in ar locales ([#1375](https://github.com/iamkun/dayjs/issues/1375)) ([319f616](https://github.com/iamkun/dayjs/commit/319f616e572a03b984013d04d1b3a18ffd5b1190)) +* Added Zulu support to customParseFormat ([#1359](https://github.com/iamkun/dayjs/issues/1359)) ([1138a3f](https://github.com/iamkun/dayjs/commit/1138a3f0a76592c6d72fb86c4399e133fa41e2ec)) +* fix Bengali [bn] locale monthsShort error ([a0e6c0c](https://github.com/iamkun/dayjs/commit/a0e6c0cf3e1828020dfa11432c6716990f6ed5e0)) +* fix missing types for ArraySupport plugin ([#1401](https://github.com/iamkun/dayjs/issues/1401)) ([b1abdc4](https://github.com/iamkun/dayjs/commit/b1abdc40ee6c9d18ff46c311a114e0755677ea6f)) +* fix Ukrainian [uk] locale ([#1463](https://github.com/iamkun/dayjs/issues/1463)) ([0fdac93](https://github.com/iamkun/dayjs/commit/0fdac93ff2531542301b76952be9b084b2e2dfa0)) +* hotfix for `Duration` types ([#1357](https://github.com/iamkun/dayjs/issues/1357)) ([855b7b3](https://github.com/iamkun/dayjs/commit/855b7b3d049a3903794f91db3419f167c00dabd2)), closes [#1354](https://github.com/iamkun/dayjs/issues/1354) +* timezone plugin DST error ([#1352](https://github.com/iamkun/dayjs/issues/1352)) ([71bed15](https://github.com/iamkun/dayjs/commit/71bed155edf32bff24379930ac684fc783538d8f)) +* Update duration plugin change string to number ([#1394](https://github.com/iamkun/dayjs/issues/1394)) ([e1546d1](https://github.com/iamkun/dayjs/commit/e1546d1a0cdb97ae92cf11efe61d94707af6a3a3)) +* update Duration plugin to support no-argument ([#1400](https://github.com/iamkun/dayjs/issues/1400)) ([8d9a5ae](https://github.com/iamkun/dayjs/commit/8d9a5ae0749e1b4e76babd4deeaa3b1d9776c29b)) +* Update Finnish [fi] locale to set yearStart ([#1378](https://github.com/iamkun/dayjs/issues/1378)) ([f3370bd](https://github.com/iamkun/dayjs/commit/f3370bda4e435118f714c8a7daf5c88cfc4b69ba)) +* update Russian [ru] locale meridiem and unit tests ([#1403](https://github.com/iamkun/dayjs/issues/1403)) ([f10f39d](https://github.com/iamkun/dayjs/commit/f10f39de7db70244a3c35e4a421090a12972457b)) +* update Russian [ru] locale yearStart config ([#1372](https://github.com/iamkun/dayjs/issues/1372)) ([5052515](https://github.com/iamkun/dayjs/commit/5052515fe35b2444201ef8ef87220b1876a94d0a)) +* update Slovenian [sl] locale to set correct ordinal ([#1386](https://github.com/iamkun/dayjs/issues/1386)) ([cb4f746](https://github.com/iamkun/dayjs/commit/cb4f74633b3020d6dbf19548c8cb13613dafca18)) +* update Spanish [es] locale to change month names to lowercase ([#1414](https://github.com/iamkun/dayjs/issues/1414)) ([9c20e77](https://github.com/iamkun/dayjs/commit/9c20e77caf7b1b5eccf418175203b198d4e29535)) +* update Swedish [sv] locale to set correct yearStart ([#1385](https://github.com/iamkun/dayjs/issues/1385)) ([66c5935](https://github.com/iamkun/dayjs/commit/66c59354964ef456bcd5f6152819618f44978082)) +* update UTC plugin to support string argument like +HH:mm ([#1395](https://github.com/iamkun/dayjs/issues/1395)) ([656127c](https://github.com/iamkun/dayjs/commit/656127cc44eda50923a1ac755602863fc32b9e69)) + +## [1.10.4](https://github.com/iamkun/dayjs/compare/v1.10.3...v1.10.4) (2021-01-22) + + +### Bug Fixes + +* Correct handling negative duration ([#1317](https://github.com/iamkun/dayjs/issues/1317)) ([3f5c085](https://github.com/iamkun/dayjs/commit/3f5c085608182472f20b84766b10949945663e44)) +* Improve `Duration` types ([#1338](https://github.com/iamkun/dayjs/issues/1338)) ([4aca4b1](https://github.com/iamkun/dayjs/commit/4aca4b1b584a15de1146d929f95c944594032f20)) +* parse a string for MMM month format with underscore delimiter ([#1349](https://github.com/iamkun/dayjs/issues/1349)) ([82ef9a3](https://github.com/iamkun/dayjs/commit/82ef9a304f06287ac0a14c4da9a7fe6152b5fec9)) +* Update Bengali [bn] locale ([#1329](https://github.com/iamkun/dayjs/issues/1329)) ([02d96ec](https://github.com/iamkun/dayjs/commit/02d96ec7189f62d6ef8987135919cbb5ceff20a6)) +* update locale Portuguese [pt] yearStart ([#1345](https://github.com/iamkun/dayjs/issues/1345)) ([5c785d5](https://github.com/iamkun/dayjs/commit/5c785d528cc08811638d7cbfc7fc158d67b32d75)) +* update Polish [pl] locale yearStart ([#1348](https://github.com/iamkun/dayjs/issues/1348)) ([e93e6b8](https://github.com/iamkun/dayjs/commit/e93e6b8ffa61036b26382f1763e3864d4a7d5df5)) +* Update Slovenian [sl] relativeTime locale ([#1333](https://github.com/iamkun/dayjs/issues/1333)) ([fe5f1d0](https://github.com/iamkun/dayjs/commit/fe5f1d0afbe57b70339e268047e6c3028ca3d59b)) + +## [1.10.3](https://github.com/iamkun/dayjs/compare/v1.10.2...v1.10.3) (2021-01-09) + + +### Bug Fixes + +* fix customParseFormat plugin strict mode parse meridiem bug ([#1321](https://github.com/iamkun/dayjs/issues/1321)) ([e49eeef](https://github.com/iamkun/dayjs/commit/e49eeefbe8acb36419d36ca2e7ed8bc152f73ac1)) +* fix weekYear plugin missing locale bug ([#1319](https://github.com/iamkun/dayjs/issues/1319)) ([344bdc0](https://github.com/iamkun/dayjs/commit/344bdc0eed6843edb05723dc7853a41833d88f08)), closes [#1304](https://github.com/iamkun/dayjs/issues/1304) +* update advancedFormat plugin to add format options for iso week and weekyear ([#1309](https://github.com/iamkun/dayjs/issues/1309)) ([2c54c64](https://github.com/iamkun/dayjs/commit/2c54c6441871a175ac9b95e41e4cd075dbac10cb)) +* update devHelper to add dev warning setting locale before loading ([c5cc893](https://github.com/iamkun/dayjs/commit/c5cc89355e1e206ca72433c19c40cb528690b04f)) +* update German [de] locale yearStart ([1858df8](https://github.com/iamkun/dayjs/commit/1858df8008de56570680723df89b36a8cbc970ef)), closes [#1264](https://github.com/iamkun/dayjs/issues/1264) + +## [1.10.2](https://github.com/iamkun/dayjs/compare/v1.10.1...v1.10.2) (2021-01-05) + + +### Bug Fixes + +* fix parse regex bug ([#1307](https://github.com/iamkun/dayjs/issues/1307)) ([db2b6a5](https://github.com/iamkun/dayjs/commit/db2b6a5ea8e70f9fda645d113ca33495aa96b616)), closes [#1305](https://github.com/iamkun/dayjs/issues/1305) +* remove module entry in package.json to revert 1.10.1 change ([#1314](https://github.com/iamkun/dayjs/issues/1314)) ([824dcb8](https://github.com/iamkun/dayjs/commit/824dcb8dfcccf14f64b6a2741a00fcdfe53dcd98)) +* update devHelper add warning "passing Year as a Number will be parsed as a Unix timestamp" ([#1315](https://github.com/iamkun/dayjs/issues/1315)) ([b0dda31](https://github.com/iamkun/dayjs/commit/b0dda3139e25441ab4e7c1f4f192dee0ecce6ef8)) + +## [1.10.1](https://github.com/iamkun/dayjs/compare/v1.10.0...v1.10.1) (2021-01-03) + + +### Bug Fixes + +* fix typescript type error UnitTypeLongPlural ([#1302](https://github.com/iamkun/dayjs/issues/1302)) ([bfaabe4](https://github.com/iamkun/dayjs/commit/bfaabe4f398c11564eca6cda7c8aded22e1b231a)), closes [#1300](https://github.com/iamkun/dayjs/issues/1300) + +# [1.10.0](https://github.com/iamkun/dayjs/compare/v1.9.8...v1.10.0) (2021-01-03) + + +### Bug Fixes + +* add ordinal to localeData plugin ([#1266](https://github.com/iamkun/dayjs/issues/1266)) ([fd229fa](https://github.com/iamkun/dayjs/commit/fd229fa5bd26bcba810e2535eb937ea8d99106c2)) +* add preParsePostFormat plugin & update Arabic [ar] locale ([#1255](https://github.com/iamkun/dayjs/issues/1255)) ([f2e4790](https://github.com/iamkun/dayjs/commit/f2e479006a9a49bc0917f8620101d40ac645f7f2)) +* add type support for plural forms of units ([#1289](https://github.com/iamkun/dayjs/issues/1289)) ([de49bb1](https://github.com/iamkun/dayjs/commit/de49bb100badfb92b9a5933cc568841f340a923f)) +* escape last period to match only milliseconds ([#1239](https://github.com/iamkun/dayjs/issues/1239)) ([#1295](https://github.com/iamkun/dayjs/issues/1295)) ([64037e6](https://github.com/iamkun/dayjs/commit/64037e6a8cf303dcfd2b954f309bd9691f87fffc)) + + +### Features + +* add ES6 Module Support, package.json module point to "esm/index.js" ([#1298](https://github.com/iamkun/dayjs/issues/1298)) ([f63375d](https://github.com/iamkun/dayjs/commit/f63375dea89becbd3bb2bb8ea7289c58c752bfed)), closes [#598](https://github.com/iamkun/dayjs/issues/598) [#313](https://github.com/iamkun/dayjs/issues/313) + +## [1.9.8](https://github.com/iamkun/dayjs/compare/v1.9.7...v1.9.8) (2020-12-27) + + +### Bug Fixes + +* fix Ukrainian [uk] locale typo ([1605cc0](https://github.com/iamkun/dayjs/commit/1605cc0f6fe0e9c46a92d529bc9cd6e130432337)) +* update Hebrew [he] locale for double units ([#1287](https://github.com/iamkun/dayjs/issues/1287)) ([1c4b0da](https://github.com/iamkun/dayjs/commit/1c4b0da1468522e59dc9ee646d10dd2b31477d99)) +* update zh locale meridiem "noon" ([0e7ff3d](https://github.com/iamkun/dayjs/commit/0e7ff3dd29ca3aed85cb76dfcb8298d326e26542)) +* update zh-cn locale definition of noon ([#1278](https://github.com/iamkun/dayjs/issues/1278)) ([d5930b9](https://github.com/iamkun/dayjs/commit/d5930b96ff884f4176ca3fcb1bc95e8f1ec75c71)) + +## [1.9.7](https://github.com/iamkun/dayjs/compare/v1.9.6...v1.9.7) (2020-12-05) + + +### Bug Fixes + +* add duration.format to format a Duration ([#1202](https://github.com/iamkun/dayjs/issues/1202)) ([9a859a1](https://github.com/iamkun/dayjs/commit/9a859a147ba223a1eeff0f2bb6f33d97e0ccc6c7)) +* Add function handling for relativeTime.future and relativeTime.past ([#1197](https://github.com/iamkun/dayjs/issues/1197)) ([ef1979c](https://github.com/iamkun/dayjs/commit/ef1979ce85c61fe2d759ef3c37cb6aaf2358094f)) +* avoid install installed plugin ([#1214](https://github.com/iamkun/dayjs/issues/1214)) ([a92eb6c](https://github.com/iamkun/dayjs/commit/a92eb6c4dc1437ec920e69484d52984f5921a8ea)) +* avoid memory leak after installing a plugin too many times ([b8d2e32](https://github.com/iamkun/dayjs/commit/b8d2e32a9eb59661a7ed6200daa070687becaebd)) +* fix diff bug when UTC plugin enabled ([#1201](https://github.com/iamkun/dayjs/issues/1201)) ([9544ed2](https://github.com/iamkun/dayjs/commit/9544ed2a6c466b8308d26b33a388a6737435a1f4)), closes [#1200](https://github.com/iamkun/dayjs/issues/1200) +* fix startOf/endOf bug in timezone plugin ([#1229](https://github.com/iamkun/dayjs/issues/1229)) ([eb5fbc4](https://github.com/iamkun/dayjs/commit/eb5fbc4c7d1b62a8615d2f263b404a9515d8e15c)) +* fix utc plugin diff edge case ([#1187](https://github.com/iamkun/dayjs/issues/1187)) ([971b3d4](https://github.com/iamkun/dayjs/commit/971b3d40b4c9403165138f1034e2223cd97c3abf)) +* update customParseFormat plugin to parse 2-digit offset ([#1209](https://github.com/iamkun/dayjs/issues/1209)) ([b56936a](https://github.com/iamkun/dayjs/commit/b56936ab77b8f6289a1b77d49307b495c4bf9f91)), closes [#1205](https://github.com/iamkun/dayjs/issues/1205) +* Update timezone plugin type definition ([#1221](https://github.com/iamkun/dayjs/issues/1221)) ([34cfb92](https://github.com/iamkun/dayjs/commit/34cfb920b9653ad44d4b31fe49e533692a3ce01b)) + +## [1.9.6](https://github.com/iamkun/dayjs/compare/v1.9.5...v1.9.6) (2020-11-10) + + +### Bug Fixes + +* fix customParseFormat plugin parsing date bug ([#1198](https://github.com/iamkun/dayjs/issues/1198)) ([50f05ad](https://github.com/iamkun/dayjs/commit/50f05ad3addf27827c5657ae7519514e40d9faec)), closes [#1194](https://github.com/iamkun/dayjs/issues/1194) +* Update lv (Latvian) locale relative time ([#1192](https://github.com/iamkun/dayjs/issues/1192)) ([6d6c684](https://github.com/iamkun/dayjs/commit/6d6c6841b13ba4f7e69de92caf132a3592c5253a)) + +## [1.9.5](https://github.com/iamkun/dayjs/compare/v1.9.4...v1.9.5) (2020-11-05) + + +### Bug Fixes + +* customParseFormat plugin supports parsing localizedFormats ([#1110](https://github.com/iamkun/dayjs/issues/1110)) ([402b603](https://github.com/iamkun/dayjs/commit/402b603aa3ee4199786950bc88b3fdc6b527aa35)) +* fix customParseFormat plugin parse meridiem bug ([#1169](https://github.com/iamkun/dayjs/issues/1169)) ([9e8f8d9](https://github.com/iamkun/dayjs/commit/9e8f8d96c69d557f4d267f42567c25ae9e7ab227)), closes [#1168](https://github.com/iamkun/dayjs/issues/1168) +* fix devHelper error in umd bundle in browser ([#1165](https://github.com/iamkun/dayjs/issues/1165)) ([d11b5ee](https://github.com/iamkun/dayjs/commit/d11b5ee7dc11af671355f65ccda00f6ba42cc725)) +* fix utc plugin diff bug in DST ([#1171](https://github.com/iamkun/dayjs/issues/1171)) ([f8da3fe](https://github.com/iamkun/dayjs/commit/f8da3fe7e50c84c0502bf5be0b364910922dbd79)), closes [#1097](https://github.com/iamkun/dayjs/issues/1097) [#1021](https://github.com/iamkun/dayjs/issues/1021) +* isoWeek plugin type ([#1177](https://github.com/iamkun/dayjs/issues/1177)) ([c3d0436](https://github.com/iamkun/dayjs/commit/c3d0436b06f74989e3a2c751a5d170f8072c4aad)) +* update localeData plugin to support meridiem ([#1174](https://github.com/iamkun/dayjs/issues/1174)) ([fdb09e4](https://github.com/iamkun/dayjs/commit/fdb09e4074cc7e8f6196846f18d3566c1f9e8fcd)), closes [#1172](https://github.com/iamkun/dayjs/issues/1172) +* update timezone plugin parse Date instance / timestamp logic & remove useless test ([#1183](https://github.com/iamkun/dayjs/issues/1183)) ([a7f858b](https://github.com/iamkun/dayjs/commit/a7f858bb70ad81f718ba35c479e84b54eace48b2)) + +## [1.9.4](https://github.com/iamkun/dayjs/compare/v1.9.3...v1.9.4) (2020-10-23) + + +### Bug Fixes + +* Add descriptions to types ([#1148](https://github.com/iamkun/dayjs/issues/1148)) ([9a407a1](https://github.com/iamkun/dayjs/commit/9a407a140b089345a387d1aceab4d0d1635229c7)) +* add devHelper plugin ([#1163](https://github.com/iamkun/dayjs/issues/1163)) ([de49dc8](https://github.com/iamkun/dayjs/commit/de49dc80c83b85de4170571b64412bd60ada221b)) +* Fix Hungarian (hu) locale ([#1112](https://github.com/iamkun/dayjs/issues/1112)) ([ab13754](https://github.com/iamkun/dayjs/commit/ab13754f43c5033dacaa0eb2042dc4ab1a7a2754)) +* fix minMax plugin parsing empty array bug ([#1062](https://github.com/iamkun/dayjs/issues/1062)) ([368108b](https://github.com/iamkun/dayjs/commit/368108bc6d5cb1542f711b8eba722bd4dfaab0cd)) +* update adding/subtracting Duration from Dayjs object ([#1156](https://github.com/iamkun/dayjs/issues/1156)) ([f861aca](https://github.com/iamkun/dayjs/commit/f861acac3e83e28d3a4a96312c71119fd6b544fc)) +* update en-NZ locale to use proper ordinal formatting function ([#1143](https://github.com/iamkun/dayjs/issues/1143)) ([fcdbc58](https://github.com/iamkun/dayjs/commit/fcdbc5880710456a29b2bacf250542230bf48b99)) +* update localeData plugin type ([#1116](https://github.com/iamkun/dayjs/issues/1116)) ([ee5a4ec](https://github.com/iamkun/dayjs/commit/ee5a4ec41edddfb57d103c35182dc635c9264a10)) +* update timezone plugin to support custom parse format ([#1160](https://github.com/iamkun/dayjs/issues/1160)) ([48cbf31](https://github.com/iamkun/dayjs/commit/48cbf3118ba5427de428777c2e025896db654f2e)), closes [#1159](https://github.com/iamkun/dayjs/issues/1159) +* update timezone plugin to support keepLocalTime ([#1161](https://github.com/iamkun/dayjs/issues/1161)) ([1d429e5](https://github.com/iamkun/dayjs/commit/1d429e5fe4467ebddcf81b43cf6f36e5e3be944c)), closes [#1149](https://github.com/iamkun/dayjs/issues/1149) + +## [1.9.3](https://github.com/iamkun/dayjs/compare/v1.9.2...v1.9.3) (2020-10-13) + + +### Bug Fixes + +* fix localizedFormat export error ([#1133](https://github.com/iamkun/dayjs/issues/1133)) ([deecd6a](https://github.com/iamkun/dayjs/commit/deecd6ab8a2f4173ee7046f6b568b41fd2677531)), closes [#1132](https://github.com/iamkun/dayjs/issues/1132) + +## [1.9.2](https://github.com/iamkun/dayjs/compare/v1.9.1...v1.9.2) (2020-10-13) + + +### Bug Fixes + +* add arraySupport plugin ([#1129](https://github.com/iamkun/dayjs/issues/1129)) ([be505c2](https://github.com/iamkun/dayjs/commit/be505c2c540261027342cecc55d8919a3d18d893)) +* export type of duration plugin ([#1094](https://github.com/iamkun/dayjs/issues/1094)) ([2c92e71](https://github.com/iamkun/dayjs/commit/2c92e71bf55d09601120cdf433da7a19cc8abff6)) +* Fix LocaleData plugin longDateFormat lowercase error ([#1101](https://github.com/iamkun/dayjs/issues/1101)) ([7937ccd](https://github.com/iamkun/dayjs/commit/7937ccdeac47d094a60e65ebb62a6020b81c46f4)) +* Fix objectSupport plugin bug in UTC ([#1107](https://github.com/iamkun/dayjs/issues/1107)) ([fe90bb6](https://github.com/iamkun/dayjs/commit/fe90bb6944f2ff1969ca975954d303b449dfa95b)), closes [#1105](https://github.com/iamkun/dayjs/issues/1105) +* fix Serbian locale grammar (sr, sr-cyrl) ([#1108](https://github.com/iamkun/dayjs/issues/1108)) ([cc87eff](https://github.com/iamkun/dayjs/commit/cc87eff8b75b0d86ce0956516319d402bccae6c0)) +* Fix typo for "monday" in arabic ([#1067](https://github.com/iamkun/dayjs/issues/1067)) ([2e1e426](https://github.com/iamkun/dayjs/commit/2e1e42650124f30282dc4d710798d576b928f1c7)) +* support dayjs.add(Duration), dayjs.subtract(Duration) ([#1099](https://github.com/iamkun/dayjs/issues/1099)) ([b1a0294](https://github.com/iamkun/dayjs/commit/b1a02942c5238203aaa04ce9a074c73742324ab7)) +* update Breton [br] locale relativeTime config ([#1103](https://github.com/iamkun/dayjs/issues/1103)) ([b038bfd](https://github.com/iamkun/dayjs/commit/b038bfdb128889d677c95534d2be29cc30c9e72f)) +* update Catalan [ca] locale ordinal ([73da380](https://github.com/iamkun/dayjs/commit/73da38024c8b550bdcfbe3ff7e578e742c7aecf2)) +* update German [de] locale relativeTime config ([#1109](https://github.com/iamkun/dayjs/issues/1109)) ([f6e771b](https://github.com/iamkun/dayjs/commit/f6e771b70f93d19ebb12e6b794aa4628a1796248)) +* update localeData plugin to add longDateFormat to global localeData ([#1106](https://github.com/iamkun/dayjs/issues/1106)) ([16937d1](https://github.com/iamkun/dayjs/commit/16937d16e053b8c1d4a607622fa2fdbfd9809832)) +* Update objectSupport plugin to return current date time while parsing empty object ([f56783e](https://github.com/iamkun/dayjs/commit/f56783e14d8cf50916b015e7188b23bb6fbca839)) + +## [1.9.1](https://github.com/iamkun/dayjs/compare/v1.9.0...v1.9.1) (2020-09-28) + + +### Bug Fixes + +* Fix objectSupport plugin to get the correct result (zero-based month) ([#1089](https://github.com/iamkun/dayjs/issues/1089)) ([f95ac15](https://github.com/iamkun/dayjs/commit/f95ac15a4577ae5a3d1ce353872a2cd9fc454bc2)) + +# [1.9.0](https://github.com/iamkun/dayjs/compare/v1.8.36...v1.9.0) (2020-09-28) + + +### Bug Fixes + +* Add `setDefault` typing to timezone.d.ts ([#1057](https://github.com/iamkun/dayjs/issues/1057)) ([c0f0886](https://github.com/iamkun/dayjs/commit/c0f088620f17260e6e3ebce7697d561b5623f5f3)) +* fix DST bug in utc plugin ([#1053](https://github.com/iamkun/dayjs/issues/1053)) ([3d73543](https://github.com/iamkun/dayjs/commit/3d7354361f042ced1176d91f9ae9edffe6173425)) +* Fix optional type for timezone plugin ([#1081](https://github.com/iamkun/dayjs/issues/1081)) ([a6ebcf2](https://github.com/iamkun/dayjs/commit/a6ebcf283a83273562dce5663155e3b3a12ea9a5)), closes [#1079](https://github.com/iamkun/dayjs/issues/1079) +* Fix timezone plugin conversion bug ([#1073](https://github.com/iamkun/dayjs/issues/1073)) ([16816a3](https://github.com/iamkun/dayjs/commit/16816a31ff43220aca9d1d179df6b729182abb55)) +* update duration plugin type file ([#1065](https://github.com/iamkun/dayjs/issues/1065)) ([94af9af](https://github.com/iamkun/dayjs/commit/94af9af27c5bc182cbb24f1845e561dd1d82d776)) +* update timezone plugin to support getting offset name e.g. EST ([#1069](https://github.com/iamkun/dayjs/issues/1069)) ([cbb755e](https://github.com/iamkun/dayjs/commit/cbb755e5c68d49c5678291f3ce832b32831a056e)) +* update utc plugin to support keepLocalTime `.utc(true)` ([#1080](https://github.com/iamkun/dayjs/issues/1080)) ([5ce4e0d](https://github.com/iamkun/dayjs/commit/5ce4e0d2f552f3645262537ff7afdc946f5a7e72)) + + +### Features + +* Correct casing for en-sg locale name ([#1048](https://github.com/iamkun/dayjs/issues/1048)) ([2edaddc](https://github.com/iamkun/dayjs/commit/2edaddc22a7eb914f915531f389766217acd7034)) + +## [1.8.36](https://github.com/iamkun/dayjs/compare/v1.8.35...v1.8.36) (2020-09-17) + + +### Bug Fixes + +* Add Amharic (am) locale ([#1046](https://github.com/iamkun/dayjs/issues/1046)) ([cdc49a1](https://github.com/iamkun/dayjs/commit/cdc49a1911c74b7ea96ed222f42796d53715cfed)) +* Export Duration type in duration plugin ([#1043](https://github.com/iamkun/dayjs/issues/1043)) ([0f20c3a](https://github.com/iamkun/dayjs/commit/0f20c3ac75d9ac1026a15a7bb343d3a150d9b30f)) +* Fix duration plugin parsing milliseconds bug ([#1042](https://github.com/iamkun/dayjs/issues/1042)) ([fe2301b](https://github.com/iamkun/dayjs/commit/fe2301b22318886aaa89ed1620e0a118e98c2b8a)) +* Timezone plugin set default timezone ([#1033](https://github.com/iamkun/dayjs/issues/1033)) ([0c2050a](https://github.com/iamkun/dayjs/commit/0c2050a152da708b01edd6150a5013f642b14576)) +* Timezone plugin should have the same behavior in latest ICU version ([#1032](https://github.com/iamkun/dayjs/issues/1032)) ([de31592](https://github.com/iamkun/dayjs/commit/de315921575cc50c38464b27d0338e30a54d8e2a)) +* Update Finnish (fi) locale ([#963](https://github.com/iamkun/dayjs/issues/963)) ([cf8b6a0](https://github.com/iamkun/dayjs/commit/cf8b6a096f24b54cbdb95675ac386d8ac85ea616)) +* Update Polish (pl) , Hungarian (hr) and Lithuanian (lt) localization ([#1045](https://github.com/iamkun/dayjs/issues/1045)) ([638fd39](https://github.com/iamkun/dayjs/commit/638fd394fc24f4188390faf387da6b156e7c6320)) + +## [1.8.35](https://github.com/iamkun/dayjs/compare/v1.8.34...v1.8.35) (2020-09-02) + + +### Bug Fixes + +* Fix BadMutable plugin bug in .diff ([#1023](https://github.com/iamkun/dayjs/issues/1023)) ([40ab6d9](https://github.com/iamkun/dayjs/commit/40ab6d9a53e8047cfca63c611c25dd045372d021)) +* fix LocaleData plugin to support instance.weekdays() API ([#1019](https://github.com/iamkun/dayjs/issues/1019)) ([a09d259](https://github.com/iamkun/dayjs/commit/a09d259a407b81d1cb6bb5623fad551c775d8674)), closes [#1017](https://github.com/iamkun/dayjs/issues/1017) +* Update Dutch (nl) locale to set correct yearStart ([1533a2c](https://github.com/iamkun/dayjs/commit/1533a2cc1475270032da2d87b19fc3d62327e6e3)) + +## [1.8.34](https://github.com/iamkun/dayjs/compare/v1.8.33...v1.8.34) (2020-08-20) + + +### Bug Fixes + +* Fix Timezone plugin to preserve milliseconds while changing timezone ([#1003](https://github.com/iamkun/dayjs/issues/1003)) ([5f446ed](https://github.com/iamkun/dayjs/commit/5f446eda770fa97e895c81a8195b3ba5d082cef0)), closes [#1002](https://github.com/iamkun/dayjs/issues/1002) +* support parsing unlimited decimals of millisecond ([#1010](https://github.com/iamkun/dayjs/issues/1010)) ([d1bdd36](https://github.com/iamkun/dayjs/commit/d1bdd36a56e3d1786523a180e3fc18068f609135)), closes [#544](https://github.com/iamkun/dayjs/issues/544) +* update Duration plugin to support global locale ([#1008](https://github.com/iamkun/dayjs/issues/1008)) ([1c49c83](https://github.com/iamkun/dayjs/commit/1c49c83e79811eede13db6372b5d65db598aee77)), closes [#1007](https://github.com/iamkun/dayjs/issues/1007) + +## [1.8.33](https://github.com/iamkun/dayjs/compare/v1.8.32...v1.8.33) (2020-08-10) + + +### Bug Fixes + +* Add PluralGetSet plugin for plural getters/setters ([#996](https://github.com/iamkun/dayjs/issues/996)) ([f76e3ce](https://github.com/iamkun/dayjs/commit/f76e3ce2fbe5d3e9ed9121086baf55eb0cc4d355)) +* Add typescript type defs in esm build ([#985](https://github.com/iamkun/dayjs/issues/985)) ([50e3b3c](https://github.com/iamkun/dayjs/commit/50e3b3c6719cb0b4ec6eff394dacd63d5db8f253)) +* Fix isoWeek Plugin cal bug in UTC mode ([#993](https://github.com/iamkun/dayjs/issues/993)) ([f2e5f32](https://github.com/iamkun/dayjs/commit/f2e5f327aaf12b4572296ec6e107ecc05fcf76e7)) +* Fix Timezone plugin parsing js date, Day.js object, timestamp bug && update type file ([#994](https://github.com/iamkun/dayjs/issues/994)) ([22f3d49](https://github.com/iamkun/dayjs/commit/22f3d49405da98db6da56d1673eebcd01b57554b)), closes [#992](https://github.com/iamkun/dayjs/issues/992) [#989](https://github.com/iamkun/dayjs/issues/989) +* Fix Timezone plugin UTCOffset rounding bug ([#987](https://github.com/iamkun/dayjs/issues/987)) ([b07182b](https://github.com/iamkun/dayjs/commit/b07182bbdf5aef7f6bf1e88fcd38432e2b8ee465)), closes [#986](https://github.com/iamkun/dayjs/issues/986) +* Fix UTC plugin bug while comparing an utc instance to a local one ([#995](https://github.com/iamkun/dayjs/issues/995)) ([747c0fb](https://github.com/iamkun/dayjs/commit/747c0fb4eba6353755b5dad3417fd8d5a408c378)) +* Update pt-br locale weekStart 0 ([#984](https://github.com/iamkun/dayjs/issues/984)) ([0f881c1](https://github.com/iamkun/dayjs/commit/0f881c18efb02b9d0ba7f76cba92bb504226fa95)) + +## [1.8.32](https://github.com/iamkun/dayjs/compare/v1.8.31...v1.8.32) (2020-08-04) + + +### Bug Fixes + +* Add Experimental Timezone Plugin ([#974](https://github.com/iamkun/dayjs/issues/974)) ([e69caba](https://github.com/iamkun/dayjs/commit/e69caba1b0957241a855aa0ae38db899fa2c3795)) +* fix parse date string error e.g. '2020/9/30' ([#980](https://github.com/iamkun/dayjs/issues/980)) ([231790d](https://github.com/iamkun/dayjs/commit/231790da62af0494732960c2c50d86ae9bf63ec6)), closes [#979](https://github.com/iamkun/dayjs/issues/979) +* update monthDiff function to get more accurate results ([19e8a7f](https://github.com/iamkun/dayjs/commit/19e8a7f2f7582b717f49d446822e39603694433c)) +* Update UTC plugin to support keepLocalTime ([#973](https://github.com/iamkun/dayjs/issues/973)) ([9f488e5](https://github.com/iamkun/dayjs/commit/9f488e5aca92f0b4c2951459436829d79f86d8d7)) + +## [1.8.31](https://github.com/iamkun/dayjs/compare/v1.8.30...v1.8.31) (2020-07-29) + + +### Bug Fixes + +* Rollback LocalePresetType to string ([#968](https://github.com/iamkun/dayjs/issues/968)) ([b342bd3](https://github.com/iamkun/dayjs/commit/b342bd3d84987d6c7587a0c4590d614fb0e670d7)) +* Update Regex to parse 'YYYY' correctly ([#969](https://github.com/iamkun/dayjs/issues/969)) ([70c1239](https://github.com/iamkun/dayjs/commit/70c123990dcc6bd479fa2b5d7f9985127872a826)) + +## [1.8.30](https://github.com/iamkun/dayjs/compare/v1.8.29...v1.8.30) (2020-07-22) + + +### Bug Fixes + +* Add Haitian Creole (ht) and Spanish Puerto Rico (es-pr) locale configs ([#958](https://github.com/iamkun/dayjs/issues/958)) ([b2642e2](https://github.com/iamkun/dayjs/commit/b2642e2d1f87734a34808c66e5176cb18bc0414d)) +* Fix UTC plugin wrong hour bug while adding month or year ([#957](https://github.com/iamkun/dayjs/issues/957)) ([28ae070](https://github.com/iamkun/dayjs/commit/28ae070024ff26685c88ce4cc8747307e86923c9)) +* Update French (fr) locale to set correct yearStart ([14ab808](https://github.com/iamkun/dayjs/commit/14ab808a7b7e226f2eb2cbe894916a18ed5d967d)), closes [#956](https://github.com/iamkun/dayjs/issues/956) + +## [1.8.29](https://github.com/iamkun/dayjs/compare/v1.8.28...v1.8.29) (2020-07-02) + + +### Bug Fixes + +* Duration plugin supports parse ISO string with week (W) ([#950](https://github.com/iamkun/dayjs/issues/950)) ([f0fc12a](https://github.com/iamkun/dayjs/commit/f0fc12adadcab53fb0577ad8f5e2f1cf784fd8f5)) +* LocaleData plugin supports locale order ([#938](https://github.com/iamkun/dayjs/issues/938)) ([62f429d](https://github.com/iamkun/dayjs/commit/62f429db73a0a069b1267231dea172b85f4b90e3)), closes [#936](https://github.com/iamkun/dayjs/issues/936) +* Update type definition to support array format ([#945](https://github.com/iamkun/dayjs/issues/945)) ([81d4740](https://github.com/iamkun/dayjs/commit/81d4740511d47e34f891b21afeb0449ef8a28688)), closes [#944](https://github.com/iamkun/dayjs/issues/944) +* Update type definition to support strict mode ([#951](https://github.com/iamkun/dayjs/issues/951)) ([8d54f3f](https://github.com/iamkun/dayjs/commit/8d54f3f7d4d161e72c767fa09699e70a2b3d681c)) + +## [1.8.28](https://github.com/iamkun/dayjs/compare/v1.8.27...v1.8.28) (2020-05-28) + + +### Bug Fixes + +* Fix CustomParseFormat plugin month index error ([#918](https://github.com/iamkun/dayjs/issues/918)) ([fa2ec7f](https://github.com/iamkun/dayjs/commit/fa2ec7fcb980dcd2c7498dafe2f9ca2e52d735cf)), closes [#915](https://github.com/iamkun/dayjs/issues/915) +* Update Ukrainian (uk) locale monthFormat and monthStandalone ([#899](https://github.com/iamkun/dayjs/issues/899)) ([a08756e](https://github.com/iamkun/dayjs/commit/a08756e80bd1d7126fca28c5ad9e382613fc86c4)) + +## [1.8.27](https://github.com/iamkun/dayjs/compare/v1.8.26...v1.8.27) (2020-05-14) + + +### Bug Fixes + +* Add Kinyarwanda (rw) locale ([#903](https://github.com/iamkun/dayjs/issues/903)) ([f355235](https://github.com/iamkun/dayjs/commit/f355235a836540d77880959fb1b614c87e9f7b3e)) +* Add plugin objectSupport ([#887](https://github.com/iamkun/dayjs/issues/887)) ([52dfb13](https://github.com/iamkun/dayjs/commit/52dfb13a6b84f0a753cc5761192b92416f440961)) +* Add Turkmen (tk) locale ([#893](https://github.com/iamkun/dayjs/issues/893)) ([a9ca8dc](https://github.com/iamkun/dayjs/commit/a9ca8dcbbd0964c5b9abb4e8a2d620c983cf091a)) +* Fix CustomParseFormat plugin set locale error ([#896](https://github.com/iamkun/dayjs/issues/896)) ([8035c8a](https://github.com/iamkun/dayjs/commit/8035c8a760549b631252252718db3cdc4ab2f68f)) +* Fix locale month function bug ([#908](https://github.com/iamkun/dayjs/issues/908)) ([bf347c3](https://github.com/iamkun/dayjs/commit/bf347c36e401f50727fb5afcc537497b54b90d6b)) +* Update CustomParseFormat plugin to support Array formats ([#906](https://github.com/iamkun/dayjs/issues/906)) ([97856c6](https://github.com/iamkun/dayjs/commit/97856c603ef5fbbeb1cf8a42387479e56a77dbe8)) + +## [1.8.26](https://github.com/iamkun/dayjs/compare/v1.8.25...v1.8.26) (2020-04-30) + + +### Bug Fixes + +* Fix Duration plugin `.toISOString` format bug ([#889](https://github.com/iamkun/dayjs/issues/889)) ([058d624](https://github.com/iamkun/dayjs/commit/058d624808fd2be024ae846bcb2e03885f39b556)), closes [#888](https://github.com/iamkun/dayjs/issues/888) +* Fix WeekOfYear plugin bug while using BadMutable plugin ([#884](https://github.com/iamkun/dayjs/issues/884)) ([2977438](https://github.com/iamkun/dayjs/commit/2977438458542573a4500e21f7ba5d1f8442960e)) +* Update CustomParseFormat plugin strict mode ([#882](https://github.com/iamkun/dayjs/issues/882)) ([db642ac](https://github.com/iamkun/dayjs/commit/db642ac73e52e00d8c41546b2935c9e691cf66e0)) +* Update RelativeTime plugin default config ([#883](https://github.com/iamkun/dayjs/issues/883)) ([0606f42](https://github.com/iamkun/dayjs/commit/0606f425aef8ccbfc3da3e43cba368130603b0cc)) + +## [1.8.25](https://github.com/iamkun/dayjs/compare/v1.8.24...v1.8.25) (2020-04-21) + + +### Bug Fixes + +* Fix CustomParseFormat plugin of parsing only YYYY / YYYY-MM bug ([#873](https://github.com/iamkun/dayjs/issues/873)) ([3cea04d](https://github.com/iamkun/dayjs/commit/3cea04d33d54d44bbdd3d026b5c7f67ebf176116)), closes [#849](https://github.com/iamkun/dayjs/issues/849) +* Fix Duration plugin get seconds ([#867](https://github.com/iamkun/dayjs/issues/867)) ([62b092d](https://github.com/iamkun/dayjs/commit/62b092d9f9a3db5506ef01f798bdf211f163f53f)) +* Fix type definition of locale ([9790b85](https://github.com/iamkun/dayjs/commit/9790b853e6113243a7f4a81dd12c6509e406a102)) +* Fix UTC plugin startOf, endOf bug ([#872](https://github.com/iamkun/dayjs/issues/872)) ([4141084](https://github.com/iamkun/dayjs/commit/4141084ba96d35cadcda3f1e661bf1d0f6c8e4de)), closes [#809](https://github.com/iamkun/dayjs/issues/809) [#808](https://github.com/iamkun/dayjs/issues/808) + +## [1.8.24](https://github.com/iamkun/dayjs/compare/v1.8.23...v1.8.24) (2020-04-10) + + +### Bug Fixes + +* Add config option to RelativeTime plugin ([#851](https://github.com/iamkun/dayjs/issues/851)) ([bd24034](https://github.com/iamkun/dayjs/commit/bd24034b95bfc656024b75ef3f3c986708845fed)) +* add Duration plugin ([#858](https://github.com/iamkun/dayjs/issues/858)) ([d568273](https://github.com/iamkun/dayjs/commit/d568273223199ca0497f238e2cc3a8d3dcf32d0f)) +* Add en-in, en-tt locales ([#855](https://github.com/iamkun/dayjs/issues/855)) ([c39fb96](https://github.com/iamkun/dayjs/commit/c39fb96e2a9102c14b004c14a6c073af9d266f2f)) +* add isToday, isTomorrow, isYesterday plugins ([#857](https://github.com/iamkun/dayjs/issues/857)) ([fc08ab6](https://github.com/iamkun/dayjs/commit/fc08ab68f8a28269802deeab9d6b0473b92cdc51)) +* Add option callback to Calendar plugin ([#839](https://github.com/iamkun/dayjs/issues/839)) ([b25be90](https://github.com/iamkun/dayjs/commit/b25be9094325295310c8fc5e617fb058be8a5f68)) +* Fix monthsShort for locale fr ([#862](https://github.com/iamkun/dayjs/issues/862)) ([d2de9a0](https://github.com/iamkun/dayjs/commit/d2de9a0b44b830038ed0094f79bfd40726311f2a)) +* Update Breton locale (br) meridiem config ([#856](https://github.com/iamkun/dayjs/issues/856)) ([a2a6672](https://github.com/iamkun/dayjs/commit/a2a66720abb788a8f1cffbfd0929b35579f29c72)) +* Update Ukrainian (uk) locale relative time ([#842](https://github.com/iamkun/dayjs/issues/842)) ([578bc1a](https://github.com/iamkun/dayjs/commit/578bc1a23c6e737783bbac3da12c0ed5d1edcf82)) + +## [1.8.23](https://github.com/iamkun/dayjs/compare/v1.8.22...v1.8.23) (2020-03-16) + + +### Bug Fixes + +* Add Chinese (zh) locale ([f9b8945](https://github.com/iamkun/dayjs/commit/f9b89453166d8b53d33b1d7eefd9942022552e6e)) +* Fix IsoWeek plugin typescript definition ([#828](https://github.com/iamkun/dayjs/issues/828)) ([30aab0c](https://github.com/iamkun/dayjs/commit/30aab0c7bce85dfac0ae208a891def30f88b5cb4)) +* Update Arabic (ar) locale relative time ([#836](https://github.com/iamkun/dayjs/issues/836)) ([14044c6](https://github.com/iamkun/dayjs/commit/14044c6fda1229e3f0e5473d3f886bd79589b15f)) +* Update Slovak (sk) locale, Czech (cs) locale ([#833](https://github.com/iamkun/dayjs/issues/833)) ([f0d451f](https://github.com/iamkun/dayjs/commit/f0d451f795e9ebf752cd854d51b25b11de2343a3)) +* Update Thai (th) locale relativeTime ([#826](https://github.com/iamkun/dayjs/issues/826)) ([63b7c03](https://github.com/iamkun/dayjs/commit/63b7c03a6dbb0507d60776e8bad6cccde3828b88)), closes [#816](https://github.com/iamkun/dayjs/issues/816) + +## [1.8.22](https://github.com/iamkun/dayjs/compare/v1.8.21...v1.8.22) (2020-03-08) + + +### Bug Fixes + +* Add IsoWeek plugin ([#811](https://github.com/iamkun/dayjs/issues/811)) ([28a2207](https://github.com/iamkun/dayjs/commit/28a2207ef9849afbac15dd29267b2e7a09cd3c16)) +* Fix unsupported locale fallback to previous one ([#819](https://github.com/iamkun/dayjs/issues/819)) ([4868715](https://github.com/iamkun/dayjs/commit/48687152cf5bee6a4c1b8ceea4bda8b9bab9be10)) + +## [1.8.21](https://github.com/iamkun/dayjs/compare/v1.8.20...v1.8.21) (2020-02-26) + + +### Bug Fixes + +* Set + Get accept 'D' as the short version of 'date' ([#795](https://github.com/iamkun/dayjs/issues/795)) ([523c038](https://github.com/iamkun/dayjs/commit/523c03880fa8bbad83214494ad02cd606cdb8b30)) +* Update DayOfYear plugin type ([#799](https://github.com/iamkun/dayjs/issues/799)) ([5809652](https://github.com/iamkun/dayjs/commit/5809652e40245b7759827d9bf317abdcfa75a330)) +* Update fi (Finnish) locale relativeTime ([#797](https://github.com/iamkun/dayjs/issues/797)) ([4a470fb](https://github.com/iamkun/dayjs/commit/4a470fbd6fef9e051727d0f26d53cc050b85935d)) + +## [1.8.20](https://github.com/iamkun/dayjs/compare/v1.8.19...v1.8.20) (2020-02-04) + + +### Bug Fixes + +* Add Bislama Locale (bi) ([#780](https://github.com/iamkun/dayjs/issues/780)) ([9ac6ab4](https://github.com/iamkun/dayjs/commit/9ac6ab481bc883dd4ecc02caab12c8b2fc218a42)) +* Fix weekOfYear plugin to support yearStart locale for better week number result ([#769](https://github.com/iamkun/dayjs/issues/769)) ([f00db36](https://github.com/iamkun/dayjs/commit/f00db36e70bc7beaca1abadeb30a9b1fbb3261ee)) +* Update et (Estonian) locale relativeTime ([#790](https://github.com/iamkun/dayjs/issues/790)) ([d8e0f45](https://github.com/iamkun/dayjs/commit/d8e0f45f6cd2d5e5704b9797929227454c92d1a5)) +* Update LocaleData plugin to support dayjs.localeData().weekdays() API ([287fed6](https://github.com/iamkun/dayjs/commit/287fed6db9eb4fd979b4861aca4dacbd32422533)), closes [#779](https://github.com/iamkun/dayjs/issues/779) +* Update LocaleData plugin to support dayjs.months dayjs.weekdays API ([144c2ae](https://github.com/iamkun/dayjs/commit/144c2ae6e15fbf89e3acd7c8cb9e237c5f6e1348)), closes [#779](https://github.com/iamkun/dayjs/issues/779) +* Update pl locale fusional config ([d372475](https://github.com/iamkun/dayjs/commit/d3724758bb27d5b17587b995ba14e7e80dcd1151)) + +## [1.8.19](https://github.com/iamkun/dayjs/compare/v1.8.18...v1.8.19) (2020-01-06) + + +### Bug Fixes + +* Add UpdateLocale plugin to update a locale's properties ([#766](https://github.com/iamkun/dayjs/issues/766)) ([82ce2ba](https://github.com/iamkun/dayjs/commit/82ce2ba8d7e402e40f6d005d400eb5356a0b0633)) +* Fix CustomParseFormat Plugin 'YYYY-MM' use first day of the month ([ba709ec](https://github.com/iamkun/dayjs/commit/ba709eca86a71ae648bc68bf67d9abdc229198d4)), closes [#761](https://github.com/iamkun/dayjs/issues/761) +* Fix CustomParseFormat Plugin to set correct locale ([66ce23f](https://github.com/iamkun/dayjs/commit/66ce23f2e18c5506e8f1a7ef20d3483a4df80087)) +* Fix WeekOfYear Plugin wrong calender week number bug ([79b86db](https://github.com/iamkun/dayjs/commit/79b86dbbf3cfd3f1e2165b3d479a7061ad1b6925)), closes [#760](https://github.com/iamkun/dayjs/issues/760) +* Update RelativeTime plugin to support function to make additional processing ([#767](https://github.com/iamkun/dayjs/issues/767)) ([4bd9250](https://github.com/iamkun/dayjs/commit/4bd9250fbe7131e2fddfb5fa1b3350e8c2262ca9)) +* Update ru, uk, cs locale to support relativeTime with plural ([3f080f7](https://github.com/iamkun/dayjs/commit/3f080f7d6bfdc4018cbb7c4d0112ff1ead4ef6b8)) + +## [1.8.18](https://github.com/iamkun/dayjs/compare/v1.8.17...v1.8.18) (2019-12-18) + + +### Bug Fixes + +* Add missing locale type definition ([#716](https://github.com/iamkun/dayjs/issues/716)) ([cde5d0b](https://github.com/iamkun/dayjs/commit/cde5d0b91be7b2f5f3098de4aa0b9a4f0f28ea5c)) +* Fix .locale() handel unsupported locale ([78ec173](https://github.com/iamkun/dayjs/commit/78ec173fcecc1299516ab7b44f4554d431b4b2fd)) +* Update Italian locale (it) ([#727](https://github.com/iamkun/dayjs/issues/727)) ([5b53e98](https://github.com/iamkun/dayjs/commit/5b53e98c0a3ba0eb9573a9c77caeb907439be9e7)) +* Update locale (fa) ([#733](https://github.com/iamkun/dayjs/issues/733)) ([9ad2e47](https://github.com/iamkun/dayjs/commit/9ad2e47e0569b23991bb0d5578f49c792c12df08)) +* Update locale (zh-cn) ([#706](https://github.com/iamkun/dayjs/issues/706)) ([e31e544](https://github.com/iamkun/dayjs/commit/e31e54414fb90e1f54da13a117748ba37f52645d)) +* Update locale (zh-cn) meridiem ([#735](https://github.com/iamkun/dayjs/issues/735)) ([15d1b81](https://github.com/iamkun/dayjs/commit/15d1b813e7faf5a1f9d1ea6fc673fd27ac49d8b1)) +* Update LocaleData plugin to support dayjs().longDateFormat() ([#734](https://github.com/iamkun/dayjs/issues/734)) ([aa0f210](https://github.com/iamkun/dayjs/commit/aa0f210a1e3c4f6aba61c3b96f9eb445b43a33f0)), closes [#680](https://github.com/iamkun/dayjs/issues/680) +* Update Mongolian (mn) locale relativeTime ([#753](https://github.com/iamkun/dayjs/issues/753)) ([6d51435](https://github.com/iamkun/dayjs/commit/6d51435092c0c94d8e50256d3f0f058cdd15febe)) +* Update Swedish locale (sv) fix ordinal error ([#745](https://github.com/iamkun/dayjs/issues/745)) ([49670d5](https://github.com/iamkun/dayjs/commit/49670d5ae31e4e21636cc5a8bfe35fef0f6d9e4a)), closes [#743](https://github.com/iamkun/dayjs/issues/743) + +## [1.8.17](https://github.com/iamkun/dayjs/compare/v1.8.16...v1.8.17) (2019-11-06) + + +### Bug Fixes + +* Fix set utcOffset in utc mode ([d148115](https://github.com/iamkun/dayjs/commit/d148115dad8f1a5afc0a64e9b8163dfeba4616b6)) +* Update advancedFormat plugin to support w ww wo week tokens … ([#678](https://github.com/iamkun/dayjs/issues/678)) ([26cfa63](https://github.com/iamkun/dayjs/commit/26cfa63a524b803f7966dac5464f9cbf8f63387e)), closes [#676](https://github.com/iamkun/dayjs/issues/676) +* Update ka locale weekdays ([f8ca3d4](https://github.com/iamkun/dayjs/commit/f8ca3d4ba1d3cbe41613d3909c0627935a51a0c4)) +* Update nb locale ([#679](https://github.com/iamkun/dayjs/issues/679)) ([1063b0e](https://github.com/iamkun/dayjs/commit/1063b0e1b5c19a1354d233cc0f21438e7073233a)) +* Update Polish locale (pl)([#713](https://github.com/iamkun/dayjs/issues/713)) ([30d2f02](https://github.com/iamkun/dayjs/commit/30d2f026b47188833a4f44fee4bab52467d4a718)) +* Update Ukrainian locale (uk) ([#710](https://github.com/iamkun/dayjs/issues/710)) ([360161c](https://github.com/iamkun/dayjs/commit/360161cac75f597fdd51d9d1ff138601282a1b4b)) +* UTC plugin set utcOffset value ([#668](https://github.com/iamkun/dayjs/issues/668)) ([8877883](https://github.com/iamkun/dayjs/commit/88778838e71dd309e79cd1a8094d5bea36ca3390)) + +## [1.8.16](https://github.com/iamkun/dayjs/compare/v1.8.15...v1.8.16) (2019-08-27) + + +### Bug Fixes + +* Fix relativeTime Plugin .FromNow() result error in UTC mode ([a385d5c](https://github.com/iamkun/dayjs/commit/a385d5c)) +* Handle locale in WeekOfYear plugin ([#658](https://github.com/iamkun/dayjs/issues/658)) ([0e45b0a](https://github.com/iamkun/dayjs/commit/0e45b0a)) +* LocaleData plugin returns all months and weekdays data when pas no argument ([#645](https://github.com/iamkun/dayjs/issues/645)) ([95e70b4](https://github.com/iamkun/dayjs/commit/95e70b4)) +* Return null in toJSON if not valid ([#633](https://github.com/iamkun/dayjs/issues/633)) ([19affc8](https://github.com/iamkun/dayjs/commit/19affc8)) +* Update Danish (da) locale ([#626](https://github.com/iamkun/dayjs/issues/626)) ([ac2ec77](https://github.com/iamkun/dayjs/commit/ac2ec77)) +* Update Korean locale meridiem ([#642](https://github.com/iamkun/dayjs/issues/642)) ([b457146](https://github.com/iamkun/dayjs/commit/b457146)) +* update Occitan locale Catalan locale ([#630](https://github.com/iamkun/dayjs/issues/630)) ([fef135e](https://github.com/iamkun/dayjs/commit/fef135e)) +* update pt-br locale ([#628](https://github.com/iamkun/dayjs/issues/628)) ([ccf596d](https://github.com/iamkun/dayjs/commit/ccf596d)) +* Update weekdaysShort to some locale files ([#643](https://github.com/iamkun/dayjs/issues/643)) ([cc1f15f](https://github.com/iamkun/dayjs/commit/cc1f15f)) + +## [1.8.15](https://github.com/iamkun/dayjs/compare/v1.8.14...v1.8.15) (2019-07-08) + + +### Bug Fixes + +* Fix dayjs.locale() returns current global locale ([#602](https://github.com/iamkun/dayjs/issues/602)) ([790cd1a](https://github.com/iamkun/dayjs/commit/790cd1a)) +* Fix incorrect Thai locale translation of July ([#607](https://github.com/iamkun/dayjs/issues/607)) ([43cbfd3](https://github.com/iamkun/dayjs/commit/43cbfd3)) +* Lowercase french locale months and weekdays ([#615](https://github.com/iamkun/dayjs/issues/615)) ([e5a257c](https://github.com/iamkun/dayjs/commit/e5a257c)) +* Type - Export Ls object to query all available locales ([#623](https://github.com/iamkun/dayjs/issues/623)) ([f6bfae0](https://github.com/iamkun/dayjs/commit/f6bfae0)) +* Update nb (Norsk Bokmål) locale ([#604](https://github.com/iamkun/dayjs/issues/604)) ([907f5c9](https://github.com/iamkun/dayjs/commit/907f5c9)) +* Update types of `.diff` API ([#617](https://github.com/iamkun/dayjs/issues/617)) ([f0f43d2](https://github.com/iamkun/dayjs/commit/f0f43d2)) + +## [1.8.14](https://github.com/iamkun/dayjs/compare/v1.8.13...v1.8.14) (2019-05-07) + + +### Bug Fixes + +* Fix `.format` API returns UTC offset when value is 0 bug ([b254964](https://github.com/iamkun/dayjs/commit/b254964)) +* Fix QuarterOfYear plugin bug ([#591](https://github.com/iamkun/dayjs/issues/591)) ([434f774](https://github.com/iamkun/dayjs/commit/434f774)) +* Fix UTC plugin add day DST bug ([#590](https://github.com/iamkun/dayjs/issues/590)) ([86cd839](https://github.com/iamkun/dayjs/commit/86cd839)) + +## [1.8.13](https://github.com/iamkun/dayjs/compare/v1.8.12...v1.8.13) (2019-04-26) + + +### Bug Fixes + +* Add missing relativeTime and formats for some locales ([#560](https://github.com/iamkun/dayjs/issues/560)) ([96b917e](https://github.com/iamkun/dayjs/commit/96b917e)) +* Add weekday (locale aware day of the week) plugin ([#569](https://github.com/iamkun/dayjs/issues/569)) ([9007cc5](https://github.com/iamkun/dayjs/commit/9007cc5)), closes [#559](https://github.com/iamkun/dayjs/issues/559) +* Allow customizing "am" / "pm" strings with locale meridiem function ([#580](https://github.com/iamkun/dayjs/issues/580)) ([576e93e](https://github.com/iamkun/dayjs/commit/576e93e)), closes [#578](https://github.com/iamkun/dayjs/issues/578) +* Fix `.add` day/week decimal rouding bug ([800f6c9](https://github.com/iamkun/dayjs/commit/800f6c9)) +* Fix `.diff` type definition error ([#565](https://github.com/iamkun/dayjs/issues/565)) ([c4921ae](https://github.com/iamkun/dayjs/commit/c4921ae)), closes [#561](https://github.com/iamkun/dayjs/issues/561) +* Fix CustomParseFormat plugin bug ([#568](https://github.com/iamkun/dayjs/issues/568)) ([1f5a9db](https://github.com/iamkun/dayjs/commit/1f5a9db)), closes [#555](https://github.com/iamkun/dayjs/issues/555) +* Fix relativeTime plugin Math.round bug ([40bea40](https://github.com/iamkun/dayjs/commit/40bea40)) +* skip square brackets in buddhistEra, advancedFormat plugins ([#556](https://github.com/iamkun/dayjs/issues/556)) ([9279718](https://github.com/iamkun/dayjs/commit/9279718)), closes [#554](https://github.com/iamkun/dayjs/issues/554) +* Update Indonesian locale([#574](https://github.com/iamkun/dayjs/issues/574)) ([0aa7143](https://github.com/iamkun/dayjs/commit/0aa7143)) +* Update locale month to support both array and function ([#581](https://github.com/iamkun/dayjs/issues/581)) ([b6599d3](https://github.com/iamkun/dayjs/commit/b6599d3)) +* Update LocalizedFormat plugin lowercase formats logic ([#557](https://github.com/iamkun/dayjs/issues/557)) ([d409304](https://github.com/iamkun/dayjs/commit/d409304)) + +## [1.8.12](https://github.com/iamkun/dayjs/compare/v1.8.11...v1.8.12) (2019-04-02) + + +### Bug Fixes + +* Add .get API ([7318797](https://github.com/iamkun/dayjs/commit/7318797)) +* Add 79 locales ([#541](https://github.com/iamkun/dayjs/issues/541)) ([f75a125](https://github.com/iamkun/dayjs/commit/f75a125)) +* Add Calendar plugin ([d1b9cf9](https://github.com/iamkun/dayjs/commit/d1b9cf9)) +* Add isoWeeksInYear plugin ([2db8631](https://github.com/iamkun/dayjs/commit/2db8631)) +* Add Occitan (oc-lnc) locale file ([#551](https://github.com/iamkun/dayjs/issues/551)) ([c30b715](https://github.com/iamkun/dayjs/commit/c30b715)) +* Add plugin minMax to sopport .max .min ([2870a23](https://github.com/iamkun/dayjs/commit/2870a23)) +* Fix set Month Year error in last day of the month ([d058f4a](https://github.com/iamkun/dayjs/commit/d058f4a)) +* Update ko locale weekdaysShort ([#543](https://github.com/iamkun/dayjs/issues/543)) ([317fd3e](https://github.com/iamkun/dayjs/commit/317fd3e)) +* Update localizedFormat plugin to support lowercase localizable formats (l, ll, lll, llll) ([#546](https://github.com/iamkun/dayjs/issues/546)) ([f2b5ebf](https://github.com/iamkun/dayjs/commit/f2b5ebf)) + +## [1.8.11](https://github.com/iamkun/dayjs/compare/v1.8.10...v1.8.11) (2019-03-21) + + +### Bug Fixes + +* Add .add('quarter') .startOf('quarter') through plugin quarterOfYear ([dde39e9](https://github.com/iamkun/dayjs/commit/dde39e9)), closes [#537](https://github.com/iamkun/dayjs/issues/537) [#531](https://github.com/iamkun/dayjs/issues/531) +* Add locale support for Azerbaijani language (az) ([#535](https://github.com/iamkun/dayjs/issues/535)) ([eeb20fa](https://github.com/iamkun/dayjs/commit/eeb20fa)) +* Correct typescript definition `add` ([22a249c](https://github.com/iamkun/dayjs/commit/22a249c)), closes [#531](https://github.com/iamkun/dayjs/issues/531) +* Fix CustomParseFormat plugin formatting bug ([#536](https://github.com/iamkun/dayjs/issues/536)) ([8578546](https://github.com/iamkun/dayjs/commit/8578546)), closes [#533](https://github.com/iamkun/dayjs/issues/533) +* Update pt locale ([#538](https://github.com/iamkun/dayjs/issues/538)) ([1ac9e1e](https://github.com/iamkun/dayjs/commit/1ac9e1e)) + +## [1.8.10](https://github.com/iamkun/dayjs/compare/v1.8.9...v1.8.10) (2019-03-10) + + +### Bug Fixes + +* **locale:** Add nepali (ne) locale ([#524](https://github.com/iamkun/dayjs/issues/524)) ([bdbec01](https://github.com/iamkun/dayjs/commit/bdbec01)) +* Add WeekYear plugin ([a892608](https://github.com/iamkun/dayjs/commit/a892608)) +* API .locale() with no argument should return current locale name string ([8d63d88](https://github.com/iamkun/dayjs/commit/8d63d88)) +* CustomParseFormat correct parse HH:mm:ss with only one digit like 0:12:10 ([600d547](https://github.com/iamkun/dayjs/commit/600d547)) +* CustomParseFormat plugin parse Do format string ([bf27fda](https://github.com/iamkun/dayjs/commit/bf27fda)), closes [#522](https://github.com/iamkun/dayjs/issues/522) +* Expand setters like .year(2000) .hour(12) ([ac532a0](https://github.com/iamkun/dayjs/commit/ac532a0)) +* Move toObject, toArray API to separate plugin from core ([40a3431](https://github.com/iamkun/dayjs/commit/40a3431)) + +## [1.8.9](https://github.com/iamkun/dayjs/compare/v1.8.8...v1.8.9) (2019-03-06) + + +### Features + +* Add UTC mode with UTC plugin ([#517](https://github.com/iamkun/dayjs/issues/517)) ([caf335c](https://github.com/iamkun/dayjs/commit/caf335c)) + +> For plugin developers: Please note, we have changed the name of some method in `Utils` in order to reduce the file size. ([#517](https://github.com/iamkun/dayjs/issues/517)) ([detail](https://github.com/iamkun/dayjs/pull/517/files#diff-2b4ca49d4bb0a774c4d4c1672d7aa781R46)) + +### Bug Fixes + +* Add locale de-AT ([#515](https://github.com/iamkun/dayjs/issues/515)) ([d93f7b6](https://github.com/iamkun/dayjs/commit/d93f7b6)) +* Add locale zh-hk ([#516](https://github.com/iamkun/dayjs/issues/516)) ([5fc05a6](https://github.com/iamkun/dayjs/commit/5fc05a6)) + +## [1.8.8](https://github.com/iamkun/dayjs/compare/v1.8.7...v1.8.8) (2019-02-25) + + +### Bug Fixes + +* Update relativeTime plugin type definition ([de56f2c](https://github.com/iamkun/dayjs/commit/de56f2c)) + +## [1.8.7](https://github.com/iamkun/dayjs/compare/v1.8.6...v1.8.7) (2019-02-24) + + +### Bug Fixes + +* Add plugin type definitions ([#418](https://github.com/iamkun/dayjs/issues/418)) ([361d437](https://github.com/iamkun/dayjs/commit/361d437)) +* Add Swahili locale ([#508](https://github.com/iamkun/dayjs/issues/508)) ([b9cee84](https://github.com/iamkun/dayjs/commit/b9cee84)) +* Parse month string 'MMMM MMM (February, Feb)' in customParseFormat ([#457](https://github.com/iamkun/dayjs/issues/457)) ([f343206](https://github.com/iamkun/dayjs/commit/f343206)) +* Update declaration file .diff .isBefore .isSame .isAfter ([#496](https://github.com/iamkun/dayjs/issues/496)) ([4523275](https://github.com/iamkun/dayjs/commit/4523275)) +* Word orders corrections for locale 'fa' ([#491](https://github.com/iamkun/dayjs/issues/491)) ([56050c2](https://github.com/iamkun/dayjs/commit/56050c2)) + +## [1.8.6](https://github.com/iamkun/dayjs/compare/v1.8.5...v1.8.6) (2019-02-14) + + +### Bug Fixes + +* Add Bahasa Melayu (Malaysia) locale ([#485](https://github.com/iamkun/dayjs/issues/485)) ([cb208b0](https://github.com/iamkun/dayjs/commit/cb208b0)) +* Copy & export built-in en locale to /locale folder as a separate file ([a7e05e0](https://github.com/iamkun/dayjs/commit/a7e05e0)) +* Fix bug in customParseFormat plugin while month(MM) is '01' ([9884ca5](https://github.com/iamkun/dayjs/commit/9884ca5)), closes [#494](https://github.com/iamkun/dayjs/issues/494) +* Fix startOf week bug while week start is not Sunday ([5eaf77b](https://github.com/iamkun/dayjs/commit/5eaf77b)) +* Implemented isBetween inclusivity ([#464](https://github.com/iamkun/dayjs/issues/464)) ([af2f4f1](https://github.com/iamkun/dayjs/commit/af2f4f1)) +* Update Swedish and Finnish locales ([#488](https://github.com/iamkun/dayjs/issues/488)) ([f142082](https://github.com/iamkun/dayjs/commit/f142082)) +* Fix commonJS require ES Module bug in webpack4 ([23f9f3d](https://github.com/iamkun/dayjs/commit/23f9f3d)), check [#492](https://github.com/iamkun/dayjs/issues/492) + +> Get access to ESM code with `import dayjs from 'dayjs/esm'` + +## [1.8.5](https://github.com/iamkun/dayjs/compare/v1.8.4...v1.8.5) (2019-02-07) + + +### Bug Fixes + +* Add en-gb locale ([#478](https://github.com/iamkun/dayjs/issues/478)) ([508c3a7](https://github.com/iamkun/dayjs/commit/508c3a7)) +* **module:** transpile everything except ES6 modules in the 'module' entrypoint ([#477](https://github.com/iamkun/dayjs/issues/477)) ([#480](https://github.com/iamkun/dayjs/issues/480)) ([#482](https://github.com/iamkun/dayjs/issues/482)) ([767017d](https://github.com/iamkun/dayjs/commit/767017d)) +* update customParseFormat plugin support hh:mm ([54947cc](https://github.com/iamkun/dayjs/commit/54947cc)), closes [#484](https://github.com/iamkun/dayjs/issues/484) +* Update module in package.json ([5c5a7a0](https://github.com/iamkun/dayjs/commit/5c5a7a0)) + +## [1.8.4](https://github.com/iamkun/dayjs/compare/v1.8.3...v1.8.4) (2019-02-05) + +* Allow set start day of week in locale && Allow set week in weekOfYear plugin ([1295591](https://github.com/iamkun/dayjs/commit/1295591)) +### Bug Fixes +* update all locale files with correct week start ([5b03412](https://github.com/iamkun/dayjs/commit/5b03412)) +* update es es-do locale adding weekStart && update weekStart test ([66e42ec](https://github.com/iamkun/dayjs/commit/66e42ec)) +* Revert default export ([b00da1b](https://github.com/iamkun/dayjs/commit/b00da1b)) + +## [1.8.3](https://github.com/iamkun/dayjs/compare/v1.8.2...v1.8.3) (2019-02-04) + + +### Bug Fixes + +* fix ios safari YYYY-MM-DD HH:mm parse BUG ([e02ae82](https://github.com/iamkun/dayjs/commit/e02ae82)), closes [#254](https://github.com/iamkun/dayjs/issues/254) + +## [1.8.2](https://github.com/iamkun/dayjs/compare/v1.8.1...v1.8.2) (2019-02-02) + + +### Bug Fixes + +* Add missing czech language locale ([#461](https://github.com/iamkun/dayjs/issues/461)) ([7e04004](https://github.com/iamkun/dayjs/commit/7e04004)) +* Add utcOffset api method and fix calculating diff error in DST ([#453](https://github.com/iamkun/dayjs/issues/453)) ([ce2e30e](https://github.com/iamkun/dayjs/commit/ce2e30e)) +* Fix it locale error ([#458](https://github.com/iamkun/dayjs/issues/458)) ([f6d9a64](https://github.com/iamkun/dayjs/commit/f6d9a64)) +* Add DayOfYear plugin (#454) +* Fix es locale monthsShort error + +## [1.8.1](https://github.com/iamkun/dayjs/compare/v1.8.0...v1.8.1) (2019-02-02) + +* Add LocalizedFormat plugin supplying format like LTS, LT, LLLL + +* update declaration File with default export (#278) +> From v1.8.1, in TypeScript Project, just `import from dayjs from 'dayjs'` +* add ES2015 module support (#451) + +### Performance Improvements + +* **format:** reuse matches instead of created when replacing ([#441](https://github.com/iamkun/dayjs/issues/441)) ([10b79d8](https://github.com/iamkun/dayjs/commit/10b79d8)) + +# [1.8.0](https://github.com/iamkun/dayjs/compare/v1.7.8...v1.8.0) (2019-01-14) + + +### Features + +* add CustomParseFormat plugin and QuarterOfYear plugin ([#450](https://github.com/iamkun/dayjs/issues/450)) ([8f6f63c](https://github.com/iamkun/dayjs/commit/8f6f63c)) + +## [1.7.8](https://github.com/iamkun/dayjs/compare/v1.7.7...v1.7.8) (2018-12-13) + + +### Feature + +* update isSame isBefore isAfter supports units ([fd65464](https://github.com/iamkun/dayjs/commit/fd65464)) + +* add greek lithuanian locales + +## [1.7.7](https://github.com/iamkun/dayjs/compare/v1.7.6...v1.7.7) (2018-09-26) + + +### Bug Fixes + +* **DST:** fix daylight saving time DST bug && add test ([#354](https://github.com/iamkun/dayjs/issues/354)) ([6fca6d5](https://github.com/iamkun/dayjs/commit/6fca6d5)) + +## [1.7.6](https://github.com/iamkun/dayjs/compare/v1.7.5...v1.7.6) (2018-09-25) + + +### Bug Fixes + +* **add dayjs.unix:** add dayjs.unix to parse timestamp in seconds && locale update ([5711c5e](https://github.com/iamkun/dayjs/commit/5711c5e)) + +## [1.7.5](https://github.com/iamkun/dayjs/compare/v1.7.4...v1.7.5) (2018-08-10) + + +### Bug Fixes + +* add isBetween API & update ([b5fc3d1](https://github.com/iamkun/dayjs/commit/b5fc3d1)) + +## [1.7.4](https://github.com/iamkun/dayjs/compare/v1.7.3...v1.7.4) (2018-07-11) + + +### Bug Fixes + +* update set week logic ([60b6325](https://github.com/iamkun/dayjs/commit/60b6325)), closes [#276](https://github.com/iamkun/dayjs/issues/276) + +## [1.7.3](https://github.com/iamkun/dayjs/compare/v1.7.2...v1.7.3) (2018-07-10) + + +### Bug Fixes + +* **locale-nl:** set correct weekdays and months ([6d089d7](https://github.com/iamkun/dayjs/commit/6d089d7)) + +## [1.7.2](https://github.com/iamkun/dayjs/compare/v1.7.1...v1.7.2) (2018-07-04) + + +### Bug Fixes + +* DEPRECATED isLeapYear, use IsLeapYear plugin instead ([e2e5116](https://github.com/iamkun/dayjs/commit/e2e5116)) + +## [1.7.1](https://github.com/iamkun/dayjs/compare/v1.7.0...v1.7.1) (2018-07-03) + + +### Bug Fixes + +* fix week() error near the end of the year ([fa03689](https://github.com/iamkun/dayjs/commit/fa03689)) + +# [1.7.0](https://github.com/iamkun/dayjs/compare/v1.6.10...v1.7.0) (2018-07-02) + + +### Features + +* Added method `.week()` to retrieve week of the year ([e1c1b1c](https://github.com/iamkun/dayjs/commit/e1c1b1c)) +* Updated Japanese locae + +## [1.6.10](https://github.com/iamkun/dayjs/compare/v1.6.9...v1.6.10) (2018-06-25) + + +### Bug Fixes + +* Add relative locales to russian language ([c7e9898](https://github.com/iamkun/dayjs/commit/c7e9898)), closes [#256](https://github.com/iamkun/dayjs/issues/256) + +## [1.6.9](https://github.com/iamkun/dayjs/compare/v1.6.8...v1.6.9) (2018-06-14) + + +### Bug Fixes + +* add isDayjs => boolean API ([6227c8b](https://github.com/iamkun/dayjs/commit/6227c8b)) + +## [1.6.8](https://github.com/iamkun/dayjs/compare/v1.6.7...v1.6.8) (2018-06-14) + + +### Bug Fixes + +* fix Advanced format bug in zh-cn ([0c07874](https://github.com/iamkun/dayjs/commit/0c07874)), closes [#242](https://github.com/iamkun/dayjs/issues/242) + +## [1.6.7](https://github.com/iamkun/dayjs/compare/v1.6.6...v1.6.7) (2018-06-11) + + +### Bug Fixes + +* fix id locale ([1ebbeb8](https://github.com/iamkun/dayjs/commit/1ebbeb8)), closes [#234](https://github.com/iamkun/dayjs/issues/234) + + +## [1.6.6](https://github.com/iamkun/dayjs/compare/v1.6.5...v1.6.6) (2018-06-06) + + +### Bug Fixes + +* format API update and locale file update ([5ca48f0](https://github.com/iamkun/dayjs/commit/5ca48f0)), closes [#228](https://github.com/iamkun/dayjs/issues/228) + + +## [1.6.5](https://github.com/iamkun/dayjs/compare/v1.6.4...v1.6.5) (2018-05-31) + + +### Bug Fixes + +* bugfix, utils update and locale file update ([ebcb6d5](https://github.com/iamkun/dayjs/commit/ebcb6d5)), closes [#214](https://github.com/iamkun/dayjs/issues/214) + + +## [1.6.4](https://github.com/iamkun/dayjs/compare/v1.6.3...v1.6.4) (2018-05-25) + + +### Bug Fixes + +* add RelativeTime plugin and locale file update ([c1fbbca](https://github.com/iamkun/dayjs/commit/c1fbbca)), closes [#198](https://github.com/iamkun/dayjs/issues/198) + + +## [1.6.3](https://github.com/iamkun/dayjs/compare/v1.6.2...v1.6.3) (2018-05-21) + + +### Bug Fixes + +* Changing locales locally is immutable from this release ([2cce729](https://github.com/iamkun/dayjs/commit/2cce729)), closes [#182](https://github.com/iamkun/dayjs/issues/182) +* instance locale change should be immutable ([84597c9](https://github.com/iamkun/dayjs/commit/84597c9)) +* Add more locales +* english ordinal fix + + +## [1.6.2](https://github.com/iamkun/dayjs/compare/v1.6.1...v1.6.2) (2018-05-18) + + +### Bug Fixes + +* change-log update && test new npm release ([aa49cba](https://github.com/iamkun/dayjs/commit/aa49cba)), closes [#163](https://github.com/iamkun/dayjs/issues/163) + + +## [1.6.1](https://github.com/iamkun/dayjs/compare/v1.6.0...v1.6.1) (2018-05-18) + + +### Bug Fixes + +* Add German, Brazilian Portuguese locales +* add() & parse() bug fix & add locale de, pt-br ([bf1331e](https://github.com/iamkun/dayjs/commit/bf1331e)) + + +# [1.6.0](https://github.com/iamkun/dayjs/compare/v1.5.24...v1.6.0) (2018-05-15) + + +### Features + +* Locale && Plugin ([2342c55](https://github.com/iamkun/dayjs/commit/2342c55)), closes [#141](https://github.com/iamkun/dayjs/issues/141) diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/LICENSE b/uni_modules/UniDevTools/src/tmui/tool/dayjs/LICENSE new file mode 100644 index 0000000..caf9315 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018-present, iamkun + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/README.md b/uni_modules/UniDevTools/src/tmui/tool/dayjs/README.md new file mode 100644 index 0000000..728dadf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/README.md @@ -0,0 +1,135 @@ +English | [简体中文](./docs/zh-cn/README.zh-CN.md) | [日本語](./docs/ja/README-ja.md) | [Português Brasileiro](./docs/pt-br/README-pt-br.md) | [한국어](./docs/ko/README-ko.md) | [Español (España)](./docs/es-es/README-es-es.md) | [Русский](./docs/ru/README-ru.md) | [Türkçe](./docs/tr/README-tr.md) + +

Day.js

+

Fast 2kB alternative to Moment.js with the same modern API

+

+ Gzip Size + NPM Version + Build Status + Codecov + License +
+ + Sauce Test Status + +

+ +> Day.js is a minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers with a largely Moment.js-compatible API. If you use Moment.js, you already know how to use Day.js. + +```js +dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss'); +``` + +* 🕒 Familiar Moment.js API & patterns +* 💪 Immutable +* 🔥 Chainable +* 🌐 I18n support +* 📦 2kb mini library +* 👫 All browsers supported + +--- + +## Getting Started + +### Documentation + +You can find for more details, API, and other docs on [day.js.org](https://day.js.org/) website. + +### Installation + +```console +npm install dayjs --save +``` + +📚[Installation Guide](https://day.js.org/docs/en/installation/installation) + +### API + +It's easy to use Day.js APIs to parse, validate, manipulate, and display dates and times. + +```javascript +dayjs('2018-08-08') // parse + +dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // display + +dayjs().set('month', 3).month() // get & set + +dayjs().add(1, 'year') // manipulate + +dayjs().isBefore(dayjs()) // query +``` + +📚[API Reference](https://day.js.org/docs/en/parse/parse) + +### I18n + +Day.js has great support for internationalization. + +But none of them will be included in your build unless you use it. + +```javascript +import 'dayjs/locale/es' // load on demand + +dayjs.locale('es') // use Spanish locale globally + +dayjs('2018-05-05').locale('zh-cn').format() // use Chinese Simplified locale in a specific instance +``` +📚[Internationalization](https://day.js.org/docs/en/i18n/i18n) + +### Plugin + +A plugin is an independent module that can be added to Day.js to extend functionality or add new features. + +```javascript +import advancedFormat from 'dayjs/plugin/advancedFormat' // load on demand + +dayjs.extend(advancedFormat) // use plugin + +dayjs().format('Q Do k kk X x') // more available formats +``` + +📚[Plugin List](https://day.js.org/docs/en/plugin/plugin) + +## Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. + +[[Become a sponsor via Github](https://github.com/sponsors/iamkun/)] [[Become a sponsor via OpenCollective](https://opencollective.com/dayjs#sponsor)] + + + + +         + +         + +         + +         + + +## Contributors + +This project exists thanks to all the people who contribute. + +Please give us a 💖 star 💖 to support us. Thank you. + +And thank you to all our backers! 🙏 + + + + + + + +## License + +Day.js is licensed under a [MIT License](./LICENSE). diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/dayjs.min.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/dayjs.min.js new file mode 100644 index 0000000..4acc24c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/dayjs.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",$="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t) + +export = dayjs; + +declare function dayjs (date?: dayjs.ConfigType): dayjs.Dayjs + +declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, strict?: boolean): dayjs.Dayjs + +declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, locale?: string, strict?: boolean): dayjs.Dayjs + +declare namespace dayjs { + interface ConfigTypeMap { + default: string | number | Date | Dayjs | null | undefined + } + + export type ConfigType = ConfigTypeMap[keyof ConfigTypeMap] + + export interface FormatObject { locale?: string, format?: string, utc?: boolean } + + export type OptionType = FormatObject | string | string[] + + export type UnitTypeShort = 'd' | 'D' | 'M' | 'y' | 'h' | 'm' | 's' | 'ms' + + export type UnitTypeLong = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' | 'date' + + export type UnitTypeLongPlural = 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days' | 'months' | 'years' | 'dates' + + export type UnitType = UnitTypeLong | UnitTypeLongPlural | UnitTypeShort; + + export type OpUnitType = UnitType | "week" | "weeks" | 'w'; + export type QUnitType = UnitType | "quarter" | "quarters" | 'Q'; + export type ManipulateType = Omit; + class Dayjs { + constructor (config?: ConfigType) + /** + * All Day.js objects are immutable. Still, `dayjs#clone` can create a clone of the current object if you need one. + * ``` + * dayjs().clone()// => Dayjs + * dayjs(dayjs('2019-01-25')) // passing a Dayjs object to a constructor will also clone it + * ``` + * Docs: https://day.js.org/docs/en/parse/dayjs-clone + */ + clone(): Dayjs + /** + * This returns a `boolean` indicating whether the Day.js object contains a valid date or not. + * ``` + * dayjs().isValid()// => boolean + * ``` + * Docs: https://day.js.org/docs/en/parse/is-valid + */ + isValid(): boolean + /** + * Get the year. + * ``` + * dayjs().year()// => 2020 + * ``` + * Docs: https://day.js.org/docs/en/get-set/year + */ + year(): number + /** + * Set the year. + * ``` + * dayjs().year(2000)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/year + */ + year(value: number): Dayjs + /** + * Get the month. + * + * Months are zero indexed, so January is month 0. + * ``` + * dayjs().month()// => 0-11 + * ``` + * Docs: https://day.js.org/docs/en/get-set/month + */ + month(): number + /** + * Set the month. + * + * Months are zero indexed, so January is month 0. + * + * Accepts numbers from 0 to 11. If the range is exceeded, it will bubble up to the next year. + * ``` + * dayjs().month(0)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/month + */ + month(value: number): Dayjs + /** + * Get the date of the month. + * ``` + * dayjs().date()// => 1-31 + * ``` + * Docs: https://day.js.org/docs/en/get-set/date + */ + date(): number + /** + * Set the date of the month. + * + * Accepts numbers from 1 to 31. If the range is exceeded, it will bubble up to the next months. + * ``` + * dayjs().date(1)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/date + */ + date(value: number): Dayjs + /** + * Get the day of the week. + * + * Returns numbers from 0 (Sunday) to 6 (Saturday). + * ``` + * dayjs().day()// 0-6 + * ``` + * Docs: https://day.js.org/docs/en/get-set/day + */ + day(): number + /** + * Set the day of the week. + * + * Accepts numbers from 0 (Sunday) to 6 (Saturday). If the range is exceeded, it will bubble up to next weeks. + * ``` + * dayjs().day(0)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/day + */ + day(value: number): Dayjs + /** + * Get the hour. + * ``` + * dayjs().hour()// => 0-23 + * ``` + * Docs: https://day.js.org/docs/en/get-set/hour + */ + hour(): number + /** + * Set the hour. + * + * Accepts numbers from 0 to 23. If the range is exceeded, it will bubble up to the next day. + * ``` + * dayjs().hour(12)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/hour + */ + hour(value: number): Dayjs + /** + * Get the minutes. + * ``` + * dayjs().minute()// => 0-59 + * ``` + * Docs: https://day.js.org/docs/en/get-set/minute + */ + minute(): number + /** + * Set the minutes. + * + * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next hour. + * ``` + * dayjs().minute(59)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/minute + */ + minute(value: number): Dayjs + /** + * Get the seconds. + * ``` + * dayjs().second()// => 0-59 + * ``` + * Docs: https://day.js.org/docs/en/get-set/second + */ + second(): number + /** + * Set the seconds. + * + * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next minutes. + * ``` + * dayjs().second(1)// Dayjs + * ``` + */ + second(value: number): Dayjs + /** + * Get the milliseconds. + * ``` + * dayjs().millisecond()// => 0-999 + * ``` + * Docs: https://day.js.org/docs/en/get-set/millisecond + */ + millisecond(): number + /** + * Set the milliseconds. + * + * Accepts numbers from 0 to 999. If the range is exceeded, it will bubble up to the next seconds. + * ``` + * dayjs().millisecond(1)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/millisecond + */ + millisecond(value: number): Dayjs + /** + * Generic setter, accepting unit as first argument, and value as second, returns a new instance with the applied changes. + * + * In general: + * ``` + * dayjs().set(unit, value) === dayjs()[unit](value) + * ``` + * Units are case insensitive, and support plural and short forms. + * ``` + * dayjs().set('date', 1) + * dayjs().set('month', 3) // April + * dayjs().set('second', 30) + * ``` + * Docs: https://day.js.org/docs/en/get-set/set + */ + set(unit: UnitType, value: number): Dayjs + /** + * String getter, returns the corresponding information getting from Day.js object. + * + * In general: + * ``` + * dayjs().get(unit) === dayjs()[unit]() + * ``` + * Units are case insensitive, and support plural and short forms. + * ``` + * dayjs().get('year') + * dayjs().get('month') // start 0 + * dayjs().get('date') + * ``` + * Docs: https://day.js.org/docs/en/get-set/get + */ + get(unit: UnitType): number + /** + * Returns a cloned Day.js object with a specified amount of time added. + * ``` + * dayjs().add(7, 'day')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/add + */ + add(value: number, unit?: ManipulateType): Dayjs + /** + * Returns a cloned Day.js object with a specified amount of time subtracted. + * ``` + * dayjs().subtract(7, 'year')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/subtract + */ + subtract(value: number, unit?: ManipulateType): Dayjs + /** + * Returns a cloned Day.js object and set it to the start of a unit of time. + * ``` + * dayjs().startOf('year')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/start-of + */ + startOf(unit: OpUnitType): Dayjs + /** + * Returns a cloned Day.js object and set it to the end of a unit of time. + * ``` + * dayjs().endOf('month')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/end-of + */ + endOf(unit: OpUnitType): Dayjs + /** + * Get the formatted date according to the string of tokens passed in. + * + * To escape characters, wrap them in square brackets (e.g. [MM]). + * ``` + * dayjs().format()// => current date in ISO8601, without fraction seconds e.g. '2020-04-02T08:02:17-05:00' + * dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]')// 'YYYYescape 2019-01-25T00:00:00-02:00Z' + * dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019' + * ``` + * Docs: https://day.js.org/docs/en/display/format + */ + format(template?: string): string + /** + * This indicates the difference between two date-time in the specified unit. + * + * To get the difference in milliseconds, use `dayjs#diff` + * ``` + * const date1 = dayjs('2019-01-25') + * const date2 = dayjs('2018-06-05') + * date1.diff(date2) // 20214000000 default milliseconds + * date1.diff() // milliseconds to current time + * ``` + * + * To get the difference in another unit of measurement, pass that measurement as the second argument. + * ``` + * const date1 = dayjs('2019-01-25') + * date1.diff('2018-06-05', 'month') // 7 + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/display/difference + */ + diff(date?: ConfigType, unit?: QUnitType | OpUnitType, float?: boolean): number + /** + * This returns the number of **milliseconds** since the Unix Epoch of the Day.js object. + * ``` + * dayjs('2019-01-25').valueOf() // 1548381600000 + * +dayjs(1548381600000) // 1548381600000 + * ``` + * To get a Unix timestamp (the number of seconds since the epoch) from a Day.js object, you should use Unix Timestamp `dayjs#unix()`. + * + * Docs: https://day.js.org/docs/en/display/unix-timestamp-milliseconds + */ + valueOf(): number + /** + * This returns the Unix timestamp (the number of **seconds** since the Unix Epoch) of the Day.js object. + * ``` + * dayjs('2019-01-25').unix() // 1548381600 + * ``` + * This value is floored to the nearest second, and does not include a milliseconds component. + * + * Docs: https://day.js.org/docs/en/display/unix-timestamp + */ + unix(): number + /** + * Get the number of days in the current month. + * ``` + * dayjs('2019-01-25').daysInMonth() // 31 + * ``` + * Docs: https://day.js.org/docs/en/display/days-in-month + */ + daysInMonth(): number + /** + * To get a copy of the native `Date` object parsed from the Day.js object use `dayjs#toDate`. + * ``` + * dayjs('2019-01-25').toDate()// => Date + * ``` + */ + toDate(): Date + /** + * To serialize as an ISO 8601 string. + * ``` + * dayjs('2019-01-25').toJSON() // '2019-01-25T02:00:00.000Z' + * ``` + * Docs: https://day.js.org/docs/en/display/as-json + */ + toJSON(): string + /** + * To format as an ISO 8601 string. + * ``` + * dayjs('2019-01-25').toISOString() // '2019-01-25T02:00:00.000Z' + * ``` + * Docs: https://day.js.org/docs/en/display/as-iso-string + */ + toISOString(): string + /** + * Returns a string representation of the date. + * ``` + * dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT' + * ``` + * Docs: https://day.js.org/docs/en/display/as-string + */ + toString(): string + /** + * Get the UTC offset in minutes. + * ``` + * dayjs().utcOffset() + * ``` + * Docs: https://day.js.org/docs/en/manipulate/utc-offset + */ + utcOffset(): number + /** + * This indicates whether the Day.js object is before the other supplied date-time. + * ``` + * dayjs().isBefore(dayjs('2011-01-01')) // default milliseconds + * ``` + * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter. + * ``` + * dayjs().isBefore('2011-01-01', 'year')// => boolean + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/query/is-before + */ + isBefore(date: ConfigType, unit?: OpUnitType): boolean + /** + * This indicates whether the Day.js object is the same as the other supplied date-time. + * ``` + * dayjs().isSame(dayjs('2011-01-01')) // default milliseconds + * ``` + * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter. + * ``` + * dayjs().isSame('2011-01-01', 'year')// => boolean + * ``` + * Docs: https://day.js.org/docs/en/query/is-same + */ + isSame(date: ConfigType, unit?: OpUnitType): boolean + /** + * This indicates whether the Day.js object is after the other supplied date-time. + * ``` + * dayjs().isAfter(dayjs('2011-01-01')) // default milliseconds + * ``` + * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter. + * ``` + * dayjs().isAfter('2011-01-01', 'year')// => boolean + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/query/is-after + */ + isAfter(date: ConfigType, unit?: OpUnitType): boolean + + locale(): string + + locale(preset: string | ILocale, object?: Partial): Dayjs + } + + export type PluginFunc = (option: T, c: typeof Dayjs, d: typeof dayjs) => void + + export function extend(plugin: PluginFunc, option?: T): Dayjs + + export function locale(preset?: string | ILocale, object?: Partial, isLocal?: boolean): string + + export function isDayjs(d: any): d is Dayjs + + export function unix(t: number): Dayjs + + const Ls : { [key: string] : ILocale } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/index.js new file mode 100644 index 0000000..3a76275 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/index.js @@ -0,0 +1,441 @@ +import * as C from './constant'; +import en from './locale/en'; +import U from './utils'; +var L = 'en'; // global locale + +var Ls = {}; // global loaded locale + +Ls[L] = en; + +var isDayjs = function isDayjs(d) { + return d instanceof Dayjs; +}; // eslint-disable-line no-use-before-define + + +var parseLocale = function parseLocale(preset, object, isLocal) { + var l; + if (!preset) return L; + + if (typeof preset === 'string') { + var presetLower = preset.toLowerCase(); + + if (Ls[presetLower]) { + l = presetLower; + } + + if (object) { + Ls[presetLower] = object; + l = presetLower; + } + + var presetSplit = preset.split('-'); + + if (!l && presetSplit.length > 1) { + return parseLocale(presetSplit[0]); + } + } else { + var name = preset.name; + Ls[name] = preset; + l = name; + } + + if (!isLocal && l) L = l; + return l || !isLocal && L; +}; + +var dayjs = function dayjs(date, c) { + if (isDayjs(date)) { + return date.clone(); + } // eslint-disable-next-line no-nested-ternary + + + var cfg = typeof c === 'object' ? c : {}; + cfg.date = date; + cfg.args = arguments; // eslint-disable-line prefer-rest-params + + return new Dayjs(cfg); // eslint-disable-line no-use-before-define +}; + +var wrapper = function wrapper(date, instance) { + return dayjs(date, { + locale: instance.$L, + utc: instance.$u, + x: instance.$x, + $offset: instance.$offset // todo: refactor; do not use this.$offset in you code + + }); +}; + +var Utils = U; // for plugin use + +Utils.l = parseLocale; +Utils.i = isDayjs; +Utils.w = wrapper; + +var parseDate = function parseDate(cfg) { + var date = cfg.date, + utc = cfg.utc; + if (date === null) return new Date(NaN); // null is invalid + + if (Utils.u(date)) return new Date(); // today + + if (date instanceof Date) return new Date(date); + + if (typeof date === 'string' && !/Z$/i.test(date)) { + var d = date.match(C.REGEX_PARSE); + + if (d) { + var m = d[2] - 1 || 0; + var ms = (d[7] || '0').substring(0, 3); + + if (utc) { + return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms)); + } + + return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms); + } + } + + return new Date(date); // everything else +}; + +var Dayjs = /*#__PURE__*/function () { + function Dayjs(cfg) { + this.$L = parseLocale(cfg.locale, null, true); + this.parse(cfg); // for plugin + } + + var _proto = Dayjs.prototype; + + _proto.parse = function parse(cfg) { + this.$d = parseDate(cfg); + this.$x = cfg.x || {}; + this.init(); + }; + + _proto.init = function init() { + var $d = this.$d; + this.$y = $d.getFullYear(); + this.$M = $d.getMonth(); + this.$D = $d.getDate(); + this.$W = $d.getDay(); + this.$H = $d.getHours(); + this.$m = $d.getMinutes(); + this.$s = $d.getSeconds(); + this.$ms = $d.getMilliseconds(); + } // eslint-disable-next-line class-methods-use-this + ; + + _proto.$utils = function $utils() { + return Utils; + }; + + _proto.isValid = function isValid() { + return !(this.$d.toString() === C.INVALID_DATE_STRING); + }; + + _proto.isSame = function isSame(that, units) { + var other = dayjs(that); + return this.startOf(units) <= other && other <= this.endOf(units); + }; + + _proto.isAfter = function isAfter(that, units) { + return dayjs(that) < this.startOf(units); + }; + + _proto.isBefore = function isBefore(that, units) { + return this.endOf(units) < dayjs(that); + }; + + _proto.$g = function $g(input, get, set) { + if (Utils.u(input)) return this[get]; + return this.set(set, input); + }; + + _proto.unix = function unix() { + return Math.floor(this.valueOf() / 1000); + }; + + _proto.valueOf = function valueOf() { + // timezone(hour) * 60 * 60 * 1000 => ms + return this.$d.getTime(); + }; + + _proto.startOf = function startOf(units, _startOf) { + var _this = this; + + // startOf -> endOf + var isStartOf = !Utils.u(_startOf) ? _startOf : true; + var unit = Utils.p(units); + + var instanceFactory = function instanceFactory(d, m) { + var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this); + return isStartOf ? ins : ins.endOf(C.D); + }; + + var instanceFactorySet = function instanceFactorySet(method, slice) { + var argumentStart = [0, 0, 0, 0]; + var argumentEnd = [23, 59, 59, 999]; + return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread + _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this); + }; + + var $W = this.$W, + $M = this.$M, + $D = this.$D; + var utcPad = "set" + (this.$u ? 'UTC' : ''); + + switch (unit) { + case C.Y: + return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11); + + case C.M: + return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1); + + case C.W: + { + var weekStart = this.$locale().weekStart || 0; + var gap = ($W < weekStart ? $W + 7 : $W) - weekStart; + return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M); + } + + case C.D: + case C.DATE: + return instanceFactorySet(utcPad + "Hours", 0); + + case C.H: + return instanceFactorySet(utcPad + "Minutes", 1); + + case C.MIN: + return instanceFactorySet(utcPad + "Seconds", 2); + + case C.S: + return instanceFactorySet(utcPad + "Milliseconds", 3); + + default: + return this.clone(); + } + }; + + _proto.endOf = function endOf(arg) { + return this.startOf(arg, false); + }; + + _proto.$set = function $set(units, _int) { + var _C$D$C$DATE$C$M$C$Y$C; + + // private set + var unit = Utils.p(units); + var utcPad = "set" + (this.$u ? 'UTC' : ''); + var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + "Month", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + "FullYear", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + "Hours", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + "Minutes", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + "Seconds", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + "Milliseconds", _C$D$C$DATE$C$M$C$Y$C)[unit]; + var arg = unit === C.D ? this.$D + (_int - this.$W) : _int; + + if (unit === C.M || unit === C.Y) { + // clone is for badMutable plugin + var date = this.clone().set(C.DATE, 1); + date.$d[name](arg); + date.init(); + this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d; + } else if (name) this.$d[name](arg); + + this.init(); + return this; + }; + + _proto.set = function set(string, _int2) { + return this.clone().$set(string, _int2); + }; + + _proto.get = function get(unit) { + return this[Utils.p(unit)](); + }; + + _proto.add = function add(number, units) { + var _this2 = this, + _C$MIN$C$H$C$S$unit; + + number = Number(number); // eslint-disable-line no-param-reassign + + var unit = Utils.p(units); + + var instanceFactorySet = function instanceFactorySet(n) { + var d = dayjs(_this2); + return Utils.w(d.date(d.date() + Math.round(n * number)), _this2); + }; + + if (unit === C.M) { + return this.set(C.M, this.$M + number); + } + + if (unit === C.Y) { + return this.set(C.Y, this.$y + number); + } + + if (unit === C.D) { + return instanceFactorySet(1); + } + + if (unit === C.W) { + return instanceFactorySet(7); + } + + var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms + + var nextTimeStamp = this.$d.getTime() + number * step; + return Utils.w(nextTimeStamp, this); + }; + + _proto.subtract = function subtract(number, string) { + return this.add(number * -1, string); + }; + + _proto.format = function format(formatStr) { + var _this3 = this; + + var locale = this.$locale(); + if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING; + var str = formatStr || C.FORMAT_DEFAULT; + var zoneStr = Utils.z(this); + var $H = this.$H, + $m = this.$m, + $M = this.$M; + var weekdays = locale.weekdays, + months = locale.months, + meridiem = locale.meridiem; + + var getShort = function getShort(arr, index, full, length) { + return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length); + }; + + var get$H = function get$H(num) { + return Utils.s($H % 12 || 12, num, '0'); + }; + + var meridiemFunc = meridiem || function (hour, minute, isLowercase) { + var m = hour < 12 ? 'AM' : 'PM'; + return isLowercase ? m.toLowerCase() : m; + }; + + var matches = { + YY: String(this.$y).slice(-2), + YYYY: this.$y, + M: $M + 1, + MM: Utils.s($M + 1, 2, '0'), + MMM: getShort(locale.monthsShort, $M, months, 3), + MMMM: getShort(months, $M), + D: this.$D, + DD: Utils.s(this.$D, 2, '0'), + d: String(this.$W), + dd: getShort(locale.weekdaysMin, this.$W, weekdays, 2), + ddd: getShort(locale.weekdaysShort, this.$W, weekdays, 3), + dddd: weekdays[this.$W], + H: String($H), + HH: Utils.s($H, 2, '0'), + h: get$H(1), + hh: get$H(2), + a: meridiemFunc($H, $m, true), + A: meridiemFunc($H, $m, false), + m: String($m), + mm: Utils.s($m, 2, '0'), + s: String(this.$s), + ss: Utils.s(this.$s, 2, '0'), + SSS: Utils.s(this.$ms, 3, '0'), + Z: zoneStr // 'ZZ' logic below + + }; + return str.replace(C.REGEX_FORMAT, function (match, $1) { + return $1 || matches[match] || zoneStr.replace(':', ''); + }); // 'ZZ' + }; + + _proto.utcOffset = function utcOffset() { + // Because a bug at FF24, we're rounding the timezone offset around 15 minutes + // https://github.com/moment/moment/pull/1871 + return -Math.round(this.$d.getTimezoneOffset() / 15) * 15; + }; + + _proto.diff = function diff(input, units, _float) { + var _C$Y$C$M$C$Q$C$W$C$D$; + + var unit = Utils.p(units); + var that = dayjs(input); + var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE; + var diff = this - that; + var result = Utils.m(this, that); + result = (_C$Y$C$M$C$Q$C$W$C$D$ = {}, _C$Y$C$M$C$Q$C$W$C$D$[C.Y] = result / 12, _C$Y$C$M$C$Q$C$W$C$D$[C.M] = result, _C$Y$C$M$C$Q$C$W$C$D$[C.Q] = result / 3, _C$Y$C$M$C$Q$C$W$C$D$[C.W] = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK, _C$Y$C$M$C$Q$C$W$C$D$[C.D] = (diff - zoneDelta) / C.MILLISECONDS_A_DAY, _C$Y$C$M$C$Q$C$W$C$D$[C.H] = diff / C.MILLISECONDS_A_HOUR, _C$Y$C$M$C$Q$C$W$C$D$[C.MIN] = diff / C.MILLISECONDS_A_MINUTE, _C$Y$C$M$C$Q$C$W$C$D$[C.S] = diff / C.MILLISECONDS_A_SECOND, _C$Y$C$M$C$Q$C$W$C$D$)[unit] || diff; // milliseconds + + return _float ? result : Utils.a(result); + }; + + _proto.daysInMonth = function daysInMonth() { + return this.endOf(C.M).$D; + }; + + _proto.$locale = function $locale() { + // get locale object + return Ls[this.$L]; + }; + + _proto.locale = function locale(preset, object) { + if (!preset) return this.$L; + var that = this.clone(); + var nextLocaleName = parseLocale(preset, object, true); + if (nextLocaleName) that.$L = nextLocaleName; + return that; + }; + + _proto.clone = function clone() { + return Utils.w(this.$d, this); + }; + + _proto.toDate = function toDate() { + return new Date(this.valueOf()); + }; + + _proto.toJSON = function toJSON() { + return this.isValid() ? this.toISOString() : null; + }; + + _proto.toISOString = function toISOString() { + // ie 8 return + // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000) + // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]') + return this.$d.toISOString(); + }; + + _proto.toString = function toString() { + return this.$d.toUTCString(); + }; + + return Dayjs; +}(); + +var proto = Dayjs.prototype; +dayjs.prototype = proto; +[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) { + proto[g[1]] = function (input) { + return this.$g(input, g[0], g[1]); + }; +}); + +dayjs.extend = function (plugin, option) { + if (!plugin.$i) { + // install plugin only once + plugin(option, Dayjs, dayjs); + plugin.$i = true; + } + + return dayjs; +}; + +dayjs.locale = parseLocale; +dayjs.isDayjs = isDayjs; + +dayjs.unix = function (timestamp) { + return dayjs(timestamp * 1e3); +}; + +dayjs.en = Ls[L]; +dayjs.Ls = Ls; +dayjs.p = {}; +export default dayjs; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/af.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/af.js new file mode 100644 index 0000000..ce0c285 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/af.js @@ -0,0 +1,39 @@ +// Afrikaans [af] +import dayjs from '../index'; +var locale = { + name: 'af', + weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), + months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), + weekStart: 1, + weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), + monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'oor %s', + past: '%s gelede', + s: "'n paar sekondes", + m: "'n minuut", + mm: '%d minute', + h: "'n uur", + hh: '%d ure', + d: "'n dag", + dd: '%d dae', + M: "'n maand", + MM: '%d maande', + y: "'n jaar", + yy: '%d jaar' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/am.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/am.js new file mode 100644 index 0000000..cf25510 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/am.js @@ -0,0 +1,40 @@ +// Amharic [am] +import dayjs from '../index'; +var locale = { + name: 'am', + weekdays: 'እሑድ_ሰኞ_ማክሰኞ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'), + weekdaysShort: 'እሑድ_ሰኞ_ማክሰ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'), + weekdaysMin: 'እሑ_ሰኞ_ማክ_ረቡ_ሐሙ_አር_ቅዳ'.split('_'), + months: 'ጃንዋሪ_ፌብሯሪ_ማርች_ኤፕሪል_ሜይ_ጁን_ጁላይ_ኦገስት_ሴፕቴምበር_ኦክቶበር_ኖቬምበር_ዲሴምበር'.split('_'), + monthsShort: 'ጃንዋ_ፌብሯ_ማርች_ኤፕሪ_ሜይ_ጁን_ጁላይ_ኦገስ_ሴፕቴ_ኦክቶ_ኖቬም_ዲሴም'.split('_'), + weekStart: 1, + yearStart: 4, + relativeTime: { + future: 'በ%s', + past: '%s በፊት', + s: 'ጥቂት ሰከንዶች', + m: 'አንድ ደቂቃ', + mm: '%d ደቂቃዎች', + h: 'አንድ ሰዓት', + hh: '%d ሰዓታት', + d: 'አንድ ቀን', + dd: '%d ቀናት', + M: 'አንድ ወር', + MM: '%d ወራት', + y: 'አንድ ዓመት', + yy: '%d ዓመታት' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'MMMM D ፣ YYYY', + LLL: 'MMMM D ፣ YYYY HH:mm', + LLLL: 'dddd ፣ MMMM D ፣ YYYY HH:mm' + }, + ordinal: function ordinal(n) { + return n + "\u129B"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-dz.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-dz.js new file mode 100644 index 0000000..3409b93 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-dz.js @@ -0,0 +1,41 @@ +// Arabic (Algeria) [ar-dz] +import dayjs from '../index'; +var locale = { + name: 'ar-dz', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdaysMin: 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + meridiem: function meridiem(hour) { + return hour > 12 ? 'ص' : 'م'; + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-iq.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-iq.js new file mode 100644 index 0000000..b77492d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-iq.js @@ -0,0 +1,42 @@ +// Arabic (Iraq) [ar-iq] +import dayjs from '../index'; +var locale = { + name: 'ar-iq', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + months: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'), + weekStart: 1, + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + monthsShort: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + meridiem: function meridiem(hour) { + return hour > 12 ? 'ص' : 'م'; + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-kw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-kw.js new file mode 100644 index 0000000..aeeb29e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-kw.js @@ -0,0 +1,41 @@ +// Arabic (Kuwait) [ar-kw] +import dayjs from '../index'; +var locale = { + name: 'ar-kw', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + meridiem: function meridiem(hour) { + return hour > 12 ? 'ص' : 'م'; + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-ly.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-ly.js new file mode 100644 index 0000000..874826f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-ly.js @@ -0,0 +1,27 @@ +// Arabic (Lybia) [ar-ly] +import dayjs from '../index'; +var locale = { + name: 'ar-ly', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekStart: 6, + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + meridiem: function meridiem(hour) { + return hour > 12 ? 'ص' : 'م'; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/‏M/‏YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-ma.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-ma.js new file mode 100644 index 0000000..a3c7f94 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-ma.js @@ -0,0 +1,42 @@ +// Arabic (Morocco) [ar-ma] +import dayjs from '../index'; +var locale = { + name: 'ar-ma', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekStart: 6, + weekdaysShort: 'احد_إثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + meridiem: function meridiem(hour) { + return hour > 12 ? 'ص' : 'م'; + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-sa.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-sa.js new file mode 100644 index 0000000..da0bc52 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-sa.js @@ -0,0 +1,41 @@ +// Arabic (Saudi Arabia) [ar-sa] +import dayjs from '../index'; +var locale = { + name: 'ar-sa', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + meridiem: function meridiem(hour) { + return hour > 12 ? 'ص' : 'م'; + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-tn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-tn.js new file mode 100644 index 0000000..37ec6f1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar-tn.js @@ -0,0 +1,42 @@ +// Arabic (Tunisia) [ar-tn] +import dayjs from '../index'; +var locale = { + name: 'ar-tn', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekStart: 1, + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + meridiem: function meridiem(hour) { + return hour > 12 ? 'ص' : 'م'; + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar.js new file mode 100644 index 0000000..d161245 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ar.js @@ -0,0 +1,74 @@ +// Arabic [ar] +import dayjs from '../index'; +var months = 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'); +var symbolMap = { + 1: '١', + 2: '٢', + 3: '٣', + 4: '٤', + 5: '٥', + 6: '٦', + 7: '٧', + 8: '٨', + 9: '٩', + 0: '٠' +}; +var numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; +var locale = { + name: 'ar', + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + months: months, + monthsShort: months, + weekStart: 6, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: 'ثانية واحدة', + m: 'دقيقة واحدة', + mm: '%d دقائق', + h: 'ساعة واحدة', + hh: '%d ساعات', + d: 'يوم واحد', + dd: '%d أيام', + M: 'شهر واحد', + MM: '%d أشهر', + y: 'عام واحد', + yy: '%d أعوام' + }, + preparse: function preparse(string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function postformat(string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/‏M/‏YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/az.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/az.js new file mode 100644 index 0000000..3505c8a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/az.js @@ -0,0 +1,39 @@ +// Azerbaijani [az] +import dayjs from '../index'; +var locale = { + name: 'az', + weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), + weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), + monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), + weekStart: 1, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., H:mm', + LLLL: 'dddd, D MMMM YYYY г., H:mm' + }, + relativeTime: { + future: '%s sonra', + past: '%s əvvəl', + s: 'bir neçə saniyə', + m: 'bir dəqiqə', + mm: '%d dəqiqə', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir il', + yy: '%d il' + }, + ordinal: function ordinal(n) { + return n; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/be.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/be.js new file mode 100644 index 0000000..5642e39 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/be.js @@ -0,0 +1,24 @@ +// Belarusian [be] +import dayjs from '../index'; +var locale = { + name: 'be', + weekdays: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), + months: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), + weekStart: 1, + weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), + weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., HH:mm', + LLLL: 'dddd, D MMMM YYYY г., HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bg.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bg.js new file mode 100644 index 0000000..e60a2a3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bg.js @@ -0,0 +1,55 @@ +// Bulgarian [bg] +import dayjs from '../index'; +var locale = { + name: 'bg', + weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), + weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), + monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekStart: 1, + ordinal: function ordinal(n) { + var last2Digits = n % 100; + + if (last2Digits > 10 && last2Digits < 20) { + return n + "-\u0442\u0438"; + } + + var lastDigit = n % 10; + + if (lastDigit === 1) { + return n + "-\u0432\u0438"; + } else if (lastDigit === 2) { + return n + "-\u0440\u0438"; + } else if (lastDigit === 7 || lastDigit === 8) { + return n + "-\u043C\u0438"; + } + + return n + "-\u0442\u0438"; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'D.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm' + }, + relativeTime: { + future: 'след %s', + past: 'преди %s', + s: 'няколко секунди', + m: 'минута', + mm: '%d минути', + h: 'час', + hh: '%d часа', + d: 'ден', + dd: '%d дена', + M: 'месец', + MM: '%d месеца', + y: 'година', + yy: '%d години' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bi.js new file mode 100644 index 0000000..6230f25 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bi.js @@ -0,0 +1,39 @@ +// Bislama [bi] +import dayjs from '../index'; +var locale = { + name: 'bi', + weekdays: 'Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade'.split('_'), + months: 'Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba'.split('_'), + weekStart: 1, + weekdaysShort: 'San_Man_Tus_Wen_Tos_Frae_Sar'.split('_'), + monthsShort: 'Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis'.split('_'), + weekdaysMin: 'San_Ma_Tu_We_To_Fr_Sar'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A' + }, + relativeTime: { + future: 'lo %s', + past: '%s bifo', + s: 'sam seken', + m: 'wan minit', + mm: '%d minit', + h: 'wan haoa', + hh: '%d haoa', + d: 'wan dei', + dd: '%d dei', + M: 'wan manis', + MM: '%d manis', + y: 'wan yia', + yy: '%d yia' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bm.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bm.js new file mode 100644 index 0000000..0d61093 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bm.js @@ -0,0 +1,39 @@ +// Bambara [bm] +import dayjs from '../index'; +var locale = { + name: 'bm', + weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), + months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'), + weekStart: 1, + weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), + monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), + weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'MMMM [tile] D [san] YYYY', + LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', + LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm' + }, + relativeTime: { + future: '%s kɔnɔ', + past: 'a bɛ %s bɔ', + s: 'sanga dama dama', + m: 'miniti kelen', + mm: 'miniti %d', + h: 'lɛrɛ kelen', + hh: 'lɛrɛ %d', + d: 'tile kelen', + dd: 'tile %d', + M: 'kalo kelen', + MM: 'kalo %d', + y: 'san kelen', + yy: 'san %d' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bn-bd.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bn-bd.js new file mode 100644 index 0000000..f13b660 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bn-bd.js @@ -0,0 +1,81 @@ +// Bengali (Bangladesh) [bn-bd] +import dayjs from '../index'; +var symbolMap = { + 1: '১', + 2: '২', + 3: '৩', + 4: '৪', + 5: '৫', + 6: '৬', + 7: '৭', + 8: '৮', + 9: '৯', + 0: '০' +}; +var numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' +}; +var locale = { + name: 'bn-bd', + weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), + months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), + weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'), + weekStart: 0, + preparse: function preparse(string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function postformat(string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + ordinal: function ordinal(n) { + var s = ['ই', 'লা', 'রা', 'ঠা', 'শে']; + var v = n % 100; + return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]"; + }, + formats: { + LT: 'A h:mm সময়', + LTS: 'A h:mm:ss সময়', + L: 'DD/MM/YYYY খ্রিস্টাব্দ', + LL: 'D MMMM YYYY খ্রিস্টাব্দ', + LLL: 'D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়', + LLLL: 'dddd, D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়' + }, + meridiem: function meridiem(hour) { + return ( + /* eslint-disable no-nested-ternary */ + hour < 4 ? 'রাত' : hour < 6 ? 'ভোর' : hour < 12 ? 'সকাল' : hour < 15 ? 'দুপুর' : hour < 18 ? 'বিকাল' : hour < 20 ? 'সন্ধ্যা' : 'রাত' + ); + }, + relativeTime: { + future: '%s পরে', + past: '%s আগে', + s: 'কয়েক সেকেন্ড', + m: 'এক মিনিট', + mm: '%d মিনিট', + h: 'এক ঘন্টা', + hh: '%d ঘন্টা', + d: 'এক দিন', + dd: '%d দিন', + M: 'এক মাস', + MM: '%d মাস', + y: 'এক বছর', + yy: '%d বছর' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bn.js new file mode 100644 index 0000000..25fc170 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bn.js @@ -0,0 +1,72 @@ +// Bengali [bn] +import dayjs from '../index'; +var symbolMap = { + 1: '১', + 2: '২', + 3: '৩', + 4: '৪', + 5: '৫', + 6: '৬', + 7: '৭', + 8: '৮', + 9: '৯', + 0: '০' +}; +var numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' +}; +var locale = { + name: 'bn', + weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), + months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), + weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'), + preparse: function preparse(string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function postformat(string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm সময়', + LTS: 'A h:mm:ss সময়', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm সময়', + LLLL: 'dddd, D MMMM YYYY, A h:mm সময়' + }, + relativeTime: { + future: '%s পরে', + past: '%s আগে', + s: 'কয়েক সেকেন্ড', + m: 'এক মিনিট', + mm: '%d মিনিট', + h: 'এক ঘন্টা', + hh: '%d ঘন্টা', + d: 'এক দিন', + dd: '%d দিন', + M: 'এক মাস', + MM: '%d মাস', + y: 'এক বছর', + yy: '%d বছর' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bo.js new file mode 100644 index 0000000..fce3344 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bo.js @@ -0,0 +1,38 @@ +// Tibetan [bo] +import dayjs from '../index'; +var locale = { + name: 'bo', + weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), + weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + weekdaysMin: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + monthsShort: 'ཟླ་དང་པོ_ཟླ་གཉིས་པ_ཟླ་གསུམ་པ_ཟླ་བཞི་པ_ཟླ་ལྔ་པ_ཟླ་དྲུག་པ_ཟླ་བདུན་པ_ཟླ་བརྒྱད་པ_ཟླ་དགུ་པ_ཟླ་བཅུ་པ_ཟླ་བཅུ་གཅིག་པ_ཟླ་བཅུ་གཉིས་པ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm', + LLLL: 'dddd, D MMMM YYYY, A h:mm' + }, + relativeTime: { + future: '%s ལ་', + past: '%s སྔོན་ལ་', + s: 'ཏོག་ཙམ་', + m: 'སྐར་མ་གཅིག་', + mm: 'སྐར་མ་ %d', + h: 'ཆུ་ཚོད་གཅིག་', + hh: 'ཆུ་ཚོད་ %d', + d: 'ཉིན་གཅིག་', + dd: 'ཉིན་ %d', + M: 'ཟླ་བ་གཅིག་', + MM: 'ཟླ་བ་ %d', + y: 'ལོ་གཅིག་', + yy: 'ལོ་ %d' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/br.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/br.js new file mode 100644 index 0000000..d18b4fe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/br.js @@ -0,0 +1,93 @@ +// Breton [br] +import dayjs from '../index'; + +function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + + return number; +} + +function softMutation(text) { + var mutationTable = { + m: 'v', + b: 'v', + d: 'z' + }; + return mutationTable[text.charAt(0)] + text.substring(1); +} + +function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + + return text; +} + +function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + mm: 'munutenn', + MM: 'miz', + dd: 'devezh' + }; + return number + " " + mutation(format[key], number); +} + +function specialMutationForYears(number) { + /* istanbul ignore next line */ + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + " bloaz"; + + default: + return number + " vloaz"; + } +} + +var locale = { + name: 'br', + weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'), + months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), + weekStart: 1, + weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), + weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'h[e]mm A', + LTS: 'h[e]mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D [a viz] MMMM YYYY', + LLL: 'D [a viz] MMMM YYYY h[e]mm A', + LLLL: 'dddd, D [a viz] MMMM YYYY h[e]mm A' + }, + relativeTime: { + future: 'a-benn %s', + past: '%s ʼzo', + s: 'un nebeud segondennoù', + m: 'ur vunutenn', + mm: relativeTimeWithMutation, + h: 'un eur', + hh: '%d eur', + d: 'un devezh', + dd: relativeTimeWithMutation, + M: 'ur miz', + MM: relativeTimeWithMutation, + y: 'ur bloaz', + yy: specialMutationForYears + }, + meridiem: function meridiem(hour) { + return hour < 12 ? 'a.m.' : 'g.m.'; + } // a-raok merenn | goude merenn + +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bs.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bs.js new file mode 100644 index 0000000..328a1fe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/bs.js @@ -0,0 +1,24 @@ +// Bosnian [bs] +import dayjs from '../index'; +var locale = { + name: 'bs', + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), + weekStart: 1, + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ca.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ca.js new file mode 100644 index 0000000..94fc0b9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ca.js @@ -0,0 +1,44 @@ +// Catalan [ca] +import dayjs from '../index'; +var locale = { + name: 'ca', + weekdays: 'Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte'.split('_'), + weekdaysShort: 'Dg._Dl._Dt._Dc._Dj._Dv._Ds.'.split('_'), + weekdaysMin: 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + months: 'Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre'.split('_'), + monthsShort: 'Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.'.split('_'), + weekStart: 1, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + LLL: 'D MMMM [de] YYYY [a les] H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY, H:mm', + llll: 'ddd D MMM YYYY, H:mm' + }, + relativeTime: { + future: 'd\'aquí %s', + past: 'fa %s', + s: 'uns segons', + m: 'un minut', + mm: '%d minuts', + h: 'una hora', + hh: '%d hores', + d: 'un dia', + dd: '%d dies', + M: 'un mes', + MM: '%d mesos', + y: 'un any', + yy: '%d anys' + }, + ordinal: function ordinal(n) { + var ord; + if (n === 1 || n === 3) ord = 'r';else if (n === 2) ord = 'n';else if (n === 4) ord = 't';else ord = 'è'; + return "" + n + ord; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cs.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cs.js new file mode 100644 index 0000000..165b662 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cs.js @@ -0,0 +1,120 @@ +// Czech [cs] +import dayjs from '../index'; + +function plural(n) { + return n > 1 && n < 5 && ~~(n / 10) !== 1; // eslint-disable-line +} +/* eslint-disable */ + + +function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + + switch (key) { + case 's': + // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; + + case 'm': + // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; + + case 'mm': + // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } + + return result + "minutami"; + + case 'h': + // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; + + case 'hh': + // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } + + return result + "hodinami"; + + case 'd': + // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'den' : 'dnem'; + + case 'dd': + // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } + + return result + "dny"; + + case 'M': + // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; + + case 'MM': + // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } + + return result + "m\u011Bs\xEDci"; + + case 'y': + // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokem'; + + case 'yy': + // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } + + return result + "lety"; + } +} +/* eslint-enable */ + + +var locale = { + name: 'cs', + weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), + months: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), + monthsShort: 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), + weekStart: 1, + yearStart: 4, + ordinal: function ordinal(n) { + return n + "."; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', + l: 'D. M. YYYY' + }, + relativeTime: { + future: 'za %s', + past: 'před %s', + s: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cv.js new file mode 100644 index 0000000..7dc41f7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cv.js @@ -0,0 +1,24 @@ +// Chuvash [cv] +import dayjs from '../index'; +var locale = { + name: 'cv', + weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), + months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), + weekStart: 1, + weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cy.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cy.js new file mode 100644 index 0000000..63e6c33 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/cy.js @@ -0,0 +1,39 @@ +// Welsh [cy] +import dayjs from '../index'; +var locale = { + name: 'cy', + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), + weekStart: 1, + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/da.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/da.js new file mode 100644 index 0000000..38fd134 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/da.js @@ -0,0 +1,39 @@ +// Danish [da] +import dayjs from '../index'; +var locale = { + name: 'da', + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'søn._man._tirs._ons._tors._fre._lør.'.split('_'), + weekdaysMin: 'sø._ma._ti._on._to._fr._lø.'.split('_'), + months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.'.split('_'), + weekStart: 1, + ordinal: function ordinal(n) { + return n + "."; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm' + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'få sekunder', + m: 'et minut', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dage', + M: 'en måned', + MM: '%d måneder', + y: 'et år', + yy: '%d år' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de-at.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de-at.js new file mode 100644 index 0000000..e109d97 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de-at.js @@ -0,0 +1,63 @@ +// German (Austria) [de-at] +import dayjs from '../index'; +var texts = { + s: 'ein paar Sekunden', + m: ['eine Minute', 'einer Minute'], + mm: '%d Minuten', + h: ['eine Stunde', 'einer Stunde'], + hh: '%d Stunden', + d: ['ein Tag', 'einem Tag'], + dd: ['%d Tage', '%d Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: ['%d Monate', '%d Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: ['%d Jahre', '%d Jahren'] +}; + +function relativeTimeFormatter(number, withoutSuffix, key) { + var l = texts[key]; + + if (Array.isArray(l)) { + l = l[withoutSuffix ? 0 : 1]; + } + + return l.replace('%d', number); +} + +var locale = { + name: 'de-at', + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + formats: { + LTS: 'HH:mm:ss', + LT: 'HH:mm', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: relativeTimeFormatter, + m: relativeTimeFormatter, + mm: relativeTimeFormatter, + h: relativeTimeFormatter, + hh: relativeTimeFormatter, + d: relativeTimeFormatter, + dd: relativeTimeFormatter, + M: relativeTimeFormatter, + MM: relativeTimeFormatter, + y: relativeTimeFormatter, + yy: relativeTimeFormatter + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de-ch.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de-ch.js new file mode 100644 index 0000000..1ffbbf7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de-ch.js @@ -0,0 +1,63 @@ +// German (Switzerland) [de-ch] +import dayjs from '../index'; +var texts = { + s: 'ein paar Sekunden', + m: ['eine Minute', 'einer Minute'], + mm: '%d Minuten', + h: ['eine Stunde', 'einer Stunde'], + hh: '%d Stunden', + d: ['ein Tag', 'einem Tag'], + dd: ['%d Tage', '%d Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: ['%d Monate', '%d Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: ['%d Jahre', '%d Jahren'] +}; + +function relativeTimeFormatter(number, withoutSuffix, key) { + var l = texts[key]; + + if (Array.isArray(l)) { + l = l[withoutSuffix ? 0 : 1]; + } + + return l.replace('%d', number); +} + +var locale = { + name: 'de-ch', + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: relativeTimeFormatter, + m: relativeTimeFormatter, + mm: relativeTimeFormatter, + h: relativeTimeFormatter, + hh: relativeTimeFormatter, + d: relativeTimeFormatter, + dd: relativeTimeFormatter, + M: relativeTimeFormatter, + MM: relativeTimeFormatter, + y: relativeTimeFormatter, + yy: relativeTimeFormatter + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de.js new file mode 100644 index 0000000..8ccd483 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/de.js @@ -0,0 +1,64 @@ +// German [de] +import dayjs from '../index'; +var texts = { + s: 'ein paar Sekunden', + m: ['eine Minute', 'einer Minute'], + mm: '%d Minuten', + h: ['eine Stunde', 'einer Stunde'], + hh: '%d Stunden', + d: ['ein Tag', 'einem Tag'], + dd: ['%d Tage', '%d Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: ['%d Monate', '%d Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: ['%d Jahre', '%d Jahren'] +}; + +function relativeTimeFormatter(number, withoutSuffix, key) { + var l = texts[key]; + + if (Array.isArray(l)) { + l = l[withoutSuffix ? 0 : 1]; + } + + return l.replace('%d', number); +} + +var locale = { + name: 'de', + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + yearStart: 4, + formats: { + LTS: 'HH:mm:ss', + LT: 'HH:mm', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: relativeTimeFormatter, + m: relativeTimeFormatter, + mm: relativeTimeFormatter, + h: relativeTimeFormatter, + hh: relativeTimeFormatter, + d: relativeTimeFormatter, + dd: relativeTimeFormatter, + M: relativeTimeFormatter, + MM: relativeTimeFormatter, + y: relativeTimeFormatter, + yy: relativeTimeFormatter + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/dv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/dv.js new file mode 100644 index 0000000..8943fdd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/dv.js @@ -0,0 +1,39 @@ +// Maldivian [dv] +import dayjs from '../index'; +var locale = { + name: 'dv', + weekdays: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'), + months: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'), + weekStart: 7, + weekdaysShort: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'), + monthsShort: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'), + weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/M/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'ތެރޭގައި %s', + past: 'ކުރިން %s', + s: 'ސިކުންތުކޮޅެއް', + m: 'މިނިޓެއް', + mm: 'މިނިޓު %d', + h: 'ގަޑިއިރެއް', + hh: 'ގަޑިއިރު %d', + d: 'ދުވަހެއް', + dd: 'ދުވަސް %d', + M: 'މަހެއް', + MM: 'މަސް %d', + y: 'އަހަރެއް', + yy: 'އަހަރު %d' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/el.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/el.js new file mode 100644 index 0000000..2aa9917 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/el.js @@ -0,0 +1,39 @@ +// Greek [el] +import dayjs from '../index'; +var locale = { + name: 'el', + weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), + weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + months: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), + monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Νοε_Δεκ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + weekStart: 1, + relativeTime: { + future: 'σε %s', + past: 'πριν %s', + s: 'μερικά δευτερόλεπτα', + m: 'ένα λεπτό', + mm: '%d λεπτά', + h: 'μία ώρα', + hh: '%d ώρες', + d: 'μία μέρα', + dd: '%d μέρες', + M: 'ένα μήνα', + MM: '%d μήνες', + y: 'ένα χρόνο', + yy: '%d χρόνια' + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-au.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-au.js new file mode 100644 index 0000000..f9dde03 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-au.js @@ -0,0 +1,39 @@ +// English (Australia) [en-au] +import dayjs from '../index'; +var locale = { + name: 'en-au', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + weekStart: 1, + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A' + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-ca.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-ca.js new file mode 100644 index 0000000..8e416c9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-ca.js @@ -0,0 +1,38 @@ +// English (Canada) [en-ca] +import dayjs from '../index'; +var locale = { + name: 'en-ca', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'YYYY-MM-DD', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY h:mm A', + LLLL: 'dddd, MMMM D, YYYY h:mm A' + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-gb.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-gb.js new file mode 100644 index 0000000..f979b44 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-gb.js @@ -0,0 +1,42 @@ +// English (United Kingdom) [en-gb] +import dayjs from '../index'; +var locale = { + name: 'en-gb', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekStart: 1, + yearStart: 4, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + ordinal: function ordinal(n) { + var s = ['th', 'st', 'nd', 'rd']; + var v = n % 100; + return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-ie.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-ie.js new file mode 100644 index 0000000..8098d2f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-ie.js @@ -0,0 +1,39 @@ +// English (Ireland) [en-ie] +import dayjs from '../index'; +var locale = { + name: 'en-ie', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + weekStart: 1, + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-il.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-il.js new file mode 100644 index 0000000..56c241a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-il.js @@ -0,0 +1,38 @@ +// English (Israel) [en-il] +import dayjs from '../index'; +var locale = { + name: 'en-il', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-in.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-in.js new file mode 100644 index 0000000..7ccb206 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-in.js @@ -0,0 +1,42 @@ +// English (India) [en-in] +import dayjs from '../index'; +var locale = { + name: 'en-in', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekStart: 1, + yearStart: 4, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + ordinal: function ordinal(n) { + var s = ['th', 'st', 'nd', 'rd']; + var v = n % 100; + return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-nz.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-nz.js new file mode 100644 index 0000000..08c562e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-nz.js @@ -0,0 +1,41 @@ +// English (New Zealand) [en-nz] +import dayjs from '../index'; +var locale = { + name: 'en-nz', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + weekStart: 1, + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + ordinal: function ordinal(n) { + var s = ['th', 'st', 'nd', 'rd']; + var v = n % 100; + return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]"; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A' + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-sg.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-sg.js new file mode 100644 index 0000000..3c5edce --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-sg.js @@ -0,0 +1,39 @@ +// English (Singapore) [en-sg] +import dayjs from '../index'; +var locale = { + name: 'en-sg', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + weekStart: 1, + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-tt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-tt.js new file mode 100644 index 0000000..ef47eeb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en-tt.js @@ -0,0 +1,42 @@ +// English (Trinidad & Tobago) [en-tt] +import dayjs from '../index'; +var locale = { + name: 'en-tt', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekStart: 1, + yearStart: 4, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + ordinal: function ordinal(n) { + var s = ['th', 'st', 'nd', 'rd']; + var v = n % 100; + return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en.js new file mode 100644 index 0000000..cc2ca40 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/en.js @@ -0,0 +1,7 @@ +// English [en] +// We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale +export default { + name: 'en', + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_') +}; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/eo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/eo.js new file mode 100644 index 0000000..e62599a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/eo.js @@ -0,0 +1,39 @@ +// Esperanto [eo] +import dayjs from '../index'; +var locale = { + name: 'eo', + weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), + months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), + weekStart: 1, + weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), + weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D[-a de] MMMM, YYYY', + LLL: 'D[-a de] MMMM, YYYY HH:mm', + LLLL: 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' + }, + relativeTime: { + future: 'post %s', + past: 'antaŭ %s', + s: 'sekundoj', + m: 'minuto', + mm: '%d minutoj', + h: 'horo', + hh: '%d horoj', + d: 'tago', + dd: '%d tagoj', + M: 'monato', + MM: '%d monatoj', + y: 'jaro', + yy: '%d jaroj' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-do.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-do.js new file mode 100644 index 0000000..09410cf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-do.js @@ -0,0 +1,39 @@ +// Spanish (Dominican Republic) [es-do] +import dayjs from '../index'; +var locale = { + name: 'es-do', + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + weekStart: 1, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años' + }, + ordinal: function ordinal(n) { + return n + "\xBA"; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-mx.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-mx.js new file mode 100644 index 0000000..0207f83 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-mx.js @@ -0,0 +1,38 @@ +// Spanish (Mexico) [es-mx] +import dayjs from '../index'; +var locale = { + name: 'es-mx', + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años' + }, + ordinal: function ordinal(n) { + return n + "\xBA"; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-pr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-pr.js new file mode 100644 index 0000000..5edc359 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-pr.js @@ -0,0 +1,39 @@ +// Spanish (Puerto Rico) [es-PR] +import dayjs from '../index'; +var locale = { + name: 'es-pr', + monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + weekStart: 1, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'MM/DD/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A' + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años' + }, + ordinal: function ordinal(n) { + return n + "\xBA"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-us.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-us.js new file mode 100644 index 0000000..f9b01a0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es-us.js @@ -0,0 +1,38 @@ +// Spanish (United States) [es-us] +import dayjs from '../index'; +var locale = { + name: 'es-us', + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años' + }, + ordinal: function ordinal(n) { + return n + "\xBA"; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'MM/DD/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es.js new file mode 100644 index 0000000..84bdfbe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/es.js @@ -0,0 +1,39 @@ +// Spanish [es] +import dayjs from '../index'; +var locale = { + name: 'es', + monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + weekStart: 1, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años' + }, + ordinal: function ordinal(n) { + return n + "\xBA"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/et.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/et.js new file mode 100644 index 0000000..7f7c5ff --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/et.js @@ -0,0 +1,65 @@ +// Estonian [et] +import dayjs from '../index'; + +function relativeTimeWithTense(number, withoutSuffix, key, isFuture) { + var format = { + s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + m: ['ühe minuti', 'üks minut'], + mm: ['%d minuti', '%d minutit'], + h: ['ühe tunni', 'tund aega', 'üks tund'], + hh: ['%d tunni', '%d tundi'], + d: ['ühe päeva', 'üks päev'], + M: ['kuu aja', 'kuu aega', 'üks kuu'], + MM: ['%d kuu', '%d kuud'], + y: ['ühe aasta', 'aasta', 'üks aasta'], + yy: ['%d aasta', '%d aastat'] + }; + + if (withoutSuffix) { + return (format[key][2] ? format[key][2] : format[key][1]).replace('%d', number); + } + + return (isFuture ? format[key][0] : format[key][1]).replace('%d', number); +} + +var locale = { + name: 'et', + // Estonian + weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + // Note weekdays are not capitalized in Estonian + weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), + // There is no short form of weekdays in Estonian except this 1 letter format so it is used for both 'weekdaysShort' and 'weekdaysMin' + weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), + months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + // Note month names are not capitalized in Estonian + monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + relativeTime: { + future: '%s pärast', + past: '%s tagasi', + s: relativeTimeWithTense, + m: relativeTimeWithTense, + mm: relativeTimeWithTense, + h: relativeTimeWithTense, + hh: relativeTimeWithTense, + d: relativeTimeWithTense, + dd: '%d päeva', + M: relativeTimeWithTense, + MM: relativeTimeWithTense, + y: relativeTimeWithTense, + yy: relativeTimeWithTense + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/eu.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/eu.js new file mode 100644 index 0000000..5cb73d0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/eu.js @@ -0,0 +1,43 @@ +// Basque [eu] +import dayjs from '../index'; +var locale = { + name: 'eu', + weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), + months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), + weekStart: 1, + weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), + monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), + weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY[ko] MMMM[ren] D[a]', + LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l: 'YYYY-M-D', + ll: 'YYYY[ko] MMM D[a]', + lll: 'YYYY[ko] MMM D[a] HH:mm', + llll: 'ddd, YYYY[ko] MMM D[a] HH:mm' + }, + relativeTime: { + future: '%s barru', + past: 'duela %s', + s: 'segundo batzuk', + m: 'minutu bat', + mm: '%d minutu', + h: 'ordu bat', + hh: '%d ordu', + d: 'egun bat', + dd: '%d egun', + M: 'hilabete bat', + MM: '%d hilabete', + y: 'urte bat', + yy: '%d urte' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fa.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fa.js new file mode 100644 index 0000000..089459e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fa.js @@ -0,0 +1,39 @@ +// Persian [fa] +import dayjs from '../index'; +var locale = { + name: 'fa', + weekdays: 'یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه'.split('_'), + weekdaysShort: "\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647_\u062F\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200C\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647_\u062C\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split('_'), + weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'), + weekStart: 6, + months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'در %s', + past: '%s پیش', + s: 'چند ثانیه', + m: 'یک دقیقه', + mm: '%d دقیقه', + h: 'یک ساعت', + hh: '%d ساعت', + d: 'یک روز', + dd: '%d روز', + M: 'یک ماه', + MM: '%d ماه', + y: 'یک سال', + yy: '%d سال' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fi.js new file mode 100644 index 0000000..1ded894 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fi.js @@ -0,0 +1,88 @@ +// Finnish [fi] +import dayjs from '../index'; + +function relativeTimeFormatter(number, withoutSuffix, key, isFuture) { + var past = { + s: 'muutama sekunti', + m: 'minuutti', + mm: '%d minuuttia', + h: 'tunti', + hh: '%d tuntia', + d: 'päivä', + dd: '%d päivää', + M: 'kuukausi', + MM: '%d kuukautta', + y: 'vuosi', + yy: '%d vuotta', + numbers: 'nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän'.split('_') + }; + var future = { + s: 'muutaman sekunnin', + m: 'minuutin', + mm: '%d minuutin', + h: 'tunnin', + hh: '%d tunnin', + d: 'päivän', + dd: '%d päivän', + M: 'kuukauden', + MM: '%d kuukauden', + y: 'vuoden', + yy: '%d vuoden', + numbers: 'nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän'.split('_') + }; + var words = isFuture && !withoutSuffix ? future : past; + var result = words[key]; + + if (number < 10) { + return result.replace('%d', words.numbers[number]); + } + + return result.replace('%d', number); +} + +var locale = { + name: 'fi', + // Finnish + weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), + // Note weekdays are not capitalized in Finnish + weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), + // There is no short form of weekdays in Finnish except this 2 letter format so it is used for both 'weekdaysShort' and 'weekdaysMin' + weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), + months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), + // Note month names are not capitalized in Finnish + monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + yearStart: 4, + relativeTime: { + future: '%s päästä', + past: '%s sitten', + s: relativeTimeFormatter, + m: relativeTimeFormatter, + mm: relativeTimeFormatter, + h: relativeTimeFormatter, + hh: relativeTimeFormatter, + d: relativeTimeFormatter, + dd: relativeTimeFormatter, + M: relativeTimeFormatter, + MM: relativeTimeFormatter, + y: relativeTimeFormatter, + yy: relativeTimeFormatter + }, + formats: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM[ta] YYYY', + LLL: 'D. MMMM[ta] YYYY, [klo] HH.mm', + LLLL: 'dddd, D. MMMM[ta] YYYY, [klo] HH.mm', + l: 'D.M.YYYY', + ll: 'D. MMM YYYY', + lll: 'D. MMM YYYY, [klo] HH.mm', + llll: 'ddd, D. MMM YYYY, [klo] HH.mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fo.js new file mode 100644 index 0000000..07c3761 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fo.js @@ -0,0 +1,39 @@ +// Faroese [fo] +import dayjs from '../index'; +var locale = { + name: 'fo', + weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), + months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + weekStart: 1, + weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D. MMMM, YYYY HH:mm' + }, + relativeTime: { + future: 'um %s', + past: '%s síðani', + s: 'fá sekund', + m: 'ein minuttur', + mm: '%d minuttir', + h: 'ein tími', + hh: '%d tímar', + d: 'ein dagur', + dd: '%d dagar', + M: 'ein mánaður', + MM: '%d mánaðir', + y: 'eitt ár', + yy: '%d ár' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr-ca.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr-ca.js new file mode 100644 index 0000000..688d695 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr-ca.js @@ -0,0 +1,38 @@ +// French (Canada) [fr-ca] +import dayjs from '../index'; +var locale = { + name: 'fr-ca', + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr-ch.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr-ch.js new file mode 100644 index 0000000..593dba8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr-ch.js @@ -0,0 +1,39 @@ +// French (Switzerland) [fr-ch] +import dayjs from '../index'; +var locale = { + name: 'fr-ch', + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + weekStart: 1, + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr.js new file mode 100644 index 0000000..b31c11d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fr.js @@ -0,0 +1,41 @@ +// French [fr] +import dayjs from '../index'; +var locale = { + name: 'fr', + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekStart: 1, + yearStart: 4, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans' + }, + ordinal: function ordinal(n) { + var o = n === 1 ? 'er' : ''; + return "" + n + o; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fy.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fy.js new file mode 100644 index 0000000..4b9f9de --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/fy.js @@ -0,0 +1,39 @@ +// Frisian [fy] +import dayjs from '../index'; +var locale = { + name: 'fy', + weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), + months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort: 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), + weekStart: 1, + weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'oer %s', + past: '%s lyn', + s: 'in pear sekonden', + m: 'ien minút', + mm: '%d minuten', + h: 'ien oere', + hh: '%d oeren', + d: 'ien dei', + dd: '%d dagen', + M: 'ien moanne', + MM: '%d moannen', + y: 'ien jier', + yy: '%d jierren' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ga.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ga.js new file mode 100644 index 0000000..8cdfa9f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ga.js @@ -0,0 +1,39 @@ +// Irish or Irish Gaelic [ga] +import dayjs from '../index'; +var locale = { + name: 'ga', + weekdays: 'Dé Domhnaigh_Dé Luain_Dé Máirt_Dé Céadaoin_Déardaoin_Dé hAoine_Dé Satharn'.split('_'), + months: 'Eanáir_Feabhra_Márta_Aibreán_Bealtaine_Méitheamh_Iúil_Lúnasa_Meán Fómhair_Deaireadh Fómhair_Samhain_Nollaig'.split('_'), + weekStart: 1, + weekdaysShort: 'Dom_Lua_Mái_Céa_Déa_hAo_Sat'.split('_'), + monthsShort: 'Eaná_Feab_Márt_Aibr_Beal_Méit_Iúil_Lúna_Meán_Deai_Samh_Noll'.split('_'), + weekdaysMin: 'Do_Lu_Má_Ce_Dé_hA_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'i %s', + past: '%s ó shin', + s: 'cúpla soicind', + m: 'nóiméad', + mm: '%d nóiméad', + h: 'uair an chloig', + hh: '%d uair an chloig', + d: 'lá', + dd: '%d lá', + M: 'mí', + MM: '%d mí', + y: 'bliain', + yy: '%d bliain' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gd.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gd.js new file mode 100644 index 0000000..fcf62cd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gd.js @@ -0,0 +1,39 @@ +// Scottish Gaelic [gd] +import dayjs from '../index'; +var locale = { + name: 'gd', + weekdays: 'Didòmhnaich_Diluain_Dimàirt_Diciadain_Diardaoin_Dihaoine_Disathairne'.split('_'), + months: 'Am Faoilleach_An Gearran_Am Màrt_An Giblean_An Cèitean_An t-Ògmhios_An t-Iuchar_An Lùnastal_An t-Sultain_An Dàmhair_An t-Samhain_An Dùbhlachd'.split('_'), + weekStart: 1, + weekdaysShort: 'Did_Dil_Dim_Dic_Dia_Dih_Dis'.split('_'), + monthsShort: 'Faoi_Gear_Màrt_Gibl_Cèit_Ògmh_Iuch_Lùn_Sult_Dàmh_Samh_Dùbh'.split('_'), + weekdaysMin: 'Dò_Lu_Mà_Ci_Ar_Ha_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'ann an %s', + past: 'bho chionn %s', + s: 'beagan diogan', + m: 'mionaid', + mm: '%d mionaidean', + h: 'uair', + hh: '%d uairean', + d: 'latha', + dd: '%d latha', + M: 'mìos', + MM: '%d mìosan', + y: 'bliadhna', + yy: '%d bliadhna' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gl.js new file mode 100644 index 0000000..23d687f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gl.js @@ -0,0 +1,39 @@ +// Galician [gl] +import dayjs from '../index'; +var locale = { + name: 'gl', + weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), + weekStart: 1, + weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), + weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), + ordinal: function ordinal(n) { + return n + "\xBA"; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + relativeTime: { + future: 'en %s', + past: 'fai %s', + s: 'uns segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'unha hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un ano', + yy: '%d anos' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gom-latn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gom-latn.js new file mode 100644 index 0000000..d621f5b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gom-latn.js @@ -0,0 +1,25 @@ +// Konkani Latin script [gom-latn] +import dayjs from '../index'; +var locale = { + name: 'gom-latn', + weekdays: "Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split('_'), + months: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), + weekStart: 1, + weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), + weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm [vazta]', + LTS: 'A h:mm:ss [vazta]', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY A h:mm [vazta]', + LLLL: 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gu.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gu.js new file mode 100644 index 0000000..e05f44b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/gu.js @@ -0,0 +1,38 @@ +// Gujarati [gu] +import dayjs from '../index'; +var locale = { + name: 'gu', + weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'), + months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'), + weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), + monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'), + weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm વાગ્યે', + LTS: 'A h:mm:ss વાગ્યે', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm વાગ્યે', + LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે' + }, + relativeTime: { + future: '%s મા', + past: '%s પેહલા', + s: 'અમુક પળો', + m: 'એક મિનિટ', + mm: '%d મિનિટ', + h: 'એક કલાક', + hh: '%d કલાક', + d: 'એક દિવસ', + dd: '%d દિવસ', + M: 'એક મહિનો', + MM: '%d મહિનો', + y: 'એક વર્ષ', + yy: '%d વર્ષ' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/he.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/he.js new file mode 100644 index 0000000..a8868ff --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/he.js @@ -0,0 +1,78 @@ +// Hebrew [he] +import dayjs from '../index'; +var texts = { + s: 'מספר שניות', + ss: '%d שניות', + m: 'דקה', + mm: '%d דקות', + h: 'שעה', + hh: '%d שעות', + hh2: 'שעתיים', + d: 'יום', + dd: '%d ימים', + dd2: 'יומיים', + M: 'חודש', + MM: '%d חודשים', + MM2: 'חודשיים', + y: 'שנה', + yy: '%d שנים', + yy2: 'שנתיים' +}; + +function relativeTimeFormatter(number, withoutSuffix, key) { + var text = texts[key + (number === 2 ? '2' : '')] || texts[key]; + return text.replace('%d', number); +} + +var locale = { + name: 'he', + weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin: 'א׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳'.split('_'), + months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), + monthsShort: 'ינו_פבר_מרץ_אפר_מאי_יונ_יול_אוג_ספט_אוק_נוב_דצמ'.split('_'), + relativeTime: { + future: 'בעוד %s', + past: 'לפני %s', + s: relativeTimeFormatter, + m: relativeTimeFormatter, + mm: relativeTimeFormatter, + h: relativeTimeFormatter, + hh: relativeTimeFormatter, + d: relativeTimeFormatter, + dd: relativeTimeFormatter, + M: relativeTimeFormatter, + MM: relativeTimeFormatter, + y: relativeTimeFormatter, + yy: relativeTimeFormatter + }, + ordinal: function ordinal(n) { + return n; + }, + format: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [ב]MMMM YYYY', + LLL: 'D [ב]MMMM YYYY HH:mm', + LLLL: 'dddd, D [ב]MMMM YYYY HH:mm', + l: 'D/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [ב]MMMM YYYY', + LLL: 'D [ב]MMMM YYYY HH:mm', + LLLL: 'dddd, D [ב]MMMM YYYY HH:mm', + l: 'D/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hi.js new file mode 100644 index 0000000..e877ed6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hi.js @@ -0,0 +1,38 @@ +// Hindi [hi] +import dayjs from '../index'; +var locale = { + name: 'hi', + weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), + weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm बजे', + LTS: 'A h:mm:ss बजे', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm बजे', + LLLL: 'dddd, D MMMM YYYY, A h:mm बजे' + }, + relativeTime: { + future: '%s में', + past: '%s पहले', + s: 'कुछ ही क्षण', + m: 'एक मिनट', + mm: '%d मिनट', + h: 'एक घंटा', + hh: '%d घंटे', + d: 'एक दिन', + dd: '%d दिन', + M: 'एक महीने', + MM: '%d महीने', + y: 'एक वर्ष', + yy: '%d वर्ष' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hr.js new file mode 100644 index 0000000..a760fe3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hr.js @@ -0,0 +1,53 @@ +// Croatian [hr] +import dayjs from '../index'; +var monthFormat = 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'); +var monthStandalone = 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'); +var MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/; + +var months = function months(dayjsInstance, format) { + if (MONTHS_IN_FORMAT.test(format)) { + return monthFormat[dayjsInstance.month()]; + } + + return monthStandalone[dayjsInstance.month()]; +}; + +months.s = monthStandalone; +months.f = monthFormat; +var locale = { + name: 'hr', + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + months: months, + monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + weekStart: 1, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'sekunda', + m: 'minuta', + mm: '%d minuta', + h: 'sat', + hh: '%d sati', + d: 'dan', + dd: '%d dana', + M: 'mjesec', + MM: '%d mjeseci', + y: 'godina', + yy: '%d godine' + }, + ordinal: function ordinal(n) { + return n + "."; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ht.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ht.js new file mode 100644 index 0000000..896739e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ht.js @@ -0,0 +1,38 @@ +// Haitian Creole (Haiti) [ht] +import dayjs from '../index'; +var locale = { + name: 'ht', + weekdays: 'dimanch_lendi_madi_mèkredi_jedi_vandredi_samdi'.split('_'), + months: 'janvye_fevriye_mas_avril_me_jen_jiyè_out_septanm_oktòb_novanm_desanm'.split('_'), + weekdaysShort: 'dim._len._mad._mèk._jed._van._sam.'.split('_'), + monthsShort: 'jan._fev._mas_avr._me_jen_jiyè._out_sept._okt._nov._des.'.split('_'), + weekdaysMin: 'di_le_ma_mè_je_va_sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'nan %s', + past: 'sa gen %s', + s: 'kèk segond', + m: 'yon minit', + mm: '%d minit', + h: 'inèdtan', + hh: '%d zè', + d: 'yon jou', + dd: '%d jou', + M: 'yon mwa', + MM: '%d mwa', + y: 'yon ane', + yy: '%d ane' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hu.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hu.js new file mode 100644 index 0000000..18df6e4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hu.js @@ -0,0 +1,61 @@ +// Hungarian [hu] +import dayjs from '../index'; +var locale = { + name: 'hu', + weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), + months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), + monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + relativeTime: { + future: '%s múlva', + past: '%s', + s: function s(_, _s, ___, isFuture) { + return "n\xE9h\xE1ny m\xE1sodperc" + (isFuture || _s ? '' : 'e'); + }, + m: function m(_, s, ___, isFuture) { + return "egy perc" + (isFuture || s ? '' : 'e'); + }, + mm: function mm(n, s, ___, isFuture) { + return n + " perc" + (isFuture || s ? '' : 'e'); + }, + h: function h(_, s, ___, isFuture) { + return "egy " + (isFuture || s ? 'óra' : 'órája'); + }, + hh: function hh(n, s, ___, isFuture) { + return n + " " + (isFuture || s ? 'óra' : 'órája'); + }, + d: function d(_, s, ___, isFuture) { + return "egy " + (isFuture || s ? 'nap' : 'napja'); + }, + dd: function dd(n, s, ___, isFuture) { + return n + " " + (isFuture || s ? 'nap' : 'napja'); + }, + M: function M(_, s, ___, isFuture) { + return "egy " + (isFuture || s ? 'hónap' : 'hónapja'); + }, + MM: function MM(n, s, ___, isFuture) { + return n + " " + (isFuture || s ? 'hónap' : 'hónapja'); + }, + y: function y(_, s, ___, isFuture) { + return "egy " + (isFuture || s ? 'év' : 'éve'); + }, + yy: function yy(n, s, ___, isFuture) { + return n + " " + (isFuture || s ? 'év' : 'éve'); + } + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY. MMMM D.', + LLL: 'YYYY. MMMM D. H:mm', + LLLL: 'YYYY. MMMM D., dddd H:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hy-am.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hy-am.js new file mode 100644 index 0000000..937f2be --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/hy-am.js @@ -0,0 +1,39 @@ +// Armenian [hy-am] +import dayjs from '../index'; +var locale = { + name: 'hy-am', + weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), + months: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), + weekStart: 1, + weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY թ.', + LLL: 'D MMMM YYYY թ., HH:mm', + LLLL: 'dddd, D MMMM YYYY թ., HH:mm' + }, + relativeTime: { + future: '%s հետո', + past: '%s առաջ', + s: 'մի քանի վայրկյան', + m: 'րոպե', + mm: '%d րոպե', + h: 'ժամ', + hh: '%d ժամ', + d: 'օր', + dd: '%d օր', + M: 'ամիս', + MM: '%d ամիս', + y: 'տարի', + yy: '%d տարի' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/id.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/id.js new file mode 100644 index 0000000..f743a12 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/id.js @@ -0,0 +1,39 @@ +// Indonesian [id] +import dayjs from '../index'; +var locale = { + name: 'id', + weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + weekStart: 1, + formats: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lalu', + s: 'beberapa detik', + m: 'semenit', + mm: '%d menit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun' + }, + ordinal: function ordinal(n) { + return n + "."; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/index.d.ts new file mode 100644 index 0000000..beb0d36 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/index.d.ts @@ -0,0 +1,11 @@ +/// + +declare module 'dayjs/esm/locale/*' { + namespace locale { + interface Locale extends ILocale {} + } + + const locale: locale.Locale + + export = locale +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/is.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/is.js new file mode 100644 index 0000000..22d8121 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/is.js @@ -0,0 +1,68 @@ +// Icelandic [is] +import dayjs from '../index'; +var texts = { + s: ['nokkrar sekúndur', 'nokkrar sekúndur', 'nokkrum sekúndum'], + m: ['mínúta', 'mínútu', 'mínútu'], + mm: ['mínútur', 'mínútur', 'mínútum'], + h: ['klukkustund', 'klukkustund', 'klukkustund'], + hh: ['klukkustundir', 'klukkustundir', 'klukkustundum'], + d: ['dagur', 'dag', 'degi'], + dd: ['dagar', 'daga', 'dögum'], + M: ['mánuður', 'mánuð', 'mánuði'], + MM: ['mánuðir', 'mánuði', 'mánuðum'], + y: ['ár', 'ár', 'ári'], + yy: ['ár', 'ár', 'árum'] +}; + +function resolveTemplate(key, number, isFuture, withoutSuffix) { + var suffixIndex = isFuture ? 1 : 2; + var index = withoutSuffix ? 0 : suffixIndex; + var keyShouldBeSingular = key.length === 2 && number % 10 === 1; + var correctedKey = keyShouldBeSingular ? key[0] : key; + var unitText = texts[correctedKey]; + var text = unitText[index]; + return key.length === 1 ? text : "%d " + text; +} + +function relativeTimeFormatter(number, withoutSuffix, key, isFuture) { + var template = resolveTemplate(key, number, isFuture, withoutSuffix); + return template.replace('%d', number); +} + +var locale = { + name: 'is', + weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), + months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), + weekStart: 1, + weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm' + }, + relativeTime: { + future: 'eftir %s', + past: 'fyrir %s síðan', + s: relativeTimeFormatter, + m: relativeTimeFormatter, + mm: relativeTimeFormatter, + h: relativeTimeFormatter, + hh: relativeTimeFormatter, + d: relativeTimeFormatter, + dd: relativeTimeFormatter, + M: relativeTimeFormatter, + MM: relativeTimeFormatter, + y: relativeTimeFormatter, + yy: relativeTimeFormatter + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/it-ch.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/it-ch.js new file mode 100644 index 0000000..cfbb94d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/it-ch.js @@ -0,0 +1,39 @@ +// Italian (Switzerland) [it-ch] +import dayjs from '../index'; +var locale = { + name: 'it-ch', + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), + weekStart: 1, + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'tra %s', + past: '%s fa', + s: 'alcuni secondi', + m: 'un minuto', + mm: '%d minuti', + h: 'un\'ora', + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/it.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/it.js new file mode 100644 index 0000000..e8d2490 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/it.js @@ -0,0 +1,39 @@ +// Italian [it] +import dayjs from '../index'; +var locale = { + name: 'it', + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), + weekStart: 1, + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'tra %s', + past: '%s fa', + s: 'qualche secondo', + m: 'un minuto', + mm: '%d minuti', + h: 'un\' ora', + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni' + }, + ordinal: function ordinal(n) { + return n + "\xBA"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ja.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ja.js new file mode 100644 index 0000000..6568e13 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ja.js @@ -0,0 +1,45 @@ +// Japanese [ja] +import dayjs from '../index'; +var locale = { + name: 'ja', + weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort: '日_月_火_水_木_金_土'.split('_'), + weekdaysMin: '日_月_火_水_木_金_土'.split('_'), + months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + ordinal: function ordinal(n) { + return n + "\u65E5"; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日 dddd HH:mm', + l: 'YYYY/MM/DD', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日(ddd) HH:mm' + }, + meridiem: function meridiem(hour) { + return hour < 12 ? '午前' : '午後'; + }, + relativeTime: { + future: '%s後', + past: '%s前', + s: '数秒', + m: '1分', + mm: '%d分', + h: '1時間', + hh: '%d時間', + d: '1日', + dd: '%d日', + M: '1ヶ月', + MM: '%dヶ月', + y: '1年', + yy: '%d年' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/jv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/jv.js new file mode 100644 index 0000000..81a3f66 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/jv.js @@ -0,0 +1,39 @@ +// Javanese [jv] +import dayjs from '../index'; +var locale = { + name: 'jv', + weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + weekStart: 1, + weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + relativeTime: { + future: 'wonten ing %s', + past: '%s ingkang kepengker', + s: 'sawetawis detik', + m: 'setunggal menit', + mm: '%d menit', + h: 'setunggal jam', + hh: '%d jam', + d: 'sedinten', + dd: '%d dinten', + M: 'sewulan', + MM: '%d wulan', + y: 'setaun', + yy: '%d taun' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ka.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ka.js new file mode 100644 index 0000000..381fffa --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ka.js @@ -0,0 +1,39 @@ +// Georgian [ka] +import dayjs from '../index'; +var locale = { + name: 'ka', + weekdays: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekStart: 1, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A' + }, + relativeTime: { + future: '%s შემდეგ', + past: '%s წინ', + s: 'წამი', + m: 'წუთი', + mm: '%d წუთი', + h: 'საათი', + hh: '%d საათის', + d: 'დღეს', + dd: '%d დღის განმავლობაში', + M: 'თვის', + MM: '%d თვის', + y: 'წელი', + yy: '%d წლის' + }, + ordinal: function ordinal(n) { + return n; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/kk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/kk.js new file mode 100644 index 0000000..f2ca045 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/kk.js @@ -0,0 +1,39 @@ +// Kazakh [kk] +import dayjs from '../index'; +var locale = { + name: 'kk', + weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), + weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), + monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekStart: 1, + relativeTime: { + future: '%s ішінде', + past: '%s бұрын', + s: 'бірнеше секунд', + m: 'бір минут', + mm: '%d минут', + h: 'бір сағат', + hh: '%d сағат', + d: 'бір күн', + dd: '%d күн', + M: 'бір ай', + MM: '%d ай', + y: 'бір жыл', + yy: '%d жыл' + }, + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/km.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/km.js new file mode 100644 index 0000000..7fd185b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/km.js @@ -0,0 +1,39 @@ +// Cambodian [km] +import dayjs from '../index'; +var locale = { + name: 'km', + weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + weekStart: 1, + weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), + monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: '%sទៀត', + past: '%sមុន', + s: 'ប៉ុន្មានវិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/kn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/kn.js new file mode 100644 index 0000000..b9ca9b9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/kn.js @@ -0,0 +1,38 @@ +// Kannada [kn] +import dayjs from '../index'; +var locale = { + name: 'kn', + weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), + months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), + weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), + monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'), + weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm', + LLLL: 'dddd, D MMMM YYYY, A h:mm' + }, + relativeTime: { + future: '%s ನಂತರ', + past: '%s ಹಿಂದೆ', + s: 'ಕೆಲವು ಕ್ಷಣಗಳು', + m: 'ಒಂದು ನಿಮಿಷ', + mm: '%d ನಿಮಿಷ', + h: 'ಒಂದು ಗಂಟೆ', + hh: '%d ಗಂಟೆ', + d: 'ಒಂದು ದಿನ', + dd: '%d ದಿನ', + M: 'ಒಂದು ತಿಂಗಳು', + MM: '%d ತಿಂಗಳು', + y: 'ಒಂದು ವರ್ಷ', + yy: '%d ವರ್ಷ' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ko.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ko.js new file mode 100644 index 0000000..1caff27 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ko.js @@ -0,0 +1,45 @@ +// Korean [ko] +import dayjs from '../index'; +var locale = { + name: 'ko', + weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort: '일_월_화_수_목_금_토'.split('_'), + weekdaysMin: '일_월_화_수_목_금_토'.split('_'), + months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY년 MMMM D일', + LLL: 'YYYY년 MMMM D일 A h:mm', + LLLL: 'YYYY년 MMMM D일 dddd A h:mm', + l: 'YYYY.MM.DD.', + ll: 'YYYY년 MMMM D일', + lll: 'YYYY년 MMMM D일 A h:mm', + llll: 'YYYY년 MMMM D일 dddd A h:mm' + }, + meridiem: function meridiem(hour) { + return hour < 12 ? '오전' : '오후'; + }, + relativeTime: { + future: '%s 후', + past: '%s 전', + s: '몇 초', + m: '1분', + mm: '%d분', + h: '한 시간', + hh: '%d시간', + d: '하루', + dd: '%d일', + M: '한 달', + MM: '%d달', + y: '일 년', + yy: '%d년' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ku.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ku.js new file mode 100644 index 0000000..2d90f84 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ku.js @@ -0,0 +1,77 @@ +// Kurdish [ku] +import dayjs from '../index'; +export var englishToArabicNumbersMap = { + 1: '١', + 2: '٢', + 3: '٣', + 4: '٤', + 5: '٥', + 6: '٦', + 7: '٧', + 8: '٨', + 9: '٩', + 0: '٠' +}; +var arabicToEnglishNumbersMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; +var months = ['کانوونی دووەم', 'شوبات', 'ئادار', 'نیسان', 'ئایار', 'حوزەیران', 'تەممووز', 'ئاب', 'ئەیلوول', 'تشرینی یەکەم', 'تشرینی دووەم', 'کانوونی یەکەم']; +var locale = { + name: 'ku', + months: months, + monthsShort: months, + weekdays: 'یەکشەممە_دووشەممە_سێشەممە_چوارشەممە_پێنجشەممە_هەینی_شەممە'.split('_'), + weekdaysShort: 'یەکشەم_دووشەم_سێشەم_چوارشەم_پێنجشەم_هەینی_شەممە'.split('_'), + weekStart: 6, + weekdaysMin: 'ی_د_س_چ_پ_هـ_ش'.split('_'), + preparse: function preparse(string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return arabicToEnglishNumbersMap[match]; + }).replace(/،/g, ','); + }, + postformat: function postformat(string) { + return string.replace(/\d/g, function (match) { + return englishToArabicNumbersMap[match]; + }).replace(/,/g, '،'); + }, + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + meridiem: function meridiem(hour) { + return hour < 12 ? 'پ.ن' : 'د.ن'; + }, + relativeTime: { + future: 'لە %s', + past: '%s', + s: 'چەند چرکەیەک', + m: 'یەک خولەک', + mm: '%d خولەک', + h: 'یەک کاتژمێر', + hh: '%d کاتژمێر', + d: 'یەک ڕۆژ', + dd: '%d ڕۆژ', + M: 'یەک مانگ', + MM: '%d مانگ', + y: 'یەک ساڵ', + yy: '%d ساڵ' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ky.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ky.js new file mode 100644 index 0000000..fd04477 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ky.js @@ -0,0 +1,39 @@ +// Kyrgyz [ky] +import dayjs from '../index'; +var locale = { + name: 'ky', + weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), + months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + weekStart: 1, + weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: '%s ичинде', + past: '%s мурун', + s: 'бирнече секунд', + m: 'бир мүнөт', + mm: '%d мүнөт', + h: 'бир саат', + hh: '%d саат', + d: 'бир күн', + dd: '%d күн', + M: 'бир ай', + MM: '%d ай', + y: 'бир жыл', + yy: '%d жыл' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lb.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lb.js new file mode 100644 index 0000000..21ef4aa --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lb.js @@ -0,0 +1,24 @@ +// Luxembourgish [lb] +import dayjs from '../index'; +var locale = { + name: 'lb', + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + weekStart: 1, + weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'H:mm [Auer]', + LTS: 'H:mm:ss [Auer]', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lo.js new file mode 100644 index 0000000..7732ec4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lo.js @@ -0,0 +1,38 @@ +// Lao [lo] +import dayjs from '../index'; +var locale = { + name: 'lo', + weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'ວັນdddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'ອີກ %s', + past: '%sຜ່ານມາ', + s: 'ບໍ່ເທົ່າໃດວິນາທີ', + m: '1 ນາທີ', + mm: '%d ນາທີ', + h: '1 ຊົ່ວໂມງ', + hh: '%d ຊົ່ວໂມງ', + d: '1 ມື້', + dd: '%d ມື້', + M: '1 ເດືອນ', + MM: '%d ເດືອນ', + y: '1 ປີ', + yy: '%d ປີ' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lt.js new file mode 100644 index 0000000..cb46ca9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lt.js @@ -0,0 +1,70 @@ +// Lithuanian [lt] +import dayjs from '../index'; +var monthFormat = 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'); +var monthStandalone = 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'); // eslint-disable-next-line no-useless-escape + +var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/; + +var months = function months(dayjsInstance, format) { + if (MONTHS_IN_FORMAT.test(format)) { + return monthFormat[dayjsInstance.month()]; + } + + return monthStandalone[dayjsInstance.month()]; +}; + +months.s = monthStandalone; +months.f = monthFormat; +var locale = { + name: 'lt', + weekdays: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), + weekdaysShort: 'sek_pir_ant_tre_ket_pen_šeš'.split('_'), + weekdaysMin: 's_p_a_t_k_pn_š'.split('_'), + months: months, + monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + relativeTime: { + future: 'už %s', + past: 'prieš %s', + s: 'kelias sekundes', + m: 'minutę', + mm: '%d minutes', + h: 'valandą', + hh: '%d valandas', + d: 'dieną', + dd: '%d dienas', + M: 'mėnesį', + MM: '%d mėnesius', + y: 'metus', + yy: '%d metus' + }, + format: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY [m.] MMMM D [d.]', + LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l: 'YYYY-MM-DD', + ll: 'YYYY [m.] MMMM D [d.]', + lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY [m.] MMMM D [d.]', + LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l: 'YYYY-MM-DD', + ll: 'YYYY [m.] MMMM D [d.]', + lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lv.js new file mode 100644 index 0000000..4b18a61 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/lv.js @@ -0,0 +1,39 @@ +// Latvian [lv] +import dayjs from '../index'; +var locale = { + name: 'lv', + weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), + months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), + weekStart: 1, + weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), + monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY.', + LL: 'YYYY. [gada] D. MMMM', + LLL: 'YYYY. [gada] D. MMMM, HH:mm', + LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm' + }, + relativeTime: { + future: 'pēc %s', + past: 'pirms %s', + s: 'dažām sekundēm', + m: 'minūtes', + mm: '%d minūtēm', + h: 'stundas', + hh: '%d stundām', + d: 'dienas', + dd: '%d dienām', + M: 'mēneša', + MM: '%d mēnešiem', + y: 'gada', + yy: '%d gadiem' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/me.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/me.js new file mode 100644 index 0000000..465c0ff --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/me.js @@ -0,0 +1,24 @@ +// Montenegrin [me] +import dayjs from '../index'; +var locale = { + name: 'me', + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), + weekStart: 1, + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mi.js new file mode 100644 index 0000000..3b56f0e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mi.js @@ -0,0 +1,39 @@ +// Maori [mi] +import dayjs from '../index'; +var locale = { + name: 'mi', + weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), + months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), + weekStart: 1, + weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), + weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [i] HH:mm', + LLLL: 'dddd, D MMMM YYYY [i] HH:mm' + }, + relativeTime: { + future: 'i roto i %s', + past: '%s i mua', + s: 'te hēkona ruarua', + m: 'he meneti', + mm: '%d meneti', + h: 'te haora', + hh: '%d haora', + d: 'he ra', + dd: '%d ra', + M: 'he marama', + MM: '%d marama', + y: 'he tau', + yy: '%d tau' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mk.js new file mode 100644 index 0000000..8522c26 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mk.js @@ -0,0 +1,39 @@ +// Macedonian [mk] +import dayjs from '../index'; +var locale = { + name: 'mk', + weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), + months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), + weekStart: 1, + weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'D.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm' + }, + relativeTime: { + future: 'после %s', + past: 'пред %s', + s: 'неколку секунди', + m: 'минута', + mm: '%d минути', + h: 'час', + hh: '%d часа', + d: 'ден', + dd: '%d дена', + M: 'месец', + MM: '%d месеци', + y: 'година', + yy: '%d години' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ml.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ml.js new file mode 100644 index 0000000..bfcc277 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ml.js @@ -0,0 +1,38 @@ +// Malayalam [ml] +import dayjs from '../index'; +var locale = { + name: 'ml', + weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), + months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), + weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm -നു', + LTS: 'A h:mm:ss -നു', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm -നു', + LLLL: 'dddd, D MMMM YYYY, A h:mm -നു' + }, + relativeTime: { + future: '%s കഴിഞ്ഞ്', + past: '%s മുൻപ്', + s: 'അൽപ നിമിഷങ്ങൾ', + m: 'ഒരു മിനിറ്റ്', + mm: '%d മിനിറ്റ്', + h: 'ഒരു മണിക്കൂർ', + hh: '%d മണിക്കൂർ', + d: 'ഒരു ദിവസം', + dd: '%d ദിവസം', + M: 'ഒരു മാസം', + MM: '%d മാസം', + y: 'ഒരു വർഷം', + yy: '%d വർഷം' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mn.js new file mode 100644 index 0000000..d93cae2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mn.js @@ -0,0 +1,38 @@ +// Mongolian [mn] +import dayjs from '../index'; +var locale = { + name: 'mn', + weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), + months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'), + weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), + monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'), + weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY оны MMMMын D', + LLL: 'YYYY оны MMMMын D HH:mm', + LLLL: 'dddd, YYYY оны MMMMын D HH:mm' + }, + relativeTime: { + future: '%s', + past: '%s', + s: 'саяхан', + m: 'м', + mm: '%dм', + h: '1ц', + hh: '%dц', + d: '1ө', + dd: '%dө', + M: '1с', + MM: '%dс', + y: '1ж', + yy: '%dж' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mr.js new file mode 100644 index 0000000..9eac8a7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mr.js @@ -0,0 +1,23 @@ +// Marathi [mr] +import dayjs from '../index'; +var locale = { + name: 'mr', + weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), + weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm वाजता', + LTS: 'A h:mm:ss वाजता', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm वाजता', + LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ms-my.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ms-my.js new file mode 100644 index 0000000..5138219 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ms-my.js @@ -0,0 +1,39 @@ +// Malay [ms-my] +import dayjs from '../index'; +var locale = { + name: 'ms-my', + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + weekStart: 1, + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ms.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ms.js new file mode 100644 index 0000000..86349f3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ms.js @@ -0,0 +1,39 @@ +// Malay [ms] +import dayjs from '../index'; +var locale = { + name: 'ms', + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekStart: 1, + formats: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH.mm', + LLLL: 'dddd, D MMMM YYYY HH.mm' + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun' + }, + ordinal: function ordinal(n) { + return n + "."; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mt.js new file mode 100644 index 0000000..9c90953 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/mt.js @@ -0,0 +1,39 @@ +// Maltese (Malta) [mt] +import dayjs from '../index'; +var locale = { + name: 'mt', + weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'), + months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'), + weekStart: 1, + weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), + monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), + weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'f’ %s', + past: '%s ilu', + s: 'ftit sekondi', + m: 'minuta', + mm: '%d minuti', + h: 'siegħa', + hh: '%d siegħat', + d: 'ġurnata', + dd: '%d ġranet', + M: 'xahar', + MM: '%d xhur', + y: 'sena', + yy: '%d sni' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/my.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/my.js new file mode 100644 index 0000000..73b2633 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/my.js @@ -0,0 +1,39 @@ +// Burmese [my] +import dayjs from '../index'; +var locale = { + name: 'my', + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + weekStart: 1, + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'လာမည့် %s မှာ', + past: 'လွန်ခဲ့သော %s က', + s: 'စက္ကန်.အနည်းငယ်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nb.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nb.js new file mode 100644 index 0000000..1d7b1eb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nb.js @@ -0,0 +1,40 @@ +// Norwegian Bokmål [nb] +import dayjs from '../index'; +var locale = { + name: 'nb', + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + yearStart: 4, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm' + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'noen sekunder', + m: 'ett minutt', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dager', + M: 'en måned', + MM: '%d måneder', + y: 'ett år', + yy: '%d år' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ne.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ne.js new file mode 100644 index 0000000..4f5a004 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ne.js @@ -0,0 +1,40 @@ +// Nepalese [ne] +import dayjs from '../index'; +var locale = { + name: 'ne', + weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), + weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मे_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), + monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + relativeTime: { + future: '%s पछि', + past: '%s अघि', + s: 'सेकेन्ड', + m: 'एक मिनेट', + mm: '%d मिनेट', + h: 'घन्टा', + hh: '%d घन्टा', + d: 'एक दिन', + dd: '%d दिन', + M: 'एक महिना', + MM: '%d महिना', + y: 'एक वर्ष', + yy: '%d वर्ष' + }, + ordinal: function ordinal(n) { + return ("" + n).replace(/\d/g, function (i) { + return '०१२३४५६७८९'[i]; + }); + }, + formats: { + LT: 'Aको h:mm बजे', + LTS: 'Aको h:mm:ss बजे', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, Aको h:mm बजे', + LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nl-be.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nl-be.js new file mode 100644 index 0000000..51465b7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nl-be.js @@ -0,0 +1,39 @@ +// Dutch (Belgium) [nl-be] +import dayjs from '../index'; +var locale = { + name: 'nl-be', + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort: 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), + weekStart: 1, + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nl.js new file mode 100644 index 0000000..d60f9fc --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nl.js @@ -0,0 +1,40 @@ +// Dutch [nl] +import dayjs from '../index'; +var locale = { + name: 'nl', + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort: 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + yearStart: 4, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + m: 'een minuut', + mm: '%d minuten', + h: 'een uur', + hh: '%d uur', + d: 'een dag', + dd: '%d dagen', + M: 'een maand', + MM: '%d maanden', + y: 'een jaar', + yy: '%d jaar' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nn.js new file mode 100644 index 0000000..43767a4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/nn.js @@ -0,0 +1,39 @@ +// Nynorsk [nn] +import dayjs from '../index'; +var locale = { + name: 'nn', + weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort: 'sun_mån_tys_ons_tor_fre_lau'.split('_'), + weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + relativeTime: { + future: 'om %s', + past: 'for %s sidan', + s: 'nokre sekund', + m: 'eitt minutt', + mm: '%d minutt', + h: 'ein time', + hh: '%d timar', + d: 'ein dag', + dd: '%d dagar', + M: 'ein månad', + MM: '%d månadar', + y: 'eitt år', + yy: '%d år' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/oc-lnc.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/oc-lnc.js new file mode 100644 index 0000000..91e2f0d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/oc-lnc.js @@ -0,0 +1,39 @@ +// Occitan, lengadocian dialecte [oc-lnc] +import dayjs from '../index'; +var locale = { + name: 'oc-lnc', + weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'), + weekdaysShort: 'Dg_Dl_Dm_Dc_Dj_Dv_Ds'.split('_'), + weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), + months: 'genièr_febrièr_març_abrial_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'), + monthsShort: 'gen_feb_març_abr_mai_junh_julh_ago_set_oct_nov_dec'.split('_'), + weekStart: 1, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + LLL: 'D MMMM [de] YYYY [a] H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a] H:mm' + }, + relativeTime: { + future: 'd\'aquí %s', + past: 'fa %s', + s: 'unas segondas', + m: 'una minuta', + mm: '%d minutas', + h: 'una ora', + hh: '%d oras', + d: 'un jorn', + dd: '%d jorns', + M: 'un mes', + MM: '%d meses', + y: 'un an', + yy: '%d ans' + }, + ordinal: function ordinal(n) { + return n + "\xBA"; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pa-in.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pa-in.js new file mode 100644 index 0000000..624a852 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pa-in.js @@ -0,0 +1,38 @@ +// Punjabi (India) [pa-in] +import dayjs from '../index'; +var locale = { + name: 'pa-in', + weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), + months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm ਵਜੇ', + LTS: 'A h:mm:ss ਵਜੇ', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm ਵਜੇ', + LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ' + }, + relativeTime: { + future: '%s ਵਿੱਚ', + past: '%s ਪਿਛਲੇ', + s: 'ਕੁਝ ਸਕਿੰਟ', + m: 'ਇਕ ਮਿੰਟ', + mm: '%d ਮਿੰਟ', + h: 'ਇੱਕ ਘੰਟਾ', + hh: '%d ਘੰਟੇ', + d: 'ਇੱਕ ਦਿਨ', + dd: '%d ਦਿਨ', + M: 'ਇੱਕ ਮਹੀਨਾ', + MM: '%d ਮਹੀਨੇ', + y: 'ਇੱਕ ਸਾਲ', + yy: '%d ਸਾਲ' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pl.js new file mode 100644 index 0000000..368b2a5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pl.js @@ -0,0 +1,87 @@ +// Polish [pl] +import dayjs from '../index'; + +function plural(n) { + return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; // eslint-disable-line +} +/* eslint-disable */ + + +function translate(number, withoutSuffix, key) { + var result = number + " "; + + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); + } +} +/* eslint-enable */ + + +var monthFormat = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); +var monthStandalone = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'); +var MONTHS_IN_FORMAT = /D MMMM/; + +var months = function months(dayjsInstance, format) { + if (MONTHS_IN_FORMAT.test(format)) { + return monthFormat[dayjsInstance.month()]; + } + + return monthStandalone[dayjsInstance.month()]; +}; + +months.s = monthStandalone; +months.f = monthFormat; +var locale = { + name: 'pl', + weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), + weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), + weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + months: months, + monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + weekStart: 1, + yearStart: 4, + relativeTime: { + future: 'za %s', + past: '%s temu', + s: 'kilka sekund', + m: translate, + mm: translate, + h: translate, + hh: translate, + d: '1 dzień', + dd: '%d dni', + M: 'miesiąc', + MM: translate, + y: 'rok', + yy: translate + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pt-br.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pt-br.js new file mode 100644 index 0000000..0635cd8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pt-br.js @@ -0,0 +1,38 @@ +// Portuguese (Brazil) [pt-br] +import dayjs from '../index'; +var locale = { + name: 'pt-br', + weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'), + weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), + weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + ordinal: function ordinal(n) { + return n + "\xBA"; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'poucos segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pt.js new file mode 100644 index 0000000..cba2331 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/pt.js @@ -0,0 +1,40 @@ +// Portuguese [pt] +import dayjs from '../index'; +var locale = { + name: 'pt', + weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'), + weekdaysShort: 'dom_seg_ter_qua_qui_sex_sab'.split('_'), + weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sa'.split('_'), + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + ordinal: function ordinal(n) { + return n + "\xBA"; + }, + weekStart: 1, + yearStart: 4, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'alguns segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/rn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/rn.js new file mode 100644 index 0000000..21b3cdb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/rn.js @@ -0,0 +1,39 @@ +// Kirundi [rn] +import dayjs from '../index'; +var locale = { + name: 'rn', + weekdays: 'Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu'.split('_'), + weekdaysShort: 'Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat'.split('_'), + weekdaysMin: 'K7_K1_K2_K3_K4_K5_K6'.split('_'), + months: 'Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama'.split('_'), + monthsShort: 'Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig'.split('_'), + weekStart: 1, + ordinal: function ordinal(n) { + return n; + }, + relativeTime: { + future: 'mu %s', + past: '%s', + s: 'amasegonda', + m: 'Umunota', + mm: '%d iminota', + h: 'isaha', + hh: '%d amasaha', + d: 'Umunsi', + dd: '%d iminsi', + M: 'ukwezi', + MM: '%d amezi', + y: 'umwaka', + yy: '%d imyaka' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ro.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ro.js new file mode 100644 index 0000000..93ef6bf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ro.js @@ -0,0 +1,39 @@ +// Romanian [ro] +import dayjs from '../index'; +var locale = { + name: 'ro', + weekdays: 'Duminică_Luni_Marți_Miercuri_Joi_Vineri_Sâmbătă'.split('_'), + weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + months: 'Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie'.split('_'), + monthsShort: 'Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.'.split('_'), + weekStart: 1, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm' + }, + relativeTime: { + future: 'peste %s', + past: 'acum %s', + s: 'câteva secunde', + m: 'un minut', + mm: '%d minute', + h: 'o oră', + hh: '%d ore', + d: 'o zi', + dd: '%d zile', + M: 'o lună', + MM: '%d luni', + y: 'un an', + yy: '%d ani' + }, + ordinal: function ordinal(n) { + return n; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ru.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ru.js new file mode 100644 index 0000000..fbb1b35 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ru.js @@ -0,0 +1,99 @@ +// Russian [ru] +import dayjs from '../index'; +var monthFormat = 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'); +var monthStandalone = 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'); +var monthShortFormat = 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'); +var monthShortStandalone = 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_'); +var MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/; + +function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; // eslint-disable-line +} + +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + hh: 'час_часа_часов', + dd: 'день_дня_дней', + MM: 'месяц_месяца_месяцев', + yy: 'год_года_лет' + }; + + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + + return number + " " + plural(format[key], +number); +} + +var months = function months(dayjsInstance, format) { + if (MONTHS_IN_FORMAT.test(format)) { + return monthFormat[dayjsInstance.month()]; + } + + return monthStandalone[dayjsInstance.month()]; +}; + +months.s = monthStandalone; +months.f = monthFormat; + +var monthsShort = function monthsShort(dayjsInstance, format) { + if (MONTHS_IN_FORMAT.test(format)) { + return monthShortFormat[dayjsInstance.month()]; + } + + return monthShortStandalone[dayjsInstance.month()]; +}; + +monthsShort.s = monthShortStandalone; +monthsShort.f = monthShortFormat; +var locale = { + name: 'ru', + weekdays: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + weekdaysShort: 'вск_пнд_втр_срд_чтв_птн_сбт'.split('_'), + weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + months: months, + monthsShort: monthsShort, + weekStart: 1, + yearStart: 4, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., H:mm', + LLLL: 'dddd, D MMMM YYYY г., H:mm' + }, + relativeTime: { + future: 'через %s', + past: '%s назад', + s: 'несколько секунд', + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: 'час', + hh: relativeTimeWithPlural, + d: 'день', + dd: relativeTimeWithPlural, + M: 'месяц', + MM: relativeTimeWithPlural, + y: 'год', + yy: relativeTimeWithPlural + }, + ordinal: function ordinal(n) { + return n; + }, + meridiem: function meridiem(hour) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } + + return 'вечера'; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/rw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/rw.js new file mode 100644 index 0000000..1e53ac7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/rw.js @@ -0,0 +1,35 @@ +// Kinyarwanda (Rwanda) [rw] +import dayjs from '../index'; +var locale = { + name: 'rw', + weekdays: 'Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu'.split('_'), + months: 'Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza'.split('_'), + relativeTime: { + future: 'mu %s', + past: '%s', + s: 'amasegonda', + m: 'Umunota', + mm: '%d iminota', + h: 'isaha', + hh: '%d amasaha', + d: 'Umunsi', + dd: '%d iminsi', + M: 'ukwezi', + MM: '%d amezi', + y: 'umwaka', + yy: '%d imyaka' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + ordinal: function ordinal(n) { + return n; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sd.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sd.js new file mode 100644 index 0000000..a429f8d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sd.js @@ -0,0 +1,39 @@ +// Sindhi [sd] +import dayjs from '../index'; +var locale = { + name: 'sd', + weekdays: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'), + months: 'جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر'.split('_'), + weekStart: 1, + weekdaysShort: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'), + monthsShort: 'جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر'.split('_'), + weekdaysMin: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd، D MMMM YYYY HH:mm' + }, + relativeTime: { + future: '%s پوء', + past: '%s اڳ', + s: 'چند سيڪنڊ', + m: 'هڪ منٽ', + mm: '%d منٽ', + h: 'هڪ ڪلاڪ', + hh: '%d ڪلاڪ', + d: 'هڪ ڏينهن', + dd: '%d ڏينهن', + M: 'هڪ مهينو', + MM: '%d مهينا', + y: 'هڪ سال', + yy: '%d سال' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/se.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/se.js new file mode 100644 index 0000000..691099c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/se.js @@ -0,0 +1,39 @@ +// Northern Sami [se] +import dayjs from '../index'; +var locale = { + name: 'se', + weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), + months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), + weekStart: 1, + weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), + weekdaysMin: 's_v_m_g_d_b_L'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'MMMM D. [b.] YYYY', + LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' + }, + relativeTime: { + future: '%s geažes', + past: 'maŋit %s', + s: 'moadde sekunddat', + m: 'okta minuhta', + mm: '%d minuhtat', + h: 'okta diimmu', + hh: '%d diimmut', + d: 'okta beaivi', + dd: '%d beaivvit', + M: 'okta mánnu', + MM: '%d mánut', + y: 'okta jahki', + yy: '%d jagit' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/si.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/si.js new file mode 100644 index 0000000..89b67bf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/si.js @@ -0,0 +1,38 @@ +// Sinhalese [si] +import dayjs from '../index'; +var locale = { + name: 'si', + weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + months: 'දුරුතු_නවම්_මැදින්_බක්_වෙසක්_පොසොන්_ඇසළ_නිකිණි_බිනර_වප්_ඉල්_උඳුවප්'.split('_'), + weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + monthsShort: 'දුරු_නව_මැදි_බක්_වෙස_පොසො_ඇස_නිකි_බින_වප්_ඉල්_උඳු'.split('_'), + weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'a h:mm', + LTS: 'a h:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY MMMM D', + LLL: 'YYYY MMMM D, a h:mm', + LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + }, + relativeTime: { + future: '%sකින්', + past: '%sකට පෙර', + s: 'තත්පර කිහිපය', + m: 'විනාඩිය', + mm: 'විනාඩි %d', + h: 'පැය', + hh: 'පැය %d', + d: 'දිනය', + dd: 'දින %d', + M: 'මාසය', + MM: 'මාස %d', + y: 'වසර', + yy: 'වසර %d' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sk.js new file mode 100644 index 0000000..222401f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sk.js @@ -0,0 +1,121 @@ +// Slovak [sk] +import dayjs from '../index'; + +function plural(n) { + return n > 1 && n < 5 && ~~(n / 10) !== 1; // eslint-disable-line +} +/* eslint-disable */ + + +function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + + switch (key) { + case 's': + // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; + + case 'm': + // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; + + case 'mm': + // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } + + return result + "min\xFAtami"; + + case 'h': + // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; + + case 'hh': + // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } + + return result + "hodinami"; + + case 'd': + // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'deň' : 'dňom'; + + case 'dd': + // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } + + return result + "d\u0148ami"; + + case 'M': + // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; + + case 'MM': + // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } + + return result + "mesiacmi"; + + case 'y': + // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokom'; + + case 'yy': + // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } + + return result + "rokmi"; + } +} +/* eslint-enable */ + + +var locale = { + name: 'sk', + weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), + months: 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), + monthsShort: 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'), + weekStart: 1, + yearStart: 4, + ordinal: function ordinal(n) { + return n + "."; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', + l: 'D. M. YYYY' + }, + relativeTime: { + future: 'za %s', + // Should be `o %s` (change when moment/moment#5408 is fixed) + past: 'pred %s', + s: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sl.js new file mode 100644 index 0000000..cfbe83d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sl.js @@ -0,0 +1,39 @@ +// Slovenian [sl] +import dayjs from '../index'; +var locale = { + name: 'sl', + weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), + weekStart: 1, + weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), + ordinal: function ordinal(n) { + return n + "."; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + relativeTime: { + future: 'čez %s', + past: 'pred %s', + s: 'nekaj sekund', + m: 'minuta', + mm: '%d minut', + h: 'ura', + hh: '%d ur', + d: 'dan', + dd: '%d dni', + M: 'mesec', + MM: '%d mesecev', + y: 'leto', + yy: '%d let' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sq.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sq.js new file mode 100644 index 0000000..625b701 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sq.js @@ -0,0 +1,39 @@ +// Albanian [sq] +import dayjs from '../index'; +var locale = { + name: 'sq', + weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), + months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), + weekStart: 1, + weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'në %s', + past: '%s më parë', + s: 'disa sekonda', + m: 'një minutë', + mm: '%d minuta', + h: 'një orë', + hh: '%d orë', + d: 'një ditë', + dd: '%d ditë', + M: 'një muaj', + MM: '%d muaj', + y: 'një vit', + yy: '%d vite' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sr-cyrl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sr-cyrl.js new file mode 100644 index 0000000..2e40d51 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sr-cyrl.js @@ -0,0 +1,74 @@ +// Serbian Cyrillic [sr-cyrl] +import dayjs from '../index'; +var translator = { + words: { + m: ['један минут', 'једног минута'], + mm: ['%d минут', '%d минута', '%d минута'], + h: ['један сат', 'једног сата'], + hh: ['%d сат', '%d сата', '%d сати'], + d: ['један дан', 'једног дана'], + dd: ['%d дан', '%d дана', '%d дана'], + M: ['један месец', 'једног месеца'], + MM: ['%d месец', '%d месеца', '%d месеци'], + y: ['једну годину', 'једне године'], + yy: ['%d годину', '%d године', '%d година'] + }, + correctGrammarCase: function correctGrammarCase(number, wordKey) { + if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) { + return number % 10 === 1 ? wordKey[0] : wordKey[1]; + } + + return wordKey[2]; + }, + relativeTimeFormatter: function relativeTimeFormatter(number, withoutSuffix, key, isFuture) { + var wordKey = translator.words[key]; + + if (key.length === 1) { + // Nominativ + if (key === 'y' && withoutSuffix) return 'једна година'; + return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; + } + + var word = translator.correctGrammarCase(number, wordKey); // Nominativ + + if (key === 'yy' && withoutSuffix && word === '%d годину') return number + " \u0433\u043E\u0434\u0438\u043D\u0430"; + return word.replace('%d', number); + } +}; +var locale = { + name: 'sr-cyrl', + weekdays: 'Недеља_Понедељак_Уторак_Среда_Четвртак_Петак_Субота'.split('_'), + weekdaysShort: 'Нед._Пон._Уто._Сре._Чет._Пет._Суб.'.split('_'), + weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), + months: 'Јануар_Фебруар_Март_Април_Мај_Јун_Јул_Август_Септембар_Октобар_Новембар_Децембар'.split('_'), + monthsShort: 'Јан._Феб._Мар._Апр._Мај_Јун_Јул_Авг._Сеп._Окт._Нов._Дец.'.split('_'), + weekStart: 1, + relativeTime: { + future: 'за %s', + past: 'пре %s', + s: 'неколико секунди', + m: translator.relativeTimeFormatter, + mm: translator.relativeTimeFormatter, + h: translator.relativeTimeFormatter, + hh: translator.relativeTimeFormatter, + d: translator.relativeTimeFormatter, + dd: translator.relativeTimeFormatter, + M: translator.relativeTimeFormatter, + MM: translator.relativeTimeFormatter, + y: translator.relativeTimeFormatter, + yy: translator.relativeTimeFormatter + }, + ordinal: function ordinal(n) { + return n + "."; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'D. M. YYYY.', + LL: 'D. MMMM YYYY.', + LLL: 'D. MMMM YYYY. H:mm', + LLLL: 'dddd, D. MMMM YYYY. H:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sr.js new file mode 100644 index 0000000..f5174ce --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sr.js @@ -0,0 +1,74 @@ +// Serbian [sr] +import dayjs from '../index'; +var translator = { + words: { + m: ['jedan minut', 'jednog minuta'], + mm: ['%d minut', '%d minuta', '%d minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['%d sat', '%d sata', '%d sati'], + d: ['jedan dan', 'jednog dana'], + dd: ['%d dan', '%d dana', '%d dana'], + M: ['jedan mesec', 'jednog meseca'], + MM: ['%d mesec', '%d meseca', '%d meseci'], + y: ['jednu godinu', 'jedne godine'], + yy: ['%d godinu', '%d godine', '%d godina'] + }, + correctGrammarCase: function correctGrammarCase(number, wordKey) { + if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) { + return number % 10 === 1 ? wordKey[0] : wordKey[1]; + } + + return wordKey[2]; + }, + relativeTimeFormatter: function relativeTimeFormatter(number, withoutSuffix, key, isFuture) { + var wordKey = translator.words[key]; + + if (key.length === 1) { + // Nominativ + if (key === 'y' && withoutSuffix) return 'jedna godina'; + return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; + } + + var word = translator.correctGrammarCase(number, wordKey); // Nominativ + + if (key === 'yy' && withoutSuffix && word === '%d godinu') return number + " godina"; + return word.replace('%d', number); + } +}; +var locale = { + name: 'sr', + weekdays: 'Nedelja_Ponedeljak_Utorak_Sreda_Četvrtak_Petak_Subota'.split('_'), + weekdaysShort: 'Ned._Pon._Uto._Sre._Čet._Pet._Sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + months: 'Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar'.split('_'), + monthsShort: 'Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.'.split('_'), + weekStart: 1, + relativeTime: { + future: 'za %s', + past: 'pre %s', + s: 'nekoliko sekundi', + m: translator.relativeTimeFormatter, + mm: translator.relativeTimeFormatter, + h: translator.relativeTimeFormatter, + hh: translator.relativeTimeFormatter, + d: translator.relativeTimeFormatter, + dd: translator.relativeTimeFormatter, + M: translator.relativeTimeFormatter, + MM: translator.relativeTimeFormatter, + y: translator.relativeTimeFormatter, + yy: translator.relativeTimeFormatter + }, + ordinal: function ordinal(n) { + return n + "."; + }, + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'D. M. YYYY.', + LL: 'D. MMMM YYYY.', + LLL: 'D. MMMM YYYY. H:mm', + LLLL: 'dddd, D. MMMM YYYY. H:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ss.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ss.js new file mode 100644 index 0000000..4354a48 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ss.js @@ -0,0 +1,39 @@ +// siSwati [ss] +import dayjs from '../index'; +var locale = { + name: 'ss', + weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), + months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), + weekStart: 1, + weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A' + }, + relativeTime: { + future: 'nga %s', + past: 'wenteka nga %s', + s: 'emizuzwana lomcane', + m: 'umzuzu', + mm: '%d emizuzu', + h: 'lihora', + hh: '%d emahora', + d: 'lilanga', + dd: '%d emalanga', + M: 'inyanga', + MM: '%d tinyanga', + y: 'umnyaka', + yy: '%d iminyaka' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sv-fi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sv-fi.js new file mode 100644 index 0000000..a18977f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sv-fi.js @@ -0,0 +1,46 @@ +// Finland Swedish [sv-fi] +import dayjs from '../index'; +var locale = { + name: 'sv-fi', + weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), + months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekStart: 1, + yearStart: 4, + ordinal: function ordinal(n) { + var b = n % 10; + var o = b === 1 || b === 2 ? 'a' : 'e'; + return "[" + n + o + "]"; + }, + formats: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY, [kl.] HH.mm', + LLLL: 'dddd, D. MMMM YYYY, [kl.] HH.mm', + l: 'D.M.YYYY', + ll: 'D. MMM YYYY', + lll: 'D. MMM YYYY, [kl.] HH.mm', + llll: 'ddd, D. MMM YYYY, [kl.] HH.mm' + }, + relativeTime: { + future: 'om %s', + past: 'för %s sedan', + s: 'några sekunder', + m: 'en minut', + mm: '%d minuter', + h: 'en timme', + hh: '%d timmar', + d: 'en dag', + dd: '%d dagar', + M: 'en månad', + MM: '%d månader', + y: 'ett år', + yy: '%d år' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sv.js new file mode 100644 index 0000000..2563ee7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sv.js @@ -0,0 +1,44 @@ +// Swedish [sv] +import dayjs from '../index'; +var locale = { + name: 'sv', + weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), + months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekStart: 1, + yearStart: 4, + ordinal: function ordinal(n) { + var b = n % 10; + var o = b === 1 || b === 2 ? 'a' : 'e'; + return "[" + n + o + "]"; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd D MMM YYYY HH:mm' + }, + relativeTime: { + future: 'om %s', + past: 'för %s sedan', + s: 'några sekunder', + m: 'en minut', + mm: '%d minuter', + h: 'en timme', + hh: '%d timmar', + d: 'en dag', + dd: '%d dagar', + M: 'en månad', + MM: '%d månader', + y: 'ett år', + yy: '%d år' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sw.js new file mode 100644 index 0000000..287bf33 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/sw.js @@ -0,0 +1,39 @@ +// Swahili [sw] +import dayjs from '../index'; +var locale = { + name: 'sw', + weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), + weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), + months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekStart: 1, + ordinal: function ordinal(n) { + return n; + }, + relativeTime: { + future: '%s baadaye', + past: 'tokea %s', + s: 'hivi punde', + m: 'dakika moja', + mm: 'dakika %d', + h: 'saa limoja', + hh: 'masaa %d', + d: 'siku moja', + dd: 'masiku %d', + M: 'mwezi mmoja', + MM: 'miezi %d', + y: 'mwaka mmoja', + yy: 'miaka %d' + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ta.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ta.js new file mode 100644 index 0000000..6df25f8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ta.js @@ -0,0 +1,38 @@ +// Tamil [ta] +import dayjs from '../index'; +var locale = { + name: 'ta', + weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), + months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), + monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, HH:mm', + LLLL: 'dddd, D MMMM YYYY, HH:mm' + }, + relativeTime: { + future: '%s இல்', + past: '%s முன்', + s: 'ஒரு சில விநாடிகள்', + m: 'ஒரு நிமிடம்', + mm: '%d நிமிடங்கள்', + h: 'ஒரு மணி நேரம்', + hh: '%d மணி நேரம்', + d: 'ஒரு நாள்', + dd: '%d நாட்கள்', + M: 'ஒரு மாதம்', + MM: '%d மாதங்கள்', + y: 'ஒரு வருடம்', + yy: '%d ஆண்டுகள்' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/te.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/te.js new file mode 100644 index 0000000..392a247 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/te.js @@ -0,0 +1,38 @@ +// Telugu [te] +import dayjs from '../index'; +var locale = { + name: 'te', + weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), + months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), + weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), + weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm', + LLLL: 'dddd, D MMMM YYYY, A h:mm' + }, + relativeTime: { + future: '%s లో', + past: '%s క్రితం', + s: 'కొన్ని క్షణాలు', + m: 'ఒక నిమిషం', + mm: '%d నిమిషాలు', + h: 'ఒక గంట', + hh: '%d గంటలు', + d: 'ఒక రోజు', + dd: '%d రోజులు', + M: 'ఒక నెల', + MM: '%d నెలలు', + y: 'ఒక సంవత్సరం', + yy: '%d సంవత్సరాలు' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tet.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tet.js new file mode 100644 index 0000000..ff83eea --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tet.js @@ -0,0 +1,39 @@ +// Tetun Dili (East Timor) [tet] +import dayjs from '../index'; +var locale = { + name: 'tet', + weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), + months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), + weekStart: 1, + weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), + monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'iha %s', + past: '%s liuba', + s: 'minutu balun', + m: 'minutu ida', + mm: 'minutu %d', + h: 'oras ida', + hh: 'oras %d', + d: 'loron ida', + dd: 'loron %d', + M: 'fulan ida', + MM: 'fulan %d', + y: 'tinan ida', + yy: 'tinan %d' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tg.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tg.js new file mode 100644 index 0000000..536df0b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tg.js @@ -0,0 +1,39 @@ +// Tajik [tg] +import dayjs from '../index'; +var locale = { + name: 'tg', + weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'), + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), + weekStart: 1, + weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'баъди %s', + past: '%s пеш', + s: 'якчанд сония', + m: 'як дақиқа', + mm: '%d дақиқа', + h: 'як соат', + hh: '%d соат', + d: 'як рӯз', + dd: '%d рӯз', + M: 'як моҳ', + MM: '%d моҳ', + y: 'як сол', + yy: '%d сол' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/th.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/th.js new file mode 100644 index 0000000..5cbcdf2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/th.js @@ -0,0 +1,38 @@ +// Thai [th] +import dayjs from '../index'; +var locale = { + name: 'th', + weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), + weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), + monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + formats: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY เวลา H:mm', + LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm' + }, + relativeTime: { + future: 'อีก %s', + past: '%sที่แล้ว', + s: 'ไม่กี่วินาที', + m: '1 นาที', + mm: '%d นาที', + h: '1 ชั่วโมง', + hh: '%d ชั่วโมง', + d: '1 วัน', + dd: '%d วัน', + M: '1 เดือน', + MM: '%d เดือน', + y: '1 ปี', + yy: '%d ปี' + }, + ordinal: function ordinal(n) { + return n + "."; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tk.js new file mode 100644 index 0000000..93390f1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tk.js @@ -0,0 +1,39 @@ +// Turkmen [tk] +import dayjs from '../index'; +var locale = { + name: 'tk', + weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split('_'), + weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'), + weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'), + months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'), + monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'), + weekStart: 1, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: '%s soň', + past: '%s öň', + s: 'birnäçe sekunt', + m: 'bir minut', + mm: '%d minut', + h: 'bir sagat', + hh: '%d sagat', + d: 'bir gün', + dd: '%d gün', + M: 'bir aý', + MM: '%d aý', + y: 'bir ýyl', + yy: '%d ýyl' + }, + ordinal: function ordinal(n) { + return n + "."; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tl-ph.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tl-ph.js new file mode 100644 index 0000000..0fa84f3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tl-ph.js @@ -0,0 +1,39 @@ +// Tagalog (Philippines) [tl-ph] +import dayjs from '../index'; +var locale = { + name: 'tl-ph', + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), + weekStart: 1, + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm' + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tlh.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tlh.js new file mode 100644 index 0000000..30f52fe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tlh.js @@ -0,0 +1,24 @@ +// Klingon [tlh] +import dayjs from '../index'; +var locale = { + name: 'tlh', + weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), + weekStart: 1, + weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), + weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tr.js new file mode 100644 index 0000000..e7fe24f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tr.js @@ -0,0 +1,39 @@ +// Turkish [tr] +import dayjs from '../index'; +var locale = { + name: 'tr', + weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), + weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), + monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekStart: 1, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: '%s sonra', + past: '%s önce', + s: 'birkaç saniye', + m: 'bir dakika', + mm: '%d dakika', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir yıl', + yy: '%d yıl' + }, + ordinal: function ordinal(n) { + return n + "."; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/types.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/types.d.ts new file mode 100644 index 0000000..2c24a64 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/types.d.ts @@ -0,0 +1,33 @@ +declare interface ILocale { + name: string + weekdays?: string[] + months?: string[] + weekStart?: number + weekdaysShort?: string[] + monthsShort?: string[] + weekdaysMin?: string[] + ordinal?: (n: number) => number | string + formats: Partial<{ + LT: string + LTS: string + L: string + LL: string + LLL: string + LLLL: string + }> + relativeTime: Partial<{ + future: string + past: string + s: string + m: string + mm: string + h: string + hh: string + d: string + dd: string + M: string + MM: string + y: string + yy: string + }> +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzl.js new file mode 100644 index 0000000..9fa0cd2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzl.js @@ -0,0 +1,24 @@ +// Talossan [tzl] +import dayjs from '../index'; +var locale = { + name: 'tzl', + weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), + weekStart: 1, + weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM [dallas] YYYY', + LLL: 'D. MMMM [dallas] YYYY HH.mm', + LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzm-latn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzm-latn.js new file mode 100644 index 0000000..e5ac6af --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzm-latn.js @@ -0,0 +1,39 @@ +// Central Atlas Tamazight Latin [tzm-latn] +import dayjs from '../index'; +var locale = { + name: 'tzm-latn', + weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekStart: 6, + weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'dadkh s yan %s', + past: 'yan %s', + s: 'imik', + m: 'minuḍ', + mm: '%d minuḍ', + h: 'saɛa', + hh: '%d tassaɛin', + d: 'ass', + dd: '%d ossan', + M: 'ayowr', + MM: '%d iyyirn', + y: 'asgas', + yy: '%d isgasn' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzm.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzm.js new file mode 100644 index 0000000..d94a6c0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/tzm.js @@ -0,0 +1,39 @@ +// Central Atlas Tamazight [tzm] +import dayjs from '../index'; +var locale = { + name: 'tzm', + weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + weekStart: 6, + weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past: 'ⵢⴰⵏ %s', + s: 'ⵉⵎⵉⴽ', + m: 'ⵎⵉⵏⵓⴺ', + mm: '%d ⵎⵉⵏⵓⴺ', + h: 'ⵙⴰⵄⴰ', + hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d: 'ⴰⵙⵙ', + dd: '%d oⵙⵙⴰⵏ', + M: 'ⴰⵢoⵓⵔ', + MM: '%d ⵉⵢⵢⵉⵔⵏ', + y: 'ⴰⵙⴳⴰⵙ', + yy: '%d ⵉⵙⴳⴰⵙⵏ' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ug-cn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ug-cn.js new file mode 100644 index 0000000..d3d6392 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ug-cn.js @@ -0,0 +1,39 @@ +// Uyghur (China) [ug-cn] +import dayjs from '../index'; +var locale = { + name: 'ug-cn', + weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'), + months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'), + weekStart: 1, + weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), + monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'), + weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', + LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', + LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm' + }, + relativeTime: { + future: '%s كېيىن', + past: '%s بۇرۇن', + s: 'نەچچە سېكونت', + m: 'بىر مىنۇت', + mm: '%d مىنۇت', + h: 'بىر سائەت', + hh: '%d سائەت', + d: 'بىر كۈن', + dd: '%d كۈن', + M: 'بىر ئاي', + MM: '%d ئاي', + y: 'بىر يىل', + yy: '%d يىل' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uk.js new file mode 100644 index 0000000..3c70b13 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uk.js @@ -0,0 +1,77 @@ +// Ukrainian [uk] +import dayjs from '../index'; +var monthFormat = 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'); +var monthStandalone = 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'); +var MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/; + +function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; // eslint-disable-line +} + +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', + mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + dd: 'день_дні_днів', + MM: 'місяць_місяці_місяців', + yy: 'рік_роки_років' + }; + + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + + return number + " " + plural(format[key], +number); +} + +var months = function months(dayjsInstance, format) { + if (MONTHS_IN_FORMAT.test(format)) { + return monthFormat[dayjsInstance.month()]; + } + + return monthStandalone[dayjsInstance.month()]; +}; + +months.s = monthStandalone; +months.f = monthFormat; +var locale = { + name: 'uk', + weekdays: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + weekdaysShort: 'ндл_пнд_втр_срд_чтв_птн_сбт'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + months: months, + monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekStart: 1, + relativeTime: { + future: 'за %s', + past: '%s тому', + s: 'декілька секунд', + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: relativeTimeWithPlural, + hh: relativeTimeWithPlural, + d: 'день', + dd: relativeTimeWithPlural, + M: 'місяць', + MM: relativeTimeWithPlural, + y: 'рік', + yy: relativeTimeWithPlural + }, + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY р.', + LLL: 'D MMMM YYYY р., HH:mm', + LLLL: 'dddd, D MMMM YYYY р., HH:mm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ur.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ur.js new file mode 100644 index 0000000..7464c1e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/ur.js @@ -0,0 +1,39 @@ +// Urdu [ur] +import dayjs from '../index'; +var locale = { + name: 'ur', + weekdays: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'), + months: 'جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر'.split('_'), + weekStart: 1, + weekdaysShort: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'), + monthsShort: 'جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر'.split('_'), + weekdaysMin: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd، D MMMM YYYY HH:mm' + }, + relativeTime: { + future: '%s بعد', + past: '%s قبل', + s: 'چند سیکنڈ', + m: 'ایک منٹ', + mm: '%d منٹ', + h: 'ایک گھنٹہ', + hh: '%d گھنٹے', + d: 'ایک دن', + dd: '%d دن', + M: 'ایک ماہ', + MM: '%d ماہ', + y: 'ایک سال', + yy: '%d سال' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uz-latn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uz-latn.js new file mode 100644 index 0000000..4dc2108 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uz-latn.js @@ -0,0 +1,39 @@ +// Uzbek Latin [uz-latn] +import dayjs from '../index'; +var locale = { + name: 'uz-latn', + weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), + months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), + weekStart: 1, + weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), + monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), + weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm' + }, + relativeTime: { + future: 'Yaqin %s ichida', + past: 'Bir necha %s oldin', + s: 'soniya', + m: 'bir daqiqa', + mm: '%d daqiqa', + h: 'bir soat', + hh: '%d soat', + d: 'bir kun', + dd: '%d kun', + M: 'bir oy', + MM: '%d oy', + y: 'bir yil', + yy: '%d yil' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uz.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uz.js new file mode 100644 index 0000000..459fd58 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/uz.js @@ -0,0 +1,39 @@ +// Uzbek [uz] +import dayjs from '../index'; +var locale = { + name: 'uz', + weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), + weekStart: 1, + weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm' + }, + relativeTime: { + future: 'Якин %s ичида', + past: 'Бир неча %s олдин', + s: 'фурсат', + m: 'бир дакика', + mm: '%d дакика', + h: 'бир соат', + hh: '%d соат', + d: 'бир кун', + dd: '%d кун', + M: 'бир ой', + MM: '%d ой', + y: 'бир йил', + yy: '%d йил' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/vi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/vi.js new file mode 100644 index 0000000..f55cc73 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/vi.js @@ -0,0 +1,43 @@ +// Vietnamese [vi] +import dayjs from '../index'; +var locale = { + name: 'vi', + weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), + months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), + weekStart: 1, + weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [năm] YYYY', + LLL: 'D MMMM [năm] YYYY HH:mm', + LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', + l: 'DD/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm' + }, + relativeTime: { + future: '%s tới', + past: '%s trước', + s: 'vài giây', + m: 'một phút', + mm: '%d phút', + h: 'một giờ', + hh: '%d giờ', + d: 'một ngày', + dd: '%d ngày', + M: 'một tháng', + MM: '%d tháng', + y: 'một năm', + yy: '%d năm' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/x-pseudo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/x-pseudo.js new file mode 100644 index 0000000..ceb6782 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/x-pseudo.js @@ -0,0 +1,39 @@ +// Pseudo [x-pseudo] +import dayjs from '../index'; +var locale = { + name: 'x-pseudo', + weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), + months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), + weekStart: 1, + weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), + weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + relativeTime: { + future: 'í~ñ %s', + past: '%s á~gó', + s: 'á ~féw ~sécó~ñds', + m: 'á ~míñ~úté', + mm: '%d m~íñú~tés', + h: 'á~ñ hó~úr', + hh: '%d h~óúrs', + d: 'á ~dáý', + dd: '%d d~áýs', + M: 'á ~móñ~th', + MM: '%d m~óñt~hs', + y: 'á ~ýéár', + yy: '%d ý~éárs' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/yo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/yo.js new file mode 100644 index 0000000..1f79468 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/yo.js @@ -0,0 +1,39 @@ +// Yoruba Nigeria [yo] +import dayjs from '../index'; +var locale = { + name: 'yo', + weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), + months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), + weekStart: 1, + weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), + monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), + weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), + ordinal: function ordinal(n) { + return n; + }, + formats: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A' + }, + relativeTime: { + future: 'ní %s', + past: '%s kọjá', + s: 'ìsẹjú aayá die', + m: 'ìsẹjú kan', + mm: 'ìsẹjú %d', + h: 'wákati kan', + hh: 'wákati %d', + d: 'ọjọ́ kan', + dd: 'ọjọ́ %d', + M: 'osù kan', + MM: 'osù %d', + y: 'ọdún kan', + yy: 'ọdún %d' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-cn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-cn.js new file mode 100644 index 0000000..1a7ebf4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-cn.js @@ -0,0 +1,67 @@ +// Chinese (China) [zh-cn] +import dayjs from '../index'; +var locale = { + name: 'zh-cn', + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + ordinal: function ordinal(number, period) { + switch (period) { + case 'W': + return number + "\u5468"; + + default: + return number + "\u65E5"; + } + }, + weekStart: 1, + yearStart: 4, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日Ah点mm分', + LLLL: 'YYYY年M月D日ddddAh点mm分', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm' + }, + relativeTime: { + future: '%s内', + past: '%s前', + s: '几秒', + m: '1 分钟', + mm: '%d 分钟', + h: '1 小时', + hh: '%d 小时', + d: '1 天', + dd: '%d 天', + M: '1 个月', + MM: '%d 个月', + y: '1 年', + yy: '%d 年' + }, + meridiem: function meridiem(hour, minute) { + var hm = hour * 100 + minute; + + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1100) { + return '上午'; + } else if (hm < 1300) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } + + return '晚上'; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-hk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-hk.js new file mode 100644 index 0000000..c0c2e2b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-hk.js @@ -0,0 +1,38 @@ +// Chinese (Hong Kong) [zh-hk] +import dayjs from '../index'; +var locale = { + name: 'zh-hk', + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + ordinal: function ordinal(n) { + return n + "\u65E5"; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm' + }, + relativeTime: { + future: '%s內', + past: '%s前', + s: '幾秒', + m: '一分鐘', + mm: '%d 分鐘', + h: '一小時', + hh: '%d 小時', + d: '一天', + dd: '%d 天', + M: '一個月', + MM: '%d 個月', + y: '一年', + yy: '%d 年' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-tw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-tw.js new file mode 100644 index 0000000..002a27d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh-tw.js @@ -0,0 +1,42 @@ +// Chinese (Taiwan) [zh-tw] +import dayjs from '../index'; +var locale = { + name: 'zh-tw', + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + ordinal: function ordinal(n) { + return n + "\u65E5"; + }, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm' + }, + relativeTime: { + future: '%s內', + past: '%s前', + s: '幾秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年' + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh.js new file mode 100644 index 0000000..b98ab70 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/locale/zh.js @@ -0,0 +1,67 @@ +// Chinese [zh] +import dayjs from '../index'; +var locale = { + name: 'zh', + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + ordinal: function ordinal(number, period) { + switch (period) { + case 'W': + return number + "\u5468"; + + default: + return number + "\u65E5"; + } + }, + weekStart: 1, + yearStart: 4, + formats: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日Ah点mm分', + LLLL: 'YYYY年M月D日ddddAh点mm分', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm' + }, + relativeTime: { + future: '%s后', + past: '%s前', + s: '几秒', + m: '1 分钟', + mm: '%d 分钟', + h: '1 小时', + hh: '%d 小时', + d: '1 天', + dd: '%d 天', + M: '1 个月', + MM: '%d 个月', + y: '1 年', + yy: '%d 年' + }, + meridiem: function meridiem(hour, minute) { + var hm = hour * 100 + minute; + + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1100) { + return '上午'; + } else if (hm < 1300) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } + + return '晚上'; + } +}; +dayjs.locale(locale, null, true); +export default locale; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/advancedFormat/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/advancedFormat/index.d.ts new file mode 100644 index 0000000..a17c896 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/advancedFormat/index.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/advancedFormat/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/advancedFormat/index.js new file mode 100644 index 0000000..ae2f89e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/advancedFormat/index.js @@ -0,0 +1,73 @@ +import { FORMAT_DEFAULT } from '../../constant'; +export default (function (o, c, d) { + // locale needed later + var proto = c.prototype; + var oldFormat = proto.format; + + d.en.ordinal = function (number) { + var s = ['th', 'st', 'nd', 'rd']; + var v = number % 100; + return "[" + number + (s[(v - 20) % 10] || s[v] || s[0]) + "]"; + }; // extend en locale here + + + proto.format = function (formatStr) { + var _this = this; + + var locale = this.$locale(); + + if (!this.isValid()) { + return oldFormat.bind(this)(formatStr); + } + + var utils = this.$utils(); + var str = formatStr || FORMAT_DEFAULT; + var result = str.replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function (match) { + switch (match) { + case 'Q': + return Math.ceil((_this.$M + 1) / 3); + + case 'Do': + return locale.ordinal(_this.$D); + + case 'gggg': + return _this.weekYear(); + + case 'GGGG': + return _this.isoWeekYear(); + + case 'wo': + return locale.ordinal(_this.week(), 'W'); + // W for week + + case 'w': + case 'ww': + return utils.s(_this.week(), match === 'w' ? 1 : 2, '0'); + + case 'W': + case 'WW': + return utils.s(_this.isoWeek(), match === 'W' ? 1 : 2, '0'); + + case 'k': + case 'kk': + return utils.s(String(_this.$H === 0 ? 24 : _this.$H), match === 'k' ? 1 : 2, '0'); + + case 'X': + return Math.floor(_this.$d.getTime() / 1000); + + case 'x': + return _this.$d.getTime(); + + case 'z': + return "[" + _this.offsetName() + "]"; + + case 'zzz': + return "[" + _this.offsetName('long') + "]"; + + default: + return match; + } + }); + return oldFormat.bind(this)(result); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/arraySupport/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/arraySupport/index.d.ts new file mode 100644 index 0000000..30f8d9c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/arraySupport/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare module 'dayjs/esm' { + interface ConfigTypeMap { + arraySupport: [number?, number?, number?, number?, number?, number?, number?] + } +} + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/arraySupport/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/arraySupport/index.js new file mode 100644 index 0000000..c7edc79 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/arraySupport/index.js @@ -0,0 +1,33 @@ +export default (function (o, c, dayjs) { + var proto = c.prototype; + + var parseDate = function parseDate(cfg) { + var date = cfg.date, + utc = cfg.utc; + + if (Array.isArray(date)) { + if (utc) { + if (!date.length) { + return new Date(); + } + + return new Date(Date.UTC.apply(null, date)); + } + + if (date.length === 1) { + return dayjs(String(date[0])).toDate(); + } + + return new (Function.prototype.bind.apply(Date, [null].concat(date)))(); + } + + return date; + }; + + var oldParse = proto.parse; + + proto.parse = function (cfg) { + cfg.date = parseDate.bind(this)(cfg); + oldParse.bind(this)(cfg); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/badMutable/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/badMutable/index.d.ts new file mode 100644 index 0000000..a17c896 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/badMutable/index.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/badMutable/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/badMutable/index.js new file mode 100644 index 0000000..679edee --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/badMutable/index.js @@ -0,0 +1,61 @@ +export default (function (o, c) { + // locale needed later + var proto = c.prototype; + + proto.$g = function (input, get, set) { + if (this.$utils().u(input)) return this[get]; + return this.$set(set, input); + }; + + proto.set = function (string, _int) { + return this.$set(string, _int); + }; + + var oldStartOf = proto.startOf; + + proto.startOf = function (units, startOf) { + this.$d = oldStartOf.bind(this)(units, startOf).toDate(); + this.init(); + return this; + }; + + var oldAdd = proto.add; + + proto.add = function (number, units) { + this.$d = oldAdd.bind(this)(number, units).toDate(); + this.init(); + return this; + }; + + var oldLocale = proto.locale; + + proto.locale = function (preset, object) { + if (!preset) return this.$L; + this.$L = oldLocale.bind(this)(preset, object).$L; + return this; + }; + + var oldDaysInMonth = proto.daysInMonth; + + proto.daysInMonth = function () { + return oldDaysInMonth.bind(this.clone())(); + }; + + var oldIsSame = proto.isSame; + + proto.isSame = function (that, units) { + return oldIsSame.bind(this.clone())(that, units); + }; + + var oldIsBefore = proto.isBefore; + + proto.isBefore = function (that, units) { + return oldIsBefore.bind(this.clone())(that, units); + }; + + var oldIsAfter = proto.isAfter; + + proto.isAfter = function (that, units) { + return oldIsAfter.bind(this.clone())(that, units); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/buddhistEra/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/buddhistEra/index.d.ts new file mode 100644 index 0000000..a17c896 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/buddhistEra/index.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/buddhistEra/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/buddhistEra/index.js new file mode 100644 index 0000000..76ce44c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/buddhistEra/index.js @@ -0,0 +1,21 @@ +import { FORMAT_DEFAULT } from '../../constant'; +export default (function (o, c) { + // locale needed later + var proto = c.prototype; + var oldFormat = proto.format; // extend en locale here + + proto.format = function (formatStr) { + var _this = this; + + var yearBias = 543; + var str = formatStr || FORMAT_DEFAULT; + var result = str.replace(/(\[[^\]]+])|BBBB|BB/g, function (match, a) { + var _this$$utils; + + var year = String(_this.$y + yearBias); + var args = match === 'BB' ? [year.slice(-2), 2] : [year, 4]; + return a || (_this$$utils = _this.$utils()).s.apply(_this$$utils, args.concat(['0'])); + }); + return oldFormat.bind(this)(result); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/calendar/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/calendar/index.d.ts new file mode 100644 index 0000000..42bff4b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/calendar/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + calendar(referenceTime?: ConfigType, formats?: object): string + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/calendar/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/calendar/index.js new file mode 100644 index 0000000..9abf1e9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/calendar/index.js @@ -0,0 +1,32 @@ +export default (function (o, c, d) { + var LT = 'h:mm A'; + var L = 'MM/DD/YYYY'; + var calendarFormat = { + lastDay: "[Yesterday at] " + LT, + sameDay: "[Today at] " + LT, + nextDay: "[Tomorrow at] " + LT, + nextWeek: "dddd [at] " + LT, + lastWeek: "[Last] dddd [at] " + LT, + sameElse: L + }; + var proto = c.prototype; + + proto.calendar = function (referenceTime, formats) { + var format = formats || this.$locale().calendar || calendarFormat; + var referenceStartOfDay = d(referenceTime || undefined).startOf('d'); + var diff = this.diff(referenceStartOfDay, 'd', true); + var sameElse = 'sameElse'; + /* eslint-disable no-nested-ternary */ + + var retVal = diff < -6 ? sameElse : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : sameElse; + /* eslint-enable no-nested-ternary */ + + var currentFormat = format[retVal] || calendarFormat[retVal]; + + if (typeof currentFormat === 'function') { + return currentFormat.call(this, d()); + } + + return this.format(currentFormat); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/customParseFormat/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/customParseFormat/index.d.ts new file mode 100644 index 0000000..7da585e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/customParseFormat/index.d.ts @@ -0,0 +1,8 @@ +import { PluginFunc } from 'dayjs/esm' + +declare interface PluginOptions { + parseTwoDigitYear?: (yearString: string) => number +} + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/customParseFormat/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/customParseFormat/index.js new file mode 100644 index 0000000..a83ceff --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/customParseFormat/index.js @@ -0,0 +1,320 @@ +import { u } from '../localizedFormat/utils'; +var formattingTokens = /(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g; +var match1 = /\d/; // 0 - 9 + +var match2 = /\d\d/; // 00 - 99 + +var match3 = /\d{3}/; // 000 - 999 + +var match4 = /\d{4}/; // 0000 - 9999 + +var match1to2 = /\d\d?/; // 0 - 99 + +var matchSigned = /[+-]?\d+/; // -inf - inf + +var matchOffset = /[+-]\d\d:?(\d\d)?|Z/; // +00:00 -00:00 +0000 or -0000 +00 or Z + +var matchWord = /\d*[^\s\d-_:/()]+/; // Word + +var locale = {}; + +var parseTwoDigitYear = function parseTwoDigitYear(input) { + input = +input; + return input + (input > 68 ? 1900 : 2000); +}; + +function offsetFromString(string) { + if (!string) return 0; + if (string === 'Z') return 0; + var parts = string.match(/([+-]|\d\d)/g); + var minutes = +(parts[1] * 60) + (+parts[2] || 0); + return minutes === 0 ? 0 : parts[0] === '+' ? -minutes : minutes; // eslint-disable-line no-nested-ternary +} + +var addInput = function addInput(property) { + return function (input) { + this[property] = +input; + }; +}; + +var zoneExpressions = [matchOffset, function (input) { + var zone = this.zone || (this.zone = {}); + zone.offset = offsetFromString(input); +}]; + +var getLocalePart = function getLocalePart(name) { + var part = locale[name]; + return part && (part.indexOf ? part : part.s.concat(part.f)); +}; + +var meridiemMatch = function meridiemMatch(input, isLowerCase) { + var isAfternoon; + var _locale = locale, + meridiem = _locale.meridiem; + + if (!meridiem) { + isAfternoon = input === (isLowerCase ? 'pm' : 'PM'); + } else { + for (var i = 1; i <= 24; i += 1) { + // todo: fix input === meridiem(i, 0, isLowerCase) + if (input.indexOf(meridiem(i, 0, isLowerCase)) > -1) { + isAfternoon = i > 12; + break; + } + } + } + + return isAfternoon; +}; + +var expressions = { + A: [matchWord, function (input) { + this.afternoon = meridiemMatch(input, false); + }], + a: [matchWord, function (input) { + this.afternoon = meridiemMatch(input, true); + }], + S: [match1, function (input) { + this.milliseconds = +input * 100; + }], + SS: [match2, function (input) { + this.milliseconds = +input * 10; + }], + SSS: [match3, function (input) { + this.milliseconds = +input; + }], + s: [match1to2, addInput('seconds')], + ss: [match1to2, addInput('seconds')], + m: [match1to2, addInput('minutes')], + mm: [match1to2, addInput('minutes')], + H: [match1to2, addInput('hours')], + h: [match1to2, addInput('hours')], + HH: [match1to2, addInput('hours')], + hh: [match1to2, addInput('hours')], + D: [match1to2, addInput('day')], + DD: [match2, addInput('day')], + Do: [matchWord, function (input) { + var _locale2 = locale, + ordinal = _locale2.ordinal; + + var _input$match = input.match(/\d+/); + + this.day = _input$match[0]; + if (!ordinal) return; + + for (var i = 1; i <= 31; i += 1) { + if (ordinal(i).replace(/\[|\]/g, '') === input) { + this.day = i; + } + } + }], + M: [match1to2, addInput('month')], + MM: [match2, addInput('month')], + MMM: [matchWord, function (input) { + var months = getLocalePart('months'); + var monthsShort = getLocalePart('monthsShort'); + var matchIndex = (monthsShort || months.map(function (_) { + return _.slice(0, 3); + })).indexOf(input) + 1; + + if (matchIndex < 1) { + throw new Error(); + } + + this.month = matchIndex % 12 || matchIndex; + }], + MMMM: [matchWord, function (input) { + var months = getLocalePart('months'); + var matchIndex = months.indexOf(input) + 1; + + if (matchIndex < 1) { + throw new Error(); + } + + this.month = matchIndex % 12 || matchIndex; + }], + Y: [matchSigned, addInput('year')], + YY: [match2, function (input) { + this.year = parseTwoDigitYear(input); + }], + YYYY: [match4, addInput('year')], + Z: zoneExpressions, + ZZ: zoneExpressions +}; + +function correctHours(time) { + var afternoon = time.afternoon; + + if (afternoon !== undefined) { + var hours = time.hours; + + if (afternoon) { + if (hours < 12) { + time.hours += 12; + } + } else if (hours === 12) { + time.hours = 0; + } + + delete time.afternoon; + } +} + +function makeParser(format) { + format = u(format, locale && locale.formats); + var array = format.match(formattingTokens); + var length = array.length; + + for (var i = 0; i < length; i += 1) { + var token = array[i]; + var parseTo = expressions[token]; + var regex = parseTo && parseTo[0]; + var parser = parseTo && parseTo[1]; + + if (parser) { + array[i] = { + regex: regex, + parser: parser + }; + } else { + array[i] = token.replace(/^\[|\]$/g, ''); + } + } + + return function (input) { + var time = {}; + + for (var _i = 0, start = 0; _i < length; _i += 1) { + var _token = array[_i]; + + if (typeof _token === 'string') { + start += _token.length; + } else { + var _regex = _token.regex, + _parser = _token.parser; + var part = input.slice(start); + + var match = _regex.exec(part); + + var value = match[0]; + + _parser.call(time, value); + + input = input.replace(value, ''); + } + } + + correctHours(time); + return time; + }; +} + +var parseFormattedInput = function parseFormattedInput(input, format, utc) { + try { + if (['x', 'X'].indexOf(format) > -1) return new Date((format === 'X' ? 1000 : 1) * input); + var parser = makeParser(format); + + var _parser2 = parser(input), + year = _parser2.year, + month = _parser2.month, + day = _parser2.day, + hours = _parser2.hours, + minutes = _parser2.minutes, + seconds = _parser2.seconds, + milliseconds = _parser2.milliseconds, + zone = _parser2.zone; + + var now = new Date(); + var d = day || (!year && !month ? now.getDate() : 1); + var y = year || now.getFullYear(); + var M = 0; + + if (!(year && !month)) { + M = month > 0 ? month - 1 : now.getMonth(); + } + + var h = hours || 0; + var m = minutes || 0; + var s = seconds || 0; + var ms = milliseconds || 0; + + if (zone) { + return new Date(Date.UTC(y, M, d, h, m, s, ms + zone.offset * 60 * 1000)); + } + + if (utc) { + return new Date(Date.UTC(y, M, d, h, m, s, ms)); + } + + return new Date(y, M, d, h, m, s, ms); + } catch (e) { + return new Date(''); // Invalid Date + } +}; + +export default (function (o, C, d) { + d.p.customParseFormat = true; + + if (o && o.parseTwoDigitYear) { + parseTwoDigitYear = o.parseTwoDigitYear; + } + + var proto = C.prototype; + var oldParse = proto.parse; + + proto.parse = function (cfg) { + var date = cfg.date, + utc = cfg.utc, + args = cfg.args; + this.$u = utc; + var format = args[1]; + + if (typeof format === 'string') { + var isStrictWithoutLocale = args[2] === true; + var isStrictWithLocale = args[3] === true; + var isStrict = isStrictWithoutLocale || isStrictWithLocale; + var pl = args[2]; + + if (isStrictWithLocale) { + pl = args[2]; + } + + locale = this.$locale(); + + if (!isStrictWithoutLocale && pl) { + locale = d.Ls[pl]; + } + + this.$d = parseFormattedInput(date, format, utc); + this.init(); + if (pl && pl !== true) this.$L = this.locale(pl).$L; // use != to treat + // input number 1410715640579 and format string '1410715640579' equal + // eslint-disable-next-line eqeqeq + + if (isStrict && date != this.format(format)) { + this.$d = new Date(''); + } // reset global locale to make parallel unit test + + + locale = {}; + } else if (format instanceof Array) { + var len = format.length; + + for (var i = 1; i <= len; i += 1) { + args[1] = format[i - 1]; + var result = d.apply(this, args); + + if (result.isValid()) { + this.$d = result.$d; + this.$L = result.$L; + this.init(); + break; + } + + if (i === len) this.$d = new Date(''); + } + } else { + oldParse.call(this, cfg); + } + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/dayOfYear/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/dayOfYear/index.d.ts new file mode 100644 index 0000000..4b9601e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/dayOfYear/index.d.ts @@ -0,0 +1,11 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + dayOfYear(): number + dayOfYear(value: number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/dayOfYear/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/dayOfYear/index.js new file mode 100644 index 0000000..0cb1158 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/dayOfYear/index.js @@ -0,0 +1,9 @@ +export default (function (o, c, d) { + var proto = c.prototype; + + proto.dayOfYear = function (input) { + // d(this) is for badMutable + var dayOfYear = Math.round((d(this).startOf('day') - d(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add(input - dayOfYear, 'day'); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/devHelper/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/devHelper/index.d.ts new file mode 100644 index 0000000..a17c896 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/devHelper/index.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/devHelper/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/devHelper/index.js new file mode 100644 index 0000000..9e2af82 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/devHelper/index.js @@ -0,0 +1,38 @@ +/* eslint-disable no-console */ +export default (function (o, c, d) { + /* istanbul ignore next line */ + if (!process || process.env.NODE_ENV !== 'production') { + var proto = c.prototype; + var oldParse = proto.parse; + + proto.parse = function (cfg) { + var date = cfg.date; + + if (typeof date === 'string' && date.length === 13) { + console.warn("To parse a Unix timestamp like " + date + ", you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds"); + } + + if (typeof date === 'number' && String(date).length === 4) { + console.warn("Guessing you may want to parse the Year " + date + ", you should pass it as a String " + date + ", not a Number. Otherwise, " + date + " will be treated as a Unix timestamp"); + } + + if (cfg.args.length >= 2 && !d.p.customParseFormat) { + console.warn("To parse a date-time string like " + date + " using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format"); + } + + return oldParse.bind(this)(cfg); + }; + + var oldLocale = d.locale; + + d.locale = function (preset, object, isLocal) { + if (typeof object === 'undefined' && typeof preset === 'string') { + if (!d.Ls[preset]) { + console.warn("Guessing you may want to use locale " + preset + ", you have to load it before using it. https://day.js.org/docs/en/i18n/loading-into-nodejs"); + } + } + + return oldLocale(preset, object, isLocal); + }; + } +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/duration/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/duration/index.d.ts new file mode 100644 index 0000000..dc974a5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/duration/index.d.ts @@ -0,0 +1,88 @@ +import { PluginFunc } from 'dayjs/esm' +import { OpUnitType, UnitTypeLongPlural } from 'dayjs/esm'; + +declare const plugin: PluginFunc +export as namespace plugin; +export = plugin + +declare namespace plugin { + /** + * @deprecated Please use more strict types + */ + type DurationInputType = string | number | object + /** + * @deprecated Please use more strict types + */ + type DurationAddType = number | object | Duration + + type DurationUnitsObjectType = Partial<{ + [unit in Exclude | "weeks"]: number + }>; + type DurationUnitType = Exclude + type CreateDurationType = + ((units: DurationUnitsObjectType) => Duration) + & ((time: number, unit?: DurationUnitType) => Duration) + & ((ISO_8601: string) => Duration) + type AddDurationType = CreateDurationType & ((duration: Duration) => Duration) + + interface Duration { + new (input: string | number | object, unit?: string, locale?: string): Duration + + clone(): Duration + + humanize(withSuffix?: boolean): string + + milliseconds(): number + asMilliseconds(): number + + seconds(): number + asSeconds(): number + + minutes(): number + asMinutes(): number + + hours(): number + asHours(): number + + days(): number + asDays(): number + + weeks(): number + asWeeks(): number + + months(): number + asMonths(): number + + years(): number + asYears(): number + + as(unit: DurationUnitType): number + + get(unit: DurationUnitType): number + + add: AddDurationType + + subtract: AddDurationType + + toJSON(): string + + toISOString(): string + + format(formatStr?: string): string + + locale(locale: string): Duration + } +} + +declare module 'dayjs/esm' { + interface Dayjs { + add(duration: plugin.Duration): Dayjs + subtract(duration: plugin.Duration): Dayjs + } + + /** + * @param time If unit is not present, time treated as number of milliseconds + */ + export const duration: plugin.CreateDurationType; + export function isDuration(d: any): d is plugin.Duration +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/duration/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/duration/index.js new file mode 100644 index 0000000..43a6155 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/duration/index.js @@ -0,0 +1,341 @@ +import { MILLISECONDS_A_DAY, MILLISECONDS_A_HOUR, MILLISECONDS_A_MINUTE, MILLISECONDS_A_SECOND, MILLISECONDS_A_WEEK, REGEX_FORMAT } from '../../constant'; +var MILLISECONDS_A_YEAR = MILLISECONDS_A_DAY * 365; +var MILLISECONDS_A_MONTH = MILLISECONDS_A_DAY * 30; +var durationRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; +var unitToMS = { + years: MILLISECONDS_A_YEAR, + months: MILLISECONDS_A_MONTH, + days: MILLISECONDS_A_DAY, + hours: MILLISECONDS_A_HOUR, + minutes: MILLISECONDS_A_MINUTE, + seconds: MILLISECONDS_A_SECOND, + milliseconds: 1, + weeks: MILLISECONDS_A_WEEK +}; + +var isDuration = function isDuration(d) { + return d instanceof Duration; +}; // eslint-disable-line no-use-before-define + + +var $d; +var $u; + +var wrapper = function wrapper(input, instance, unit) { + return new Duration(input, unit, instance.$l); +}; // eslint-disable-line no-use-before-define + + +var prettyUnit = function prettyUnit(unit) { + return $u.p(unit) + "s"; +}; + +var isNegative = function isNegative(number) { + return number < 0; +}; + +var roundNumber = function roundNumber(number) { + return isNegative(number) ? Math.ceil(number) : Math.floor(number); +}; + +var absolute = function absolute(number) { + return Math.abs(number); +}; + +var getNumberUnitFormat = function getNumberUnitFormat(number, unit) { + if (!number) { + return { + negative: false, + format: '' + }; + } + + if (isNegative(number)) { + return { + negative: true, + format: "" + absolute(number) + unit + }; + } + + return { + negative: false, + format: "" + number + unit + }; +}; + +var Duration = /*#__PURE__*/function () { + function Duration(input, unit, locale) { + var _this = this; + + this.$d = {}; + this.$l = locale; + + if (input === undefined) { + this.$ms = 0; + this.parseFromMilliseconds(); + } + + if (unit) { + return wrapper(input * unitToMS[prettyUnit(unit)], this); + } + + if (typeof input === 'number') { + this.$ms = input; + this.parseFromMilliseconds(); + return this; + } + + if (typeof input === 'object') { + Object.keys(input).forEach(function (k) { + _this.$d[prettyUnit(k)] = input[k]; + }); + this.calMilliseconds(); + return this; + } + + if (typeof input === 'string') { + var d = input.match(durationRegex); + + if (d) { + var properties = d.slice(2); + var numberD = properties.map(function (value) { + return value != null ? Number(value) : 0; + }); + this.$d.years = numberD[0]; + this.$d.months = numberD[1]; + this.$d.weeks = numberD[2]; + this.$d.days = numberD[3]; + this.$d.hours = numberD[4]; + this.$d.minutes = numberD[5]; + this.$d.seconds = numberD[6]; + this.calMilliseconds(); + return this; + } + } + + return this; + } + + var _proto = Duration.prototype; + + _proto.calMilliseconds = function calMilliseconds() { + var _this2 = this; + + this.$ms = Object.keys(this.$d).reduce(function (total, unit) { + return total + (_this2.$d[unit] || 0) * unitToMS[unit]; + }, 0); + }; + + _proto.parseFromMilliseconds = function parseFromMilliseconds() { + var $ms = this.$ms; + this.$d.years = roundNumber($ms / MILLISECONDS_A_YEAR); + $ms %= MILLISECONDS_A_YEAR; + this.$d.months = roundNumber($ms / MILLISECONDS_A_MONTH); + $ms %= MILLISECONDS_A_MONTH; + this.$d.days = roundNumber($ms / MILLISECONDS_A_DAY); + $ms %= MILLISECONDS_A_DAY; + this.$d.hours = roundNumber($ms / MILLISECONDS_A_HOUR); + $ms %= MILLISECONDS_A_HOUR; + this.$d.minutes = roundNumber($ms / MILLISECONDS_A_MINUTE); + $ms %= MILLISECONDS_A_MINUTE; + this.$d.seconds = roundNumber($ms / MILLISECONDS_A_SECOND); + $ms %= MILLISECONDS_A_SECOND; + this.$d.milliseconds = $ms; + }; + + _proto.toISOString = function toISOString() { + var Y = getNumberUnitFormat(this.$d.years, 'Y'); + var M = getNumberUnitFormat(this.$d.months, 'M'); + var days = +this.$d.days || 0; + + if (this.$d.weeks) { + days += this.$d.weeks * 7; + } + + var D = getNumberUnitFormat(days, 'D'); + var H = getNumberUnitFormat(this.$d.hours, 'H'); + var m = getNumberUnitFormat(this.$d.minutes, 'M'); + var seconds = this.$d.seconds || 0; + + if (this.$d.milliseconds) { + seconds += this.$d.milliseconds / 1000; + } + + var S = getNumberUnitFormat(seconds, 'S'); + var negativeMode = Y.negative || M.negative || D.negative || H.negative || m.negative || S.negative; + var T = H.format || m.format || S.format ? 'T' : ''; + var P = negativeMode ? '-' : ''; + var result = P + "P" + Y.format + M.format + D.format + T + H.format + m.format + S.format; + return result === 'P' || result === '-P' ? 'P0D' : result; + }; + + _proto.toJSON = function toJSON() { + return this.toISOString(); + }; + + _proto.format = function format(formatStr) { + var str = formatStr || 'YYYY-MM-DDTHH:mm:ss'; + var matches = { + Y: this.$d.years, + YY: $u.s(this.$d.years, 2, '0'), + YYYY: $u.s(this.$d.years, 4, '0'), + M: this.$d.months, + MM: $u.s(this.$d.months, 2, '0'), + D: this.$d.days, + DD: $u.s(this.$d.days, 2, '0'), + H: this.$d.hours, + HH: $u.s(this.$d.hours, 2, '0'), + m: this.$d.minutes, + mm: $u.s(this.$d.minutes, 2, '0'), + s: this.$d.seconds, + ss: $u.s(this.$d.seconds, 2, '0'), + SSS: $u.s(this.$d.milliseconds, 3, '0') + }; + return str.replace(REGEX_FORMAT, function (match, $1) { + return $1 || String(matches[match]); + }); + }; + + _proto.as = function as(unit) { + return this.$ms / unitToMS[prettyUnit(unit)]; + }; + + _proto.get = function get(unit) { + var base = this.$ms; + var pUnit = prettyUnit(unit); + + if (pUnit === 'milliseconds') { + base %= 1000; + } else if (pUnit === 'weeks') { + base = roundNumber(base / unitToMS[pUnit]); + } else { + base = this.$d[pUnit]; + } + + return base === 0 ? 0 : base; // a === 0 will be true on both 0 and -0 + }; + + _proto.add = function add(input, unit, isSubtract) { + var another; + + if (unit) { + another = input * unitToMS[prettyUnit(unit)]; + } else if (isDuration(input)) { + another = input.$ms; + } else { + another = wrapper(input, this).$ms; + } + + return wrapper(this.$ms + another * (isSubtract ? -1 : 1), this); + }; + + _proto.subtract = function subtract(input, unit) { + return this.add(input, unit, true); + }; + + _proto.locale = function locale(l) { + var that = this.clone(); + that.$l = l; + return that; + }; + + _proto.clone = function clone() { + return wrapper(this.$ms, this); + }; + + _proto.humanize = function humanize(withSuffix) { + return $d().add(this.$ms, 'ms').locale(this.$l).fromNow(!withSuffix); + }; + + _proto.milliseconds = function milliseconds() { + return this.get('milliseconds'); + }; + + _proto.asMilliseconds = function asMilliseconds() { + return this.as('milliseconds'); + }; + + _proto.seconds = function seconds() { + return this.get('seconds'); + }; + + _proto.asSeconds = function asSeconds() { + return this.as('seconds'); + }; + + _proto.minutes = function minutes() { + return this.get('minutes'); + }; + + _proto.asMinutes = function asMinutes() { + return this.as('minutes'); + }; + + _proto.hours = function hours() { + return this.get('hours'); + }; + + _proto.asHours = function asHours() { + return this.as('hours'); + }; + + _proto.days = function days() { + return this.get('days'); + }; + + _proto.asDays = function asDays() { + return this.as('days'); + }; + + _proto.weeks = function weeks() { + return this.get('weeks'); + }; + + _proto.asWeeks = function asWeeks() { + return this.as('weeks'); + }; + + _proto.months = function months() { + return this.get('months'); + }; + + _proto.asMonths = function asMonths() { + return this.as('months'); + }; + + _proto.years = function years() { + return this.get('years'); + }; + + _proto.asYears = function asYears() { + return this.as('years'); + }; + + return Duration; +}(); + +export default (function (option, Dayjs, dayjs) { + $d = dayjs; + $u = dayjs().$utils(); + + dayjs.duration = function (input, unit) { + var $l = dayjs.locale(); + return wrapper(input, { + $l: $l + }, unit); + }; + + dayjs.isDuration = isDuration; + var oldAdd = Dayjs.prototype.add; + var oldSubtract = Dayjs.prototype.subtract; + + Dayjs.prototype.add = function (value, unit) { + if (isDuration(value)) value = value.asMilliseconds(); + return oldAdd.bind(this)(value, unit); + }; + + Dayjs.prototype.subtract = function (value, unit) { + if (isDuration(value)) value = value.asMilliseconds(); + return oldSubtract.bind(this)(value, unit); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isBetween/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isBetween/index.d.ts new file mode 100644 index 0000000..1c62711 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isBetween/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isBetween(a: ConfigType, b: ConfigType, c?: OpUnitType | null, d?: '()' | '[]' | '[)' | '(]'): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isBetween/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isBetween/index.js new file mode 100644 index 0000000..2182a89 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isBetween/index.js @@ -0,0 +1,10 @@ +export default (function (o, c, d) { + c.prototype.isBetween = function (a, b, u, i) { + var dA = d(a); + var dB = d(b); + i = i || '()'; + var dAi = i[0] === '('; + var dBi = i[1] === ')'; + return (dAi ? this.isAfter(dA, u) : !this.isBefore(dA, u)) && (dBi ? this.isBefore(dB, u) : !this.isAfter(dB, u)) || (dAi ? this.isBefore(dA, u) : !this.isAfter(dA, u)) && (dBi ? this.isAfter(dB, u) : !this.isBefore(dB, u)); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isLeapYear/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isLeapYear/index.d.ts new file mode 100644 index 0000000..627ec5a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isLeapYear/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isLeapYear(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isLeapYear/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isLeapYear/index.js new file mode 100644 index 0000000..bf1309d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isLeapYear/index.js @@ -0,0 +1,7 @@ +export default (function (o, c) { + var proto = c.prototype; + + proto.isLeapYear = function () { + return this.$y % 4 === 0 && this.$y % 100 !== 0 || this.$y % 400 === 0; + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isMoment/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isMoment/index.d.ts new file mode 100644 index 0000000..6e3a69f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isMoment/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + + export function isMoment(input: any): boolean + +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isMoment/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isMoment/index.js new file mode 100644 index 0000000..48c8a89 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isMoment/index.js @@ -0,0 +1,5 @@ +export default (function (o, c, f) { + f.isMoment = function (input) { + return f.isDayjs(input); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrAfter/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrAfter/index.d.ts new file mode 100644 index 0000000..b4bc270 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrAfter/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isSameOrAfter(date: ConfigType, unit?: OpUnitType): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrAfter/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrAfter/index.js new file mode 100644 index 0000000..6a5c56f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrAfter/index.js @@ -0,0 +1,5 @@ +export default (function (o, c) { + c.prototype.isSameOrAfter = function (that, units) { + return this.isSame(that, units) || this.isAfter(that, units); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrBefore/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrBefore/index.d.ts new file mode 100644 index 0000000..c0a6c94 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrBefore/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isSameOrBefore(date: ConfigType, unit?: OpUnitType): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrBefore/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrBefore/index.js new file mode 100644 index 0000000..18d526a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isSameOrBefore/index.js @@ -0,0 +1,5 @@ +export default (function (o, c) { + c.prototype.isSameOrBefore = function (that, units) { + return this.isSame(that, units) || this.isBefore(that, units); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isToday/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isToday/index.d.ts new file mode 100644 index 0000000..8d55da8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isToday/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isToday(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isToday/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isToday/index.js new file mode 100644 index 0000000..93b36c8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isToday/index.js @@ -0,0 +1,9 @@ +export default (function (o, c, d) { + var proto = c.prototype; + + proto.isToday = function () { + var comparisonTemplate = 'YYYY-MM-DD'; + var now = d(); + return this.format(comparisonTemplate) === now.format(comparisonTemplate); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isTomorrow/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isTomorrow/index.d.ts new file mode 100644 index 0000000..7652237 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isTomorrow/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isTomorrow(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isTomorrow/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isTomorrow/index.js new file mode 100644 index 0000000..8cc7238 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isTomorrow/index.js @@ -0,0 +1,9 @@ +export default (function (o, c, d) { + var proto = c.prototype; + + proto.isTomorrow = function () { + var comparisonTemplate = 'YYYY-MM-DD'; + var tomorrow = d().add(1, 'day'); + return this.format(comparisonTemplate) === tomorrow.format(comparisonTemplate); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isYesterday/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isYesterday/index.d.ts new file mode 100644 index 0000000..f4370dc --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isYesterday/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isYesterday(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isYesterday/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isYesterday/index.js new file mode 100644 index 0000000..fa55373 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isYesterday/index.js @@ -0,0 +1,9 @@ +export default (function (o, c, d) { + var proto = c.prototype; + + proto.isYesterday = function () { + var comparisonTemplate = 'YYYY-MM-DD'; + var yesterday = d().subtract(1, 'day'); + return this.format(comparisonTemplate) === yesterday.format(comparisonTemplate); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeek/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeek/index.d.ts new file mode 100644 index 0000000..e3f83cf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeek/index.d.ts @@ -0,0 +1,27 @@ +import { PluginFunc, OpUnitType, ConfigType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +type ISOUnitType = OpUnitType | 'isoWeek'; + +declare module 'dayjs/esm' { + interface Dayjs { + isoWeekYear(): number + isoWeek(): number + isoWeek(value: number): Dayjs + + isoWeekday(): number + isoWeekday(value: number): Dayjs + + startOf(unit: ISOUnitType): Dayjs + + endOf(unit: ISOUnitType): Dayjs + + isSame(date: ConfigType, unit?: ISOUnitType): boolean + + isBefore(date: ConfigType, unit?: ISOUnitType): boolean + + isAfter(date: ConfigType, unit?: ISOUnitType): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeek/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeek/index.js new file mode 100644 index 0000000..289ea7c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeek/index.js @@ -0,0 +1,57 @@ +import { D, W, Y } from '../../constant'; +var isoWeekPrettyUnit = 'isoweek'; +export default (function (o, c, d) { + var getYearFirstThursday = function getYearFirstThursday(year, isUtc) { + var yearFirstDay = (isUtc ? d.utc : d)().year(year).startOf(Y); + var addDiffDays = 4 - yearFirstDay.isoWeekday(); + + if (yearFirstDay.isoWeekday() > 4) { + addDiffDays += 7; + } + + return yearFirstDay.add(addDiffDays, D); + }; + + var getCurrentWeekThursday = function getCurrentWeekThursday(ins) { + return ins.add(4 - ins.isoWeekday(), D); + }; + + var proto = c.prototype; + + proto.isoWeekYear = function () { + var nowWeekThursday = getCurrentWeekThursday(this); + return nowWeekThursday.year(); + }; + + proto.isoWeek = function (week) { + if (!this.$utils().u(week)) { + return this.add((week - this.isoWeek()) * 7, D); + } + + var nowWeekThursday = getCurrentWeekThursday(this); + var diffWeekThursday = getYearFirstThursday(this.isoWeekYear(), this.$u); + return nowWeekThursday.diff(diffWeekThursday, W) + 1; + }; + + proto.isoWeekday = function (week) { + if (!this.$utils().u(week)) { + return this.day(this.day() % 7 ? week : week - 7); + } + + return this.day() || 7; + }; + + var oldStartOf = proto.startOf; + + proto.startOf = function (units, startOf) { + var utils = this.$utils(); + var isStartOf = !utils.u(startOf) ? startOf : true; + var unit = utils.p(units); + + if (unit === isoWeekPrettyUnit) { + return isStartOf ? this.date(this.date() - (this.isoWeekday() - 1)).startOf('day') : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf('day'); + } + + return oldStartOf.bind(this)(units, startOf); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeeksInYear/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeeksInYear/index.d.ts new file mode 100644 index 0000000..986360f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeeksInYear/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + isoWeeksInYear(): number + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeeksInYear/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeeksInYear/index.js new file mode 100644 index 0000000..7161894 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/isoWeeksInYear/index.js @@ -0,0 +1,15 @@ +export default (function (o, c) { + var proto = c.prototype; + + proto.isoWeeksInYear = function () { + var isLeapYear = this.isLeapYear(); + var last = this.endOf('y'); + var day = last.day(); + + if (day === 4 || isLeapYear && day === 5) { + return 53; + } + + return 52; + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localeData/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localeData/index.d.ts new file mode 100644 index 0000000..1410fde --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localeData/index.d.ts @@ -0,0 +1,42 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + type WeekdayNames = [string, string, string, string, string, string, string]; + type MonthNames = [string, string, string, string, string, string, string, string, string, string, string, string]; + + interface InstanceLocaleDataReturn { + firstDayOfWeek(): number; + weekdays(instance?: Dayjs): WeekdayNames; + weekdaysShort(instance?: Dayjs): WeekdayNames; + weekdaysMin(instance?: Dayjs): WeekdayNames; + months(instance?: Dayjs): MonthNames; + monthsShort(instance?: Dayjs): MonthNames; + longDateFormat(format: string): string; + meridiem(hour?: number, minute?: number, isLower?: boolean): string; + } + + interface GlobalLocaleDataReturn { + firstDayOfWeek(): number; + weekdays(): WeekdayNames; + weekdaysShort(): WeekdayNames; + weekdaysMin(): WeekdayNames; + months(): MonthNames; + monthsShort(): MonthNames; + longDateFormat(format: string): string; + meridiem(hour?: number, minute?: number, isLower?: boolean): string; + } + + interface Dayjs { + localeData(): InstanceLocaleDataReturn; + } + + export function weekdays(localOrder?: boolean): WeekdayNames; + export function weekdaysShort(localOrder?: boolean): WeekdayNames; + export function weekdaysMin(localOrder?: boolean): WeekdayNames; + export function monthsShort(): MonthNames; + export function months(): MonthNames; + export function localeData(): GlobalLocaleDataReturn; +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localeData/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localeData/index.js new file mode 100644 index 0000000..c48d92c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localeData/index.js @@ -0,0 +1,114 @@ +import { t } from '../localizedFormat/utils'; +export default (function (o, c, dayjs) { + // locale needed later + var proto = c.prototype; + + var getLocalePart = function getLocalePart(part) { + return part && (part.indexOf ? part : part.s); + }; + + var getShort = function getShort(ins, target, full, num, localeOrder) { + var locale = ins.name ? ins : ins.$locale(); + var targetLocale = getLocalePart(locale[target]); + var fullLocale = getLocalePart(locale[full]); + var result = targetLocale || fullLocale.map(function (f) { + return f.slice(0, num); + }); + if (!localeOrder) return result; + var weekStart = locale.weekStart; + return result.map(function (_, index) { + return result[(index + (weekStart || 0)) % 7]; + }); + }; + + var getDayjsLocaleObject = function getDayjsLocaleObject() { + return dayjs.Ls[dayjs.locale()]; + }; + + var getLongDateFormat = function getLongDateFormat(l, format) { + return l.formats[format] || t(l.formats[format.toUpperCase()]); + }; + + var localeData = function localeData() { + var _this = this; + + return { + months: function months(instance) { + return instance ? instance.format('MMMM') : getShort(_this, 'months'); + }, + monthsShort: function monthsShort(instance) { + return instance ? instance.format('MMM') : getShort(_this, 'monthsShort', 'months', 3); + }, + firstDayOfWeek: function firstDayOfWeek() { + return _this.$locale().weekStart || 0; + }, + weekdays: function weekdays(instance) { + return instance ? instance.format('dddd') : getShort(_this, 'weekdays'); + }, + weekdaysMin: function weekdaysMin(instance) { + return instance ? instance.format('dd') : getShort(_this, 'weekdaysMin', 'weekdays', 2); + }, + weekdaysShort: function weekdaysShort(instance) { + return instance ? instance.format('ddd') : getShort(_this, 'weekdaysShort', 'weekdays', 3); + }, + longDateFormat: function longDateFormat(format) { + return getLongDateFormat(_this.$locale(), format); + }, + meridiem: this.$locale().meridiem, + ordinal: this.$locale().ordinal + }; + }; + + proto.localeData = function () { + return localeData.bind(this)(); + }; + + dayjs.localeData = function () { + var localeObject = getDayjsLocaleObject(); + return { + firstDayOfWeek: function firstDayOfWeek() { + return localeObject.weekStart || 0; + }, + weekdays: function weekdays() { + return dayjs.weekdays(); + }, + weekdaysShort: function weekdaysShort() { + return dayjs.weekdaysShort(); + }, + weekdaysMin: function weekdaysMin() { + return dayjs.weekdaysMin(); + }, + months: function months() { + return dayjs.months(); + }, + monthsShort: function monthsShort() { + return dayjs.monthsShort(); + }, + longDateFormat: function longDateFormat(format) { + return getLongDateFormat(localeObject, format); + }, + meridiem: localeObject.meridiem, + ordinal: localeObject.ordinal + }; + }; + + dayjs.months = function () { + return getShort(getDayjsLocaleObject(), 'months'); + }; + + dayjs.monthsShort = function () { + return getShort(getDayjsLocaleObject(), 'monthsShort', 'months', 3); + }; + + dayjs.weekdays = function (localeOrder) { + return getShort(getDayjsLocaleObject(), 'weekdays', null, null, localeOrder); + }; + + dayjs.weekdaysShort = function (localeOrder) { + return getShort(getDayjsLocaleObject(), 'weekdaysShort', 'weekdays', 3, localeOrder); + }; + + dayjs.weekdaysMin = function (localeOrder) { + return getShort(getDayjsLocaleObject(), 'weekdaysMin', 'weekdays', 2, localeOrder); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/index.d.ts new file mode 100644 index 0000000..a17c896 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/index.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/index.js new file mode 100644 index 0000000..9defb1f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/index.js @@ -0,0 +1,20 @@ +import { FORMAT_DEFAULT } from '../../constant'; +import { u, englishFormats } from './utils'; +export default (function (o, c, d) { + var proto = c.prototype; + var oldFormat = proto.format; + d.en.formats = englishFormats; + + proto.format = function (formatStr) { + if (formatStr === void 0) { + formatStr = FORMAT_DEFAULT; + } + + var _this$$locale = this.$locale(), + _this$$locale$formats = _this$$locale.formats, + formats = _this$$locale$formats === void 0 ? {} : _this$$locale$formats; + + var result = u(formatStr, formats); + return oldFormat.call(this, result); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/utils.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/utils.js new file mode 100644 index 0000000..1f48eff --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/localizedFormat/utils.js @@ -0,0 +1,20 @@ +// eslint-disable-next-line import/prefer-default-export +export var t = function t(format) { + return format.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function (_, a, b) { + return a || b.slice(1); + }); +}; +export var englishFormats = { + LTS: 'h:mm:ss A', + LT: 'h:mm A', + L: 'MM/DD/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY h:mm A', + LLLL: 'dddd, MMMM D, YYYY h:mm A' +}; +export var u = function u(formatStr, formats) { + return formatStr.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (_, a, b) { + var B = b && b.toUpperCase(); + return a || formats[b] || englishFormats[b] || t(formats[B]); + }); +}; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/minMax/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/minMax/index.d.ts new file mode 100644 index 0000000..b2b2712 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/minMax/index.d.ts @@ -0,0 +1,11 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + export function max(dayjs: Dayjs[]): Dayjs + export function max(...dayjs: Dayjs[]): Dayjs + export function min(dayjs: Dayjs[]): Dayjs + export function min(...dayjs: Dayjs[]): Dayjs +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/minMax/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/minMax/index.js new file mode 100644 index 0000000..750bbbf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/minMax/index.js @@ -0,0 +1,36 @@ +export default (function (o, c, d) { + var sortBy = function sortBy(method, dates) { + if (!dates || !dates.length || !dates[0] || dates.length === 1 && !dates[0].length) { + return null; + } + + if (dates.length === 1 && dates[0].length > 0) { + var _dates = dates; + dates = _dates[0]; + } + + var result; + var _dates2 = dates; + result = _dates2[0]; + + for (var i = 1; i < dates.length; i += 1) { + if (!dates[i].isValid() || dates[i][method](result)) { + result = dates[i]; + } + } + + return result; + }; + + d.max = function () { + var args = [].slice.call(arguments, 0); // eslint-disable-line prefer-rest-params + + return sortBy('isAfter', args); + }; + + d.min = function () { + var args = [].slice.call(arguments, 0); // eslint-disable-line prefer-rest-params + + return sortBy('isBefore', args); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/objectSupport/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/objectSupport/index.d.ts new file mode 100644 index 0000000..de0a4a6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/objectSupport/index.d.ts @@ -0,0 +1,12 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + set(argument: object): Dayjs + add(argument: object): Dayjs + subtract(argument: object): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/objectSupport/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/objectSupport/index.js new file mode 100644 index 0000000..2c970bf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/objectSupport/index.js @@ -0,0 +1,87 @@ +export default (function (o, c, dayjs) { + var proto = c.prototype; + + var isObject = function isObject(obj) { + return !(obj instanceof Date) && !(obj instanceof Array) && obj instanceof Object; + }; + + var prettyUnit = function prettyUnit(u) { + var unit = proto.$utils().p(u); + return unit === 'date' ? 'day' : unit; + }; + + var parseDate = function parseDate(cfg) { + var date = cfg.date, + utc = cfg.utc; + var $d = {}; + + if (isObject(date)) { + if (!Object.keys(date).length) { + return new Date(); + } + + var now = utc ? dayjs.utc() : dayjs(); + Object.keys(date).forEach(function (k) { + $d[prettyUnit(k)] = date[k]; + }); + var d = $d.day || (!$d.year && !($d.month >= 0) ? now.date() : 1); + var y = $d.year || now.year(); + var M = $d.month >= 0 ? $d.month : !$d.year && !$d.day ? now.month() : 0; // eslint-disable-line no-nested-ternary,max-len + + var h = $d.hour || 0; + var m = $d.minute || 0; + var s = $d.second || 0; + var ms = $d.millisecond || 0; + + if (utc) { + return new Date(Date.UTC(y, M, d, h, m, s, ms)); + } + + return new Date(y, M, d, h, m, s, ms); + } + + return date; + }; + + var oldParse = proto.parse; + + proto.parse = function (cfg) { + cfg.date = parseDate.bind(this)(cfg); + oldParse.bind(this)(cfg); + }; + + var oldSet = proto.set; + var oldAdd = proto.add; + + var callObject = function callObject(call, argument, string, offset) { + if (offset === void 0) { + offset = 1; + } + + if (argument instanceof Object) { + var keys = Object.keys(argument); + var chain = this; + keys.forEach(function (key) { + chain = call.bind(chain)(argument[key] * offset, key); + }); + return chain; + } + + return call.bind(this)(argument * offset, string); + }; + + proto.set = function (string, _int) { + _int = _int === undefined ? string : _int; + return callObject.bind(this)(function (i, s) { + return oldSet.bind(this)(s, i); + }, _int, string); + }; + + proto.add = function (number, string) { + return callObject.bind(this)(oldAdd, number, string); + }; + + proto.subtract = function (number, string) { + return callObject.bind(this)(oldAdd, number, string, -1); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/pluralGetSet/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/pluralGetSet/index.d.ts new file mode 100644 index 0000000..7ef7167 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/pluralGetSet/index.d.ts @@ -0,0 +1,44 @@ +import { PluginFunc, UnitType, ConfigType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + years(): number + + years(value: number): Dayjs + + months(): number + + months(value: number): Dayjs + + dates(): number + + dates(value: number): Dayjs + + weeks(): number + + weeks(value: number): Dayjs + + days(): number + + days(value: number): Dayjs + + hours(): number + + hours(value: number): Dayjs + + minutes(): number + + minutes(value: number): Dayjs + + seconds(): number + + seconds(value: number): Dayjs + + milliseconds(): number + + milliseconds(value: number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/pluralGetSet/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/pluralGetSet/index.js new file mode 100644 index 0000000..d8214d6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/pluralGetSet/index.js @@ -0,0 +1,7 @@ +export default (function (o, c) { + var proto = c.prototype; + var pluralAliases = ['milliseconds', 'seconds', 'minutes', 'hours', 'days', 'weeks', 'isoWeeks', 'months', 'quarters', 'years', 'dates']; + pluralAliases.forEach(function (alias) { + proto[alias] = proto[alias.replace(/s$/, '')]; + }); +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/preParsePostFormat/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/preParsePostFormat/index.d.ts new file mode 100644 index 0000000..a17c896 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/preParsePostFormat/index.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/preParsePostFormat/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/preParsePostFormat/index.js new file mode 100644 index 0000000..7654ccb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/preParsePostFormat/index.js @@ -0,0 +1,40 @@ +// Plugin template from https://day.js.org/docs/en/plugin/plugin +export default (function (option, dayjsClass) { + var oldParse = dayjsClass.prototype.parse; + + dayjsClass.prototype.parse = function (cfg) { + if (typeof cfg.date === 'string') { + var locale = this.$locale(); + cfg.date = locale && locale.preparse ? locale.preparse(cfg.date) : cfg.date; + } // original parse result + + + return oldParse.bind(this)(cfg); + }; // // overriding existing API + // // e.g. extend dayjs().format() + + + var oldFormat = dayjsClass.prototype.format; + + dayjsClass.prototype.format = function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + // original format result + var result = oldFormat.call.apply(oldFormat, [this].concat(args)); // return modified result + + var locale = this.$locale(); + return locale && locale.postformat ? locale.postformat(result) : result; + }; + + var oldFromTo = dayjsClass.prototype.fromToBase; + + if (oldFromTo) { + dayjsClass.prototype.fromToBase = function (input, withoutSuffix, instance, isFrom) { + var locale = this.$locale() || instance.$locale(); // original format result + + return oldFromTo.call(this, input, withoutSuffix, instance, isFrom, locale && locale.postformat); + }; + } +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/quarterOfYear/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/quarterOfYear/index.d.ts new file mode 100644 index 0000000..2148471 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/quarterOfYear/index.d.ts @@ -0,0 +1,26 @@ +import { PluginFunc, ConfigType, QUnitType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + quarter(): number + + quarter(quarter: number): Dayjs + + add(value: number, unit: QUnitType): Dayjs + + subtract(value: number, unit: QUnitType): Dayjs + + startOf(unit: QUnitType): Dayjs + + endOf(unit: QUnitType): Dayjs + + isSame(date: ConfigType, unit?: QUnitType): boolean + + isBefore(date: ConfigType, unit?: QUnitType): boolean + + isAfter(date: ConfigType, unit?: QUnitType): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/quarterOfYear/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/quarterOfYear/index.js new file mode 100644 index 0000000..e376889 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/quarterOfYear/index.js @@ -0,0 +1,41 @@ +import { Q, M, D } from '../../constant'; +export default (function (o, c) { + var proto = c.prototype; + + proto.quarter = function (quarter) { + if (!this.$utils().u(quarter)) { + return this.month(this.month() % 3 + (quarter - 1) * 3); + } + + return Math.ceil((this.month() + 1) / 3); + }; + + var oldAdd = proto.add; + + proto.add = function (number, units) { + number = Number(number); // eslint-disable-line no-param-reassign + + var unit = this.$utils().p(units); + + if (unit === Q) { + return this.add(number * 3, M); + } + + return oldAdd.bind(this)(number, units); + }; + + var oldStartOf = proto.startOf; + + proto.startOf = function (units, startOf) { + var utils = this.$utils(); + var isStartOf = !utils.u(startOf) ? startOf : true; + var unit = utils.p(units); + + if (unit === Q) { + var quarter = this.quarter() - 1; + return isStartOf ? this.month(quarter * 3).startOf(M).startOf(D) : this.month(quarter * 3 + 2).endOf(M).endOf(D); + } + + return oldStartOf.bind(this)(units, startOf); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/relativeTime/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/relativeTime/index.d.ts new file mode 100644 index 0000000..e1b17cf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/relativeTime/index.d.ts @@ -0,0 +1,24 @@ +import { PluginFunc, ConfigType } from 'dayjs/esm' + +declare interface RelativeTimeThreshold { + l: string + r?: number + d?: string +} + +declare interface RelativeTimeOptions { + rounding?: (num: number) => number + thresholds?: RelativeTimeThreshold[] +} + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + fromNow(withoutSuffix?: boolean): string + from(compared: ConfigType, withoutSuffix?: boolean): string + toNow(withoutSuffix?: boolean): string + to(compared: ConfigType, withoutSuffix?: boolean): string + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/relativeTime/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/relativeTime/index.js new file mode 100644 index 0000000..88fdbbe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/relativeTime/index.js @@ -0,0 +1,130 @@ +import * as C from '../../constant'; +export default (function (o, c, d) { + o = o || {}; + var proto = c.prototype; + var relObj = { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + }; + d.en.relativeTime = relObj; + + proto.fromToBase = function (input, withoutSuffix, instance, isFrom, postFormat) { + var loc = instance.$locale().relativeTime || relObj; + var T = o.thresholds || [{ + l: 's', + r: 44, + d: C.S + }, { + l: 'm', + r: 89 + }, { + l: 'mm', + r: 44, + d: C.MIN + }, { + l: 'h', + r: 89 + }, { + l: 'hh', + r: 21, + d: C.H + }, { + l: 'd', + r: 35 + }, { + l: 'dd', + r: 25, + d: C.D + }, { + l: 'M', + r: 45 + }, { + l: 'MM', + r: 10, + d: C.M + }, { + l: 'y', + r: 17 + }, { + l: 'yy', + d: C.Y + }]; + var Tl = T.length; + var result; + var out; + var isFuture; + + for (var i = 0; i < Tl; i += 1) { + var t = T[i]; + + if (t.d) { + result = isFrom ? d(input).diff(instance, t.d, true) : instance.diff(input, t.d, true); + } + + var abs = (o.rounding || Math.round)(Math.abs(result)); + isFuture = result > 0; + + if (abs <= t.r || !t.r) { + if (abs <= 1 && i > 0) t = T[i - 1]; // 1 minutes -> a minute, 0 seconds -> 0 second + + var format = loc[t.l]; + + if (postFormat) { + abs = postFormat("" + abs); + } + + if (typeof format === 'string') { + out = format.replace('%d', abs); + } else { + out = format(abs, withoutSuffix, t.l, isFuture); + } + + break; + } + } + + if (withoutSuffix) return out; + var pastOrFuture = isFuture ? loc.future : loc.past; + + if (typeof pastOrFuture === 'function') { + return pastOrFuture(out); + } + + return pastOrFuture.replace('%s', out); + }; + + function fromTo(input, withoutSuffix, instance, isFrom) { + return proto.fromToBase(input, withoutSuffix, instance, isFrom); + } + + proto.to = function (input, withoutSuffix) { + return fromTo(input, withoutSuffix, this, true); + }; + + proto.from = function (input, withoutSuffix) { + return fromTo(input, withoutSuffix, this); + }; + + var makeNow = function makeNow(thisDay) { + return thisDay.$u ? d.utc() : d(); + }; + + proto.toNow = function (withoutSuffix) { + return this.to(makeNow(this), withoutSuffix); + }; + + proto.fromNow = function (withoutSuffix) { + return this.from(makeNow(this), withoutSuffix); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/timezone/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/timezone/index.d.ts new file mode 100644 index 0000000..8d90359 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/timezone/index.d.ts @@ -0,0 +1,20 @@ +import { PluginFunc, ConfigType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + tz(timezone?: string, keepLocalTime?: boolean): Dayjs + offsetName(type?: 'short' | 'long'): string | undefined + } + + interface DayjsTimezone { + (date: ConfigType, timezone?: string): Dayjs + (date: ConfigType, format: string, timezone?: string): Dayjs + guess(): string + setDefault(timezone?: string): void + } + + const tz: DayjsTimezone +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/timezone/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/timezone/index.js new file mode 100644 index 0000000..ca76720 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/timezone/index.js @@ -0,0 +1,185 @@ +import { MIN, MS } from '../../constant'; +var typeToPos = { + year: 0, + month: 1, + day: 2, + hour: 3, + minute: 4, + second: 5 +}; // Cache time-zone lookups from Intl.DateTimeFormat, +// as it is a *very* slow method. + +var dtfCache = {}; + +var getDateTimeFormat = function getDateTimeFormat(timezone, options) { + if (options === void 0) { + options = {}; + } + + var timeZoneName = options.timeZoneName || 'short'; + var key = timezone + "|" + timeZoneName; + var dtf = dtfCache[key]; + + if (!dtf) { + dtf = new Intl.DateTimeFormat('en-US', { + hour12: false, + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + timeZoneName: timeZoneName + }); + dtfCache[key] = dtf; + } + + return dtf; +}; + +export default (function (o, c, d) { + var defaultTimezone; + + var makeFormatParts = function makeFormatParts(timestamp, timezone, options) { + if (options === void 0) { + options = {}; + } + + var date = new Date(timestamp); + var dtf = getDateTimeFormat(timezone, options); + return dtf.formatToParts(date); + }; + + var tzOffset = function tzOffset(timestamp, timezone) { + var formatResult = makeFormatParts(timestamp, timezone); + var filled = []; + + for (var i = 0; i < formatResult.length; i += 1) { + var _formatResult$i = formatResult[i], + type = _formatResult$i.type, + value = _formatResult$i.value; + var pos = typeToPos[type]; + + if (pos >= 0) { + filled[pos] = parseInt(value, 10); + } + } + + var hour = filled[3]; // Workaround for the same behavior in different node version + // https://github.com/nodejs/node/issues/33027 + + /* istanbul ignore next */ + + var fixedHour = hour === 24 ? 0 : hour; + var utcString = filled[0] + "-" + filled[1] + "-" + filled[2] + " " + fixedHour + ":" + filled[4] + ":" + filled[5] + ":000"; + var utcTs = d.utc(utcString).valueOf(); + var asTS = +timestamp; + var over = asTS % 1000; + asTS -= over; + return (utcTs - asTS) / (60 * 1000); + }; // find the right offset a given local time. The o input is our guess, which determines which + // offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST) + // https://github.com/moment/luxon/blob/master/src/datetime.js#L76 + + + var fixOffset = function fixOffset(localTS, o0, tz) { + // Our UTC time is just a guess because our offset is just a guess + var utcGuess = localTS - o0 * 60 * 1000; // Test whether the zone matches the offset for this ts + + var o2 = tzOffset(utcGuess, tz); // If so, offset didn't change and we're done + + if (o0 === o2) { + return [utcGuess, o0]; + } // If not, change the ts by the difference in the offset + + + utcGuess -= (o2 - o0) * 60 * 1000; // If that gives us the local time we want, we're done + + var o3 = tzOffset(utcGuess, tz); + + if (o2 === o3) { + return [utcGuess, o2]; + } // If it's different, we're in a hole time. + // The offset has changed, but the we don't adjust the time + + + return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)]; + }; + + var proto = c.prototype; + + proto.tz = function (timezone, keepLocalTime) { + if (timezone === void 0) { + timezone = defaultTimezone; + } + + var oldOffset = this.utcOffset(); + var date = this.toDate(); + var target = date.toLocaleString('en-US', { + timeZone: timezone + }); + var diff = Math.round((date - new Date(target)) / 1000 / 60); + var ins = d(target).$set(MS, this.$ms).utcOffset(-Math.round(date.getTimezoneOffset() / 15) * 15 - diff, true); + + if (keepLocalTime) { + var newOffset = ins.utcOffset(); + ins = ins.add(oldOffset - newOffset, MIN); + } + + ins.$x.$timezone = timezone; + return ins; + }; + + proto.offsetName = function (type) { + // type: short(default) / long + var zone = this.$x.$timezone || d.tz.guess(); + var result = makeFormatParts(this.valueOf(), zone, { + timeZoneName: type + }).find(function (m) { + return m.type.toLowerCase() === 'timezonename'; + }); + return result && result.value; + }; + + var oldStartOf = proto.startOf; + + proto.startOf = function (units, startOf) { + if (!this.$x || !this.$x.$timezone) { + return oldStartOf.call(this, units, startOf); + } + + var withoutTz = d(this.format('YYYY-MM-DD HH:mm:ss:SSS')); + var startOfWithoutTz = oldStartOf.call(withoutTz, units, startOf); + return startOfWithoutTz.tz(this.$x.$timezone, true); + }; + + d.tz = function (input, arg1, arg2) { + var parseFormat = arg2 && arg1; + var timezone = arg2 || arg1 || defaultTimezone; + var previousOffset = tzOffset(+d(), timezone); + + if (typeof input !== 'string') { + // timestamp number || js Date || Day.js + return d(input).tz(timezone); + } + + var localTs = d.utc(input, parseFormat).valueOf(); + + var _fixOffset = fixOffset(localTs, previousOffset, timezone), + targetTs = _fixOffset[0], + targetOffset = _fixOffset[1]; + + var ins = d(targetTs).utcOffset(targetOffset); + ins.$x.$timezone = timezone; + return ins; + }; + + d.tz.guess = function () { + return Intl.DateTimeFormat().resolvedOptions().timeZone; + }; + + d.tz.setDefault = function (timezone) { + defaultTimezone = timezone; + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toArray/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toArray/index.d.ts new file mode 100644 index 0000000..5033831 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toArray/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + toArray(): number[] + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toArray/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toArray/index.js new file mode 100644 index 0000000..2b795f4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toArray/index.js @@ -0,0 +1,7 @@ +export default (function (o, c) { + var proto = c.prototype; + + proto.toArray = function () { + return [this.$y, this.$M, this.$D, this.$H, this.$m, this.$s, this.$ms]; + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toObject/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toObject/index.d.ts new file mode 100644 index 0000000..ad21520 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toObject/index.d.ts @@ -0,0 +1,20 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +interface DayjsObject { + years: number + months: number + date: number + hours: number + minutes: number + seconds: number + milliseconds: number +} + +declare module 'dayjs/esm' { + interface Dayjs { + toObject(): DayjsObject + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toObject/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toObject/index.js new file mode 100644 index 0000000..e35d93f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/toObject/index.js @@ -0,0 +1,15 @@ +export default (function (o, c) { + var proto = c.prototype; + + proto.toObject = function () { + return { + years: this.$y, + months: this.$M, + date: this.$D, + hours: this.$H, + minutes: this.$m, + seconds: this.$s, + milliseconds: this.$ms + }; + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/updateLocale/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/updateLocale/index.d.ts new file mode 100644 index 0000000..994a884 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/updateLocale/index.d.ts @@ -0,0 +1,8 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + export function updateLocale(localeName: string, customConfig: Record): Record +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/updateLocale/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/updateLocale/index.js new file mode 100644 index 0000000..1b9965c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/updateLocale/index.js @@ -0,0 +1,12 @@ +export default (function (option, Dayjs, dayjs) { + dayjs.updateLocale = function (locale, customConfig) { + var localeList = dayjs.Ls; + var localeConfig = localeList[locale]; + if (!localeConfig) return; + var customConfigKeys = customConfig ? Object.keys(customConfig) : []; + customConfigKeys.forEach(function (c) { + localeConfig[c] = customConfig[c]; + }); + return localeConfig; // eslint-disable-line consistent-return + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/utc/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/utc/index.d.ts new file mode 100644 index 0000000..15c61fe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/utc/index.d.ts @@ -0,0 +1,19 @@ +import { PluginFunc, ConfigType } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + + utc(keepLocalTime?: boolean): Dayjs + + local(): Dayjs + + isUTC(): boolean + + utcOffset(offset: number | string, keepLocalTime?: boolean): Dayjs + } + + export function utc(config?: ConfigType, format?: string, strict?: boolean): Dayjs +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/utc/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/utc/index.js new file mode 100644 index 0000000..3b26e8d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/utc/index.js @@ -0,0 +1,188 @@ +import { MILLISECONDS_A_MINUTE, MIN } from '../../constant'; +var REGEX_VALID_OFFSET_FORMAT = /[+-]\d\d(?::?\d\d)?/g; +var REGEX_OFFSET_HOURS_MINUTES_FORMAT = /([+-]|\d\d)/g; + +function offsetFromString(value) { + if (value === void 0) { + value = ''; + } + + var offset = value.match(REGEX_VALID_OFFSET_FORMAT); + + if (!offset) { + return null; + } + + var _ref = ("" + offset[0]).match(REGEX_OFFSET_HOURS_MINUTES_FORMAT) || ['-', 0, 0], + indicator = _ref[0], + hoursOffset = _ref[1], + minutesOffset = _ref[2]; + + var totalOffsetInMinutes = +hoursOffset * 60 + +minutesOffset; + + if (totalOffsetInMinutes === 0) { + return 0; + } + + return indicator === '+' ? totalOffsetInMinutes : -totalOffsetInMinutes; +} + +export default (function (option, Dayjs, dayjs) { + var proto = Dayjs.prototype; + + dayjs.utc = function (date) { + var cfg = { + date: date, + utc: true, + args: arguments + }; // eslint-disable-line prefer-rest-params + + return new Dayjs(cfg); // eslint-disable-line no-use-before-define + }; + + proto.utc = function (keepLocalTime) { + var ins = dayjs(this.toDate(), { + locale: this.$L, + utc: true + }); + + if (keepLocalTime) { + return ins.add(this.utcOffset(), MIN); + } + + return ins; + }; + + proto.local = function () { + return dayjs(this.toDate(), { + locale: this.$L, + utc: false + }); + }; + + var oldParse = proto.parse; + + proto.parse = function (cfg) { + if (cfg.utc) { + this.$u = true; + } + + if (!this.$utils().u(cfg.$offset)) { + this.$offset = cfg.$offset; + } + + oldParse.call(this, cfg); + }; + + var oldInit = proto.init; + + proto.init = function () { + if (this.$u) { + var $d = this.$d; + this.$y = $d.getUTCFullYear(); + this.$M = $d.getUTCMonth(); + this.$D = $d.getUTCDate(); + this.$W = $d.getUTCDay(); + this.$H = $d.getUTCHours(); + this.$m = $d.getUTCMinutes(); + this.$s = $d.getUTCSeconds(); + this.$ms = $d.getUTCMilliseconds(); + } else { + oldInit.call(this); + } + }; + + var oldUtcOffset = proto.utcOffset; + + proto.utcOffset = function (input, keepLocalTime) { + var _this$$utils = this.$utils(), + u = _this$$utils.u; + + if (u(input)) { + if (this.$u) { + return 0; + } + + if (!u(this.$offset)) { + return this.$offset; + } + + return oldUtcOffset.call(this); + } + + if (typeof input === 'string') { + input = offsetFromString(input); + + if (input === null) { + return this; + } + } + + var offset = Math.abs(input) <= 16 ? input * 60 : input; + var ins = this; + + if (keepLocalTime) { + ins.$offset = offset; + ins.$u = input === 0; + return ins; + } + + if (input !== 0) { + var localTimezoneOffset = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset(); + ins = this.local().add(offset + localTimezoneOffset, MIN); + ins.$offset = offset; + ins.$x.$localOffset = localTimezoneOffset; + } else { + ins = this.utc(); + } + + return ins; + }; + + var oldFormat = proto.format; + var UTC_FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ss[Z]'; + + proto.format = function (formatStr) { + var str = formatStr || (this.$u ? UTC_FORMAT_DEFAULT : ''); + return oldFormat.call(this, str); + }; + + proto.valueOf = function () { + var addedOffset = !this.$utils().u(this.$offset) ? this.$offset + (this.$x.$localOffset || new Date().getTimezoneOffset()) : 0; + return this.$d.valueOf() - addedOffset * MILLISECONDS_A_MINUTE; + }; + + proto.isUTC = function () { + return !!this.$u; + }; + + proto.toISOString = function () { + return this.toDate().toISOString(); + }; + + proto.toString = function () { + return this.toDate().toUTCString(); + }; + + var oldToDate = proto.toDate; + + proto.toDate = function (type) { + if (type === 's' && this.$offset) { + return dayjs(this.format('YYYY-MM-DD HH:mm:ss:SSS')).toDate(); + } + + return oldToDate.call(this); + }; + + var oldDiff = proto.diff; + + proto.diff = function (input, units, _float) { + if (input && this.$u === input.$u) { + return oldDiff.call(this, input, units, _float); + } + + var localThis = this.local(); + var localInput = dayjs(input).local(); + return oldDiff.call(localThis, localInput, units, _float); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekOfYear/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekOfYear/index.d.ts new file mode 100644 index 0000000..340051b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekOfYear/index.d.ts @@ -0,0 +1,12 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + week(): number + + week(value : number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekOfYear/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekOfYear/index.js new file mode 100644 index 0000000..c92406e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekOfYear/index.js @@ -0,0 +1,44 @@ +import { MS, Y, D, W } from '../../constant'; +export default (function (o, c, d) { + var proto = c.prototype; + + proto.week = function (week) { + if (week === void 0) { + week = null; + } + + if (week !== null) { + return this.add((week - this.week()) * 7, D); + } + + var yearStart = this.$locale().yearStart || 1; + + if (this.month() === 11 && this.date() > 25) { + // d(this) is for badMutable + var nextYearStartDay = d(this).startOf(Y).add(1, Y).date(yearStart); + var thisEndOfWeek = d(this).endOf(W); + + if (nextYearStartDay.isBefore(thisEndOfWeek)) { + return 1; + } + } + + var yearStartDay = d(this).startOf(Y).date(yearStart); + var yearStartWeek = yearStartDay.startOf(W).subtract(1, MS); + var diffInWeek = this.diff(yearStartWeek, W, true); + + if (diffInWeek < 0) { + return d(this).startOf('week').week(); + } + + return Math.ceil(diffInWeek); + }; + + proto.weeks = function (week) { + if (week === void 0) { + week = null; + } + + return this.week(week); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekYear/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekYear/index.d.ts new file mode 100644 index 0000000..5b713e5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekYear/index.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + weekYear(): number + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekYear/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekYear/index.js new file mode 100644 index 0000000..140dcd4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekYear/index.js @@ -0,0 +1,19 @@ +export default (function (o, c) { + var proto = c.prototype; + + proto.weekYear = function () { + var month = this.month(); + var weekOfYear = this.week(); + var year = this.year(); + + if (weekOfYear === 1 && month === 11) { + return year + 1; + } + + if (month === 0 && weekOfYear >= 52) { + return year - 1; + } + + return year; + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekday/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekday/index.d.ts new file mode 100644 index 0000000..41945e7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekday/index.d.ts @@ -0,0 +1,12 @@ +import { PluginFunc } from 'dayjs/esm' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs/esm' { + interface Dayjs { + weekday(): number + + weekday(value: number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekday/index.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekday/index.js new file mode 100644 index 0000000..18032b3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/plugin/weekday/index.js @@ -0,0 +1,15 @@ +export default (function (o, c) { + var proto = c.prototype; + + proto.weekday = function (input) { + var weekStart = this.$locale().weekStart || 0; + var $W = this.$W; + var weekday = ($W < weekStart ? $W + 7 : $W) - weekStart; + + if (this.$utils().u(input)) { + return weekday; + } + + return this.subtract(weekday, 'day').add(input, 'day'); + }; +}); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/utils.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/utils.js new file mode 100644 index 0000000..b5a8131 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/esm/utils.js @@ -0,0 +1,58 @@ +import * as C from './constant'; + +var padStart = function padStart(string, length, pad) { + var s = String(string); + if (!s || s.length >= length) return string; + return "" + Array(length + 1 - s.length).join(pad) + string; +}; + +var padZoneStr = function padZoneStr(instance) { + var negMinutes = -instance.utcOffset(); + var minutes = Math.abs(negMinutes); + var hourOffset = Math.floor(minutes / 60); + var minuteOffset = minutes % 60; + return "" + (negMinutes <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + ":" + padStart(minuteOffset, 2, '0'); +}; + +var monthDiff = function monthDiff(a, b) { + // function from moment.js in order to keep the same result + if (a.date() < b.date()) return -monthDiff(b, a); + var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()); + var anchor = a.clone().add(wholeMonthDiff, C.M); + var c = b - anchor < 0; + var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M); + return +(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0); +}; + +var absFloor = function absFloor(n) { + return n < 0 ? Math.ceil(n) || 0 : Math.floor(n); +}; + +var prettyUnit = function prettyUnit(u) { + var special = { + M: C.M, + y: C.Y, + w: C.W, + d: C.D, + D: C.DATE, + h: C.H, + m: C.MIN, + s: C.S, + ms: C.MS, + Q: C.Q + }; + return special[u] || String(u || '').toLowerCase().replace(/s$/, ''); +}; + +var isUndefined = function isUndefined(s) { + return s === undefined; +}; + +export default { + s: padStart, + z: padZoneStr, + m: monthDiff, + a: absFloor, + p: prettyUnit, + u: isUndefined +}; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/index.d.ts new file mode 100644 index 0000000..86b3cfe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/index.d.ts @@ -0,0 +1,429 @@ +/// + +export = dayjs; + +declare function dayjs (date?: dayjs.ConfigType): dayjs.Dayjs + +declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, strict?: boolean): dayjs.Dayjs + +declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, locale?: string, strict?: boolean): dayjs.Dayjs + +declare namespace dayjs { + interface ConfigTypeMap { + default: string | number | Date | Dayjs | null | undefined + } + + export type ConfigType = ConfigTypeMap[keyof ConfigTypeMap] + + export interface FormatObject { locale?: string, format?: string, utc?: boolean } + + export type OptionType = FormatObject | string | string[] + + export type UnitTypeShort = 'd' | 'D' | 'M' | 'y' | 'h' | 'm' | 's' | 'ms' + + export type UnitTypeLong = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' | 'date' + + export type UnitTypeLongPlural = 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days' | 'months' | 'years' | 'dates' + + export type UnitType = UnitTypeLong | UnitTypeLongPlural | UnitTypeShort; + + export type OpUnitType = UnitType | "week" | "weeks" | 'w'; + export type QUnitType = UnitType | "quarter" | "quarters" | 'Q'; + export type ManipulateType = Omit; + class Dayjs { + constructor (config?: ConfigType) + /** + * All Day.js objects are immutable. Still, `dayjs#clone` can create a clone of the current object if you need one. + * ``` + * dayjs().clone()// => Dayjs + * dayjs(dayjs('2019-01-25')) // passing a Dayjs object to a constructor will also clone it + * ``` + * Docs: https://day.js.org/docs/en/parse/dayjs-clone + */ + clone(): Dayjs + /** + * This returns a `boolean` indicating whether the Day.js object contains a valid date or not. + * ``` + * dayjs().isValid()// => boolean + * ``` + * Docs: https://day.js.org/docs/en/parse/is-valid + */ + isValid(): boolean + /** + * Get the year. + * ``` + * dayjs().year()// => 2020 + * ``` + * Docs: https://day.js.org/docs/en/get-set/year + */ + year(): number + /** + * Set the year. + * ``` + * dayjs().year(2000)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/year + */ + year(value: number): Dayjs + /** + * Get the month. + * + * Months are zero indexed, so January is month 0. + * ``` + * dayjs().month()// => 0-11 + * ``` + * Docs: https://day.js.org/docs/en/get-set/month + */ + month(): number + /** + * Set the month. + * + * Months are zero indexed, so January is month 0. + * + * Accepts numbers from 0 to 11. If the range is exceeded, it will bubble up to the next year. + * ``` + * dayjs().month(0)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/month + */ + month(value: number): Dayjs + /** + * Get the date of the month. + * ``` + * dayjs().date()// => 1-31 + * ``` + * Docs: https://day.js.org/docs/en/get-set/date + */ + date(): number + /** + * Set the date of the month. + * + * Accepts numbers from 1 to 31. If the range is exceeded, it will bubble up to the next months. + * ``` + * dayjs().date(1)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/date + */ + date(value: number): Dayjs + /** + * Get the day of the week. + * + * Returns numbers from 0 (Sunday) to 6 (Saturday). + * ``` + * dayjs().day()// 0-6 + * ``` + * Docs: https://day.js.org/docs/en/get-set/day + */ + day(): number + /** + * Set the day of the week. + * + * Accepts numbers from 0 (Sunday) to 6 (Saturday). If the range is exceeded, it will bubble up to next weeks. + * ``` + * dayjs().day(0)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/day + */ + day(value: number): Dayjs + /** + * Get the hour. + * ``` + * dayjs().hour()// => 0-23 + * ``` + * Docs: https://day.js.org/docs/en/get-set/hour + */ + hour(): number + /** + * Set the hour. + * + * Accepts numbers from 0 to 23. If the range is exceeded, it will bubble up to the next day. + * ``` + * dayjs().hour(12)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/hour + */ + hour(value: number): Dayjs + /** + * Get the minutes. + * ``` + * dayjs().minute()// => 0-59 + * ``` + * Docs: https://day.js.org/docs/en/get-set/minute + */ + minute(): number + /** + * Set the minutes. + * + * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next hour. + * ``` + * dayjs().minute(59)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/minute + */ + minute(value: number): Dayjs + /** + * Get the seconds. + * ``` + * dayjs().second()// => 0-59 + * ``` + * Docs: https://day.js.org/docs/en/get-set/second + */ + second(): number + /** + * Set the seconds. + * + * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next minutes. + * ``` + * dayjs().second(1)// Dayjs + * ``` + */ + second(value: number): Dayjs + /** + * Get the milliseconds. + * ``` + * dayjs().millisecond()// => 0-999 + * ``` + * Docs: https://day.js.org/docs/en/get-set/millisecond + */ + millisecond(): number + /** + * Set the milliseconds. + * + * Accepts numbers from 0 to 999. If the range is exceeded, it will bubble up to the next seconds. + * ``` + * dayjs().millisecond(1)// => Dayjs + * ``` + * Docs: https://day.js.org/docs/en/get-set/millisecond + */ + millisecond(value: number): Dayjs + /** + * Generic setter, accepting unit as first argument, and value as second, returns a new instance with the applied changes. + * + * In general: + * ``` + * dayjs().set(unit, value) === dayjs()[unit](value) + * ``` + * Units are case insensitive, and support plural and short forms. + * ``` + * dayjs().set('date', 1) + * dayjs().set('month', 3) // April + * dayjs().set('second', 30) + * ``` + * Docs: https://day.js.org/docs/en/get-set/set + */ + set(unit: UnitType, value: number): Dayjs + /** + * String getter, returns the corresponding information getting from Day.js object. + * + * In general: + * ``` + * dayjs().get(unit) === dayjs()[unit]() + * ``` + * Units are case insensitive, and support plural and short forms. + * ``` + * dayjs().get('year') + * dayjs().get('month') // start 0 + * dayjs().get('date') + * ``` + * Docs: https://day.js.org/docs/en/get-set/get + */ + get(unit: UnitType): number + /** + * Returns a cloned Day.js object with a specified amount of time added. + * ``` + * dayjs().add(7, 'day')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/add + */ + add(value: number, unit?: ManipulateType): Dayjs + /** + * Returns a cloned Day.js object with a specified amount of time subtracted. + * ``` + * dayjs().subtract(7, 'year')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/subtract + */ + subtract(value: number, unit?: ManipulateType): Dayjs + /** + * Returns a cloned Day.js object and set it to the start of a unit of time. + * ``` + * dayjs().startOf('year')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/start-of + */ + startOf(unit: OpUnitType): Dayjs + /** + * Returns a cloned Day.js object and set it to the end of a unit of time. + * ``` + * dayjs().endOf('month')// => Dayjs + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/manipulate/end-of + */ + endOf(unit: OpUnitType): Dayjs + /** + * Get the formatted date according to the string of tokens passed in. + * + * To escape characters, wrap them in square brackets (e.g. [MM]). + * ``` + * dayjs().format()// => current date in ISO8601, without fraction seconds e.g. '2020-04-02T08:02:17-05:00' + * dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]')// 'YYYYescape 2019-01-25T00:00:00-02:00Z' + * dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019' + * ``` + * Docs: https://day.js.org/docs/en/display/format + */ + format(template?: string): string + /** + * This indicates the difference between two date-time in the specified unit. + * + * To get the difference in milliseconds, use `dayjs#diff` + * ``` + * const date1 = dayjs('2019-01-25') + * const date2 = dayjs('2018-06-05') + * date1.diff(date2) // 20214000000 default milliseconds + * date1.diff() // milliseconds to current time + * ``` + * + * To get the difference in another unit of measurement, pass that measurement as the second argument. + * ``` + * const date1 = dayjs('2019-01-25') + * date1.diff('2018-06-05', 'month') // 7 + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/display/difference + */ + diff(date?: ConfigType, unit?: QUnitType | OpUnitType, float?: boolean): number + /** + * This returns the number of **milliseconds** since the Unix Epoch of the Day.js object. + * ``` + * dayjs('2019-01-25').valueOf() // 1548381600000 + * +dayjs(1548381600000) // 1548381600000 + * ``` + * To get a Unix timestamp (the number of seconds since the epoch) from a Day.js object, you should use Unix Timestamp `dayjs#unix()`. + * + * Docs: https://day.js.org/docs/en/display/unix-timestamp-milliseconds + */ + valueOf(): number + /** + * This returns the Unix timestamp (the number of **seconds** since the Unix Epoch) of the Day.js object. + * ``` + * dayjs('2019-01-25').unix() // 1548381600 + * ``` + * This value is floored to the nearest second, and does not include a milliseconds component. + * + * Docs: https://day.js.org/docs/en/display/unix-timestamp + */ + unix(): number + /** + * Get the number of days in the current month. + * ``` + * dayjs('2019-01-25').daysInMonth() // 31 + * ``` + * Docs: https://day.js.org/docs/en/display/days-in-month + */ + daysInMonth(): number + /** + * To get a copy of the native `Date` object parsed from the Day.js object use `dayjs#toDate`. + * ``` + * dayjs('2019-01-25').toDate()// => Date + * ``` + */ + toDate(): Date + /** + * To serialize as an ISO 8601 string. + * ``` + * dayjs('2019-01-25').toJSON() // '2019-01-25T02:00:00.000Z' + * ``` + * Docs: https://day.js.org/docs/en/display/as-json + */ + toJSON(): string + /** + * To format as an ISO 8601 string. + * ``` + * dayjs('2019-01-25').toISOString() // '2019-01-25T02:00:00.000Z' + * ``` + * Docs: https://day.js.org/docs/en/display/as-iso-string + */ + toISOString(): string + /** + * Returns a string representation of the date. + * ``` + * dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT' + * ``` + * Docs: https://day.js.org/docs/en/display/as-string + */ + toString(): string + /** + * Get the UTC offset in minutes. + * ``` + * dayjs().utcOffset() + * ``` + * Docs: https://day.js.org/docs/en/manipulate/utc-offset + */ + utcOffset(): number + /** + * This indicates whether the Day.js object is before the other supplied date-time. + * ``` + * dayjs().isBefore(dayjs('2011-01-01')) // default milliseconds + * ``` + * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter. + * ``` + * dayjs().isBefore('2011-01-01', 'year')// => boolean + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/query/is-before + */ + isBefore(date: ConfigType, unit?: OpUnitType): boolean + /** + * This indicates whether the Day.js object is the same as the other supplied date-time. + * ``` + * dayjs().isSame(dayjs('2011-01-01')) // default milliseconds + * ``` + * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter. + * ``` + * dayjs().isSame('2011-01-01', 'year')// => boolean + * ``` + * Docs: https://day.js.org/docs/en/query/is-same + */ + isSame(date: ConfigType, unit?: OpUnitType): boolean + /** + * This indicates whether the Day.js object is after the other supplied date-time. + * ``` + * dayjs().isAfter(dayjs('2011-01-01')) // default milliseconds + * ``` + * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter. + * ``` + * dayjs().isAfter('2011-01-01', 'year')// => boolean + * ``` + * Units are case insensitive, and support plural and short forms. + * + * Docs: https://day.js.org/docs/en/query/is-after + */ + isAfter(date: ConfigType, unit?: OpUnitType): boolean + + locale(): string + + locale(preset: string | ILocale, object?: Partial): Dayjs + } + + export type PluginFunc = (option: T, c: typeof Dayjs, d: typeof dayjs) => void + + export function extend(plugin: PluginFunc, option?: T): Dayjs + + export function locale(preset?: string | ILocale, object?: Partial, isLocal?: boolean): string + + export function isDayjs(d: any): d is Dayjs + + export function unix(t: number): Dayjs + + const Ls : { [key: string] : ILocale } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale.json b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale.json new file mode 100644 index 0000000..bc54dd0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale.json @@ -0,0 +1 @@ +[{"key":"af","name":"Afrikaans"},{"key":"am","name":"Amharic"},{"key":"ar-dz","name":"Arabic (Algeria)"},{"key":"ar-iq","name":" Arabic (Iraq)"},{"key":"ar-kw","name":"Arabic (Kuwait)"},{"key":"ar-ly","name":"Arabic (Lybia)"},{"key":"ar-ma","name":"Arabic (Morocco)"},{"key":"ar-sa","name":"Arabic (Saudi Arabia)"},{"key":"ar-tn","name":" Arabic (Tunisia)"},{"key":"ar","name":"Arabic"},{"key":"az","name":"Azerbaijani"},{"key":"be","name":"Belarusian"},{"key":"bg","name":"Bulgarian"},{"key":"bi","name":"Bislama"},{"key":"bm","name":"Bambara"},{"key":"bn-bd","name":"Bengali (Bangladesh)"},{"key":"bn","name":"Bengali"},{"key":"bo","name":"Tibetan"},{"key":"br","name":"Breton"},{"key":"ca","name":"Catalan"},{"key":"bs","name":"Bosnian"},{"key":"cs","name":"Czech"},{"key":"cv","name":"Chuvash"},{"key":"cy","name":"Welsh"},{"key":"da","name":"Danish"},{"key":"de-at","name":"German (Austria)"},{"key":"de-ch","name":"German (Switzerland)"},{"key":"de","name":"German"},{"key":"dv","name":"Maldivian"},{"key":"el","name":"Greek"},{"key":"en-ca","name":"English (Canada)"},{"key":"en-au","name":"English (Australia)"},{"key":"en-gb","name":"English (United Kingdom)"},{"key":"en-ie","name":"English (Ireland)"},{"key":"en-il","name":"English (Israel)"},{"key":"en-in","name":"English (India)"},{"key":"en-nz","name":"English (New Zealand)"},{"key":"en-sg","name":"English (Singapore)"},{"key":"en-tt","name":"English (Trinidad & Tobago)"},{"key":"en","name":"English"},{"key":"eo","name":"Esperanto"},{"key":"es-do","name":"Spanish (Dominican Republic)"},{"key":"es-pr","name":"Spanish (Puerto Rico)"},{"key":"es","name":"Spanish"},{"key":"et","name":"Estonian"},{"key":"eu","name":"Basque"},{"key":"fa","name":"Persian"},{"key":"fo","name":"Faroese"},{"key":"fi","name":"Finnish"},{"key":"fr-ca","name":"French (Canada)"},{"key":"fr-ch","name":"French (Switzerland)"},{"key":"fy","name":"Frisian"},{"key":"fr","name":"French"},{"key":"ga","name":"Irish or Irish Gaelic"},{"key":"gd","name":"Scottish Gaelic"},{"key":"gom-latn","name":"Konkani Latin script"},{"key":"gl","name":"Galician"},{"key":"gu","name":"Gujarati"},{"key":"he","name":"Hebrew"},{"key":"hi","name":"Hindi"},{"key":"hr","name":"Croatian"},{"key":"ht","name":"Haitian Creole (Haiti)"},{"key":"hu","name":"Hungarian"},{"key":"id","name":"Indonesian"},{"key":"hy-am","name":"Armenian"},{"key":"is","name":"Icelandic"},{"key":"it-ch","name":"Italian (Switzerland)"},{"key":"it","name":"Italian"},{"key":"ja","name":"Japanese"},{"key":"jv","name":"Javanese"},{"key":"ka","name":"Georgian"},{"key":"kk","name":"Kazakh"},{"key":"km","name":"Cambodian"},{"key":"kn","name":"Kannada"},{"key":"ku","name":"Kurdish"},{"key":"ko","name":"Korean"},{"key":"ky","name":"Kyrgyz"},{"key":"lo","name":"Lao"},{"key":"lb","name":"Luxembourgish"},{"key":"lt","name":"Lithuanian"},{"key":"lv","name":"Latvian"},{"key":"me","name":"Montenegrin"},{"key":"mk","name":"Macedonian"},{"key":"mi","name":"Maori"},{"key":"ml","name":"Malayalam"},{"key":"mn","name":"Mongolian"},{"key":"mr","name":"Marathi"},{"key":"ms-my","name":"Malay"},{"key":"ms","name":"Malay"},{"key":"mt","name":"Maltese (Malta)"},{"key":"my","name":"Burmese"},{"key":"nb","name":"Norwegian Bokmål"},{"key":"nl-be","name":"Dutch (Belgium)"},{"key":"ne","name":"Nepalese"},{"key":"nl","name":"Dutch"},{"key":"nn","name":"Nynorsk"},{"key":"oc-lnc","name":"Occitan, lengadocian dialecte"},{"key":"pa-in","name":"Punjabi (India)"},{"key":"pl","name":"Polish"},{"key":"pt-br","name":"Portuguese (Brazil)"},{"key":"pt","name":"Portuguese"},{"key":"rn","name":"Kirundi"},{"key":"ro","name":"Romanian"},{"key":"ru","name":"Russian"},{"key":"rw","name":"Kinyarwanda (Rwanda)"},{"key":"se","name":"Northern Sami"},{"key":"es-mx","name":"Spanish (Mexico)"},{"key":"si","name":"Sinhalese"},{"key":"sk","name":"Slovak"},{"key":"sl","name":"Slovenian"},{"key":"sq","name":"Albanian"},{"key":"sr-cyrl","name":"Serbian Cyrillic"},{"key":"sr","name":"Serbian"},{"key":"sv-fi","name":"Finland Swedish"},{"key":"ss","name":"siSwati"},{"key":"sv","name":"Swedish"},{"key":"sw","name":"Swahili"},{"key":"ta","name":"Tamil"},{"key":"te","name":"Telugu"},{"key":"tet","name":"Tetun Dili (East Timor)"},{"key":"tg","name":"Tajik"},{"key":"th","name":"Thai"},{"key":"tk","name":"Turkmen"},{"key":"tl-ph","name":"Tagalog (Philippines)"},{"key":"tlh","name":"Klingon"},{"key":"tr","name":"Turkish"},{"key":"tzl","name":"Talossan"},{"key":"tzm","name":"Central Atlas Tamazight"},{"key":"tzm-latn","name":"Central Atlas Tamazight Latin"},{"key":"ug-cn","name":"Uyghur (China)"},{"key":"uk","name":"Ukrainian"},{"key":"uz-latn","name":"Uzbek Latin"},{"key":"ur","name":"Urdu"},{"key":"uz","name":"Uzbek"},{"key":"vi","name":"Vietnamese"},{"key":"x-pseudo","name":"Pseudo"},{"key":"yo","name":"Yoruba Nigeria"},{"key":"zh-cn","name":"Chinese (China)"},{"key":"zh-hk","name":"Chinese (Hong Kong)"},{"key":"zh-tw","name":"Chinese (Taiwan)"},{"key":"zh","name":"Chinese"},{"key":"es-us","name":"Spanish (United States)"},{"key":"sd","name":"Sindhi"}] \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/af.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/af.js new file mode 100644 index 0000000..62c75e4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/af.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_af=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),t={name:"af",weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),weekStart:1,weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"}};return n.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/am.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/am.js new file mode 100644 index 0000000..7b588a8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/am.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_am=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"am",weekdays:"እሑድ_ሰኞ_ማክሰኞ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ".split("_"),weekdaysShort:"እሑድ_ሰኞ_ማክሰ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ".split("_"),weekdaysMin:"እሑ_ሰኞ_ማክ_ረቡ_ሐሙ_አር_ቅዳ".split("_"),months:"ጃንዋሪ_ፌብሯሪ_ማርች_ኤፕሪል_ሜይ_ጁን_ጁላይ_ኦገስት_ሴፕቴምበር_ኦክቶበር_ኖቬምበር_ዲሴምበር".split("_"),monthsShort:"ጃንዋ_ፌብሯ_ማርች_ኤፕሪ_ሜይ_ጁን_ጁላይ_ኦገስ_ሴፕቴ_ኦክቶ_ኖቬም_ዲሴም".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"በ%s",past:"%s በፊት",s:"ጥቂት ሰከንዶች",m:"አንድ ደቂቃ",mm:"%d ደቂቃዎች",h:"አንድ ሰዓት",hh:"%d ሰዓታት",d:"አንድ ቀን",dd:"%d ቀናት",M:"አንድ ወር",MM:"%d ወራት",y:"አንድ ዓመት",yy:"%d ዓመታት"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM D ፣ YYYY",LLL:"MMMM D ፣ YYYY HH:mm",LLLL:"dddd ፣ MMMM D ፣ YYYY HH:mm"},ordinal:function(e){return e+"ኛ"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-dz.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-dz.js new file mode 100644 index 0000000..f4f5d40 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-dz.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_dz=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-dz",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"ص":"م"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-iq.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-iq.js new file mode 100644 index 0000000..cbeafa7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-iq.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar_iq=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ar-iq",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول".split("_"),weekStart:1,weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"ص":"م"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-kw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-kw.js new file mode 100644 index 0000000..bdb0ae8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-kw.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_kw=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-kw",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"ص":"م"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-ly.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-ly.js new file mode 100644 index 0000000..03f75c6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-ly.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_ly=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"ar-ly",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekStart:6,weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(_){return _},meridiem:function(_){return _>12?"ص":"م"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-ma.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-ma.js new file mode 100644 index 0000000..6000160 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-ma.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar_ma=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ar-ma",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekStart:6,weekdaysShort:"احد_إثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"ص":"م"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-sa.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-sa.js new file mode 100644 index 0000000..07ee37d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-sa.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_sa=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-sa",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"ص":"م"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-tn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-tn.js new file mode 100644 index 0000000..01d3af1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar-tn.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar_tn=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ar-tn",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekStart:1,weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"ص":"م"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar.js new file mode 100644 index 0000000..87b99b3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ar.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),r="يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),_={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},d={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o={name:"ar",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),months:r,monthsShort:r,weekStart:6,relativeTime:{future:"بعد %s",past:"منذ %s",s:"ثانية واحدة",m:"دقيقة واحدة",mm:"%d دقائق",h:"ساعة واحدة",hh:"%d ساعات",d:"يوم واحد",dd:"%d أيام",M:"شهر واحد",MM:"%d أشهر",y:"عام واحد",yy:"%d أعوام"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return d[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return _[e]})).replace(/,/g,"،")},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return n.default.locale(o,null,!0),o})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/az.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/az.js new file mode 100644 index 0000000..d63ed1f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/az.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_az=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var _=e(a),t={name:"az",weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},ordinal:function(a){return a}};return _.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/be.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/be.js new file mode 100644 index 0000000..704a87d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/be.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_be=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"be",weekdays:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),months:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),weekStart:1,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bg.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bg.js new file mode 100644 index 0000000..4a3d316 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bg.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bg=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"bg",weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekStart:1,ordinal:function(e){var _=e%100;if(_>10&&_<20)return e+"-ти";var t=e%10;return 1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bi.js new file mode 100644 index 0000000..e457dff --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bi.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bi=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),_={name:"bi",weekdays:"Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade".split("_"),months:"Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba".split("_"),weekStart:1,weekdaysShort:"San_Man_Tus_Wen_Tos_Frae_Sar".split("_"),monthsShort:"Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"San_Ma_Tu_We_To_Fr_Sar".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"lo %s",past:"%s bifo",s:"sam seken",m:"wan minit",mm:"%d minit",h:"wan haoa",hh:"%d haoa",d:"wan dei",dd:"%d dei",M:"wan manis",MM:"%d manis",y:"wan yia",yy:"%d yia"}};return n.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bm.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bm.js new file mode 100644 index 0000000..3c4fbdd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bm.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_bm=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var l=e(a),t={name:"bm",weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),weekStart:1,weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"}};return l.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bn-bd.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bn-bd.js new file mode 100644 index 0000000..ae76f9f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bn-bd.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bn_bd=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},d={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},r={name:"bn-bd",weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),weekStart:0,preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return d[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return n[e]}))},ordinal:function(e){var t=["ই","লা","রা","ঠা","শে"],_=e%100;return"["+e+(t[(_-20)%10]||t[_]||t[0])+"]"},formats:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY খ্রিস্টাব্দ",LL:"D MMMM YYYY খ্রিস্টাব্দ",LLL:"D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়",LLLL:"dddd, D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়"},meridiem:function(e){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"}};return _.default.locale(r,null,!0),r})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bn.js new file mode 100644 index 0000000..30ffa02 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bn.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bn=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),n={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},d={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},o={name:"bn",weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return d[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return n[e]}))},ordinal:function(e){return e},formats:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"}};return t.default.locale(o,null,!0),o})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bo.js new file mode 100644 index 0000000..92bb7cc --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bo.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_bo=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"bo",weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་དང་པོ_ཟླ་གཉིས་པ_ཟླ་གསུམ་པ_ཟླ་བཞི་པ_ཟླ་ལྔ་པ_ཟླ་དྲུག་པ_ཟླ་བདུན་པ_ཟླ་བརྒྱད་པ_ཟླ་དགུ་པ_ཟླ་བཅུ་པ_ཟླ་བཅུ་གཅིག་པ_ཟླ་བཅུ་གཉིས་པ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ལ་",past:"%s སྔོན་ལ་",s:"ཏོག་ཙམ་",m:"སྐར་མ་གཅིག་",mm:"སྐར་མ་ %d",h:"ཆུ་ཚོད་གཅིག་",hh:"ཆུ་ཚོད་ %d",d:"ཉིན་གཅིག་",dd:"ཉིན་ %d",M:"ཟླ་བ་གཅིག་",MM:"ཟླ་བ་ %d",y:"ལོ་གཅིག་",yy:"ལོ་ %d"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/br.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/br.js new file mode 100644 index 0000000..0b2317f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/br.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_br=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=n(e);function r(e){return e>9?r(e%10):e}function t(e,n,u){return e+" "+function(e,n){return 2===n?function(e){return{m:"v",b:"v",d:"z"}[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[u],e)}var o={name:"br",weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),weekStart:1,weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(r(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},meridiem:function(e){return e<12?"a.m.":"g.m."}};return u.default.locale(o,null,!0),o})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bs.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bs.js new file mode 100644 index 0000000..25dcd6d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/bs.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bs=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),a={name:"bs",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ca.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ca.js new file mode 100644 index 0000000..1614cc2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ca.js @@ -0,0 +1 @@ +!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ca=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=s(e),_={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return""+e+(1===e||3===e?"r":2===e?"n":4===e?"t":"è")}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cs.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cs.js new file mode 100644 index 0000000..43bddb9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cs.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_cs=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e);function s(e){return e>1&&e<5&&1!=~~(e/10)}function r(e,n,t,r){var d=e+" ";switch(t){case"s":return n||r?"pár sekund":"pár sekundami";case"m":return n?"minuta":r?"minutu":"minutou";case"mm":return n||r?d+(s(e)?"minuty":"minut"):d+"minutami";case"h":return n?"hodina":r?"hodinu":"hodinou";case"hh":return n||r?d+(s(e)?"hodiny":"hodin"):d+"hodinami";case"d":return n||r?"den":"dnem";case"dd":return n||r?d+(s(e)?"dny":"dní"):d+"dny";case"M":return n||r?"měsíc":"měsícem";case"MM":return n||r?d+(s(e)?"měsíce":"měsíců"):d+"měsíci";case"y":return n||r?"rok":"rokem";case"yy":return n||r?d+(s(e)?"roky":"let"):d+"lety"}}var d={name:"cs",weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),months:"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),monthsShort:"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"před %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cv.js new file mode 100644 index 0000000..a30efe0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cv.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_cv=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"cv",weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),weekStart:1,weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cy.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cy.js new file mode 100644 index 0000000..ee1910f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/cy.js @@ -0,0 +1 @@ +!function(d,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(d="undefined"!=typeof globalThis?globalThis:d||self).dayjs_locale_cy=e(d.dayjs)}(this,(function(d){"use strict";function e(d){return d&&"object"==typeof d&&"default"in d?d:{default:d}}var _=e(d),a={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(d){return d},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return _.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/da.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/da.js new file mode 100644 index 0000000..fd45a45 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/da.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_da=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=t(e),n={name:"da",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn._man._tirs._ons._tors._fre._lør.".split("_"),weekdaysMin:"sø._ma._ti._on._to._fr._lø.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"}};return d.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de-at.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de-at.js new file mode 100644 index 0000000..ca51ef5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de-at.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_de_at=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),i={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function a(e,n,t){var a=i[t];return Array.isArray(a)&&(a=a[n?0:1]),a.replace("%d",e)}var r={name:"de-at",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a}};return t.default.locale(r,null,!0),r})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de-ch.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de-ch.js new file mode 100644 index 0000000..3fef218 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de-ch.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_de_ch=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),a={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function i(e,n,t){var i=a[t];return Array.isArray(i)&&(i=i[n?0:1]),i.replace("%d",e)}var r={name:"de-ch",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i}};return t.default.locale(r,null,!0),r})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de.js new file mode 100644 index 0000000..35f05ec --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/de.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_de=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),a={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function i(e,n,t){var i=a[t];return Array.isArray(i)&&(i=i[n?0:1]),i.replace("%d",e)}var r={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i}};return t.default.locale(r,null,!0),r})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/dv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/dv.js new file mode 100644 index 0000000..b0bd8f9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/dv.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_dv=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"dv",weekdays:"އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު".split("_"),months:"ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު".split("_"),weekStart:7,weekdaysShort:"އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު".split("_"),monthsShort:"ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު".split("_"),weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/el.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/el.js new file mode 100644 index 0000000..1488034 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/el.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_el=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"el",weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),months:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Νοε_Δεκ".split("_"),ordinal:function(e){return e},weekStart:1,relativeTime:{future:"σε %s",past:"πριν %s",s:"μερικά δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένα μήνα",MM:"%d μήνες",y:"ένα χρόνο",yy:"%d χρόνια"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-au.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-au.js new file mode 100644 index 0000000..b952cdb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-au.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_au=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-au",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-ca.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-ca.js new file mode 100644 index 0000000..bf76621 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-ca.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_ca=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),t={name:"en-ca",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return _.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-gb.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-gb.js new file mode 100644 index 0000000..7fc7c3f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-gb.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_gb=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-gb",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],t=e%100;return"["+e+(a[(t-20)%10]||a[t]||a[0])+"]"}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-ie.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-ie.js new file mode 100644 index 0000000..b0ad3f9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-ie.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_ie=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-ie",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-il.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-il.js new file mode 100644 index 0000000..d8bea62 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-il.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_il=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),t={name:"en-il",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return _.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-in.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-in.js new file mode 100644 index 0000000..af8cff3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-in.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_in=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),n={name:"en-in",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],t=e%100;return"["+e+(a[(t-20)%10]||a[t]||a[0])+"]"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-nz.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-nz.js new file mode 100644 index 0000000..058abbe --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-nz.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_nz=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),n={name:"en-nz",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){var a=["th","st","nd","rd"],t=e%100;return"["+e+(a[(t-20)%10]||a[t]||a[0])+"]"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-sg.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-sg.js new file mode 100644 index 0000000..787fa84 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-sg.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_sg=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-sg",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-tt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-tt.js new file mode 100644 index 0000000..afc4d36 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en-tt.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_tt=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),_={name:"en-tt",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var t=["th","st","nd","rd"],a=e%100;return"["+e+(t[(a-20)%10]||t[a]||t[0])+"]"}};return a.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en.js new file mode 100644 index 0000000..b315ec3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/en.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en=n()}(this,(function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/eo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/eo.js new file mode 100644 index 0000000..2dcbe01 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/eo.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_eo=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=o(e),t={name:"eo",weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"}};return a.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-do.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-do.js new file mode 100644 index 0000000..07907ad --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-do.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_do=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es-do",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekStart:1,relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return s.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-mx.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-mx.js new file mode 100644 index 0000000..f865a2d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-mx.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_mx=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es-mx",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"}};return s.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-pr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-pr.js new file mode 100644 index 0000000..56fdeb4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-pr.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_pr=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es-pr",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return s.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-us.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-us.js new file mode 100644 index 0000000..35f5535 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es-us.js @@ -0,0 +1 @@ +!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_us=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=s(e),d={name:"es-us",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return o.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es.js new file mode 100644 index 0000000..eb33b81 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/es.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return s.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/et.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/et.js new file mode 100644 index 0000000..4158d13 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/et.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_et=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e);function u(e,a,t,u){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:["%d minuti","%d minutit"],h:["ühe tunni","tund aega","üks tund"],hh:["%d tunni","%d tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:["%d kuu","%d kuud"],y:["ühe aasta","aasta","üks aasta"],yy:["%d aasta","%d aastat"]};return a?(s[t][2]?s[t][2]:s[t][1]).replace("%d",e):(u?s[t][0]:s[t][1]).replace("%d",e)}var s={name:"et",weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s pärast",past:"%s tagasi",s:u,m:u,mm:u,h:u,hh:u,d:u,dd:"%d päeva",M:u,MM:u,y:u,yy:u},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return t.default.locale(s,null,!0),s})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/eu.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/eu.js new file mode 100644 index 0000000..ed8e228 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/eu.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_eu=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=e(a),l={name:"eu",weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),weekStart:1,weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"}};return t.default.locale(l,null,!0),l})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fa.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fa.js new file mode 100644 index 0000000..648bb4e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fa.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_fa=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"fa",weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekStart:6,months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fi.js new file mode 100644 index 0000000..2681ebd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fi.js @@ -0,0 +1 @@ +!function(u,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(u="undefined"!=typeof globalThis?globalThis:u||self).dayjs_locale_fi=e(u.dayjs)}(this,(function(u){"use strict";function e(u){return u&&"object"==typeof u&&"default"in u?u:{default:u}}var t=e(u);function n(u,e,t,n){var i={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"päivä",dd:"%d päivää",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän".split("_")},a={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"päivän",dd:"%d päivän",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän".split("_")},s=n&&!e?a:i,_=s[t];return u<10?_.replace("%d",s.numbers[u]):_.replace("%d",u)}var i={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),ordinal:function(u){return u+"."},weekStart:1,yearStart:4,relativeTime:{future:"%s päästä",past:"%s sitten",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM[ta] YYYY",LLL:"D. MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, D. MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [klo] HH.mm",llll:"ddd, D. MMM YYYY, [klo] HH.mm"}};return t.default.locale(i,null,!0),i})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fo.js new file mode 100644 index 0000000..ff6f8d8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fo.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fo=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),r={name:"fo",weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"}};return a.default.locale(r,null,!0),r})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr-ca.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr-ca.js new file mode 100644 index 0000000..9cc0d03 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr-ca.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr_ca=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),_={name:"fr-ca",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return i.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr-ch.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr-ch.js new file mode 100644 index 0000000..1308de9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr-ch.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr_ch=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),_={name:"fr-ch",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekStart:1,weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return i.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr.js new file mode 100644 index 0000000..8c42be4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fr.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),i={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return""+e+(1===e?"er":"")}};return t.default.locale(i,null,!0),i})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fy.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fy.js new file mode 100644 index 0000000..291dd5f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/fy.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fy=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),t={name:"fy",weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),weekStart:1,weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"}};return i.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ga.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ga.js new file mode 100644 index 0000000..0b2489f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ga.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_ga=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var i=e(a),n={name:"ga",weekdays:"Dé Domhnaigh_Dé Luain_Dé Máirt_Dé Céadaoin_Déardaoin_Dé hAoine_Dé Satharn".split("_"),months:"Eanáir_Feabhra_Márta_Aibreán_Bealtaine_Méitheamh_Iúil_Lúnasa_Meán Fómhair_Deaireadh Fómhair_Samhain_Nollaig".split("_"),weekStart:1,weekdaysShort:"Dom_Lua_Mái_Céa_Déa_hAo_Sat".split("_"),monthsShort:"Eaná_Feab_Márt_Aibr_Beal_Méit_Iúil_Lúna_Meán_Deai_Samh_Noll".split("_"),weekdaysMin:"Do_Lu_Má_Ce_Dé_hA_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"}};return i.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gd.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gd.js new file mode 100644 index 0000000..c7e47ab --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gd.js @@ -0,0 +1 @@ +!function(a,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],i):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_gd=i(a.dayjs)}(this,(function(a){"use strict";function i(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=i(a),e={name:"gd",weekdays:"Didòmhnaich_Diluain_Dimàirt_Diciadain_Diardaoin_Dihaoine_Disathairne".split("_"),months:"Am Faoilleach_An Gearran_Am Màrt_An Giblean_An Cèitean_An t-Ògmhios_An t-Iuchar_An Lùnastal_An t-Sultain_An Dàmhair_An t-Samhain_An Dùbhlachd".split("_"),weekStart:1,weekdaysShort:"Did_Dil_Dim_Dic_Dia_Dih_Dis".split("_"),monthsShort:"Faoi_Gear_Màrt_Gibl_Cèit_Ògmh_Iuch_Lùn_Sult_Dàmh_Samh_Dùbh".split("_"),weekdaysMin:"Dò_Lu_Mà_Ci_Ar_Ha_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"}};return n.default.locale(e,null,!0),e})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gl.js new file mode 100644 index 0000000..f5cf483 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gl.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_gl=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"gl",weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),ordinal:function(e){return e+"º"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"fai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"}};return s.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gom-latn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gom-latn.js new file mode 100644 index 0000000..1596618 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gom-latn.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_gom_latn=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),_={name:"gom-latn",weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),weekStart:1,weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"}};return a.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gu.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gu.js new file mode 100644 index 0000000..f42a17c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/gu.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_gu=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"gu",weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/he.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/he.js new file mode 100644 index 0000000..3e4062e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/he.js @@ -0,0 +1 @@ +!function(Y,M){"object"==typeof exports&&"undefined"!=typeof module?module.exports=M(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],M):(Y="undefined"!=typeof globalThis?globalThis:Y||self).dayjs_locale_he=M(Y.dayjs)}(this,(function(Y){"use strict";function M(Y){return Y&&"object"==typeof Y&&"default"in Y?Y:{default:Y}}var d=M(Y),e={s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:"%d שעות",hh2:"שעתיים",d:"יום",dd:"%d ימים",dd2:"יומיים",M:"חודש",MM:"%d חודשים",MM2:"חודשיים",y:"שנה",yy:"%d שנים",yy2:"שנתיים"};function _(Y,M,d){return(e[d+(2===Y?"2":"")]||e[d]).replace("%d",Y)}var l={name:"he",weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳".split("_"),months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו_פבר_מרץ_אפר_מאי_יונ_יול_אוג_ספט_אוק_נוב_דצמ".split("_"),relativeTime:{future:"בעוד %s",past:"לפני %s",s:_,m:_,mm:_,h:_,hh:_,d:_,dd:_,M:_,MM:_,y:_,yy:_},ordinal:function(Y){return Y},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"}};return d.default.locale(l,null,!0),l})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hi.js new file mode 100644 index 0000000..9dca3cf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hi.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_hi=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"hi",weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hr.js new file mode 100644 index 0000000..12e8387 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hr.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_hr=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),s="siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),n="siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),_=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/,o=function(e,a){return _.test(a)?s[e.month()]:n[e.month()]};o.s=n,o.f=s;var i={name:"hr",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),months:o,monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"za %s",past:"prije %s",s:"sekunda",m:"minuta",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mjesec",MM:"%d mjeseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."}};return t.default.locale(i,null,!0),i})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ht.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ht.js new file mode 100644 index 0000000..3b2d9a3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ht.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ht=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=n(e),a={name:"ht",weekdays:"dimanch_lendi_madi_mèkredi_jedi_vandredi_samdi".split("_"),months:"janvye_fevriye_mas_avril_me_jen_jiyè_out_septanm_oktòb_novanm_desanm".split("_"),weekdaysShort:"dim._len._mad._mèk._jed._van._sam.".split("_"),monthsShort:"jan._fev._mas_avr._me_jen_jiyè._out_sept._okt._nov._des.".split("_"),weekdaysMin:"di_le_ma_mè_je_va_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"nan %s",past:"sa gen %s",s:"kèk segond",m:"yon minit",mm:"%d minit",h:"inèdtan",hh:"%d zè",d:"yon jou",dd:"%d jou",M:"yon mwa",MM:"%d mwa",y:"yon ane",yy:"%d ane"}};return d.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hu.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hu.js new file mode 100644 index 0000000..e2aff04 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hu.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_hu=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),r={name:"hu",weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s múlva",past:"%s",s:function(e,n,t,r){return"néhány másodperc"+(r||n?"":"e")},m:function(e,n,t,r){return"egy perc"+(r||n?"":"e")},mm:function(e,n,t,r){return e+" perc"+(r||n?"":"e")},h:function(e,n,t,r){return"egy "+(r||n?"óra":"órája")},hh:function(e,n,t,r){return e+" "+(r||n?"óra":"órája")},d:function(e,n,t,r){return"egy "+(r||n?"nap":"napja")},dd:function(e,n,t,r){return e+" "+(r||n?"nap":"napja")},M:function(e,n,t,r){return"egy "+(r||n?"hónap":"hónapja")},MM:function(e,n,t,r){return e+" "+(r||n?"hónap":"hónapja")},y:function(e,n,t,r){return"egy "+(r||n?"év":"éve")},yy:function(e,n,t,r){return e+" "+(r||n?"év":"éve")}},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"}};return t.default.locale(r,null,!0),r})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hy-am.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hy-am.js new file mode 100644 index 0000000..44daa15 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/hy-am.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_hy_am=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"hy-am",weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),months:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),weekStart:1,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/id.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/id.js new file mode 100644 index 0000000..0637a65 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/id.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_id=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"id",weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/index.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/index.d.ts new file mode 100644 index 0000000..bd2dca2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/index.d.ts @@ -0,0 +1,11 @@ +/// + +declare module 'dayjs/locale/*' { + namespace locale { + interface Locale extends ILocale {} + } + + const locale: locale.Locale + + export = locale +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/is.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/is.js new file mode 100644 index 0000000..de6799b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/is.js @@ -0,0 +1 @@ +!function(u,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],r):(u="undefined"!=typeof globalThis?globalThis:u||self).dayjs_locale_is=r(u.dayjs)}(this,(function(u){"use strict";function r(u){return u&&"object"==typeof u&&"default"in u?u:{default:u}}var n=r(u),e={s:["nokkrar sekúndur","nokkrar sekúndur","nokkrum sekúndum"],m:["mínúta","mínútu","mínútu"],mm:["mínútur","mínútur","mínútum"],h:["klukkustund","klukkustund","klukkustund"],hh:["klukkustundir","klukkustundir","klukkustundum"],d:["dagur","dag","degi"],dd:["dagar","daga","dögum"],M:["mánuður","mánuð","mánuði"],MM:["mánuðir","mánuði","mánuðum"],y:["ár","ár","ári"],yy:["ár","ár","árum"]};function t(u,r,n,t){var a=function(u,r,n,t){var a=t?0:n?1:2,d=2===u.length&&r%10==1?u[0]:u,m=e[d][a];return 1===u.length?m:"%d "+m}(n,u,t,r);return a.replace("%d",u)}var a={name:"is",weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),ordinal:function(u){return u},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t}};return n.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/it-ch.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/it-ch.js new file mode 100644 index 0000000..7e1c92f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/it-ch.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_it_ch=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=o(e),t={name:"it-ch",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"}};return n.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/it.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/it.js new file mode 100644 index 0000000..2ddf44b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/it.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_it=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=o(e),n={name:"it",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un' ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"º"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ja.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ja.js new file mode 100644 index 0000000..cd52f36 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ja.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ja=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ja",weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e){return e+"日"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiem:function(e){return e<12?"午前":"午後"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/jv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/jv.js new file mode 100644 index 0000000..7566308 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/jv.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_jv=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),_={name:"jv",weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),weekStart:1,weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ka.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ka.js new file mode 100644 index 0000000..7b2ce53 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ka.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ka=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ka",weekdays:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"%s შემდეგ",past:"%s წინ",s:"წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათის",d:"დღეს",dd:"%d დღის განმავლობაში",M:"თვის",MM:"%d თვის",y:"წელი",yy:"%d წლის"},ordinal:function(_){return _}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/kk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/kk.js new file mode 100644 index 0000000..a2f17a3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/kk.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_kk=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"kk",weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekStart:1,relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/km.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/km.js new file mode 100644 index 0000000..528923e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/km.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_km=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"km",weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekStart:1,weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/kn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/kn.js new file mode 100644 index 0000000..e040eba --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/kn.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_kn=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"kn",weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ko.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ko.js new file mode 100644 index 0000000..88d8912 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ko.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ko=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=_(e),t={name:"ko",weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},meridiem:function(e){return e<12?"오전":"오후"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"}};return d.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ku.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ku.js new file mode 100644 index 0000000..59e23b6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ku.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("dayjs")):"function"==typeof define&&define.amd?define(["exports","dayjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ku={},e.dayjs)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(t),d={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},o={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},u=["کانوونی دووەم","شوبات","ئادار","نیسان","ئایار","حوزەیران","تەممووز","ئاب","ئەیلوول","تشرینی یەکەم","تشرینی دووەم","کانوونی یەکەم"],i={name:"ku",months:u,monthsShort:u,weekdays:"یەکشەممە_دووشەممە_سێشەممە_چوارشەممە_پێنجشەممە_هەینی_شەممە".split("_"),weekdaysShort:"یەکشەم_دووشەم_سێشەم_چوارشەم_پێنجشەم_هەینی_شەممە".split("_"),weekStart:6,weekdaysMin:"ی_د_س_چ_پ_هـ_ش".split("_"),preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return o[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return d[e]})).replace(/,/g,"،")},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiem:function(e){return e<12?"پ.ن":"د.ن"},relativeTime:{future:"لە %s",past:"%s",s:"چەند چرکەیەک",m:"یەک خولەک",mm:"%d خولەک",h:"یەک کاتژمێر",hh:"%d کاتژمێر",d:"یەک ڕۆژ",dd:"%d ڕۆژ",M:"یەک مانگ",MM:"%d مانگ",y:"یەک ساڵ",yy:"%d ساڵ"}};r.default.locale(i,null,!0),e.default=i,e.englishToArabicNumbersMap=d,Object.defineProperty(e,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ky.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ky.js new file mode 100644 index 0000000..1fdc40e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ky.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ky=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ky",weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),weekStart:1,weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lb.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lb.js new file mode 100644 index 0000000..b6895f2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lb.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_lb=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),n={name:"lb",weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lo.js new file mode 100644 index 0000000..1bf09d1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lo.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_lo=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"lo",weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lt.js new file mode 100644 index 0000000..52f2225 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lt.js @@ -0,0 +1 @@ +!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_lt=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=s(e),d="sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),a="sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),l=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,M=function(e,s){return l.test(s)?d[e.month()]:a[e.month()]};M.s=a,M.f=d;var t={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_šeš".split("_"),weekdaysMin:"s_p_a_t_k_pn_š".split("_"),months:M,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"už %s",past:"prieš %s",s:"kelias sekundes",m:"minutę",mm:"%d minutes",h:"valandą",hh:"%d valandas",d:"dieną",dd:"%d dienas",M:"mėnesį",MM:"%d mėnesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return i.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lv.js new file mode 100644 index 0000000..98fc126 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/lv.js @@ -0,0 +1 @@ +!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_lv=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=s(e),d={name:"lv",weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},relativeTime:{future:"pēc %s",past:"pirms %s",s:"dažām sekundēm",m:"minūtes",mm:"%d minūtēm",h:"stundas",hh:"%d stundām",d:"dienas",dd:"%d dienām",M:"mēneša",MM:"%d mēnešiem",y:"gada",yy:"%d gadiem"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/me.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/me.js new file mode 100644 index 0000000..ecb22ae --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/me.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_me=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),a={name:"me",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mi.js new file mode 100644 index 0000000..1b328f0 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mi.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_mi=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=a(e),t={name:"mi",weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),weekStart:1,weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"}};return i.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mk.js new file mode 100644 index 0000000..0f2ece1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mk.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_mk=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"mk",weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),weekStart:1,weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ml.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ml.js new file mode 100644 index 0000000..8e7db4f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ml.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ml=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ml",weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mn.js new file mode 100644 index 0000000..4de299b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mn.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_mn=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"mn",weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},relativeTime:{future:"%s",past:"%s",s:"саяхан",m:"м",mm:"%dм",h:"1ц",hh:"%dц",d:"1ө",dd:"%dө",M:"1с",MM:"%dс",y:"1ж",yy:"%dж"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mr.js new file mode 100644 index 0000000..af6bb3a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mr.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_mr=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"mr",weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"}};return t.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ms-my.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ms-my.js new file mode 100644 index 0000000..1917d7a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ms-my.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ms_my=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"ms-my",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),weekStart:1,weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ms.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ms.js new file mode 100644 index 0000000..be4f88e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ms.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ms=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),s={name:"ms",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH.mm",LLLL:"dddd, D MMMM YYYY HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return t.default.locale(s,null,!0),s})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mt.js new file mode 100644 index 0000000..43d481a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/mt.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_mt=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"mt",weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),weekStart:1,weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"}};return a.default.locale(i,null,!0),i})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/my.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/my.js new file mode 100644 index 0000000..95adead --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/my.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_my=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"my",weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),weekStart:1,weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nb.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nb.js new file mode 100644 index 0000000..ece1f31 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nb.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nb=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),a={name:"nb",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"}};return n.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ne.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ne.js new file mode 100644 index 0000000..3d166bc --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ne.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ne=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ne",weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मे_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),relativeTime:{future:"%s पछि",past:"%s अघि",s:"सेकेन्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"घन्टा",hh:"%d घन्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक वर्ष",yy:"%d वर्ष"},ordinal:function(e){return(""+e).replace(/\d/g,(function(e){return"०१२३४५६७८९"[e]}))},formats:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nl-be.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nl-be.js new file mode 100644 index 0000000..7a2f60f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nl-be.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nl_be=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),d={name:"nl-be",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),weekStart:1,weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"}};return n.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nl.js new file mode 100644 index 0000000..f984cb2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nl.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nl=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),d={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return n.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nn.js new file mode 100644 index 0000000..eba3c24 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/nn.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nn=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),a={name:"nn",weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eitt minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månadar",y:"eitt år",yy:"%d år"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"}};return n.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/oc-lnc.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/oc-lnc.js new file mode 100644 index 0000000..12e162c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/oc-lnc.js @@ -0,0 +1 @@ +!function(e,d){"object"==typeof exports&&"undefined"!=typeof module?module.exports=d(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],d):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_oc_lnc=d(e.dayjs)}(this,(function(e){"use strict";function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=d(e),s={name:"oc-lnc",weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"Dg_Dl_Dm_Dc_Dj_Dv_Ds".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),months:"genièr_febrièr_març_abrial_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),monthsShort:"gen_feb_març_abr_mai_junh_julh_ago_set_oct_nov_dec".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},ordinal:function(e){return e+"º"}};return n.default.locale(s,null,!0),s})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pa-in.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pa-in.js new file mode 100644 index 0000000..4ee3884 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pa-in.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_pa_in=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"pa-in",weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pl.js new file mode 100644 index 0000000..3f5148c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pl.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_pl=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=t(e);function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function n(e,t,i){var n=e+" ";switch(i){case"m":return t?"minuta":"minutę";case"mm":return n+(a(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return n+(a(e)?"godziny":"godzin");case"MM":return n+(a(e)?"miesiące":"miesięcy");case"yy":return n+(a(e)?"lata":"lat")}}var r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),_="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),s=/D MMMM/,d=function(e,t){return s.test(t)?r[e.month()]:_[e.month()]};d.s=_,d.f=r;var o={name:"pl",weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),months:d,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return i.default.locale(o,null,!0),o})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pt-br.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pt-br.js new file mode 100644 index 0000000..629c2f1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pt-br.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_pt_br=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=o(e),s={name:"pt-br",weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"º"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return a.default.locale(s,null,!0),s})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pt.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pt.js new file mode 100644 index 0000000..91652e8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/pt.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_pt=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=a(e),t={name:"pt",weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sab".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sa".split("_"),months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"º"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return o.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/rn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/rn.js new file mode 100644 index 0000000..a093364 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/rn.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_rn=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=e(a),u={name:"rn",weekdays:"Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu".split("_"),weekdaysShort:"Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat".split("_"),weekdaysMin:"K7_K1_K2_K3_K4_K5_K6".split("_"),months:"Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama".split("_"),monthsShort:"Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return t.default.locale(u,null,!0),u})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ro.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ro.js new file mode 100644 index 0000000..445af3d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ro.js @@ -0,0 +1 @@ +!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],i):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ro=i(e.dayjs)}(this,(function(e){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=i(e),_={name:"ro",weekdays:"Duminică_Luni_Marți_Miercuri_Joi_Vineri_Sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"câteva secunde",m:"un minut",mm:"%d minute",h:"o oră",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lună",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ru.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ru.js new file mode 100644 index 0000000..f896790 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ru.js @@ -0,0 +1 @@ +!function(_,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){"use strict";function t(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var e=t(_),n="января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),s="январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),r="янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),o="янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_"),i=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function d(_,t,e){var n,s;return"m"===e?t?"минута":"минуту":_+" "+(n=+_,s={mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[e].split("_"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:"ru",weekdays:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),weekdaysShort:"вск_пнд_втр_срд_чтв_птн_сбт".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:d,mm:d,h:"час",hh:d,d:"день",dd:d,M:"месяц",MM:d,y:"год",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?"ночи":_<12?"утра":_<17?"дня":"вечера"}};return e.default.locale(m,null,!0),m})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/rw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/rw.js new file mode 100644 index 0000000..bf4c280 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/rw.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_rw=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var u=e(a),t={name:"rw",weekdays:"Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu".split("_"),months:"Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza".split("_"),relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(a){return a}};return u.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sd.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sd.js new file mode 100644 index 0000000..b1e1ee4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sd.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_sd=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"sd",weekdays:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),months:"جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekStart:1,weekdaysShort:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),monthsShort:"جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekdaysMin:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/se.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/se.js new file mode 100644 index 0000000..2cbb224 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/se.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_se=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),t={name:"se",weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),weekStart:1,weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"}};return n.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/si.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/si.js new file mode 100644 index 0000000..216ae8a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/si.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_si=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"si",weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),months:"දුරුතු_නවම්_මැදින්_බක්_වෙසක්_පොසොන්_ඇසළ_නිකිණි_බිනර_වප්_ඉල්_උඳුවප්".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),monthsShort:"දුරු_නව_මැදි_බක්_වෙස_පොසො_ඇස_නිකි_බින_වප්_ඉල්_උඳු".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),ordinal:function(_){return _},formats:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"විනාඩිය",mm:"විනාඩි %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sk.js new file mode 100644 index 0000000..b2707e3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sk.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sk=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function r(e){return e>1&&e<5&&1!=~~(e/10)}function o(e,t,n,o){var a=e+" ";switch(n){case"s":return t||o?"pár sekúnd":"pár sekundami";case"m":return t?"minúta":o?"minútu":"minútou";case"mm":return t||o?a+(r(e)?"minúty":"minút"):a+"minútami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?a+(r(e)?"hodiny":"hodín"):a+"hodinami";case"d":return t||o?"deň":"dňom";case"dd":return t||o?a+(r(e)?"dni":"dní"):a+"dňami";case"M":return t||o?"mesiac":"mesiacom";case"MM":return t||o?a+(r(e)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return t||o?"rok":"rokom";case"yy":return t||o?a+(r(e)?"roky":"rokov"):a+"rokmi"}}var a={name:"sk",weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),months:"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),monthsShort:"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pred %s",s:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o}};return n.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sl.js new file mode 100644 index 0000000..b503c13 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sl.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sl=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n={name:"sl",weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),weekStart:1,weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"čez %s",past:"pred %s",s:"nekaj sekund",m:"minuta",mm:"%d minut",h:"ura",hh:"%d ur",d:"dan",dd:"%d dni",M:"mesec",MM:"%d mesecev",y:"leto",yy:"%d let"}};return _.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sq.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sq.js new file mode 100644 index 0000000..99bca9a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sq.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sq=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n={name:"sq",weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),weekStart:1,weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"}};return _.default.locale(n,null,!0),n})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sr-cyrl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sr-cyrl.js new file mode 100644 index 0000000..90daeeb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sr-cyrl.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sr_cyrl=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),a={words:{m:["један минут","једног минута"],mm:["%d минут","%d минута","%d минута"],h:["један сат","једног сата"],hh:["%d сат","%d сата","%d сати"],d:["један дан","једног дана"],dd:["%d дан","%d дана","%d дана"],M:["један месец","једног месеца"],MM:["%d месец","%d месеца","%d месеци"],y:["једну годину","једне године"],yy:["%d годину","%d године","%d година"]},correctGrammarCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},relativeTimeFormatter:function(e,t,r,d){var i=a.words[r];if(1===r.length)return"y"===r&&t?"једна година":d||t?i[0]:i[1];var m=a.correctGrammarCase(e,i);return"yy"===r&&t&&"%d годину"===m?e+" година":m.replace("%d",e)}},d={name:"sr-cyrl",weekdays:"Недеља_Понедељак_Уторак_Среда_Четвртак_Петак_Субота".split("_"),weekdaysShort:"Нед._Пон._Уто._Сре._Чет._Пет._Суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),months:"Јануар_Фебруар_Март_Април_Мај_Јун_Јул_Август_Септембар_Октобар_Новембар_Децембар".split("_"),monthsShort:"Јан._Феб._Мар._Апр._Мај_Јун_Јул_Авг._Сеп._Окт._Нов._Дец.".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:a.relativeTimeFormatter,mm:a.relativeTimeFormatter,h:a.relativeTimeFormatter,hh:a.relativeTimeFormatter,d:a.relativeTimeFormatter,dd:a.relativeTimeFormatter,M:a.relativeTimeFormatter,MM:a.relativeTimeFormatter,y:a.relativeTimeFormatter,yy:a.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return r.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sr.js new file mode 100644 index 0000000..35a5b55 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sr.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sr=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),r={words:{m:["jedan minut","jednog minuta"],mm:["%d minut","%d minuta","%d minuta"],h:["jedan sat","jednog sata"],hh:["%d sat","%d sata","%d sati"],d:["jedan dan","jednog dana"],dd:["%d dan","%d dana","%d dana"],M:["jedan mesec","jednog meseca"],MM:["%d mesec","%d meseca","%d meseci"],y:["jednu godinu","jedne godine"],yy:["%d godinu","%d godine","%d godina"]},correctGrammarCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},relativeTimeFormatter:function(e,t,a,d){var n=r.words[a];if(1===a.length)return"y"===a&&t?"jedna godina":d||t?n[0]:n[1];var i=r.correctGrammarCase(e,n);return"yy"===a&&t&&"%d godinu"===i?e+" godina":i.replace("%d",e)}},d={name:"sr",weekdays:"Nedelja_Ponedeljak_Utorak_Sreda_Četvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sre._Čet._Pet._Sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),months:"Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar".split("_"),monthsShort:"Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.".split("_"),weekStart:1,relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:r.relativeTimeFormatter,mm:r.relativeTimeFormatter,h:r.relativeTimeFormatter,hh:r.relativeTimeFormatter,d:r.relativeTimeFormatter,dd:r.relativeTimeFormatter,M:r.relativeTimeFormatter,MM:r.relativeTimeFormatter,y:r.relativeTimeFormatter,yy:r.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return a.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ss.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ss.js new file mode 100644 index 0000000..4df16a5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ss.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ss=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(e),i={name:"ss",weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),weekStart:1,weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"}};return a.default.locale(i,null,!0),i})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sv-fi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sv-fi.js new file mode 100644 index 0000000..5b2f8af --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sv-fi.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sv_fi=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),d={name:"sv-fi",weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return"["+e+(1===t||2===t?"a":"e")+"]"},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY, [kl.] HH.mm",LLLL:"dddd, D. MMMM YYYY, [kl.] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [kl.] HH.mm",llll:"ddd, D. MMM YYYY, [kl.] HH.mm"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"}};return a.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sv.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sv.js new file mode 100644 index 0000000..16e6d37 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sv.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sv=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),d={name:"sv",weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return"["+e+(1===t||2===t?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"}};return a.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sw.js new file mode 100644 index 0000000..a13bd44 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/sw.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_sw=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var i=e(a),t={name:"sw",weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return i.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ta.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ta.js new file mode 100644 index 0000000..406cf13 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ta.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ta=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ta",weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/te.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/te.js new file mode 100644 index 0000000..c7593db --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/te.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_te=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"te",weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tet.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tet.js new file mode 100644 index 0000000..aec6f68 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tet.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tet=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=t(e),a={name:"tet",weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),weekStart:1,weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"}};return u.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tg.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tg.js new file mode 100644 index 0000000..7643103 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tg.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_tg=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"tg",weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),weekStart:1,weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/th.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/th.js new file mode 100644 index 0000000..185d4eb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/th.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_th=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"th",weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"},ordinal:function(_){return _+"."}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tk.js new file mode 100644 index 0000000..1e737b5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tk.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tk=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),_={name:"tk",weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e){return e+"."}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tl-ph.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tl-ph.js new file mode 100644 index 0000000..885f8a9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tl-ph.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tl_ph=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),t={name:"tl-ph",weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),weekStart:1,weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"}};return n.default.locale(t,null,!0),t})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tlh.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tlh.js new file mode 100644 index 0000000..03d8996 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tlh.js @@ -0,0 +1 @@ +!function(a,j){"object"==typeof exports&&"undefined"!=typeof module?module.exports=j(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],j):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_tlh=j(a.dayjs)}(this,(function(a){"use strict";function j(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=j(a),e={name:"tlh",weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),weekStart:1,weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return t.default.locale(e,null,!0),e})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tr.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tr.js new file mode 100644 index 0000000..9c7844a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tr.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_tr=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=e(a),_={name:"tr",weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(a){return a+"."}};return t.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/types.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/types.d.ts new file mode 100644 index 0000000..2c24a64 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/types.d.ts @@ -0,0 +1,33 @@ +declare interface ILocale { + name: string + weekdays?: string[] + months?: string[] + weekStart?: number + weekdaysShort?: string[] + monthsShort?: string[] + weekdaysMin?: string[] + ordinal?: (n: number) => number | string + formats: Partial<{ + LT: string + LTS: string + L: string + LL: string + LLL: string + LLLL: string + }> + relativeTime: Partial<{ + future: string + past: string + s: string + m: string + mm: string + h: string + hh: string + d: string + dd: string + M: string + MM: string + y: string + yy: string + }> +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzl.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzl.js new file mode 100644 index 0000000..2b1d598 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzl.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tzl=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"tzl",weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),weekStart:1,weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"}};return t.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzm-latn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzm-latn.js new file mode 100644 index 0000000..3f7cdd4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzm-latn.js @@ -0,0 +1 @@ +!function(a,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_tzm_latn=s(a.dayjs)}(this,(function(a){"use strict";function s(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=s(a),i={name:"tzm-latn",weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekStart:6,weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"}};return n.default.locale(i,null,!0),i})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzm.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzm.js new file mode 100644 index 0000000..e4c4031 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/tzm.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_tzm=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"tzm",weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekStart:6,weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ug-cn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ug-cn.js new file mode 100644 index 0000000..995c3b3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ug-cn.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ug_cn=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ug-cn",weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekStart:1,weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uk.js new file mode 100644 index 0000000..537afb1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uk.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_uk=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),s="січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),n="січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),o=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function d(_,e,t){var s,n;return"m"===t?e?"хвилина":"хвилину":"h"===t?e?"година":"годину":_+" "+(s=+_,n={ss:e?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:e?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:e?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[t].split("_"),s%10==1&&s%100!=11?n[0]:s%10>=2&&s%10<=4&&(s%100<10||s%100>=20)?n[1]:n[2])}var i=function(_,e){return o.test(e)?s[_.month()]:n[_.month()]};i.s=n,i.f=s;var r={name:"uk",weekdays:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),weekdaysShort:"ндл_пнд_втр_срд_чтв_птн_сбт".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),months:i,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:d,mm:d,h:d,hh:d,d:"день",dd:d,M:"місяць",MM:d,y:"рік",yy:d},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"}};return t.default.locale(r,null,!0),r})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ur.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ur.js new file mode 100644 index 0000000..4f83c8b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/ur.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ur=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ur",weekdays:"اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ".split("_"),months:"جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekStart:1,weekdaysShort:"اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ".split("_"),monthsShort:"جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekdaysMin:"اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uz-latn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uz-latn.js new file mode 100644 index 0000000..85506ec --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uz-latn.js @@ -0,0 +1 @@ +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_uz_latn=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=e(a),_={name:"uz-latn",weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),weekStart:1,weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"}};return n.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uz.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uz.js new file mode 100644 index 0000000..aec69ee --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/uz.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_uz=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"uz",weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),weekStart:1,weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/vi.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/vi.js new file mode 100644 index 0000000..ee33954 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/vi.js @@ -0,0 +1 @@ +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_locale_vi=n(t.dayjs)}(this,(function(t){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var h=n(t),_={name:"vi",weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"}};return h.default.locale(_,null,!0),_})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/x-pseudo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/x-pseudo.js new file mode 100644 index 0000000..c1215d6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/x-pseudo.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_x_pseudo=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),d={name:"x-pseudo",weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),weekStart:1,weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"}};return _.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/yo.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/yo.js new file mode 100644 index 0000000..b12b37b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/yo.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_yo=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"yo",weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),weekStart:1,weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"}};return t.default.locale(a,null,!0),a})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-cn.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-cn.js new file mode 100644 index 0000000..21cf228 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-cn.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh_cn=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,_){return"W"===_?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,_){var t=100*e+_;return t<600?"凌晨":t<900?"早上":t<1100?"上午":t<1300?"中午":t<1800?"下午":"晚上"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-hk.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-hk.js new file mode 100644 index 0000000..5cfaa7d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-hk.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_zh_hk=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"zh-hk",months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),ordinal:function(_){return _+"日"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d 分鐘",h:"一小時",hh:"%d 小時",d:"一天",dd:"%d 天",M:"一個月",MM:"%d 個月",y:"一年",yy:"%d 年"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-tw.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-tw.js new file mode 100644 index 0000000..d804aea --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh-tw.js @@ -0,0 +1 @@ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_zh_tw=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"zh-tw",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_){return _+"日"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh.js new file mode 100644 index 0000000..2e80015 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/locale/zh.js @@ -0,0 +1 @@ +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"zh",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,_){return"W"===_?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s后",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,_){var t=100*e+_;return t<600?"凌晨":t<900?"早上":t<1100?"上午":t<1300?"中午":t<1800?"下午":"晚上"}};return t.default.locale(d,null,!0),d})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/package.json b/uni_modules/UniDevTools/src/tmui/tool/dayjs/package.json new file mode 100644 index 0000000..610a509 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/package.json @@ -0,0 +1,130 @@ +{ + "_from": "dayjs", + "_id": "dayjs@1.11.1", + "_inBundle": false, + "_integrity": "sha512-ER7EjqVAMkRRsxNCC5YqJ9d9VQYuWdGt7aiH2qA5R5wt8ZmWaP2dLUSIK6y/kVzLMlmh1Tvu5xUf4M/wdGJ5KA==", + "_location": "/dayjs", + "_phantomChildren": {}, + "_requested": { + "type": "tag", + "registry": true, + "raw": "dayjs", + "name": "dayjs", + "escapedName": "dayjs", + "rawSpec": "", + "saveSpec": null, + "fetchSpec": "latest" + }, + "_requiredBy": [ + "#USER", + "/" + ], + "_resolved": "https://repo.huaweicloud.com/repository/npm/dayjs/-/dayjs-1.11.1.tgz", + "_shasum": "90b33a3dda3417258d48ad2771b415def6545eb0", + "_spec": "dayjs", + "_where": "C:\\Users\\zsylp\\Desktop\\新建文件夹", + "author": { + "name": "iamkun" + }, + "bugs": { + "url": "https://github.com/iamkun/dayjs/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "2KB immutable date time library alternative to Moment.js with the same modern API ", + "devDependencies": { + "@babel/cli": "^7.0.0-beta.44", + "@babel/core": "^7.0.0-beta.44", + "@babel/node": "^7.0.0-beta.44", + "@babel/preset-env": "^7.0.0-beta.44", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^22.4.3", + "babel-plugin-external-helpers": "^6.22.0", + "cross-env": "^5.1.6", + "eslint": "^4.19.1", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-plugin-import": "^2.10.0", + "eslint-plugin-jest": "^21.15.0", + "gzip-size-cli": "^2.1.0", + "jasmine-core": "^2.99.1", + "jest": "^22.4.3", + "karma": "^2.0.2", + "karma-jasmine": "^1.1.2", + "karma-sauce-launcher": "^1.1.0", + "mockdate": "^2.0.2", + "moment": "2.27.0", + "moment-timezone": "0.5.31", + "ncp": "^2.0.0", + "pre-commit": "^1.2.2", + "prettier": "^1.16.1", + "rollup": "^2.45.1", + "rollup-plugin-babel": "^4.4.0", + "rollup-plugin-terser": "^7.0.2", + "size-limit": "^0.18.0", + "typescript": "^2.8.3" + }, + "homepage": "https://day.js.org", + "jest": { + "roots": [ + "test" + ], + "testRegex": "test/(.*?/)?.*test.js$", + "testURL": "http://localhost", + "coverageDirectory": "./coverage/", + "collectCoverage": true, + "collectCoverageFrom": [ + "src/**/*" + ] + }, + "keywords": [ + "dayjs", + "date", + "time", + "immutable", + "moment" + ], + "license": "MIT", + "main": "dayjs.min.js", + "name": "dayjs", + "pre-commit": [ + "lint" + ], + "release": { + "prepare": [ + { + "path": "@semantic-release/changelog" + }, + [ + "@semantic-release/git", + { + "assets": [ + "CHANGELOG.md" + ] + } + ] + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/iamkun/dayjs.git" + }, + "scripts": { + "babel": "cross-env BABEL_ENV=build babel src --out-dir esm --copy-files && node build/esm", + "build": "cross-env BABEL_ENV=build node build && npm run size", + "lint": "eslint src/* test/* build/*", + "prettier": "prettier --write \"docs/**/*.md\"", + "sauce": "npx karma start karma.sauce.conf.js", + "size": "size-limit && gzip-size dayjs.min.js", + "test": "TZ=Pacific/Auckland npm run test-tz && TZ=Europe/London npm run test-tz && TZ=America/Whitehorse npm run test-tz && npm run test-tz && jest", + "test-tz": "date && jest test/timezone.test --coverage=false", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2 && npm run sauce -- 3" + }, + "size-limit": [ + { + "limit": "2.99 KB", + "path": "dayjs.min.js" + } + ], + "types": "index.d.ts", + "version": "1.11.1" +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/advancedFormat.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/advancedFormat.d.ts new file mode 100644 index 0000000..30ec75e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/advancedFormat.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/advancedFormat.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/advancedFormat.js new file mode 100644 index 0000000..8596c3c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/advancedFormat.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){"use strict";return function(e,t,r){var n=t.prototype,s=n.format;r.en.ordinal=function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"},n.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return s.bind(this)(e);var n=this.$utils(),a=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return r.ordinal(t.$D);case"gggg":return t.weekYear();case"GGGG":return t.isoWeekYear();case"wo":return r.ordinal(t.week(),"W");case"w":case"ww":return n.s(t.week(),"w"===e?1:2,"0");case"W":case"WW":return n.s(t.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return n.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();case"z":return"["+t.offsetName()+"]";case"zzz":return"["+t.offsetName("long")+"]";default:return e}}));return s.bind(this)(a)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/arraySupport.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/arraySupport.d.ts new file mode 100644 index 0000000..e4e44b2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/arraySupport.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare module 'dayjs' { + interface ConfigTypeMap { + arraySupport: [number?, number?, number?, number?, number?, number?, number?] + } +} + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/arraySupport.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/arraySupport.js new file mode 100644 index 0000000..b16675f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/arraySupport.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_arraySupport=t()}(this,(function(){"use strict";return function(e,t,n){var o=t.prototype,i=function(e){var t=e.date,o=e.utc;return Array.isArray(t)?o?t.length?new Date(Date.UTC.apply(null,t)):new Date:1===t.length?n(String(t[0])).toDate():new(Function.prototype.bind.apply(Date,[null].concat(t))):t},a=o.parse;o.parse=function(e){e.date=i.bind(this)(e),a.bind(this)(e)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/badMutable.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/badMutable.d.ts new file mode 100644 index 0000000..30ec75e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/badMutable.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/badMutable.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/badMutable.js new file mode 100644 index 0000000..68270cc --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/badMutable.js @@ -0,0 +1 @@ +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_badMutable=i()}(this,(function(){"use strict";return function(t,i){var n=i.prototype;n.$g=function(t,i,n){return this.$utils().u(t)?this[i]:this.$set(n,t)},n.set=function(t,i){return this.$set(t,i)};var e=n.startOf;n.startOf=function(t,i){return this.$d=e.bind(this)(t,i).toDate(),this.init(),this};var s=n.add;n.add=function(t,i){return this.$d=s.bind(this)(t,i).toDate(),this.init(),this};var o=n.locale;n.locale=function(t,i){return t?(this.$L=o.bind(this)(t,i).$L,this):this.$L};var r=n.daysInMonth;n.daysInMonth=function(){return r.bind(this.clone())()};var u=n.isSame;n.isSame=function(t,i){return u.bind(this.clone())(t,i)};var f=n.isBefore;n.isBefore=function(t,i){return f.bind(this.clone())(t,i)};var d=n.isAfter;n.isAfter=function(t,i){return d.bind(this.clone())(t,i)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/buddhistEra.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/buddhistEra.d.ts new file mode 100644 index 0000000..30ec75e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/buddhistEra.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/buddhistEra.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/buddhistEra.js new file mode 100644 index 0000000..58b137c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/buddhistEra.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_buddhistEra=e()}(this,(function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/(\[[^\]]+])|BBBB|BB/g,(function(t,n){var i,o=String(e.$y+543),f="BB"===t?[o.slice(-2),2]:[o,4];return n||(i=e.$utils()).s.apply(i,f.concat(["0"]))}));return i.bind(this)(n)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/calendar.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/calendar.d.ts new file mode 100644 index 0000000..a8d064f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/calendar.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + calendar(referenceTime?: ConfigType, formats?: object): string + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/calendar.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/calendar.js new file mode 100644 index 0000000..c577098 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/calendar.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_calendar=t()}(this,(function(){"use strict";return function(e,t,a){var n="h:mm A",d={lastDay:"[Yesterday at] "+n,sameDay:"[Today at] "+n,nextDay:"[Tomorrow at] "+n,nextWeek:"dddd [at] "+n,lastWeek:"[Last] dddd [at] "+n,sameElse:"MM/DD/YYYY"};t.prototype.calendar=function(e,t){var n=t||this.$locale().calendar||d,o=a(e||void 0).startOf("d"),s=this.diff(o,"d",!0),i="sameElse",f=s<-6?i:s<-1?"lastWeek":s<0?"lastDay":s<1?"sameDay":s<2?"nextDay":s<7?"nextWeek":i,l=n[f]||d[f];return"function"==typeof l?l.call(this,a()):this.format(l)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/customParseFormat.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/customParseFormat.d.ts new file mode 100644 index 0000000..1b41c0d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/customParseFormat.d.ts @@ -0,0 +1,8 @@ +import { PluginFunc } from 'dayjs' + +declare interface PluginOptions { + parseTwoDigitYear?: (yearString: string) => number +} + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/customParseFormat.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/customParseFormat.js new file mode 100644 index 0000000..b0eaad3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/customParseFormat.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,r=/\d\d?/,i=/\d*[^\s\d-_:/()]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[r,a("seconds")],ss:[r,a("seconds")],m:[r,a("minutes")],mm:[r,a("minutes")],H:[r,a("hours")],h:[r,a("hours")],HH:[r,a("hours")],hh:[r,a("hours")],D:[r,a("day")],DD:[n,a("day")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],M:[r,a("month")],MM:[n,a("month")],MMM:[i,function(e){var t=h("months"),n=(h("monthsShort")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,a("year")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\d{4}/,a("year")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date(("X"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date("")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date("")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(""))}else i.call(this,e)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/dayOfYear.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/dayOfYear.d.ts new file mode 100644 index 0000000..4fd6601 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/dayOfYear.d.ts @@ -0,0 +1,11 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + dayOfYear(): number + dayOfYear(value: number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/dayOfYear.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/dayOfYear.js new file mode 100644 index 0000000..4a57000 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/dayOfYear.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_dayOfYear=t()}(this,(function(){"use strict";return function(e,t,n){t.prototype.dayOfYear=function(e){var t=Math.round((n(this).startOf("day")-n(this).startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"day")}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/devHelper.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/devHelper.d.ts new file mode 100644 index 0000000..30ec75e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/devHelper.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/devHelper.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/devHelper.js new file mode 100644 index 0000000..a3f6daf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/devHelper.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_devHelper=t()}(this,(function(){"use strict";return function(e,t,o){if(!process||"production"!==process.env.NODE_ENV){var s=t.prototype,n=s.parse;s.parse=function(e){var t=e.date;return"string"==typeof t&&13===t.length&&console.warn("To parse a Unix timestamp like "+t+", you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds"),"number"==typeof t&&4===String(t).length&&console.warn("Guessing you may want to parse the Year "+t+", you should pass it as a String "+t+", not a Number. Otherwise, "+t+" will be treated as a Unix timestamp"),e.args.length>=2&&!o.p.customParseFormat&&console.warn("To parse a date-time string like "+t+" using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format"),n.bind(this)(e)};var a=o.locale;o.locale=function(e,t,s){return void 0===t&&"string"==typeof e&&(o.Ls[e]||console.warn("Guessing you may want to use locale "+e+", you have to load it before using it. https://day.js.org/docs/en/i18n/loading-into-nodejs")),a(e,t,s)}}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/duration.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/duration.d.ts new file mode 100644 index 0000000..9675a80 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/duration.d.ts @@ -0,0 +1,88 @@ +import { PluginFunc } from 'dayjs' +import { OpUnitType, UnitTypeLongPlural } from 'dayjs'; + +declare const plugin: PluginFunc +export as namespace plugin; +export = plugin + +declare namespace plugin { + /** + * @deprecated Please use more strict types + */ + type DurationInputType = string | number | object + /** + * @deprecated Please use more strict types + */ + type DurationAddType = number | object | Duration + + type DurationUnitsObjectType = Partial<{ + [unit in Exclude | "weeks"]: number + }>; + type DurationUnitType = Exclude + type CreateDurationType = + ((units: DurationUnitsObjectType) => Duration) + & ((time: number, unit?: DurationUnitType) => Duration) + & ((ISO_8601: string) => Duration) + type AddDurationType = CreateDurationType & ((duration: Duration) => Duration) + + interface Duration { + new (input: string | number | object, unit?: string, locale?: string): Duration + + clone(): Duration + + humanize(withSuffix?: boolean): string + + milliseconds(): number + asMilliseconds(): number + + seconds(): number + asSeconds(): number + + minutes(): number + asMinutes(): number + + hours(): number + asHours(): number + + days(): number + asDays(): number + + weeks(): number + asWeeks(): number + + months(): number + asMonths(): number + + years(): number + asYears(): number + + as(unit: DurationUnitType): number + + get(unit: DurationUnitType): number + + add: AddDurationType + + subtract: AddDurationType + + toJSON(): string + + toISOString(): string + + format(formatStr?: string): string + + locale(locale: string): Duration + } +} + +declare module 'dayjs' { + interface Dayjs { + add(duration: plugin.Duration): Dayjs + subtract(duration: plugin.Duration): Dayjs + } + + /** + * @param time If unit is not present, time treated as number of milliseconds + */ + export const duration: plugin.CreateDurationType; + export function isDuration(d: any): d is plugin.Duration +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/duration.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/duration.js new file mode 100644 index 0000000..bd1c1a2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/duration.js @@ -0,0 +1 @@ +!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){"use strict";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+"s"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:""+y(t)+s}:{negative:!1,format:""+t+s}:{negative:!1,format:""}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if("string"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,"Y"),s=g(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,"D"),e=g(this.$d.hours,"H"),r=g(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,"S"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?"T":"",d=(h?"-":"")+"P"+t.format+s.format+i.format+a+e.format+r.format+u.format;return"P"===d||"-P"===d?"P0D":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",i={Y:this.$d.years,YY:s.s(this.$d.years,2,"0"),YYYY:s.s(this.$d.years,4,"0"),M:this.$d.months,MM:s.s(this.$d.months,2,"0"),D:this.$d.days,DD:s.s(this.$d.days,2,"0"),H:this.$d.hours,HH:s.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,"0"),SSS:s.s(this.$d.milliseconds,3,"0")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return"milliseconds"===n?s%=1e3:s="weeks"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get("milliseconds")},y.asMilliseconds=function(){return this.as("milliseconds")},y.seconds=function(){return this.get("seconds")},y.asSeconds=function(){return this.as("seconds")},y.minutes=function(){return this.get("minutes")},y.asMinutes=function(){return this.as("minutes")},y.hours=function(){return this.get("hours")},y.asHours=function(){return this.as("hours")},y.days=function(){return this.get("days")},y.asDays=function(){return this.as("days")},y.weeks=function(){return this.get("weeks")},y.asWeeks=function(){return this.as("weeks")},y.months=function(){return this.get("months")},y.asMonths=function(){return this.as("months")},y.years=function(){return this.get("years")},y.asYears=function(){return this.as("years")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isBetween.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isBetween.d.ts new file mode 100644 index 0000000..431fff8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isBetween.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType, OpUnitType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isBetween(a: ConfigType, b: ConfigType, c?: OpUnitType | null, d?: '()' | '[]' | '[)' | '(]'): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isBetween.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isBetween.js new file mode 100644 index 0000000..68046cb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isBetween.js @@ -0,0 +1 @@ +!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){"use strict";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r="("===(f=f||"()")[0],u=")"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isLeapYear.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isLeapYear.d.ts new file mode 100644 index 0000000..5be7409 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isLeapYear.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isLeapYear(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isLeapYear.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isLeapYear.js new file mode 100644 index 0000000..030bd46 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isLeapYear.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isLeapYear=t()}(this,(function(){"use strict";return function(e,t){t.prototype.isLeapYear=function(){return this.$y%4==0&&this.$y%100!=0||this.$y%400==0}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isMoment.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isMoment.d.ts new file mode 100644 index 0000000..dac24f6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isMoment.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + + export function isMoment(input: any): boolean + +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isMoment.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isMoment.js new file mode 100644 index 0000000..be26412 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isMoment.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isMoment=n()}(this,(function(){"use strict";return function(e,n,t){t.isMoment=function(e){return t.isDayjs(e)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrAfter.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrAfter.d.ts new file mode 100644 index 0000000..1c8c264 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrAfter.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType, OpUnitType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isSameOrAfter(date: ConfigType, unit?: OpUnitType): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrAfter.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrAfter.js new file mode 100644 index 0000000..76f8a33 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrAfter.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){"use strict";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrBefore.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrBefore.d.ts new file mode 100644 index 0000000..1df5492 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrBefore.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc, ConfigType, OpUnitType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isSameOrBefore(date: ConfigType, unit?: OpUnitType): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrBefore.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrBefore.js new file mode 100644 index 0000000..57a767e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isSameOrBefore.js @@ -0,0 +1 @@ +!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){"use strict";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isToday.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isToday.d.ts new file mode 100644 index 0000000..04ac581 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isToday.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isToday(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isToday.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isToday.js new file mode 100644 index 0000000..ee9f9cd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isToday.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isToday=o()}(this,(function(){"use strict";return function(e,o,t){o.prototype.isToday=function(){var e="YYYY-MM-DD",o=t();return this.format(e)===o.format(e)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isTomorrow.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isTomorrow.d.ts new file mode 100644 index 0000000..08110b6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isTomorrow.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isTomorrow(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isTomorrow.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isTomorrow.js new file mode 100644 index 0000000..ca85044 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isTomorrow.js @@ -0,0 +1 @@ +!function(o,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(o="undefined"!=typeof globalThis?globalThis:o||self).dayjs_plugin_isTomorrow=e()}(this,(function(){"use strict";return function(o,e,t){e.prototype.isTomorrow=function(){var o="YYYY-MM-DD",e=t().add(1,"day");return this.format(o)===e.format(o)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isYesterday.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isYesterday.d.ts new file mode 100644 index 0000000..2d8ae9e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isYesterday.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isYesterday(): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isYesterday.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isYesterday.js new file mode 100644 index 0000000..b63b68a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isYesterday.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isYesterday=t()}(this,(function(){"use strict";return function(e,t,n){t.prototype.isYesterday=function(){var e="YYYY-MM-DD",t=n().subtract(1,"day");return this.format(e)===t.format(e)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeek.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeek.d.ts new file mode 100644 index 0000000..26c591b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeek.d.ts @@ -0,0 +1,27 @@ +import { PluginFunc, OpUnitType, ConfigType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +type ISOUnitType = OpUnitType | 'isoWeek'; + +declare module 'dayjs' { + interface Dayjs { + isoWeekYear(): number + isoWeek(): number + isoWeek(value: number): Dayjs + + isoWeekday(): number + isoWeekday(value: number): Dayjs + + startOf(unit: ISOUnitType): Dayjs + + endOf(unit: ISOUnitType): Dayjs + + isSame(date: ConfigType, unit?: ISOUnitType): boolean + + isBefore(date: ConfigType, unit?: ISOUnitType): boolean + + isAfter(date: ConfigType, unit?: ISOUnitType): boolean + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeek.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeek.js new file mode 100644 index 0000000..202ade7 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeek.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){"use strict";var e="day";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf("year"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,"week")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return"isoweek"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):n.bind(this)(e,t)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeeksInYear.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeeksInYear.d.ts new file mode 100644 index 0000000..2bc02cd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeeksInYear.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + isoWeeksInYear(): number + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeeksInYear.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeeksInYear.js new file mode 100644 index 0000000..2bd20cd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/isoWeeksInYear.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeeksInYear=n()}(this,(function(){"use strict";return function(e,n){n.prototype.isoWeeksInYear=function(){var e=this.isLeapYear(),n=this.endOf("y").day();return 4===n||e&&5===n?53:52}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localeData.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localeData.d.ts new file mode 100644 index 0000000..bc0aa14 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localeData.d.ts @@ -0,0 +1,42 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + type WeekdayNames = [string, string, string, string, string, string, string]; + type MonthNames = [string, string, string, string, string, string, string, string, string, string, string, string]; + + interface InstanceLocaleDataReturn { + firstDayOfWeek(): number; + weekdays(instance?: Dayjs): WeekdayNames; + weekdaysShort(instance?: Dayjs): WeekdayNames; + weekdaysMin(instance?: Dayjs): WeekdayNames; + months(instance?: Dayjs): MonthNames; + monthsShort(instance?: Dayjs): MonthNames; + longDateFormat(format: string): string; + meridiem(hour?: number, minute?: number, isLower?: boolean): string; + } + + interface GlobalLocaleDataReturn { + firstDayOfWeek(): number; + weekdays(): WeekdayNames; + weekdaysShort(): WeekdayNames; + weekdaysMin(): WeekdayNames; + months(): MonthNames; + monthsShort(): MonthNames; + longDateFormat(format: string): string; + meridiem(hour?: number, minute?: number, isLower?: boolean): string; + } + + interface Dayjs { + localeData(): InstanceLocaleDataReturn; + } + + export function weekdays(localOrder?: boolean): WeekdayNames; + export function weekdaysShort(localOrder?: boolean): WeekdayNames; + export function weekdaysMin(localOrder?: boolean): WeekdayNames; + export function monthsShort(): MonthNames; + export function months(): MonthNames; + export function localeData(): GlobalLocaleDataReturn; +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localeData.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localeData.js new file mode 100644 index 0000000..55e01ee --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localeData.js @@ -0,0 +1 @@ +!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){"use strict";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format("MMMM"):u(n,"months")},monthsShort:function(e){return e?e.format("MMM"):u(n,"monthsShort","months",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format("dddd"):u(n,"weekdays")},weekdaysMin:function(e){return e?e.format("dd"):u(n,"weekdaysMin","weekdays",2)},weekdaysShort:function(e){return e?e.format("ddd"):u(n,"weekdaysShort","weekdays",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),"months")},t.monthsShort=function(){return u(i(),"monthsShort","months",3)},t.weekdays=function(n){return u(i(),"weekdays",null,null,n)},t.weekdaysShort=function(n){return u(i(),"weekdaysShort","weekdays",3,n)},t.weekdaysMin=function(n){return u(i(),"weekdaysMin","weekdays",2,n)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localizedFormat.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localizedFormat.d.ts new file mode 100644 index 0000000..30ec75e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localizedFormat.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localizedFormat.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localizedFormat.js new file mode 100644 index 0000000..2aa4665 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/localizedFormat.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t="YYYY-MM-DDTHH:mm:ssZ");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/minMax.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/minMax.d.ts new file mode 100644 index 0000000..f167350 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/minMax.d.ts @@ -0,0 +1,11 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + export function max(dayjs: Dayjs[]): Dayjs + export function max(...dayjs: Dayjs[]): Dayjs + export function min(dayjs: Dayjs[]): Dayjs + export function min(...dayjs: Dayjs[]): Dayjs +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/minMax.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/minMax.js new file mode 100644 index 0000000..ef427f9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/minMax.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_minMax=n()}(this,(function(){"use strict";return function(e,n,t){var i=function(e,n){if(!n||!n.length||!n[0]||1===n.length&&!n[0].length)return null;var t;1===n.length&&n[0].length>0&&(n=n[0]);t=n[0];for(var i=1;i=0?1:u.date()),c=a.year||u.year(),f=a.month>=0?a.month:a.year||a.day?0:u.month(),s=a.hour||0,h=a.minute||0,b=a.second||0,y=a.millisecond||0;return o?new Date(Date.UTC(c,f,d,s,h,b,y)):new Date(c,f,d,s,h,b,y)}return r},o=i.parse;i.parse=function(t){t.date=r.bind(this)(t),o.bind(this)(t)};var a=i.set,u=i.add,d=function(t,n,e,i){if(void 0===i&&(i=1),n instanceof Object){var r=Object.keys(n),o=this;return r.forEach((function(e){o=t.bind(o)(n[e]*i,e)})),o}return t.bind(this)(n*i,e)};i.set=function(t,n){return n=void 0===n?t:n,d.bind(this)((function(t,n){return a.bind(this)(n,t)}),n,t)},i.add=function(t,n){return d.bind(this)(u,t,n)},i.subtract=function(t,n){return d.bind(this)(u,t,n,-1)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/pluralGetSet.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/pluralGetSet.d.ts new file mode 100644 index 0000000..ab2d89a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/pluralGetSet.d.ts @@ -0,0 +1,44 @@ +import { PluginFunc, UnitType, ConfigType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + years(): number + + years(value: number): Dayjs + + months(): number + + months(value: number): Dayjs + + dates(): number + + dates(value: number): Dayjs + + weeks(): number + + weeks(value: number): Dayjs + + days(): number + + days(value: number): Dayjs + + hours(): number + + hours(value: number): Dayjs + + minutes(): number + + minutes(value: number): Dayjs + + seconds(): number + + seconds(value: number): Dayjs + + milliseconds(): number + + milliseconds(value: number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/pluralGetSet.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/pluralGetSet.js new file mode 100644 index 0000000..d758494 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/pluralGetSet.js @@ -0,0 +1 @@ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_pluralGetSet=o()}(this,(function(){"use strict";return function(e,o){var s=o.prototype;["milliseconds","seconds","minutes","hours","days","weeks","isoWeeks","months","quarters","years","dates"].forEach((function(e){s[e]=s[e.replace(/s$/,"")]}))}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/preParsePostFormat.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/preParsePostFormat.d.ts new file mode 100644 index 0000000..30ec75e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/preParsePostFormat.d.ts @@ -0,0 +1,4 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/preParsePostFormat.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/preParsePostFormat.js new file mode 100644 index 0000000..5611d10 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/preParsePostFormat.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_preParsePostFormat=e()}(this,(function(){"use strict";return function(t,e){var o=e.prototype.parse;e.prototype.parse=function(t){if("string"==typeof t.date){var e=this.$locale();t.date=e&&e.preparse?e.preparse(t.date):t.date}return o.bind(this)(t)};var r=e.prototype.format;e.prototype.format=function(){for(var t=arguments.length,e=new Array(t),o=0;o number + thresholds?: RelativeTimeThreshold[] +} + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + fromNow(withoutSuffix?: boolean): string + from(compared: ConfigType, withoutSuffix?: boolean): string + toNow(withoutSuffix?: boolean): string + to(compared: ConfigType, withoutSuffix?: boolean): string + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/relativeTime.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/relativeTime.js new file mode 100644 index 0000000..898eee6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/relativeTime.js @@ -0,0 +1 @@ +!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){"use strict";return function(r,e,t){r=r||{};var n=e.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],m=h.length,c=0;c0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(""+p)),a="string"==typeof v?v.replace("%d",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return"function"==typeof M?M(a):M.replace("%s",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/timezone.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/timezone.d.ts new file mode 100644 index 0000000..d504f69 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/timezone.d.ts @@ -0,0 +1,20 @@ +import { PluginFunc, ConfigType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + tz(timezone?: string, keepLocalTime?: boolean): Dayjs + offsetName(type?: 'short' | 'long'): string | undefined + } + + interface DayjsTimezone { + (date: ConfigType, timezone?: string): Dayjs + (date: ConfigType, format: string, timezone?: string): Dayjs + guess(): string + setDefault(timezone?: string): void + } + + const tz: DayjsTimezone +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/timezone.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/timezone.js new file mode 100644 index 0000000..fb6112a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/timezone.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){"use strict";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||"short",o=t+"|"+i,r=e[o];return r||(r=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,v=r[0]+"-"+r[1]+"-"+r[2]+" "+l+":"+r[4]+":"+r[5]+":000",h=+e;return(o.utc(v).valueOf()-(h-=h%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString("en-US",{timeZone:t}),u=Math.round((i-new Date(a))/1e3/60),f=o(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-u,!0);if(e){var s=f.utcOffset();f=f.add(n-s,"minute")}return f.$x.$timezone=t,f},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return"timezonename"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if("string"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toArray.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toArray.d.ts new file mode 100644 index 0000000..45f1f0c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toArray.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + toArray(): number[] + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toArray.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toArray.js new file mode 100644 index 0000000..ac06750 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toArray.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_toArray=e()}(this,(function(){"use strict";return function(t,e){e.prototype.toArray=function(){return[this.$y,this.$M,this.$D,this.$H,this.$m,this.$s,this.$ms]}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toObject.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toObject.d.ts new file mode 100644 index 0000000..ca12aaf --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toObject.d.ts @@ -0,0 +1,20 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +interface DayjsObject { + years: number + months: number + date: number + hours: number + minutes: number + seconds: number + milliseconds: number +} + +declare module 'dayjs' { + interface Dayjs { + toObject(): DayjsObject + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toObject.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toObject.js new file mode 100644 index 0000000..573b49e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/toObject.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_toObject=e()}(this,(function(){"use strict";return function(t,e){e.prototype.toObject=function(){return{years:this.$y,months:this.$M,date:this.$D,hours:this.$H,minutes:this.$m,seconds:this.$s,milliseconds:this.$ms}}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/updateLocale.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/updateLocale.d.ts new file mode 100644 index 0000000..ef1c01d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/updateLocale.d.ts @@ -0,0 +1,8 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + export function updateLocale(localeName: string, customConfig: Record): Record +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/updateLocale.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/updateLocale.js new file mode 100644 index 0000000..811d9e9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/updateLocale.js @@ -0,0 +1 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_updateLocale=n()}(this,(function(){"use strict";return function(e,n,t){t.updateLocale=function(e,n){var o=t.Ls[e];if(o)return(n?Object.keys(n):[]).forEach((function(e){o[e]=n[e]})),o}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/utc.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/utc.d.ts new file mode 100644 index 0000000..544ea4e --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/utc.d.ts @@ -0,0 +1,19 @@ +import { PluginFunc, ConfigType } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + + utc(keepLocalTime?: boolean): Dayjs + + local(): Dayjs + + isUTC(): boolean + + utcOffset(offset: number | string, keepLocalTime?: boolean): Dayjs + } + + export function utc(config?: ConfigType, format?: string, strict?: boolean): Dayjs +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/utc.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/utc.js new file mode 100644 index 0000000..940839f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/utc.js @@ -0,0 +1 @@ +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){"use strict";var t="minute",i=/[+-]\d\d(?::?\d\d)?/g,e=/([+-]|\d\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if("string"==typeof s&&(s=function(t){void 0===t&&(t="");var s=t.match(i);if(!s)return null;var f=(""+s[0]).match(e)||["-",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:"+"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return"s"===t&&this.$offset?n(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekOfYear.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekOfYear.d.ts new file mode 100644 index 0000000..d988014 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekOfYear.d.ts @@ -0,0 +1,12 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + week(): number + + week(value : number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekOfYear.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekOfYear.js new file mode 100644 index 0000000..7e234c4 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekOfYear.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){"use strict";var e="week",t="year";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),"day");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,"millisecond"),o=this.diff(a,e,!0);return o<0?r(this).startOf("week").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekYear.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekYear.d.ts new file mode 100644 index 0000000..df25331 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekYear.d.ts @@ -0,0 +1,10 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + weekYear(): number + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekYear.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekYear.js new file mode 100644 index 0000000..d90d137 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekYear.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekYear=t()}(this,(function(){"use strict";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}})); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekday.d.ts b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekday.d.ts new file mode 100644 index 0000000..87a8025 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekday.d.ts @@ -0,0 +1,12 @@ +import { PluginFunc } from 'dayjs' + +declare const plugin: PluginFunc +export = plugin + +declare module 'dayjs' { + interface Dayjs { + weekday(): number + + weekday(value: number): Dayjs + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekday.js b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekday.js new file mode 100644 index 0000000..ae2276b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/dayjs/plugin/weekday.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekday=t()}(this,(function(){"use strict";return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i{ + return new Promise((resv,rejv)=>{ + // #ifdef APP-NVUE + setTimeout(async function () { + + /*获取元素引用*/ + var ganvas = proxy?.$refs[canvasid]; + /*通过元素引用获取canvas对象*/ + var canvasObj = enable(ganvas, { + bridge: WeexBridge + }); + resv({ctx:canvasObj.getContext('2d'),node:canvasObj}) + }, 100) + // #endif + + + // #ifdef MP + setTimeout(async function () { + const query = uni.createSelectorQuery().in(proxy) + // #ifdef MP-ALIPAY + + query.select('#'+canvasid).node().exec((res2) => { + const canvas = res2[0].node; + let ctxvb:UniApp.CanvasContext = canvas.getContext('2d'); + resv({ctx:ctxvb,node:canvas}) + }) + // #endif + + // #ifndef MP-ALIPAY + query.select('#'+canvasid) + .fields({ + node: true, + size: true, + context:true + }) + .exec((res) => { + + const canvas = res[0]?.node??null; + + if(canvas){ + const ctx = canvas.getContext('2d') + const dpr = uni.getSystemInfoSync().pixelRatio + canvas.width = res[0].width * dpr + canvas.height = res[0].height * dpr + if(ctx?.scale){ + ctx.scale(dpr, dpr) + } + resv({ctx:ctx,node:canvas}) + + }else{ + const ctx = res[0]?.context??null + resv({ctx:ctx,node:null}) + } + + }) + // #endif + }, 100) + // #endif + + + // #ifdef H5 || APP-VUE + setTimeout(async function () { + const query = uni.createSelectorQuery().in(proxy) + + resv({ctx:uni.createCanvasContext(canvasid, proxy),node:null}) + // return + // query.select('#'+canvasid) + // .fields({ + // node: true, + // size: true, + // context:true + // }) + // .exec((res) => { + // const dpr = uni.getSystemInfoSync().pixelRatio + // let canvas = proxy.$el.querySelector('canvas').getContext('2d') + // let canvasEl = proxy.$el.querySelector('canvas') + // canvas.scale(0.1, 0.1) + // resv({ctx:canvas,node:proxy.$el.querySelector('canvas')}) + // }) + }, 50) + + // #endif + + }) +} + + + diff --git a/uni_modules/UniDevTools/src/tmui/tool/function/preview.ts b/uni_modules/UniDevTools/src/tmui/tool/function/preview.ts new file mode 100644 index 0000000..d2c5424 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/function/preview.ts @@ -0,0 +1,51 @@ +/** + * 预览图片 + * 作者:tmzdy + * 联系:zhongjihan@sina.com + * 预览图片。 + * @param {Object} url 必填 当前预览的图片链接。 + * @param {Object} list 可以是url数组,也可以是对象,数据比如:["http:url"] or [{url:"https:url",...}] + * @param {Object} rangKey 如果list是对象数组,需要提供url字段。 + */ + export function preview(url:string="",list:Array=[],rangKey:string = "url"){ + + if(!url){ + uni.$tm.u.toast("参数有误"); + return; + } + + if(arguments.length==1){ + uni.previewImage({ + current:url, + urls:[url] + }) + }else if(arguments.length===3){ + + if(typeof list[0] === 'object' && typeof list[0] !== 'undefined'){ + + let urls:Array = []; + list.forEach((item:any)=>{ + urls.push(item[rangKey]); + }) + + uni.previewImage({ + current:url, + urls:urls, + fail: (er) => { + console.warn(er) + } + }) + }else if(typeof list[0] === 'string'){ + uni.previewImage({ + current:url, + urls:list + }) + } + }else{ + uni.$tm.u.toast("参数有误"); + } + + + +} + diff --git a/uni_modules/UniDevTools/src/tmui/tool/function/text.txt b/uni_modules/UniDevTools/src/tmui/tool/function/text.txt new file mode 100644 index 0000000..e69de29 diff --git a/uni_modules/UniDevTools/src/tmui/tool/function/util.ts b/uni_modules/UniDevTools/src/tmui/tool/function/util.ts new file mode 100644 index 0000000..0a05f23 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/function/util.ts @@ -0,0 +1,901 @@ +import { ComponentInternalInstance } from 'vue' +interface Data { + [key: string]: any; +} +/** + * 预览图片。 + @param {Object} url 必填 当前预览的图片链接。 + @param {Object} list 可以是url数组,也可以是对象,数据比如:["http:url"] or [{url:"https:url",...}] + @param {Object} rangKey 如果list是对象数组,需要提供url字段。 + */ +import { preview } from "./preview.js" +export default preview; +/** + * 检测是否是数字 + * @param arg 待检测的字符 + * @param defaultNum 0,如果不符合值时设置默认值 + * @returns number类型数值 + */ +export function isNumber(arg: string | number | undefined | null, defaultNum = 0): number { + const p = Number(arg); + return p || defaultNum; +} +/** + * 检测是否是字符串 + * @param arg 待检测的字符 + * @param defaultNum 默认"",如果不符合值是设置默认值 + * @returns 字符串 + */ +export function isString(arg: string | number | undefined | null, defaultStr = ""): string { + let p = ""; + if (typeof arg === "string" && arg != null) { + p = String(arg); + } else p = defaultStr; + return p; +} +/** + * 把一个数字进行分页返回数字数组 + * @param total 总数 + * @param pageSize 分页大小 + * @returns 数字数组 + */ +export function paginate(total: number, pageSize: number): number[] { + const pages = Math.ceil(total / pageSize); + const pageArr: number[] = []; + for (let i = 0; i < pages; i++) { + pageArr.push(i + 1); + } + return pageArr; +} + + +/** + * 取对象数据值(可深层次取值) + * @example getValue(data,"a.b.c") + * @param data 对象数据 + * @param keys 键值 + * @returns 返回值 + * @description 注意不会去改变原来的数据 + */ +export function getValue(data: Data, keys: string): any { + const keyArr = keys.split("."); + let result = { ...data }; + + for (const key of keyArr) { + result = result[key]; + if (result === undefined || result === null) { + return result; + } + } + + return result; +} + +/** + * 设置对象键值(可深层次设置值) + * @example setValue(data,"a.b.c","haha") + * @param data 对象数据 + * @param keys 键值 + * @returns 修改后的对象数据。 + * @description 改变原来的数据 + */ +export function setValue(data: Data, keys: string, value: any): void { + const keyArr = keys.split("."); + let obj = data; + for (let i = 0; i < keyArr.length - 1; i++) { + const key = keyArr[i]; + if (!(key in obj)) { + obj[key] = {}; + } + obj = obj[key]; + } + obj[keyArr[keyArr.length - 1]] = value; +} +/** + * 计算并返回一个对象中最大的层级数 + * @param data 待检测对象数据 + * @returns 最大层级数 + */ +export function getMaxDepth(data: Data): number { + let maxDepth = 0; + + function traverse(obj: any, depth: number): void { + if (typeof obj !== "object" || obj === null) { + maxDepth = Math.max(maxDepth, depth); + return; + } + for (const key in obj) { + // deno-lint-ignore no-prototype-builtins + if (obj.hasOwnProperty(key)) { + traverse(obj[key], depth + 1); + } + } + } + + traverse(data, 0); + + return maxDepth; +} + +/** + * 深度合并对象 + * @param FirstOBJ 需要合并的对象 + * @param SecondOBJ 被合并的对象 + * @returns 返回合并后的对象 + */ +export function deepObjectMerge(FirstOBJ : Data, SecondOBJ : Data) : Data { // 深度合并对象 + for (var key in SecondOBJ) { + FirstOBJ[key] = FirstOBJ[key] && FirstOBJ[key]?.toString() === "[object Object]" ? + deepObjectMerge(FirstOBJ[key], SecondOBJ[key]) : FirstOBJ[key] = SecondOBJ[key]; + } + return FirstOBJ; +} + +/** +* 数据分组 +* @param {Array} oArr - 原数组列表 +* @param {Number} length - 单个数组长度 +* @return {Array} arr - 分组后的新数组 +*/ +export function splitData(arr: Array = [], size = 1): Array { + const result = []; + for (let i = 0; i < arr.length; i += size) { + result.push(arr.slice(i, i + size)); + } + return result as T[][]; +} + + +/** + * 深度克隆 + * @param {T} data 待大克隆复制的数据 + * @return {T} any + */ +export function deepClone(data: T): T { + // 对常见的“非”值,直接返回原来值 + if (data === null || typeof data !== "object") { + return data; + } + if (Array.isArray(data)) { + const clone: any[] = []; + for (const item of data) { + clone.push(deepClone(item)); + } + return clone as any; + } + if (data instanceof Date) { + return new Date(data.getTime()) as unknown as T; + } + if (data instanceof RegExp) { + const flags = data.flags; + return new RegExp(data.source, flags) as unknown as T; + } + if (typeof data === "function") { + return data as unknown as T; + } + const clone = {} as T; + for (const key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + clone[key] = deepClone(data[key]); + } + } + return clone; +} + + +/** +* 剩余时间格式化 +* @param {Number} t - 剩余多少秒 +* @return {Object} format - 格式后的天时分秒对象 +*/ +export function timeMuch(t: number) { + let format: any = { + d: '00', + h: '00', + m: '00', + s: '00' + }; + if (t > 0) { + let d = Math.floor(t / 86400); + let h = Math.floor((t / 3600) % 24); + let m = Math.floor((t / 60) % 60); + let s = Math.floor(t % 60); + format.d = d < 10 ? '0' + d : d; + format.h = h < 10 ? '0' + h : h; + format.m = m < 10 ? '0' + m : m; + format.s = s < 10 ? '0' + s : s; + } + return format; +} +//获取时间距离当前时间 +export function getDateToNewData(timestamp: number | string | Date = new Date().getTime()) { + if (typeof timestamp == 'string') { + timestamp = new Date(timestamp).getTime(); + } + + // 补全为13位 + var arrTimestamp: Array = (timestamp + '').split(''); + for (var start = 0; start < 13; start++) { + if (!arrTimestamp[start]) { + arrTimestamp[start] = '0'; + } + } + timestamp = Number(arrTimestamp.join('')) * 1; + + var minute = 1000 * 60; + var hour = minute * 60; + var day = hour * 24; + var halfamonth = day * 15; + var month = day * 30; + var now = new Date().getTime(); + var diffValue = now - timestamp; + + // 如果本地时间反而小于变量时间 + if (diffValue < 0) { + return '不久前'; + } + // 计算差异时间的量级 + var monthC = diffValue / month; + var weekC = diffValue / (7 * day); + var dayC = diffValue / day; + var hourC = diffValue / hour; + var minC = diffValue / minute; + + // 数值补0方法 + var zero = function (value: number) { + if (value < 10) { + return '0' + value; + } + return value; + }; + + // 使用 + if (monthC > 12) { + // 超过1年,直接显示年月日 + return (function () { + var date = new Date(timestamp); + return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日'; + })(); + } else if (monthC >= 1) { + return parseInt(monthC + '') + "月前"; + } else if (weekC >= 1) { + return parseInt(weekC + '') + "周前"; + } else if (dayC >= 1) { + return parseInt(dayC + '') + "天前"; + } else if (hourC >= 1) { + return parseInt(hourC + '') + "小时前"; + } else if (minC >= 1) { + return parseInt(minC + '') + "分钟前"; + } + return '刚刚'; +} + +/** +* 打电话 +* @param {String} phoneNumber - 数字字符串 +* @return {Promise} +*/ +export function callPhone(phoneNumber = '') { + let num = phoneNumber.toString() + return new Promise((rs, rj) => { + uni.makePhoneCall({ + phoneNumber: num, + success: () => rs(true), + fail: (err) => rj(err) + }); + }) +} + +/** + * 调起客户端相机扫码。 + * @param {Boolean} onlyFromCamera true 是否只允许相机扫码识别 + * @param {Array} scanType ['barCode', 'qrCode', 'datamatrix','datamatrix'] + * @returns Promise 成功返回相关数据结构 + */ +export function scanCode(onlyFromCamera = true, scanType = ['barCode', 'qrCode', 'datamatrix', 'datamatrix']): Promise { + return new Promise((rs, rj) => { + // #ifdef H5 + rj('不支持H5'); + // #endif + // #ifndef H5 + uni.scanCode({ + onlyFromCamera: onlyFromCamera, + scanType: scanType, + success: (res) => rs(res), + fail: (error) => rj(error) + }); + // #endif + }) +} + +/** + * 设置剪切板内容。 + * @param {String} data + * @returns Promise true/false + */ +export function setClipboardData(data: string): Promise { + return new Promise((rs, rj) => { + // #ifndef H5 + uni.setClipboardData({ + data: data, + success: () => rs(true), + fail: (error) => rj(error) + }); + // #endif + // #ifdef H5 + if (navigator.clipboard && window.isSecureContext) { + navigator.clipboard.writeText(data).then(() => rs(true)).catch((error => rs(error))) + } else { + const textArea = document.createElement('textarea') + textArea.style.opacity = "0" + textArea.style.position = "fixed" + textArea.style.top = "0px" + textArea.value = data + document.body.appendChild(textArea) + textArea.focus() + textArea.select() + document.execCommand('copy') ? rs(true) : rj("错误") + textArea.remove() + } + // #endif + }) +} +/** + * 获取剪切板内容 + * @returns Promise 剪切板内容 + */ +export function getClipboardData(): Promise { + + return new Promise((rs, rj) => { + // #ifndef H5 + uni.getClipboardData({ + success: (res) => rs(res.data), + fail: (error) => rj(error) + }); + // #endif + // #ifdef H5 + console.error('H5无法获取剪切板内容') + rj('H5无法获取剪切板内容') + // #endif + }) + +} + +/** + * 设置cookie数据 + * @param {String} key 键值 + * @param {String} data 值 + * @returns Boolean + */ +export function setCookie(key: string, data: any) { + try { + uni.setStorageSync(key, data); + return true; + } catch (e) { + return false; + } +} +/** + * 删除一个本地cookie + * @param {String} key 键值 + * @returns Boolean + */ +export function delCookie(key: string) { + try { + uni.removeStorageSync(key); + return true; + } catch (e) { + return false; + } +} + +/** + * 获取一个cookie数据 + * 如果存入的是对象,返回的也是对象。如果是string返回的也是字符串。 + * @param {String} key 键 + * @returns json/string + */ +export function getCookie(key: string) { + try { + const value = uni.getStorageSync(key); + try { + let val = JSON.parse(value) + return val; + } catch (e) { + return value; + } + } catch (e) { + return undefined; + } +} + + +/** + * 向地址连接追加参数。 + * @param {string} uri 网址 + * @param {string} key 字段 + * @param {string} value 字段值 + * @returns + */ +export function httpUrlAddKey(uri: string, key: string, value: string) { + if (!value) { + return uri; + } + var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); + var separator = uri.indexOf("?") !== -1 ? "&" : "?"; + if (uri.match(re)) { + return uri.replace(re, "$1" + key + "=" + value + "$2"); + } else { + return uri + separator + key + "=" + value; + } +} +/** + * 取url参数 + * @param {string} uri 网址 + * @param {string} key 字段 + * @returns string + */ +export function getQueryString(url: string, key: string): string { + var query_string = url.substring(url.indexOf("?")); + if (!query_string) return ""; + var re = /[?&]?([^=]+)=([^&]*)/g; + var tokens: any; + while (tokens = re.exec(query_string)) { + if (decodeURIComponent(tokens[1]) === key) { + return decodeURIComponent(tokens[2]); + break; + } + } + return ""; +} + +/** + * + * @param rdix 随机因子 + * @param length 取的长度 + * @param isAddStr 是否限制随机结果中的长度,不允许输出长度 + * @returns String + */ +export function getUid(rdix = 1, length = 12, isAddStr = false) { + return Math.floor(Math.random() * rdix * Math.floor(Math.random() * Date.now())).toString(isAddStr ? 16 : 10).substring(0, length); +} + +/* +防抖 +防抖原理:在一定时间内,只有最后一次操作,再过wait毫秒后才执行函数 + @param {Function} func 要执行的回调函数 + @param {Number} wait 延迟的时间 + @param{Boolean} immediate 是否要立即执行 +*/ +var timeout: any = getUid(1) +export function debounce(func: Function, wait = 500, immediate = false) { + // 清除定时器 + if (timeout !== null) clearTimeout(timeout); + // 立即执行,此类情况一般用不到 + if (immediate) { + timeout = setTimeout(() => { + timeout = null; + }, wait); + typeof func === "function" && func(); + } else { + // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法 + timeout = getUid(1); + timeout = setTimeout(() => { + typeof func === "function" && func(); + }, wait); + } +} + +/** + * 节流 + 节流原理:在一定时间内,只能触发一次 + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延时的时间 + * @param {Boolean} immediate 是否立即执行 + * @return null + */ +var timesr: any = NaN, throttleFlag: boolean; +export function throttle(func: Function, wait = 500, immediate = true) { + if (immediate) { + if (!throttleFlag) { + throttleFlag = true; + // 如果是立即执行,则在wait毫秒内开始时执行 + typeof func === 'function' && func(); + timesr = setTimeout(() => { + throttleFlag = false; + }, wait); + } + } else { + if (!throttleFlag) { + throttleFlag = true + // 如果是非立即执行,则在wait毫秒内的结束处执行 + timesr = setTimeout(() => { + throttleFlag = false + typeof func === 'function' && func(); + }, wait); + } + + } +}; + + + +/**等同:queryDom */ +export function quereyDom(t: ComponentInternalInstance, node: string): Promise { + + return new Promise((res, rej) => { + // #ifdef APP-NVUE + const dom: any = uni.requireNativePlugin('dom') + setTimeout(function () { + node = node.replace(/^[#\.]/g, '') + dom.getComponentRect(t.refs[node], function (el: any) { + res(el?.size); + }) + }, 60) + // #endif + // #ifndef APP-NVUE + const query = uni.createSelectorQuery().in(t); + query.select(node).boundingClientRect(el => { + res(el); + }).exec(); + // #endif + }) +} +/** + * 查询文档节点信息 + * @param t Vue上下文对象 + * @param node 提供带#的id比如:'#id',在nvue中应该是元素上写明ref='id' + * @returns vue页面返回查询的节点信息,nvue返回weex的节点信息。 + */ +export const queryDom = quereyDom + +/** + * 是否是手机号码 + * @param phone 号码 + * @returns Boolean + */ +export function isPhone(phone: string | number) { + let val = String(phone); + let reg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/ + return !!val.match(reg); +} + +/** + * 是否含有中文 + * @param s 字符串 + * @returns Boolean + */ +export function isChina(s: string) { + var patrn = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi; + return !!patrn.exec(s); +} + +/** + * 是否为空 + * @description 判断是否是null,对象是否为空,数组是否为空。是否为 undefaind,是否为 “”空字符串。 + * @param s 任意 + */ +export function isEmpty(s: any) { + if (typeof s === 'string') { + s = s.trim(); + } + if (s == "") return true + if (s == null) return true; + if (typeof s === 'undefined') return true; + if (Array.isArray(s)) { + if (s.length == 0) return true; + } + if (typeof s === 'object') { + if (Object.keys(s).length == 0) return true; + } + return false; +} +/** + * 是否邮箱 + * @param s 字符串 + * @returns Boolean + */ +export function isEmail(s: string) { + let reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; + return !!s.match(reg); +} +/** + * 是否身份证号 + * @param val 字符号或者数字 + * @returns Boolean + * @author https://cloud.tencent.com/developer/article/1114323 + */ +export function isIdCard(val: string | number) { + val = String(val) + var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; + var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; + var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]; + var code = val.substring(17); + if (p.test(val)) { + var sum: number = 0; + for (var i = 0; i < 17; i++) { + let id: number | string | any = val[i] + sum += id * factor[i]; + } + if (parity[sum % 11] == code.toUpperCase()) { + return true; + } + } + return false; +} +/** + * 是否车牌 + * @description 蓝牌5位,绿牌6位。 + * @param s 字符串 + * @returns Boolean + */ +export function isIdCar(s: string) { + let reg = /^[京|沪|津|渝|鲁|冀|晋|蒙|辽|吉|黑|苏|浙|皖|闽|赣|豫|湘|鄂|粤|桂|琼|川|贵|云|藏|陕|甘|青|宁|新|港|澳|台|新|使]{1}[A-Z]{1}[A-Z_0-9]{5,6}$/ + return !!s.match(reg); +} + +/** + * 纯数字密码验证 + * @param s 字符串或者数字 + * @param len 最小长度,默认6 + * @param maxLen 最大长度,默认20 + * @returns Boolean + */ +export function isPasswordOfNumber(s: number | string, len = 6, maxLen = 20) { + s = String(s); + let reg = new RegExp(`^[0-9]{${len},${maxLen}}$`) + return !!s.match(reg) +} + +/** + * 密码验证 + * @param s 字符串或者数字 + * @param len 最小长度,默认6 + * @param maxLen 最大长度,默认20 + * @param model 0数字和英文,1数字,英文必须包含,不允许有特殊字符,2数字和字母必须包含,可以有特殊字符。 + * @returns Boolean + */ +export function isPasswordOfOther(s : string | number, len = 6, maxLen = 20, model = 0) { + s = String(s); + //密码至少包含 数字和英文,长度6-20 + let reg = /(?![a−zA−Z]+)[0-9A-Za-z]{6,20}$/ + //密码包含 数字,英文,字符中的两种以上,长度6-20 + if (model === 1) { + reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,20}$/ + } + + //至少包含数字跟字母,可以有字符 + if (model === 2) { + reg = /(?=.*([a-zA-Z].*))(?=.*[0-9].*)[a-zA-Z0-9-*/+.~!@#$%^&*()]{6,20}$/ + } + + return !!s.match(reg) +} + +/** + * 是否是一个有效的日期 + * @param s 字符串,数字,日期对象 + * @returns Boolean + */ +export function isDate(s: string | number | Date) { + if (s == null || typeof s === 'undefined' || !s) return false; + if (typeof s === 'string') { + //兼容ios,mac + s = s.replace('-', '/'); + } + let d = new Date(s); + if (d.toString() == 'Invalid Date') return false; + return true; +} +/** + * 显示信息 + * @param word 标题 + * @param mask 不允许穿透 + * @param icon 图标 + */ +export function toast(word: string, mask: boolean = true, icon: any = 'none') { + // #ifndef MP-ALIPAY + uni.showToast({ + mask: mask, + title: word, + icon: icon + }) + // #endif + // #ifdef MP-ALIPAY + uni.showToast({ + title: word, + icon: icon + }) + // #endif +} +/** + * 获取屏幕窗口安全高度和宽度 + * 注意是针对种屏幕的统一计算,统一高度,不再让uni获取有效高度而烦恼。 + * 请一定要在onMounted或者onLoad中调用,否则不准确在h5端。 + * @return {height,width,top,isCustomHeader,statusBarHeight,sysinfo} + */ +export function getWindow(): { width: number, height: number, top: number, bottom: number, statusBarHeight: number, isCustomHeader: Boolean, sysinfo: UniApp.GetSystemInfoResult } { + // let getsysinfoSync = getCookie("tmui_sysinfo") + // if(getsysinfoSync){ + // return getsysinfoSync + // } + const sysinfo = uni.getSystemInfoSync(); + let top = 0; + let height = sysinfo.windowHeight; + let nowPage = getCurrentPages().pop() + let isCustomHeader = false; + let pages = uni.$tm?.pages ?? [] + let bottom = sysinfo.safeAreaInsets?.bottom ?? 0; + if (uni.$tm?.globalNavStyle == 'custom') { + isCustomHeader = true; + } else { + for (let i = 0; i < uni.$tm.pages.length; i++) { + if (nowPage?.route == uni.$tm.pages[i].path && uni.$tm.pages[i].custom == 'custom') { + isCustomHeader = true; + break; + } + } + } + + // #ifdef H5 + // 兼容说明:h5端第一次获取的高度和第二次获取的高度是有差异 的。 + if (isCustomHeader) { + height = sysinfo.windowHeight + sysinfo.windowTop + + } else { + top = 44 + if (sysinfo.windowTop > 0) { + height = sysinfo.windowHeight; + } else { + height = sysinfo.windowHeight + sysinfo.windowTop + } + } + + // #endif + + let results = { bottom: bottom, height: height, width: sysinfo.windowWidth, top: top, isCustomHeader: isCustomHeader, statusBarHeight: sysinfo.statusBarHeight || 0, sysinfo: sysinfo }; + + return results; +} +type openUrlType = "navigate" | "redirect" | "reLaunch" | "switchTab" | "navigateBack" +/** + * + * @param url string 打开的页面路径 + * @param type openUrlType "navigate"|"redirect"|"reLaunch"|"switchTab"|"navigateBack" + */ +export function routerTo(url: string, type: openUrlType = 'navigate') { + type openUrlTypeFun = "navigateTo" | "redirectTo" | "reLaunch" | "switchTab" | "navigateBack" + let funType = { + navigate: "navigateTo", + redirect: "redirectTo", + switchTab: "switchTab", + reLaunch: "reLaunch", + navigateBack: "navigateBack", + } + let fun = funType[type]; + if (fun == 'navigateBack') { + uni.navigateBack({ + fail(error) { + console.error(error) + } + }) + } else if (fun == 'reLaunch') { + uni.reLaunch({ + url: url, + fail(error) { + console.error(error) + } + }) + } else if (fun == 'switchTab') { + uni.switchTab({ + url: url, + fail(error) { + console.error(error) + } + }) + } else if (fun == 'redirectTo') { + uni.redirectTo({ + url: url, + fail(error) { + console.error(error) + } + }) + } else if (fun == 'navigateTo') { + uni.navigateTo({ + url: url, + fail(error) { + console.error(error) + } + }) + } + +} + +/** + * 将rpx转换为px + * @param v 待转换的数字 + * @param screenWidth 屏幕的宽度,如果不提供默认自动获取 + * @return number + */ +export function torpx(v: number, screenWidth: number = 0) { + if (typeof screenWidth === 'undefined' || !screenWidth) { + screenWidth = uni.getSystemInfoSync().screenWidth; + } + let pixelRatio = 750 / screenWidth; + return Math.ceil(v * pixelRatio) +} +/** + * 将rpx转换为px + * @param v 待转换的数字 + * @return number + */ +export function topx(v: number) { + return Math.ceil(uni.upx2px(Number(v))) +} +var lastTime = 0; +/** + * 在下一次前执行回调函数 + * @param callback 回调函数 + * @returns 一个id值,取消时cancelAnimationFrame(id)来取消 + */ +export function requestAnimationFrame(callback: Function): number { + const currentTime = new Date().getTime(); + const timeToCall = Math.max(0, 16 - (currentTime - lastTime)); + const id = setTimeout(() => { + callback(currentTime + timeToCall); + }, timeToCall); + lastTime = currentTime + timeToCall; + return id; +} +/** + * 取消回调执行 + * @param id requestAnimationFrame产生的id + */ +export function cancelAnimationFrame(id: number): void { + clearTimeout(id) +} +/** + * 给定一个值,来填充边距所需要的数组值 + * @param val any + * @returns [左,上,右,下] + */ +export function valToMarginAr(val:any):number[]{ + + let ar:number[] = []; + if(typeof val==='string'&&val){ + ar = [Number(val)] + }else if(typeof val=== 'number'&&isNaN(Number(val))){ + ar = [val] + }else if(typeof val ==='undefined'||typeof val === null || val==="" || val === undefined){ + val = [0] + }else if(Array.isArray(val)){ + ar = val.map(el=>Number(el)) + }; + + if(ar.length==1){ + ar = new Array(4).fill(ar[0]) + }else if(ar.length==2){ + ar = [...ar,...ar] + + }else if(ar.length==3){ + ar = [...ar,0] + } + + return ar; +} +/** + * 给定一个值,来填充边距所需要的数组值 + * @param val any + * @returns [左,上,右,下] + */ +export function valToRoundStrClass(val:number|number[]){ + let dstr = "" + if(typeof val == 'number') return 'round-'+val + if (val.length == 1) return 'round-'+val + if (val.length == 2) return `round-tl-${val[0]} round-tr-${val[1]}` + if (val.length == 3) return `round-tl-${val[0]} round-tr-${val[1]} round-br-${val[2]} ` + if (val.length == 4) return `round-tl-${val[0]} round-tr-${val[1]} round-br-${val[2]} round-bl-${val[3]}` + + return dstr + +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/bridge/bridge-weex.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/bridge/bridge-weex.js new file mode 100644 index 0000000..27086ec --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/bridge/bridge-weex.js @@ -0,0 +1,241 @@ +const isWeex = typeof WXEnvironment !== 'undefined'; +const isWeexIOS = isWeex && /ios/i.test(WXEnvironment.platform); +const isWeexAndroid = isWeex && !isWeexIOS; + +import GLmethod from '../context-webgl/GLmethod'; + +const GCanvasModule = + (typeof weex !== 'undefined' && weex.requireModule) ? (weex.requireModule('gcanvas')) : + (typeof __weex_require__ !== 'undefined') ? (__weex_require__('@weex-module/gcanvas')) : {}; + +let isDebugging = false; + +let isComboDisabled = false; + +const logCommand = (function () { + const methodQuery = []; + Object.keys(GLmethod).forEach(key => { + methodQuery[GLmethod[key]] = key; + }) + const queryMethod = (id) => { + return methodQuery[parseInt(id)] || 'NotFoundMethod'; + } + const logCommand = (id, cmds) => { + const mId = cmds.split(',')[0]; + const mName = queryMethod(mId); + console.log(`=== callNative - componentId:${id}; method: ${mName}; cmds: ${cmds}`); + } + return logCommand; +})(); + +function joinArray(arr, sep) { + let res = ''; + for (let i = 0; i < arr.length; i++) { + if (i !== 0) { + res += sep; + } + res += arr[i]; + } + return res; +} + +const commandsCache = {} + +const GBridge = { + + callEnable: (ref, configArray) => { + + commandsCache[ref] = []; + + return GCanvasModule.enable({ + componentId: ref, + config: configArray + }); + }, + + callEnableDebug: () => { + isDebugging = true; + }, + + callEnableDisableCombo: () => { + isComboDisabled = true; + }, + + callSetContextType: function (componentId, context_type) { + GCanvasModule.setContextType(context_type, componentId); + }, + + callReset: function(id){ + GCanvasModule.resetComponent && canvasModule.resetComponent(componentId); + }, + + render: isWeexIOS ? function (componentId) { + return GCanvasModule.extendCallNative({ + contextId: componentId, + type: 0x60000001 + }); + } : function (componentId) { + return callGCanvasLinkNative(componentId, 0x60000001, 'render'); + }, + + render2d: isWeexIOS ? function (componentId, commands, callback) { + + if (isDebugging) { + console.log('>>> >>> render2d ==='); + console.log('>>> commands: ' + commands); + } + + GCanvasModule.render([commands, callback?true:false], componentId, callback); + + } : function (componentId, commands,callback) { + + if (isDebugging) { + console.log('>>> >>> render2d ==='); + console.log('>>> commands: ' + commands); + } + + callGCanvasLinkNative(componentId, 0x20000001, commands); + if(callback){ + callback(); + } + }, + + callExtendCallNative: isWeexIOS ? function (componentId, cmdArgs) { + + throw 'should not be here anymore ' + cmdArgs; + + } : function (componentId, cmdArgs) { + + throw 'should not be here anymore ' + cmdArgs; + + }, + + + flushNative: isWeexIOS ? function (componentId) { + + const cmdArgs = joinArray(commandsCache[componentId], ';'); + commandsCache[componentId] = []; + + if (isDebugging) { + console.log('>>> >>> flush native ==='); + console.log('>>> commands: ' + cmdArgs); + } + + const result = GCanvasModule.extendCallNative({ + "contextId": componentId, + "type": 0x60000000, + "args": cmdArgs + }); + + const res = result && result.result; + + if (isDebugging) { + console.log('>>> result: ' + res); + } + + return res; + + } : function (componentId) { + + const cmdArgs = joinArray(commandsCache[componentId], ';'); + commandsCache[componentId] = []; + + if (isDebugging) { + console.log('>>> >>> flush native ==='); + console.log('>>> commands: ' + cmdArgs); + } + + const result = callGCanvasLinkNative(componentId, 0x60000000, cmdArgs); + + if (isDebugging) { + console.log('>>> result: ' + result); + } + + return result; + }, + + callNative: function (componentId, cmdArgs, cache) { + + if (isDebugging) { + logCommand(componentId, cmdArgs); + } + + commandsCache[componentId].push(cmdArgs); + + if (!cache || isComboDisabled) { + return GBridge.flushNative(componentId); + } else { + return undefined; + } + }, + + texImage2D(componentId, ...args) { + if (isWeexIOS) { + if (args.length === 6) { + const [target, level, internalformat, format, type, image] = args; + GBridge.callNative( + componentId, + GLmethod.texImage2D + ',' + 6 + ',' + target + ',' + level + ',' + internalformat + ',' + format + ',' + type + ',' + image.src + ) + } else if (args.length === 9) { + const [target, level, internalformat, width, height, border, format, type, image] = args; + GBridge.callNative( + componentId, + GLmethod.texImage2D + ',' + 9 + ',' + target + ',' + level + ',' + internalformat + ',' + width + ',' + height + ',' + border + ',' + + + format + ',' + type + ',' + (image ? image.src : 0) + ) + } + } else if (isWeexAndroid) { + if (args.length === 6) { + const [target, level, internalformat, format, type, image] = args; + GCanvasModule.texImage2D(componentId, target, level, internalformat, format, type, image.src); + } else if (args.length === 9) { + const [target, level, internalformat, width, height, border, format, type, image] = args; + GCanvasModule.texImage2D(componentId, target, level, internalformat, width, height, border, format, type, (image ? image.src : 0)); + } + } + }, + + texSubImage2D(componentId, target, level, xoffset, yoffset, format, type, image) { + if (isWeexIOS) { + if (arguments.length === 8) { + GBridge.callNative( + componentId, + GLmethod.texSubImage2D + ',' + 6 + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset, + ',' + format + ',' + type + ',' + image.src + ) + } + } else if (isWeexAndroid) { + GCanvasModule.texSubImage2D(componentId, target, level, xoffset, yoffset, format, type, image.src); + } + }, + + bindImageTexture(componentId, src, imageId) { + GCanvasModule.bindImageTexture([src, imageId], componentId); + }, + + perloadImage([url, id], callback) { + GCanvasModule.preLoadImage([url, id], function (image) { + image.url = url; + image.id = id; + callback(image); + }); + }, + + measureText(text, fontStyle, componentId) { + return GCanvasModule.measureText([text, fontStyle], componentId); + }, + + getImageData (componentId, x, y, w, h, callback) { + GCanvasModule.getImageData([x, y,w,h],componentId,callback); + }, + + putImageData (componentId, data, x, y, w, h, callback) { + GCanvasModule.putImageData([x, y,w,h,data],componentId,callback); + }, + + toTempFilePath(componentId, x, y, width, height, destWidth, destHeight, fileType, quality, callback){ + GCanvasModule.toTempFilePath([x, y, width,height, destWidth, destHeight, fileType, quality], componentId, callback); + } +} + +export default GBridge; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStyleLinearGradient.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStyleLinearGradient.js new file mode 100644 index 0000000..3e7f03a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStyleLinearGradient.js @@ -0,0 +1,18 @@ +class FillStyleLinearGradient { + + constructor(x0, y0, x1, y1) { + this._start_pos = { _x: x0, _y: y0 }; + this._end_pos = { _x: x1, _y: y1 }; + this._stop_count = 0; + this._stops = [0, 0, 0, 0, 0]; + } + + addColorStop = function (pos, color) { + if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) { + this._stops[this._stop_count] = { _pos: pos, _color: color }; + this._stop_count++; + } + } +} + +export default FillStyleLinearGradient; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStylePattern.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStylePattern.js new file mode 100644 index 0000000..6e4f646 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStylePattern.js @@ -0,0 +1,8 @@ +class FillStylePattern { + constructor(img, pattern) { + this._style = pattern; + this._img = img; + } +} + +export default FillStylePattern; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStyleRadialGradient.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStyleRadialGradient.js new file mode 100644 index 0000000..7790596 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/FillStyleRadialGradient.js @@ -0,0 +1,17 @@ +class FillStyleRadialGradient { + constructor(x0, y0, r0, x1, y1, r1) { + this._start_pos = { _x: x0, _y: y0, _r: r0 }; + this._end_pos = { _x: x1, _y: y1, _r: r1 }; + this._stop_count = 0; + this._stops = [0, 0, 0, 0, 0]; + } + + addColorStop(pos, color) { + if (this._stop_count < 5 && 0.0 <= pos && pos <= 1.0) { + this._stops[this._stop_count] = { _pos: pos, _color: color }; + this._stop_count++; + } + } +} + +export default FillStyleRadialGradient; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/RenderingContext.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/RenderingContext.js new file mode 100644 index 0000000..56b1c31 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-2d/RenderingContext.js @@ -0,0 +1,669 @@ +import FillStylePattern from './FillStylePattern'; +import FillStyleLinearGradient from './FillStyleLinearGradient'; +import FillStyleRadialGradient from './FillStyleRadialGradient'; +import GImage from '../env/image.js'; +import { + ArrayBufferToBase64, + Base64ToUint8ClampedArray +} from '../env/tool.js'; + +export default class CanvasRenderingContext2D { + + _drawCommands = ''; + + _globalAlpha = 1.0; + + _fillStyle = 'rgb(0,0,0)'; + _strokeStyle = 'rgb(0,0,0)'; + + _lineWidth = 1; + _lineCap = 'butt'; + _lineJoin = 'miter'; + + _miterLimit = 10; + + _globalCompositeOperation = 'source-over'; + + _textAlign = 'start'; + _textBaseline = 'alphabetic'; + + _font = '10px sans-serif'; + + _savedGlobalAlpha = []; + + timer = null; + componentId = null; + + _notCommitDrawImageCache = []; + _needRedrawImageCache = []; + _redrawCommands = ''; + _autoSaveContext = true; + // _imageMap = new GHashMap(); + // _textureMap = new GHashMap(); + + constructor() { + this.className = 'CanvasRenderingContext2D'; + //this.save() + } + + setFillStyle(value) { + this.fillStyle = value; + } + + set fillStyle(value) { + this._fillStyle = value; + + if (typeof(value) == 'string') { + this._drawCommands = this._drawCommands.concat("F" + value + ";"); + } else if (value instanceof FillStylePattern) { + const image = value._img; + if (!image.complete) { + image.onload = () => { + var index = this._needRedrawImageCache.indexOf(image); + if (index > -1) { + this._needRedrawImageCache.splice(index, 1); + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._redrawflush(true); + } + } + this._notCommitDrawImageCache.push(image); + } else { + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + } + + //CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._drawCommands = this._drawCommands.concat("G" + image._id + "," + value._style + ";"); + } else if (value instanceof FillStyleLinearGradient) { + var command = "D" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y.toFixed(2) + "," + + value._stop_count; + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } else if (value instanceof FillStyleRadialGradient) { + var command = "H" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + value._start_pos._r + .toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y.toFixed(2) + "," + value._end_pos._r.toFixed(2) + "," + + value._stop_count; + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } + } + + get fillStyle() { + return this._fillStyle; + } + + get globalAlpha() { + return this._globalAlpha; + } + + setGlobalAlpha(value) { + this.globalAlpha = value; + } + + set globalAlpha(value) { + this._globalAlpha = value; + this._drawCommands = this._drawCommands.concat("a" + value.toFixed(2) + ";"); + } + + + get strokeStyle() { + return this._strokeStyle; + } + + setStrokeStyle(value) { + this.strokeStyle = value; + } + + set strokeStyle(value) { + + this._strokeStyle = value; + + if (typeof(value) == 'string') { + this._drawCommands = this._drawCommands.concat("S" + value + ";"); + } else if (value instanceof FillStylePattern) { + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._drawCommands = this._drawCommands.concat("G" + image._id + "," + value._style + ";"); + } else if (value instanceof FillStyleLinearGradient) { + var command = "D" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y.toFixed(2) + "," + + value._stop_count; + + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } else if (value instanceof FillStyleRadialGradient) { + var command = "H" + value._start_pos._x.toFixed(2) + "," + value._start_pos._y.toFixed(2) + "," + value._start_pos._r + .toFixed(2) + "," + + value._end_pos._x.toFixed(2) + "," + value._end_pos._y + ",".toFixed(2) + value._end_pos._r.toFixed(2) + "," + + value._stop_count; + + for (var i = 0; i < value._stop_count; ++i) { + command += ("," + value._stops[i]._pos + "," + value._stops[i]._color); + } + this._drawCommands = this._drawCommands.concat(command + ";"); + } + } + + get lineWidth() { + return this._lineWidth; + } + + setLineWidth(value) { + this.lineWidth = value; + } + + set lineWidth(value) { + this._lineWidth = value; + this._drawCommands = this._drawCommands.concat("W" + value + ";"); + } + + get lineCap() { + return this._lineCap; + } + + setLineCap(value) { + this.lineCap = value; + } + + set lineCap(value) { + this._lineCap = value; + this._drawCommands = this._drawCommands.concat("C" + value + ";"); + } + + get lineJoin() { + return this._lineJoin; + } + + setLineJoin(value) { + this.lineJoin = value + } + + set lineJoin(value) { + this._lineJoin = value; + this._drawCommands = this._drawCommands.concat("J" + value + ";"); + } + + get miterLimit() { + return this._miterLimit; + } + + setMiterLimit(value) { + this.miterLimit = value + } + + set miterLimit(value) { + this._miterLimit = value; + this._drawCommands = this._drawCommands.concat("M" + value + ";"); + } + + get globalCompositeOperation() { + return this._globalCompositeOperation; + } + + set globalCompositeOperation(value) { + + this._globalCompositeOperation = value; + let mode = 0; + switch (value) { + case "source-over": + mode = 0; + break; + case "source-atop": + mode = 5; + break; + case "source-in": + mode = 0; + break; + case "source-out": + mode = 2; + break; + case "destination-over": + mode = 4; + break; + case "destination-atop": + mode = 4; + break; + case "destination-in": + mode = 4; + break; + case "destination-out": + mode = 3; + break; + case "lighter": + mode = 1; + break; + case "copy": + mode = 2; + break; + case "xor": + mode = 6; + break; + default: + mode = 0; + } + + this._drawCommands = this._drawCommands.concat("B" + mode + ";"); + } + + get textAlign() { + return this._textAlign; + } + + setTextAlign(value) { + this.textAlign = value + } + + set textAlign(value) { + + this._textAlign = value; + let Align = 0; + switch (value) { + case "start": + Align = 0; + break; + case "end": + Align = 1; + break; + case "left": + Align = 2; + break; + case "center": + Align = 3; + break; + case "right": + Align = 4; + break; + default: + Align = 0; + } + + this._drawCommands = this._drawCommands.concat("A" + Align + ";"); + } + + get textBaseline() { + return this._textBaseline; + } + + setTextBaseline(value) { + this.textBaseline = value + } + + set textBaseline(value) { + this._textBaseline = value; + let baseline = 0; + switch (value) { + case "alphabetic": + baseline = 0; + break; + case "middle": + baseline = 1; + break; + case "top": + baseline = 2; + break; + case "hanging": + baseline = 3; + break; + case "bottom": + baseline = 4; + break; + case "ideographic": + baseline = 5; + break; + default: + baseline = 0; + break; + } + + this._drawCommands = this._drawCommands.concat("E" + baseline + ";"); + } + + get font() { + return this._font; + } + + setFontSize(size) { + var str = this._font; + var strs = str.trim().split(/\s+/); + for (var i = 0; i < strs.length; i++) { + var values = ["normal", "italic", "oblique", "normal", "small-caps", "normal", "bold", + "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", + "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", + "semi-expanded", "expanded", "extra-expanded", "ultra-expanded" + ]; + + if (-1 == values.indexOf(strs[i].trim())) { + if (typeof size === 'string') { + strs[i] = size; + } else if (typeof size === 'number') { + strs[i] = String(size) + 'px'; + } + break; + } + } + this.font = strs.join(" "); + } + + set font(value) { + this._font = value; + this._drawCommands = this._drawCommands.concat("j" + value + ";"); + } + + setTransform(a, b, c, d, tx, ty) { + this._drawCommands = this._drawCommands.concat("t" + + (a === 1 ? "1" : a.toFixed(2)) + "," + + (b === 0 ? "0" : b.toFixed(2)) + "," + + (c === 0 ? "0" : c.toFixed(2)) + "," + + (d === 1 ? "1" : d.toFixed(2)) + "," + tx.toFixed(2) + "," + ty.toFixed(2) + ";"); + } + + transform(a, b, c, d, tx, ty) { + this._drawCommands = this._drawCommands.concat("f" + + (a === 1 ? "1" : a.toFixed(2)) + "," + + (b === 0 ? "0" : b.toFixed(2)) + "," + + (c === 0 ? "0" : c.toFixed(2)) + "," + + (d === 1 ? "1" : d.toFixed(2)) + "," + tx + "," + ty + ";"); + } + + resetTransform() { + this._drawCommands = this._drawCommands.concat("m;"); + } + + scale(a, d) { + this._drawCommands = this._drawCommands.concat("k" + a.toFixed(2) + "," + + d.toFixed(2) + ";"); + } + + rotate(angle) { + this._drawCommands = this._drawCommands + .concat("r" + angle.toFixed(6) + ";"); + } + + translate(tx, ty) { + this._drawCommands = this._drawCommands.concat("l" + tx.toFixed(2) + "," + ty.toFixed(2) + ";"); + } + + save() { + this._savedGlobalAlpha.push(this._globalAlpha); + this._drawCommands = this._drawCommands.concat("v;"); + } + + restore() { + this._drawCommands = this._drawCommands.concat("e;"); + this._globalAlpha = this._savedGlobalAlpha.pop(); + } + + createPattern(img, pattern) { + if (typeof img === 'string') { + var imgObj = new GImage(); + imgObj.src = img; + img = imgObj; + } + return new FillStylePattern(img, pattern); + } + + createLinearGradient(x0, y0, x1, y1) { + return new FillStyleLinearGradient(x0, y0, x1, y1); + } + + createRadialGradient = function(x0, y0, r0, x1, y1, r1) { + return new FillStyleRadialGradient(x0, y0, r0, x1, y1, r1); + }; + + createCircularGradient = function(x0, y0, r0) { + return new FillStyleRadialGradient(x0, y0, 0, x0, y0, r0); + }; + + strokeRect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("s" + x + "," + y + "," + w + "," + h + ";"); + } + + + clearRect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("c" + x + "," + y + "," + w + + "," + h + ";"); + } + + clip() { + this._drawCommands = this._drawCommands.concat("p;"); + } + + resetClip() { + this._drawCommands = this._drawCommands.concat("q;"); + } + + closePath() { + this._drawCommands = this._drawCommands.concat("o;"); + } + + moveTo(x, y) { + this._drawCommands = this._drawCommands.concat("g" + x.toFixed(2) + "," + y.toFixed(2) + ";"); + } + + lineTo(x, y) { + this._drawCommands = this._drawCommands.concat("i" + x.toFixed(2) + "," + y.toFixed(2) + ";"); + } + + quadraticCurveTo = function(cpx, cpy, x, y) { + this._drawCommands = this._drawCommands.concat("u" + cpx + "," + cpy + "," + x + "," + y + ";"); + } + + bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y, ) { + this._drawCommands = this._drawCommands.concat( + "z" + cp1x.toFixed(2) + "," + cp1y.toFixed(2) + "," + cp2x.toFixed(2) + "," + cp2y.toFixed(2) + "," + + x.toFixed(2) + "," + y.toFixed(2) + ";"); + } + + arcTo(x1, y1, x2, y2, radius) { + this._drawCommands = this._drawCommands.concat("h" + x1 + "," + y1 + "," + x2 + "," + y2 + "," + radius + ";"); + } + + beginPath() { + this._drawCommands = this._drawCommands.concat("b;"); + } + + + fillRect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("n" + x + "," + y + "," + w + + "," + h + ";"); + } + + rect(x, y, w, h) { + this._drawCommands = this._drawCommands.concat("w" + x + "," + y + "," + w + "," + h + ";"); + } + + fill() { + this._drawCommands = this._drawCommands.concat("L;"); + } + + stroke(path) { + this._drawCommands = this._drawCommands.concat("x;"); + } + + arc(x, y, radius, startAngle, endAngle, anticlockwise) { + + let ianticlockwise = 0; + if (anticlockwise) { + ianticlockwise = 1; + } + + this._drawCommands = this._drawCommands.concat( + "y" + x.toFixed(2) + "," + y.toFixed(2) + "," + + radius.toFixed(2) + "," + startAngle + "," + endAngle + "," + ianticlockwise + + ";" + ); + } + + fillText(text, x, y) { + let tmptext = text.replace(/!/g, "!!"); + tmptext = tmptext.replace(/,/g, "!,"); + tmptext = tmptext.replace(/;/g, "!;"); + this._drawCommands = this._drawCommands.concat("T" + tmptext + "," + x + "," + y + ",0.0;"); + } + + strokeText = function(text, x, y) { + let tmptext = text.replace(/!/g, "!!"); + tmptext = tmptext.replace(/,/g, "!,"); + tmptext = tmptext.replace(/;/g, "!;"); + this._drawCommands = this._drawCommands.concat("U" + tmptext + "," + x + "," + y + ",0.0;"); + } + + measureText(text) { + return CanvasRenderingContext2D.GBridge.measureText(text, this.font, this.componentId); + } + + isPointInPath = function(x, y) { + throw new Error('GCanvas not supported yet'); + } + + drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) { + if (typeof image === 'string') { + var imgObj = new GImage(); + imgObj.src = image; + image = imgObj; + } + console.log(imgObj) + if (image instanceof GImage) { + if (!image.complete) { + imgObj.onload = () => { + + var index = this._needRedrawImageCache.indexOf(image); + if (index > -1) { + this._needRedrawImageCache.splice(index, 1); + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + this._redrawflush(true); + } + } + this._notCommitDrawImageCache.push(image); + } else { + + CanvasRenderingContext2D.GBridge.bindImageTexture(this.componentId, image.src, image._id); + } + var srcArgs = [image, sx, sy, sw, sh, dx, dy, dw, dh]; + var args = []; + for (var arg in srcArgs) { + if (typeof(srcArgs[arg]) != 'undefined') { + args.push(srcArgs[arg]); + } + } + this.__drawImage.apply(this, args); + //this.__drawImage(image,sx, sy, sw, sh, dx, dy, dw, dh); + } + } + + __drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) { + const numArgs = arguments.length; + + function drawImageCommands() { + + if (numArgs === 3) { + const x = parseFloat(sx) || 0.0; + const y = parseFloat(sy) || 0.0; + + return ("d" + image._id + ",0,0," + + image.width + "," + image.height + "," + + x + "," + y + "," + image.width + "," + image.height + ";"); + } else if (numArgs === 5) { + const x = parseFloat(sx) || 0.0; + const y = parseFloat(sy) || 0.0; + const width = parseInt(sw) || image.width; + const height = parseInt(sh) || image.height; + + return ("d" + image._id + ",0,0," + + image.width + "," + image.height + "," + + x + "," + y + "," + width + "," + height + ";"); + } else if (numArgs === 9) { + sx = parseFloat(sx) || 0.0; + sy = parseFloat(sy) || 0.0; + sw = parseInt(sw) || image.width; + sh = parseInt(sh) || image.height; + dx = parseFloat(dx) || 0.0; + dy = parseFloat(dy) || 0.0; + dw = parseInt(dw) || image.width; + dh = parseInt(dh) || image.height; + + return ("d" + image._id + "," + + sx + "," + sy + "," + sw + "," + sh + "," + + dx + "," + dy + "," + dw + "," + dh + ";"); + } + } + this._drawCommands += drawImageCommands(); + } + + _flush(reserve, callback) { + const commands = this._drawCommands; + this._drawCommands = ''; + CanvasRenderingContext2D.GBridge.render2d(this.componentId, commands, callback); + this._needRender = false; + } + + _redrawflush(reserve, callback) { + const commands = this._redrawCommands; + CanvasRenderingContext2D.GBridge.render2d(this.componentId, commands, callback); + if (this._needRedrawImageCache.length == 0) { + this._redrawCommands = ''; + } + } + + draw(reserve, callback) { + if (!reserve) { + this._globalAlpha = this._savedGlobalAlpha.pop(); + this._savedGlobalAlpha.push(this._globalAlpha); + this._redrawCommands = this._drawCommands; + this._needRedrawImageCache = this._notCommitDrawImageCache; + if (this._autoSaveContext) { + this._drawCommands = ("v;" + this._drawCommands); + this._autoSaveContext = false; + } else { + this._drawCommands = ("e;X;v;" + this._drawCommands); + } + } else { + this._needRedrawImageCache = this._needRedrawImageCache.concat(this._notCommitDrawImageCache); + this._redrawCommands += this._drawCommands; + if (this._autoSaveContext) { + this._drawCommands = ("v;" + this._drawCommands); + this._autoSaveContext = false; + } + } + this._notCommitDrawImageCache = []; + if (this._flush) { + this._flush(reserve, callback); + } + } + + getImageData(x, y, w, h, callback) { + CanvasRenderingContext2D.GBridge.getImageData(this.componentId, x, y, w, h, function(res) { + res.data = Base64ToUint8ClampedArray(res.data); + if (typeof(callback) == 'function') { + callback(res); + } + }); + } + + putImageData(data, x, y, w, h, callback) { + if (data instanceof Uint8ClampedArray) { + data = ArrayBufferToBase64(data); + CanvasRenderingContext2D.GBridge.putImageData(this.componentId, data, x, y, w, h, function(res) { + if (typeof(callback) == 'function') { + callback(res); + } + }); + } + } + + toTempFilePath(x, y, width, height, destWidth, destHeight, fileType, quality, callback) { + CanvasRenderingContext2D.GBridge.toTempFilePath(this.componentId, x, y, width, height, destWidth, destHeight, + fileType, quality, + function(res) { + if (typeof(callback) == 'function') { + callback(res); + } + }); + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/ActiveInfo.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/ActiveInfo.js new file mode 100644 index 0000000..b495129 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/ActiveInfo.js @@ -0,0 +1,11 @@ +export default class WebGLActiveInfo { + className = 'WebGLActiveInfo'; + + constructor({ + type, name, size + }) { + this.type = type; + this.name = name; + this.size = size; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Buffer.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Buffer.js new file mode 100644 index 0000000..4800f67 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Buffer.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLBuffer'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLBuffer { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Framebuffer.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Framebuffer.js new file mode 100644 index 0000000..28b46d3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Framebuffer.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLFrameBuffer'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLFramebuffer { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLenum.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLenum.js new file mode 100644 index 0000000..ac5544d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLenum.js @@ -0,0 +1,298 @@ +export default { + "DEPTH_BUFFER_BIT": 256, + "STENCIL_BUFFER_BIT": 1024, + "COLOR_BUFFER_BIT": 16384, + "POINTS": 0, + "LINES": 1, + "LINE_LOOP": 2, + "LINE_STRIP": 3, + "TRIANGLES": 4, + "TRIANGLE_STRIP": 5, + "TRIANGLE_FAN": 6, + "ZERO": 0, + "ONE": 1, + "SRC_COLOR": 768, + "ONE_MINUS_SRC_COLOR": 769, + "SRC_ALPHA": 770, + "ONE_MINUS_SRC_ALPHA": 771, + "DST_ALPHA": 772, + "ONE_MINUS_DST_ALPHA": 773, + "DST_COLOR": 774, + "ONE_MINUS_DST_COLOR": 775, + "SRC_ALPHA_SATURATE": 776, + "FUNC_ADD": 32774, + "BLEND_EQUATION": 32777, + "BLEND_EQUATION_RGB": 32777, + "BLEND_EQUATION_ALPHA": 34877, + "FUNC_SUBTRACT": 32778, + "FUNC_REVERSE_SUBTRACT": 32779, + "BLEND_DST_RGB": 32968, + "BLEND_SRC_RGB": 32969, + "BLEND_DST_ALPHA": 32970, + "BLEND_SRC_ALPHA": 32971, + "CONSTANT_COLOR": 32769, + "ONE_MINUS_CONSTANT_COLOR": 32770, + "CONSTANT_ALPHA": 32771, + "ONE_MINUS_CONSTANT_ALPHA": 32772, + "BLEND_COLOR": 32773, + "ARRAY_BUFFER": 34962, + "ELEMENT_ARRAY_BUFFER": 34963, + "ARRAY_BUFFER_BINDING": 34964, + "ELEMENT_ARRAY_BUFFER_BINDING": 34965, + "STREAM_DRAW": 35040, + "STATIC_DRAW": 35044, + "DYNAMIC_DRAW": 35048, + "BUFFER_SIZE": 34660, + "BUFFER_USAGE": 34661, + "CURRENT_VERTEX_ATTRIB": 34342, + "FRONT": 1028, + "BACK": 1029, + "FRONT_AND_BACK": 1032, + "TEXTURE_2D": 3553, + "CULL_FACE": 2884, + "BLEND": 3042, + "DITHER": 3024, + "STENCIL_TEST": 2960, + "DEPTH_TEST": 2929, + "SCISSOR_TEST": 3089, + "POLYGON_OFFSET_FILL": 32823, + "SAMPLE_ALPHA_TO_COVERAGE": 32926, + "SAMPLE_COVERAGE": 32928, + "NO_ERROR": 0, + "INVALID_ENUM": 1280, + "INVALID_VALUE": 1281, + "INVALID_OPERATION": 1282, + "OUT_OF_MEMORY": 1285, + "CW": 2304, + "CCW": 2305, + "LINE_WIDTH": 2849, + "ALIASED_POINT_SIZE_RANGE": 33901, + "ALIASED_LINE_WIDTH_RANGE": 33902, + "CULL_FACE_MODE": 2885, + "FRONT_FACE": 2886, + "DEPTH_RANGE": 2928, + "DEPTH_WRITEMASK": 2930, + "DEPTH_CLEAR_VALUE": 2931, + "DEPTH_FUNC": 2932, + "STENCIL_CLEAR_VALUE": 2961, + "STENCIL_FUNC": 2962, + "STENCIL_FAIL": 2964, + "STENCIL_PASS_DEPTH_FAIL": 2965, + "STENCIL_PASS_DEPTH_PASS": 2966, + "STENCIL_REF": 2967, + "STENCIL_VALUE_MASK": 2963, + "STENCIL_WRITEMASK": 2968, + "STENCIL_BACK_FUNC": 34816, + "STENCIL_BACK_FAIL": 34817, + "STENCIL_BACK_PASS_DEPTH_FAIL": 34818, + "STENCIL_BACK_PASS_DEPTH_PASS": 34819, + "STENCIL_BACK_REF": 36003, + "STENCIL_BACK_VALUE_MASK": 36004, + "STENCIL_BACK_WRITEMASK": 36005, + "VIEWPORT": 2978, + "SCISSOR_BOX": 3088, + "COLOR_CLEAR_VALUE": 3106, + "COLOR_WRITEMASK": 3107, + "UNPACK_ALIGNMENT": 3317, + "PACK_ALIGNMENT": 3333, + "MAX_TEXTURE_SIZE": 3379, + "MAX_VIEWPORT_DIMS": 3386, + "SUBPIXEL_BITS": 3408, + "RED_BITS": 3410, + "GREEN_BITS": 3411, + "BLUE_BITS": 3412, + "ALPHA_BITS": 3413, + "DEPTH_BITS": 3414, + "STENCIL_BITS": 3415, + "POLYGON_OFFSET_UNITS": 10752, + "POLYGON_OFFSET_FACTOR": 32824, + "TEXTURE_BINDING_2D": 32873, + "SAMPLE_BUFFERS": 32936, + "SAMPLES": 32937, + "SAMPLE_COVERAGE_VALUE": 32938, + "SAMPLE_COVERAGE_INVERT": 32939, + "COMPRESSED_TEXTURE_FORMATS": 34467, + "DONT_CARE": 4352, + "FASTEST": 4353, + "NICEST": 4354, + "GENERATE_MIPMAP_HINT": 33170, + "BYTE": 5120, + "UNSIGNED_BYTE": 5121, + "SHORT": 5122, + "UNSIGNED_SHORT": 5123, + "INT": 5124, + "UNSIGNED_INT": 5125, + "FLOAT": 5126, + "DEPTH_COMPONENT": 6402, + "ALPHA": 6406, + "RGB": 6407, + "RGBA": 6408, + "LUMINANCE": 6409, + "LUMINANCE_ALPHA": 6410, + "UNSIGNED_SHORT_4_4_4_4": 32819, + "UNSIGNED_SHORT_5_5_5_1": 32820, + "UNSIGNED_SHORT_5_6_5": 33635, + "FRAGMENT_SHADER": 35632, + "VERTEX_SHADER": 35633, + "MAX_VERTEX_ATTRIBS": 34921, + "MAX_VERTEX_UNIFORM_VECTORS": 36347, + "MAX_VARYING_VECTORS": 36348, + "MAX_COMBINED_TEXTURE_IMAGE_UNITS": 35661, + "MAX_VERTEX_TEXTURE_IMAGE_UNITS": 35660, + "MAX_TEXTURE_IMAGE_UNITS": 34930, + "MAX_FRAGMENT_UNIFORM_VECTORS": 36349, + "SHADER_TYPE": 35663, + "DELETE_STATUS": 35712, + "LINK_STATUS": 35714, + "VALIDATE_STATUS": 35715, + "ATTACHED_SHADERS": 35717, + "ACTIVE_UNIFORMS": 35718, + "ACTIVE_ATTRIBUTES": 35721, + "SHADING_LANGUAGE_VERSION": 35724, + "CURRENT_PROGRAM": 35725, + "NEVER": 512, + "LESS": 513, + "EQUAL": 514, + "LEQUAL": 515, + "GREATER": 516, + "NOTEQUAL": 517, + "GEQUAL": 518, + "ALWAYS": 519, + "KEEP": 7680, + "REPLACE": 7681, + "INCR": 7682, + "DECR": 7683, + "INVERT": 5386, + "INCR_WRAP": 34055, + "DECR_WRAP": 34056, + "VENDOR": 7936, + "RENDERER": 7937, + "VERSION": 7938, + "NEAREST": 9728, + "LINEAR": 9729, + "NEAREST_MIPMAP_NEAREST": 9984, + "LINEAR_MIPMAP_NEAREST": 9985, + "NEAREST_MIPMAP_LINEAR": 9986, + "LINEAR_MIPMAP_LINEAR": 9987, + "TEXTURE_MAG_FILTER": 10240, + "TEXTURE_MIN_FILTER": 10241, + "TEXTURE_WRAP_S": 10242, + "TEXTURE_WRAP_T": 10243, + "TEXTURE": 5890, + "TEXTURE_CUBE_MAP": 34067, + "TEXTURE_BINDING_CUBE_MAP": 34068, + "TEXTURE_CUBE_MAP_POSITIVE_X": 34069, + "TEXTURE_CUBE_MAP_NEGATIVE_X": 34070, + "TEXTURE_CUBE_MAP_POSITIVE_Y": 34071, + "TEXTURE_CUBE_MAP_NEGATIVE_Y": 34072, + "TEXTURE_CUBE_MAP_POSITIVE_Z": 34073, + "TEXTURE_CUBE_MAP_NEGATIVE_Z": 34074, + "MAX_CUBE_MAP_TEXTURE_SIZE": 34076, + "TEXTURE0": 33984, + "TEXTURE1": 33985, + "TEXTURE2": 33986, + "TEXTURE3": 33987, + "TEXTURE4": 33988, + "TEXTURE5": 33989, + "TEXTURE6": 33990, + "TEXTURE7": 33991, + "TEXTURE8": 33992, + "TEXTURE9": 33993, + "TEXTURE10": 33994, + "TEXTURE11": 33995, + "TEXTURE12": 33996, + "TEXTURE13": 33997, + "TEXTURE14": 33998, + "TEXTURE15": 33999, + "TEXTURE16": 34000, + "TEXTURE17": 34001, + "TEXTURE18": 34002, + "TEXTURE19": 34003, + "TEXTURE20": 34004, + "TEXTURE21": 34005, + "TEXTURE22": 34006, + "TEXTURE23": 34007, + "TEXTURE24": 34008, + "TEXTURE25": 34009, + "TEXTURE26": 34010, + "TEXTURE27": 34011, + "TEXTURE28": 34012, + "TEXTURE29": 34013, + "TEXTURE30": 34014, + "TEXTURE31": 34015, + "ACTIVE_TEXTURE": 34016, + "REPEAT": 10497, + "CLAMP_TO_EDGE": 33071, + "MIRRORED_REPEAT": 33648, + "FLOAT_VEC2": 35664, + "FLOAT_VEC3": 35665, + "FLOAT_VEC4": 35666, + "INT_VEC2": 35667, + "INT_VEC3": 35668, + "INT_VEC4": 35669, + "BOOL": 35670, + "BOOL_VEC2": 35671, + "BOOL_VEC3": 35672, + "BOOL_VEC4": 35673, + "FLOAT_MAT2": 35674, + "FLOAT_MAT3": 35675, + "FLOAT_MAT4": 35676, + "SAMPLER_2D": 35678, + "SAMPLER_CUBE": 35680, + "VERTEX_ATTRIB_ARRAY_ENABLED": 34338, + "VERTEX_ATTRIB_ARRAY_SIZE": 34339, + "VERTEX_ATTRIB_ARRAY_STRIDE": 34340, + "VERTEX_ATTRIB_ARRAY_TYPE": 34341, + "VERTEX_ATTRIB_ARRAY_NORMALIZED": 34922, + "VERTEX_ATTRIB_ARRAY_POINTER": 34373, + "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": 34975, + "IMPLEMENTATION_COLOR_READ_TYPE": 35738, + "IMPLEMENTATION_COLOR_READ_FORMAT": 35739, + "COMPILE_STATUS": 35713, + "LOW_FLOAT": 36336, + "MEDIUM_FLOAT": 36337, + "HIGH_FLOAT": 36338, + "LOW_INT": 36339, + "MEDIUM_INT": 36340, + "HIGH_INT": 36341, + "FRAMEBUFFER": 36160, + "RENDERBUFFER": 36161, + "RGBA4": 32854, + "RGB5_A1": 32855, + "RGB565": 36194, + "DEPTH_COMPONENT16": 33189, + "STENCIL_INDEX8": 36168, + "DEPTH_STENCIL": 34041, + "RENDERBUFFER_WIDTH": 36162, + "RENDERBUFFER_HEIGHT": 36163, + "RENDERBUFFER_INTERNAL_FORMAT": 36164, + "RENDERBUFFER_RED_SIZE": 36176, + "RENDERBUFFER_GREEN_SIZE": 36177, + "RENDERBUFFER_BLUE_SIZE": 36178, + "RENDERBUFFER_ALPHA_SIZE": 36179, + "RENDERBUFFER_DEPTH_SIZE": 36180, + "RENDERBUFFER_STENCIL_SIZE": 36181, + "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE": 36048, + "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME": 36049, + "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL": 36050, + "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE": 36051, + "COLOR_ATTACHMENT0": 36064, + "DEPTH_ATTACHMENT": 36096, + "STENCIL_ATTACHMENT": 36128, + "DEPTH_STENCIL_ATTACHMENT": 33306, + "NONE": 0, + "FRAMEBUFFER_COMPLETE": 36053, + "FRAMEBUFFER_INCOMPLETE_ATTACHMENT": 36054, + "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT": 36055, + "FRAMEBUFFER_INCOMPLETE_DIMENSIONS": 36057, + "FRAMEBUFFER_UNSUPPORTED": 36061, + "FRAMEBUFFER_BINDING": 36006, + "RENDERBUFFER_BINDING": 36007, + "MAX_RENDERBUFFER_SIZE": 34024, + "INVALID_FRAMEBUFFER_OPERATION": 1286, + "UNPACK_FLIP_Y_WEBGL": 37440, + "UNPACK_PREMULTIPLY_ALPHA_WEBGL": 37441, + "CONTEXT_LOST_WEBGL": 37442, + "UNPACK_COLORSPACE_CONVERSION_WEBGL": 37443, + "BROWSER_DEFAULT_WEBGL": 37444 +}; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLmethod.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLmethod.js new file mode 100644 index 0000000..f2659be --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLmethod.js @@ -0,0 +1,142 @@ +let i = 1; + +const GLmethod = {}; + +GLmethod.activeTexture = i++; //1 +GLmethod.attachShader = i++; +GLmethod.bindAttribLocation = i++; +GLmethod.bindBuffer = i++; +GLmethod.bindFramebuffer = i++; +GLmethod.bindRenderbuffer = i++; +GLmethod.bindTexture = i++; +GLmethod.blendColor = i++; +GLmethod.blendEquation = i++; +GLmethod.blendEquationSeparate = i++; //10 +GLmethod.blendFunc = i++; +GLmethod.blendFuncSeparate = i++; +GLmethod.bufferData = i++; +GLmethod.bufferSubData = i++; +GLmethod.checkFramebufferStatus = i++; +GLmethod.clear = i++; +GLmethod.clearColor = i++; +GLmethod.clearDepth = i++; +GLmethod.clearStencil = i++; +GLmethod.colorMask = i++; //20 +GLmethod.compileShader = i++; +GLmethod.compressedTexImage2D = i++; +GLmethod.compressedTexSubImage2D = i++; +GLmethod.copyTexImage2D = i++; +GLmethod.copyTexSubImage2D = i++; +GLmethod.createBuffer = i++; +GLmethod.createFramebuffer = i++; +GLmethod.createProgram = i++; +GLmethod.createRenderbuffer = i++; +GLmethod.createShader = i++; //30 +GLmethod.createTexture = i++; +GLmethod.cullFace = i++; +GLmethod.deleteBuffer = i++; +GLmethod.deleteFramebuffer = i++; +GLmethod.deleteProgram = i++; +GLmethod.deleteRenderbuffer = i++; +GLmethod.deleteShader = i++; +GLmethod.deleteTexture = i++; +GLmethod.depthFunc = i++; +GLmethod.depthMask = i++; //40 +GLmethod.depthRange = i++; +GLmethod.detachShader = i++; +GLmethod.disable = i++; +GLmethod.disableVertexAttribArray = i++; +GLmethod.drawArrays = i++; +GLmethod.drawArraysInstancedANGLE = i++; +GLmethod.drawElements = i++; +GLmethod.drawElementsInstancedANGLE = i++; +GLmethod.enable = i++; +GLmethod.enableVertexAttribArray = i++; //50 +GLmethod.flush = i++; +GLmethod.framebufferRenderbuffer = i++; +GLmethod.framebufferTexture2D = i++; +GLmethod.frontFace = i++; +GLmethod.generateMipmap = i++; +GLmethod.getActiveAttrib = i++; +GLmethod.getActiveUniform = i++; +GLmethod.getAttachedShaders = i++; +GLmethod.getAttribLocation = i++; +GLmethod.getBufferParameter = i++; //60 +GLmethod.getContextAttributes = i++; +GLmethod.getError = i++; +GLmethod.getExtension = i++; +GLmethod.getFramebufferAttachmentParameter = i++; +GLmethod.getParameter = i++; +GLmethod.getProgramInfoLog = i++; +GLmethod.getProgramParameter = i++; +GLmethod.getRenderbufferParameter = i++; +GLmethod.getShaderInfoLog = i++; +GLmethod.getShaderParameter = i++; //70 +GLmethod.getShaderPrecisionFormat = i++; +GLmethod.getShaderSource = i++; +GLmethod.getSupportedExtensions = i++; +GLmethod.getTexParameter = i++; +GLmethod.getUniform = i++; +GLmethod.getUniformLocation = i++; +GLmethod.getVertexAttrib = i++; +GLmethod.getVertexAttribOffset = i++; +GLmethod.isBuffer = i++; +GLmethod.isContextLost = i++; //80 +GLmethod.isEnabled = i++; +GLmethod.isFramebuffer = i++; +GLmethod.isProgram = i++; +GLmethod.isRenderbuffer = i++; +GLmethod.isShader = i++; +GLmethod.isTexture = i++; +GLmethod.lineWidth = i++; +GLmethod.linkProgram = i++; +GLmethod.pixelStorei = i++; +GLmethod.polygonOffset = i++; //90 +GLmethod.readPixels = i++; +GLmethod.renderbufferStorage = i++; +GLmethod.sampleCoverage = i++; +GLmethod.scissor = i++; +GLmethod.shaderSource = i++; +GLmethod.stencilFunc = i++; +GLmethod.stencilFuncSeparate = i++; +GLmethod.stencilMask = i++; +GLmethod.stencilMaskSeparate = i++; +GLmethod.stencilOp = i++; //100 +GLmethod.stencilOpSeparate = i++; +GLmethod.texImage2D = i++; +GLmethod.texParameterf = i++; +GLmethod.texParameteri = i++; +GLmethod.texSubImage2D = i++; +GLmethod.uniform1f = i++; +GLmethod.uniform1fv = i++; +GLmethod.uniform1i = i++; +GLmethod.uniform1iv = i++; +GLmethod.uniform2f = i++; //110 +GLmethod.uniform2fv = i++; +GLmethod.uniform2i = i++; +GLmethod.uniform2iv = i++; +GLmethod.uniform3f = i++; +GLmethod.uniform3fv = i++; +GLmethod.uniform3i = i++; +GLmethod.uniform3iv = i++; +GLmethod.uniform4f = i++; +GLmethod.uniform4fv = i++; +GLmethod.uniform4i = i++; //120 +GLmethod.uniform4iv = i++; +GLmethod.uniformMatrix2fv = i++; +GLmethod.uniformMatrix3fv = i++; +GLmethod.uniformMatrix4fv = i++; +GLmethod.useProgram = i++; +GLmethod.validateProgram = i++; +GLmethod.vertexAttrib1f = i++; //new +GLmethod.vertexAttrib2f = i++; //new +GLmethod.vertexAttrib3f = i++; //new +GLmethod.vertexAttrib4f = i++; //new //130 +GLmethod.vertexAttrib1fv = i++; //new +GLmethod.vertexAttrib2fv = i++; //new +GLmethod.vertexAttrib3fv = i++; //new +GLmethod.vertexAttrib4fv = i++; //new +GLmethod.vertexAttribPointer = i++; +GLmethod.viewport = i++; + +export default GLmethod; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLtype.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLtype.js new file mode 100644 index 0000000..695abcb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/GLtype.js @@ -0,0 +1,23 @@ +const GLtype = {}; + +[ + "GLbitfield", + "GLboolean", + "GLbyte", + "GLclampf", + "GLenum", + "GLfloat", + "GLint", + "GLintptr", + "GLsizei", + "GLsizeiptr", + "GLshort", + "GLubyte", + "GLuint", + "GLushort" +].sort().map((typeName, i) => GLtype[typeName] = 1 >> (i + 1)); + +export default GLtype; + + + diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Program.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Program.js new file mode 100644 index 0000000..6f5691c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Program.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLProgram'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLProgram { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Renderbuffer.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Renderbuffer.js new file mode 100644 index 0000000..d3182ae --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Renderbuffer.js @@ -0,0 +1,21 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLRenderBuffer'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLRenderbuffer { + className = name; + + constructor(id) { + this.id = id; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/RenderingContext.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/RenderingContext.js new file mode 100644 index 0000000..5f9608f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/RenderingContext.js @@ -0,0 +1,1191 @@ +import GLenum from './GLenum'; +import ActiveInfo from './ActiveInfo'; +import Buffer from './Buffer'; +import Framebuffer from './Framebuffer'; +import Renderbuffer from './Renderbuffer'; +import Texture from './Texture'; +import Program from './Program'; +import Shader from './Shader'; +import ShaderPrecisionFormat from './ShaderPrecisionFormat'; +import UniformLocation from './UniformLocation'; +import GLmethod from './GLmethod'; + +const processArray = (array, checkArrayType = false) => { + + function joinArray(arr, sep) { + let res = ''; + for (let i = 0; i < arr.length; i++) { + if (i !== 0) { + res += sep; + } + res += arr[i]; + } + return res; + } + + let type = 'Float32Array'; + if (checkArrayType) { + if (array instanceof Uint8Array) { + type = 'Uint8Array' + } else if (array instanceof Uint16Array) { + type = 'Uint16Array'; + } else if (array instanceof Uint32Array) { + type = 'Uint32Array'; + } else if (array instanceof Float32Array) { + type = 'Float32Array'; + } else { + throw new Error('Check array type failed. Array type is ' + typeof array); + } + } + + const ArrayTypes = { + Uint8Array: 1, + Uint16Array: 2, + Uint32Array: 4, + Float32Array: 14 + }; + return ArrayTypes[type] + ',' + btoa(joinArray(array, ',')) +} + +export default class WebGLRenderingContext { + + // static GBridge = null; + + className = 'WebGLRenderingContext'; + + constructor(canvas, type, attrs) { + this._canvas = canvas; + this._type = type; + this._version = 'WebGL 1.0'; + this._attrs = attrs; + this._map = new Map(); + + Object.keys(GLenum) + .forEach(name => Object.defineProperty(this, name, { + value: GLenum[name] + })); + } + + get canvas() { + return this._canvas; + } + + activeTexture = function (textureUnit) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.activeTexture + ',' + textureUnit, + true + ); + } + + attachShader = function (progarm, shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.attachShader + ',' + progarm.id + ',' + shader.id, + true + ); + } + + bindAttribLocation = function (program, index, name) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindAttribLocation + ',' + program.id + ',' + index + ',' + name, + true + ) + } + + bindBuffer = function (target, buffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindBuffer + ',' + target + ',' + (buffer ? buffer.id : 0), + true + ); + } + + bindFramebuffer = function (target, framebuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindFramebuffer + ',' + target + ',' + (framebuffer ? framebuffer.id : 0), + true + ) + } + + bindRenderbuffer = function (target, renderBuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindRenderbuffer + ',' + target + ',' + (renderBuffer ? renderBuffer.id : 0), + true + ) + } + + bindTexture = function (target, texture) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bindTexture + ',' + target + ',' + (texture ? texture.id : 0), + true + ) + } + + blendColor = function (r, g, b, a) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendColor + ',' + target + ',' + r + ',' + g + ',' + b + ',' + a, + true + ) + } + + blendEquation = function (mode) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendEquation + ',' + mode, + true + ) + } + + blendEquationSeparate = function (modeRGB, modeAlpha) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendEquationSeparate + ',' + modeRGB + ',' + modeAlpha, + true + ) + } + + + blendFunc = function (sfactor, dfactor) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendFunc + ',' + sfactor + ',' + dfactor, + true + ); + } + + blendFuncSeparate = function (srcRGB, dstRGB, srcAlpha, dstAlpha) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.blendFuncSeparate + ',' + srcRGB + ',' + dstRGB + ',' + srcAlpha + ',' + dstAlpha, + true + ); + } + + bufferData = function (target, data, usage) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bufferData + ',' + target + ',' + processArray(data, true) + ',' + usage, + true + ) + } + + bufferSubData = function (target, offset, data) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.bufferSubData + ',' + target + ',' + offset + ',' + processArray(data, true), + true + ) + } + + checkFramebufferStatus = function (target) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.checkFramebufferStatus + ',' + target + ); + return Number(result); + } + + clear = function (mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clear + ',' + mask + ); + this._canvas._needRender = true; + } + + clearColor = function (r, g, b, a) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clearColor + ',' + r + ',' + g + ',' + b, + true + ) + } + + clearDepth = function (depth) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clearDepth + ',' + depth, + true + ) + } + + clearStencil = function (s) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.clearStencil + ',' + s + ); + } + + colorMask = function (r, g, b, a) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.colorMask + ',' + r + ',' + g + ',' + b + ',' + a + ) + } + + compileShader = function (shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.compileShader + ',' + shader.id, + true + ) + } + + compressedTexImage2D = function (target, level, internalformat, width, height, border, pixels) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.compressedTexImage2D + ',' + target + ',' + level + ',' + internalformat + ',' + + width + ',' + height + ',' + border + ',' + processArray(pixels), + true + ) + } + + compressedTexSubImage2D = function (target, level, xoffset, yoffset, width, height, format, pixels) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.compressedTexSubImage2D + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset + ',' + + width + ',' + height + ',' + format + ',' + processArray(pixels), + true + ) + } + + + copyTexImage2D = function (target, level, internalformat, x, y, width, height, border) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.copyTexImage2D + ',' + target + ',' + level + ',' + internalformat + ',' + x + ',' + y + ',' + + width + ',' + height + ',' + border, + true + ); + } + + copyTexSubImage2D = function (target, level, xoffset, yoffset, x, y, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.copyTexSubImage2D + ',' + target + ',' + level + ',' + xoffset + ',' + yoffset + ',' + x + ',' + y + ',' + + width + ',' + height + ); + } + + createBuffer = function () { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createBuffer + '' + ); + const buffer = new Buffer(result); + this._map.set(buffer.uuid(), buffer); + return buffer; + } + + createFramebuffer = function () { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createFramebuffer + '' + ); + const framebuffer = new Framebuffer(result); + this._map.set(framebuffer.uuid(), framebuffer); + return framebuffer; + } + + + createProgram = function () { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createProgram + '' + ); + const program = new Program(id); + this._map.set(program.uuid(), program); + return program; + } + + createRenderbuffer = function () { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createRenderbuffer + '' + ) + const renderBuffer = new Renderbuffer(id); + this._map.set(renderBuffer.uuid(), renderBuffer); + return renderBuffer; + } + + createShader = function (type) { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createShader + ',' + type + ) + const shader = new Shader(id, type); + this._map.set(shader.uuid(), shader); + return shader; + } + + createTexture = function () { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.createTexture + '' + ); + const texture = new Texture(id); + this._map.set(texture.uuid(), texture); + return texture; + } + + cullFace = function (mode) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.cullFace + ',' + mode, + true + ) + } + + + deleteBuffer = function (buffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteBuffer + ',' + buffer.id, + true + ) + } + + deleteFramebuffer = function (framebuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteFramebuffer + ',' + framebuffer.id, + true + ) + } + + deleteProgram = function (program) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteProgram + ',' + program.id, + true + ) + } + + deleteRenderbuffer = function (renderbuffer) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteRenderbuffer + ',' + renderbuffer.id, + true + ) + } + + deleteShader = function (shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteShader + ',' + shader.id, + true + ) + } + + deleteTexture = function (texture) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.deleteTexture + ',' + texture.id, + true + ) + } + + depthFunc = function (func) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.depthFunc + ',' + func + ) + } + + depthMask = function (flag) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.depthMask + ',' + Number(flag), + true + ) + } + + depthRange = function (zNear, zFar) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.depthRange + ',' + zNear + ',' + zFar, + true + ) + } + + detachShader = function (program, shader) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.detachShader + ',' + program.id + ',' + shader.id, + true + ) + } + + disable = function (cap) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.disable + ',' + cap, + true + ) + } + + disableVertexAttribArray = function (index) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.disableVertexAttribArray + ',' + index, + true + ); + } + + drawArrays = function (mode, first, count) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.drawArrays + ',' + mode + ',' + first + ',' + count + ) + this._canvas._needRender = true; + } + + drawElements = function (mode, count, type, offset) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.drawElements + ',' + mode + ',' + count + ',' + type + ',' + offset + ';' + ); + this._canvas._needRender = true; + } + + enable = function (cap) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.enable + ',' + cap, + true + ); + } + + enableVertexAttribArray = function (index) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.enableVertexAttribArray + ',' + index, + true + ) + } + + + flush = function () { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.flush + '' + ) + } + + framebufferRenderbuffer = function (target, attachment, textarget, texture, level) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.framebufferRenderbuffer + ',' + target + ',' + attachment + ',' + textarget + ',' + (texture ? texture.id : 0) + ',' + level, + true + ) + } + + framebufferTexture2D = function (target, attachment, textarget, texture, level) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.framebufferTexture2D + ',' + target + ',' + attachment + ',' + textarget + ',' + (texture ? texture.id : 0) + ',' + level, + true + ) + } + + frontFace = function (mode) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.frontFace + ',' + mode, + true + ) + } + + generateMipmap = function (target) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.generateMipmap + ',' + target, + true + ) + } + + getActiveAttrib = function (progarm, index) { + const resultString = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getActiveAttrib + ',' + progarm.id + ',' + index + ) + const [type, size, name] = resultString.split(','); + return new ActiveInfo({ + type: Number(type), + size: Number(size), + name + }); + } + + getActiveUniform = function (progarm, index) { + const resultString = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getActiveUniform + ',' + progarm.id + ',' + index + ); + const [type, size, name] = resultString.split(','); + return new ActiveInfo({ + type: Number(type), + size: Number(size), + name + }) + } + + getAttachedShaders = function (progarm) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getAttachedShaders + ',' + progarm.id + ); + const [type, ...ids] = result; + return ids.map(id => this._map.get(Shader.uuid(id))); + } + + getAttribLocation = function (progarm, name) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getAttribLocation + ',' + progarm.id + ',' + name + ) + } + + getBufferParameter = function (target, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getBufferParameter + ',' + target + ',' + pname + ); + const [type, res] = getBufferParameter; + return res; + } + + getError = function () { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getError + '' + ) + return result; + } + + getExtension = function (name) { + return null; + } + + getFramebufferAttachmentParameter = function (target, attachment, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getFramebufferAttachmentParameter + ',' + target + ',' + attachment + ',' + pname + ) + switch (pname) { + case GLenum.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: + return this._map.get(Renderbuffer.uuid(result)) || this._map.get(Texture.uuid(result)) || null; + default: + return result; + } + } + + getParameter = function (pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getParameter + ',' + pname + ) + switch (pname) { + case GLenum.VERSION: + return this._version; + case GLenum.ARRAY_BUFFER_BINDING: // buffer + case GLenum.ELEMENT_ARRAY_BUFFER_BINDING: // buffer + return this._map.get(Buffer.uuid(result)) || null; + case GLenum.CURRENT_PROGRAM: // program + return this._map.get(Program.uuid(result)) || null; + case GLenum.FRAMEBUFFER_BINDING: // framebuffer + return this._map.get(Framebuffer.uuid(result)) || null; + case GLenum.RENDERBUFFER_BINDING: // renderbuffer + return this._map.get(Renderbuffer.uuid(result)) || null; + case GLenum.TEXTURE_BINDING_2D: // texture + case GLenum.TEXTURE_BINDING_CUBE_MAP: // texture + return this._map.get(Texture.uuid(result)) || null; + case GLenum.ALIASED_LINE_WIDTH_RANGE: // Float32Array + case GLenum.ALIASED_POINT_SIZE_RANGE: // Float32Array + case GLenum.BLEND_COLOR: // Float32Array + case GLenum.COLOR_CLEAR_VALUE: // Float32Array + case GLenum.DEPTH_RANGE: // Float32Array + case GLenum.MAX_VIEWPORT_DIMS: // Int32Array + case GLenum.SCISSOR_BOX: // Int32Array + case GLenum.VIEWPORT: // Int32Array + case GLenum.COMPRESSED_TEXTURE_FORMATS: // Uint32Array + default: + const [type, ...res] = result.split(','); + if (res.length === 1) { + return Number(res[0]); + } else { + return res.map(Number); + } + } + } + + getProgramInfoLog = function (progarm) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getProgramInfoLog + ',' + progarm.id + ) + } + + getProgramParameter = function (program, pname) { + const res = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getProgramParameter + ',' + program.id + ',' + pname + ); + + const [type, result] = res.split(',').map(i => parseInt(i)); + + if (type === 1) { + return Boolean(result); + } else if (type === 2) { + return result; + } else { + throw new Error('Unrecongized program paramater ' + res + ', type: ' + typeof res); + } + } + + + getRenderbufferParameter = function (target, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getRenderbufferParameter + ',' + target + ',' + pname + ) + return result; + } + + + getShaderInfoLog = function (shader) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderInfoLog + ',' + shader.id + ); + } + + getShaderParameter = function (shader, pname) { + return WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderParameter + ',' + shader.id + ',' + pname + ) + } + + getShaderPrecisionFormat = function (shaderType, precisionType) { + const [rangeMin, rangeMax, precision] = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderPrecisionFormat + ',' + shaderType + ',' + precisionType + ); + const shaderPrecisionFormat = new ShaderPrecisionFormat({ + rangeMin: Number(rangeMin), + rangeMax: Number(rangeMax), + precision: Number(precision) + }); + return shaderPrecisionFormat; + } + + getShaderSource = function (shader) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getShaderSource + ',' + shader.id + ); + return result; + } + + getSupportedExtensions = function () { + return Object.keys({}); + } + + getTexParameter = function (target, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getTexParameter + ',' + target + ',' + pname + ) + return result; + } + + getUniformLocation = function (program, name) { + const id = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getUniformLocation + ',' + program.id + ',' + name + ); + if (id === -1) { + return null; + } else { + return new UniformLocation(Number(id)); + } + } + + getVertexAttrib = function (index, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getVertexAttrib + ',' + index + ',' + pname + ); + switch (pname) { + case GLenum.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: + return this._map.get(Buffer.uuid(result)) || null; + case GLenum.CURRENT_VERTEX_ATTRIB: // Float32Array + default: + return result; + } + } + + getVertexAttribOffset = function (index, pname) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.getVertexAttribOffset + ',' + index + ',' + pname + ) + return Number(result); + } + + isBuffer = function (buffer) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isBuffer + ',' + buffer.id + ) + return Boolean(result); + } + + isContextLost = function () { + return false; + } + + isEnabled = function (cap) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isEnabled + ',' + cap + ) + return Boolean(result); + } + + isFramebuffer = function (framebuffer) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isFramebuffer + ',' + framebuffer.id + ) + return Boolean(result); + } + + isProgram = function (program) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isProgram + ',' + program.id + ) + return Boolean(result); + } + + isRenderbuffer = function (renderBuffer) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isRenderbuffer + ',' + renderbuffer.id + ) + return Boolean(result); + } + + isShader = function (shader) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isShader + ',' + shader.id + ) + return Boolean(result); + } + + isTexture = function (texture) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.isTexture + ',' + texture.id + ); + return Boolean(result); + } + + lineWidth = function (width) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.lineWidth + ',' + width, + true + ) + } + + linkProgram = function (program) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.linkProgram + ',' + program.id, + true + ); + } + + + pixelStorei = function (pname, param) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.pixelStorei + ',' + pname + ',' + Number(param) + ) + } + + polygonOffset = function (factor, units) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.polygonOffset + ',' + factor + ',' + units + ) + } + + readPixels = function (x, y, width, height, format, type, pixels) { + const result = WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.readPixels + ',' + x + ',' + y + ',' + width + ',' + height + ',' + format + ',' + type + ) + return result; + } + + renderbufferStorage = function (target, internalFormat, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.renderbufferStorage + ',' + target + ',' + internalFormat + ',' + width + ',' + height, + true + ) + } + + sampleCoverage = function (value, invert) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.sampleCoverage + ',' + value + ',' + Number(invert), + true + ) + } + + scissor = function (x, y, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.scissor + ',' + x + ',' + y + ',' + width + ',' + height, + true + ) + } + + shaderSource = function (shader, source) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.shaderSource + ',' + shader.id + ',' + source + ) + } + + stencilFunc = function (func, ref, mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilFunc + ',' + func + ',' + ref + ',' + mask, + true + ) + } + + stencilFuncSeparate = function (face, func, ref, mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilFuncSeparate + ',' + face + ',' + func + ',' + ref + ',' + mask, + true + ) + } + + stencilMask = function (mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilMask + ',' + mask, + true + ) + } + + stencilMaskSeparate = function (face, mask) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilMaskSeparate + ',' + face + ',' + mask, + true + ) + } + + stencilOp = function (fail, zfail, zpass) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilOp + ',' + fail + ',' + zfail + ',' + zpass + ) + } + + stencilOpSeparate = function (face, fail, zfail, zpass) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.stencilOp + ',' + face + ',' + fail + ',' + zfail + ',' + zpass, + true + ) + } + + texImage2D = function (...args) { + WebGLRenderingContext.GBridge.texImage2D(this._canvas.id, ...args); + } + + + texParameterf = function (target, pname, param) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.texParameterf + ',' + target + ',' + pname + ',' + param, + true + ) + } + + texParameteri = function (target, pname, param) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.texParameteri + ',' + target + ',' + pname + ',' + param + ) + } + + texSubImage2D = function (...args) { + WebGLRenderingContext.GBridge.texSubImage2D(this._canvas.id, ...args); + } + + uniform1f = function (location, v0) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1f + ',' + location.id + ',' + v0 + ) + } + + uniform1fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform1i = function (location, v0) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1i + ',' + location.id + ',' + v0, + // true + ) + } + + uniform1iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform1iv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform2f = function (location, v0, v1) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2f + ',' + location.id + ',' + v0 + ',' + v1, + true + ) + } + + uniform2fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform2i = function (location, v0, v1) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2i + ',' + location.id + ',' + v0 + ',' + v1, + true + ) + } + + uniform2iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform2iv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform3f = function (location, v0, v1, v2) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3f + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2, + true + ) + } + + uniform3fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform3i = function (location, v0, v1, v2) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3i + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2, + true + ) + } + + uniform3iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform3iv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform4f = function (location, v0, v1, v2, v3) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4f + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3, + true + ) + } + + uniform4fv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4fv + ',' + location.id + ',' + processArray(value), + true + ) + } + + uniform4i = function (location, v0, v1, v2, v3) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4i + ',' + location.id + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3, + true + ) + } + + uniform4iv = function (location, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniform4iv + ',' + location.id + ',' + processArray(value, true), + true + ) + } + + uniformMatrix2fv = function (location, transpose, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniformMatrix2fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value), + true + ) + } + + uniformMatrix3fv = function (location, transpose, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniformMatrix3fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value), + true + ) + } + + uniformMatrix4fv = function (location, transpose, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.uniformMatrix4fv + ',' + location.id + ',' + Number(transpose) + ',' + processArray(value), + true + ); + } + + useProgram = function (progarm) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.useProgram + ',' + progarm.id + '', + true + ) + } + + + validateProgram = function (program) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.validateProgram + ',' + program.id, + true + ) + } + + vertexAttrib1f = function (index, v0) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib1f + ',' + index + ',' + v0, + true + ) + } + + vertexAttrib2f = function (index, v0, v1) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib2f + ',' + index + ',' + v0 + ',' + v1, + true + ) + } + + vertexAttrib3f = function (index, v0, v1, v2) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib3f + ',' + index + ',' + v0 + ',' + v1 + ',' + v2, + true + ) + } + + vertexAttrib4f = function (index, v0, v1, v2, v3) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib4f + ',' + index + ',' + v0 + ',' + v1 + ',' + v2 + ',' + v3, + true + ) + } + + vertexAttrib1fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib1fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttrib2fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib2fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttrib3fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib3fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttrib4fv = function (index, value) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttrib4fv + ',' + index + ',' + processArray(value), + true + ) + } + + vertexAttribPointer = function (index, size, type, normalized, stride, offset) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.vertexAttribPointer + ',' + index + ',' + size + ',' + type + ',' + Number(normalized) + ',' + stride + ',' + offset, + true + ) + } + + viewport = function (x, y, width, height) { + WebGLRenderingContext.GBridge.callNative( + this._canvas.id, + GLmethod.viewport + ',' + x + ',' + y + ',' + width + ',' + height, + true + ) + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Shader.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Shader.js new file mode 100644 index 0000000..a763886 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Shader.js @@ -0,0 +1,22 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLShader'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLShader { + className = name; + + constructor(id, type) { + this.id = id; + this.type = type; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/ShaderPrecisionFormat.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/ShaderPrecisionFormat.js new file mode 100644 index 0000000..208d6c1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/ShaderPrecisionFormat.js @@ -0,0 +1,11 @@ +export default class WebGLShaderPrecisionFormat { + className = 'WebGLShaderPrecisionFormat'; + + constructor({ + rangeMin, rangeMax, precision + }) { + this.rangeMin = rangeMin; + this.rangeMax = rangeMax; + this.precision = precision; + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Texture.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Texture.js new file mode 100644 index 0000000..de4d806 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/Texture.js @@ -0,0 +1,22 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLTexture'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLTexture { + className = name; + + constructor(id, type) { + this.id = id; + this.type = type; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/UniformLocation.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/UniformLocation.js new file mode 100644 index 0000000..f5e99dc --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/UniformLocation.js @@ -0,0 +1,22 @@ +import {getTransferedObjectUUID} from './classUtils'; + +const name = 'WebGLUniformLocation'; + +function uuid(id) { + return getTransferedObjectUUID(name, id); +} + +export default class WebGLUniformLocation { + className = name; + + constructor(id, type) { + this.id = id; + this.type = type; + } + + static uuid = uuid; + + uuid() { + return uuid(this.id); + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/classUtils.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/classUtils.js new file mode 100644 index 0000000..88716be --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/context-webgl/classUtils.js @@ -0,0 +1,3 @@ +export function getTransferedObjectUUID(name, id) { + return `${name.toLowerCase()}-${id}`; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/canvas.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/canvas.js new file mode 100644 index 0000000..a8d9bb9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/canvas.js @@ -0,0 +1,74 @@ +import GContext2D from '../context-2d/RenderingContext'; +import GContextWebGL from '../context-webgl/RenderingContext'; + +export default class GCanvas { + + // static GBridge = null; + + id = null; + + _needRender = true; + + constructor(id, { disableAutoSwap }) { + this.id = id; + + this._disableAutoSwap = disableAutoSwap; + if (disableAutoSwap) { + this._swapBuffers = () => { + GCanvas.GBridge.render(this.id); + } + } + } + + getContext(type) { + + let context = null; + + if (type.match(/webgl/i)) { + context = new GContextWebGL(this); + + context.componentId = this.id; + + if (!this._disableAutoSwap) { + const render = () => { + if (this._needRender) { + GCanvas.GBridge.render(this.id); + this._needRender = false; + } + } + setInterval(render, 16); + } + + GCanvas.GBridge.callSetContextType(this.id, 1); // 0 for 2d; 1 for webgl + } else if (type.match(/2d/i)) { + context = new GContext2D(this); + + context.componentId = this.id; + +// const render = ( callback ) => { +// +// const commands = context._drawCommands; +// context._drawCommands = ''; +// +// GCanvas.GBridge.render2d(this.id, commands, callback); +// this._needRender = false; +// } +// //draw方法触发 +// context._flush = render; +// //setInterval(render, 16); + + GCanvas.GBridge.callSetContextType(this.id, 0); + } else { + throw new Error('not supported context ' + type); + } + + return context; + + } + + reset() { + GCanvas.GBridge.callReset(this.id); + } + + +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/image.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/image.js new file mode 100644 index 0000000..9499a51 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/image.js @@ -0,0 +1,96 @@ +let incId = 1; + +const noop = function () { }; + +class GImage { + + static GBridge = null; + + constructor() { + this._id = incId++; + this._width = 0; + this._height = 0; + this._src = undefined; + this._onload = noop; + this._onerror = noop; + this.complete = false; + } + + get width() { + return this._width; + } + set width(v) { + this._width = v; + } + + get height() { + return this._height; + } + + set height(v) { + this._height = v; + } + + get src() { + return this._src; + } + + set src(v) { + + if (v.startsWith('//')) { + v = 'http:' + v; + } + + this._src = v; + + GImage.GBridge.perloadImage([this._src, this._id], (data) => { + if (typeof data === 'string') { + data = JSON.parse(data); + } + if (data.error) { + var evt = { type: 'error', target: this }; + this.onerror(evt); + } else { + this.complete = true; + this.width = typeof data.width === 'number' ? data.width : 0; + this.height = typeof data.height === 'number' ? data.height : 0; + var evt = { type: 'load', target: this }; + this.onload(evt); + } + }); + } + + addEventListener(name, listener) { + if (name === 'load') { + this.onload = listener; + } else if (name === 'error') { + this.onerror = listener; + } + } + + removeEventListener(name, listener) { + if (name === 'load') { + this.onload = noop; + } else if (name === 'error') { + this.onerror = noop; + } + } + + get onload() { + return this._onload; + } + + set onload(v) { + this._onload = v; + } + + get onerror() { + return this._onerror; + } + + set onerror(v) { + this._onerror = v; + } +} + +export default GImage; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/tool.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/tool.js new file mode 100644 index 0000000..d3fb398 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/env/tool.js @@ -0,0 +1,24 @@ + +export function ArrayBufferToBase64 (buffer) { + var binary = ''; + var bytes = new Uint8ClampedArray(buffer); + for (var len = bytes.byteLength, i = 0; i < len; i++) { + binary += String.fromCharCode(bytes[i]); + } + return btoa(binary); +} + +export function Base64ToUint8ClampedArray(base64String) { + const padding = '='.repeat((4 - base64String.length % 4) % 4); + const base64 = (base64String + padding) + .replace(/\-/g, '+') + .replace(/_/g, '/'); + + const rawData = atob(base64); + const outputArray = new Uint8ClampedArray(rawData.length); + + for (let i = 0; i < rawData.length; ++i) { + outputArray[i] = rawData.charCodeAt(i); + } + return outputArray; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/gcanvas/index.js b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/index.js new file mode 100644 index 0000000..b722861 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/gcanvas/index.js @@ -0,0 +1,40 @@ +import GCanvas from './env/canvas'; +import GImage from './env/image'; + +import GWebGLRenderingContext from './context-webgl/RenderingContext'; +import GContext2D from './context-2d/RenderingContext'; + +import GBridgeWeex from './bridge/bridge-weex'; + +export let Image = GImage; + +export let WeexBridge = GBridgeWeex; + + +export function enable(el, { bridge, debug, disableAutoSwap, disableComboCommands } = {}) { + + const GBridge = GImage.GBridge = GCanvas.GBridge = GWebGLRenderingContext.GBridge = GContext2D.GBridge = bridge; + + GBridge.callEnable(el.ref, [ + 0, // renderMode: 0--RENDERMODE_WHEN_DIRTY, 1--RENDERMODE_CONTINUOUSLY + -1, // hybridLayerType: 0--LAYER_TYPE_NONE 1--LAYER_TYPE_SOFTWARE 2--LAYER_TYPE_HARDWARE + false, // supportScroll + false, // newCanvasMode + 1, // compatible + 'white',// clearColor + false // sameLevel: newCanvasMode = true && true => GCanvasView and Webview is same level + ]); + + if (debug === true) { + GBridge.callEnableDebug(); + } + if (disableComboCommands) { + GBridge.callEnableDisableCombo(); + } + + var canvas = new GCanvas(el.ref, { disableAutoSwap }); + canvas.width = el.style.width; + canvas.height = el.style.height; + + return canvas; +}; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/fetch.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/fetch.ts new file mode 100644 index 0000000..a4b4ed6 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/fetch.ts @@ -0,0 +1,114 @@ +import { fetchConfig,fetchConfigMethod } from './interface'; +let config:fetchConfig={ + url:"", + data:{}, + statusCode:200, + header:{ + // "content-type":"application/json" + }, + method:"POST", + timeout:60000, + dataType:"json", + responseType:"text", + sslVerify:true, + withCredentials:false, + firstIpv4:false +} + +function request(cog:fetchConfig = config,complete?:Function,beforeRequest?:Function,afterRequest?:Function):Promise{ + let newConfig = {...config,...cog} + return new Promise(async (resolve,reject)=>{ + if(typeof beforeRequest === 'function'){ + let opts = await beforeRequest(newConfig); + if(typeof opts !=='object'){ + opts = {}; + } + newConfig = {...newConfig,...opts}; + } + uni.request({ + url:newConfig.url||"", + data:newConfig.data, + header:newConfig.header, + method:newConfig.method, + timeout:newConfig.timeout, + dataType:newConfig.dataType, + responseType:newConfig.responseType, + sslVerify:newConfig.sslVerify, + withCredentials:newConfig.withCredentials, + firstIpv4:newConfig.firstIpv4, + async success(result) { + + if(result.statusCode !==newConfig?.statusCode){ + reject(result) + return; + } + if(typeof afterRequest === 'function'){ + let opts = await afterRequest(result); + + try{ + if(typeof opts !=='object'){ + opts = result; + } + if(typeof opts ==='object' && Object.keys(opts)?.length==0){ + opts = result; + } + }catch(e){ + console.error('tmui:',e) + } + result = {...opts}; + } + resolve(result) + }, + fail(result) { + reject(result) + }, + complete(result) { + if(typeof complete === "function"){ + complete(result) + } + }, + }) + }) +} +var beforeRequest:Function = (val:fetchConfig)=>val; +var afterRequest:Function = (val:fetchConfig)=>val; +export class fetchNet { + + /** + * 构建新的请求 + * @param cog 请示配置见:fetchConfig + * @param beforeRequest 访问前执行的函数,可以是Promise,你可以对执行前的参数进行修改之类的,将以你最新的修改参数为准进行请求。 + * @param afterRequest 访问后执行的函数,可以是Promise,提供请示后的数据,你可以在这里修改,返回,这样所有请求的数据返回后都为返回你修改后的数据。 + */ + constructor(cog:fetchConfig,beforeRequestFun?:Function,afterRequesFunt?:Function){ + config = {...config,...(cog||{})}; + if(typeof beforeRequestFun == 'function'){ + beforeRequest = beforeRequestFun; + } + if(typeof afterRequesFunt == 'function'){ + afterRequest = afterRequesFunt; + } + } + static get(url:string,data:object={},opts:fetchConfig={}){ + let cfg:fetchConfig = {...config,...(opts||{}),url:url,method:"GET",data:data}; + return request(cfg) + } + static post(url:string,data:object={},opts:fetchConfig={}){ + let cfg:fetchConfig = {...config,...(opts||{}),url:url,method:"POST",data:data}; + return request(cfg) + } + /** + * 请求 + * @param cog 配置 + * @param complete 访问结束后执行的函数 + */ + static async request(cog:fetchConfig = config,beforeFun?:Function,afterFun?:Function,complete?:Function){ + let newConfig = {...config,...cog} + if(typeof beforeFun == 'function'){ + let testFun = await beforeFun(); + let cb:UniApp.GeneralCallbackResult = {errMsg:"中止请求"} + if(!testFun) return cb; + } + return request(newConfig,complete,(beforeFun||beforeRequest),(afterFun||afterRequest)); + } +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/htmlPaser.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/htmlPaser.ts new file mode 100644 index 0000000..0d28a40 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/htmlPaser.ts @@ -0,0 +1,352 @@ +/* + * HTML5 Parser By Sam Blowes + * + * Designed for HTML5 documents + * + * Original code by John Resig (ejohn.org) + * http://ejohn.org/blog/pure-javascript-html-parser/ + * Original code by Erik Arvidsson, Mozilla Public License + * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js + * + * ---------------------------------------------------------------------------- + * License + * ---------------------------------------------------------------------------- + * + * This code is triple licensed using Apache Software License 2.0, + * Mozilla Public License or GNU Public License + * + * //////////////////////////////////////////////////////////////////////////// + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * //////////////////////////////////////////////////////////////////////////// + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Simple HTML Parser. + * + * The Initial Developer of the Original Code is Erik Arvidsson. + * Portions created by Erik Arvidssson are Copyright (C) 2004. All Rights + * Reserved. + * + * //////////////////////////////////////////////////////////////////////////// + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * ---------------------------------------------------------------------------- + * Usage + * ---------------------------------------------------------------------------- + * + * // Use like so: + * HTMLParser(htmlString, { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + * // or to get an XML string: + * HTMLtoXML(htmlString); + * + * // or to get an XML DOM Document + * HTMLtoDOM(htmlString); + * + * // or to inject into an existing document/DOM node + * HTMLtoDOM(htmlString, document); + * HTMLtoDOM(htmlString, document.body); + * + */ +// Regular Expressions for parsing tags and attributes +var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/; +var endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/; +var attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; // Empty Elements - HTML 5 + +var empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr'); // Block Elements - HTML 5 +// fixed by xxx 将 ins 标签从块级名单中移除 + +var block = makeMap('a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); // Inline Elements - HTML 5 + +var inline = makeMap('abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); // Elements that you can, intentionally, leave open +// (and which close themselves) + +var closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); // Attributes that have their values filled in disabled="disabled" + +var fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'); // Special Elements (can contain anything) + +var special = makeMap('script,style'); +function HTMLParser(html, handler) { + var index; + var chars; + var match; + var stack = []; + var last = html; + + stack.last = function () { + return this[this.length - 1]; + }; + + while (html) { + chars = true; // Make sure we're not in a script or style element + + if (!stack.last() || !special[stack.last()]) { + // Comment + if (html.indexOf(''); + + if (index >= 0) { + if (handler.comment) { + handler.comment(html.substring(4, index)); + } + + html = html.substring(index + 3); + chars = false; + } // end tag + + } else if (html.indexOf(']*>'), function (all, text) { + text = text.replace(/|/g, '$1$2'); + + if (handler.chars) { + handler.chars(text); + } + + return ''; + }); + parseEndTag('', stack.last()); + } + + if (html == last) { + throw 'Parse Error: ' + html; + } + + last = html; + } // Clean up any remaining tags + + + parseEndTag(); + + function parseStartTag(tag, tagName, rest, unary) { + tagName = tagName.toLowerCase(); + + if (block[tagName]) { + while (stack.last() && inline[stack.last()]) { + parseEndTag('', stack.last()); + } + } + + if (closeSelf[tagName] && stack.last() == tagName) { + parseEndTag('', tagName); + } + + unary = empty[tagName] || !!unary; + + if (!unary) { + stack.push(tagName); + } + + if (handler.start) { + var attrs = []; + rest.replace(attr, function (match, name) { + var value = arguments[2] ? arguments[2] : arguments[3] ? arguments[3] : arguments[4] ? arguments[4] : fillAttrs[name] ? name : ''; + attrs.push({ + name: name, + value: value, + escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') // " + + }); + }); + + if (handler.start) { + handler.start(tagName, attrs, unary); + } + } + } + + function parseEndTag(tag, tagName) { + // If no tag name is provided, clean shop + if (!tagName) { + var pos = 0; + } // Find the closest opened tag of the same type + else { + for (var pos = stack.length - 1; pos >= 0; pos--) { + if (stack[pos] == tagName) { + break; + } + } + } + + if (pos >= 0) { + // Close all the open elements, up the stack + for (var i = stack.length - 1; i >= pos; i--) { + if (handler.end) { + handler.end(stack[i]); + } + } // Remove the open elements from the stack + + + stack.length = pos; + } + } +} + +function makeMap(str) { + var obj = {}; + var items = str.split(','); + + for (var i = 0; i < items.length; i++) { + obj[items[i]] = true; + } + + return obj; +} + +function removeDOCTYPE(html) { + return html.replace(/<\?xml.*\?>\n/, '').replace(/\n/, '').replace(/\n/, ''); +} + +function parseAttrs(attrs) { + return attrs.reduce(function (pre, attr) { + var value = attr.value; + var name = attr.name; + + if (pre[name]) { + pre[name] = pre[name] + " " + value; + } else { + pre[name] = value; + } + + return pre; + }, {}); +} + +function parseHtml(html) { + html = removeDOCTYPE(html); + var stacks = []; + var results = { + node: 'root', + children: [] + }; + HTMLParser(html, { + start: function start(tag, attrs, unary) { + var node = { + name: tag + }; + + if (attrs.length !== 0) { + node.attrs = parseAttrs(attrs); + } + + if (unary) { + var parent = stacks[0] || results; + + if (!parent.children) { + parent.children = []; + } + + parent.children.push(node); + } else { + stacks.unshift(node); + } + }, + end: function end(tag) { + var node = stacks.shift(); + if (node.name !== tag) console.error('invalid state: mismatch end tag'); + + if (stacks.length === 0) { + results.children.push(node); + } else { + var parent = stacks[0]; + + if (!parent.children) { + parent.children = []; + } + + parent.children.push(node); + } + }, + chars: function chars(text) { + var node = { + type: 'text', + text: text + }; + + if (stacks.length === 0) { + results.children.push(node); + } else { + var parent = stacks[0]; + + if (!parent.children) { + parent.children = []; + } + + parent.children.push(node); + } + }, + comment: function comment(text) { + var node = { + node: 'comment', + text: text + }; + var parent = stacks[0]; + + if (!parent.children) { + parent.children = []; + } + + parent.children.push(node); + } + }); + return results.children; +} + +export default parseHtml; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/interface.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/interface.ts new file mode 100644 index 0000000..07cb512 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/interface.ts @@ -0,0 +1,178 @@ +/* + * @Date: 2022-03-09 12:34:45 + * @LastEditors: tmzdy + * @Author: tmzdy + * @Description: 文件 + */ + +//颜色类型 +export interface rgba { + r: number, + g: number, + b: number, + a: number +} +export interface hsva { + h: number, + s: number, + v: number, + a: number +} +export interface hsla { + h: number, + s: number, + l: number, + a: number +} + +//生成主题的必要配置 +export interface cssStyleConfig { + colorname: string,//颜色名称 + borderWidth?: number,//边线宽度 + borderDirection?: cssDirectionType,//边线的方向 + linearDirection?: linearDirectionType,//渐变的方向. + linearDeep?: linearDeep,//light,dark,亮系渐变和深色渐变。 + shadow?: number,//投影的大小, + round?: number,//圆角大小 + opaticy?: number,//透明度 + dark: boolean,//暗黑 + outlined?: boolean, + text?: boolean, + borderStyle?:string, + blur?:boolean, + /**边线颜色,可以不提供。不提供使用自动计算的值。 */ + borderColor?:string +} + + +//输入主题的属性css样式表。 +export interface cssstyle { + colorname?: string,//颜色名称 + border?: string,//边线颜色 + borderCss?: any, + backgroundColor?: string,//背景颜色 + backgroundColorCss?: object, + textColor?: string,//文字颜色 + textColorCss?: object, + elevation?: number,//安卓端的投影。 + shadowColor?: object, + config?:cssStyleConfig + gradientColor?:Array, + cardcolor?: string,//项目暗黑下的背景色 + inputcolor?: string,//输入框,表单等暗黑下的背景色 + bodycolor?: string,//暗黑下的背景色 + disablecolor?: string,//禁用的项目或者表单暗黑下 + textDisableColor?: string,//文本禁用色.暗黑下 + isBlackAndWhite?:boolean,//该主题是否是黑白色系。 + color?:string//原始颜色未处理过的。 + /**linearDirection对应css的方向 */ + linearDirectionStr?:string, +} + +//颜色主题对象。 +export interface colorThemeType { + name: string, + value: string, + hsva: hsva, + rgba: rgba, + hsla: hsla, + csscolor?: string +} +//主题方向 +export type cssDirectionType = "left"|"right"|"top"|"bottom"|"all"|"leftright"|"topbottom"|"topleft"|"topright"|"bottomleft"|"bottomright"|"x"|"y"; +export enum cssDirection { + left = "left", + right = "right", + bottom = "bottom", + top = "top", + leftright = "x", + topbottom = "y", + topleft = "top-left", + topright = "top-right", + bottomleft = "bottom-left", + bottomright = "bottom-right", + all = "all" +} +//渐变方向 +export type linearDirectionType= "left"|"right"|"top"|"bottom"|"" +export enum linearDirection { + left = "to left", + right = "to right", + top = "to top", + bottom = "to bottom", + none = "" +} +//渐变的颜色类型 +export type linearDeepType = "light"|"dark"|"accent" +export enum linearDeep { + /** + * 亮色 + */ + light = "light", + /** + * 暗黑,偏暗 + */ + dark = "dark", + /** + * 强调色 + */ + accent = "accent", +} +// 边线样式 +export type borderStyleType = "solid"|"dashed"|"dotted"; +export enum borderStyle { + solid = 'solid', + dashed = 'dashed', + dotted = 'dotted', +} +// 微信分享结构类型 +export interface wxshareConfig { + title?: string, // 分享标题 + desc?: string, // 描述 + imageUrl?: string, // 分享图片 + path?: string, // 分享路径 + copyLink?: string, // 复制链接 + query?: any, // 分享参数 +} +//store下的tmcfg参数对象类型。 +export interface tmVuetify { + color: string, + dark: boolean, + tmVueTifly_pages: string, + tmVueTifly_pagesIndex: string, + //这里是微信小程序和微信H5的配置资料。 + wxshareConfig_miniMp:wxshareConfig , + //当前存储存的主题对象。 + colorList: Array, + //当前的语言 + local:string + os:string +} + +export type fetchConfigResponseType= "arraybuffer"|"text"; +export type fetchConfigDataType = "json"|"text"; +export type fetchConfigMethod= "GET"|"POST"|"PUT"|"DELETE"|"CONNECT"|"HEAD"|"OPTIONS"|"TRACE"; + +export interface fetchConfigSuccessType{ + data:object|string|ArrayBuffer, + statusCode:number, + header:object, + cookies:Array +} +export interface fetchConfig { + url?:string, + /** 定义成功的服务器返回的状态码成功的标志 */ + statusCode?:number, + data?:object|string|ArrayBuffer, + header?:object, + method?:fetchConfigMethod, + timeout?:number, + dataType?:fetchConfigDataType, + responseType?:fetchConfigResponseType, + sslVerify?:boolean, + withCredentials?:boolean, + firstIpv4?:boolean, + success?:Function, + fail?:Function, + complete?:Function +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/language.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/language.ts new file mode 100644 index 0000000..265025f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/language.ts @@ -0,0 +1,37 @@ +//配置国际化标准语言。 +import en from '../../locale/en.json' +import zhHans from '../../locale/zh-Hans.json' +import { createI18n, I18nOptions, } from 'vue-i18n' +import { initVueI18n} from '@dcloudio/uni-i18n' +export const language= function(key:string){ + const messages:any = { + en, + 'zh-Hans':zhHans + } + let i18nConfig:I18nOptions | undefined = { + locale: uni.getLocale(),// 获取已设置的语言 + messages + } + // #ifndef APP-NVUE + const i18n = createI18n(i18nConfig) + return i18n.global.t(key) + // #endif + // #ifdef APP-NVUE + const { t } = initVueI18n(messages) + return t(key); + // #endif + +} +//保留原始调用方法。 +export const languageByGlobal= function(){ + const messages = { + en, + 'zh-Hans':zhHans + } + let i18nConfig = { + locale: uni.getLocale(),// 获取已设置的语言 + messages + } + const i18n = createI18n(i18nConfig) + return i18n +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/lottie_canvas.min.js b/uni_modules/UniDevTools/src/tmui/tool/lib/lottie_canvas.min.js new file mode 100644 index 0000000..cbe3a96 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/lottie_canvas.min.js @@ -0,0 +1,14844 @@ +const svgNS = 'http://www.w3.org/2000/svg'; + +let locationHref = ''; +let _useWebWorker = false; + +const initialDefaultFrame = -999999; + +const setWebWorker = (flag) => { _useWebWorker = !!flag; }; +const getWebWorker = () => _useWebWorker; + +const setLocationHref = (value) => { locationHref = value; }; +const getLocationHref = () => locationHref; + +function createTag(type) { + // return {appendChild:function(){},setAttribute:function(){},style:{}} + return document.createElement(type); +} + +function extendPrototype(sources, destination) { + var i; + var len = sources.length; + var sourcePrototype; + for (i = 0; i < len; i += 1) { + sourcePrototype = sources[i].prototype; + for (var attr in sourcePrototype) { + if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr]; + } + } +} + +function getDescriptor(object, prop) { + return Object.getOwnPropertyDescriptor(object, prop); +} + +function createProxyFunction(prototype) { + function ProxyFunction() {} + ProxyFunction.prototype = prototype; + return ProxyFunction; +} + +// import Howl from '../../3rd_party/howler'; + +const audioControllerFactory = (function () { + function AudioController(audioFactory) { + this.audios = []; + this.audioFactory = audioFactory; + this._volume = 1; + this._isMuted = false; + } + + AudioController.prototype = { + addAudio: function (audio) { + this.audios.push(audio); + }, + pause: function () { + var i; + var len = this.audios.length; + for (i = 0; i < len; i += 1) { + this.audios[i].pause(); + } + }, + resume: function () { + var i; + var len = this.audios.length; + for (i = 0; i < len; i += 1) { + this.audios[i].resume(); + } + }, + setRate: function (rateValue) { + var i; + var len = this.audios.length; + for (i = 0; i < len; i += 1) { + this.audios[i].setRate(rateValue); + } + }, + createAudio: function (assetPath) { + if (this.audioFactory) { + return this.audioFactory(assetPath); + } if (window.Howl) { + return new window.Howl({ + src: [assetPath], + }); + } + return { + isPlaying: false, + play: function () { this.isPlaying = true; }, + seek: function () { this.isPlaying = false; }, + playing: function () {}, + rate: function () {}, + setVolume: function () {}, + }; + }, + setAudioFactory: function (audioFactory) { + this.audioFactory = audioFactory; + }, + setVolume: function (value) { + this._volume = value; + this._updateVolume(); + }, + mute: function () { + this._isMuted = true; + this._updateVolume(); + }, + unmute: function () { + this._isMuted = false; + this._updateVolume(); + }, + getVolume: function () { + return this._volume; + }, + _updateVolume: function () { + var i; + var len = this.audios.length; + for (i = 0; i < len; i += 1) { + this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1)); + } + }, + }; + + return function () { + return new AudioController(); + }; +}()); + +const createTypedArray = (function () { + function createRegularArray(type, len) { + var i = 0; + var arr = []; + var value; + switch (type) { + case 'int16': + case 'uint8c': + value = 1; + break; + default: + value = 1.1; + break; + } + for (i = 0; i < len; i += 1) { + arr.push(value); + } + return arr; + } + function createTypedArrayFactory(type, len) { + if (type === 'float32') { + return new Float32Array(len); + } if (type === 'int16') { + return new Int16Array(len); + } if (type === 'uint8c') { + return new Uint8ClampedArray(len); + } + return createRegularArray(type, len); + } + if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') { + return createTypedArrayFactory; + } + return createRegularArray; +}()); + +function createSizedArray(len) { + return Array.apply(null, { length: len }); +} + +let subframeEnabled = true; +let expressionsPlugin = null; +let idPrefix$1 = ''; +const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); +let _shouldRoundValues = false; +const bmPow = Math.pow; +const bmSqrt = Math.sqrt; +const bmFloor = Math.floor; +const bmMax = Math.max; +const bmMin = Math.min; + +const BMMath = {}; +(function () { + var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2']; + var i; + var len = propertyNames.length; + for (i = 0; i < len; i += 1) { + BMMath[propertyNames[i]] = Math[propertyNames[i]]; + } +}()); + +function ProjectInterface$1() { return {}; } +BMMath.random = Math.random; +BMMath.abs = function (val) { + var tOfVal = typeof val; + if (tOfVal === 'object' && val.length) { + var absArr = createSizedArray(val.length); + var i; + var len = val.length; + for (i = 0; i < len; i += 1) { + absArr[i] = Math.abs(val[i]); + } + return absArr; + } + return Math.abs(val); +}; +let defaultCurveSegments = 150; +const degToRads = Math.PI / 180; +const roundCorner = 0.5519; + +function roundValues(flag) { + _shouldRoundValues = !!flag; +} + +function bmRnd(value) { + if (_shouldRoundValues) { + return Math.round(value); + } + return value; +} + +function styleDiv(element) { + element.style.position = 'absolute'; + element.style.top = 0; + element.style.left = 0; + element.style.display = 'block'; + element.style.transformOrigin = '0 0'; + element.style.webkitTransformOrigin = '0 0'; + element.style.backfaceVisibility = 'visible'; + element.style.webkitBackfaceVisibility = 'visible'; + element.style.transformStyle = 'preserve-3d'; + element.style.webkitTransformStyle = 'preserve-3d'; + element.style.mozTransformStyle = 'preserve-3d'; +} + +function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) { + this.type = type; + this.currentTime = currentTime; + this.totalTime = totalTime; + this.direction = frameMultiplier < 0 ? -1 : 1; +} + +function BMCompleteEvent(type, frameMultiplier) { + this.type = type; + this.direction = frameMultiplier < 0 ? -1 : 1; +} + +function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) { + this.type = type; + this.currentLoop = currentLoop; + this.totalLoops = totalLoops; + this.direction = frameMultiplier < 0 ? -1 : 1; +} + +function BMSegmentStartEvent(type, firstFrame, totalFrames) { + this.type = type; + this.firstFrame = firstFrame; + this.totalFrames = totalFrames; +} + +function BMDestroyEvent(type, target) { + this.type = type; + this.target = target; +} + +function BMRenderFrameErrorEvent(nativeError, currentTime) { + this.type = 'renderFrameError'; + this.nativeError = nativeError; + this.currentTime = currentTime; +} + +function BMConfigErrorEvent(nativeError) { + this.type = 'configError'; + this.nativeError = nativeError; +} + +function BMAnimationConfigErrorEvent(type, nativeError) { + this.type = type; + this.nativeError = nativeError; +} + +const createElementID = (function () { + var _count = 0; + return function createID() { + _count += 1; + return idPrefix$1 + '__lottie_element_' + _count; + }; +}()); + +function HSVtoRGB(h, s, v) { + var r; + var g; + var b; + var i; + var f; + var p; + var q; + var t; + i = Math.floor(h * 6); + f = h * 6 - i; + p = v * (1 - s); + q = v * (1 - f * s); + t = v * (1 - (1 - f) * s); + switch (i % 6) { + case 0: r = v; g = t; b = p; break; + case 1: r = q; g = v; b = p; break; + case 2: r = p; g = v; b = t; break; + case 3: r = p; g = q; b = v; break; + case 4: r = t; g = p; b = v; break; + case 5: r = v; g = p; b = q; break; + default: break; + } + return [r, + g, + b]; +} + +function RGBtoHSV(r, g, b) { + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var d = max - min; + var h; + var s = (max === 0 ? 0 : d / max); + var v = max / 255; + + switch (max) { + case min: h = 0; break; + case r: h = (g - b) + d * (g < b ? 6 : 0); h /= 6 * d; break; + case g: h = (b - r) + d * 2; h /= 6 * d; break; + case b: h = (r - g) + d * 4; h /= 6 * d; break; + default: break; + } + + return [ + h, + s, + v, + ]; +} + +function addSaturationToRGB(color, offset) { + var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); + hsv[1] += offset; + if (hsv[1] > 1) { + hsv[1] = 1; + } else if (hsv[1] <= 0) { + hsv[1] = 0; + } + return HSVtoRGB(hsv[0], hsv[1], hsv[2]); +} + +function addBrightnessToRGB(color, offset) { + var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); + hsv[2] += offset; + if (hsv[2] > 1) { + hsv[2] = 1; + } else if (hsv[2] < 0) { + hsv[2] = 0; + } + return HSVtoRGB(hsv[0], hsv[1], hsv[2]); +} + +function addHueToRGB(color, offset) { + var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); + hsv[0] += offset / 360; + if (hsv[0] > 1) { + hsv[0] -= 1; + } else if (hsv[0] < 0) { + hsv[0] += 1; + } + return HSVtoRGB(hsv[0], hsv[1], hsv[2]); +} + +const rgbToHex = (function () { + var colorMap = []; + var i; + var hex; + for (i = 0; i < 256; i += 1) { + hex = i.toString(16); + colorMap[i] = hex.length === 1 ? '0' + hex : hex; + } + + return function (r, g, b) { + if (r < 0) { + r = 0; + } + if (g < 0) { + g = 0; + } + if (b < 0) { + b = 0; + } + return '#' + colorMap[r] + colorMap[g] + colorMap[b]; + }; +}()); + +const setSubframeEnabled = (flag) => { subframeEnabled = !!flag; }; +const getSubframeEnabled = () => subframeEnabled; +const setExpressionsPlugin = (value) => { expressionsPlugin = value; }; +const getExpressionsPlugin = () => expressionsPlugin; +const setDefaultCurveSegments = (value) => { defaultCurveSegments = value; }; +const getDefaultCurveSegments = () => defaultCurveSegments; +const setIdPrefix = (value) => { idPrefix$1 = value; }; +const getIdPrefix = () => idPrefix$1; + +function createNS(type) { + // return {appendChild:function(){},setAttribute:function(){},style:{}} + return document.createElementNS(svgNS, type); +} + +const dataManager = (function () { + var _counterId = 1; + var processes = []; + var workerFn; + var workerInstance; + var workerProxy = { + onmessage: function () { + + }, + postMessage: function (path) { + workerFn({ + data: path, + }); + }, + }; + var _workerSelf = { + postMessage: function (data) { + workerProxy.onmessage({ + data: data, + }); + }, + }; + function createWorker(fn) { + if (window.Worker && window.Blob && getWebWorker()) { + var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' }); + // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' }); + var url = URL.createObjectURL(blob); + return new Worker(url); + } + workerFn = fn; + return workerProxy; + } + + function setupWorker() { + if (!workerInstance) { + workerInstance = createWorker(function workerStart(e) { + function dataFunctionManager() { + function completeLayers(layers, comps) { + var layerData; + var i; + var len = layers.length; + var j; + var jLen; + var k; + var kLen; + for (i = 0; i < len; i += 1) { + layerData = layers[i]; + if (('ks' in layerData) && !layerData.completed) { + layerData.completed = true; + if (layerData.tt) { + layers[i - 1].td = layerData.tt; + } + if (layerData.hasMask) { + var maskProps = layerData.masksProperties; + jLen = maskProps.length; + for (j = 0; j < jLen; j += 1) { + if (maskProps[j].pt.k.i) { + convertPathsToAbsoluteValues(maskProps[j].pt.k); + } else { + kLen = maskProps[j].pt.k.length; + for (k = 0; k < kLen; k += 1) { + if (maskProps[j].pt.k[k].s) { + convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]); + } + if (maskProps[j].pt.k[k].e) { + convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]); + } + } + } + } + } + if (layerData.ty === 0) { + layerData.layers = findCompLayers(layerData.refId, comps); + completeLayers(layerData.layers, comps); + } else if (layerData.ty === 4) { + completeShapes(layerData.shapes); + } else if (layerData.ty === 5) { + completeText(layerData); + } + } + } + } + + function completeChars(chars, assets) { + if (chars) { + var i = 0; + var len = chars.length; + for (i = 0; i < len; i += 1) { + if (chars[i].t === 1) { + // var compData = findComp(chars[i].data.refId, assets); + chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); + // chars[i].data.ip = 0; + // chars[i].data.op = 99999; + // chars[i].data.st = 0; + // chars[i].data.sr = 1; + // chars[i].w = compData.w; + // chars[i].data.ks = { + // a: { k: [0, 0, 0], a: 0 }, + // p: { k: [0, -compData.h, 0], a: 0 }, + // r: { k: 0, a: 0 }, + // s: { k: [100, 100], a: 0 }, + // o: { k: 100, a: 0 }, + // }; + completeLayers(chars[i].data.layers, assets); + } + } + } + } + + function findComp(id, comps) { + var i = 0; + var len = comps.length; + while (i < len) { + if (comps[i].id === id) { + return comps[i]; + } + i += 1; + } + return null; + } + + function findCompLayers(id, comps) { + var comp = findComp(id, comps); + if (comp) { + if (!comp.layers.__used) { + comp.layers.__used = true; + return comp.layers; + } + return JSON.parse(JSON.stringify(comp.layers)); + } + return null; + } + + function completeShapes(arr) { + var i; + var len = arr.length; + var j; + var jLen; + for (i = len - 1; i >= 0; i -= 1) { + if (arr[i].ty === 'sh') { + if (arr[i].ks.k.i) { + convertPathsToAbsoluteValues(arr[i].ks.k); + } else { + jLen = arr[i].ks.k.length; + for (j = 0; j < jLen; j += 1) { + if (arr[i].ks.k[j].s) { + convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]); + } + if (arr[i].ks.k[j].e) { + convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]); + } + } + } + } else if (arr[i].ty === 'gr') { + completeShapes(arr[i].it); + } + } + } + + function convertPathsToAbsoluteValues(path) { + var i; + var len = path.i.length; + for (i = 0; i < len; i += 1) { + path.i[i][0] += path.v[i][0]; + path.i[i][1] += path.v[i][1]; + path.o[i][0] += path.v[i][0]; + path.o[i][1] += path.v[i][1]; + } + } + + function checkVersion(minimum, animVersionString) { + var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100]; + if (minimum[0] > animVersion[0]) { + return true; + } if (animVersion[0] > minimum[0]) { + return false; + } + if (minimum[1] > animVersion[1]) { + return true; + } if (animVersion[1] > minimum[1]) { + return false; + } + if (minimum[2] > animVersion[2]) { + return true; + } if (animVersion[2] > minimum[2]) { + return false; + } + return null; + } + + var checkText = (function () { + var minimumVersion = [4, 4, 14]; + + function updateTextLayer(textLayer) { + var documentData = textLayer.t.d; + textLayer.t.d = { + k: [ + { + s: documentData, + t: 0, + }, + ], + }; + } + + function iterateLayers(layers) { + var i; + var len = layers.length; + for (i = 0; i < len; i += 1) { + if (layers[i].ty === 5) { + updateTextLayer(layers[i]); + } + } + } + + return function (animationData) { + if (checkVersion(minimumVersion, animationData.v)) { + iterateLayers(animationData.layers); + if (animationData.assets) { + var i; + var len = animationData.assets.length; + for (i = 0; i < len; i += 1) { + if (animationData.assets[i].layers) { + iterateLayers(animationData.assets[i].layers); + } + } + } + } + }; + }()); + + var checkChars = (function () { + var minimumVersion = [4, 7, 99]; + return function (animationData) { + if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) { + var i; + var len = animationData.chars.length; + for (i = 0; i < len; i += 1) { + var charData = animationData.chars[i]; + if (charData.data && charData.data.shapes) { + completeShapes(charData.data.shapes); + charData.data.ip = 0; + charData.data.op = 99999; + charData.data.st = 0; + charData.data.sr = 1; + charData.data.ks = { + p: { k: [0, 0], a: 0 }, + s: { k: [100, 100], a: 0 }, + a: { k: [0, 0], a: 0 }, + r: { k: 0, a: 0 }, + o: { k: 100, a: 0 }, + }; + if (!animationData.chars[i].t) { + charData.data.shapes.push( + { + ty: 'no', + } + ); + charData.data.shapes[0].it.push( + { + p: { k: [0, 0], a: 0 }, + s: { k: [100, 100], a: 0 }, + a: { k: [0, 0], a: 0 }, + r: { k: 0, a: 0 }, + o: { k: 100, a: 0 }, + sk: { k: 0, a: 0 }, + sa: { k: 0, a: 0 }, + ty: 'tr', + } + ); + } + } + } + } + }; + }()); + + var checkPathProperties = (function () { + var minimumVersion = [5, 7, 15]; + + function updateTextLayer(textLayer) { + var pathData = textLayer.t.p; + if (typeof pathData.a === 'number') { + pathData.a = { + a: 0, + k: pathData.a, + }; + } + if (typeof pathData.p === 'number') { + pathData.p = { + a: 0, + k: pathData.p, + }; + } + if (typeof pathData.r === 'number') { + pathData.r = { + a: 0, + k: pathData.r, + }; + } + } + + function iterateLayers(layers) { + var i; + var len = layers.length; + for (i = 0; i < len; i += 1) { + if (layers[i].ty === 5) { + updateTextLayer(layers[i]); + } + } + } + + return function (animationData) { + if (checkVersion(minimumVersion, animationData.v)) { + iterateLayers(animationData.layers); + if (animationData.assets) { + var i; + var len = animationData.assets.length; + for (i = 0; i < len; i += 1) { + if (animationData.assets[i].layers) { + iterateLayers(animationData.assets[i].layers); + } + } + } + } + }; + }()); + + var checkColors = (function () { + var minimumVersion = [4, 1, 9]; + + function iterateShapes(shapes) { + var i; + var len = shapes.length; + var j; + var jLen; + for (i = 0; i < len; i += 1) { + if (shapes[i].ty === 'gr') { + iterateShapes(shapes[i].it); + } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') { + if (shapes[i].c.k && shapes[i].c.k[0].i) { + jLen = shapes[i].c.k.length; + for (j = 0; j < jLen; j += 1) { + if (shapes[i].c.k[j].s) { + shapes[i].c.k[j].s[0] /= 255; + shapes[i].c.k[j].s[1] /= 255; + shapes[i].c.k[j].s[2] /= 255; + shapes[i].c.k[j].s[3] /= 255; + } + if (shapes[i].c.k[j].e) { + shapes[i].c.k[j].e[0] /= 255; + shapes[i].c.k[j].e[1] /= 255; + shapes[i].c.k[j].e[2] /= 255; + shapes[i].c.k[j].e[3] /= 255; + } + } + } else { + shapes[i].c.k[0] /= 255; + shapes[i].c.k[1] /= 255; + shapes[i].c.k[2] /= 255; + shapes[i].c.k[3] /= 255; + } + } + } + } + + function iterateLayers(layers) { + var i; + var len = layers.length; + for (i = 0; i < len; i += 1) { + if (layers[i].ty === 4) { + iterateShapes(layers[i].shapes); + } + } + } + + return function (animationData) { + if (checkVersion(minimumVersion, animationData.v)) { + iterateLayers(animationData.layers); + if (animationData.assets) { + var i; + var len = animationData.assets.length; + for (i = 0; i < len; i += 1) { + if (animationData.assets[i].layers) { + iterateLayers(animationData.assets[i].layers); + } + } + } + } + }; + }()); + + var checkShapes = (function () { + var minimumVersion = [4, 4, 18]; + + function completeClosingShapes(arr) { + var i; + var len = arr.length; + var j; + var jLen; + for (i = len - 1; i >= 0; i -= 1) { + if (arr[i].ty === 'sh') { + if (arr[i].ks.k.i) { + arr[i].ks.k.c = arr[i].closed; + } else { + jLen = arr[i].ks.k.length; + for (j = 0; j < jLen; j += 1) { + if (arr[i].ks.k[j].s) { + arr[i].ks.k[j].s[0].c = arr[i].closed; + } + if (arr[i].ks.k[j].e) { + arr[i].ks.k[j].e[0].c = arr[i].closed; + } + } + } + } else if (arr[i].ty === 'gr') { + completeClosingShapes(arr[i].it); + } + } + } + + function iterateLayers(layers) { + var layerData; + var i; + var len = layers.length; + var j; + var jLen; + var k; + var kLen; + for (i = 0; i < len; i += 1) { + layerData = layers[i]; + if (layerData.hasMask) { + var maskProps = layerData.masksProperties; + jLen = maskProps.length; + for (j = 0; j < jLen; j += 1) { + if (maskProps[j].pt.k.i) { + maskProps[j].pt.k.c = maskProps[j].cl; + } else { + kLen = maskProps[j].pt.k.length; + for (k = 0; k < kLen; k += 1) { + if (maskProps[j].pt.k[k].s) { + maskProps[j].pt.k[k].s[0].c = maskProps[j].cl; + } + if (maskProps[j].pt.k[k].e) { + maskProps[j].pt.k[k].e[0].c = maskProps[j].cl; + } + } + } + } + } + if (layerData.ty === 4) { + completeClosingShapes(layerData.shapes); + } + } + } + + return function (animationData) { + if (checkVersion(minimumVersion, animationData.v)) { + iterateLayers(animationData.layers); + if (animationData.assets) { + var i; + var len = animationData.assets.length; + for (i = 0; i < len; i += 1) { + if (animationData.assets[i].layers) { + iterateLayers(animationData.assets[i].layers); + } + } + } + } + }; + }()); + + function completeData(animationData) { + if (animationData.__complete) { + return; + } + checkColors(animationData); + checkText(animationData); + checkChars(animationData); + checkPathProperties(animationData); + checkShapes(animationData); + completeLayers(animationData.layers, animationData.assets); + completeChars(animationData.chars, animationData.assets); + animationData.__complete = true; + } + + function completeText(data) { + if (data.t.a.length === 0 && !('m' in data.t.p)) { + // data.singleShape = true; + } + } + + var moduleOb = {}; + moduleOb.completeData = completeData; + moduleOb.checkColors = checkColors; + moduleOb.checkChars = checkChars; + moduleOb.checkPathProperties = checkPathProperties; + moduleOb.checkShapes = checkShapes; + moduleOb.completeLayers = completeLayers; + + return moduleOb; + } + if (!_workerSelf.dataManager) { + _workerSelf.dataManager = dataFunctionManager(); + } + + if (!_workerSelf.assetLoader) { + _workerSelf.assetLoader = (function () { + function formatResponse(xhr) { + // using typeof doubles the time of execution of this method, + // so if available, it's better to use the header to validate the type + var contentTypeHeader = xhr.getResponseHeader('content-type'); + if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) { + return xhr.response; + } + if (xhr.response && typeof xhr.response === 'object') { + return xhr.response; + } if (xhr.response && typeof xhr.response === 'string') { + return JSON.parse(xhr.response); + } if (xhr.responseText) { + return JSON.parse(xhr.responseText); + } + return null; + } + + function loadAsset(path, fullPath, callback, errorCallback) { + var response; + var xhr = new XMLHttpRequest(); + // set responseType after calling open or IE will break. + try { + // This crashes on Android WebView prior to KitKat + xhr.responseType = 'json'; + } catch (err) {} // eslint-disable-line no-empty + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + response = formatResponse(xhr); + callback(response); + } else { + try { + response = formatResponse(xhr); + callback(response); + } catch (err) { + if (errorCallback) { + errorCallback(err); + } + } + } + } + }; + try { + xhr.open('GET', path, true); + } catch (error) { + xhr.open('GET', fullPath + '/' + path, true); + } + xhr.send(); + } + return { + load: loadAsset, + }; + }()); + } + + if (e.data.type === 'loadAnimation') { + _workerSelf.assetLoader.load( + e.data.path, + e.data.fullPath, + function (data) { + _workerSelf.dataManager.completeData(data); + _workerSelf.postMessage({ + id: e.data.id, + payload: data, + status: 'success', + }); + }, + function () { + _workerSelf.postMessage({ + id: e.data.id, + status: 'error', + }); + } + ); + } else if (e.data.type === 'complete') { + var animation = e.data.animation; + _workerSelf.dataManager.completeData(animation); + _workerSelf.postMessage({ + id: e.data.id, + payload: animation, + status: 'success', + }); + } else if (e.data.type === 'loadData') { + _workerSelf.assetLoader.load( + e.data.path, + e.data.fullPath, + function (data) { + _workerSelf.postMessage({ + id: e.data.id, + payload: data, + status: 'success', + }); + }, + function () { + _workerSelf.postMessage({ + id: e.data.id, + status: 'error', + }); + } + ); + } + }); + + workerInstance.onmessage = function (event) { + var data = event.data; + var id = data.id; + var process = processes[id]; + processes[id] = null; + if (data.status === 'success') { + process.onComplete(data.payload); + } else if (process.onError) { + process.onError(); + } + }; + } + } + + function createProcess(onComplete, onError) { + _counterId += 1; + var id = 'processId_' + _counterId; + processes[id] = { + onComplete: onComplete, + onError: onError, + }; + return id; + } + + function loadAnimation(path, onComplete, onError) { + setupWorker(); + var processId = createProcess(onComplete, onError); + workerInstance.postMessage({ + type: 'loadAnimation', + path: path, + fullPath: window.location.origin + window.location.pathname, + id: processId, + }); + } + + function loadData(path, onComplete, onError) { + setupWorker(); + var processId = createProcess(onComplete, onError); + workerInstance.postMessage({ + type: 'loadData', + path: path, + fullPath: window.location.origin + window.location.pathname, + id: processId, + }); + } + + function completeAnimation(anim, onComplete, onError) { + setupWorker(); + var processId = createProcess(onComplete, onError); + workerInstance.postMessage({ + type: 'complete', + animation: anim, + id: processId, + }); + } + + return { + loadAnimation: loadAnimation, + loadData: loadData, + completeAnimation: completeAnimation, + }; +}()); + +const ImagePreloader = (function () { + var proxyImage = (function () { + var canvas = createTag('canvas'); + canvas.width = 1; + canvas.height = 1; + var ctx = canvas.getContext('2d'); + ctx.fillStyle = 'rgba(0,0,0,0)'; + ctx.fillRect(0, 0, 1, 1); + return canvas; + }()); + + function imageLoaded() { + this.loadedAssets += 1; + if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { + if (this.imagesLoadedCb) { + this.imagesLoadedCb(null); + } + } + } + function footageLoaded() { + this.loadedFootagesCount += 1; + if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { + if (this.imagesLoadedCb) { + this.imagesLoadedCb(null); + } + } + } + + function getAssetsPath(assetData, assetsPath, originalPath) { + var path = ''; + if (assetData.e) { + path = assetData.p; + } else if (assetsPath) { + var imagePath = assetData.p; + if (imagePath.indexOf('images/') !== -1) { + imagePath = imagePath.split('/')[1]; + } + path = assetsPath + imagePath; + } else { + path = originalPath; + path += assetData.u ? assetData.u : ''; + path += assetData.p; + } + return path; + } + + function testImageLoaded(img) { + var _count = 0; + var intervalId = setInterval(function () { + var box = img.getBBox(); + if (box.width || _count > 500) { + this._imageLoaded(); + clearInterval(intervalId); + } + _count += 1; + }.bind(this), 50); + } + + function createImageData(assetData) { + var path = getAssetsPath(assetData, this.assetsPath, this.path); + var img = createNS('image'); + if (isSafari) { + this.testImageLoaded(img); + } else { + img.addEventListener('load', this._imageLoaded, false); + } + img.addEventListener('error', function () { + ob.img = proxyImage; + this._imageLoaded(); + }.bind(this), false); + img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path); + if (this._elementHelper.append) { + this._elementHelper.append(img); + } else { + this._elementHelper.appendChild(img); + } + var ob = { + img: img, + assetData: assetData, + }; + return ob; + } + + function createImgData(assetData) { + var path = getAssetsPath(assetData, this.assetsPath, this.path); + var img = createTag('img'); + img.crossOrigin = 'anonymous'; + img.addEventListener('load', this._imageLoaded, false); + img.addEventListener('error', function () { + ob.img = proxyImage; + this._imageLoaded(); + }.bind(this), false); + img.src = path; + var ob = { + img: img, + assetData: assetData, + }; + return ob; + } + + function createFootageData(data) { + var ob = { + assetData: data, + }; + var path = getAssetsPath(data, this.assetsPath, this.path); + dataManager.loadData(path, function (footageData) { + ob.img = footageData; + this._footageLoaded(); + }.bind(this), function () { + ob.img = {}; + this._footageLoaded(); + }.bind(this)); + return ob; + } + + function loadAssets(assets, cb) { + this.imagesLoadedCb = cb; + var i; + var len = assets.length; + for (i = 0; i < len; i += 1) { + if (!assets[i].layers) { + if (!assets[i].t || assets[i].t === 'seq') { + this.totalImages += 1; + this.images.push(this._createImageData(assets[i])); + } else if (assets[i].t === 3) { + this.totalFootages += 1; + this.images.push(this.createFootageData(assets[i])); + } + } + } + } + + function setPath(path) { + this.path = path || ''; + } + + function setAssetsPath(path) { + this.assetsPath = path || ''; + } + + function getAsset(assetData) { + var i = 0; + var len = this.images.length; + while (i < len) { + if (this.images[i].assetData === assetData) { + return this.images[i].img; + } + i += 1; + } + return null; + } + + function destroy() { + this.imagesLoadedCb = null; + this.images.length = 0; + } + + function loadedImages() { + return this.totalImages === this.loadedAssets; + } + + function loadedFootages() { + return this.totalFootages === this.loadedFootagesCount; + } + + function setCacheType(type, elementHelper) { + if (type === 'svg') { + this._elementHelper = elementHelper; + this._createImageData = this.createImageData.bind(this); + } else { + this._createImageData = this.createImgData.bind(this); + } + } + + function ImagePreloaderFactory() { + this._imageLoaded = imageLoaded.bind(this); + this._footageLoaded = footageLoaded.bind(this); + this.testImageLoaded = testImageLoaded.bind(this); + this.createFootageData = createFootageData.bind(this); + this.assetsPath = ''; + this.path = ''; + this.totalImages = 0; + this.totalFootages = 0; + this.loadedAssets = 0; + this.loadedFootagesCount = 0; + this.imagesLoadedCb = null; + this.images = []; + } + + ImagePreloaderFactory.prototype = { + loadAssets: loadAssets, + setAssetsPath: setAssetsPath, + setPath: setPath, + loadedImages: loadedImages, + loadedFootages: loadedFootages, + destroy: destroy, + getAsset: getAsset, + createImgData: createImgData, + createImageData: createImageData, + imageLoaded: imageLoaded, + footageLoaded: footageLoaded, + setCacheType: setCacheType, + }; + + return ImagePreloaderFactory; +}()); + +function BaseEvent() {} +BaseEvent.prototype = { + triggerEvent: function (eventName, args) { + if (this._cbs[eventName]) { + var callbacks = this._cbs[eventName]; + for (var i = 0; i < callbacks.length; i += 1) { + callbacks[i](args); + } + } + }, + addEventListener: function (eventName, callback) { + if (!this._cbs[eventName]) { + this._cbs[eventName] = []; + } + this._cbs[eventName].push(callback); + + return function () { + this.removeEventListener(eventName, callback); + }.bind(this); + }, + removeEventListener: function (eventName, callback) { + if (!callback) { + this._cbs[eventName] = null; + } else if (this._cbs[eventName]) { + var i = 0; + var len = this._cbs[eventName].length; + while (i < len) { + if (this._cbs[eventName][i] === callback) { + this._cbs[eventName].splice(i, 1); + i -= 1; + len -= 1; + } + i += 1; + } + if (!this._cbs[eventName].length) { + this._cbs[eventName] = null; + } + } + }, +}; + +const markerParser = ( + + function () { + function parsePayloadLines(payload) { + var lines = payload.split('\r\n'); + var keys = {}; + var line; + var keysCount = 0; + for (var i = 0; i < lines.length; i += 1) { + line = lines[i].split(':'); + if (line.length === 2) { + keys[line[0]] = line[1].trim(); + keysCount += 1; + } + } + if (keysCount === 0) { + throw new Error(); + } + return keys; + } + + return function (_markers) { + var markers = []; + for (var i = 0; i < _markers.length; i += 1) { + var _marker = _markers[i]; + var markerData = { + time: _marker.tm, + duration: _marker.dr, + }; + try { + markerData.payload = JSON.parse(_markers[i].cm); + } catch (_) { + try { + markerData.payload = parsePayloadLines(_markers[i].cm); + } catch (__) { + markerData.payload = { + name: _markers[i].cm, + }; + } + } + markers.push(markerData); + } + return markers; + }; + }()); + +const ProjectInterface = (function () { + function registerComposition(comp) { + this.compositions.push(comp); + } + + return function () { + function _thisProjectFunction(name) { + var i = 0; + var len = this.compositions.length; + while (i < len) { + if (this.compositions[i].data && this.compositions[i].data.nm === name) { + if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) { + this.compositions[i].prepareFrame(this.currentFrame); + } + return this.compositions[i].compInterface; + } + i += 1; + } + return null; + } + + _thisProjectFunction.compositions = []; + _thisProjectFunction.currentFrame = 0; + + _thisProjectFunction.registerComposition = registerComposition; + + return _thisProjectFunction; + }; +}()); + +const renderers = {}; + +const registerRenderer = (key, value) => { + renderers[key] = value; +}; + +function getRenderer(key) { + return renderers[key]; +} + +const AnimationItem = function () { + this._cbs = []; + this.name = ''; + this.path = ''; + this.isLoaded = false; + this.currentFrame = 0; + this.currentRawFrame = 0; + this.firstFrame = 0; + this.totalFrames = 0; + this.frameRate = 0; + this.frameMult = 0; + this.playSpeed = 1; + this.playDirection = 1; + this.playCount = 0; + this.animationData = {}; + this.assets = []; + this.isPaused = true; + this.autoplay = false; + this.loop = true; + this.renderer = null; + this.animationID = createElementID(); + this.assetsPath = ''; + this.timeCompleted = 0; + this.segmentPos = 0; + this.isSubframeEnabled = getSubframeEnabled(); + this.segments = []; + this._idle = true; + this._completedLoop = false; + this.projectInterface = ProjectInterface(); + this.imagePreloader = new ImagePreloader(); + this.audioController = audioControllerFactory(); + this.markers = []; + this.configAnimation = this.configAnimation.bind(this); + this.onSetupError = this.onSetupError.bind(this); + this.onSegmentComplete = this.onSegmentComplete.bind(this); + this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0); +}; + +extendPrototype([BaseEvent], AnimationItem); + +AnimationItem.prototype.setParams = function (params) { + if (params.wrapper || params.container) { + this.wrapper = params.wrapper || params.container; + } + var animType = 'svg'; + if (params.animType) { + animType = params.animType; + } else if (params.renderer) { + animType = params.renderer; + } + const RendererClass = getRenderer(animType); + this.renderer = new RendererClass(this, params.rendererSettings); + this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs); + this.renderer.setProjectInterface(this.projectInterface); + this.animType = animType; + if (params.loop === '' + || params.loop === null + || params.loop === undefined + || params.loop === true) { + this.loop = true; + } else if (params.loop === false) { + this.loop = false; + } else { + this.loop = parseInt(params.loop, 10); + } + this.autoplay = 'autoplay' in params ? params.autoplay : true; + this.name = params.name ? params.name : ''; + this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true; + this.assetsPath = params.assetsPath; + this.initialSegment = params.initialSegment; + if (params.audioFactory) { + this.audioController.setAudioFactory(params.audioFactory); + } + if (params.animationData) { + this.setupAnimation(params.animationData); + } else if (params.path) { + if (params.path.lastIndexOf('\\') !== -1) { + this.path = params.path.substr(0, params.path.lastIndexOf('\\') + 1); + } else { + this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1); + } + this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1); + this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json')); + dataManager.loadAnimation( + params.path, + this.configAnimation, + this.onSetupError + ); + } +}; + +AnimationItem.prototype.onSetupError = function () { + this.trigger('data_failed'); +}; + +AnimationItem.prototype.setupAnimation = function (data) { + dataManager.completeAnimation( + data, + this.configAnimation + ); +}; + +AnimationItem.prototype.setData = function (wrapper, animationData) { + if (animationData) { + if (typeof animationData !== 'object') { + animationData = JSON.parse(animationData); + } + } + var params = { + wrapper: wrapper, + animationData: animationData, + }; + var wrapperAttributes = wrapper.attributes; + + params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-animation-path').value + : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-bm-path').value + : wrapperAttributes.getNamedItem('bm-path') + ? wrapperAttributes.getNamedItem('bm-path').value + : ''; + params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-anim-type').value + : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-bm-type').value + : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('bm-type').value + : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-bm-renderer').value + : wrapperAttributes.getNamedItem('bm-renderer') + ? wrapperAttributes.getNamedItem('bm-renderer').value + : 'canvas'; + + var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-anim-loop').value + : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-bm-loop').value + : wrapperAttributes.getNamedItem('bm-loop') + ? wrapperAttributes.getNamedItem('bm-loop').value + : ''; + if (loop === 'false') { + params.loop = false; + } else if (loop === 'true') { + params.loop = true; + } else if (loop !== '') { + params.loop = parseInt(loop, 10); + } + var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-anim-autoplay').value + : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-bm-autoplay').value + : wrapperAttributes.getNamedItem('bm-autoplay') + ? wrapperAttributes.getNamedItem('bm-autoplay').value + : true; + params.autoplay = autoplay !== 'false'; + + params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-name').value + : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-bm-name').value + : wrapperAttributes.getNamedItem('bm-name') + ? wrapperAttributes.getNamedItem('bm-name').value + : ''; + var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-anim-prerender').value + : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary + ? wrapperAttributes.getNamedItem('data-bm-prerender').value + : wrapperAttributes.getNamedItem('bm-prerender') + ? wrapperAttributes.getNamedItem('bm-prerender').value + : ''; + + if (prerender === 'false') { + params.prerender = false; + } + this.setParams(params); +}; + +AnimationItem.prototype.includeLayers = function (data) { + if (data.op > this.animationData.op) { + this.animationData.op = data.op; + this.totalFrames = Math.floor(data.op - this.animationData.ip); + } + var layers = this.animationData.layers; + var i; + var len = layers.length; + var newLayers = data.layers; + var j; + var jLen = newLayers.length; + for (j = 0; j < jLen; j += 1) { + i = 0; + while (i < len) { + if (layers[i].id === newLayers[j].id) { + layers[i] = newLayers[j]; + break; + } + i += 1; + } + } + if (data.chars || data.fonts) { + this.renderer.globalData.fontManager.addChars(data.chars); + this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs); + } + if (data.assets) { + len = data.assets.length; + for (i = 0; i < len; i += 1) { + this.animationData.assets.push(data.assets[i]); + } + } + this.animationData.__complete = false; + dataManager.completeAnimation( + this.animationData, + this.onSegmentComplete + ); +}; + +AnimationItem.prototype.onSegmentComplete = function (data) { + this.animationData = data; + var expressionsPlugin = getExpressionsPlugin(); + if (expressionsPlugin) { + expressionsPlugin.initExpressions(this); + } + this.loadNextSegment(); +}; + +AnimationItem.prototype.loadNextSegment = function () { + var segments = this.animationData.segments; + if (!segments || segments.length === 0 || !this.autoloadSegments) { + this.trigger('data_ready'); + this.timeCompleted = this.totalFrames; + return; + } + var segment = segments.shift(); + this.timeCompleted = segment.time * this.frameRate; + var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json'; + this.segmentPos += 1; + dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () { + this.trigger('data_failed'); + }.bind(this)); +}; + +AnimationItem.prototype.loadSegments = function () { + var segments = this.animationData.segments; + if (!segments) { + this.timeCompleted = this.totalFrames; + } + this.loadNextSegment(); +}; + +AnimationItem.prototype.imagesLoaded = function () { + this.trigger('loaded_images'); + this.checkLoaded(); +}; + +AnimationItem.prototype.preloadImages = function () { + this.imagePreloader.setAssetsPath(this.assetsPath); + this.imagePreloader.setPath(this.path); + this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this)); +}; + +AnimationItem.prototype.configAnimation = function (animData) { + if (!this.renderer) { + return; + } + try { + this.animationData = animData; + if (this.initialSegment) { + this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]); + this.firstFrame = Math.round(this.initialSegment[0]); + } else { + this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip); + this.firstFrame = Math.round(this.animationData.ip); + } + this.renderer.configAnimation(animData); + if (!animData.assets) { + animData.assets = []; + } + + this.assets = this.animationData.assets; + this.frameRate = this.animationData.fr; + this.frameMult = this.animationData.fr / 1000; + this.renderer.searchExtraCompositions(animData.assets); + this.markers = markerParser(animData.markers || []); + this.trigger('config_ready'); + this.preloadImages(); + this.loadSegments(); + this.updaFrameModifier(); + this.waitForFontsLoaded(); + if (this.isPaused) { + this.audioController.pause(); + } + } catch (error) { + this.triggerConfigError(error); + } +}; + +AnimationItem.prototype.waitForFontsLoaded = function () { + if (!this.renderer) { + return; + } + if (this.renderer.globalData.fontManager.isLoaded) { + this.checkLoaded(); + } else { + setTimeout(this.waitForFontsLoaded.bind(this), 20); + } +}; + +AnimationItem.prototype.checkLoaded = function () { + if (!this.isLoaded + && this.renderer.globalData.fontManager.isLoaded + && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') + && (this.imagePreloader.loadedFootages()) + ) { + this.isLoaded = true; + var expressionsPlugin = getExpressionsPlugin(); + if (expressionsPlugin) { + expressionsPlugin.initExpressions(this); + } + this.renderer.initItems(); + setTimeout(function () { + this.trigger('DOMLoaded'); + }.bind(this), 0); + this.gotoFrame(); + if (this.autoplay) { + this.play(); + } + } +}; + +AnimationItem.prototype.resize = function () { + this.renderer.updateContainerSize(); +}; + +AnimationItem.prototype.setSubframe = function (flag) { + this.isSubframeEnabled = !!flag; +}; + +AnimationItem.prototype.gotoFrame = function () { + this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise + + if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) { + this.currentFrame = this.timeCompleted; + } + this.trigger('enterFrame'); + this.renderFrame(); + this.trigger('drawnFrame'); +}; + +AnimationItem.prototype.renderFrame = function () { + if (this.isLoaded === false || !this.renderer) { + return; + } + try { + this.renderer.renderFrame(this.currentFrame + this.firstFrame); + } catch (error) { + this.triggerRenderFrameError(error); + } +}; + +AnimationItem.prototype.play = function (name) { + if (name && this.name !== name) { + return; + } + if (this.isPaused === true) { + this.isPaused = false; + this.trigger('_pause'); + this.audioController.resume(); + if (this._idle) { + this._idle = false; + this.trigger('_active'); + } + } +}; + +AnimationItem.prototype.pause = function (name) { + if (name && this.name !== name) { + return; + } + if (this.isPaused === false) { + this.isPaused = true; + this.trigger('_play'); + this._idle = true; + this.trigger('_idle'); + this.audioController.pause(); + } +}; + +AnimationItem.prototype.togglePause = function (name) { + if (name && this.name !== name) { + return; + } + if (this.isPaused === true) { + this.play(); + } else { + this.pause(); + } +}; + +AnimationItem.prototype.stop = function (name) { + if (name && this.name !== name) { + return; + } + this.pause(); + this.playCount = 0; + this._completedLoop = false; + this.setCurrentRawFrameValue(0); +}; + +AnimationItem.prototype.getMarkerData = function (markerName) { + var marker; + for (var i = 0; i < this.markers.length; i += 1) { + marker = this.markers[i]; + if (marker.payload && marker.payload.name === markerName) { + return marker; + } + } + return null; +}; + +AnimationItem.prototype.goToAndStop = function (value, isFrame, name) { + if (name && this.name !== name) { + return; + } + var numValue = Number(value); + if (isNaN(numValue)) { + var marker = this.getMarkerData(value); + if (marker) { + this.goToAndStop(marker.time, true); + } + } else if (isFrame) { + this.setCurrentRawFrameValue(value); + } else { + this.setCurrentRawFrameValue(value * this.frameModifier); + } + this.pause(); +}; + +AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) { + if (name && this.name !== name) { + return; + } + var numValue = Number(value); + if (isNaN(numValue)) { + var marker = this.getMarkerData(value); + if (marker) { + if (!marker.duration) { + this.goToAndStop(marker.time, true); + } else { + this.playSegments([marker.time, marker.time + marker.duration], true); + } + } + } else { + this.goToAndStop(numValue, isFrame, name); + } + this.play(); +}; + +AnimationItem.prototype.advanceTime = function (value) { + if (this.isPaused === true || this.isLoaded === false) { + return; + } + var nextValue = this.currentRawFrame + value * this.frameModifier; + var _isComplete = false; + // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations. + // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop. + if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) { + if (!this.loop || this.playCount === this.loop) { + if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) { + _isComplete = true; + nextValue = this.totalFrames - 1; + } + } else if (nextValue >= this.totalFrames) { + this.playCount += 1; + if (!this.checkSegments(nextValue % this.totalFrames)) { + this.setCurrentRawFrameValue(nextValue % this.totalFrames); + this._completedLoop = true; + this.trigger('loopComplete'); + } + } else { + this.setCurrentRawFrameValue(nextValue); + } + } else if (nextValue < 0) { + if (!this.checkSegments(nextValue % this.totalFrames)) { + if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus + this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames)); + if (!this._completedLoop) { + this._completedLoop = true; + } else { + this.trigger('loopComplete'); + } + } else { + _isComplete = true; + nextValue = 0; + } + } + } else { + this.setCurrentRawFrameValue(nextValue); + } + if (_isComplete) { + this.setCurrentRawFrameValue(nextValue); + this.pause(); + this.trigger('complete'); + } +}; + +AnimationItem.prototype.adjustSegment = function (arr, offset) { + this.playCount = 0; + if (arr[1] < arr[0]) { + if (this.frameModifier > 0) { + if (this.playSpeed < 0) { + this.setSpeed(-this.playSpeed); + } else { + this.setDirection(-1); + } + } + this.totalFrames = arr[0] - arr[1]; + this.timeCompleted = this.totalFrames; + this.firstFrame = arr[1]; + this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset); + } else if (arr[1] > arr[0]) { + if (this.frameModifier < 0) { + if (this.playSpeed < 0) { + this.setSpeed(-this.playSpeed); + } else { + this.setDirection(1); + } + } + this.totalFrames = arr[1] - arr[0]; + this.timeCompleted = this.totalFrames; + this.firstFrame = arr[0]; + this.setCurrentRawFrameValue(0.001 + offset); + } + this.trigger('segmentStart'); +}; +AnimationItem.prototype.setSegment = function (init, end) { + var pendingFrame = -1; + if (this.isPaused) { + if (this.currentRawFrame + this.firstFrame < init) { + pendingFrame = init; + } else if (this.currentRawFrame + this.firstFrame > end) { + pendingFrame = end - init; + } + } + + this.firstFrame = init; + this.totalFrames = end - init; + this.timeCompleted = this.totalFrames; + if (pendingFrame !== -1) { + this.goToAndStop(pendingFrame, true); + } +}; + +AnimationItem.prototype.playSegments = function (arr, forceFlag) { + if (forceFlag) { + this.segments.length = 0; + } + if (typeof arr[0] === 'object') { + var i; + var len = arr.length; + for (i = 0; i < len; i += 1) { + this.segments.push(arr[i]); + } + } else { + this.segments.push(arr); + } + if (this.segments.length && forceFlag) { + this.adjustSegment(this.segments.shift(), 0); + } + if (this.isPaused) { + this.play(); + } +}; + +AnimationItem.prototype.resetSegments = function (forceFlag) { + this.segments.length = 0; + this.segments.push([this.animationData.ip, this.animationData.op]); + if (forceFlag) { + this.checkSegments(0); + } +}; +AnimationItem.prototype.checkSegments = function (offset) { + if (this.segments.length) { + this.adjustSegment(this.segments.shift(), offset); + return true; + } + return false; +}; + +AnimationItem.prototype.destroy = function (name) { + if ((name && this.name !== name) || !this.renderer) { + return; + } + this.renderer.destroy(); + this.imagePreloader.destroy(); + this.trigger('destroy'); + this._cbs = null; + this.onEnterFrame = null; + this.onLoopComplete = null; + this.onComplete = null; + this.onSegmentStart = null; + this.onDestroy = null; + this.renderer = null; + this.renderer = null; + this.imagePreloader = null; + this.projectInterface = null; +}; + +AnimationItem.prototype.setCurrentRawFrameValue = function (value) { + this.currentRawFrame = value; + this.gotoFrame(); +}; + +AnimationItem.prototype.setSpeed = function (val) { + this.playSpeed = val; + this.updaFrameModifier(); +}; + +AnimationItem.prototype.setDirection = function (val) { + this.playDirection = val < 0 ? -1 : 1; + this.updaFrameModifier(); +}; + +AnimationItem.prototype.setVolume = function (val, name) { + if (name && this.name !== name) { + return; + } + this.audioController.setVolume(val); +}; + +AnimationItem.prototype.getVolume = function () { + return this.audioController.getVolume(); +}; + +AnimationItem.prototype.mute = function (name) { + if (name && this.name !== name) { + return; + } + this.audioController.mute(); +}; + +AnimationItem.prototype.unmute = function (name) { + if (name && this.name !== name) { + return; + } + this.audioController.unmute(); +}; + +AnimationItem.prototype.updaFrameModifier = function () { + this.frameModifier = this.frameMult * this.playSpeed * this.playDirection; + this.audioController.setRate(this.playSpeed * this.playDirection); +}; + +AnimationItem.prototype.getPath = function () { + return this.path; +}; + +AnimationItem.prototype.getAssetsPath = function (assetData) { + var path = ''; + if (assetData.e) { + path = assetData.p; + } else if (this.assetsPath) { + var imagePath = assetData.p; + if (imagePath.indexOf('images/') !== -1) { + imagePath = imagePath.split('/')[1]; + } + path = this.assetsPath + imagePath; + } else { + path = this.path; + path += assetData.u ? assetData.u : ''; + path += assetData.p; + } + return path; +}; + +AnimationItem.prototype.getAssetData = function (id) { + var i = 0; + var len = this.assets.length; + while (i < len) { + if (id === this.assets[i].id) { + return this.assets[i]; + } + i += 1; + } + return null; +}; + +AnimationItem.prototype.hide = function () { + this.renderer.hide(); +}; + +AnimationItem.prototype.show = function () { + this.renderer.show(); +}; + +AnimationItem.prototype.getDuration = function (isFrame) { + return isFrame ? this.totalFrames : this.totalFrames / this.frameRate; +}; + +AnimationItem.prototype.updateDocumentData = function (path, documentData, index) { + try { + var element = this.renderer.getElementByPath(path); + element.updateDocumentData(documentData, index); + } catch (error) { + // TODO: decide how to handle catch case + } +}; + +AnimationItem.prototype.trigger = function (name) { + if (this._cbs && this._cbs[name]) { + switch (name) { + case 'enterFrame': + this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier)); + break; + case 'drawnFrame': + this.drawnFrameEvent.currentTime = this.currentFrame; + this.drawnFrameEvent.totalTime = this.totalFrames; + this.drawnFrameEvent.direction = this.frameModifier; + this.triggerEvent(name, this.drawnFrameEvent); + break; + case 'loopComplete': + this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult)); + break; + case 'complete': + this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult)); + break; + case 'segmentStart': + this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames)); + break; + case 'destroy': + this.triggerEvent(name, new BMDestroyEvent(name, this)); + break; + default: + this.triggerEvent(name); + } + } + if (name === 'enterFrame' && this.onEnterFrame) { + this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult)); + } + if (name === 'loopComplete' && this.onLoopComplete) { + this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult)); + } + if (name === 'complete' && this.onComplete) { + this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult)); + } + if (name === 'segmentStart' && this.onSegmentStart) { + this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames)); + } + if (name === 'destroy' && this.onDestroy) { + this.onDestroy.call(this, new BMDestroyEvent(name, this)); + } +}; + +AnimationItem.prototype.triggerRenderFrameError = function (nativeError) { + var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame); + this.triggerEvent('error', error); + + if (this.onError) { + this.onError.call(this, error); + } +}; + +AnimationItem.prototype.triggerConfigError = function (nativeError) { + var error = new BMConfigErrorEvent(nativeError, this.currentFrame); + this.triggerEvent('error', error); + + if (this.onError) { + this.onError.call(this, error); + } +}; + +const animationManager = (function () { + var moduleOb = {}; + var registeredAnimations = []; + var initTime = 0; + var len = 0; + var playingAnimationsNum = 0; + var _stopped = true; + var _isFrozen = false; + + function removeElement(ev) { + var i = 0; + var animItem = ev.target; + while (i < len) { + if (registeredAnimations[i].animation === animItem) { + registeredAnimations.splice(i, 1); + i -= 1; + len -= 1; + if (!animItem.isPaused) { + subtractPlayingCount(); + } + } + i += 1; + } + } + + function registerAnimation(element, animationData) { + if (!element) { + return null; + } + var i = 0; + while (i < len) { + if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) { + return registeredAnimations[i].animation; + } + i += 1; + } + var animItem = new AnimationItem(); + setupAnimation(animItem, element); + animItem.setData(element, animationData); + return animItem; + } + + function getRegisteredAnimations() { + var i; + var lenAnims = registeredAnimations.length; + var animations = []; + for (i = 0; i < lenAnims; i += 1) { + animations.push(registeredAnimations[i].animation); + } + return animations; + } + + function addPlayingCount() { + playingAnimationsNum += 1; + activate(); + } + + function subtractPlayingCount() { + playingAnimationsNum -= 1; + } + + function setupAnimation(animItem, element) { + animItem.addEventListener('destroy', removeElement); + animItem.addEventListener('_active', addPlayingCount); + animItem.addEventListener('_idle', subtractPlayingCount); + registeredAnimations.push({ elem: element, animation: animItem }); + len += 1; + } + + function loadAnimation(params) { + var animItem = new AnimationItem(); + setupAnimation(animItem, null); + animItem.setParams(params); + return animItem; + } + + function setSpeed(val, animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.setSpeed(val, animation); + } + } + + function setDirection(val, animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.setDirection(val, animation); + } + } + + function play(animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.play(animation); + } + } + function resume(nowTime) { + var elapsedTime = nowTime - initTime; + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.advanceTime(elapsedTime); + } + initTime = nowTime; + if (playingAnimationsNum && !_isFrozen) { + window.requestAnimationFrame(resume); + } else { + _stopped = true; + } + } + + function first(nowTime) { + initTime = nowTime; + window.requestAnimationFrame(resume); + } + + function pause(animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.pause(animation); + } + } + + function goToAndStop(value, isFrame, animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.goToAndStop(value, isFrame, animation); + } + } + + function stop(animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.stop(animation); + } + } + + function togglePause(animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.togglePause(animation); + } + } + + function destroy(animation) { + var i; + for (i = (len - 1); i >= 0; i -= 1) { + registeredAnimations[i].animation.destroy(animation); + } + } + + function searchAnimations(animationData, standalone, renderer) { + var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), + [].slice.call(document.getElementsByClassName('bodymovin'))); + var i; + var lenAnims = animElements.length; + for (i = 0; i < lenAnims; i += 1) { + if (renderer) { + animElements[i].setAttribute('data-bm-type', renderer); + } + registerAnimation(animElements[i], animationData); + } + if (standalone && lenAnims === 0) { + if (!renderer) { + renderer = 'svg'; + } + var body = document.getElementsByTagName('body')[0]; + body.innerText = ''; + var div = createTag('div'); + div.style.width = '100%'; + div.style.height = '100%'; + div.setAttribute('data-bm-type', renderer); + body.appendChild(div); + registerAnimation(div, animationData); + } + } + + function resize() { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.resize(); + } + } + + function activate() { + if (!_isFrozen && playingAnimationsNum) { + if (_stopped) { + window.requestAnimationFrame(first); + _stopped = false; + } + } + } + + function freeze() { + _isFrozen = true; + } + + function unfreeze() { + _isFrozen = false; + activate(); + } + + function setVolume(val, animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.setVolume(val, animation); + } + } + + function mute(animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.mute(animation); + } + } + + function unmute(animation) { + var i; + for (i = 0; i < len; i += 1) { + registeredAnimations[i].animation.unmute(animation); + } + } + + moduleOb.registerAnimation = registerAnimation; + moduleOb.loadAnimation = loadAnimation; + moduleOb.setSpeed = setSpeed; + moduleOb.setDirection = setDirection; + moduleOb.play = play; + moduleOb.pause = pause; + moduleOb.stop = stop; + moduleOb.togglePause = togglePause; + moduleOb.searchAnimations = searchAnimations; + moduleOb.resize = resize; + // moduleOb.start = start; + moduleOb.goToAndStop = goToAndStop; + moduleOb.destroy = destroy; + moduleOb.freeze = freeze; + moduleOb.unfreeze = unfreeze; + moduleOb.setVolume = setVolume; + moduleOb.mute = mute; + moduleOb.unmute = unmute; + moduleOb.getRegisteredAnimations = getRegisteredAnimations; + return moduleOb; +}()); + +/* eslint-disable */ +const BezierFactory = (function () { + /** + * BezierEasing - use bezier curve for transition easing function + * by Gaëtan Renaudeau 2014 - 2015 – MIT License + * + * Credits: is based on Firefox's nsSMILKeySpline.cpp + * Usage: + * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ]) + * spline.get(x) => returns the easing value | x must be in [0, 1] range + * + */ + + var ob = {}; + ob.getBezierEasing = getBezierEasing; + var beziers = {}; + + function getBezierEasing(a, b, c, d, nm) { + var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\./g, 'p'); + if (beziers[str]) { + return beziers[str]; + } + var bezEasing = new BezierEasing([a, b, c, d]); + beziers[str] = bezEasing; + return bezEasing; + } + + // These values are established by empiricism with tests (tradeoff: performance VS precision) + var NEWTON_ITERATIONS = 4; + var NEWTON_MIN_SLOPE = 0.001; + var SUBDIVISION_PRECISION = 0.0000001; + var SUBDIVISION_MAX_ITERATIONS = 10; + + var kSplineTableSize = 11; + var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); + + var float32ArraySupported = typeof Float32Array === 'function'; + + function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } + function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } + function C(aA1) { return 3.0 * aA1; } + + // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. + function calcBezier(aT, aA1, aA2) { + return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; + } + + // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. + function getSlope(aT, aA1, aA2) { + return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); + } + + function binarySubdivide(aX, aA, aB, mX1, mX2) { + var currentX, + currentT, + i = 0; + do { + currentT = aA + (aB - aA) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - aX; + if (currentX > 0.0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + return currentT; + } + + function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { + for (var i = 0; i < NEWTON_ITERATIONS; ++i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + if (currentSlope === 0.0) return aGuessT; + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + } + + /** + * points is an array of [ mX1, mY1, mX2, mY2 ] + */ + function BezierEasing(points) { + this._p = points; + this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + this._precomputed = false; + + this.get = this.get.bind(this); + } + + BezierEasing.prototype = { + + get: function (x) { + var mX1 = this._p[0], + mY1 = this._p[1], + mX2 = this._p[2], + mY2 = this._p[3]; + if (!this._precomputed) this._precompute(); + if (mX1 === mY1 && mX2 === mY2) return x; // linear + // Because JavaScript number are imprecise, we should guarantee the extremes are right. + if (x === 0) return 0; + if (x === 1) return 1; + return calcBezier(this._getTForX(x), mY1, mY2); + }, + + // Private part + + _precompute: function () { + var mX1 = this._p[0], + mY1 = this._p[1], + mX2 = this._p[2], + mY2 = this._p[3]; + this._precomputed = true; + if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); } + }, + + _calcSampleValues: function () { + var mX1 = this._p[0], + mX2 = this._p[2]; + for (var i = 0; i < kSplineTableSize; ++i) { + this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); + } + }, + + /** + * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection. + */ + _getTForX: function (aX) { + var mX1 = this._p[0], + mX2 = this._p[2], + mSampleValues = this._mSampleValues; + + var intervalStart = 0.0; + var currentSample = 1; + var lastSample = kSplineTableSize - 1; + + for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + --currentSample; + + // Interpolate to provide an initial guess for t + var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]); + var guessForT = intervalStart + dist * kSampleStepSize; + + var initialSlope = getSlope(guessForT, mX1, mX2); + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT, mX1, mX2); + } if (initialSlope === 0.0) { + return guessForT; + } + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); + }, + }; + + return ob; +}()); + +const pooling = (function () { + function double(arr) { + return arr.concat(createSizedArray(arr.length)); + } + + return { + double: double, + }; +}()); + +const poolFactory = (function () { + return function (initialLength, _create, _release) { + var _length = 0; + var _maxLength = initialLength; + var pool = createSizedArray(_maxLength); + + var ob = { + newElement: newElement, + release: release, + }; + + function newElement() { + var element; + if (_length) { + _length -= 1; + element = pool[_length]; + } else { + element = _create(); + } + return element; + } + + function release(element) { + if (_length === _maxLength) { + pool = pooling.double(pool); + _maxLength *= 2; + } + if (_release) { + _release(element); + } + pool[_length] = element; + _length += 1; + } + + return ob; + }; +}()); + +const bezierLengthPool = (function () { + function create() { + return { + addedLength: 0, + percents: createTypedArray('float32', getDefaultCurveSegments()), + lengths: createTypedArray('float32', getDefaultCurveSegments()), + }; + } + return poolFactory(8, create); +}()); + +const segmentsLengthPool = (function () { + function create() { + return { + lengths: [], + totalLength: 0, + }; + } + + function release(element) { + var i; + var len = element.lengths.length; + for (i = 0; i < len; i += 1) { + bezierLengthPool.release(element.lengths[i]); + } + element.lengths.length = 0; + } + + return poolFactory(8, create, release); +}()); + +function bezFunction() { + var math = Math; + + function pointOnLine2D(x1, y1, x2, y2, x3, y3) { + var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1); + return det1 > -0.001 && det1 < 0.001; + } + + function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) { + if (z1 === 0 && z2 === 0 && z3 === 0) { + return pointOnLine2D(x1, y1, x2, y2, x3, y3); + } + var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2)); + var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2)); + var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2)); + var diffDist; + if (dist1 > dist2) { + if (dist1 > dist3) { + diffDist = dist1 - dist2 - dist3; + } else { + diffDist = dist3 - dist2 - dist1; + } + } else if (dist3 > dist2) { + diffDist = dist3 - dist2 - dist1; + } else { + diffDist = dist2 - dist1 - dist3; + } + return diffDist > -0.0001 && diffDist < 0.0001; + } + + var getBezierLength = (function () { + return function (pt1, pt2, pt3, pt4) { + var curveSegments = getDefaultCurveSegments(); + var k; + var i; + var len; + var ptCoord; + var perc; + var addedLength = 0; + var ptDistance; + var point = []; + var lastPoint = []; + var lengthData = bezierLengthPool.newElement(); + len = pt3.length; + for (k = 0; k < curveSegments; k += 1) { + perc = k / (curveSegments - 1); + ptDistance = 0; + for (i = 0; i < len; i += 1) { + ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i]; + point[i] = ptCoord; + if (lastPoint[i] !== null) { + ptDistance += bmPow(point[i] - lastPoint[i], 2); + } + lastPoint[i] = point[i]; + } + if (ptDistance) { + ptDistance = bmSqrt(ptDistance); + addedLength += ptDistance; + } + lengthData.percents[k] = perc; + lengthData.lengths[k] = addedLength; + } + lengthData.addedLength = addedLength; + return lengthData; + }; + }()); + + function getSegmentsLength(shapeData) { + var segmentsLength = segmentsLengthPool.newElement(); + var closed = shapeData.c; + var pathV = shapeData.v; + var pathO = shapeData.o; + var pathI = shapeData.i; + var i; + var len = shapeData._length; + var lengths = segmentsLength.lengths; + var totalLength = 0; + for (i = 0; i < len - 1; i += 1) { + lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]); + totalLength += lengths[i].addedLength; + } + if (closed && len) { + lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]); + totalLength += lengths[i].addedLength; + } + segmentsLength.totalLength = totalLength; + return segmentsLength; + } + + function BezierData(length) { + this.segmentLength = 0; + this.points = new Array(length); + } + + function PointData(partial, point) { + this.partialLength = partial; + this.point = point; + } + + var buildBezierData = (function () { + var storedData = {}; + + return function (pt1, pt2, pt3, pt4) { + var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\./g, 'p'); + if (!storedData[bezierName]) { + var curveSegments = getDefaultCurveSegments(); + var k; + var i; + var len; + var ptCoord; + var perc; + var addedLength = 0; + var ptDistance; + var point; + var lastPoint = null; + if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) { + curveSegments = 2; + } + var bezierData = new BezierData(curveSegments); + len = pt3.length; + for (k = 0; k < curveSegments; k += 1) { + point = createSizedArray(len); + perc = k / (curveSegments - 1); + ptDistance = 0; + for (i = 0; i < len; i += 1) { + ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i]; + point[i] = ptCoord; + if (lastPoint !== null) { + ptDistance += bmPow(point[i] - lastPoint[i], 2); + } + } + ptDistance = bmSqrt(ptDistance); + addedLength += ptDistance; + bezierData.points[k] = new PointData(ptDistance, point); + lastPoint = point; + } + bezierData.segmentLength = addedLength; + storedData[bezierName] = bezierData; + } + return storedData[bezierName]; + }; + }()); + + function getDistancePerc(perc, bezierData) { + var percents = bezierData.percents; + var lengths = bezierData.lengths; + var len = percents.length; + var initPos = bmFloor((len - 1) * perc); + var lengthPos = perc * bezierData.addedLength; + var lPerc = 0; + if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) { + return percents[initPos]; + } + var dir = lengths[initPos] > lengthPos ? -1 : 1; + var flag = true; + while (flag) { + if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) { + lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]); + flag = false; + } else { + initPos += dir; + } + if (initPos < 0 || initPos >= len - 1) { + // FIX for TypedArrays that don't store floating point values with enough accuracy + if (initPos === len - 1) { + return percents[initPos]; + } + flag = false; + } + } + return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc; + } + + function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) { + var t1 = getDistancePerc(percent, bezierData); + var u1 = 1 - t1; + var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000; + var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000; + return [ptX, ptY]; + } + + var bezierSegmentPoints = createTypedArray('float32', 8); + + function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) { + if (startPerc < 0) { + startPerc = 0; + } else if (startPerc > 1) { + startPerc = 1; + } + var t0 = getDistancePerc(startPerc, bezierData); + endPerc = endPerc > 1 ? 1 : endPerc; + var t1 = getDistancePerc(endPerc, bezierData); + var i; + var len = pt1.length; + var u0 = 1 - t0; + var u1 = 1 - t1; + var u0u0u0 = u0 * u0 * u0; + var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase + var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase + var t0t0t0 = t0 * t0 * t0; + // + var u0u0u1 = u0 * u0 * u1; + var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase + var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase + var t0t0t1 = t0 * t0 * t1; + // + var u0u1u1 = u0 * u1 * u1; + var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase + var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase + var t0t1t1 = t0 * t1 * t1; + // + var u1u1u1 = u1 * u1 * u1; + var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase + var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase + var t1t1t1 = t1 * t1 * t1; + for (i = 0; i < len; i += 1) { + bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase + bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase + bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase + bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase + } + + return bezierSegmentPoints; + } + + return { + getSegmentsLength: getSegmentsLength, + getNewSegment: getNewSegment, + getPointInSegment: getPointInSegment, + buildBezierData: buildBezierData, + pointOnLine2D: pointOnLine2D, + pointOnLine3D: pointOnLine3D, + }; +} + +const bez = bezFunction(); + +const PropertyFactory = (function () { + var initFrame = initialDefaultFrame; + var mathAbs = Math.abs; + + function interpolateValue(frameNum, caching) { + var offsetTime = this.offsetTime; + var newValue; + if (this.propType === 'multidimensional') { + newValue = createTypedArray('float32', this.pv.length); + } + var iterationIndex = caching.lastIndex; + var i = iterationIndex; + var len = this.keyframes.length - 1; + var flag = true; + var keyData; + var nextKeyData; + var keyframeMetadata; + + while (flag) { + keyData = this.keyframes[i]; + nextKeyData = this.keyframes[i + 1]; + if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) { + if (keyData.h) { + keyData = nextKeyData; + } + iterationIndex = 0; + break; + } + if ((nextKeyData.t - offsetTime) > frameNum) { + iterationIndex = i; + break; + } + if (i < len - 1) { + i += 1; + } else { + iterationIndex = 0; + flag = false; + } + } + keyframeMetadata = this.keyframesMetadata[i] || {}; + + var k; + var kLen; + var perc; + var jLen; + var j; + var fnc; + var nextKeyTime = nextKeyData.t - offsetTime; + var keyTime = keyData.t - offsetTime; + var endValue; + if (keyData.to) { + if (!keyframeMetadata.bezierData) { + keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti); + } + var bezierData = keyframeMetadata.bezierData; + if (frameNum >= nextKeyTime || frameNum < keyTime) { + var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0; + kLen = bezierData.points[ind].point.length; + for (k = 0; k < kLen; k += 1) { + newValue[k] = bezierData.points[ind].point[k]; + } + // caching._lastKeyframeIndex = -1; + } else { + if (keyframeMetadata.__fnct) { + fnc = keyframeMetadata.__fnct; + } else { + fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get; + keyframeMetadata.__fnct = fnc; + } + perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); + var distanceInLine = bezierData.segmentLength * perc; + + var segmentPerc; + var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0; + j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0; + flag = true; + jLen = bezierData.points.length; + while (flag) { + addedLength += bezierData.points[j].partialLength; + if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) { + kLen = bezierData.points[j].point.length; + for (k = 0; k < kLen; k += 1) { + newValue[k] = bezierData.points[j].point[k]; + } + break; + } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) { + segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength; + kLen = bezierData.points[j].point.length; + for (k = 0; k < kLen; k += 1) { + newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc; + } + break; + } + if (j < jLen - 1) { + j += 1; + } else { + flag = false; + } + } + caching._lastPoint = j; + caching._lastAddedLength = addedLength - bezierData.points[j].partialLength; + caching._lastKeyframeIndex = i; + } + } else { + var outX; + var outY; + var inX; + var inY; + var keyValue; + len = keyData.s.length; + endValue = nextKeyData.s || keyData.e; + if (this.sh && keyData.h !== 1) { + if (frameNum >= nextKeyTime) { + newValue[0] = endValue[0]; + newValue[1] = endValue[1]; + newValue[2] = endValue[2]; + } else if (frameNum <= keyTime) { + newValue[0] = keyData.s[0]; + newValue[1] = keyData.s[1]; + newValue[2] = keyData.s[2]; + } else { + var quatStart = createQuaternion(keyData.s); + var quatEnd = createQuaternion(endValue); + var time = (frameNum - keyTime) / (nextKeyTime - keyTime); + quaternionToEuler(newValue, slerp(quatStart, quatEnd, time)); + } + } else { + for (i = 0; i < len; i += 1) { + if (keyData.h !== 1) { + if (frameNum >= nextKeyTime) { + perc = 1; + } else if (frameNum < keyTime) { + perc = 0; + } else { + if (keyData.o.x.constructor === Array) { + if (!keyframeMetadata.__fnct) { + keyframeMetadata.__fnct = []; + } + if (!keyframeMetadata.__fnct[i]) { + outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i]; + outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i]; + inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i]; + inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i]; + fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; + keyframeMetadata.__fnct[i] = fnc; + } else { + fnc = keyframeMetadata.__fnct[i]; + } + } else if (!keyframeMetadata.__fnct) { + outX = keyData.o.x; + outY = keyData.o.y; + inX = keyData.i.x; + inY = keyData.i.y; + fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; + keyData.keyframeMetadata = fnc; + } else { + fnc = keyframeMetadata.__fnct; + } + perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); + } + } + + endValue = nextKeyData.s || keyData.e; + keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc; + + if (this.propType === 'multidimensional') { + newValue[i] = keyValue; + } else { + newValue = keyValue; + } + } + } + } + caching.lastIndex = iterationIndex; + return newValue; + } + + // based on @Toji's https://github.com/toji/gl-matrix/ + function slerp(a, b, t) { + var out = []; + var ax = a[0]; + var ay = a[1]; + var az = a[2]; + var aw = a[3]; + var bx = b[0]; + var by = b[1]; + var bz = b[2]; + var bw = b[3]; + + var omega; + var cosom; + var sinom; + var scale0; + var scale1; + + cosom = ax * bx + ay * by + az * bz + aw * bw; + if (cosom < 0.0) { + cosom = -cosom; + bx = -bx; + by = -by; + bz = -bz; + bw = -bw; + } + if ((1.0 - cosom) > 0.000001) { + omega = Math.acos(cosom); + sinom = Math.sin(omega); + scale0 = Math.sin((1.0 - t) * omega) / sinom; + scale1 = Math.sin(t * omega) / sinom; + } else { + scale0 = 1.0 - t; + scale1 = t; + } + out[0] = scale0 * ax + scale1 * bx; + out[1] = scale0 * ay + scale1 * by; + out[2] = scale0 * az + scale1 * bz; + out[3] = scale0 * aw + scale1 * bw; + + return out; + } + + function quaternionToEuler(out, quat) { + var qx = quat[0]; + var qy = quat[1]; + var qz = quat[2]; + var qw = quat[3]; + var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz); + var attitude = Math.asin(2 * qx * qy + 2 * qz * qw); + var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz); + out[0] = heading / degToRads; + out[1] = attitude / degToRads; + out[2] = bank / degToRads; + } + + function createQuaternion(values) { + var heading = values[0] * degToRads; + var attitude = values[1] * degToRads; + var bank = values[2] * degToRads; + var c1 = Math.cos(heading / 2); + var c2 = Math.cos(attitude / 2); + var c3 = Math.cos(bank / 2); + var s1 = Math.sin(heading / 2); + var s2 = Math.sin(attitude / 2); + var s3 = Math.sin(bank / 2); + var w = c1 * c2 * c3 - s1 * s2 * s3; + var x = s1 * s2 * c3 + c1 * c2 * s3; + var y = s1 * c2 * c3 + c1 * s2 * s3; + var z = c1 * s2 * c3 - s1 * c2 * s3; + + return [x, y, z, w]; + } + + function getValueAtCurrentTime() { + var frameNum = this.comp.renderedFrame - this.offsetTime; + var initTime = this.keyframes[0].t - this.offsetTime; + var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; + if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) { + if (this._caching.lastFrame >= frameNum) { + this._caching._lastKeyframeIndex = -1; + this._caching.lastIndex = 0; + } + + var renderResult = this.interpolateValue(frameNum, this._caching); + this.pv = renderResult; + } + this._caching.lastFrame = frameNum; + return this.pv; + } + + function setVValue(val) { + var multipliedValue; + if (this.propType === 'unidimensional') { + multipliedValue = val * this.mult; + if (mathAbs(this.v - multipliedValue) > 0.00001) { + this.v = multipliedValue; + this._mdf = true; + } + } else { + var i = 0; + var len = this.v.length; + while (i < len) { + multipliedValue = val[i] * this.mult; + if (mathAbs(this.v[i] - multipliedValue) > 0.00001) { + this.v[i] = multipliedValue; + this._mdf = true; + } + i += 1; + } + } + } + + function processEffectsSequence() { + if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) { + return; + } + if (this.lock) { + this.setVValue(this.pv); + return; + } + this.lock = true; + this._mdf = this._isFirstFrame; + var i; + var len = this.effectsSequence.length; + var finalValue = this.kf ? this.pv : this.data.k; + for (i = 0; i < len; i += 1) { + finalValue = this.effectsSequence[i](finalValue); + } + this.setVValue(finalValue); + this._isFirstFrame = false; + this.lock = false; + this.frameId = this.elem.globalData.frameId; + } + + function addEffect(effectFunction) { + this.effectsSequence.push(effectFunction); + this.container.addDynamicProperty(this); + } + + function ValueProperty(elem, data, mult, container) { + this.propType = 'unidimensional'; + this.mult = mult || 1; + this.data = data; + this.v = mult ? data.k * mult : data.k; + this.pv = data.k; + this._mdf = false; + this.elem = elem; + this.container = container; + this.comp = elem.comp; + this.k = false; + this.kf = false; + this.vel = 0; + this.effectsSequence = []; + this._isFirstFrame = true; + this.getValue = processEffectsSequence; + this.setVValue = setVValue; + this.addEffect = addEffect; + } + + function MultiDimensionalProperty(elem, data, mult, container) { + this.propType = 'multidimensional'; + this.mult = mult || 1; + this.data = data; + this._mdf = false; + this.elem = elem; + this.container = container; + this.comp = elem.comp; + this.k = false; + this.kf = false; + this.frameId = -1; + var i; + var len = data.k.length; + this.v = createTypedArray('float32', len); + this.pv = createTypedArray('float32', len); + this.vel = createTypedArray('float32', len); + for (i = 0; i < len; i += 1) { + this.v[i] = data.k[i] * this.mult; + this.pv[i] = data.k[i]; + } + this._isFirstFrame = true; + this.effectsSequence = []; + this.getValue = processEffectsSequence; + this.setVValue = setVValue; + this.addEffect = addEffect; + } + + function KeyframedValueProperty(elem, data, mult, container) { + this.propType = 'unidimensional'; + this.keyframes = data.k; + this.keyframesMetadata = []; + this.offsetTime = elem.data.st; + this.frameId = -1; + this._caching = { + lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1, + }; + this.k = true; + this.kf = true; + this.data = data; + this.mult = mult || 1; + this.elem = elem; + this.container = container; + this.comp = elem.comp; + this.v = initFrame; + this.pv = initFrame; + this._isFirstFrame = true; + this.getValue = processEffectsSequence; + this.setVValue = setVValue; + this.interpolateValue = interpolateValue; + this.effectsSequence = [getValueAtCurrentTime.bind(this)]; + this.addEffect = addEffect; + } + + function KeyframedMultidimensionalProperty(elem, data, mult, container) { + this.propType = 'multidimensional'; + var i; + var len = data.k.length; + var s; + var e; + var to; + var ti; + for (i = 0; i < len - 1; i += 1) { + if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) { + s = data.k[i].s; + e = data.k[i + 1].s; + to = data.k[i].to; + ti = data.k[i].ti; + if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) { + data.k[i].to = null; + data.k[i].ti = null; + } + if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) { + if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) { + data.k[i].to = null; + data.k[i].ti = null; + } + } + } + } + this.effectsSequence = [getValueAtCurrentTime.bind(this)]; + this.data = data; + this.keyframes = data.k; + this.keyframesMetadata = []; + this.offsetTime = elem.data.st; + this.k = true; + this.kf = true; + this._isFirstFrame = true; + this.mult = mult || 1; + this.elem = elem; + this.container = container; + this.comp = elem.comp; + this.getValue = processEffectsSequence; + this.setVValue = setVValue; + this.interpolateValue = interpolateValue; + this.frameId = -1; + var arrLen = data.k[0].s.length; + this.v = createTypedArray('float32', arrLen); + this.pv = createTypedArray('float32', arrLen); + for (i = 0; i < arrLen; i += 1) { + this.v[i] = initFrame; + this.pv[i] = initFrame; + } + this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) }; + this.addEffect = addEffect; + } + + function getProp(elem, data, type, mult, container) { + var p; + if (!data.k.length) { + p = new ValueProperty(elem, data, mult, container); + } else if (typeof (data.k[0]) === 'number') { + p = new MultiDimensionalProperty(elem, data, mult, container); + } else { + switch (type) { + case 0: + p = new KeyframedValueProperty(elem, data, mult, container); + break; + case 1: + p = new KeyframedMultidimensionalProperty(elem, data, mult, container); + break; + default: + break; + } + } + if (p.effectsSequence.length) { + container.addDynamicProperty(p); + } + return p; + } + + var ob = { + getProp: getProp, + }; + return ob; +}()); + +function DynamicPropertyContainer() {} +DynamicPropertyContainer.prototype = { + addDynamicProperty: function (prop) { + if (this.dynamicProperties.indexOf(prop) === -1) { + this.dynamicProperties.push(prop); + this.container.addDynamicProperty(this); + this._isAnimated = true; + } + }, + iterateDynamicProperties: function () { + this._mdf = false; + var i; + var len = this.dynamicProperties.length; + for (i = 0; i < len; i += 1) { + this.dynamicProperties[i].getValue(); + if (this.dynamicProperties[i]._mdf) { + this._mdf = true; + } + } + }, + initDynamicPropertyContainer: function (container) { + this.container = container; + this.dynamicProperties = []; + this._mdf = false; + this._isAnimated = false; + }, +}; + +const pointPool = (function () { + function create() { + return createTypedArray('float32', 2); + } + return poolFactory(8, create); +}()); + +function ShapePath() { + this.c = false; + this._length = 0; + this._maxLength = 8; + this.v = createSizedArray(this._maxLength); + this.o = createSizedArray(this._maxLength); + this.i = createSizedArray(this._maxLength); +} + +ShapePath.prototype.setPathData = function (closed, len) { + this.c = closed; + this.setLength(len); + var i = 0; + while (i < len) { + this.v[i] = pointPool.newElement(); + this.o[i] = pointPool.newElement(); + this.i[i] = pointPool.newElement(); + i += 1; + } +}; + +ShapePath.prototype.setLength = function (len) { + while (this._maxLength < len) { + this.doubleArrayLength(); + } + this._length = len; +}; + +ShapePath.prototype.doubleArrayLength = function () { + this.v = this.v.concat(createSizedArray(this._maxLength)); + this.i = this.i.concat(createSizedArray(this._maxLength)); + this.o = this.o.concat(createSizedArray(this._maxLength)); + this._maxLength *= 2; +}; + +ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) { + var arr; + this._length = Math.max(this._length, pos + 1); + if (this._length >= this._maxLength) { + this.doubleArrayLength(); + } + switch (type) { + case 'v': + arr = this.v; + break; + case 'i': + arr = this.i; + break; + case 'o': + arr = this.o; + break; + default: + arr = []; + break; + } + if (!arr[pos] || (arr[pos] && !replace)) { + arr[pos] = pointPool.newElement(); + } + arr[pos][0] = x; + arr[pos][1] = y; +}; + +ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) { + this.setXYAt(vX, vY, 'v', pos, replace); + this.setXYAt(oX, oY, 'o', pos, replace); + this.setXYAt(iX, iY, 'i', pos, replace); +}; + +ShapePath.prototype.reverse = function () { + var newPath = new ShapePath(); + newPath.setPathData(this.c, this._length); + var vertices = this.v; + var outPoints = this.o; + var inPoints = this.i; + var init = 0; + if (this.c) { + newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false); + init = 1; + } + var cnt = this._length - 1; + var len = this._length; + + var i; + for (i = init; i < len; i += 1) { + newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false); + cnt -= 1; + } + return newPath; +}; + +const shapePool = (function () { + function create() { + return new ShapePath(); + } + + function release(shapePath) { + var len = shapePath._length; + var i; + for (i = 0; i < len; i += 1) { + pointPool.release(shapePath.v[i]); + pointPool.release(shapePath.i[i]); + pointPool.release(shapePath.o[i]); + shapePath.v[i] = null; + shapePath.i[i] = null; + shapePath.o[i] = null; + } + shapePath._length = 0; + shapePath.c = false; + } + + function clone(shape) { + var cloned = factory.newElement(); + var i; + var len = shape._length === undefined ? shape.v.length : shape._length; + cloned.setLength(len); + cloned.c = shape.c; + + for (i = 0; i < len; i += 1) { + cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i); + } + return cloned; + } + + var factory = poolFactory(4, create, release); + factory.clone = clone; + + return factory; +}()); + +function ShapeCollection() { + this._length = 0; + this._maxLength = 4; + this.shapes = createSizedArray(this._maxLength); +} + +ShapeCollection.prototype.addShape = function (shapeData) { + if (this._length === this._maxLength) { + this.shapes = this.shapes.concat(createSizedArray(this._maxLength)); + this._maxLength *= 2; + } + this.shapes[this._length] = shapeData; + this._length += 1; +}; + +ShapeCollection.prototype.releaseShapes = function () { + var i; + for (i = 0; i < this._length; i += 1) { + shapePool.release(this.shapes[i]); + } + this._length = 0; +}; + +const shapeCollectionPool = (function () { + var ob = { + newShapeCollection: newShapeCollection, + release: release, + }; + + var _length = 0; + var _maxLength = 4; + var pool = createSizedArray(_maxLength); + + function newShapeCollection() { + var shapeCollection; + if (_length) { + _length -= 1; + shapeCollection = pool[_length]; + } else { + shapeCollection = new ShapeCollection(); + } + return shapeCollection; + } + + function release(shapeCollection) { + var i; + var len = shapeCollection._length; + for (i = 0; i < len; i += 1) { + shapePool.release(shapeCollection.shapes[i]); + } + shapeCollection._length = 0; + + if (_length === _maxLength) { + pool = pooling.double(pool); + _maxLength *= 2; + } + pool[_length] = shapeCollection; + _length += 1; + } + + return ob; +}()); + +const ShapePropertyFactory = (function () { + var initFrame = -999999; + + function interpolateShape(frameNum, previousValue, caching) { + var iterationIndex = caching.lastIndex; + var keyPropS; + var keyPropE; + var isHold; + var j; + var k; + var jLen; + var kLen; + var perc; + var vertexValue; + var kf = this.keyframes; + if (frameNum < kf[0].t - this.offsetTime) { + keyPropS = kf[0].s[0]; + isHold = true; + iterationIndex = 0; + } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) { + keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0]; + /* if(kf[kf.length - 1].s){ + keyPropS = kf[kf.length - 1].s[0]; + }else{ + keyPropS = kf[kf.length - 2].e[0]; + } */ + isHold = true; + } else { + var i = iterationIndex; + var len = kf.length - 1; + var flag = true; + var keyData; + var nextKeyData; + var keyframeMetadata; + while (flag) { + keyData = kf[i]; + nextKeyData = kf[i + 1]; + if ((nextKeyData.t - this.offsetTime) > frameNum) { + break; + } + if (i < len - 1) { + i += 1; + } else { + flag = false; + } + } + keyframeMetadata = this.keyframesMetadata[i] || {}; + isHold = keyData.h === 1; + iterationIndex = i; + if (!isHold) { + if (frameNum >= nextKeyData.t - this.offsetTime) { + perc = 1; + } else if (frameNum < keyData.t - this.offsetTime) { + perc = 0; + } else { + var fnc; + if (keyframeMetadata.__fnct) { + fnc = keyframeMetadata.__fnct; + } else { + fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get; + keyframeMetadata.__fnct = fnc; + } + perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime))); + } + keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0]; + } + keyPropS = keyData.s[0]; + } + jLen = previousValue._length; + kLen = keyPropS.i[0].length; + caching.lastIndex = iterationIndex; + + for (j = 0; j < jLen; j += 1) { + for (k = 0; k < kLen; k += 1) { + vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc; + previousValue.i[j][k] = vertexValue; + vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc; + previousValue.o[j][k] = vertexValue; + vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc; + previousValue.v[j][k] = vertexValue; + } + } + } + + function interpolateShapeCurrentTime() { + var frameNum = this.comp.renderedFrame - this.offsetTime; + var initTime = this.keyframes[0].t - this.offsetTime; + var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; + var lastFrame = this._caching.lastFrame; + if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) { + /// / + this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0; + this.interpolateShape(frameNum, this.pv, this._caching); + /// / + } + this._caching.lastFrame = frameNum; + return this.pv; + } + + function resetShape() { + this.paths = this.localShapeCollection; + } + + function shapesEqual(shape1, shape2) { + if (shape1._length !== shape2._length || shape1.c !== shape2.c) { + return false; + } + var i; + var len = shape1._length; + for (i = 0; i < len; i += 1) { + if (shape1.v[i][0] !== shape2.v[i][0] + || shape1.v[i][1] !== shape2.v[i][1] + || shape1.o[i][0] !== shape2.o[i][0] + || shape1.o[i][1] !== shape2.o[i][1] + || shape1.i[i][0] !== shape2.i[i][0] + || shape1.i[i][1] !== shape2.i[i][1]) { + return false; + } + } + return true; + } + + function setVValue(newPath) { + if (!shapesEqual(this.v, newPath)) { + this.v = shapePool.clone(newPath); + this.localShapeCollection.releaseShapes(); + this.localShapeCollection.addShape(this.v); + this._mdf = true; + this.paths = this.localShapeCollection; + } + } + + function processEffectsSequence() { + if (this.elem.globalData.frameId === this.frameId) { + return; + } if (!this.effectsSequence.length) { + this._mdf = false; + return; + } + if (this.lock) { + this.setVValue(this.pv); + return; + } + this.lock = true; + this._mdf = false; + var finalValue; + if (this.kf) { + finalValue = this.pv; + } else if (this.data.ks) { + finalValue = this.data.ks.k; + } else { + finalValue = this.data.pt.k; + } + var i; + var len = this.effectsSequence.length; + for (i = 0; i < len; i += 1) { + finalValue = this.effectsSequence[i](finalValue); + } + this.setVValue(finalValue); + this.lock = false; + this.frameId = this.elem.globalData.frameId; + } + + function ShapeProperty(elem, data, type) { + this.propType = 'shape'; + this.comp = elem.comp; + this.container = elem; + this.elem = elem; + this.data = data; + this.k = false; + this.kf = false; + this._mdf = false; + var pathData = type === 3 ? data.pt.k : data.ks.k; + this.v = shapePool.clone(pathData); + this.pv = shapePool.clone(this.v); + this.localShapeCollection = shapeCollectionPool.newShapeCollection(); + this.paths = this.localShapeCollection; + this.paths.addShape(this.v); + this.reset = resetShape; + this.effectsSequence = []; + } + + function addEffect(effectFunction) { + this.effectsSequence.push(effectFunction); + this.container.addDynamicProperty(this); + } + + ShapeProperty.prototype.interpolateShape = interpolateShape; + ShapeProperty.prototype.getValue = processEffectsSequence; + ShapeProperty.prototype.setVValue = setVValue; + ShapeProperty.prototype.addEffect = addEffect; + + function KeyframedShapeProperty(elem, data, type) { + this.propType = 'shape'; + this.comp = elem.comp; + this.elem = elem; + this.container = elem; + this.offsetTime = elem.data.st; + this.keyframes = type === 3 ? data.pt.k : data.ks.k; + this.keyframesMetadata = []; + this.k = true; + this.kf = true; + var len = this.keyframes[0].s[0].i.length; + this.v = shapePool.newElement(); + this.v.setPathData(this.keyframes[0].s[0].c, len); + this.pv = shapePool.clone(this.v); + this.localShapeCollection = shapeCollectionPool.newShapeCollection(); + this.paths = this.localShapeCollection; + this.paths.addShape(this.v); + this.lastFrame = initFrame; + this.reset = resetShape; + this._caching = { lastFrame: initFrame, lastIndex: 0 }; + this.effectsSequence = [interpolateShapeCurrentTime.bind(this)]; + } + KeyframedShapeProperty.prototype.getValue = processEffectsSequence; + KeyframedShapeProperty.prototype.interpolateShape = interpolateShape; + KeyframedShapeProperty.prototype.setVValue = setVValue; + KeyframedShapeProperty.prototype.addEffect = addEffect; + + var EllShapeProperty = (function () { + var cPoint = roundCorner; + + function EllShapePropertyFactory(elem, data) { + this.v = shapePool.newElement(); + this.v.setPathData(true, 4); + this.localShapeCollection = shapeCollectionPool.newShapeCollection(); + this.paths = this.localShapeCollection; + this.localShapeCollection.addShape(this.v); + this.d = data.d; + this.elem = elem; + this.comp = elem.comp; + this.frameId = -1; + this.initDynamicPropertyContainer(elem); + this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); + this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this); + if (this.dynamicProperties.length) { + this.k = true; + } else { + this.k = false; + this.convertEllToPath(); + } + } + + EllShapePropertyFactory.prototype = { + reset: resetShape, + getValue: function () { + if (this.elem.globalData.frameId === this.frameId) { + return; + } + this.frameId = this.elem.globalData.frameId; + this.iterateDynamicProperties(); + + if (this._mdf) { + this.convertEllToPath(); + } + }, + convertEllToPath: function () { + var p0 = this.p.v[0]; + var p1 = this.p.v[1]; + var s0 = this.s.v[0] / 2; + var s1 = this.s.v[1] / 2; + var _cw = this.d !== 3; + var _v = this.v; + _v.v[0][0] = p0; + _v.v[0][1] = p1 - s1; + _v.v[1][0] = _cw ? p0 + s0 : p0 - s0; + _v.v[1][1] = p1; + _v.v[2][0] = p0; + _v.v[2][1] = p1 + s1; + _v.v[3][0] = _cw ? p0 - s0 : p0 + s0; + _v.v[3][1] = p1; + _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; + _v.i[0][1] = p1 - s1; + _v.i[1][0] = _cw ? p0 + s0 : p0 - s0; + _v.i[1][1] = p1 - s1 * cPoint; + _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; + _v.i[2][1] = p1 + s1; + _v.i[3][0] = _cw ? p0 - s0 : p0 + s0; + _v.i[3][1] = p1 + s1 * cPoint; + _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; + _v.o[0][1] = p1 - s1; + _v.o[1][0] = _cw ? p0 + s0 : p0 - s0; + _v.o[1][1] = p1 + s1 * cPoint; + _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; + _v.o[2][1] = p1 + s1; + _v.o[3][0] = _cw ? p0 - s0 : p0 + s0; + _v.o[3][1] = p1 - s1 * cPoint; + }, + }; + + extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory); + + return EllShapePropertyFactory; + }()); + + var StarShapeProperty = (function () { + function StarShapePropertyFactory(elem, data) { + this.v = shapePool.newElement(); + this.v.setPathData(true, 0); + this.elem = elem; + this.comp = elem.comp; + this.data = data; + this.frameId = -1; + this.d = data.d; + this.initDynamicPropertyContainer(elem); + if (data.sy === 1) { + this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this); + this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this); + this.convertToPath = this.convertStarToPath; + } else { + this.convertToPath = this.convertPolygonToPath; + } + this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this); + this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); + this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this); + this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this); + this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this); + this.localShapeCollection = shapeCollectionPool.newShapeCollection(); + this.localShapeCollection.addShape(this.v); + this.paths = this.localShapeCollection; + if (this.dynamicProperties.length) { + this.k = true; + } else { + this.k = false; + this.convertToPath(); + } + } + + StarShapePropertyFactory.prototype = { + reset: resetShape, + getValue: function () { + if (this.elem.globalData.frameId === this.frameId) { + return; + } + this.frameId = this.elem.globalData.frameId; + this.iterateDynamicProperties(); + if (this._mdf) { + this.convertToPath(); + } + }, + convertStarToPath: function () { + var numPts = Math.floor(this.pt.v) * 2; + var angle = (Math.PI * 2) / numPts; + /* this.v.v.length = numPts; + this.v.i.length = numPts; + this.v.o.length = numPts; */ + var longFlag = true; + var longRad = this.or.v; + var shortRad = this.ir.v; + var longRound = this.os.v; + var shortRound = this.is.v; + var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2); + var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2); + var i; + var rad; + var roundness; + var perimSegment; + var currentAng = -Math.PI / 2; + currentAng += this.r.v; + var dir = this.data.d === 3 ? -1 : 1; + this.v._length = 0; + for (i = 0; i < numPts; i += 1) { + rad = longFlag ? longRad : shortRad; + roundness = longFlag ? longRound : shortRound; + perimSegment = longFlag ? longPerimSegment : shortPerimSegment; + var x = rad * Math.cos(currentAng); + var y = rad * Math.sin(currentAng); + var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y); + var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y); + x += +this.p.v[0]; + y += +this.p.v[1]; + this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true); + + /* this.v.v[i] = [x,y]; + this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir]; + this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir]; + this.v._length = numPts; */ + longFlag = !longFlag; + currentAng += angle * dir; + } + }, + convertPolygonToPath: function () { + var numPts = Math.floor(this.pt.v); + var angle = (Math.PI * 2) / numPts; + var rad = this.or.v; + var roundness = this.os.v; + var perimSegment = (2 * Math.PI * rad) / (numPts * 4); + var i; + var currentAng = -Math.PI * 0.5; + var dir = this.data.d === 3 ? -1 : 1; + currentAng += this.r.v; + this.v._length = 0; + for (i = 0; i < numPts; i += 1) { + var x = rad * Math.cos(currentAng); + var y = rad * Math.sin(currentAng); + var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y); + var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y); + x += +this.p.v[0]; + y += +this.p.v[1]; + this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true); + currentAng += angle * dir; + } + this.paths.length = 0; + this.paths[0] = this.v; + }, + + }; + extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory); + + return StarShapePropertyFactory; + }()); + + var RectShapeProperty = (function () { + function RectShapePropertyFactory(elem, data) { + this.v = shapePool.newElement(); + this.v.c = true; + this.localShapeCollection = shapeCollectionPool.newShapeCollection(); + this.localShapeCollection.addShape(this.v); + this.paths = this.localShapeCollection; + this.elem = elem; + this.comp = elem.comp; + this.frameId = -1; + this.d = data.d; + this.initDynamicPropertyContainer(elem); + this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); + this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this); + this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this); + if (this.dynamicProperties.length) { + this.k = true; + } else { + this.k = false; + this.convertRectToPath(); + } + } + + RectShapePropertyFactory.prototype = { + convertRectToPath: function () { + var p0 = this.p.v[0]; + var p1 = this.p.v[1]; + var v0 = this.s.v[0] / 2; + var v1 = this.s.v[1] / 2; + var round = bmMin(v0, v1, this.r.v); + var cPoint = round * (1 - roundCorner); + this.v._length = 0; + + if (this.d === 2 || this.d === 1) { + this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true); + this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true); + if (round !== 0) { + this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true); + this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true); + this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true); + this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true); + this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true); + this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true); + } else { + this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2); + this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3); + } + } else { + this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true); + if (round !== 0) { + this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true); + this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true); + this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true); + this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true); + this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true); + this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true); + this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true); + } else { + this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true); + this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true); + this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true); + } + } + }, + getValue: function () { + if (this.elem.globalData.frameId === this.frameId) { + return; + } + this.frameId = this.elem.globalData.frameId; + this.iterateDynamicProperties(); + if (this._mdf) { + this.convertRectToPath(); + } + }, + reset: resetShape, + }; + extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory); + + return RectShapePropertyFactory; + }()); + + function getShapeProp(elem, data, type) { + var prop; + if (type === 3 || type === 4) { + var dataProp = type === 3 ? data.pt : data.ks; + var keys = dataProp.k; + if (keys.length) { + prop = new KeyframedShapeProperty(elem, data, type); + } else { + prop = new ShapeProperty(elem, data, type); + } + } else if (type === 5) { + prop = new RectShapeProperty(elem, data); + } else if (type === 6) { + prop = new EllShapeProperty(elem, data); + } else if (type === 7) { + prop = new StarShapeProperty(elem, data); + } + if (prop.k) { + elem.addDynamicProperty(prop); + } + return prop; + } + + function getConstructorFunction() { + return ShapeProperty; + } + + function getKeyframedConstructorFunction() { + return KeyframedShapeProperty; + } + + var ob = {}; + ob.getShapeProp = getShapeProp; + ob.getConstructorFunction = getConstructorFunction; + ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction; + return ob; +}()); + +/*! + Transformation Matrix v2.0 + (c) Epistemex 2014-2015 + www.epistemex.com + By Ken Fyrstenberg + Contributions by leeoniya. + License: MIT, header required. + */ + +/** + * 2D transformation matrix object initialized with identity matrix. + * + * The matrix can synchronize a canvas context by supplying the context + * as an argument, or later apply current absolute transform to an + * existing context. + * + * All values are handled as floating point values. + * + * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix + * @prop {number} a - scale x + * @prop {number} b - shear y + * @prop {number} c - shear x + * @prop {number} d - scale y + * @prop {number} e - translate x + * @prop {number} f - translate y + * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context + * @constructor + */ + +const Matrix = (function () { + var _cos = Math.cos; + var _sin = Math.sin; + var _tan = Math.tan; + var _rnd = Math.round; + + function reset() { + this.props[0] = 1; + this.props[1] = 0; + this.props[2] = 0; + this.props[3] = 0; + this.props[4] = 0; + this.props[5] = 1; + this.props[6] = 0; + this.props[7] = 0; + this.props[8] = 0; + this.props[9] = 0; + this.props[10] = 1; + this.props[11] = 0; + this.props[12] = 0; + this.props[13] = 0; + this.props[14] = 0; + this.props[15] = 1; + return this; + } + + function rotate(angle) { + if (angle === 0) { + return this; + } + var mCos = _cos(angle); + var mSin = _sin(angle); + return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + } + + function rotateX(angle) { + if (angle === 0) { + return this; + } + var mCos = _cos(angle); + var mSin = _sin(angle); + return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1); + } + + function rotateY(angle) { + if (angle === 0) { + return this; + } + var mCos = _cos(angle); + var mSin = _sin(angle); + return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1); + } + + function rotateZ(angle) { + if (angle === 0) { + return this; + } + var mCos = _cos(angle); + var mSin = _sin(angle); + return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + } + + function shear(sx, sy) { + return this._t(1, sy, sx, 1, 0, 0); + } + + function skew(ax, ay) { + return this.shear(_tan(ax), _tan(ay)); + } + + function skewFromAxis(ax, angle) { + var mCos = _cos(angle); + var mSin = _sin(angle); + return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) + ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) + ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0); + } + + function scale(sx, sy, sz) { + if (!sz && sz !== 0) { + sz = 1; + } + if (sx === 1 && sy === 1 && sz === 1) { + return this; + } + return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1); + } + + function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { + this.props[0] = a; + this.props[1] = b; + this.props[2] = c; + this.props[3] = d; + this.props[4] = e; + this.props[5] = f; + this.props[6] = g; + this.props[7] = h; + this.props[8] = i; + this.props[9] = j; + this.props[10] = k; + this.props[11] = l; + this.props[12] = m; + this.props[13] = n; + this.props[14] = o; + this.props[15] = p; + return this; + } + + function translate(tx, ty, tz) { + tz = tz || 0; + if (tx !== 0 || ty !== 0 || tz !== 0) { + return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1); + } + return this; + } + + function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) { + var _p = this.props; + + if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) { + // NOTE: commenting this condition because TurboFan deoptimizes code when present + // if(m2 !== 0 || n2 !== 0 || o2 !== 0){ + _p[12] = _p[12] * a2 + _p[15] * m2; + _p[13] = _p[13] * f2 + _p[15] * n2; + _p[14] = _p[14] * k2 + _p[15] * o2; + _p[15] *= p2; + // } + this._identityCalculated = false; + return this; + } + + var a1 = _p[0]; + var b1 = _p[1]; + var c1 = _p[2]; + var d1 = _p[3]; + var e1 = _p[4]; + var f1 = _p[5]; + var g1 = _p[6]; + var h1 = _p[7]; + var i1 = _p[8]; + var j1 = _p[9]; + var k1 = _p[10]; + var l1 = _p[11]; + var m1 = _p[12]; + var n1 = _p[13]; + var o1 = _p[14]; + var p1 = _p[15]; + + /* matrix order (canvas compatible): + * ace + * bdf + * 001 + */ + _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2; + _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2; + _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2; + _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2; + + _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2; + _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2; + _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2; + _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2; + + _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2; + _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2; + _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2; + _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2; + + _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2; + _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2; + _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2; + _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2; + + this._identityCalculated = false; + return this; + } + + function isIdentity() { + if (!this._identityCalculated) { + this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1); + this._identityCalculated = true; + } + return this._identity; + } + + function equals(matr) { + var i = 0; + while (i < 16) { + if (matr.props[i] !== this.props[i]) { + return false; + } + i += 1; + } + return true; + } + + function clone(matr) { + var i; + for (i = 0; i < 16; i += 1) { + matr.props[i] = this.props[i]; + } + return matr; + } + + function cloneFromProps(props) { + var i; + for (i = 0; i < 16; i += 1) { + this.props[i] = props[i]; + } + } + + function applyToPoint(x, y, z) { + return { + x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], + y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], + z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14], + }; + /* return { + x: x * me.a + y * me.c + me.e, + y: x * me.b + y * me.d + me.f + }; */ + } + function applyToX(x, y, z) { + return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12]; + } + function applyToY(x, y, z) { + return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13]; + } + function applyToZ(x, y, z) { + return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]; + } + + function getInverseMatrix() { + var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4]; + var a = this.props[5] / determinant; + var b = -this.props[1] / determinant; + var c = -this.props[4] / determinant; + var d = this.props[0] / determinant; + var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant; + var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant; + var inverseMatrix = new Matrix(); + inverseMatrix.props[0] = a; + inverseMatrix.props[1] = b; + inverseMatrix.props[4] = c; + inverseMatrix.props[5] = d; + inverseMatrix.props[12] = e; + inverseMatrix.props[13] = f; + return inverseMatrix; + } + + function inversePoint(pt) { + var inverseMatrix = this.getInverseMatrix(); + return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0); + } + + function inversePoints(pts) { + var i; + var len = pts.length; + var retPts = []; + for (i = 0; i < len; i += 1) { + retPts[i] = inversePoint(pts[i]); + } + return retPts; + } + + function applyToTriplePoints(pt1, pt2, pt3) { + var arr = createTypedArray('float32', 6); + if (this.isIdentity()) { + arr[0] = pt1[0]; + arr[1] = pt1[1]; + arr[2] = pt2[0]; + arr[3] = pt2[1]; + arr[4] = pt3[0]; + arr[5] = pt3[1]; + } else { + var p0 = this.props[0]; + var p1 = this.props[1]; + var p4 = this.props[4]; + var p5 = this.props[5]; + var p12 = this.props[12]; + var p13 = this.props[13]; + arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12; + arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13; + arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12; + arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13; + arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12; + arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13; + } + return arr; + } + + function applyToPointArray(x, y, z) { + var arr; + if (this.isIdentity()) { + arr = [x, y, z]; + } else { + arr = [ + x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], + x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], + x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14], + ]; + } + return arr; + } + + function applyToPointStringified(x, y) { + if (this.isIdentity()) { + return x + ',' + y; + } + var _p = this.props; + return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100; + } + + function toCSS() { + // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed. + /* if(this.isIdentity()) { + return ''; + } */ + var i = 0; + var props = this.props; + var cssValue = 'matrix3d('; + var v = 10000; + while (i < 16) { + cssValue += _rnd(props[i] * v) / v; + cssValue += i === 15 ? ')' : ','; + i += 1; + } + return cssValue; + } + + function roundMatrixProperty(val) { + var v = 10000; + if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) { + return _rnd(val * v) / v; + } + return val; + } + + function to2dCSS() { + // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed. + /* if(this.isIdentity()) { + return ''; + } */ + var props = this.props; + var _a = roundMatrixProperty(props[0]); + var _b = roundMatrixProperty(props[1]); + var _c = roundMatrixProperty(props[4]); + var _d = roundMatrixProperty(props[5]); + var _e = roundMatrixProperty(props[12]); + var _f = roundMatrixProperty(props[13]); + return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')'; + } + + return function () { + this.reset = reset; + this.rotate = rotate; + this.rotateX = rotateX; + this.rotateY = rotateY; + this.rotateZ = rotateZ; + this.skew = skew; + this.skewFromAxis = skewFromAxis; + this.shear = shear; + this.scale = scale; + this.setTransform = setTransform; + this.translate = translate; + this.transform = transform; + this.applyToPoint = applyToPoint; + this.applyToX = applyToX; + this.applyToY = applyToY; + this.applyToZ = applyToZ; + this.applyToPointArray = applyToPointArray; + this.applyToTriplePoints = applyToTriplePoints; + this.applyToPointStringified = applyToPointStringified; + this.toCSS = toCSS; + this.to2dCSS = to2dCSS; + this.clone = clone; + this.cloneFromProps = cloneFromProps; + this.equals = equals; + this.inversePoints = inversePoints; + this.inversePoint = inversePoint; + this.getInverseMatrix = getInverseMatrix; + this._t = this.transform; + this.isIdentity = isIdentity; + this._identity = true; + this._identityCalculated = false; + + this.props = createTypedArray('float32', 16); + this.reset(); + }; +}()); + +const lottie = {}; +var standalone = '__[STANDALONE]__'; +var animationData = '__[ANIMATIONDATA]__'; +var renderer = ''; + +function setLocation(href) { + setLocationHref(href); +} + +function searchAnimations() { + if (standalone === true) { + animationManager.searchAnimations(animationData, standalone, renderer); + } else { + animationManager.searchAnimations(); + } +} + +function setSubframeRendering(flag) { + setSubframeEnabled(flag); +} + +function setPrefix(prefix) { + setIdPrefix(prefix); +} + +function loadAnimation(params) { + if (standalone === true) { + params.animationData = JSON.parse(animationData); + } + return animationManager.loadAnimation(params); +} + +function setQuality(value) { + if (typeof value === 'string') { + switch (value) { + case 'high': + setDefaultCurveSegments(200); + break; + default: + case 'medium': + setDefaultCurveSegments(50); + break; + case 'low': + setDefaultCurveSegments(10); + break; + } + } else if (!isNaN(value) && value > 1) { + setDefaultCurveSegments(value); + } + if (getDefaultCurveSegments() >= 50) { + roundValues(false); + } else { + roundValues(true); + } +} + +function inBrowser() { + return typeof navigator !== 'undefined'; +} + +function installPlugin(type, plugin) { + if (type === 'expressions') { + setExpressionsPlugin(plugin); + } +} + +function getFactory(name) { + switch (name) { + case 'propertyFactory': + return PropertyFactory; + case 'shapePropertyFactory': + return ShapePropertyFactory; + case 'matrix': + return Matrix; + default: + return null; + } +} + +lottie.play = animationManager.play; +lottie.pause = animationManager.pause; +lottie.setLocationHref = setLocation; +lottie.togglePause = animationManager.togglePause; +lottie.setSpeed = animationManager.setSpeed; +lottie.setDirection = animationManager.setDirection; +lottie.stop = animationManager.stop; +lottie.searchAnimations = searchAnimations; +lottie.registerAnimation = animationManager.registerAnimation; +lottie.loadAnimation = loadAnimation; +lottie.setSubframeRendering = setSubframeRendering; +lottie.resize = animationManager.resize; +// lottie.start = start; +lottie.goToAndStop = animationManager.goToAndStop; +lottie.destroy = animationManager.destroy; +lottie.setQuality = setQuality; +lottie.inBrowser = inBrowser; +lottie.installPlugin = installPlugin; +lottie.freeze = animationManager.freeze; +lottie.unfreeze = animationManager.unfreeze; +lottie.setVolume = animationManager.setVolume; +lottie.mute = animationManager.mute; +lottie.unmute = animationManager.unmute; +lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations; +lottie.useWebWorker = setWebWorker; +lottie.setIDPrefix = setPrefix; +lottie.__getFactory = getFactory; +lottie.version = '[[BM_VERSION]]'; + +function checkReady() { + if (document.readyState === 'complete') { + clearInterval(readyStateCheckInterval); + searchAnimations(); + } +} + +function getQueryVariable(variable) { + var vars = queryString.split('&'); + for (var i = 0; i < vars.length; i += 1) { + var pair = vars[i].split('='); + if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq + return decodeURIComponent(pair[1]); + } + } + return null; +} +var queryString = ''; +if (standalone) { + var scripts = document.getElementsByTagName('script'); + var index = scripts.length - 1; + var myScript = scripts[index] || { + src: '', + }; + queryString = myScript.src ? myScript.src.replace(/^[^\?]+\??/, '') : ''; // eslint-disable-line no-useless-escape + renderer = getQueryVariable('renderer'); +} +var readyStateCheckInterval = setInterval(checkReady, 100); + +// this adds bodymovin to the window object for backwards compatibility +try { + if (!(typeof exports === 'object' && typeof module !== 'undefined') + && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef + ) { + window.bodymovin = lottie; + } +} catch (err) { + // +} + +const ShapeModifiers = (function () { + var ob = {}; + var modifiers = {}; + ob.registerModifier = registerModifier; + ob.getModifier = getModifier; + + function registerModifier(nm, factory) { + if (!modifiers[nm]) { + modifiers[nm] = factory; + } + } + + function getModifier(nm, elem, data) { + return new modifiers[nm](elem, data); + } + + return ob; +}()); + +function ShapeModifier() {} +ShapeModifier.prototype.initModifierProperties = function () {}; +ShapeModifier.prototype.addShapeToModifier = function () {}; +ShapeModifier.prototype.addShape = function (data) { + if (!this.closed) { + // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick. + data.sh.container.addDynamicProperty(data.sh); + var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() }; + this.shapes.push(shapeData); + this.addShapeToModifier(shapeData); + if (this._isAnimated) { + data.setAsAnimated(); + } + } +}; +ShapeModifier.prototype.init = function (elem, data) { + this.shapes = []; + this.elem = elem; + this.initDynamicPropertyContainer(elem); + this.initModifierProperties(elem, data); + this.frameId = initialDefaultFrame; + this.closed = false; + this.k = false; + if (this.dynamicProperties.length) { + this.k = true; + } else { + this.getValue(true); + } +}; +ShapeModifier.prototype.processKeys = function () { + if (this.elem.globalData.frameId === this.frameId) { + return; + } + this.frameId = this.elem.globalData.frameId; + this.iterateDynamicProperties(); +}; + +extendPrototype([DynamicPropertyContainer], ShapeModifier); + +function TrimModifier() { +} +extendPrototype([ShapeModifier], TrimModifier); +TrimModifier.prototype.initModifierProperties = function (elem, data) { + this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this); + this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this); + this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this); + this.sValue = 0; + this.eValue = 0; + this.getValue = this.processKeys; + this.m = data.m; + this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length; +}; + +TrimModifier.prototype.addShapeToModifier = function (shapeData) { + shapeData.pathsData = []; +}; + +TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) { + var segments = []; + if (e <= 1) { + segments.push({ + s: s, + e: e, + }); + } else if (s >= 1) { + segments.push({ + s: s - 1, + e: e - 1, + }); + } else { + segments.push({ + s: s, + e: 1, + }); + segments.push({ + s: 0, + e: e - 1, + }); + } + var shapeSegments = []; + var i; + var len = segments.length; + var segmentOb; + for (i = 0; i < len; i += 1) { + segmentOb = segments[i]; + if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) { + var shapeS; + var shapeE; + if (segmentOb.s * totalModifierLength <= addedLength) { + shapeS = 0; + } else { + shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength; + } + if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) { + shapeE = 1; + } else { + shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength); + } + shapeSegments.push([shapeS, shapeE]); + } + } + if (!shapeSegments.length) { + shapeSegments.push([0, 0]); + } + return shapeSegments; +}; + +TrimModifier.prototype.releasePathsData = function (pathsData) { + var i; + var len = pathsData.length; + for (i = 0; i < len; i += 1) { + segmentsLengthPool.release(pathsData[i]); + } + pathsData.length = 0; + return pathsData; +}; + +TrimModifier.prototype.processShapes = function (_isFirstFrame) { + var s; + var e; + if (this._mdf || _isFirstFrame) { + var o = (this.o.v % 360) / 360; + if (o < 0) { + o += 1; + } + if (this.s.v > 1) { + s = 1 + o; + } else if (this.s.v < 0) { + s = 0 + o; + } else { + s = this.s.v + o; + } + if (this.e.v > 1) { + e = 1 + o; + } else if (this.e.v < 0) { + e = 0 + o; + } else { + e = this.e.v + o; + } + + if (s > e) { + var _s = s; + s = e; + e = _s; + } + s = Math.round(s * 10000) * 0.0001; + e = Math.round(e * 10000) * 0.0001; + this.sValue = s; + this.eValue = e; + } else { + s = this.sValue; + e = this.eValue; + } + var shapePaths; + var i; + var len = this.shapes.length; + var j; + var jLen; + var pathsData; + var pathData; + var totalShapeLength; + var totalModifierLength = 0; + + if (e === s) { + for (i = 0; i < len; i += 1) { + this.shapes[i].localShapeCollection.releaseShapes(); + this.shapes[i].shape._mdf = true; + this.shapes[i].shape.paths = this.shapes[i].localShapeCollection; + if (this._mdf) { + this.shapes[i].pathsData.length = 0; + } + } + } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) { + var segments = []; + var shapeData; + var localShapeCollection; + for (i = 0; i < len; i += 1) { + shapeData = this.shapes[i]; + // if shape hasn't changed and trim properties haven't changed, cached previous path can be used + if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) { + shapeData.shape.paths = shapeData.localShapeCollection; + } else { + shapePaths = shapeData.shape.paths; + jLen = shapePaths._length; + totalShapeLength = 0; + if (!shapeData.shape._mdf && shapeData.pathsData.length) { + totalShapeLength = shapeData.totalShapeLength; + } else { + pathsData = this.releasePathsData(shapeData.pathsData); + for (j = 0; j < jLen; j += 1) { + pathData = bez.getSegmentsLength(shapePaths.shapes[j]); + pathsData.push(pathData); + totalShapeLength += pathData.totalLength; + } + shapeData.totalShapeLength = totalShapeLength; + shapeData.pathsData = pathsData; + } + + totalModifierLength += totalShapeLength; + shapeData.shape._mdf = true; + } + } + var shapeS = s; + var shapeE = e; + var addedLength = 0; + var edges; + for (i = len - 1; i >= 0; i -= 1) { + shapeData = this.shapes[i]; + if (shapeData.shape._mdf) { + localShapeCollection = shapeData.localShapeCollection; + localShapeCollection.releaseShapes(); + // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group + if (this.m === 2 && len > 1) { + edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength); + addedLength += shapeData.totalShapeLength; + } else { + edges = [[shapeS, shapeE]]; + } + jLen = edges.length; + for (j = 0; j < jLen; j += 1) { + shapeS = edges[j][0]; + shapeE = edges[j][1]; + segments.length = 0; + if (shapeE <= 1) { + segments.push({ + s: shapeData.totalShapeLength * shapeS, + e: shapeData.totalShapeLength * shapeE, + }); + } else if (shapeS >= 1) { + segments.push({ + s: shapeData.totalShapeLength * (shapeS - 1), + e: shapeData.totalShapeLength * (shapeE - 1), + }); + } else { + segments.push({ + s: shapeData.totalShapeLength * shapeS, + e: shapeData.totalShapeLength, + }); + segments.push({ + s: 0, + e: shapeData.totalShapeLength * (shapeE - 1), + }); + } + var newShapesData = this.addShapes(shapeData, segments[0]); + if (segments[0].s !== segments[0].e) { + if (segments.length > 1) { + var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1]; + if (lastShapeInCollection.c) { + var lastShape = newShapesData.pop(); + this.addPaths(newShapesData, localShapeCollection); + newShapesData = this.addShapes(shapeData, segments[1], lastShape); + } else { + this.addPaths(newShapesData, localShapeCollection); + newShapesData = this.addShapes(shapeData, segments[1]); + } + } + this.addPaths(newShapesData, localShapeCollection); + } + } + shapeData.shape.paths = localShapeCollection; + } + } + } else if (this._mdf) { + for (i = 0; i < len; i += 1) { + // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween. + // Don't remove this even if it's losing cached info. + this.shapes[i].pathsData.length = 0; + this.shapes[i].shape._mdf = true; + } + } +}; + +TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) { + var i; + var len = newPaths.length; + for (i = 0; i < len; i += 1) { + localShapeCollection.addShape(newPaths[i]); + } +}; + +TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) { + shapePath.setXYAt(pt2[0], pt2[1], 'o', pos); + shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1); + if (newShape) { + shapePath.setXYAt(pt1[0], pt1[1], 'v', pos); + } + shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1); +}; + +TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) { + shapePath.setXYAt(points[1], points[5], 'o', pos); + shapePath.setXYAt(points[2], points[6], 'i', pos + 1); + if (newShape) { + shapePath.setXYAt(points[0], points[4], 'v', pos); + } + shapePath.setXYAt(points[3], points[7], 'v', pos + 1); +}; + +TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) { + var pathsData = shapeData.pathsData; + var shapePaths = shapeData.shape.paths.shapes; + var i; + var len = shapeData.shape.paths._length; + var j; + var jLen; + var addedLength = 0; + var currentLengthData; + var segmentCount; + var lengths; + var segment; + var shapes = []; + var initPos; + var newShape = true; + if (!shapePath) { + shapePath = shapePool.newElement(); + segmentCount = 0; + initPos = 0; + } else { + segmentCount = shapePath._length; + initPos = shapePath._length; + } + shapes.push(shapePath); + for (i = 0; i < len; i += 1) { + lengths = pathsData[i].lengths; + shapePath.c = shapePaths[i].c; + jLen = shapePaths[i].c ? lengths.length : lengths.length + 1; + for (j = 1; j < jLen; j += 1) { + currentLengthData = lengths[j - 1]; + if (addedLength + currentLengthData.addedLength < shapeSegment.s) { + addedLength += currentLengthData.addedLength; + shapePath.c = false; + } else if (addedLength > shapeSegment.e) { + shapePath.c = false; + break; + } else { + if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) { + this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape); + newShape = false; + } else { + segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]); + this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); + // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape); + newShape = false; + shapePath.c = false; + } + addedLength += currentLengthData.addedLength; + segmentCount += 1; + } + } + if (shapePaths[i].c && lengths.length) { + currentLengthData = lengths[j - 1]; + if (addedLength <= shapeSegment.e) { + var segmentLength = lengths[j - 1].addedLength; + if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) { + this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape); + newShape = false; + } else { + segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]); + this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); + // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape); + newShape = false; + shapePath.c = false; + } + } else { + shapePath.c = false; + } + addedLength += currentLengthData.addedLength; + segmentCount += 1; + } + if (shapePath._length) { + shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos); + shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1); + } + if (addedLength > shapeSegment.e) { + break; + } + if (i < len - 1) { + shapePath = shapePool.newElement(); + newShape = true; + shapes.push(shapePath); + segmentCount = 0; + } + } + return shapes; +}; + +function PuckerAndBloatModifier() {} +extendPrototype([ShapeModifier], PuckerAndBloatModifier); +PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) { + this.getValue = this.processKeys; + this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this); + this._isAnimated = !!this.amount.effectsSequence.length; +}; + +PuckerAndBloatModifier.prototype.processPath = function (path, amount) { + var percent = amount / 100; + var centerPoint = [0, 0]; + var pathLength = path._length; + var i = 0; + for (i = 0; i < pathLength; i += 1) { + centerPoint[0] += path.v[i][0]; + centerPoint[1] += path.v[i][1]; + } + centerPoint[0] /= pathLength; + centerPoint[1] /= pathLength; + var clonedPath = shapePool.newElement(); + clonedPath.c = path.c; + var vX; + var vY; + var oX; + var oY; + var iX; + var iY; + for (i = 0; i < pathLength; i += 1) { + vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent; + vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent; + oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent; + oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent; + iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent; + iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent; + clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i); + } + return clonedPath; +}; + +PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) { + var shapePaths; + var i; + var len = this.shapes.length; + var j; + var jLen; + var amount = this.amount.v; + + if (amount !== 0) { + var shapeData; + var localShapeCollection; + for (i = 0; i < len; i += 1) { + shapeData = this.shapes[i]; + localShapeCollection = shapeData.localShapeCollection; + if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { + localShapeCollection.releaseShapes(); + shapeData.shape._mdf = true; + shapePaths = shapeData.shape.paths.shapes; + jLen = shapeData.shape.paths._length; + for (j = 0; j < jLen; j += 1) { + localShapeCollection.addShape(this.processPath(shapePaths[j], amount)); + } + } + shapeData.shape.paths = shapeData.localShapeCollection; + } + } + if (!this.dynamicProperties.length) { + this._mdf = false; + } +}; + +const TransformPropertyFactory = (function () { + var defaultVector = [0, 0]; + + function applyToMatrix(mat) { + var _mdf = this._mdf; + this.iterateDynamicProperties(); + this._mdf = this._mdf || _mdf; + if (this.a) { + mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); + } + if (this.s) { + mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]); + } + if (this.sk) { + mat.skewFromAxis(-this.sk.v, this.sa.v); + } + if (this.r) { + mat.rotate(-this.r.v); + } else { + mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]) + .rotateY(this.or.v[1]) + .rotateX(this.or.v[0]); + } + if (this.data.p.s) { + if (this.data.p.z) { + mat.translate(this.px.v, this.py.v, -this.pz.v); + } else { + mat.translate(this.px.v, this.py.v, 0); + } + } else { + mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); + } + } + function processKeys(forceRender) { + if (this.elem.globalData.frameId === this.frameId) { + return; + } + if (this._isDirty) { + this.precalculateMatrix(); + this._isDirty = false; + } + + this.iterateDynamicProperties(); + + if (this._mdf || forceRender) { + var frameRate; + this.v.cloneFromProps(this.pre.props); + if (this.appliedTransformations < 1) { + this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); + } + if (this.appliedTransformations < 2) { + this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]); + } + if (this.sk && this.appliedTransformations < 3) { + this.v.skewFromAxis(-this.sk.v, this.sa.v); + } + if (this.r && this.appliedTransformations < 4) { + this.v.rotate(-this.r.v); + } else if (!this.r && this.appliedTransformations < 4) { + this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]) + .rotateY(this.or.v[1]) + .rotateX(this.or.v[0]); + } + if (this.autoOriented) { + var v1; + var v2; + frameRate = this.elem.globalData.frameRate; + if (this.p && this.p.keyframes && this.p.getValueAtTime) { + if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) { + v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0); + v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0); + } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) { + v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0); + v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0); + } else { + v1 = this.p.pv; + v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime); + } + } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) { + v1 = []; + v2 = []; + var px = this.px; + var py = this.py; + if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) { + v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0); + v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0); + v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0); + v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0); + } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) { + v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0); + v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0); + v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0); + v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0); + } else { + v1 = [px.pv, py.pv]; + v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime); + v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime); + } + } else { + v2 = defaultVector; + v1 = v2; + } + this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0])); + } + if (this.data.p && this.data.p.s) { + if (this.data.p.z) { + this.v.translate(this.px.v, this.py.v, -this.pz.v); + } else { + this.v.translate(this.px.v, this.py.v, 0); + } + } else { + this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); + } + } + this.frameId = this.elem.globalData.frameId; + } + + function precalculateMatrix() { + if (!this.a.k) { + this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); + this.appliedTransformations = 1; + } else { + return; + } + if (!this.s.effectsSequence.length) { + this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]); + this.appliedTransformations = 2; + } else { + return; + } + if (this.sk) { + if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) { + this.pre.skewFromAxis(-this.sk.v, this.sa.v); + this.appliedTransformations = 3; + } else { + return; + } + } + if (this.r) { + if (!this.r.effectsSequence.length) { + this.pre.rotate(-this.r.v); + this.appliedTransformations = 4; + } + } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) { + this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]) + .rotateY(this.or.v[1]) + .rotateX(this.or.v[0]); + this.appliedTransformations = 4; + } + } + + function autoOrient() { + // + // var prevP = this.getValueAtTime(); + } + + function addDynamicProperty(prop) { + this._addDynamicProperty(prop); + this.elem.addDynamicProperty(prop); + this._isDirty = true; + } + + function TransformProperty(elem, data, container) { + this.elem = elem; + this.frameId = -1; + this.propType = 'transform'; + this.data = data; + this.v = new Matrix(); + // Precalculated matrix with non animated properties + this.pre = new Matrix(); + this.appliedTransformations = 0; + this.initDynamicPropertyContainer(container || elem); + if (data.p && data.p.s) { + this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this); + this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this); + if (data.p.z) { + this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this); + } + } else { + this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this); + } + if (data.rx) { + this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this); + this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this); + this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this); + if (data.or.k[0].ti) { + var i; + var len = data.or.k.length; + for (i = 0; i < len; i += 1) { + data.or.k[i].to = null; + data.or.k[i].ti = null; + } + } + this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); + // sh Indicates it needs to be capped between -180 and 180 + this.or.sh = true; + } else { + this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this); + } + if (data.sk) { + this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this); + this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this); + } + this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this); + this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this); + // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes. + if (data.o) { + this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem); + } else { + this.o = { _mdf: false, v: 1 }; + } + this._isDirty = true; + if (!this.dynamicProperties.length) { + this.getValue(true); + } + } + + TransformProperty.prototype = { + applyToMatrix: applyToMatrix, + getValue: processKeys, + precalculateMatrix: precalculateMatrix, + autoOrient: autoOrient, + }; + + extendPrototype([DynamicPropertyContainer], TransformProperty); + TransformProperty.prototype.addDynamicProperty = addDynamicProperty; + TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty; + + function getTransformProperty(elem, data, container) { + return new TransformProperty(elem, data, container); + } + + return { + getTransformProperty: getTransformProperty, + }; +}()); + +function RepeaterModifier() {} +extendPrototype([ShapeModifier], RepeaterModifier); + +RepeaterModifier.prototype.initModifierProperties = function (elem, data) { + this.getValue = this.processKeys; + this.c = PropertyFactory.getProp(elem, data.c, 0, null, this); + this.o = PropertyFactory.getProp(elem, data.o, 0, null, this); + this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this); + this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this); + this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this); + this.data = data; + if (!this.dynamicProperties.length) { + this.getValue(true); + } + this._isAnimated = !!this.dynamicProperties.length; + this.pMatrix = new Matrix(); + this.rMatrix = new Matrix(); + this.sMatrix = new Matrix(); + this.tMatrix = new Matrix(); + this.matrix = new Matrix(); +}; + +RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) { + var dir = inv ? -1 : 1; + var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc); + var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc); + pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]); + rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]); + rMatrix.rotate(-transform.r.v * dir * perc); + rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]); + sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]); + sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY); + sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]); +}; + +RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) { + this.elem = elem; + this.arr = arr; + this.pos = pos; + this.elemsData = elemsData; + this._currentCopies = 0; + this._elements = []; + this._groups = []; + this.frameId = -1; + this.initDynamicPropertyContainer(elem); + this.initModifierProperties(elem, arr[pos]); + while (pos > 0) { + pos -= 1; + // this._elements.unshift(arr.splice(pos,1)[0]); + this._elements.unshift(arr[pos]); + } + if (this.dynamicProperties.length) { + this.k = true; + } else { + this.getValue(true); + } +}; + +RepeaterModifier.prototype.resetElements = function (elements) { + var i; + var len = elements.length; + for (i = 0; i < len; i += 1) { + elements[i]._processed = false; + if (elements[i].ty === 'gr') { + this.resetElements(elements[i].it); + } + } +}; + +RepeaterModifier.prototype.cloneElements = function (elements) { + var newElements = JSON.parse(JSON.stringify(elements)); + this.resetElements(newElements); + return newElements; +}; + +RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) { + var i; + var len = elements.length; + for (i = 0; i < len; i += 1) { + elements[i]._render = renderFlag; + if (elements[i].ty === 'gr') { + this.changeGroupRender(elements[i].it, renderFlag); + } + } +}; + +RepeaterModifier.prototype.processShapes = function (_isFirstFrame) { + var items; + var itemsTransform; + var i; + var dir; + var cont; + var hasReloaded = false; + if (this._mdf || _isFirstFrame) { + var copies = Math.ceil(this.c.v); + if (this._groups.length < copies) { + while (this._groups.length < copies) { + var group = { + it: this.cloneElements(this._elements), + ty: 'gr', + }; + group.it.push({ + a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr', + }); + + this.arr.splice(0, 0, group); + this._groups.splice(0, 0, group); + this._currentCopies += 1; + } + this.elem.reloadShapes(); + hasReloaded = true; + } + cont = 0; + var renderFlag; + for (i = 0; i <= this._groups.length - 1; i += 1) { + renderFlag = cont < copies; + this._groups[i]._render = renderFlag; + this.changeGroupRender(this._groups[i].it, renderFlag); + if (!renderFlag) { + var elems = this.elemsData[i].it; + var transformData = elems[elems.length - 1]; + if (transformData.transform.op.v !== 0) { + transformData.transform.op._mdf = true; + transformData.transform.op.v = 0; + } else { + transformData.transform.op._mdf = false; + } + } + cont += 1; + } + + this._currentCopies = copies; + /// / + + var offset = this.o.v; + var offsetModulo = offset % 1; + var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset); + var pProps = this.pMatrix.props; + var rProps = this.rMatrix.props; + var sProps = this.sMatrix.props; + this.pMatrix.reset(); + this.rMatrix.reset(); + this.sMatrix.reset(); + this.tMatrix.reset(); + this.matrix.reset(); + var iteration = 0; + + if (offset > 0) { + while (iteration < roundOffset) { + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); + iteration += 1; + } + if (offsetModulo) { + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false); + iteration += offsetModulo; + } + } else if (offset < 0) { + while (iteration > roundOffset) { + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true); + iteration -= 1; + } + if (offsetModulo) { + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true); + iteration -= offsetModulo; + } + } + i = this.data.m === 1 ? 0 : this._currentCopies - 1; + dir = this.data.m === 1 ? 1 : -1; + cont = this._currentCopies; + var j; + var jLen; + while (cont) { + items = this.elemsData[i].it; + itemsTransform = items[items.length - 1].transform.mProps.v.props; + jLen = itemsTransform.length; + items[items.length - 1].transform.mProps._mdf = true; + items[items.length - 1].transform.op._mdf = true; + items[items.length - 1].transform.op.v = this._currentCopies === 1 + ? this.so.v + : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1)); + + if (iteration !== 0) { + if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) { + this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); + } + this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]); + this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]); + this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]); + + for (j = 0; j < jLen; j += 1) { + itemsTransform[j] = this.matrix.props[j]; + } + this.matrix.reset(); + } else { + this.matrix.reset(); + for (j = 0; j < jLen; j += 1) { + itemsTransform[j] = this.matrix.props[j]; + } + } + iteration += 1; + cont -= 1; + i += dir; + } + } else { + cont = this._currentCopies; + i = 0; + dir = 1; + while (cont) { + items = this.elemsData[i].it; + itemsTransform = items[items.length - 1].transform.mProps.v.props; + items[items.length - 1].transform.mProps._mdf = false; + items[items.length - 1].transform.op._mdf = false; + cont -= 1; + i += dir; + } + } + return hasReloaded; +}; + +RepeaterModifier.prototype.addShape = function () {}; + +function RoundCornersModifier() {} +extendPrototype([ShapeModifier], RoundCornersModifier); +RoundCornersModifier.prototype.initModifierProperties = function (elem, data) { + this.getValue = this.processKeys; + this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this); + this._isAnimated = !!this.rd.effectsSequence.length; +}; + +RoundCornersModifier.prototype.processPath = function (path, round) { + var clonedPath = shapePool.newElement(); + clonedPath.c = path.c; + var i; + var len = path._length; + var currentV; + var currentI; + var currentO; + var closerV; + var distance; + var newPosPerc; + var index = 0; + var vX; + var vY; + var oX; + var oY; + var iX; + var iY; + for (i = 0; i < len; i += 1) { + currentV = path.v[i]; + currentO = path.o[i]; + currentI = path.i[i]; + if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) { + if ((i === 0 || i === len - 1) && !path.c) { + clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index); + /* clonedPath.v[index] = currentV; + clonedPath.o[index] = currentO; + clonedPath.i[index] = currentI; */ + index += 1; + } else { + if (i === 0) { + closerV = path.v[len - 1]; + } else { + closerV = path.v[i - 1]; + } + distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); + newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; + iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; + vX = iX; + iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc; + vY = iY; + oX = vX - (vX - currentV[0]) * roundCorner; + oY = vY - (vY - currentV[1]) * roundCorner; + clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index); + index += 1; + + if (i === len - 1) { + closerV = path.v[0]; + } else { + closerV = path.v[i + 1]; + } + distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); + newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; + oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; + vX = oX; + oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc; + vY = oY; + iX = vX - (vX - currentV[0]) * roundCorner; + iY = vY - (vY - currentV[1]) * roundCorner; + clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index); + index += 1; + } + } else { + clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index); + index += 1; + } + } + return clonedPath; +}; + +RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) { + var shapePaths; + var i; + var len = this.shapes.length; + var j; + var jLen; + var rd = this.rd.v; + + if (rd !== 0) { + var shapeData; + var localShapeCollection; + for (i = 0; i < len; i += 1) { + shapeData = this.shapes[i]; + localShapeCollection = shapeData.localShapeCollection; + if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { + localShapeCollection.releaseShapes(); + shapeData.shape._mdf = true; + shapePaths = shapeData.shape.paths.shapes; + jLen = shapeData.shape.paths._length; + for (j = 0; j < jLen; j += 1) { + localShapeCollection.addShape(this.processPath(shapePaths[j], rd)); + } + } + shapeData.shape.paths = shapeData.localShapeCollection; + } + } + if (!this.dynamicProperties.length) { + this._mdf = false; + } +}; + +function getFontProperties(fontData) { + var styles = fontData.fStyle ? fontData.fStyle.split(' ') : []; + + var fWeight = 'normal'; var + fStyle = 'normal'; + var len = styles.length; + var styleName; + for (var i = 0; i < len; i += 1) { + styleName = styles[i].toLowerCase(); + switch (styleName) { + case 'italic': + fStyle = 'italic'; + break; + case 'bold': + fWeight = '700'; + break; + case 'black': + fWeight = '900'; + break; + case 'medium': + fWeight = '500'; + break; + case 'regular': + case 'normal': + fWeight = '400'; + break; + case 'light': + case 'thin': + fWeight = '200'; + break; + default: + break; + } + } + + return { + style: fStyle, + weight: fontData.fWeight || fWeight, + }; +} + +const FontManager = (function () { + var maxWaitingTime = 5000; + var emptyChar = { + w: 0, + size: 0, + shapes: [], + data: { + shapes: [], + }, + }; + var combinedCharacters = []; + // Hindi characters + combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, + 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, + 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]); + + var surrogateModifiers = [ + 'd83cdffb', + 'd83cdffc', + 'd83cdffd', + 'd83cdffe', + 'd83cdfff', + ]; + + var zeroWidthJoiner = [65039, 8205]; + + function trimFontOptions(font) { + var familyArray = font.split(','); + var i; + var len = familyArray.length; + var enabledFamilies = []; + for (i = 0; i < len; i += 1) { + if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') { + enabledFamilies.push(familyArray[i]); + } + } + return enabledFamilies.join(','); + } + + function setUpNode(font, family) { + var parentNode = createTag('span'); + // Node is invisible to screen readers. + parentNode.setAttribute('aria-hidden', true); + parentNode.style.fontFamily = family; + var node = createTag('span'); + // Characters that vary significantly among different fonts + node.innerText = 'giItT1WQy@!-/#'; + // Visible - so we can measure it - but not on the screen + parentNode.style.position = 'absolute'; + parentNode.style.left = '-10000px'; + parentNode.style.top = '-10000px'; + // Large font size makes even subtle changes obvious + parentNode.style.fontSize = '300px'; + // Reset any font properties + parentNode.style.fontVariant = 'normal'; + parentNode.style.fontStyle = 'normal'; + parentNode.style.fontWeight = 'normal'; + parentNode.style.letterSpacing = '0'; + parentNode.appendChild(node); + document.body.appendChild(parentNode); + + // Remember width with no applied web font + var width = node.offsetWidth; + node.style.fontFamily = trimFontOptions(font) + ', ' + family; + return { node: node, w: width, parent: parentNode }; + } + + function checkLoadedFonts() { + var i; + var len = this.fonts.length; + var node; + var w; + var loadedCount = len; + for (i = 0; i < len; i += 1) { + if (this.fonts[i].loaded) { + loadedCount -= 1; + } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) { + this.fonts[i].loaded = true; + } else { + node = this.fonts[i].monoCase.node; + w = this.fonts[i].monoCase.w; + if (node.offsetWidth !== w) { + loadedCount -= 1; + this.fonts[i].loaded = true; + } else { + node = this.fonts[i].sansCase.node; + w = this.fonts[i].sansCase.w; + if (node.offsetWidth !== w) { + loadedCount -= 1; + this.fonts[i].loaded = true; + } + } + if (this.fonts[i].loaded) { + this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent); + this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent); + } + } + } + + if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) { + setTimeout(this.checkLoadedFontsBinded, 20); + } else { + setTimeout(this.setIsLoadedBinded, 10); + } + } + + function createHelper(fontData, def) { + var engine = (document.body && def) ? 'svg' : 'canvas'; + var helper; + var fontProps = getFontProperties(fontData); + if (engine === 'svg') { + var tHelper = createNS('text'); + tHelper.style.fontSize = '100px'; + // tHelper.style.fontFamily = fontData.fFamily; + tHelper.setAttribute('font-family', fontData.fFamily); + tHelper.setAttribute('font-style', fontProps.style); + tHelper.setAttribute('font-weight', fontProps.weight); + tHelper.textContent = '1'; + if (fontData.fClass) { + tHelper.style.fontFamily = 'inherit'; + tHelper.setAttribute('class', fontData.fClass); + } else { + tHelper.style.fontFamily = fontData.fFamily; + } + def.appendChild(tHelper); + helper = tHelper; + } else { + var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d'); + tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily; + helper = tCanvasHelper; + } + function measure(text) { + if (engine === 'svg') { + helper.textContent = text; + return helper.getComputedTextLength(); + } + return helper.measureText(text).width; + } + return { + measureText: measure, + }; + } + + function addFonts(fontData, defs) { + if (!fontData) { + this.isLoaded = true; + return; + } + if (this.chars) { + this.isLoaded = true; + this.fonts = fontData.list; + return; + } + if (!document.body) { + this.isLoaded = true; + fontData.list.forEach((data) => { + data.helper = createHelper(data); + data.cache = {}; + }); + this.fonts = fontData.list; + return; + } + + var fontArr = fontData.list; + var i; + var len = fontArr.length; + var _pendingFonts = len; + for (i = 0; i < len; i += 1) { + var shouldLoadFont = true; + var loadedSelector; + var j; + fontArr[i].loaded = false; + fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace'); + fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif'); + if (!fontArr[i].fPath) { + fontArr[i].loaded = true; + _pendingFonts -= 1; + } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) { + loadedSelector = document.querySelectorAll('style[f-forigin="p"][f-family="' + fontArr[i].fFamily + '"], style[f-origin="3"][f-family="' + fontArr[i].fFamily + '"]'); + + if (loadedSelector.length > 0) { + shouldLoadFont = false; + } + + if (shouldLoadFont) { + var s = createTag('style'); + s.setAttribute('f-forigin', fontArr[i].fOrigin); + s.setAttribute('f-origin', fontArr[i].origin); + s.setAttribute('f-family', fontArr[i].fFamily); + s.type = 'text/css'; + s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + "; font-style: normal; src: url('" + fontArr[i].fPath + "');}"; + defs.appendChild(s); + } + } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) { + loadedSelector = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'); + + for (j = 0; j < loadedSelector.length; j += 1) { + if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) { + // Font is already loaded + shouldLoadFont = false; + } + } + + if (shouldLoadFont) { + var l = createTag('link'); + l.setAttribute('f-forigin', fontArr[i].fOrigin); + l.setAttribute('f-origin', fontArr[i].origin); + l.type = 'text/css'; + l.rel = 'stylesheet'; + l.href = fontArr[i].fPath; + document.body.appendChild(l); + } + } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) { + loadedSelector = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'); + + for (j = 0; j < loadedSelector.length; j += 1) { + if (fontArr[i].fPath === loadedSelector[j].src) { + // Font is already loaded + shouldLoadFont = false; + } + } + + if (shouldLoadFont) { + var sc = createTag('link'); + sc.setAttribute('f-forigin', fontArr[i].fOrigin); + sc.setAttribute('f-origin', fontArr[i].origin); + sc.setAttribute('rel', 'stylesheet'); + sc.setAttribute('href', fontArr[i].fPath); + defs.appendChild(sc); + } + } + fontArr[i].helper = createHelper(fontArr[i], defs); + fontArr[i].cache = {}; + this.fonts.push(fontArr[i]); + } + if (_pendingFonts === 0) { + this.isLoaded = true; + } else { + // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas. + // Adding this timeout seems to fix it + setTimeout(this.checkLoadedFonts.bind(this), 100); + } + } + + function addChars(chars) { + if (!chars) { + return; + } + if (!this.chars) { + this.chars = []; + } + var i; + var len = chars.length; + var j; + var jLen = this.chars.length; + var found; + for (i = 0; i < len; i += 1) { + j = 0; + found = false; + while (j < jLen) { + if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) { + found = true; + } + j += 1; + } + if (!found) { + this.chars.push(chars[i]); + jLen += 1; + } + } + } + + function getCharData(char, style, font) { + var i = 0; + var len = this.chars.length; + while (i < len) { + if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) { + return this.chars[i]; + } + i += 1; + } + if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char) + && console + && console.warn // eslint-disable-line no-console + && !this._warned + ) { + this._warned = true; + console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console + } + return emptyChar; + } + + function measureText(char, fontName, size) { + var fontData = this.getFontByName(fontName); + var index = char.charCodeAt(0); + if (!fontData.cache[index + 1]) { + var tHelper = fontData.helper; + if (char === ' ') { + var doubleSize = tHelper.measureText('|' + char + '|'); + var singleSize = tHelper.measureText('||'); + fontData.cache[index + 1] = (doubleSize - singleSize) / 100; + } else { + fontData.cache[index + 1] = tHelper.measureText(char) / 100; + } + } + return fontData.cache[index + 1] * size; + } + + function getFontByName(name) { + var i = 0; + var len = this.fonts.length; + while (i < len) { + if (this.fonts[i].fName === name) { + return this.fonts[i]; + } + i += 1; + } + return this.fonts[0]; + } + + function isModifier(firstCharCode, secondCharCode) { + var sum = firstCharCode.toString(16) + secondCharCode.toString(16); + return surrogateModifiers.indexOf(sum) !== -1; + } + + function isZeroWidthJoiner(firstCharCode, secondCharCode) { + if (!secondCharCode) { + return firstCharCode === zeroWidthJoiner[1]; + } + return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1]; + } + + function isCombinedCharacter(char) { + return combinedCharacters.indexOf(char) !== -1; + } + + function setIsLoaded() { + this.isLoaded = true; + } + + var Font = function () { + this.fonts = []; + this.chars = null; + this.typekitLoaded = 0; + this.isLoaded = false; + this._warned = false; + this.initTime = Date.now(); + this.setIsLoadedBinded = this.setIsLoaded.bind(this); + this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this); + }; + Font.isModifier = isModifier; + Font.isZeroWidthJoiner = isZeroWidthJoiner; + Font.isCombinedCharacter = isCombinedCharacter; + + var fontPrototype = { + addChars: addChars, + addFonts: addFonts, + getCharData: getCharData, + getFontByName: getFontByName, + measureText: measureText, + checkLoadedFonts: checkLoadedFonts, + setIsLoaded: setIsLoaded, + }; + + Font.prototype = fontPrototype; + + return Font; +}()); + +function RenderableElement() { + +} + +RenderableElement.prototype = { + initRenderable: function () { + // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange + this.isInRange = false; + // layer's display state + this.hidden = false; + // If layer's transparency equals 0, it can be hidden + this.isTransparent = false; + // list of animated components + this.renderableComponents = []; + }, + addRenderableComponent: function (component) { + if (this.renderableComponents.indexOf(component) === -1) { + this.renderableComponents.push(component); + } + }, + removeRenderableComponent: function (component) { + if (this.renderableComponents.indexOf(component) !== -1) { + this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1); + } + }, + prepareRenderableFrame: function (num) { + this.checkLayerLimits(num); + }, + checkTransparency: function () { + if (this.finalTransform.mProp.o.v <= 0) { + if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) { + this.isTransparent = true; + this.hide(); + } + } else if (this.isTransparent) { + this.isTransparent = false; + this.show(); + } + }, + /** + * @function + * Initializes frame related properties. + * + * @param {number} num + * current frame number in Layer's time + * + */ + checkLayerLimits: function (num) { + if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) { + if (this.isInRange !== true) { + this.globalData._mdf = true; + this._mdf = true; + this.isInRange = true; + this.show(); + } + } else if (this.isInRange !== false) { + this.globalData._mdf = true; + this.isInRange = false; + this.hide(); + } + }, + renderRenderable: function () { + var i; + var len = this.renderableComponents.length; + for (i = 0; i < len; i += 1) { + this.renderableComponents[i].renderFrame(this._isFirstFrame); + } + /* this.maskManager.renderFrame(this.finalTransform.mat); + this.renderableEffectsManager.renderFrame(this._isFirstFrame); */ + }, + sourceRectAtTime: function () { + return { + top: 0, + left: 0, + width: 100, + height: 100, + }; + }, + getLayerSize: function () { + if (this.data.ty === 5) { + return { w: this.data.textData.width, h: this.data.textData.height }; + } + return { w: this.data.width, h: this.data.height }; + }, +}; + +const MaskManagerInterface = (function () { + function MaskInterface(mask, data) { + this._mask = mask; + this._data = data; + } + Object.defineProperty(MaskInterface.prototype, 'maskPath', { + get: function () { + if (this._mask.prop.k) { + this._mask.prop.getValue(); + } + return this._mask.prop; + }, + }); + Object.defineProperty(MaskInterface.prototype, 'maskOpacity', { + get: function () { + if (this._mask.op.k) { + this._mask.op.getValue(); + } + return this._mask.op.v * 100; + }, + }); + + var MaskManager = function (maskManager) { + var _masksInterfaces = createSizedArray(maskManager.viewData.length); + var i; + var len = maskManager.viewData.length; + for (i = 0; i < len; i += 1) { + _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]); + } + + var maskFunction = function (name) { + i = 0; + while (i < len) { + if (maskManager.masksProperties[i].nm === name) { + return _masksInterfaces[i]; + } + i += 1; + } + return null; + }; + return maskFunction; + }; + return MaskManager; +}()); + +const ExpressionPropertyInterface = (function () { + var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 }; + var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 }; + + function completeProperty(expressionValue, property, type) { + Object.defineProperty(expressionValue, 'velocity', { + get: function () { + return property.getVelocityAtTime(property.comp.currentFrame); + }, + }); + expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0; + expressionValue.key = function (pos) { + if (!expressionValue.numKeys) { + return 0; + } + var value = ''; + if ('s' in property.keyframes[pos - 1]) { + value = property.keyframes[pos - 1].s; + } else if ('e' in property.keyframes[pos - 2]) { + value = property.keyframes[pos - 2].e; + } else { + value = property.keyframes[pos - 2].s; + } + var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers + valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate; + valueProp.value = type === 'unidimensional' ? value[0] : value; + return valueProp; + }; + expressionValue.valueAtTime = property.getValueAtTime; + expressionValue.speedAtTime = property.getSpeedAtTime; + expressionValue.velocityAtTime = property.getVelocityAtTime; + expressionValue.propertyGroup = property.propertyGroup; + } + + function UnidimensionalPropertyInterface(property) { + if (!property || !('pv' in property)) { + property = defaultUnidimensionalValue; + } + var mult = 1 / property.mult; + var val = property.pv * mult; + var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers + expressionValue.value = val; + completeProperty(expressionValue, property, 'unidimensional'); + + return function () { + if (property.k) { + property.getValue(); + } + val = property.v * mult; + if (expressionValue.value !== val) { + expressionValue = new Number(val); // eslint-disable-line no-new-wrappers + expressionValue.value = val; + completeProperty(expressionValue, property, 'unidimensional'); + } + return expressionValue; + }; + } + + function MultidimensionalPropertyInterface(property) { + if (!property || !('pv' in property)) { + property = defaultMultidimensionalValue; + } + var mult = 1 / property.mult; + var len = (property.data && property.data.l) || property.pv.length; + var expressionValue = createTypedArray('float32', len); + var arrValue = createTypedArray('float32', len); + expressionValue.value = arrValue; + completeProperty(expressionValue, property, 'multidimensional'); + + return function () { + if (property.k) { + property.getValue(); + } + for (var i = 0; i < len; i += 1) { + arrValue[i] = property.v[i] * mult; + expressionValue[i] = arrValue[i]; + } + return expressionValue; + }; + } + + // TODO: try to avoid using this getter + function defaultGetter() { + return defaultUnidimensionalValue; + } + + return function (property) { + if (!property) { + return defaultGetter; + } if (property.propType === 'unidimensional') { + return UnidimensionalPropertyInterface(property); + } + return MultidimensionalPropertyInterface(property); + }; +}()); + +const TransformExpressionInterface = (function () { + return function (transform) { + function _thisFunction(name) { + switch (name) { + case 'scale': + case 'Scale': + case 'ADBE Scale': + case 6: + return _thisFunction.scale; + case 'rotation': + case 'Rotation': + case 'ADBE Rotation': + case 'ADBE Rotate Z': + case 10: + return _thisFunction.rotation; + case 'ADBE Rotate X': + return _thisFunction.xRotation; + case 'ADBE Rotate Y': + return _thisFunction.yRotation; + case 'position': + case 'Position': + case 'ADBE Position': + case 2: + return _thisFunction.position; + case 'ADBE Position_0': + return _thisFunction.xPosition; + case 'ADBE Position_1': + return _thisFunction.yPosition; + case 'ADBE Position_2': + return _thisFunction.zPosition; + case 'anchorPoint': + case 'AnchorPoint': + case 'Anchor Point': + case 'ADBE AnchorPoint': + case 1: + return _thisFunction.anchorPoint; + case 'opacity': + case 'Opacity': + case 11: + return _thisFunction.opacity; + default: + return null; + } + } + Object.defineProperty(_thisFunction, 'rotation', { + get: ExpressionPropertyInterface(transform.r || transform.rz), + }); + + Object.defineProperty(_thisFunction, 'zRotation', { + get: ExpressionPropertyInterface(transform.rz || transform.r), + }); + + Object.defineProperty(_thisFunction, 'xRotation', { + get: ExpressionPropertyInterface(transform.rx), + }); + + Object.defineProperty(_thisFunction, 'yRotation', { + get: ExpressionPropertyInterface(transform.ry), + }); + Object.defineProperty(_thisFunction, 'scale', { + get: ExpressionPropertyInterface(transform.s), + }); + var _px; + var _py; + var _pz; + var _transformFactory; + if (transform.p) { + _transformFactory = ExpressionPropertyInterface(transform.p); + } else { + _px = ExpressionPropertyInterface(transform.px); + _py = ExpressionPropertyInterface(transform.py); + if (transform.pz) { + _pz = ExpressionPropertyInterface(transform.pz); + } + } + Object.defineProperty(_thisFunction, 'position', { + get: function () { + if (transform.p) { + return _transformFactory(); + } + return [ + _px(), + _py(), + _pz ? _pz() : 0]; + }, + }); + + Object.defineProperty(_thisFunction, 'xPosition', { + get: ExpressionPropertyInterface(transform.px), + }); + + Object.defineProperty(_thisFunction, 'yPosition', { + get: ExpressionPropertyInterface(transform.py), + }); + + Object.defineProperty(_thisFunction, 'zPosition', { + get: ExpressionPropertyInterface(transform.pz), + }); + + Object.defineProperty(_thisFunction, 'anchorPoint', { + get: ExpressionPropertyInterface(transform.a), + }); + + Object.defineProperty(_thisFunction, 'opacity', { + get: ExpressionPropertyInterface(transform.o), + }); + + Object.defineProperty(_thisFunction, 'skew', { + get: ExpressionPropertyInterface(transform.sk), + }); + + Object.defineProperty(_thisFunction, 'skewAxis', { + get: ExpressionPropertyInterface(transform.sa), + }); + + Object.defineProperty(_thisFunction, 'orientation', { + get: ExpressionPropertyInterface(transform.or), + }); + + return _thisFunction; + }; +}()); + +const LayerExpressionInterface = (function () { + function getMatrix(time) { + var toWorldMat = new Matrix(); + if (time !== undefined) { + var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time); + propMatrix.clone(toWorldMat); + } else { + var transformMat = this._elem.finalTransform.mProp; + transformMat.applyToMatrix(toWorldMat); + } + return toWorldMat; + } + + function toWorldVec(arr, time) { + var toWorldMat = this.getMatrix(time); + toWorldMat.props[12] = 0; + toWorldMat.props[13] = 0; + toWorldMat.props[14] = 0; + return this.applyPoint(toWorldMat, arr); + } + + function toWorld(arr, time) { + var toWorldMat = this.getMatrix(time); + return this.applyPoint(toWorldMat, arr); + } + + function fromWorldVec(arr, time) { + var toWorldMat = this.getMatrix(time); + toWorldMat.props[12] = 0; + toWorldMat.props[13] = 0; + toWorldMat.props[14] = 0; + return this.invertPoint(toWorldMat, arr); + } + + function fromWorld(arr, time) { + var toWorldMat = this.getMatrix(time); + return this.invertPoint(toWorldMat, arr); + } + + function applyPoint(matrix, arr) { + if (this._elem.hierarchy && this._elem.hierarchy.length) { + var i; + var len = this._elem.hierarchy.length; + for (i = 0; i < len; i += 1) { + this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix); + } + } + return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0); + } + + function invertPoint(matrix, arr) { + if (this._elem.hierarchy && this._elem.hierarchy.length) { + var i; + var len = this._elem.hierarchy.length; + for (i = 0; i < len; i += 1) { + this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix); + } + } + return matrix.inversePoint(arr); + } + + function fromComp(arr) { + var toWorldMat = new Matrix(); + toWorldMat.reset(); + this._elem.finalTransform.mProp.applyToMatrix(toWorldMat); + if (this._elem.hierarchy && this._elem.hierarchy.length) { + var i; + var len = this._elem.hierarchy.length; + for (i = 0; i < len; i += 1) { + this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat); + } + return toWorldMat.inversePoint(arr); + } + return toWorldMat.inversePoint(arr); + } + + function sampleImage() { + return [1, 1, 1, 1]; + } + + return function (elem) { + var transformInterface; + + function _registerMaskInterface(maskManager) { + _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem); + } + function _registerEffectsInterface(effects) { + _thisLayerFunction.effect = effects; + } + + function _thisLayerFunction(name) { + switch (name) { + case 'ADBE Root Vectors Group': + case 'Contents': + case 2: + return _thisLayerFunction.shapeInterface; + case 1: + case 6: + case 'Transform': + case 'transform': + case 'ADBE Transform Group': + return transformInterface; + case 4: + case 'ADBE Effect Parade': + case 'effects': + case 'Effects': + return _thisLayerFunction.effect; + case 'ADBE Text Properties': + return _thisLayerFunction.textInterface; + default: + return null; + } + } + _thisLayerFunction.getMatrix = getMatrix; + _thisLayerFunction.invertPoint = invertPoint; + _thisLayerFunction.applyPoint = applyPoint; + _thisLayerFunction.toWorld = toWorld; + _thisLayerFunction.toWorldVec = toWorldVec; + _thisLayerFunction.fromWorld = fromWorld; + _thisLayerFunction.fromWorldVec = fromWorldVec; + _thisLayerFunction.toComp = toWorld; + _thisLayerFunction.fromComp = fromComp; + _thisLayerFunction.sampleImage = sampleImage; + _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem); + _thisLayerFunction._elem = elem; + transformInterface = TransformExpressionInterface(elem.finalTransform.mProp); + var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint'); + Object.defineProperties(_thisLayerFunction, { + hasParent: { + get: function () { + return elem.hierarchy.length; + }, + }, + parent: { + get: function () { + return elem.hierarchy[0].layerInterface; + }, + }, + rotation: getDescriptor(transformInterface, 'rotation'), + scale: getDescriptor(transformInterface, 'scale'), + position: getDescriptor(transformInterface, 'position'), + opacity: getDescriptor(transformInterface, 'opacity'), + anchorPoint: anchorPointDescriptor, + anchor_point: anchorPointDescriptor, + transform: { + get: function () { + return transformInterface; + }, + }, + active: { + get: function () { + return elem.isInRange; + }, + }, + }); + + _thisLayerFunction.startTime = elem.data.st; + _thisLayerFunction.index = elem.data.ind; + _thisLayerFunction.source = elem.data.refId; + _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100; + _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100; + _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate; + _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate; + _thisLayerFunction._name = elem.data.nm; + + _thisLayerFunction.registerMaskInterface = _registerMaskInterface; + _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface; + return _thisLayerFunction; + }; +}()); + +const propertyGroupFactory = (function () { + return function (interfaceFunction, parentPropertyGroup) { + return function (val) { + val = val === undefined ? 1 : val; + if (val <= 0) { + return interfaceFunction; + } + return parentPropertyGroup(val - 1); + }; + }; +}()); + +const PropertyInterface = (function () { + return function (propertyName, propertyGroup) { + var interfaceFunction = { + _name: propertyName, + }; + + function _propertyGroup(val) { + val = val === undefined ? 1 : val; + if (val <= 0) { + return interfaceFunction; + } + return propertyGroup(val - 1); + } + + return _propertyGroup; + }; +}()); + +const EffectsExpressionInterface = (function () { + var ob = { + createEffectsInterface: createEffectsInterface, + }; + + function createEffectsInterface(elem, propertyGroup) { + if (elem.effectsManager) { + var effectElements = []; + var effectsData = elem.data.ef; + var i; + var len = elem.effectsManager.effectElements.length; + for (i = 0; i < len; i += 1) { + effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem)); + } + + var effects = elem.data.ef || []; + var groupInterface = function (name) { + i = 0; + len = effects.length; + while (i < len) { + if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) { + return effectElements[i]; + } + i += 1; + } + return null; + }; + Object.defineProperty(groupInterface, 'numProperties', { + get: function () { + return effects.length; + }, + }); + return groupInterface; + } + return null; + } + + function createGroupInterface(data, elements, propertyGroup, elem) { + function groupInterface(name) { + var effects = data.ef; + var i = 0; + var len = effects.length; + while (i < len) { + if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) { + if (effects[i].ty === 5) { + return effectElements[i]; + } + return effectElements[i](); + } + i += 1; + } + throw new Error(); + } + var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup); + + var effectElements = []; + var i; + var len = data.ef.length; + for (i = 0; i < len; i += 1) { + if (data.ef[i].ty === 5) { + effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem)); + } else { + effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup)); + } + } + + if (data.mn === 'ADBE Color Control') { + Object.defineProperty(groupInterface, 'color', { + get: function () { + return effectElements[0](); + }, + }); + } + Object.defineProperties(groupInterface, { + numProperties: { + get: function () { + return data.np; + }, + }, + _name: { value: data.nm }, + propertyGroup: { value: _propertyGroup }, + }); + groupInterface.enabled = data.en !== 0; + groupInterface.active = groupInterface.enabled; + return groupInterface; + } + + function createValueInterface(element, type, elem, propertyGroup) { + var expressionProperty = ExpressionPropertyInterface(element.p); + function interfaceFunction() { + if (type === 10) { + return elem.comp.compInterface(element.p.v); + } + return expressionProperty(); + } + + if (element.p.setGroupProperty) { + element.p.setGroupProperty(PropertyInterface('', propertyGroup)); + } + + return interfaceFunction; + } + + return ob; +}()); + +const CompExpressionInterface = (function () { + return function (comp) { + function _thisLayerFunction(name) { + var i = 0; + var len = comp.layers.length; + while (i < len) { + if (comp.layers[i].nm === name || comp.layers[i].ind === name) { + return comp.elements[i].layerInterface; + } + i += 1; + } + return null; + // return {active:false}; + } + Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm }); + _thisLayerFunction.layer = _thisLayerFunction; + _thisLayerFunction.pixelAspect = 1; + _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h; + _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w; + _thisLayerFunction.pixelAspect = 1; + _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate; + _thisLayerFunction.displayStartTime = 0; + _thisLayerFunction.numLayers = comp.layers.length; + return _thisLayerFunction; + }; +}()); + +const ShapePathInterface = ( + + function () { + return function pathInterfaceFactory(shape, view, propertyGroup) { + var prop = view.sh; + + function interfaceFunction(val) { + if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) { + return interfaceFunction.path; + } + return null; + } + + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + prop.setGroupProperty(PropertyInterface('Path', _propertyGroup)); + Object.defineProperties(interfaceFunction, { + path: { + get: function () { + if (prop.k) { + prop.getValue(); + } + return prop; + }, + }, + shape: { + get: function () { + if (prop.k) { + prop.getValue(); + } + return prop; + }, + }, + _name: { value: shape.nm }, + ix: { value: shape.ix }, + propertyIndex: { value: shape.ix }, + mn: { value: shape.mn }, + propertyGroup: { value: propertyGroup }, + }); + return interfaceFunction; + }; + }() +); + +const ShapeExpressionInterface = (function () { + function iterateElements(shapes, view, propertyGroup) { + var arr = []; + var i; + var len = shapes ? shapes.length : 0; + for (i = 0; i < len; i += 1) { + if (shapes[i].ty === 'gr') { + arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'fl') { + arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'st') { + arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'tm') { + arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'tr') { + // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup)); + } else if (shapes[i].ty === 'el') { + arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'sr') { + arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'sh') { + arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'rc') { + arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'rd') { + arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'rp') { + arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else if (shapes[i].ty === 'gf') { + arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup)); + } else { + arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup)); + } + } + return arr; + } + + function contentsInterfaceFactory(shape, view, propertyGroup) { + var interfaces; + var interfaceFunction = function _interfaceFunction(value) { + var i = 0; + var len = interfaces.length; + while (i < len) { + if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) { + return interfaces[i]; + } + i += 1; + } + if (typeof value === 'number') { + return interfaces[value - 1]; + } + return null; + }; + + interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup); + interfaceFunction.numProperties = interfaces.length; + var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); + interfaceFunction.transform = transformInterface; + interfaceFunction.propertyIndex = shape.cix; + interfaceFunction._name = shape.nm; + + return interfaceFunction; + } + + function groupInterfaceFactory(shape, view, propertyGroup) { + var interfaceFunction = function _interfaceFunction(value) { + switch (value) { + case 'ADBE Vectors Group': + case 'Contents': + case 2: + return interfaceFunction.content; + // Not necessary for now. Keeping them here in case a new case appears + // case 'ADBE Vector Transform Group': + // case 3: + default: + return interfaceFunction.transform; + } + }; + interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup); + var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); + interfaceFunction.content = content; + interfaceFunction.transform = transformInterface; + Object.defineProperty(interfaceFunction, '_name', { + get: function () { + return shape.nm; + }, + }); + // interfaceFunction.content = interfaceFunction; + interfaceFunction.numProperties = shape.np; + interfaceFunction.propertyIndex = shape.ix; + interfaceFunction.nm = shape.nm; + interfaceFunction.mn = shape.mn; + return interfaceFunction; + } + + function fillInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(val) { + if (val === 'Color' || val === 'color') { + return interfaceFunction.color; + } if (val === 'Opacity' || val === 'opacity') { + return interfaceFunction.opacity; + } + return null; + } + Object.defineProperties(interfaceFunction, { + color: { + get: ExpressionPropertyInterface(view.c), + }, + opacity: { + get: ExpressionPropertyInterface(view.o), + }, + _name: { value: shape.nm }, + mn: { value: shape.mn }, + }); + + view.c.setGroupProperty(PropertyInterface('Color', propertyGroup)); + view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup)); + return interfaceFunction; + } + + function gradientFillInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(val) { + if (val === 'Start Point' || val === 'start point') { + return interfaceFunction.startPoint; + } + if (val === 'End Point' || val === 'end point') { + return interfaceFunction.endPoint; + } + if (val === 'Opacity' || val === 'opacity') { + return interfaceFunction.opacity; + } + return null; + } + Object.defineProperties(interfaceFunction, { + startPoint: { + get: ExpressionPropertyInterface(view.s), + }, + endPoint: { + get: ExpressionPropertyInterface(view.e), + }, + opacity: { + get: ExpressionPropertyInterface(view.o), + }, + type: { + get: function () { + return 'a'; + }, + }, + _name: { value: shape.nm }, + mn: { value: shape.mn }, + }); + + view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup)); + view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup)); + view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup)); + return interfaceFunction; + } + function defaultInterfaceFactory() { + function interfaceFunction() { + return null; + } + return interfaceFunction; + } + + function strokeInterfaceFactory(shape, view, propertyGroup) { + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup); + function addPropertyToDashOb(i) { + Object.defineProperty(dashOb, shape.d[i].nm, { + get: ExpressionPropertyInterface(view.d.dataProps[i].p), + }); + } + var i; + var len = shape.d ? shape.d.length : 0; + var dashOb = {}; + for (i = 0; i < len; i += 1) { + addPropertyToDashOb(i); + view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup); + } + + function interfaceFunction(val) { + if (val === 'Color' || val === 'color') { + return interfaceFunction.color; + } if (val === 'Opacity' || val === 'opacity') { + return interfaceFunction.opacity; + } if (val === 'Stroke Width' || val === 'stroke width') { + return interfaceFunction.strokeWidth; + } + return null; + } + Object.defineProperties(interfaceFunction, { + color: { + get: ExpressionPropertyInterface(view.c), + }, + opacity: { + get: ExpressionPropertyInterface(view.o), + }, + strokeWidth: { + get: ExpressionPropertyInterface(view.w), + }, + dash: { + get: function () { + return dashOb; + }, + }, + _name: { value: shape.nm }, + mn: { value: shape.mn }, + }); + + view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup)); + view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup)); + view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup)); + return interfaceFunction; + } + + function trimInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(val) { + if (val === shape.e.ix || val === 'End' || val === 'end') { + return interfaceFunction.end; + } + if (val === shape.s.ix) { + return interfaceFunction.start; + } + if (val === shape.o.ix) { + return interfaceFunction.offset; + } + return null; + } + + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + interfaceFunction.propertyIndex = shape.ix; + + view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup)); + view.e.setGroupProperty(PropertyInterface('End', _propertyGroup)); + view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup)); + interfaceFunction.propertyIndex = shape.ix; + interfaceFunction.propertyGroup = propertyGroup; + + Object.defineProperties(interfaceFunction, { + start: { + get: ExpressionPropertyInterface(view.s), + }, + end: { + get: ExpressionPropertyInterface(view.e), + }, + offset: { + get: ExpressionPropertyInterface(view.o), + }, + _name: { value: shape.nm }, + }); + interfaceFunction.mn = shape.mn; + return interfaceFunction; + } + + function transformInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(value) { + if (shape.a.ix === value || value === 'Anchor Point') { + return interfaceFunction.anchorPoint; + } + if (shape.o.ix === value || value === 'Opacity') { + return interfaceFunction.opacity; + } + if (shape.p.ix === value || value === 'Position') { + return interfaceFunction.position; + } + if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') { + return interfaceFunction.rotation; + } + if (shape.s.ix === value || value === 'Scale') { + return interfaceFunction.scale; + } + if ((shape.sk && shape.sk.ix === value) || value === 'Skew') { + return interfaceFunction.skew; + } + if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') { + return interfaceFunction.skewAxis; + } + return null; + } + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup)); + view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); + view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup)); + view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup)); + view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup)); + if (view.transform.mProps.sk) { + view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup)); + view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup)); + } + view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup)); + Object.defineProperties(interfaceFunction, { + opacity: { + get: ExpressionPropertyInterface(view.transform.mProps.o), + }, + position: { + get: ExpressionPropertyInterface(view.transform.mProps.p), + }, + anchorPoint: { + get: ExpressionPropertyInterface(view.transform.mProps.a), + }, + scale: { + get: ExpressionPropertyInterface(view.transform.mProps.s), + }, + rotation: { + get: ExpressionPropertyInterface(view.transform.mProps.r), + }, + skew: { + get: ExpressionPropertyInterface(view.transform.mProps.sk), + }, + skewAxis: { + get: ExpressionPropertyInterface(view.transform.mProps.sa), + }, + _name: { value: shape.nm }, + }); + interfaceFunction.ty = 'tr'; + interfaceFunction.mn = shape.mn; + interfaceFunction.propertyGroup = propertyGroup; + return interfaceFunction; + } + + function ellipseInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(value) { + if (shape.p.ix === value) { + return interfaceFunction.position; + } + if (shape.s.ix === value) { + return interfaceFunction.size; + } + return null; + } + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + interfaceFunction.propertyIndex = shape.ix; + var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh; + prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup)); + prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); + + Object.defineProperties(interfaceFunction, { + size: { + get: ExpressionPropertyInterface(prop.s), + }, + position: { + get: ExpressionPropertyInterface(prop.p), + }, + _name: { value: shape.nm }, + }); + interfaceFunction.mn = shape.mn; + return interfaceFunction; + } + + function starInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(value) { + if (shape.p.ix === value) { + return interfaceFunction.position; + } + if (shape.r.ix === value) { + return interfaceFunction.rotation; + } + if (shape.pt.ix === value) { + return interfaceFunction.points; + } + if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') { + return interfaceFunction.outerRadius; + } + if (shape.os.ix === value) { + return interfaceFunction.outerRoundness; + } + if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) { + return interfaceFunction.innerRadius; + } + if (shape.is && shape.is.ix === value) { + return interfaceFunction.innerRoundness; + } + return null; + } + + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh; + interfaceFunction.propertyIndex = shape.ix; + prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup)); + prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup)); + prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup)); + prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); + prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup)); + if (shape.ir) { + prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup)); + prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup)); + } + + Object.defineProperties(interfaceFunction, { + position: { + get: ExpressionPropertyInterface(prop.p), + }, + rotation: { + get: ExpressionPropertyInterface(prop.r), + }, + points: { + get: ExpressionPropertyInterface(prop.pt), + }, + outerRadius: { + get: ExpressionPropertyInterface(prop.or), + }, + outerRoundness: { + get: ExpressionPropertyInterface(prop.os), + }, + innerRadius: { + get: ExpressionPropertyInterface(prop.ir), + }, + innerRoundness: { + get: ExpressionPropertyInterface(prop.is), + }, + _name: { value: shape.nm }, + }); + interfaceFunction.mn = shape.mn; + return interfaceFunction; + } + + function rectInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(value) { + if (shape.p.ix === value) { + return interfaceFunction.position; + } + if (shape.r.ix === value) { + return interfaceFunction.roundness; + } + if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') { + return interfaceFunction.size; + } + return null; + } + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + + var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh; + interfaceFunction.propertyIndex = shape.ix; + prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); + prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup)); + prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup)); + + Object.defineProperties(interfaceFunction, { + position: { + get: ExpressionPropertyInterface(prop.p), + }, + roundness: { + get: ExpressionPropertyInterface(prop.r), + }, + size: { + get: ExpressionPropertyInterface(prop.s), + }, + _name: { value: shape.nm }, + }); + interfaceFunction.mn = shape.mn; + return interfaceFunction; + } + + function roundedInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(value) { + if (shape.r.ix === value || value === 'Round Corners 1') { + return interfaceFunction.radius; + } + return null; + } + + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + var prop = view; + interfaceFunction.propertyIndex = shape.ix; + prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup)); + + Object.defineProperties(interfaceFunction, { + radius: { + get: ExpressionPropertyInterface(prop.rd), + }, + _name: { value: shape.nm }, + }); + interfaceFunction.mn = shape.mn; + return interfaceFunction; + } + + function repeaterInterfaceFactory(shape, view, propertyGroup) { + function interfaceFunction(value) { + if (shape.c.ix === value || value === 'Copies') { + return interfaceFunction.copies; + } if (shape.o.ix === value || value === 'Offset') { + return interfaceFunction.offset; + } + return null; + } + + var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); + var prop = view; + interfaceFunction.propertyIndex = shape.ix; + prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup)); + prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup)); + Object.defineProperties(interfaceFunction, { + copies: { + get: ExpressionPropertyInterface(prop.c), + }, + offset: { + get: ExpressionPropertyInterface(prop.o), + }, + _name: { value: shape.nm }, + }); + interfaceFunction.mn = shape.mn; + return interfaceFunction; + } + + return function (shapes, view, propertyGroup) { + var interfaces; + function _interfaceFunction(value) { + if (typeof value === 'number') { + value = value === undefined ? 1 : value; + if (value === 0) { + return propertyGroup; + } + return interfaces[value - 1]; + } + var i = 0; + var len = interfaces.length; + while (i < len) { + if (interfaces[i]._name === value) { + return interfaces[i]; + } + i += 1; + } + return null; + } + function parentGroupWrapper() { + return propertyGroup; + } + _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper); + interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup); + _interfaceFunction.numProperties = interfaces.length; + _interfaceFunction._name = 'Contents'; + return _interfaceFunction; + }; +}()); + +const TextExpressionInterface = (function () { + return function (elem) { + var _prevValue; + var _sourceText; + function _thisLayerFunction(name) { + switch (name) { + case 'ADBE Text Document': + return _thisLayerFunction.sourceText; + default: + return null; + } + } + Object.defineProperty(_thisLayerFunction, 'sourceText', { + get: function () { + elem.textProperty.getValue(); + var stringValue = elem.textProperty.currentData.t; + if (stringValue !== _prevValue) { + elem.textProperty.currentData.t = _prevValue; + _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers + // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive + _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers + } + return _sourceText; + }, + }); + return _thisLayerFunction; + }; +}()); + +const getBlendMode = (function () { + var blendModeEnums = { + 0: 'source-over', + 1: 'multiply', + 2: 'screen', + 3: 'overlay', + 4: 'darken', + 5: 'lighten', + 6: 'color-dodge', + 7: 'color-burn', + 8: 'hard-light', + 9: 'soft-light', + 10: 'difference', + 11: 'exclusion', + 12: 'hue', + 13: 'saturation', + 14: 'color', + 15: 'luminosity', + }; + + return function (mode) { + return blendModeEnums[mode] || ''; + }; +}()); + +function SliderEffect(data, elem, container) { + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); +} +function AngleEffect(data, elem, container) { + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); +} +function ColorEffect(data, elem, container) { + this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container); +} +function PointEffect(data, elem, container) { + this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container); +} +function LayerIndexEffect(data, elem, container) { + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); +} +function MaskIndexEffect(data, elem, container) { + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); +} +function CheckboxEffect(data, elem, container) { + this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); +} +function NoValueEffect() { + this.p = {}; +} + +function EffectsManager(data, element) { + var effects = data.ef || []; + this.effectElements = []; + var i; + var len = effects.length; + var effectItem; + for (i = 0; i < len; i += 1) { + effectItem = new GroupEffect(effects[i], element); + this.effectElements.push(effectItem); + } +} + +function GroupEffect(data, element) { + this.init(data, element); +} + +extendPrototype([DynamicPropertyContainer], GroupEffect); + +GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties; + +GroupEffect.prototype.init = function (data, element) { + this.data = data; + this.effectElements = []; + this.initDynamicPropertyContainer(element); + var i; + var len = this.data.ef.length; + var eff; + var effects = this.data.ef; + for (i = 0; i < len; i += 1) { + eff = null; + switch (effects[i].ty) { + case 0: + eff = new SliderEffect(effects[i], element, this); + break; + case 1: + eff = new AngleEffect(effects[i], element, this); + break; + case 2: + eff = new ColorEffect(effects[i], element, this); + break; + case 3: + eff = new PointEffect(effects[i], element, this); + break; + case 4: + case 7: + eff = new CheckboxEffect(effects[i], element, this); + break; + case 10: + eff = new LayerIndexEffect(effects[i], element, this); + break; + case 11: + eff = new MaskIndexEffect(effects[i], element, this); + break; + case 5: + eff = new EffectsManager(effects[i], element, this); + break; + // case 6: + default: + eff = new NoValueEffect(effects[i], element, this); + break; + } + if (eff) { + this.effectElements.push(eff); + } + } +}; + +function BaseElement() { +} + +BaseElement.prototype = { + checkMasks: function () { + if (!this.data.hasMask) { + return false; + } + var i = 0; + var len = this.data.masksProperties.length; + while (i < len) { + if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) { + return true; + } + i += 1; + } + return false; + }, + initExpressions: function () { + this.layerInterface = LayerExpressionInterface(this); + if (this.data.hasMask && this.maskManager) { + this.layerInterface.registerMaskInterface(this.maskManager); + } + var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface); + this.layerInterface.registerEffectsInterface(effectsInterface); + + if (this.data.ty === 0 || this.data.xt) { + this.compInterface = CompExpressionInterface(this); + } else if (this.data.ty === 4) { + this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface); + this.layerInterface.content = this.layerInterface.shapeInterface; + } else if (this.data.ty === 5) { + this.layerInterface.textInterface = TextExpressionInterface(this); + this.layerInterface.text = this.layerInterface.textInterface; + } + }, + setBlendMode: function () { + var blendModeValue = getBlendMode(this.data.bm); + var elem = this.baseElement || this.layerElement; + + elem.style['mix-blend-mode'] = blendModeValue; + }, + initBaseData: function (data, globalData, comp) { + this.globalData = globalData; + this.comp = comp; + this.data = data; + this.layerId = createElementID(); + + // Stretch factor for old animations missing this property. + if (!this.data.sr) { + this.data.sr = 1; + } + // effects manager + this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties); + }, + getType: function () { + return this.type; + }, + sourceRectAtTime: function () {}, +}; + +/** + * @file + * Handles element's layer frame update. + * Checks layer in point and out point + * + */ + +function FrameElement() {} + +FrameElement.prototype = { + /** + * @function + * Initializes frame related properties. + * + */ + initFrame: function () { + // set to true when inpoint is rendered + this._isFirstFrame = false; + // list of animated properties + this.dynamicProperties = []; + // If layer has been modified in current tick this will be true + this._mdf = false; + }, + /** + * @function + * Calculates all dynamic values + * + * @param {number} num + * current frame number in Layer's time + * @param {boolean} isVisible + * if layers is currently in range + * + */ + prepareProperties: function (num, isVisible) { + var i; + var len = this.dynamicProperties.length; + for (i = 0; i < len; i += 1) { + if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) { + this.dynamicProperties[i].getValue(); + if (this.dynamicProperties[i]._mdf) { + this.globalData._mdf = true; + this._mdf = true; + } + } + } + }, + addDynamicProperty: function (prop) { + if (this.dynamicProperties.indexOf(prop) === -1) { + this.dynamicProperties.push(prop); + } + }, +}; + +const FootageInterface = (function () { + var outlineInterfaceFactory = (function (elem) { + var currentPropertyName = ''; + var currentProperty = elem.getFootageData(); + function init() { + currentPropertyName = ''; + currentProperty = elem.getFootageData(); + return searchProperty; + } + function searchProperty(value) { + if (currentProperty[value]) { + currentPropertyName = value; + currentProperty = currentProperty[value]; + if (typeof currentProperty === 'object') { + return searchProperty; + } + return currentProperty; + } + var propertyNameIndex = value.indexOf(currentPropertyName); + if (propertyNameIndex !== -1) { + var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10); + currentProperty = currentProperty[index]; + if (typeof currentProperty === 'object') { + return searchProperty; + } + return currentProperty; + } + return ''; + } + return init; + }); + + var dataInterfaceFactory = function (elem) { + function interfaceFunction(value) { + if (value === 'Outline') { + return interfaceFunction.outlineInterface(); + } + return null; + } + + interfaceFunction._name = 'Outline'; + interfaceFunction.outlineInterface = outlineInterfaceFactory(elem); + return interfaceFunction; + }; + + return function (elem) { + function _interfaceFunction(value) { + if (value === 'Data') { + return _interfaceFunction.dataInterface; + } + return null; + } + + _interfaceFunction._name = 'Data'; + _interfaceFunction.dataInterface = dataInterfaceFactory(elem); + return _interfaceFunction; + }; +}()); + +function FootageElement(data, globalData, comp) { + this.initFrame(); + this.initRenderable(); + this.assetData = globalData.getAssetData(data.refId); + this.footageData = globalData.imageLoader.getAsset(this.assetData); + this.initBaseData(data, globalData, comp); +} + +FootageElement.prototype.prepareFrame = function () { +}; + +extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement); + +FootageElement.prototype.getBaseElement = function () { + return null; +}; + +FootageElement.prototype.renderFrame = function () { +}; + +FootageElement.prototype.destroy = function () { +}; + +FootageElement.prototype.initExpressions = function () { + this.layerInterface = FootageInterface(this); +}; + +FootageElement.prototype.getFootageData = function () { + return this.footageData; +}; + +function AudioElement(data, globalData, comp) { + this.initFrame(); + this.initRenderable(); + this.assetData = globalData.getAssetData(data.refId); + this.initBaseData(data, globalData, comp); + this._isPlaying = false; + this._canPlay = false; + var assetPath = this.globalData.getAssetsPath(this.assetData); + this.audio = this.globalData.audioController.createAudio(assetPath); + this._currentTime = 0; + this.globalData.audioController.addAudio(this); + this._volumeMultiplier = 1; + this._volume = 1; + this._previousVolume = null; + this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; + this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : { k: [100] }, 1, 0.01, this); +} + +AudioElement.prototype.prepareFrame = function (num) { + this.prepareRenderableFrame(num, true); + this.prepareProperties(num, true); + if (!this.tm._placeholder) { + var timeRemapped = this.tm.v; + this._currentTime = timeRemapped; + } else { + this._currentTime = num / this.data.sr; + } + this._volume = this.lv.v[0]; + var totalVolume = this._volume * this._volumeMultiplier; + if (this._previousVolume !== totalVolume) { + this._previousVolume = totalVolume; + this.audio.volume(totalVolume); + } +}; + +extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement); + +AudioElement.prototype.renderFrame = function () { + if (this.isInRange && this._canPlay) { + if (!this._isPlaying) { + this.audio.play(); + this.audio.seek(this._currentTime / this.globalData.frameRate); + this._isPlaying = true; + } else if (!this.audio.playing() + || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1 + ) { + this.audio.seek(this._currentTime / this.globalData.frameRate); + } + } +}; + +AudioElement.prototype.show = function () { + // this.audio.play() +}; + +AudioElement.prototype.hide = function () { + this.audio.pause(); + this._isPlaying = false; +}; + +AudioElement.prototype.pause = function () { + this.audio.pause(); + this._isPlaying = false; + this._canPlay = false; +}; + +AudioElement.prototype.resume = function () { + this._canPlay = true; +}; + +AudioElement.prototype.setRate = function (rateValue) { + this.audio.rate(rateValue); +}; + +AudioElement.prototype.volume = function (volumeValue) { + this._volumeMultiplier = volumeValue; + this._previousVolume = volumeValue * this._volume; + this.audio.volume(this._previousVolume); +}; + +AudioElement.prototype.getBaseElement = function () { + return null; +}; + +AudioElement.prototype.destroy = function () { +}; + +AudioElement.prototype.sourceRectAtTime = function () { +}; + +AudioElement.prototype.initExpressions = function () { +}; + +function BaseRenderer() {} +BaseRenderer.prototype.checkLayers = function (num) { + var i; + var len = this.layers.length; + var data; + this.completeLayers = true; + for (i = len - 1; i >= 0; i -= 1) { + if (!this.elements[i]) { + data = this.layers[i]; + if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) { + this.buildItem(i); + } + } + this.completeLayers = this.elements[i] ? this.completeLayers : false; + } + this.checkPendingElements(); +}; + +BaseRenderer.prototype.createItem = function (layer) { + switch (layer.ty) { + case 2: + return this.createImage(layer); + case 0: + return this.createComp(layer); + case 1: + return this.createSolid(layer); + case 3: + return this.createNull(layer); + case 4: + return this.createShape(layer); + case 5: + return this.createText(layer); + case 6: + return this.createAudio(layer); + case 13: + return this.createCamera(layer); + case 15: + return this.createFootage(layer); + default: + return this.createNull(layer); + } +}; + +BaseRenderer.prototype.createCamera = function () { + throw new Error('You\'re using a 3d camera. Try the html renderer.'); +}; + +BaseRenderer.prototype.createAudio = function (data) { + return new AudioElement(data, this.globalData, this); +}; + +BaseRenderer.prototype.createFootage = function (data) { + return new FootageElement(data, this.globalData, this); +}; + +BaseRenderer.prototype.buildAllItems = function () { + var i; + var len = this.layers.length; + for (i = 0; i < len; i += 1) { + this.buildItem(i); + } + this.checkPendingElements(); +}; + +BaseRenderer.prototype.includeLayers = function (newLayers) { + this.completeLayers = false; + var i; + var len = newLayers.length; + var j; + var jLen = this.layers.length; + for (i = 0; i < len; i += 1) { + j = 0; + while (j < jLen) { + if (this.layers[j].id === newLayers[i].id) { + this.layers[j] = newLayers[i]; + break; + } + j += 1; + } + } +}; + +BaseRenderer.prototype.setProjectInterface = function (pInterface) { + this.globalData.projectInterface = pInterface; +}; + +BaseRenderer.prototype.initItems = function () { + if (!this.globalData.progressiveLoad) { + this.buildAllItems(); + } +}; +BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) { + var elements = this.elements; + var layers = this.layers; + var i = 0; + var len = layers.length; + while (i < len) { + if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq + if (!elements[i] || elements[i] === true) { + this.buildItem(i); + this.addPendingElement(element); + } else { + hierarchy.push(elements[i]); + elements[i].setAsParent(); + if (layers[i].parent !== undefined) { + this.buildElementParenting(element, layers[i].parent, hierarchy); + } else { + element.setHierarchy(hierarchy); + } + } + } + i += 1; + } +}; + +BaseRenderer.prototype.addPendingElement = function (element) { + this.pendingElements.push(element); +}; + +BaseRenderer.prototype.searchExtraCompositions = function (assets) { + var i; + var len = assets.length; + for (i = 0; i < len; i += 1) { + if (assets[i].xt) { + var comp = this.createComp(assets[i]); + comp.initExpressions(); + this.globalData.projectInterface.registerComposition(comp); + } + } +}; + +BaseRenderer.prototype.getElementByPath = function (path) { + var pathValue = path.shift(); + var element; + if (typeof pathValue === 'number') { + element = this.elements[pathValue]; + } else { + var i; + var len = this.elements.length; + for (i = 0; i < len; i += 1) { + if (this.elements[i].data.nm === pathValue) { + element = this.elements[i]; + break; + } + } + } + if (path.length === 0) { + return element; + } + return element.getElementByPath(path); +}; + +BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) { + this.globalData.fontManager = new FontManager(); + this.globalData.fontManager.addChars(animData.chars); + this.globalData.fontManager.addFonts(animData.fonts, fontsContainer); + this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem); + this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem); + this.globalData.imageLoader = this.animationItem.imagePreloader; + this.globalData.audioController = this.animationItem.audioController; + this.globalData.frameId = 0; + this.globalData.frameRate = animData.fr; + this.globalData.nm = animData.nm; + this.globalData.compSize = { + w: animData.w, + h: animData.h, + }; +}; + +function TransformElement() {} + +TransformElement.prototype = { + initTransform: function () { + this.finalTransform = { + mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 }, + _matMdf: false, + _opMdf: false, + mat: new Matrix(), + }; + if (this.data.ao) { + this.finalTransform.mProp.autoOriented = true; + } + + // TODO: check TYPE 11: Guided elements + if (this.data.ty !== 11) { + // this.createElements(); + } + }, + renderTransform: function () { + this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame; + this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame; + + if (this.hierarchy) { + var mat; + var finalMat = this.finalTransform.mat; + var i = 0; + var len = this.hierarchy.length; + // Checking if any of the transformation matrices in the hierarchy chain has changed. + if (!this.finalTransform._matMdf) { + while (i < len) { + if (this.hierarchy[i].finalTransform.mProp._mdf) { + this.finalTransform._matMdf = true; + break; + } + i += 1; + } + } + + if (this.finalTransform._matMdf) { + mat = this.finalTransform.mProp.v.props; + finalMat.cloneFromProps(mat); + for (i = 0; i < len; i += 1) { + mat = this.hierarchy[i].finalTransform.mProp.v.props; + finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]); + } + } + } + }, + globalToLocal: function (pt) { + var transforms = []; + transforms.push(this.finalTransform); + var flag = true; + var comp = this.comp; + while (flag) { + if (comp.finalTransform) { + if (comp.data.hasMask) { + transforms.splice(0, 0, comp.finalTransform); + } + comp = comp.comp; + } else { + flag = false; + } + } + var i; + var len = transforms.length; + var ptNew; + for (i = 0; i < len; i += 1) { + ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); + // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]); + pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0]; + } + return pt; + }, + mHelper: new Matrix(), +}; + +function MaskElement(data, element, globalData) { + this.data = data; + this.element = element; + this.globalData = globalData; + this.storedData = []; + this.masksProperties = this.data.masksProperties || []; + this.maskElement = null; + var defs = this.globalData.defs; + var i; + var len = this.masksProperties ? this.masksProperties.length : 0; + this.viewData = createSizedArray(len); + this.solidPath = ''; + + var path; + var properties = this.masksProperties; + var count = 0; + var currentMasks = []; + var j; + var jLen; + var layerId = createElementID(); + var rect; + var expansor; + var feMorph; + var x; + var maskType = 'clipPath'; + var maskRef = 'clip-path'; + for (i = 0; i < len; i += 1) { + if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) { + maskType = 'mask'; + maskRef = 'mask'; + } + + if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) { + rect = createNS('rect'); + rect.setAttribute('fill', '#ffffff'); + rect.setAttribute('width', this.element.comp.data.w || 0); + rect.setAttribute('height', this.element.comp.data.h || 0); + currentMasks.push(rect); + } else { + rect = null; + } + + path = createNS('path'); + if (properties[i].mode === 'n') { + // TODO move this to a factory or to a constructor + this.viewData[i] = { + op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element), + prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), + elem: path, + lastPath: '', + }; + defs.appendChild(path); + } else { + count += 1; + + path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff'); + path.setAttribute('clip-rule', 'nonzero'); + var filterID; + + if (properties[i].x.k !== 0) { + maskType = 'mask'; + maskRef = 'mask'; + x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element); + filterID = createElementID(); + expansor = createNS('filter'); + expansor.setAttribute('id', filterID); + feMorph = createNS('feMorphology'); + feMorph.setAttribute('operator', 'erode'); + feMorph.setAttribute('in', 'SourceGraphic'); + feMorph.setAttribute('radius', '0'); + expansor.appendChild(feMorph); + defs.appendChild(expansor); + path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff'); + } else { + feMorph = null; + x = null; + } + + // TODO move this to a factory or to a constructor + this.storedData[i] = { + elem: path, + x: x, + expan: feMorph, + lastPath: '', + lastOperator: '', + filterId: filterID, + lastRadius: 0, + }; + if (properties[i].mode === 'i') { + jLen = currentMasks.length; + var g = createNS('g'); + for (j = 0; j < jLen; j += 1) { + g.appendChild(currentMasks[j]); + } + var mask = createNS('mask'); + mask.setAttribute('mask-type', 'alpha'); + mask.setAttribute('id', layerId + '_' + count); + mask.appendChild(path); + defs.appendChild(mask); + g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')'); + + currentMasks.length = 0; + currentMasks.push(g); + } else { + currentMasks.push(path); + } + if (properties[i].inv && !this.solidPath) { + this.solidPath = this.createLayerSolidPath(); + } + // TODO move this to a factory or to a constructor + this.viewData[i] = { + elem: path, + lastPath: '', + op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element), + prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), + invRect: rect, + }; + if (!this.viewData[i].prop.k) { + this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]); + } + } + } + + this.maskElement = createNS(maskType); + + len = currentMasks.length; + for (i = 0; i < len; i += 1) { + this.maskElement.appendChild(currentMasks[i]); + } + + if (count > 0) { + this.maskElement.setAttribute('id', layerId); + this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')'); + defs.appendChild(this.maskElement); + } + if (this.viewData.length) { + this.element.addRenderableComponent(this); + } +} + +MaskElement.prototype.getMaskProperty = function (pos) { + return this.viewData[pos].prop; +}; + +MaskElement.prototype.renderFrame = function (isFirstFrame) { + var finalMat = this.element.finalTransform.mat; + var i; + var len = this.masksProperties.length; + for (i = 0; i < len; i += 1) { + if (this.viewData[i].prop._mdf || isFirstFrame) { + this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]); + } + if (this.viewData[i].op._mdf || isFirstFrame) { + this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v); + } + if (this.masksProperties[i].mode !== 'n') { + if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) { + this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS()); + } + if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) { + var feMorph = this.storedData[i].expan; + if (this.storedData[i].x.v < 0) { + if (this.storedData[i].lastOperator !== 'erode') { + this.storedData[i].lastOperator = 'erode'; + this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')'); + } + feMorph.setAttribute('radius', -this.storedData[i].x.v); + } else { + if (this.storedData[i].lastOperator !== 'dilate') { + this.storedData[i].lastOperator = 'dilate'; + this.storedData[i].elem.setAttribute('filter', null); + } + this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2); + } + } + } + } +}; + +MaskElement.prototype.getMaskelement = function () { + return this.maskElement; +}; + +MaskElement.prototype.createLayerSolidPath = function () { + var path = 'M0,0 '; + path += ' h' + this.globalData.compSize.w; + path += ' v' + this.globalData.compSize.h; + path += ' h-' + this.globalData.compSize.w; + path += ' v-' + this.globalData.compSize.h + ' '; + return path; +}; + +MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) { + var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1]; + var i; + var len; + len = pathNodes._length; + for (i = 1; i < len; i += 1) { + // pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[i][0]+','+pathNodes.i[i][1] + " "+pathNodes.v[i][0]+','+pathNodes.v[i][1]; + pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1]; + } + // pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[0][0]+','+pathNodes.i[0][1] + " "+pathNodes.v[0][0]+','+pathNodes.v[0][1]; + if (pathNodes.c && len > 1) { + pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1]; + } + // pathNodes.__renderedString = pathString; + + if (viewData.lastPath !== pathString) { + var pathShapeValue = ''; + if (viewData.elem) { + if (pathNodes.c) { + pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString; + } + viewData.elem.setAttribute('d', pathShapeValue); + } + viewData.lastPath = pathString; + } +}; + +MaskElement.prototype.destroy = function () { + this.element = null; + this.globalData = null; + this.maskElement = null; + this.data = null; + this.masksProperties = null; +}; + +const filtersFactory = (function () { + var ob = {}; + ob.createFilter = createFilter; + ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter; + + function createFilter(filId, skipCoordinates) { + var fil = createNS('filter'); + fil.setAttribute('id', filId); + if (skipCoordinates !== true) { + fil.setAttribute('filterUnits', 'objectBoundingBox'); + fil.setAttribute('x', '0%'); + fil.setAttribute('y', '0%'); + fil.setAttribute('width', '100%'); + fil.setAttribute('height', '100%'); + } + return fil; + } + + function createAlphaToLuminanceFilter() { + var feColorMatrix = createNS('feColorMatrix'); + feColorMatrix.setAttribute('type', 'matrix'); + feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB'); + feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1'); + return feColorMatrix; + } + + return ob; +}()); + +const featureSupport = (function () { + var ob = { + maskType: true, + }; + if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) { + ob.maskType = false; + } + return ob; +}()); + +var registeredEffects = {}; +var idPrefix = 'filter_result_'; + +function SVGEffects(elem) { + var i; + var source = 'SourceGraphic'; + var len = elem.data.ef ? elem.data.ef.length : 0; + var filId = createElementID(); + var fil = filtersFactory.createFilter(filId, true); + var count = 0; + this.filters = []; + var filterManager; + for (i = 0; i < len; i += 1) { + filterManager = null; + var type = elem.data.ef[i].ty; + if (registeredEffects[type]) { + var Effect = registeredEffects[type].effect; + filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source); + source = idPrefix + count; + if (registeredEffects[type].countsAsEffect) { + count += 1; + } + } + if (filterManager) { + this.filters.push(filterManager); + } + } + if (count) { + elem.globalData.defs.appendChild(fil); + elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')'); + } + if (this.filters.length) { + elem.addRenderableComponent(this); + } +} + +SVGEffects.prototype.renderFrame = function (_isFirstFrame) { + var i; + var len = this.filters.length; + for (i = 0; i < len; i += 1) { + this.filters[i].renderFrame(_isFirstFrame); + } +}; + +function registerEffect(id, effect, countsAsEffect) { + registeredEffects[id] = { + effect, + countsAsEffect, + }; +} + +function SVGBaseElement() { +} + +SVGBaseElement.prototype = { + initRendererElement: function () { + this.layerElement = createNS('g'); + }, + createContainerElements: function () { + this.matteElement = createNS('g'); + this.transformedElement = this.layerElement; + this.maskedElement = this.layerElement; + this._sizeChanged = false; + var layerElementParent = null; + // If this layer acts as a mask for the following layer + var filId; + var fil; + var gg; + if (this.data.td) { + if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq + var masker = createNS('mask'); + masker.setAttribute('id', this.layerId); + masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq + masker.appendChild(this.layerElement); + layerElementParent = masker; + this.globalData.defs.appendChild(masker); + // This is only for IE and Edge when mask if of type alpha + if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq + masker.setAttribute('mask-type', 'luminance'); + filId = createElementID(); + fil = filtersFactory.createFilter(filId); + this.globalData.defs.appendChild(fil); + fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); + gg = createNS('g'); + gg.appendChild(this.layerElement); + layerElementParent = gg; + masker.appendChild(gg); + gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')'); + } + } else if (this.data.td == 2) { // eslint-disable-line eqeqeq + var maskGroup = createNS('mask'); + maskGroup.setAttribute('id', this.layerId); + maskGroup.setAttribute('mask-type', 'alpha'); + var maskGrouper = createNS('g'); + maskGroup.appendChild(maskGrouper); + filId = createElementID(); + fil = filtersFactory.createFilter(filId); + /// / + + // This solution doesn't work on Android when meta tag with viewport attribute is set + /* var feColorMatrix = createNS('feColorMatrix'); + feColorMatrix.setAttribute('type', 'matrix'); + feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB'); + feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1'); + fil.appendChild(feColorMatrix); */ + /// / + var feCTr = createNS('feComponentTransfer'); + feCTr.setAttribute('in', 'SourceGraphic'); + fil.appendChild(feCTr); + var feFunc = createNS('feFuncA'); + feFunc.setAttribute('type', 'table'); + feFunc.setAttribute('tableValues', '1.0 0.0'); + feCTr.appendChild(feFunc); + /// / + this.globalData.defs.appendChild(fil); + var alphaRect = createNS('rect'); + alphaRect.setAttribute('width', this.comp.data.w); + alphaRect.setAttribute('height', this.comp.data.h); + alphaRect.setAttribute('x', '0'); + alphaRect.setAttribute('y', '0'); + alphaRect.setAttribute('fill', '#ffffff'); + alphaRect.setAttribute('opacity', '0'); + maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')'); + maskGrouper.appendChild(alphaRect); + maskGrouper.appendChild(this.layerElement); + layerElementParent = maskGrouper; + if (!featureSupport.maskType) { + maskGroup.setAttribute('mask-type', 'luminance'); + fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); + gg = createNS('g'); + maskGrouper.appendChild(alphaRect); + gg.appendChild(this.layerElement); + layerElementParent = gg; + maskGrouper.appendChild(gg); + } + this.globalData.defs.appendChild(maskGroup); + } + } else if (this.data.tt) { + this.matteElement.appendChild(this.layerElement); + layerElementParent = this.matteElement; + this.baseElement = this.matteElement; + } else { + this.baseElement = this.layerElement; + } + if (this.data.ln) { + this.layerElement.setAttribute('id', this.data.ln); + } + if (this.data.cl) { + this.layerElement.setAttribute('class', this.data.cl); + } + // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped + if (this.data.ty === 0 && !this.data.hd) { + var cp = createNS('clipPath'); + var pt = createNS('path'); + pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z'); + var clipId = createElementID(); + cp.setAttribute('id', clipId); + cp.appendChild(pt); + this.globalData.defs.appendChild(cp); + + if (this.checkMasks()) { + var cpGroup = createNS('g'); + cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')'); + cpGroup.appendChild(this.layerElement); + this.transformedElement = cpGroup; + if (layerElementParent) { + layerElementParent.appendChild(this.transformedElement); + } else { + this.baseElement = this.transformedElement; + } + } else { + this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')'); + } + } + if (this.data.bm !== 0) { + this.setBlendMode(); + } + }, + renderElement: function () { + if (this.finalTransform._matMdf) { + this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS()); + } + if (this.finalTransform._opMdf) { + this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v); + } + }, + destroyBaseElement: function () { + this.layerElement = null; + this.matteElement = null; + this.maskManager.destroy(); + }, + getBaseElement: function () { + if (this.data.hd) { + return null; + } + return this.baseElement; + }, + createRenderableComponents: function () { + this.maskManager = new MaskElement(this.data, this, this.globalData); + this.renderableEffectsManager = new SVGEffects(this); + }, + setMatte: function (id) { + if (!this.matteElement) { + return; + } + this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')'); + }, +}; + +/** + * @file + * Handles AE's layer parenting property. + * + */ + +function HierarchyElement() {} + +HierarchyElement.prototype = { + /** + * @function + * Initializes hierarchy properties + * + */ + initHierarchy: function () { + // element's parent list + this.hierarchy = []; + // if element is parent of another layer _isParent will be true + this._isParent = false; + this.checkParenting(); + }, + /** + * @function + * Sets layer's hierarchy. + * @param {array} hierarch + * layer's parent list + * + */ + setHierarchy: function (hierarchy) { + this.hierarchy = hierarchy; + }, + /** + * @function + * Sets layer as parent. + * + */ + setAsParent: function () { + this._isParent = true; + }, + /** + * @function + * Searches layer's parenting chain + * + */ + checkParenting: function () { + if (this.data.parent !== undefined) { + this.comp.buildElementParenting(this, this.data.parent, []); + } + }, +}; + +function RenderableDOMElement() {} + +(function () { + var _prototype = { + initElement: function (data, globalData, comp) { + this.initFrame(); + this.initBaseData(data, globalData, comp); + this.initTransform(data, globalData, comp); + this.initHierarchy(); + this.initRenderable(); + this.initRendererElement(); + this.createContainerElements(); + this.createRenderableComponents(); + this.createContent(); + this.hide(); + }, + hide: function () { + // console.log('HIDE', this); + if (!this.hidden && (!this.isInRange || this.isTransparent)) { + var elem = this.baseElement || this.layerElement; + elem.style.display = 'none'; + this.hidden = true; + } + }, + show: function () { + // console.log('SHOW', this); + if (this.isInRange && !this.isTransparent) { + if (!this.data.hd) { + var elem = this.baseElement || this.layerElement; + elem.style.display = 'block'; + } + this.hidden = false; + this._isFirstFrame = true; + } + }, + renderFrame: function () { + // If it is exported as hidden (data.hd === true) no need to render + // If it is not visible no need to render + if (this.data.hd || this.hidden) { + return; + } + this.renderTransform(); + this.renderRenderable(); + this.renderElement(); + this.renderInnerContent(); + if (this._isFirstFrame) { + this._isFirstFrame = false; + } + }, + renderInnerContent: function () {}, + prepareFrame: function (num) { + this._mdf = false; + this.prepareRenderableFrame(num); + this.prepareProperties(num, this.isInRange); + this.checkTransparency(); + }, + destroy: function () { + this.innerElem = null; + this.destroyBaseElement(); + }, + }; + extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement); +}()); + +function IImageElement(data, globalData, comp) { + this.assetData = globalData.getAssetData(data.refId); + this.initElement(data, globalData, comp); + this.sourceRect = { + top: 0, left: 0, width: this.assetData.w, height: this.assetData.h, + }; +} + +extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement); + +IImageElement.prototype.createContent = function () { + var assetPath = this.globalData.getAssetsPath(this.assetData); + + this.innerElem = createNS('image'); + this.innerElem.setAttribute('width', this.assetData.w + 'px'); + this.innerElem.setAttribute('height', this.assetData.h + 'px'); + this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio); + this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath); + + this.layerElement.appendChild(this.innerElem); +}; + +IImageElement.prototype.sourceRectAtTime = function () { + return this.sourceRect; +}; + +function ProcessedElement(element, position) { + this.elem = element; + this.pos = position; +} + +function IShapeElement() { +} + +IShapeElement.prototype = { + addShapeToModifiers: function (data) { + var i; + var len = this.shapeModifiers.length; + for (i = 0; i < len; i += 1) { + this.shapeModifiers[i].addShape(data); + } + }, + isShapeInAnimatedModifiers: function (data) { + var i = 0; + var len = this.shapeModifiers.length; + while (i < len) { + if (this.shapeModifiers[i].isAnimatedWithShape(data)) { + return true; + } + } + return false; + }, + renderModifiers: function () { + if (!this.shapeModifiers.length) { + return; + } + var i; + var len = this.shapes.length; + for (i = 0; i < len; i += 1) { + this.shapes[i].sh.reset(); + } + + len = this.shapeModifiers.length; + var shouldBreakProcess; + for (i = len - 1; i >= 0; i -= 1) { + shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); + // workaround to fix cases where a repeater resets the shape so the following processes get called twice + // TODO: find a better solution for this + if (shouldBreakProcess) { + break; + } + } + }, + + searchProcessedElement: function (elem) { + var elements = this.processedElements; + var i = 0; + var len = elements.length; + while (i < len) { + if (elements[i].elem === elem) { + return elements[i].pos; + } + i += 1; + } + return 0; + }, + addProcessedElement: function (elem, pos) { + var elements = this.processedElements; + var i = elements.length; + while (i) { + i -= 1; + if (elements[i].elem === elem) { + elements[i].pos = pos; + return; + } + } + elements.push(new ProcessedElement(elem, pos)); + }, + prepareFrame: function (num) { + this.prepareRenderableFrame(num); + this.prepareProperties(num, this.isInRange); + }, +}; + +const lineCapEnum = { + 1: 'butt', + 2: 'round', + 3: 'square', +}; + +const lineJoinEnum = { + 1: 'miter', + 2: 'round', + 3: 'bevel', +}; + +function SVGShapeData(transformers, level, shape) { + this.caches = []; + this.styles = []; + this.transformers = transformers; + this.lStr = ''; + this.sh = shape; + this.lvl = level; + // TODO find if there are some cases where _isAnimated can be false. + // For now, since shapes add up with other shapes. They have to be calculated every time. + // One way of finding out is checking if all styles associated to this shape depend only of this shape + this._isAnimated = !!shape.k; + // TODO: commenting this for now since all shapes are animated + var i = 0; + var len = transformers.length; + while (i < len) { + if (transformers[i].mProps.dynamicProperties.length) { + this._isAnimated = true; + break; + } + i += 1; + } +} + +SVGShapeData.prototype.setAsAnimated = function () { + this._isAnimated = true; +}; + +function SVGStyleData(data, level) { + this.data = data; + this.type = data.ty; + this.d = ''; + this.lvl = level; + this._mdf = false; + this.closed = data.hd === true; + this.pElem = createNS('path'); + this.msElem = null; +} + +SVGStyleData.prototype.reset = function () { + this.d = ''; + this._mdf = false; +}; + +function DashProperty(elem, data, renderer, container) { + this.elem = elem; + this.frameId = -1; + this.dataProps = createSizedArray(data.length); + this.renderer = renderer; + this.k = false; + this.dashStr = ''; + this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0); + this.dashoffset = createTypedArray('float32', 1); + this.initDynamicPropertyContainer(container); + var i; + var len = data.length || 0; + var prop; + for (i = 0; i < len; i += 1) { + prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this); + this.k = prop.k || this.k; + this.dataProps[i] = { n: data[i].n, p: prop }; + } + if (!this.k) { + this.getValue(true); + } + this._isAnimated = this.k; +} + +DashProperty.prototype.getValue = function (forceRender) { + if (this.elem.globalData.frameId === this.frameId && !forceRender) { + return; + } + this.frameId = this.elem.globalData.frameId; + this.iterateDynamicProperties(); + this._mdf = this._mdf || forceRender; + if (this._mdf) { + var i = 0; + var len = this.dataProps.length; + if (this.renderer === 'svg') { + this.dashStr = ''; + } + for (i = 0; i < len; i += 1) { + if (this.dataProps[i].n !== 'o') { + if (this.renderer === 'svg') { + this.dashStr += ' ' + this.dataProps[i].p.v; + } else { + this.dashArray[i] = this.dataProps[i].p.v; + } + } else { + this.dashoffset[0] = this.dataProps[i].p.v; + } + } + } +}; +extendPrototype([DynamicPropertyContainer], DashProperty); + +function SVGStrokeStyleData(elem, data, styleOb) { + this.initDynamicPropertyContainer(elem); + this.getValue = this.iterateDynamicProperties; + this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this); + this.w = PropertyFactory.getProp(elem, data.w, 0, null, this); + this.d = new DashProperty(elem, data.d || {}, 'svg', this); + this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this); + this.style = styleOb; + this._isAnimated = !!this._isAnimated; +} + +extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData); + +function SVGFillStyleData(elem, data, styleOb) { + this.initDynamicPropertyContainer(elem); + this.getValue = this.iterateDynamicProperties; + this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this); + this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this); + this.style = styleOb; +} + +extendPrototype([DynamicPropertyContainer], SVGFillStyleData); + +function SVGNoStyleData(elem, data, styleOb) { + this.initDynamicPropertyContainer(elem); + this.getValue = this.iterateDynamicProperties; + this.style = styleOb; +} + +extendPrototype([DynamicPropertyContainer], SVGNoStyleData); + +function GradientProperty(elem, data, container) { + this.data = data; + this.c = createTypedArray('uint8c', data.p * 4); + var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4; + this.o = createTypedArray('float32', cLength); + this._cmdf = false; + this._omdf = false; + this._collapsable = this.checkCollapsable(); + this._hasOpacity = cLength; + this.initDynamicPropertyContainer(container); + this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this); + this.k = this.prop.k; + this.getValue(true); +} + +GradientProperty.prototype.comparePoints = function (values, points) { + var i = 0; + var len = this.o.length / 2; + var diff; + while (i < len) { + diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]); + if (diff > 0.01) { + return false; + } + i += 1; + } + return true; +}; + +GradientProperty.prototype.checkCollapsable = function () { + if (this.o.length / 2 !== this.c.length / 4) { + return false; + } + if (this.data.k.k[0].s) { + var i = 0; + var len = this.data.k.k.length; + while (i < len) { + if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) { + return false; + } + i += 1; + } + } else if (!this.comparePoints(this.data.k.k, this.data.p)) { + return false; + } + return true; +}; + +GradientProperty.prototype.getValue = function (forceRender) { + this.prop.getValue(); + this._mdf = false; + this._cmdf = false; + this._omdf = false; + if (this.prop._mdf || forceRender) { + var i; + var len = this.data.p * 4; + var mult; + var val; + for (i = 0; i < len; i += 1) { + mult = i % 4 === 0 ? 100 : 255; + val = Math.round(this.prop.v[i] * mult); + if (this.c[i] !== val) { + this.c[i] = val; + this._cmdf = !forceRender; + } + } + if (this.o.length) { + len = this.prop.v.length; + for (i = this.data.p * 4; i < len; i += 1) { + mult = i % 2 === 0 ? 100 : 1; + val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i]; + if (this.o[i - this.data.p * 4] !== val) { + this.o[i - this.data.p * 4] = val; + this._omdf = !forceRender; + } + } + } + this._mdf = !forceRender; + } +}; + +extendPrototype([DynamicPropertyContainer], GradientProperty); + +function SVGGradientFillStyleData(elem, data, styleOb) { + this.initDynamicPropertyContainer(elem); + this.getValue = this.iterateDynamicProperties; + this.initGradientData(elem, data, styleOb); +} + +SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) { + this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this); + this.s = PropertyFactory.getProp(elem, data.s, 1, null, this); + this.e = PropertyFactory.getProp(elem, data.e, 1, null, this); + this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this); + this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this); + this.g = new GradientProperty(elem, data.g, this); + this.style = styleOb; + this.stops = []; + this.setGradientData(styleOb.pElem, data); + this.setGradientOpacity(data, styleOb); + this._isAnimated = !!this._isAnimated; +}; + +SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) { + var gradientId = createElementID(); + var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient'); + gfill.setAttribute('id', gradientId); + gfill.setAttribute('spreadMethod', 'pad'); + gfill.setAttribute('gradientUnits', 'userSpaceOnUse'); + var stops = []; + var stop; + var j; + var jLen; + jLen = data.g.p * 4; + for (j = 0; j < jLen; j += 4) { + stop = createNS('stop'); + gfill.appendChild(stop); + stops.push(stop); + } + pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')'); + this.gf = gfill; + this.cst = stops; +}; + +SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) { + if (this.g._hasOpacity && !this.g._collapsable) { + var stop; + var j; + var jLen; + var mask = createNS('mask'); + var maskElement = createNS('path'); + mask.appendChild(maskElement); + var opacityId = createElementID(); + var maskId = createElementID(); + mask.setAttribute('id', maskId); + var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient'); + opFill.setAttribute('id', opacityId); + opFill.setAttribute('spreadMethod', 'pad'); + opFill.setAttribute('gradientUnits', 'userSpaceOnUse'); + jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length; + var stops = this.stops; + for (j = data.g.p * 4; j < jLen; j += 2) { + stop = createNS('stop'); + stop.setAttribute('stop-color', 'rgb(255,255,255)'); + opFill.appendChild(stop); + stops.push(stop); + } + maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')'); + if (data.ty === 'gs') { + maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]); + maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]); + if (data.lj === 1) { + maskElement.setAttribute('stroke-miterlimit', data.ml); + } + } + this.of = opFill; + this.ms = mask; + this.ost = stops; + this.maskId = maskId; + styleOb.msElem = maskElement; + } +}; + +extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData); + +function SVGGradientStrokeStyleData(elem, data, styleOb) { + this.initDynamicPropertyContainer(elem); + this.getValue = this.iterateDynamicProperties; + this.w = PropertyFactory.getProp(elem, data.w, 0, null, this); + this.d = new DashProperty(elem, data.d || {}, 'svg', this); + this.initGradientData(elem, data, styleOb); + this._isAnimated = !!this._isAnimated; +} + +extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData); + +function ShapeGroupData() { + this.it = []; + this.prevViewData = []; + this.gr = createNS('g'); +} + +function SVGTransformData(mProps, op, container) { + this.transform = { + mProps: mProps, + op: op, + container: container, + }; + this.elements = []; + this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length; +} + +const buildShapeString = function (pathNodes, length, closed, mat) { + if (length === 0) { + return ''; + } + var _o = pathNodes.o; + var _i = pathNodes.i; + var _v = pathNodes.v; + var i; + var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]); + for (i = 1; i < length; i += 1) { + shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]); + } + if (closed && length) { + shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]); + shapeString += 'z'; + } + return shapeString; +}; + +const SVGElementsRenderer = (function () { + var _identityMatrix = new Matrix(); + var _matrixHelper = new Matrix(); + + var ob = { + createRenderFunction: createRenderFunction, + }; + + function createRenderFunction(data) { + switch (data.ty) { + case 'fl': + return renderFill; + case 'gf': + return renderGradient; + case 'gs': + return renderGradientStroke; + case 'st': + return renderStroke; + case 'sh': + case 'el': + case 'rc': + case 'sr': + return renderPath; + case 'tr': + return renderContentTransform; + case 'no': + return renderNoop; + default: + return null; + } + } + + function renderContentTransform(styleData, itemData, isFirstFrame) { + if (isFirstFrame || itemData.transform.op._mdf) { + itemData.transform.container.setAttribute('opacity', itemData.transform.op.v); + } + if (isFirstFrame || itemData.transform.mProps._mdf) { + itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS()); + } + } + + function renderNoop() { + + } + + function renderPath(styleData, itemData, isFirstFrame) { + var j; + var jLen; + var pathStringTransformed; + var redraw; + var pathNodes; + var l; + var lLen = itemData.styles.length; + var lvl = itemData.lvl; + var paths; + var mat; + var props; + var iterations; + var k; + for (l = 0; l < lLen; l += 1) { + redraw = itemData.sh._mdf || isFirstFrame; + if (itemData.styles[l].lvl < lvl) { + mat = _matrixHelper.reset(); + iterations = lvl - itemData.styles[l].lvl; + k = itemData.transformers.length - 1; + while (!redraw && iterations > 0) { + redraw = itemData.transformers[k].mProps._mdf || redraw; + iterations -= 1; + k -= 1; + } + if (redraw) { + iterations = lvl - itemData.styles[l].lvl; + k = itemData.transformers.length - 1; + while (iterations > 0) { + props = itemData.transformers[k].mProps.v.props; + mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]); + iterations -= 1; + k -= 1; + } + } + } else { + mat = _identityMatrix; + } + paths = itemData.sh.paths; + jLen = paths._length; + if (redraw) { + pathStringTransformed = ''; + for (j = 0; j < jLen; j += 1) { + pathNodes = paths.shapes[j]; + if (pathNodes && pathNodes._length) { + pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat); + } + } + itemData.caches[l] = pathStringTransformed; + } else { + pathStringTransformed = itemData.caches[l]; + } + itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed; + itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf; + } + } + + function renderFill(styleData, itemData, isFirstFrame) { + var styleElem = itemData.style; + + if (itemData.c._mdf || isFirstFrame) { + styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'); + } + if (itemData.o._mdf || isFirstFrame) { + styleElem.pElem.setAttribute('fill-opacity', itemData.o.v); + } + } + + function renderGradientStroke(styleData, itemData, isFirstFrame) { + renderGradient(styleData, itemData, isFirstFrame); + renderStroke(styleData, itemData, isFirstFrame); + } + + function renderGradient(styleData, itemData, isFirstFrame) { + var gfill = itemData.gf; + var hasOpacity = itemData.g._hasOpacity; + var pt1 = itemData.s.v; + var pt2 = itemData.e.v; + + if (itemData.o._mdf || isFirstFrame) { + var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity'; + itemData.style.pElem.setAttribute(attr, itemData.o.v); + } + if (itemData.s._mdf || isFirstFrame) { + var attr1 = styleData.t === 1 ? 'x1' : 'cx'; + var attr2 = attr1 === 'x1' ? 'y1' : 'cy'; + gfill.setAttribute(attr1, pt1[0]); + gfill.setAttribute(attr2, pt1[1]); + if (hasOpacity && !itemData.g._collapsable) { + itemData.of.setAttribute(attr1, pt1[0]); + itemData.of.setAttribute(attr2, pt1[1]); + } + } + var stops; + var i; + var len; + var stop; + if (itemData.g._cmdf || isFirstFrame) { + stops = itemData.cst; + var cValues = itemData.g.c; + len = stops.length; + for (i = 0; i < len; i += 1) { + stop = stops[i]; + stop.setAttribute('offset', cValues[i * 4] + '%'); + stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')'); + } + } + if (hasOpacity && (itemData.g._omdf || isFirstFrame)) { + var oValues = itemData.g.o; + if (itemData.g._collapsable) { + stops = itemData.cst; + } else { + stops = itemData.ost; + } + len = stops.length; + for (i = 0; i < len; i += 1) { + stop = stops[i]; + if (!itemData.g._collapsable) { + stop.setAttribute('offset', oValues[i * 2] + '%'); + } + stop.setAttribute('stop-opacity', oValues[i * 2 + 1]); + } + } + if (styleData.t === 1) { + if (itemData.e._mdf || isFirstFrame) { + gfill.setAttribute('x2', pt2[0]); + gfill.setAttribute('y2', pt2[1]); + if (hasOpacity && !itemData.g._collapsable) { + itemData.of.setAttribute('x2', pt2[0]); + itemData.of.setAttribute('y2', pt2[1]); + } + } + } else { + var rad; + if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) { + rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); + gfill.setAttribute('r', rad); + if (hasOpacity && !itemData.g._collapsable) { + itemData.of.setAttribute('r', rad); + } + } + if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) { + if (!rad) { + rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); + } + var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); + + var percent = itemData.h.v; + if (percent >= 1) { + percent = 0.99; + } else if (percent <= -1) { + percent = -0.99; + } + var dist = rad * percent; + var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]; + var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]; + gfill.setAttribute('fx', x); + gfill.setAttribute('fy', y); + if (hasOpacity && !itemData.g._collapsable) { + itemData.of.setAttribute('fx', x); + itemData.of.setAttribute('fy', y); + } + } + // gfill.setAttribute('fy','200'); + } + } + + function renderStroke(styleData, itemData, isFirstFrame) { + var styleElem = itemData.style; + var d = itemData.d; + if (d && (d._mdf || isFirstFrame) && d.dashStr) { + styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr); + styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]); + } + if (itemData.c && (itemData.c._mdf || isFirstFrame)) { + styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'); + } + if (itemData.o._mdf || isFirstFrame) { + styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v); + } + if (itemData.w._mdf || isFirstFrame) { + styleElem.pElem.setAttribute('stroke-width', itemData.w.v); + if (styleElem.msElem) { + styleElem.msElem.setAttribute('stroke-width', itemData.w.v); + } + } + } + + return ob; +}()); + +function SVGShapeElement(data, globalData, comp) { + // List of drawable elements + this.shapes = []; + // Full shape data + this.shapesData = data.shapes; + // List of styles that will be applied to shapes + this.stylesList = []; + // List of modifiers that will be applied to shapes + this.shapeModifiers = []; + // List of items in shape tree + this.itemsData = []; + // List of items in previous shape tree + this.processedElements = []; + // List of animated components + this.animatedContents = []; + this.initElement(data, globalData, comp); + // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties. + // List of elements that have been created + this.prevViewData = []; + // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties. +} + +extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement); + +SVGShapeElement.prototype.initSecondaryElement = function () { +}; + +SVGShapeElement.prototype.identityMatrix = new Matrix(); + +SVGShapeElement.prototype.buildExpressionInterface = function () {}; + +SVGShapeElement.prototype.createContent = function () { + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); + this.filterUniqueShapes(); +}; + +/* +This method searches for multiple shapes that affect a single element and one of them is animated +*/ +SVGShapeElement.prototype.filterUniqueShapes = function () { + var i; + var len = this.shapes.length; + var shape; + var j; + var jLen = this.stylesList.length; + var style; + var tempShapes = []; + var areAnimated = false; + for (j = 0; j < jLen; j += 1) { + style = this.stylesList[j]; + areAnimated = false; + tempShapes.length = 0; + for (i = 0; i < len; i += 1) { + shape = this.shapes[i]; + if (shape.styles.indexOf(style) !== -1) { + tempShapes.push(shape); + areAnimated = shape._isAnimated || areAnimated; + } + } + if (tempShapes.length > 1 && areAnimated) { + this.setShapesAsAnimated(tempShapes); + } + } +}; + +SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) { + var i; + var len = shapes.length; + for (i = 0; i < len; i += 1) { + shapes[i].setAsAnimated(); + } +}; + +SVGShapeElement.prototype.createStyleElement = function (data, level) { + // TODO: prevent drawing of hidden styles + var elementData; + var styleOb = new SVGStyleData(data, level); + + var pathElement = styleOb.pElem; + if (data.ty === 'st') { + elementData = new SVGStrokeStyleData(this, data, styleOb); + } else if (data.ty === 'fl') { + elementData = new SVGFillStyleData(this, data, styleOb); + } else if (data.ty === 'gf' || data.ty === 'gs') { + var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData; + elementData = new GradientConstructor(this, data, styleOb); + this.globalData.defs.appendChild(elementData.gf); + if (elementData.maskId) { + this.globalData.defs.appendChild(elementData.ms); + this.globalData.defs.appendChild(elementData.of); + pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')'); + } + } else if (data.ty === 'no') { + elementData = new SVGNoStyleData(this, data, styleOb); + } + + if (data.ty === 'st' || data.ty === 'gs') { + pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]); + pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]); + pathElement.setAttribute('fill-opacity', '0'); + if (data.lj === 1) { + pathElement.setAttribute('stroke-miterlimit', data.ml); + } + } + + if (data.r === 2) { + pathElement.setAttribute('fill-rule', 'evenodd'); + } + + if (data.ln) { + pathElement.setAttribute('id', data.ln); + } + if (data.cl) { + pathElement.setAttribute('class', data.cl); + } + if (data.bm) { + pathElement.style['mix-blend-mode'] = getBlendMode(data.bm); + } + this.stylesList.push(styleOb); + this.addToAnimatedContents(data, elementData); + return elementData; +}; + +SVGShapeElement.prototype.createGroupElement = function (data) { + var elementData = new ShapeGroupData(); + if (data.ln) { + elementData.gr.setAttribute('id', data.ln); + } + if (data.cl) { + elementData.gr.setAttribute('class', data.cl); + } + if (data.bm) { + elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm); + } + return elementData; +}; + +SVGShapeElement.prototype.createTransformElement = function (data, container) { + var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this); + var elementData = new SVGTransformData(transformProperty, transformProperty.o, container); + this.addToAnimatedContents(data, elementData); + return elementData; +}; + +SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) { + var ty = 4; + if (data.ty === 'rc') { + ty = 5; + } else if (data.ty === 'el') { + ty = 6; + } else if (data.ty === 'sr') { + ty = 7; + } + var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this); + var elementData = new SVGShapeData(ownTransformers, level, shapeProperty); + this.shapes.push(elementData); + this.addShapeToModifiers(elementData); + this.addToAnimatedContents(data, elementData); + return elementData; +}; + +SVGShapeElement.prototype.addToAnimatedContents = function (data, element) { + var i = 0; + var len = this.animatedContents.length; + while (i < len) { + if (this.animatedContents[i].element === element) { + return; + } + i += 1; + } + this.animatedContents.push({ + fn: SVGElementsRenderer.createRenderFunction(data), + element: element, + data: data, + }); +}; + +SVGShapeElement.prototype.setElementStyles = function (elementData) { + var arr = elementData.styles; + var j; + var jLen = this.stylesList.length; + for (j = 0; j < jLen; j += 1) { + if (!this.stylesList[j].closed) { + arr.push(this.stylesList[j]); + } + } +}; + +SVGShapeElement.prototype.reloadShapes = function () { + this._isFirstFrame = true; + var i; + var len = this.itemsData.length; + for (i = 0; i < len; i += 1) { + this.prevViewData[i] = this.itemsData[i]; + } + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); + this.filterUniqueShapes(); + len = this.dynamicProperties.length; + for (i = 0; i < len; i += 1) { + this.dynamicProperties[i].getValue(); + } + this.renderModifiers(); +}; + +SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) { + var ownTransformers = [].concat(transformers); + var i; + var len = arr.length - 1; + var j; + var jLen; + var ownStyles = []; + var ownModifiers = []; + var currentTransform; + var modifier; + var processedPos; + for (i = len; i >= 0; i -= 1) { + processedPos = this.searchProcessedElement(arr[i]); + if (!processedPos) { + arr[i]._render = render; + } else { + itemsData[i] = prevViewData[processedPos - 1]; + } + if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') { + if (!processedPos) { + itemsData[i] = this.createStyleElement(arr[i], level); + } else { + itemsData[i].style.closed = false; + } + if (arr[i]._render) { + if (itemsData[i].style.pElem.parentNode !== container) { + container.appendChild(itemsData[i].style.pElem); + } + } + ownStyles.push(itemsData[i].style); + } else if (arr[i].ty === 'gr') { + if (!processedPos) { + itemsData[i] = this.createGroupElement(arr[i]); + } else { + jLen = itemsData[i].it.length; + for (j = 0; j < jLen; j += 1) { + itemsData[i].prevViewData[j] = itemsData[i].it[j]; + } + } + this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render); + if (arr[i]._render) { + if (itemsData[i].gr.parentNode !== container) { + container.appendChild(itemsData[i].gr); + } + } + } else if (arr[i].ty === 'tr') { + if (!processedPos) { + itemsData[i] = this.createTransformElement(arr[i], container); + } + currentTransform = itemsData[i].transform; + ownTransformers.push(currentTransform); + } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') { + if (!processedPos) { + itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level); + } + this.setElementStyles(itemsData[i]); + } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') { + if (!processedPos) { + modifier = ShapeModifiers.getModifier(arr[i].ty); + modifier.init(this, arr[i]); + itemsData[i] = modifier; + this.shapeModifiers.push(modifier); + } else { + modifier = itemsData[i]; + modifier.closed = false; + } + ownModifiers.push(modifier); + } else if (arr[i].ty === 'rp') { + if (!processedPos) { + modifier = ShapeModifiers.getModifier(arr[i].ty); + itemsData[i] = modifier; + modifier.init(this, arr, i, itemsData); + this.shapeModifiers.push(modifier); + render = false; + } else { + modifier = itemsData[i]; + modifier.closed = true; + } + ownModifiers.push(modifier); + } + this.addProcessedElement(arr[i], i + 1); + } + len = ownStyles.length; + for (i = 0; i < len; i += 1) { + ownStyles[i].closed = true; + } + len = ownModifiers.length; + for (i = 0; i < len; i += 1) { + ownModifiers[i].closed = true; + } +}; + +SVGShapeElement.prototype.renderInnerContent = function () { + this.renderModifiers(); + var i; + var len = this.stylesList.length; + for (i = 0; i < len; i += 1) { + this.stylesList[i].reset(); + } + this.renderShape(); + for (i = 0; i < len; i += 1) { + if (this.stylesList[i]._mdf || this._isFirstFrame) { + if (this.stylesList[i].msElem) { + this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); + // Adding M0 0 fixes same mask bug on all browsers + this.stylesList[i].d = 'M0 0' + this.stylesList[i].d; + } + this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0'); + } + } +}; + +SVGShapeElement.prototype.renderShape = function () { + var i; + var len = this.animatedContents.length; + var animatedContent; + for (i = 0; i < len; i += 1) { + animatedContent = this.animatedContents[i]; + if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) { + animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame); + } + } +}; + +SVGShapeElement.prototype.destroy = function () { + this.destroyBaseElement(); + this.shapesData = null; + this.itemsData = null; +}; + +function LetterProps(o, sw, sc, fc, m, p) { + this.o = o; + this.sw = sw; + this.sc = sc; + this.fc = fc; + this.m = m; + this.p = p; + this._mdf = { + o: true, + sw: !!sw, + sc: !!sc, + fc: !!fc, + m: true, + p: true, + }; +} + +LetterProps.prototype.update = function (o, sw, sc, fc, m, p) { + this._mdf.o = false; + this._mdf.sw = false; + this._mdf.sc = false; + this._mdf.fc = false; + this._mdf.m = false; + this._mdf.p = false; + var updated = false; + + if (this.o !== o) { + this.o = o; + this._mdf.o = true; + updated = true; + } + if (this.sw !== sw) { + this.sw = sw; + this._mdf.sw = true; + updated = true; + } + if (this.sc !== sc) { + this.sc = sc; + this._mdf.sc = true; + updated = true; + } + if (this.fc !== fc) { + this.fc = fc; + this._mdf.fc = true; + updated = true; + } + if (this.m !== m) { + this.m = m; + this._mdf.m = true; + updated = true; + } + if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) { + this.p = p; + this._mdf.p = true; + updated = true; + } + return updated; +}; + +function TextProperty(elem, data) { + this._frameId = initialDefaultFrame; + this.pv = ''; + this.v = ''; + this.kf = false; + this._isFirstFrame = true; + this._mdf = false; + this.data = data; + this.elem = elem; + this.comp = this.elem.comp; + this.keysIndex = 0; + this.canResize = false; + this.minimumFontSize = 1; + this.effectsSequence = []; + this.currentData = { + ascent: 0, + boxWidth: this.defaultBoxWidth, + f: '', + fStyle: '', + fWeight: '', + fc: '', + j: '', + justifyOffset: '', + l: [], + lh: 0, + lineWidths: [], + ls: '', + of: '', + s: '', + sc: '', + sw: 0, + t: 0, + tr: 0, + sz: 0, + ps: null, + fillColorAnim: false, + strokeColorAnim: false, + strokeWidthAnim: false, + yOffset: 0, + finalSize: 0, + finalText: [], + finalLineHeight: 0, + __complete: false, + + }; + this.copyData(this.currentData, this.data.d.k[0].s); + + if (!this.searchProperty()) { + this.completeTextData(this.currentData); + } +} + +TextProperty.prototype.defaultBoxWidth = [0, 0]; + +TextProperty.prototype.copyData = function (obj, data) { + for (var s in data) { + if (Object.prototype.hasOwnProperty.call(data, s)) { + obj[s] = data[s]; + } + } + return obj; +}; + +TextProperty.prototype.setCurrentData = function (data) { + if (!data.__complete) { + this.completeTextData(data); + } + this.currentData = data; + this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth; + this._mdf = true; +}; + +TextProperty.prototype.searchProperty = function () { + return this.searchKeyframes(); +}; + +TextProperty.prototype.searchKeyframes = function () { + this.kf = this.data.d.k.length > 1; + if (this.kf) { + this.addEffect(this.getKeyframeValue.bind(this)); + } + return this.kf; +}; + +TextProperty.prototype.addEffect = function (effectFunction) { + this.effectsSequence.push(effectFunction); + this.elem.addDynamicProperty(this); +}; + +TextProperty.prototype.getValue = function (_finalValue) { + if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) { + return; + } + this.currentData.t = this.data.d.k[this.keysIndex].s.t; + var currentValue = this.currentData; + var currentIndex = this.keysIndex; + if (this.lock) { + this.setCurrentData(this.currentData); + return; + } + this.lock = true; + this._mdf = false; + var i; var + len = this.effectsSequence.length; + var finalValue = _finalValue || this.data.d.k[this.keysIndex].s; + for (i = 0; i < len; i += 1) { + // Checking if index changed to prevent creating a new object every time the expression updates. + if (currentIndex !== this.keysIndex) { + finalValue = this.effectsSequence[i](finalValue, finalValue.t); + } else { + finalValue = this.effectsSequence[i](this.currentData, finalValue.t); + } + } + if (currentValue !== finalValue) { + this.setCurrentData(finalValue); + } + this.v = this.currentData; + this.pv = this.v; + this.lock = false; + this.frameId = this.elem.globalData.frameId; +}; + +TextProperty.prototype.getKeyframeValue = function () { + var textKeys = this.data.d.k; + var frameNum = this.elem.comp.renderedFrame; + var i = 0; var + len = textKeys.length; + while (i <= len - 1) { + if (i === len - 1 || textKeys[i + 1].t > frameNum) { + break; + } + i += 1; + } + if (this.keysIndex !== i) { + this.keysIndex = i; + } + return this.data.d.k[this.keysIndex].s; +}; + +TextProperty.prototype.buildFinalText = function (text) { + var charactersArray = []; + var i = 0; + var len = text.length; + var charCode; + var secondCharCode; + var shouldCombine = false; + while (i < len) { + charCode = text.charCodeAt(i); + if (FontManager.isCombinedCharacter(charCode)) { + charactersArray[charactersArray.length - 1] += text.charAt(i); + } else if (charCode >= 0xD800 && charCode <= 0xDBFF) { + secondCharCode = text.charCodeAt(i + 1); + if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) { + if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) { + charactersArray[charactersArray.length - 1] += text.substr(i, 2); + shouldCombine = false; + } else { + charactersArray.push(text.substr(i, 2)); + } + i += 1; + } else { + charactersArray.push(text.charAt(i)); + } + } else if (charCode > 0xDBFF) { + secondCharCode = text.charCodeAt(i + 1); + if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) { + shouldCombine = true; + charactersArray[charactersArray.length - 1] += text.substr(i, 2); + i += 1; + } else { + charactersArray.push(text.charAt(i)); + } + } else if (FontManager.isZeroWidthJoiner(charCode)) { + charactersArray[charactersArray.length - 1] += text.charAt(i); + shouldCombine = true; + } else { + charactersArray.push(text.charAt(i)); + } + i += 1; + } + return charactersArray; +}; + +TextProperty.prototype.completeTextData = function (documentData) { + documentData.__complete = true; + var fontManager = this.elem.globalData.fontManager; + var data = this.data; + var letters = []; + var i; var + len; + var newLineFlag; var index = 0; var + val; + var anchorGrouping = data.m.g; + var currentSize = 0; var currentPos = 0; var currentLine = 0; var + lineWidths = []; + var lineWidth = 0; + var maxLineWidth = 0; + var j; var + jLen; + var fontData = fontManager.getFontByName(documentData.f); + var charData; var + cLength = 0; + + var fontProps = getFontProperties(fontData); + documentData.fWeight = fontProps.weight; + documentData.fStyle = fontProps.style; + documentData.finalSize = documentData.s; + documentData.finalText = this.buildFinalText(documentData.t); + len = documentData.finalText.length; + documentData.finalLineHeight = documentData.lh; + var trackingOffset = (documentData.tr / 1000) * documentData.finalSize; + var charCode; + if (documentData.sz) { + var flag = true; + var boxWidth = documentData.sz[0]; + var boxHeight = documentData.sz[1]; + var currentHeight; var + finalText; + while (flag) { + finalText = this.buildFinalText(documentData.t); + currentHeight = 0; + lineWidth = 0; + len = finalText.length; + trackingOffset = (documentData.tr / 1000) * documentData.finalSize; + var lastSpaceIndex = -1; + for (i = 0; i < len; i += 1) { + charCode = finalText[i].charCodeAt(0); + newLineFlag = false; + if (finalText[i] === ' ') { + lastSpaceIndex = i; + } else if (charCode === 13 || charCode === 3) { + lineWidth = 0; + newLineFlag = true; + currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; + } + if (fontManager.chars) { + charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily); + cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100; + } else { + // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily; + cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize); + } + if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') { + if (lastSpaceIndex === -1) { + len += 1; + } else { + i = lastSpaceIndex; + } + currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; + finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\r'); + // finalText = finalText.substr(0,i) + "\r" + finalText.substr(i === lastSpaceIndex ? i + 1 : i); + lastSpaceIndex = -1; + lineWidth = 0; + } else { + lineWidth += cLength; + lineWidth += trackingOffset; + } + } + currentHeight += (fontData.ascent * documentData.finalSize) / 100; + if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) { + documentData.finalSize -= 1; + documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s; + } else { + documentData.finalText = finalText; + len = documentData.finalText.length; + flag = false; + } + } + } + lineWidth = -trackingOffset; + cLength = 0; + var uncollapsedSpaces = 0; + var currentChar; + for (i = 0; i < len; i += 1) { + newLineFlag = false; + currentChar = documentData.finalText[i]; + charCode = currentChar.charCodeAt(0); + if (charCode === 13 || charCode === 3) { + uncollapsedSpaces = 0; + lineWidths.push(lineWidth); + maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; + lineWidth = -2 * trackingOffset; + val = ''; + newLineFlag = true; + currentLine += 1; + } else { + val = currentChar; + } + if (fontManager.chars) { + charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily); + cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100; + } else { + // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize); + // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily; + cLength = fontManager.measureText(val, documentData.f, documentData.finalSize); + } + + // + if (currentChar === ' ') { + uncollapsedSpaces += cLength + trackingOffset; + } else { + lineWidth += cLength + trackingOffset + uncollapsedSpaces; + uncollapsedSpaces = 0; + } + letters.push({ + l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0, + }); + if (anchorGrouping == 2) { // eslint-disable-line eqeqeq + currentSize += cLength; + if (val === '' || val === ' ' || i === len - 1) { + if (val === '' || val === ' ') { + currentSize -= cLength; + } + while (currentPos <= i) { + letters[currentPos].an = currentSize; + letters[currentPos].ind = index; + letters[currentPos].extra = cLength; + currentPos += 1; + } + index += 1; + currentSize = 0; + } + } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq + currentSize += cLength; + if (val === '' || i === len - 1) { + if (val === '') { + currentSize -= cLength; + } + while (currentPos <= i) { + letters[currentPos].an = currentSize; + letters[currentPos].ind = index; + letters[currentPos].extra = cLength; + currentPos += 1; + } + currentSize = 0; + index += 1; + } + } else { + letters[index].ind = index; + letters[index].extra = 0; + index += 1; + } + } + documentData.l = letters; + maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; + lineWidths.push(lineWidth); + if (documentData.sz) { + documentData.boxWidth = documentData.sz[0]; + documentData.justifyOffset = 0; + } else { + documentData.boxWidth = maxLineWidth; + switch (documentData.j) { + case 1: + documentData.justifyOffset = -documentData.boxWidth; + break; + case 2: + documentData.justifyOffset = -documentData.boxWidth / 2; + break; + default: + documentData.justifyOffset = 0; + } + } + documentData.lineWidths = lineWidths; + + var animators = data.a; var animatorData; var + letterData; + jLen = animators.length; + var based; var ind; var + indexes = []; + for (j = 0; j < jLen; j += 1) { + animatorData = animators[j]; + if (animatorData.a.sc) { + documentData.strokeColorAnim = true; + } + if (animatorData.a.sw) { + documentData.strokeWidthAnim = true; + } + if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) { + documentData.fillColorAnim = true; + } + ind = 0; + based = animatorData.s.b; + for (i = 0; i < len; i += 1) { + letterData = letters[i]; + letterData.anIndexes[j] = ind; + if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq + if (animatorData.s.rn === 1) { + indexes.push(ind); + } + ind += 1; + } + } + data.a[j].s.totalChars = ind; + var currentInd = -1; var + newInd; + if (animatorData.s.rn === 1) { + for (i = 0; i < len; i += 1) { + letterData = letters[i]; + if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq + currentInd = letterData.anIndexes[j]; + newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0]; + } + letterData.anIndexes[j] = newInd; + } + } + } + documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2; + documentData.ls = documentData.ls || 0; + documentData.ascent = (fontData.ascent * documentData.finalSize) / 100; +}; + +TextProperty.prototype.updateDocumentData = function (newData, index) { + index = index === undefined ? this.keysIndex : index; + var dData = this.copyData({}, this.data.d.k[index].s); + dData = this.copyData(dData, newData); + this.data.d.k[index].s = dData; + this.recalculate(index); + this.elem.addDynamicProperty(this); +}; + +TextProperty.prototype.recalculate = function (index) { + var dData = this.data.d.k[index].s; + dData.__complete = false; + this.keysIndex = 0; + this._isFirstFrame = true; + this.getValue(dData); +}; + +TextProperty.prototype.canResizeFont = function (_canResize) { + this.canResize = _canResize; + this.recalculate(this.keysIndex); + this.elem.addDynamicProperty(this); +}; + +TextProperty.prototype.setMinimumFontSize = function (_fontValue) { + this.minimumFontSize = Math.floor(_fontValue) || 1; + this.recalculate(this.keysIndex); + this.elem.addDynamicProperty(this); +}; + +const TextSelectorProp = (function () { + var max = Math.max; + var min = Math.min; + var floor = Math.floor; + + function TextSelectorPropFactory(elem, data) { + this._currentTextLength = -1; + this.k = false; + this.data = data; + this.elem = elem; + this.comp = elem.comp; + this.finalS = 0; + this.finalE = 0; + this.initDynamicPropertyContainer(elem); + this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this); + if ('e' in data) { + this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this); + } else { + this.e = { v: 100 }; + } + this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this); + this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this); + this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this); + this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this); + this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this); + if (!this.dynamicProperties.length) { + this.getValue(); + } + } + + TextSelectorPropFactory.prototype = { + getMult: function (ind) { + if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) { + this.getValue(); + } + var x1 = 0; + var y1 = 0; + var x2 = 1; + var y2 = 1; + if (this.ne.v > 0) { + x1 = this.ne.v / 100.0; + } else { + y1 = -this.ne.v / 100.0; + } + if (this.xe.v > 0) { + x2 = 1.0 - this.xe.v / 100.0; + } else { + y2 = 1.0 + this.xe.v / 100.0; + } + var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get; + + var mult = 0; + var s = this.finalS; + var e = this.finalE; + var type = this.data.sh; + if (type === 2) { + if (e === s) { + mult = ind >= e ? 1 : 0; + } else { + mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); + } + mult = easer(mult); + } else if (type === 3) { + if (e === s) { + mult = ind >= e ? 0 : 1; + } else { + mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); + } + + mult = easer(mult); + } else if (type === 4) { + if (e === s) { + mult = 0; + } else { + mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); + if (mult < 0.5) { + mult *= 2; + } else { + mult = 1 - 2 * (mult - 0.5); + } + } + mult = easer(mult); + } else if (type === 5) { + if (e === s) { + mult = 0; + } else { + var tot = e - s; + /* ind += 0.5; + mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */ + ind = min(max(0, ind + 0.5 - s), e - s); + var x = -tot / 2 + ind; + var a = tot / 2; + mult = Math.sqrt(1 - (x * x) / (a * a)); + } + mult = easer(mult); + } else if (type === 6) { + if (e === s) { + mult = 0; + } else { + ind = min(max(0, ind + 0.5 - s), e - s); + mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line + } + mult = easer(mult); + } else { + if (ind >= floor(s)) { + if (ind - s < 0) { + mult = max(0, min(min(e, 1) - (s - ind), 1)); + } else { + mult = max(0, min(e - ind, 1)); + } + } + mult = easer(mult); + } + // Smoothness implementation. + // The smoothness represents a reduced range of the original [0; 1] range. + // if smoothness is 25%, the new range will be [0.375; 0.625] + // Steps are: + // - find the lower value of the new range (threshold) + // - if multiplier is smaller than that value, floor it to 0 + // - if it is larger, + // - subtract the threshold + // - divide it by the smoothness (this will return the range to [0; 1]) + // Note: If it doesn't work on some scenarios, consider applying it before the easer. + if (this.sm.v !== 100) { + var smoothness = this.sm.v * 0.01; + if (smoothness === 0) { + smoothness = 0.00000001; + } + var threshold = 0.5 - smoothness * 0.5; + if (mult < threshold) { + mult = 0; + } else { + mult = (mult - threshold) / smoothness; + if (mult > 1) { + mult = 1; + } + } + } + return mult * this.a.v; + }, + getValue: function (newCharsFlag) { + this.iterateDynamicProperties(); + this._mdf = newCharsFlag || this._mdf; + this._currentTextLength = this.elem.textProperty.currentData.l.length || 0; + if (newCharsFlag && this.data.r === 2) { + this.e.v = this._currentTextLength; + } + var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars; + var o = this.o.v / divisor; + var s = this.s.v / divisor + o; + var e = (this.e.v / divisor) + o; + if (s > e) { + var _s = s; + s = e; + e = _s; + } + this.finalS = s; + this.finalE = e; + }, + }; + extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory); + + function getTextSelectorProp(elem, data, arr) { + return new TextSelectorPropFactory(elem, data, arr); + } + + return { + getTextSelectorProp: getTextSelectorProp, + }; +}()); + +function TextAnimatorDataProperty(elem, animatorProps, container) { + var defaultData = { propType: false }; + var getProp = PropertyFactory.getProp; + var textAnimatorAnimatables = animatorProps.a; + this.a = { + r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData, + rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData, + ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData, + sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData, + sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData, + s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData, + a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData, + o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData, + p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData, + sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData, + sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData, + fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData, + fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData, + fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData, + fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData, + t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData, + }; + + this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container); + this.s.t = animatorProps.s.t; +} + +function TextAnimatorProperty(textData, renderType, elem) { + this._isFirstFrame = true; + this._hasMaskedPath = false; + this._frameId = -1; + this._textData = textData; + this._renderType = renderType; + this._elem = elem; + this._animatorsData = createSizedArray(this._textData.a.length); + this._pathData = {}; + this._moreOptions = { + alignment: {}, + }; + this.renderedLetters = []; + this.lettersChangedFlag = false; + this.initDynamicPropertyContainer(elem); +} + +TextAnimatorProperty.prototype.searchProperties = function () { + var i; + var len = this._textData.a.length; + var animatorProps; + var getProp = PropertyFactory.getProp; + for (i = 0; i < len; i += 1) { + animatorProps = this._textData.a[i]; + this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this); + } + if (this._textData.p && 'm' in this._textData.p) { + this._pathData = { + a: getProp(this._elem, this._textData.p.a, 0, 0, this), + f: getProp(this._elem, this._textData.p.f, 0, 0, this), + l: getProp(this._elem, this._textData.p.l, 0, 0, this), + r: getProp(this._elem, this._textData.p.r, 0, 0, this), + p: getProp(this._elem, this._textData.p.p, 0, 0, this), + m: this._elem.maskManager.getMaskProperty(this._textData.p.m), + }; + this._hasMaskedPath = true; + } else { + this._hasMaskedPath = false; + } + this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this); +}; + +TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) { + this.lettersChangedFlag = lettersChangedFlag; + if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) { + return; + } + this._isFirstFrame = false; + var alignment = this._moreOptions.alignment.v; + var animators = this._animatorsData; + var textData = this._textData; + var matrixHelper = this.mHelper; + var renderType = this._renderType; + var renderedLettersCount = this.renderedLetters.length; + var xPos; + var yPos; + var i; + var len; + var letters = documentData.l; + var pathInfo; + var currentLength; + var currentPoint; + var segmentLength; + var flag; + var pointInd; + var segmentInd; + var prevPoint; + var points; + var segments; + var partialLength; + var totalLength; + var perc; + var tanAngle; + var mask; + if (this._hasMaskedPath) { + mask = this._pathData.m; + if (!this._pathData.n || this._pathData._mdf) { + var paths = mask.v; + if (this._pathData.r.v) { + paths = paths.reverse(); + } + // TODO: release bezier data cached from previous pathInfo: this._pathData.pi + pathInfo = { + tLength: 0, + segments: [], + }; + len = paths._length - 1; + var bezierData; + totalLength = 0; + for (i = 0; i < len; i += 1) { + bezierData = bez.buildBezierData(paths.v[i], + paths.v[i + 1], + [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], + [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]); + pathInfo.tLength += bezierData.segmentLength; + pathInfo.segments.push(bezierData); + totalLength += bezierData.segmentLength; + } + i = len; + if (mask.v.c) { + bezierData = bez.buildBezierData(paths.v[i], + paths.v[0], + [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], + [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]); + pathInfo.tLength += bezierData.segmentLength; + pathInfo.segments.push(bezierData); + totalLength += bezierData.segmentLength; + } + this._pathData.pi = pathInfo; + } + pathInfo = this._pathData.pi; + + currentLength = this._pathData.f.v; + segmentInd = 0; + pointInd = 1; + segmentLength = 0; + flag = true; + segments = pathInfo.segments; + if (currentLength < 0 && mask.v.c) { + if (pathInfo.tLength < Math.abs(currentLength)) { + currentLength = -Math.abs(currentLength) % pathInfo.tLength; + } + segmentInd = segments.length - 1; + points = segments[segmentInd].points; + pointInd = points.length - 1; + while (currentLength < 0) { + currentLength += points[pointInd].partialLength; + pointInd -= 1; + if (pointInd < 0) { + segmentInd -= 1; + points = segments[segmentInd].points; + pointInd = points.length - 1; + } + } + } + points = segments[segmentInd].points; + prevPoint = points[pointInd - 1]; + currentPoint = points[pointInd]; + partialLength = currentPoint.partialLength; + } + + len = letters.length; + xPos = 0; + yPos = 0; + var yOff = documentData.finalSize * 1.2 * 0.714; + var firstLine = true; + var animatorProps; + var animatorSelector; + var j; + var jLen; + var letterValue; + + jLen = animators.length; + + var mult; + var ind = -1; + var offf; + var xPathPos; + var yPathPos; + var initPathPos = currentLength; + var initSegmentInd = segmentInd; + var initPointInd = pointInd; + var currentLine = -1; + var elemOpacity; + var sc; + var sw; + var fc; + var k; + var letterSw; + var letterSc; + var letterFc; + var letterM = ''; + var letterP = this.defaultPropsArray; + var letterO; + + // + if (documentData.j === 2 || documentData.j === 1) { + var animatorJustifyOffset = 0; + var animatorFirstCharOffset = 0; + var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1; + var lastIndex = 0; + var isNewLine = true; + + for (i = 0; i < len; i += 1) { + if (letters[i].n) { + if (animatorJustifyOffset) { + animatorJustifyOffset += animatorFirstCharOffset; + } + while (lastIndex < i) { + letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; + lastIndex += 1; + } + animatorJustifyOffset = 0; + isNewLine = true; + } else { + for (j = 0; j < jLen; j += 1) { + animatorProps = animators[j].a; + if (animatorProps.t.propType) { + if (isNewLine && documentData.j === 2) { + animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult; + } + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + if (mult.length) { + animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult; + } else { + animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult; + } + } + } + isNewLine = false; + } + } + if (animatorJustifyOffset) { + animatorJustifyOffset += animatorFirstCharOffset; + } + while (lastIndex < i) { + letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; + lastIndex += 1; + } + } + // + + for (i = 0; i < len; i += 1) { + matrixHelper.reset(); + elemOpacity = 1; + if (letters[i].n) { + xPos = 0; + yPos += documentData.yOffset; + yPos += firstLine ? 1 : 0; + currentLength = initPathPos; + firstLine = false; + if (this._hasMaskedPath) { + segmentInd = initSegmentInd; + pointInd = initPointInd; + points = segments[segmentInd].points; + prevPoint = points[pointInd - 1]; + currentPoint = points[pointInd]; + partialLength = currentPoint.partialLength; + segmentLength = 0; + } + letterM = ''; + letterFc = ''; + letterSw = ''; + letterO = ''; + letterP = this.defaultPropsArray; + } else { + if (this._hasMaskedPath) { + if (currentLine !== letters[i].line) { + switch (documentData.j) { + case 1: + currentLength += totalLength - documentData.lineWidths[letters[i].line]; + break; + case 2: + currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2; + break; + default: + break; + } + currentLine = letters[i].line; + } + if (ind !== letters[i].ind) { + if (letters[ind]) { + currentLength += letters[ind].extra; + } + currentLength += letters[i].an / 2; + ind = letters[i].ind; + } + currentLength += (alignment[0] * letters[i].an) * 0.005; + var animatorOffset = 0; + for (j = 0; j < jLen; j += 1) { + animatorProps = animators[j].a; + if (animatorProps.p.propType) { + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + if (mult.length) { + animatorOffset += animatorProps.p.v[0] * mult[0]; + } else { + animatorOffset += animatorProps.p.v[0] * mult; + } + } + if (animatorProps.a.propType) { + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + if (mult.length) { + animatorOffset += animatorProps.a.v[0] * mult[0]; + } else { + animatorOffset += animatorProps.a.v[0] * mult; + } + } + } + flag = true; + // Force alignment only works with a single line for now + if (this._pathData.a.v) { + currentLength = letters[0].an * 0.5 + ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) / (len - 1); + currentLength += this._pathData.f.v; + } + while (flag) { + if (segmentLength + partialLength >= currentLength + animatorOffset || !points) { + perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength; + xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc; + yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc; + matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01); + flag = false; + } else if (points) { + segmentLength += currentPoint.partialLength; + pointInd += 1; + if (pointInd >= points.length) { + pointInd = 0; + segmentInd += 1; + if (!segments[segmentInd]) { + if (mask.v.c) { + pointInd = 0; + segmentInd = 0; + points = segments[segmentInd].points; + } else { + segmentLength -= currentPoint.partialLength; + points = null; + } + } else { + points = segments[segmentInd].points; + } + } + if (points) { + prevPoint = currentPoint; + currentPoint = points[pointInd]; + partialLength = currentPoint.partialLength; + } + } + } + offf = letters[i].an / 2 - letters[i].add; + matrixHelper.translate(-offf, 0, 0); + } else { + offf = letters[i].an / 2 - letters[i].add; + matrixHelper.translate(-offf, 0, 0); + + // Grouping alignment + matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0); + } + + for (j = 0; j < jLen; j += 1) { + animatorProps = animators[j].a; + if (animatorProps.t.propType) { + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean "isNewLine" + if (xPos !== 0 || documentData.j !== 0) { + if (this._hasMaskedPath) { + if (mult.length) { + currentLength += animatorProps.t.v * mult[0]; + } else { + currentLength += animatorProps.t.v * mult; + } + } else if (mult.length) { + xPos += animatorProps.t.v * mult[0]; + } else { + xPos += animatorProps.t.v * mult; + } + } + } + } + if (documentData.strokeWidthAnim) { + sw = documentData.sw || 0; + } + if (documentData.strokeColorAnim) { + if (documentData.sc) { + sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]]; + } else { + sc = [0, 0, 0]; + } + } + if (documentData.fillColorAnim && documentData.fc) { + fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]]; + } + for (j = 0; j < jLen; j += 1) { + animatorProps = animators[j].a; + if (animatorProps.a.propType) { + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + + if (mult.length) { + matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]); + } else { + matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult); + } + } + } + for (j = 0; j < jLen; j += 1) { + animatorProps = animators[j].a; + if (animatorProps.s.propType) { + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + if (mult.length) { + matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1); + } else { + matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1); + } + } + } + for (j = 0; j < jLen; j += 1) { + animatorProps = animators[j].a; + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + if (animatorProps.sk.propType) { + if (mult.length) { + matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]); + } else { + matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult); + } + } + if (animatorProps.r.propType) { + if (mult.length) { + matrixHelper.rotateZ(-animatorProps.r.v * mult[2]); + } else { + matrixHelper.rotateZ(-animatorProps.r.v * mult); + } + } + if (animatorProps.ry.propType) { + if (mult.length) { + matrixHelper.rotateY(animatorProps.ry.v * mult[1]); + } else { + matrixHelper.rotateY(animatorProps.ry.v * mult); + } + } + if (animatorProps.rx.propType) { + if (mult.length) { + matrixHelper.rotateX(animatorProps.rx.v * mult[0]); + } else { + matrixHelper.rotateX(animatorProps.rx.v * mult); + } + } + if (animatorProps.o.propType) { + if (mult.length) { + elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0]; + } else { + elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult; + } + } + if (documentData.strokeWidthAnim && animatorProps.sw.propType) { + if (mult.length) { + sw += animatorProps.sw.v * mult[0]; + } else { + sw += animatorProps.sw.v * mult; + } + } + if (documentData.strokeColorAnim && animatorProps.sc.propType) { + for (k = 0; k < 3; k += 1) { + if (mult.length) { + sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0]; + } else { + sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult; + } + } + } + if (documentData.fillColorAnim && documentData.fc) { + if (animatorProps.fc.propType) { + for (k = 0; k < 3; k += 1) { + if (mult.length) { + fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0]; + } else { + fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult; + } + } + } + if (animatorProps.fh.propType) { + if (mult.length) { + fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]); + } else { + fc = addHueToRGB(fc, animatorProps.fh.v * mult); + } + } + if (animatorProps.fs.propType) { + if (mult.length) { + fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]); + } else { + fc = addSaturationToRGB(fc, animatorProps.fs.v * mult); + } + } + if (animatorProps.fb.propType) { + if (mult.length) { + fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]); + } else { + fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult); + } + } + } + } + + for (j = 0; j < jLen; j += 1) { + animatorProps = animators[j].a; + + if (animatorProps.p.propType) { + animatorSelector = animators[j].s; + mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); + if (this._hasMaskedPath) { + if (mult.length) { + matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]); + } else { + matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); + } + } else if (mult.length) { + matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]); + } else { + matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); + } + } + } + if (documentData.strokeWidthAnim) { + letterSw = sw < 0 ? 0 : sw; + } + if (documentData.strokeColorAnim) { + letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')'; + } + if (documentData.fillColorAnim && documentData.fc) { + letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')'; + } + + if (this._hasMaskedPath) { + matrixHelper.translate(0, -documentData.ls); + + matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0); + if (this._pathData.p.v) { + tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]); + var rot = (Math.atan(tanAngle) * 180) / Math.PI; + if (currentPoint.point[0] < prevPoint.point[0]) { + rot += 180; + } + matrixHelper.rotate((-rot * Math.PI) / 180); + } + matrixHelper.translate(xPathPos, yPathPos, 0); + currentLength -= (alignment[0] * letters[i].an) * 0.005; + if (letters[i + 1] && ind !== letters[i + 1].ind) { + currentLength += letters[i].an / 2; + currentLength += (documentData.tr * 0.001) * documentData.finalSize; + } + } else { + matrixHelper.translate(xPos, yPos, 0); + + if (documentData.ps) { + // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0); + matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); + } + switch (documentData.j) { + case 1: + matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0); + break; + case 2: + matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0); + break; + default: + break; + } + matrixHelper.translate(0, -documentData.ls); + matrixHelper.translate(offf, 0, 0); + matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0); + xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize; + } + if (renderType === 'html') { + letterM = matrixHelper.toCSS(); + } else if (renderType === 'svg') { + letterM = matrixHelper.to2dCSS(); + } else { + letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]]; + } + letterO = elemOpacity; + } + + if (renderedLettersCount <= i) { + letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP); + this.renderedLetters.push(letterValue); + renderedLettersCount += 1; + this.lettersChangedFlag = true; + } else { + letterValue = this.renderedLetters[i]; + this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag; + } + } +}; + +TextAnimatorProperty.prototype.getValue = function () { + if (this._elem.globalData.frameId === this._frameId) { + return; + } + this._frameId = this._elem.globalData.frameId; + this.iterateDynamicProperties(); +}; + +TextAnimatorProperty.prototype.mHelper = new Matrix(); +TextAnimatorProperty.prototype.defaultPropsArray = []; +extendPrototype([DynamicPropertyContainer], TextAnimatorProperty); + +function ITextElement() { +} + +ITextElement.prototype.initElement = function (data, globalData, comp) { + this.lettersChangedFlag = true; + this.initFrame(); + this.initBaseData(data, globalData, comp); + this.textProperty = new TextProperty(this, data.t, this.dynamicProperties); + this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this); + this.initTransform(data, globalData, comp); + this.initHierarchy(); + this.initRenderable(); + this.initRendererElement(); + this.createContainerElements(); + this.createRenderableComponents(); + this.createContent(); + this.hide(); + this.textAnimator.searchProperties(this.dynamicProperties); +}; + +ITextElement.prototype.prepareFrame = function (num) { + this._mdf = false; + this.prepareRenderableFrame(num); + this.prepareProperties(num, this.isInRange); + if (this.textProperty._mdf || this.textProperty._isFirstFrame) { + this.buildNewText(); + this.textProperty._isFirstFrame = false; + this.textProperty._mdf = false; + } +}; + +ITextElement.prototype.createPathShape = function (matrixHelper, shapes) { + var j; + var jLen = shapes.length; + var pathNodes; + var shapeStr = ''; + for (j = 0; j < jLen; j += 1) { + if (shapes[j].ty === 'sh') { + pathNodes = shapes[j].ks.k; + shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper); + } + } + return shapeStr; +}; + +ITextElement.prototype.updateDocumentData = function (newData, index) { + this.textProperty.updateDocumentData(newData, index); +}; + +ITextElement.prototype.canResizeFont = function (_canResize) { + this.textProperty.canResizeFont(_canResize); +}; + +ITextElement.prototype.setMinimumFontSize = function (_fontSize) { + this.textProperty.setMinimumFontSize(_fontSize); +}; + +ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) { + if (documentData.ps) { + matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); + } + matrixHelper.translate(0, -documentData.ls, 0); + switch (documentData.j) { + case 1: + matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0); + break; + case 2: + matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0); + break; + default: + break; + } + matrixHelper.translate(xPos, yPos, 0); +}; + +ITextElement.prototype.buildColor = function (colorData) { + return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')'; +}; + +ITextElement.prototype.emptyProp = new LetterProps(); + +ITextElement.prototype.destroy = function () { + +}; + +var emptyShapeData = { + shapes: [], +}; + +function SVGTextLottieElement(data, globalData, comp) { + this.textSpans = []; + this.renderType = 'svg'; + this.initElement(data, globalData, comp); +} + +extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement); + +SVGTextLottieElement.prototype.createContent = function () { + if (this.data.singleShape && !this.globalData.fontManager.chars) { + this.textContainer = createNS('text'); + } +}; + +SVGTextLottieElement.prototype.buildTextContents = function (textArray) { + var i = 0; + var len = textArray.length; + var textContents = []; + var currentTextContent = ''; + while (i < len) { + if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) { + textContents.push(currentTextContent); + currentTextContent = ''; + } else { + currentTextContent += textArray[i]; + } + i += 1; + } + textContents.push(currentTextContent); + return textContents; +}; + +SVGTextLottieElement.prototype.buildShapeData = function (data, scale) { + // data should probably be cloned to apply scale separately to each instance of a text on different layers + // but since text internal content gets only rendered once and then it's never rerendered, + // it's probably safe not to clone data and reuse always the same instance even if the object is mutated. + // Avoiding cloning is preferred since cloning each character shape data is expensive + if (data.shapes && data.shapes.length) { + var shape = data.shapes[0]; + if (shape.it) { + var shapeItem = shape.it[shape.it.length - 1]; + if (shapeItem.s) { + shapeItem.s.k[0] = scale; + shapeItem.s.k[1] = scale; + } + } + } + return data; +}; + +SVGTextLottieElement.prototype.buildNewText = function () { + this.addDynamicProperty(this); + var i; + var len; + + var documentData = this.textProperty.currentData; + this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0); + if (documentData.fc) { + this.layerElement.setAttribute('fill', this.buildColor(documentData.fc)); + } else { + this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)'); + } + if (documentData.sc) { + this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc)); + this.layerElement.setAttribute('stroke-width', documentData.sw); + } + this.layerElement.setAttribute('font-size', documentData.finalSize); + var fontData = this.globalData.fontManager.getFontByName(documentData.f); + if (fontData.fClass) { + this.layerElement.setAttribute('class', fontData.fClass); + } else { + this.layerElement.setAttribute('font-family', fontData.fFamily); + var fWeight = documentData.fWeight; + var fStyle = documentData.fStyle; + this.layerElement.setAttribute('font-style', fStyle); + this.layerElement.setAttribute('font-weight', fWeight); + } + this.layerElement.setAttribute('aria-label', documentData.t); + + var letters = documentData.l || []; + var usesGlyphs = !!this.globalData.fontManager.chars; + len = letters.length; + + var tSpan; + var matrixHelper = this.mHelper; + var shapeStr = ''; + var singleShape = this.data.singleShape; + var xPos = 0; + var yPos = 0; + var firstLine = true; + var trackingOffset = documentData.tr * 0.001 * documentData.finalSize; + if (singleShape && !usesGlyphs && !documentData.sz) { + var tElement = this.textContainer; + var justify = 'start'; + switch (documentData.j) { + case 1: + justify = 'end'; + break; + case 2: + justify = 'middle'; + break; + default: + justify = 'start'; + break; + } + tElement.setAttribute('text-anchor', justify); + tElement.setAttribute('letter-spacing', trackingOffset); + var textContent = this.buildTextContents(documentData.finalText); + len = textContent.length; + yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0; + for (i = 0; i < len; i += 1) { + tSpan = this.textSpans[i].span || createNS('tspan'); + tSpan.textContent = textContent[i]; + tSpan.setAttribute('x', 0); + tSpan.setAttribute('y', yPos); + tSpan.style.display = 'inherit'; + tElement.appendChild(tSpan); + if (!this.textSpans[i]) { + this.textSpans[i] = { + span: null, + glyph: null, + }; + } + this.textSpans[i].span = tSpan; + yPos += documentData.finalLineHeight; + } + + this.layerElement.appendChild(tElement); + } else { + var cachedSpansLength = this.textSpans.length; + var charData; + for (i = 0; i < len; i += 1) { + if (!this.textSpans[i]) { + this.textSpans[i] = { + span: null, + childSpan: null, + glyph: null, + }; + } + if (!usesGlyphs || !singleShape || i === 0) { + tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text'); + if (cachedSpansLength <= i) { + tSpan.setAttribute('stroke-linecap', 'butt'); + tSpan.setAttribute('stroke-linejoin', 'round'); + tSpan.setAttribute('stroke-miterlimit', '4'); + this.textSpans[i].span = tSpan; + if (usesGlyphs) { + var childSpan = createNS('g'); + tSpan.appendChild(childSpan); + this.textSpans[i].childSpan = childSpan; + } + this.textSpans[i].span = tSpan; + this.layerElement.appendChild(tSpan); + } + tSpan.style.display = 'inherit'; + } + + matrixHelper.reset(); + if (singleShape) { + if (letters[i].n) { + xPos = -trackingOffset; + yPos += documentData.yOffset; + yPos += firstLine ? 1 : 0; + firstLine = false; + } + this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); + xPos += letters[i].l || 0; + // xPos += letters[i].val === ' ' ? 0 : trackingOffset; + xPos += trackingOffset; + } + if (usesGlyphs) { + charData = this.globalData.fontManager.getCharData( + documentData.finalText[i], + fontData.fStyle, + this.globalData.fontManager.getFontByName(documentData.f).fFamily + ); + var glyphElement; + // t === 1 means the character has been replaced with an animated shaped + if (charData.t === 1) { + glyphElement = new SVGCompElement(charData.data, this.globalData, this); + } else { + var data = emptyShapeData; + if (charData.data && charData.data.shapes) { + data = this.buildShapeData(charData.data, documentData.finalSize); + } + glyphElement = new SVGShapeElement(data, this.globalData, this); + } + if (this.textSpans[i].glyph) { + var glyph = this.textSpans[i].glyph; + this.textSpans[i].childSpan.removeChild(glyph.layerElement); + glyph.destroy(); + } + this.textSpans[i].glyph = glyphElement; + glyphElement._debug = true; + glyphElement.prepareFrame(0); + glyphElement.renderFrame(); + this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); + // when using animated shapes, the layer will be scaled instead of replacing the internal scale + // this might have issues with strokes and might need a different solution + if (charData.t === 1) { + this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')'); + } + } else { + if (singleShape) { + tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')'); + } + tSpan.textContent = letters[i].val; + tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve'); + } + // + } + if (singleShape && tSpan) { + tSpan.setAttribute('d', shapeStr); + } + } + while (i < this.textSpans.length) { + this.textSpans[i].span.style.display = 'none'; + i += 1; + } + + this._sizeChanged = true; +}; + +SVGTextLottieElement.prototype.sourceRectAtTime = function () { + this.prepareFrame(this.comp.renderedFrame - this.data.st); + this.renderInnerContent(); + if (this._sizeChanged) { + this._sizeChanged = false; + var textBox = this.layerElement.getBBox(); + this.bbox = { + top: textBox.y, + left: textBox.x, + width: textBox.width, + height: textBox.height, + }; + } + return this.bbox; +}; + +SVGTextLottieElement.prototype.getValue = function () { + var i; + var len = this.textSpans.length; + var glyphElement; + this.renderedFrame = this.comp.renderedFrame; + for (i = 0; i < len; i += 1) { + glyphElement = this.textSpans[i].glyph; + if (glyphElement) { + glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st); + if (glyphElement._mdf) { + this._mdf = true; + } + } + } +}; + +SVGTextLottieElement.prototype.renderInnerContent = function () { + if (!this.data.singleShape || this._mdf) { + this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); + if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) { + this._sizeChanged = true; + var i; + var len; + var renderedLetters = this.textAnimator.renderedLetters; + + var letters = this.textProperty.currentData.l; + + len = letters.length; + var renderedLetter; + var textSpan; + var glyphElement; + for (i = 0; i < len; i += 1) { + if (!letters[i].n) { + renderedLetter = renderedLetters[i]; + textSpan = this.textSpans[i].span; + glyphElement = this.textSpans[i].glyph; + if (glyphElement) { + glyphElement.renderFrame(); + } + if (renderedLetter._mdf.m) { + textSpan.setAttribute('transform', renderedLetter.m); + } + if (renderedLetter._mdf.o) { + textSpan.setAttribute('opacity', renderedLetter.o); + } + if (renderedLetter._mdf.sw) { + textSpan.setAttribute('stroke-width', renderedLetter.sw); + } + if (renderedLetter._mdf.sc) { + textSpan.setAttribute('stroke', renderedLetter.sc); + } + if (renderedLetter._mdf.fc) { + textSpan.setAttribute('fill', renderedLetter.fc); + } + } + } + } + } +}; + +function ISolidElement(data, globalData, comp) { + this.initElement(data, globalData, comp); +} +extendPrototype([IImageElement], ISolidElement); + +ISolidElement.prototype.createContent = function () { + var rect = createNS('rect'); + /// /rect.style.width = this.data.sw; + /// /rect.style.height = this.data.sh; + /// /rect.style.fill = this.data.sc; + rect.setAttribute('width', this.data.sw); + rect.setAttribute('height', this.data.sh); + rect.setAttribute('fill', this.data.sc); + this.layerElement.appendChild(rect); +}; + +function NullElement(data, globalData, comp) { + this.initFrame(); + this.initBaseData(data, globalData, comp); + this.initFrame(); + this.initTransform(data, globalData, comp); + this.initHierarchy(); +} + +NullElement.prototype.prepareFrame = function (num) { + this.prepareProperties(num, true); +}; + +NullElement.prototype.renderFrame = function () { +}; + +NullElement.prototype.getBaseElement = function () { + return null; +}; + +NullElement.prototype.destroy = function () { +}; + +NullElement.prototype.sourceRectAtTime = function () { +}; + +NullElement.prototype.hide = function () { +}; + +extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement); + +function SVGRendererBase() { +} + +extendPrototype([BaseRenderer], SVGRendererBase); + +SVGRendererBase.prototype.createNull = function (data) { + return new NullElement(data, this.globalData, this); +}; + +SVGRendererBase.prototype.createShape = function (data) { + return new SVGShapeElement(data, this.globalData, this); +}; + +SVGRendererBase.prototype.createText = function (data) { + return new SVGTextLottieElement(data, this.globalData, this); +}; + +SVGRendererBase.prototype.createImage = function (data) { + return new IImageElement(data, this.globalData, this); +}; + +SVGRendererBase.prototype.createSolid = function (data) { + return new ISolidElement(data, this.globalData, this); +}; + +SVGRendererBase.prototype.configAnimation = function (animData) { + this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); + if (this.renderConfig.viewBoxSize) { + this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize); + } else { + this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h); + } + + if (!this.renderConfig.viewBoxOnly) { + this.svgElement.setAttribute('width', animData.w); + this.svgElement.setAttribute('height', animData.h); + this.svgElement.style.width = '100%'; + this.svgElement.style.height = '100%'; + this.svgElement.style.transform = 'translate3d(0,0,0)'; + this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility; + } + if (this.renderConfig.width) { + this.svgElement.setAttribute('width', this.renderConfig.width); + } + if (this.renderConfig.height) { + this.svgElement.setAttribute('height', this.renderConfig.height); + } + if (this.renderConfig.className) { + this.svgElement.setAttribute('class', this.renderConfig.className); + } + if (this.renderConfig.id) { + this.svgElement.setAttribute('id', this.renderConfig.id); + } + if (this.renderConfig.focusable !== undefined) { + this.svgElement.setAttribute('focusable', this.renderConfig.focusable); + } + this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); + // this.layerElement.style.transform = 'translate3d(0,0,0)'; + // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = "0px 0px 0px"; + this.animationItem.wrapper.appendChild(this.svgElement); + // Mask animation + var defs = this.globalData.defs; + + this.setupGlobalData(animData, defs); + this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; + this.data = animData; + + var maskElement = createNS('clipPath'); + var rect = createNS('rect'); + rect.setAttribute('width', animData.w); + rect.setAttribute('height', animData.h); + rect.setAttribute('x', 0); + rect.setAttribute('y', 0); + var maskId = createElementID(); + maskElement.setAttribute('id', maskId); + maskElement.appendChild(rect); + this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')'); + + defs.appendChild(maskElement); + this.layers = animData.layers; + this.elements = createSizedArray(animData.layers.length); +}; + +SVGRendererBase.prototype.destroy = function () { + if (this.animationItem.wrapper) { + this.animationItem.wrapper.innerText = ''; + } + this.layerElement = null; + this.globalData.defs = null; + var i; + var len = this.layers ? this.layers.length : 0; + for (i = 0; i < len; i += 1) { + if (this.elements[i]) { + this.elements[i].destroy(); + } + } + this.elements.length = 0; + this.destroyed = true; + this.animationItem = null; +}; + +SVGRendererBase.prototype.updateContainerSize = function () { +}; + +SVGRendererBase.prototype.buildItem = function (pos) { + var elements = this.elements; + if (elements[pos] || this.layers[pos].ty === 99) { + return; + } + elements[pos] = true; + var element = this.createItem(this.layers[pos]); + + elements[pos] = element; + if (getExpressionsPlugin()) { + if (this.layers[pos].ty === 0) { + this.globalData.projectInterface.registerComposition(element); + } + element.initExpressions(); + } + this.appendElementInPos(element, pos); + if (this.layers[pos].tt) { + if (!this.elements[pos - 1] || this.elements[pos - 1] === true) { + this.buildItem(pos - 1); + this.addPendingElement(element); + } else { + element.setMatte(elements[pos - 1].layerId); + } + } +}; + +SVGRendererBase.prototype.checkPendingElements = function () { + while (this.pendingElements.length) { + var element = this.pendingElements.pop(); + element.checkParenting(); + if (element.data.tt) { + var i = 0; + var len = this.elements.length; + while (i < len) { + if (this.elements[i] === element) { + element.setMatte(this.elements[i - 1].layerId); + break; + } + i += 1; + } + } + } +}; + +SVGRendererBase.prototype.renderFrame = function (num) { + if (this.renderedFrame === num || this.destroyed) { + return; + } + if (num === null) { + num = this.renderedFrame; + } else { + this.renderedFrame = num; + } + // console.log('-------'); + // console.log('FRAME ',num); + this.globalData.frameNum = num; + this.globalData.frameId += 1; + this.globalData.projectInterface.currentFrame = num; + this.globalData._mdf = false; + var i; + var len = this.layers.length; + if (!this.completeLayers) { + this.checkLayers(num); + } + for (i = len - 1; i >= 0; i -= 1) { + if (this.completeLayers || this.elements[i]) { + this.elements[i].prepareFrame(num - this.layers[i].st); + } + } + if (this.globalData._mdf) { + for (i = 0; i < len; i += 1) { + if (this.completeLayers || this.elements[i]) { + this.elements[i].renderFrame(); + } + } + } +}; + +SVGRendererBase.prototype.appendElementInPos = function (element, pos) { + var newElement = element.getBaseElement(); + if (!newElement) { + return; + } + var i = 0; + var nextElement; + while (i < pos) { + if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) { + nextElement = this.elements[i].getBaseElement(); + } + i += 1; + } + if (nextElement) { + this.layerElement.insertBefore(newElement, nextElement); + } else { + this.layerElement.appendChild(newElement); + } +}; + +SVGRendererBase.prototype.hide = function () { + this.layerElement.style.display = 'none'; +}; + +SVGRendererBase.prototype.show = function () { + this.layerElement.style.display = 'block'; +}; + +function ICompElement() {} + +extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement); + +ICompElement.prototype.initElement = function (data, globalData, comp) { + this.initFrame(); + this.initBaseData(data, globalData, comp); + this.initTransform(data, globalData, comp); + this.initRenderable(); + this.initHierarchy(); + this.initRendererElement(); + this.createContainerElements(); + this.createRenderableComponents(); + if (this.data.xt || !globalData.progressiveLoad) { + this.buildAllItems(); + } + this.hide(); +}; + +/* ICompElement.prototype.hide = function(){ + if(!this.hidden){ + this.hideElement(); + var i,len = this.elements.length; + for( i = 0; i < len; i+=1 ){ + if(this.elements[i]){ + this.elements[i].hide(); + } + } + } +}; */ + +ICompElement.prototype.prepareFrame = function (num) { + this._mdf = false; + this.prepareRenderableFrame(num); + this.prepareProperties(num, this.isInRange); + if (!this.isInRange && !this.data.xt) { + return; + } + + if (!this.tm._placeholder) { + var timeRemapped = this.tm.v; + if (timeRemapped === this.data.op) { + timeRemapped = this.data.op - 1; + } + this.renderedFrame = timeRemapped; + } else { + this.renderedFrame = num / this.data.sr; + } + var i; + var len = this.elements.length; + if (!this.completeLayers) { + this.checkLayers(this.renderedFrame); + } + // This iteration needs to be backwards because of how expressions connect between each other + for (i = len - 1; i >= 0; i -= 1) { + if (this.completeLayers || this.elements[i]) { + this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st); + if (this.elements[i]._mdf) { + this._mdf = true; + } + } + } +}; + +ICompElement.prototype.renderInnerContent = function () { + var i; + var len = this.layers.length; + for (i = 0; i < len; i += 1) { + if (this.completeLayers || this.elements[i]) { + this.elements[i].renderFrame(); + } + } +}; + +ICompElement.prototype.setElements = function (elems) { + this.elements = elems; +}; + +ICompElement.prototype.getElements = function () { + return this.elements; +}; + +ICompElement.prototype.destroyElements = function () { + var i; + var len = this.layers.length; + for (i = 0; i < len; i += 1) { + if (this.elements[i]) { + this.elements[i].destroy(); + } + } +}; + +ICompElement.prototype.destroy = function () { + this.destroyElements(); + this.destroyBaseElement(); +}; + +function SVGCompElement(data, globalData, comp) { + this.layers = data.layers; + this.supports3d = true; + this.completeLayers = false; + this.pendingElements = []; + this.elements = this.layers ? createSizedArray(this.layers.length) : []; + this.initElement(data, globalData, comp); + this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; +} + +extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement); + +SVGCompElement.prototype.createComp = function (data) { + return new SVGCompElement(data, this.globalData, this); +}; + +function SVGRenderer(animationItem, config) { + this.animationItem = animationItem; + this.layers = null; + this.renderedFrame = -1; + this.svgElement = createNS('svg'); + var ariaLabel = ''; + if (config && config.title) { + var titleElement = createNS('title'); + var titleId = createElementID(); + titleElement.setAttribute('id', titleId); + titleElement.textContent = config.title; + this.svgElement.appendChild(titleElement); + ariaLabel += titleId; + } + if (config && config.description) { + var descElement = createNS('desc'); + var descId = createElementID(); + descElement.setAttribute('id', descId); + descElement.textContent = config.description; + this.svgElement.appendChild(descElement); + ariaLabel += ' ' + descId; + } + if (ariaLabel) { + this.svgElement.setAttribute('aria-labelledby', ariaLabel); + } + var defs = createNS('defs'); + this.svgElement.appendChild(defs); + var maskElement = createNS('g'); + this.svgElement.appendChild(maskElement); + this.layerElement = maskElement; + this.renderConfig = { + preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet', + imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice', + contentVisibility: (config && config.contentVisibility) || 'visible', + progressiveLoad: (config && config.progressiveLoad) || false, + hideOnTransparent: !((config && config.hideOnTransparent === false)), + viewBoxOnly: (config && config.viewBoxOnly) || false, + viewBoxSize: (config && config.viewBoxSize) || false, + className: (config && config.className) || '', + id: (config && config.id) || '', + focusable: config && config.focusable, + filterSize: { + width: (config && config.filterSize && config.filterSize.width) || '100%', + height: (config && config.filterSize && config.filterSize.height) || '100%', + x: (config && config.filterSize && config.filterSize.x) || '0%', + y: (config && config.filterSize && config.filterSize.y) || '0%', + }, + width: (config && config.width), + height: (config && config.height), + }; + + this.globalData = { + _mdf: false, + frameNum: -1, + defs: defs, + renderConfig: this.renderConfig, + }; + this.elements = []; + this.pendingElements = []; + this.destroyed = false; + this.rendererType = 'svg'; +} + +extendPrototype([SVGRendererBase], SVGRenderer); + +SVGRenderer.prototype.createComp = function (data) { + return new SVGCompElement(data, this.globalData, this); +}; + +function CVContextData() { + this.saved = []; + this.cArrPos = 0; + this.cTr = new Matrix(); + this.cO = 1; + var i; + var len = 15; + this.savedOp = createTypedArray('float32', len); + for (i = 0; i < len; i += 1) { + this.saved[i] = createTypedArray('float32', 16); + } + this._length = len; +} + +CVContextData.prototype.duplicate = function () { + var newLength = this._length * 2; + var currentSavedOp = this.savedOp; + this.savedOp = createTypedArray('float32', newLength); + this.savedOp.set(currentSavedOp); + var i = 0; + for (i = this._length; i < newLength; i += 1) { + this.saved[i] = createTypedArray('float32', 16); + } + this._length = newLength; +}; + +CVContextData.prototype.reset = function () { + this.cArrPos = 0; + this.cTr.reset(); + this.cO = 1; +}; + +function ShapeTransformManager() { + this.sequences = {}; + this.sequenceList = []; + this.transform_key_count = 0; +} + +ShapeTransformManager.prototype = { + addTransformSequence: function (transforms) { + var i; + var len = transforms.length; + var key = '_'; + for (i = 0; i < len; i += 1) { + key += transforms[i].transform.key + '_'; + } + var sequence = this.sequences[key]; + if (!sequence) { + sequence = { + transforms: [].concat(transforms), + finalTransform: new Matrix(), + _mdf: false, + }; + this.sequences[key] = sequence; + this.sequenceList.push(sequence); + } + return sequence; + }, + processSequence: function (sequence, isFirstFrame) { + var i = 0; + var len = sequence.transforms.length; + var _mdf = isFirstFrame; + while (i < len && !isFirstFrame) { + if (sequence.transforms[i].transform.mProps._mdf) { + _mdf = true; + break; + } + i += 1; + } + if (_mdf) { + var props; + sequence.finalTransform.reset(); + for (i = len - 1; i >= 0; i -= 1) { + props = sequence.transforms[i].transform.mProps.v.props; + sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]); + } + } + sequence._mdf = _mdf; + }, + processSequences: function (isFirstFrame) { + var i; + var len = this.sequenceList.length; + for (i = 0; i < len; i += 1) { + this.processSequence(this.sequenceList[i], isFirstFrame); + } + }, + getNewKey: function () { + this.transform_key_count += 1; + return '_' + this.transform_key_count; + }, +}; + +function CVEffects() { + +} +CVEffects.prototype.renderFrame = function () {}; + +function CVMaskElement(data, element) { + this.data = data; + this.element = element; + this.masksProperties = this.data.masksProperties || []; + this.viewData = createSizedArray(this.masksProperties.length); + var i; + var len = this.masksProperties.length; + var hasMasks = false; + for (i = 0; i < len; i += 1) { + if (this.masksProperties[i].mode !== 'n') { + hasMasks = true; + } + this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3); + } + this.hasMasks = hasMasks; + if (hasMasks) { + this.element.addRenderableComponent(this); + } +} + +CVMaskElement.prototype.renderFrame = function () { + if (!this.hasMasks) { + return; + } + var transform = this.element.finalTransform.mat; + var ctx = this.element.canvasContext; + var i; + var len = this.masksProperties.length; + var pt; + var pts; + var data; + ctx.beginPath(); + for (i = 0; i < len; i += 1) { + if (this.masksProperties[i].mode !== 'n') { + if (this.masksProperties[i].inv) { + ctx.moveTo(0, 0); + ctx.lineTo(this.element.globalData.compSize.w, 0); + ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h); + ctx.lineTo(0, this.element.globalData.compSize.h); + ctx.lineTo(0, 0); + } + data = this.viewData[i].v; + pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0); + ctx.moveTo(pt[0], pt[1]); + var j; + var jLen = data._length; + for (j = 1; j < jLen; j += 1) { + pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]); + ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); + } + pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]); + ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); + } + } + this.element.globalData.renderer.save(true); + ctx.clip(); +}; + +CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty; + +CVMaskElement.prototype.destroy = function () { + this.element = null; +}; + +function CVBaseElement() { +} + +CVBaseElement.prototype = { + createElements: function () {}, + initRendererElement: function () {}, + createContainerElements: function () { + this.canvasContext = this.globalData.canvasContext; + this.renderableEffectsManager = new CVEffects(this); + }, + createContent: function () {}, + setBlendMode: function () { + var globalData = this.globalData; + if (globalData.blendMode !== this.data.bm) { + globalData.blendMode = this.data.bm; + var blendModeValue = getBlendMode(this.data.bm); + globalData.canvasContext.globalCompositeOperation = blendModeValue; + } + }, + createRenderableComponents: function () { + this.maskManager = new CVMaskElement(this.data, this); + }, + hideElement: function () { + if (!this.hidden && (!this.isInRange || this.isTransparent)) { + this.hidden = true; + } + }, + showElement: function () { + if (this.isInRange && !this.isTransparent) { + this.hidden = false; + this._isFirstFrame = true; + this.maskManager._isFirstFrame = true; + } + }, + renderFrame: function () { + if (this.hidden || this.data.hd) { + return; + } + this.renderTransform(); + this.renderRenderable(); + this.setBlendMode(); + var forceRealStack = this.data.ty === 0; + this.globalData.renderer.save(forceRealStack); + this.globalData.renderer.ctxTransform(this.finalTransform.mat.props); + this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v); + this.renderInnerContent(); + this.globalData.renderer.restore(forceRealStack); + if (this.maskManager.hasMasks) { + this.globalData.renderer.restore(true); + } + if (this._isFirstFrame) { + this._isFirstFrame = false; + } + }, + destroy: function () { + this.canvasContext = null; + this.data = null; + this.globalData = null; + this.maskManager.destroy(); + }, + mHelper: new Matrix(), +}; +CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement; +CVBaseElement.prototype.show = CVBaseElement.prototype.showElement; + +function CVShapeData(element, data, styles, transformsManager) { + this.styledShapes = []; + this.tr = [0, 0, 0, 0, 0, 0]; + var ty = 4; + if (data.ty === 'rc') { + ty = 5; + } else if (data.ty === 'el') { + ty = 6; + } else if (data.ty === 'sr') { + ty = 7; + } + this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element); + var i; + var len = styles.length; + var styledShape; + for (i = 0; i < len; i += 1) { + if (!styles[i].closed) { + styledShape = { + transforms: transformsManager.addTransformSequence(styles[i].transforms), + trNodes: [], + }; + this.styledShapes.push(styledShape); + styles[i].elements.push(styledShape); + } + } +} + +CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated; + +function CVShapeElement(data, globalData, comp) { + this.shapes = []; + this.shapesData = data.shapes; + this.stylesList = []; + this.itemsData = []; + this.prevViewData = []; + this.shapeModifiers = []; + this.processedElements = []; + this.transformsManager = new ShapeTransformManager(); + this.initElement(data, globalData, comp); +} + +extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement); + +CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement; + +CVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false }; + +CVShapeElement.prototype.dashResetter = []; + +CVShapeElement.prototype.createContent = function () { + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); +}; + +CVShapeElement.prototype.createStyleElement = function (data, transforms) { + var styleElem = { + data: data, + type: data.ty, + preTransforms: this.transformsManager.addTransformSequence(transforms), + transforms: [], + elements: [], + closed: data.hd === true, + }; + var elementData = {}; + if (data.ty === 'fl' || data.ty === 'st') { + elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this); + if (!elementData.c.k) { + styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')'; + } + } else if (data.ty === 'gf' || data.ty === 'gs') { + elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this); + elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this); + elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this); + elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this); + elementData.g = new GradientProperty(this, data.g, this); + } + elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this); + if (data.ty === 'st' || data.ty === 'gs') { + styleElem.lc = lineCapEnum[data.lc || 2]; + styleElem.lj = lineJoinEnum[data.lj || 2]; + if (data.lj == 1) { // eslint-disable-line eqeqeq + styleElem.ml = data.ml; + } + elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this); + if (!elementData.w.k) { + styleElem.wi = elementData.w.v; + } + if (data.d) { + var d = new DashProperty(this, data.d, 'canvas', this); + elementData.d = d; + if (!elementData.d.k) { + styleElem.da = elementData.d.dashArray; + styleElem.do = elementData.d.dashoffset[0]; + } + } + } else { + styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero'; + } + this.stylesList.push(styleElem); + elementData.style = styleElem; + return elementData; +}; + +CVShapeElement.prototype.createGroupElement = function () { + var elementData = { + it: [], + prevViewData: [], + }; + return elementData; +}; + +CVShapeElement.prototype.createTransformElement = function (data) { + var elementData = { + transform: { + opacity: 1, + _opMdf: false, + key: this.transformsManager.getNewKey(), + op: PropertyFactory.getProp(this, data.o, 0, 0.01, this), + mProps: TransformPropertyFactory.getTransformProperty(this, data, this), + }, + }; + return elementData; +}; + +CVShapeElement.prototype.createShapeElement = function (data) { + var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager); + + this.shapes.push(elementData); + this.addShapeToModifiers(elementData); + return elementData; +}; + +CVShapeElement.prototype.reloadShapes = function () { + this._isFirstFrame = true; + var i; + var len = this.itemsData.length; + for (i = 0; i < len; i += 1) { + this.prevViewData[i] = this.itemsData[i]; + } + this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); + len = this.dynamicProperties.length; + for (i = 0; i < len; i += 1) { + this.dynamicProperties[i].getValue(); + } + this.renderModifiers(); + this.transformsManager.processSequences(this._isFirstFrame); +}; + +CVShapeElement.prototype.addTransformToStyleList = function (transform) { + var i; + var len = this.stylesList.length; + for (i = 0; i < len; i += 1) { + if (!this.stylesList[i].closed) { + this.stylesList[i].transforms.push(transform); + } + } +}; + +CVShapeElement.prototype.removeTransformFromStyleList = function () { + var i; + var len = this.stylesList.length; + for (i = 0; i < len; i += 1) { + if (!this.stylesList[i].closed) { + this.stylesList[i].transforms.pop(); + } + } +}; + +CVShapeElement.prototype.closeStyles = function (styles) { + var i; + var len = styles.length; + for (i = 0; i < len; i += 1) { + styles[i].closed = true; + } +}; + +CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) { + var i; + var len = arr.length - 1; + var j; + var jLen; + var ownStyles = []; + var ownModifiers = []; + var processedPos; + var modifier; + var currentTransform; + var ownTransforms = [].concat(transforms); + for (i = len; i >= 0; i -= 1) { + processedPos = this.searchProcessedElement(arr[i]); + if (!processedPos) { + arr[i]._shouldRender = shouldRender; + } else { + itemsData[i] = prevViewData[processedPos - 1]; + } + if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') { + if (!processedPos) { + itemsData[i] = this.createStyleElement(arr[i], ownTransforms); + } else { + itemsData[i].style.closed = false; + } + + ownStyles.push(itemsData[i].style); + } else if (arr[i].ty === 'gr') { + if (!processedPos) { + itemsData[i] = this.createGroupElement(arr[i]); + } else { + jLen = itemsData[i].it.length; + for (j = 0; j < jLen; j += 1) { + itemsData[i].prevViewData[j] = itemsData[i].it[j]; + } + } + this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms); + } else if (arr[i].ty === 'tr') { + if (!processedPos) { + currentTransform = this.createTransformElement(arr[i]); + itemsData[i] = currentTransform; + } + ownTransforms.push(itemsData[i]); + this.addTransformToStyleList(itemsData[i]); + } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') { + if (!processedPos) { + itemsData[i] = this.createShapeElement(arr[i]); + } + } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') { + if (!processedPos) { + modifier = ShapeModifiers.getModifier(arr[i].ty); + modifier.init(this, arr[i]); + itemsData[i] = modifier; + this.shapeModifiers.push(modifier); + } else { + modifier = itemsData[i]; + modifier.closed = false; + } + ownModifiers.push(modifier); + } else if (arr[i].ty === 'rp') { + if (!processedPos) { + modifier = ShapeModifiers.getModifier(arr[i].ty); + itemsData[i] = modifier; + modifier.init(this, arr, i, itemsData); + this.shapeModifiers.push(modifier); + shouldRender = false; + } else { + modifier = itemsData[i]; + modifier.closed = true; + } + ownModifiers.push(modifier); + } + this.addProcessedElement(arr[i], i + 1); + } + this.removeTransformFromStyleList(); + this.closeStyles(ownStyles); + len = ownModifiers.length; + for (i = 0; i < len; i += 1) { + ownModifiers[i].closed = true; + } +}; + +CVShapeElement.prototype.renderInnerContent = function () { + this.transformHelper.opacity = 1; + this.transformHelper._opMdf = false; + this.renderModifiers(); + this.transformsManager.processSequences(this._isFirstFrame); + this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true); +}; + +CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) { + if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) { + groupTransform.opacity = parentTransform.opacity; + groupTransform.opacity *= groupTransform.op.v; + groupTransform._opMdf = true; + } +}; + +CVShapeElement.prototype.drawLayer = function () { + var i; + var len = this.stylesList.length; + var j; + var jLen; + var k; + var kLen; + var elems; + var nodes; + var renderer = this.globalData.renderer; + var ctx = this.globalData.canvasContext; + var type; + var currentStyle; + for (i = 0; i < len; i += 1) { + currentStyle = this.stylesList[i]; + type = currentStyle.type; + + // Skipping style when + // Stroke width equals 0 + // style should not be rendered (extra unused repeaters) + // current opacity equals 0 + // global opacity equals 0 + if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) { + renderer.save(); + elems = currentStyle.elements; + if (type === 'st' || type === 'gs') { + ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd; + ctx.lineWidth = currentStyle.wi; + ctx.lineCap = currentStyle.lc; + ctx.lineJoin = currentStyle.lj; + ctx.miterLimit = currentStyle.ml || 0; + } else { + ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd; + } + renderer.ctxOpacity(currentStyle.coOp); + if (type !== 'st' && type !== 'gs') { + ctx.beginPath(); + } + renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props); + jLen = elems.length; + for (j = 0; j < jLen; j += 1) { + if (type === 'st' || type === 'gs') { + ctx.beginPath(); + if (currentStyle.da) { + ctx.setLineDash(currentStyle.da); + ctx.lineDashOffset = currentStyle.do; + } + } + nodes = elems[j].trNodes; + kLen = nodes.length; + + for (k = 0; k < kLen; k += 1) { + if (nodes[k].t === 'm') { + ctx.moveTo(nodes[k].p[0], nodes[k].p[1]); + } else if (nodes[k].t === 'c') { + ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]); + } else { + ctx.closePath(); + } + } + if (type === 'st' || type === 'gs') { + ctx.stroke(); + if (currentStyle.da) { + ctx.setLineDash(this.dashResetter); + } + } + } + if (type !== 'st' && type !== 'gs') { + ctx.fill(currentStyle.r); + } + renderer.restore(); + } + } +}; + +CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) { + var i; + var len = items.length - 1; + var groupTransform; + groupTransform = parentTransform; + for (i = len; i >= 0; i -= 1) { + if (items[i].ty === 'tr') { + groupTransform = data[i].transform; + this.renderShapeTransform(parentTransform, groupTransform); + } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') { + this.renderPath(items[i], data[i]); + } else if (items[i].ty === 'fl') { + this.renderFill(items[i], data[i], groupTransform); + } else if (items[i].ty === 'st') { + this.renderStroke(items[i], data[i], groupTransform); + } else if (items[i].ty === 'gf' || items[i].ty === 'gs') { + this.renderGradientFill(items[i], data[i], groupTransform); + } else if (items[i].ty === 'gr') { + this.renderShape(groupTransform, items[i].it, data[i].it); + } else if (items[i].ty === 'tm') { + // + } + } + if (isMain) { + this.drawLayer(); + } +}; + +CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) { + if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) { + var shapeNodes = styledShape.trNodes; + var paths = shape.paths; + var i; + var len; + var j; + var jLen = paths._length; + shapeNodes.length = 0; + var groupTransformMat = styledShape.transforms.finalTransform; + for (j = 0; j < jLen; j += 1) { + var pathNodes = paths.shapes[j]; + if (pathNodes && pathNodes.v) { + len = pathNodes._length; + for (i = 1; i < len; i += 1) { + if (i === 1) { + shapeNodes.push({ + t: 'm', + p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0), + }); + } + shapeNodes.push({ + t: 'c', + pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]), + }); + } + if (len === 1) { + shapeNodes.push({ + t: 'm', + p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0), + }); + } + if (pathNodes.c && len) { + shapeNodes.push({ + t: 'c', + pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]), + }); + shapeNodes.push({ + t: 'z', + }); + } + } + } + styledShape.trNodes = shapeNodes; + } +}; + +CVShapeElement.prototype.renderPath = function (pathData, itemData) { + if (pathData.hd !== true && pathData._shouldRender) { + var i; + var len = itemData.styledShapes.length; + for (i = 0; i < len; i += 1) { + this.renderStyledShape(itemData.styledShapes[i], itemData.sh); + } + } +}; + +CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) { + var styleElem = itemData.style; + + if (itemData.c._mdf || this._isFirstFrame) { + styleElem.co = 'rgb(' + + bmFloor(itemData.c.v[0]) + ',' + + bmFloor(itemData.c.v[1]) + ',' + + bmFloor(itemData.c.v[2]) + ')'; + } + if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) { + styleElem.coOp = itemData.o.v * groupTransform.opacity; + } +}; + +CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) { + var styleElem = itemData.style; + var grd; + if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) { + var ctx = this.globalData.canvasContext; + var pt1 = itemData.s.v; + var pt2 = itemData.e.v; + if (styleData.t === 1) { + grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]); + } else { + var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); + var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); + + var percent = itemData.h.v; + if (percent >= 1) { + percent = 0.99; + } else if (percent <= -1) { + percent = -0.99; + } + var dist = rad * percent; + var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]; + var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]; + grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad); + } + + var i; + var len = styleData.g.p; + var cValues = itemData.g.c; + var opacity = 1; + + for (i = 0; i < len; i += 1) { + if (itemData.g._hasOpacity && itemData.g._collapsable) { + opacity = itemData.g.o[i * 2 + 1]; + } + grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')'); + } + styleElem.grd = grd; + } + styleElem.coOp = itemData.o.v * groupTransform.opacity; +}; + +CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) { + var styleElem = itemData.style; + var d = itemData.d; + if (d && (d._mdf || this._isFirstFrame)) { + styleElem.da = d.dashArray; + styleElem.do = d.dashoffset[0]; + } + if (itemData.c._mdf || this._isFirstFrame) { + styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'; + } + if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) { + styleElem.coOp = itemData.o.v * groupTransform.opacity; + } + if (itemData.w._mdf || this._isFirstFrame) { + styleElem.wi = itemData.w.v; + } +}; + +CVShapeElement.prototype.destroy = function () { + this.shapesData = null; + this.globalData = null; + this.canvasContext = null; + this.stylesList.length = 0; + this.itemsData.length = 0; +}; + +function CVTextElement(data, globalData, comp) { + this.textSpans = []; + this.yOffset = 0; + this.fillColorAnim = false; + this.strokeColorAnim = false; + this.strokeWidthAnim = false; + this.stroke = false; + this.fill = false; + this.justifyOffset = 0; + this.currentRender = null; + this.renderType = 'canvas'; + this.values = { + fill: 'rgba(0,0,0,0)', + stroke: 'rgba(0,0,0,0)', + sWidth: 0, + fValue: '', + }; + this.initElement(data, globalData, comp); +} +extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement); + +CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d'); + +CVTextElement.prototype.buildNewText = function () { + var documentData = this.textProperty.currentData; + this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0); + + var hasFill = false; + if (documentData.fc) { + hasFill = true; + this.values.fill = this.buildColor(documentData.fc); + } else { + this.values.fill = 'rgba(0,0,0,0)'; + } + this.fill = hasFill; + var hasStroke = false; + if (documentData.sc) { + hasStroke = true; + this.values.stroke = this.buildColor(documentData.sc); + this.values.sWidth = documentData.sw; + } + var fontData = this.globalData.fontManager.getFontByName(documentData.f); + var i; + var len; + var letters = documentData.l; + var matrixHelper = this.mHelper; + this.stroke = hasStroke; + this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily; + len = documentData.finalText.length; + // this.tHelper.font = this.values.fValue; + var charData; + var shapeData; + var k; + var kLen; + var shapes; + var j; + var jLen; + var pathNodes; + var commands; + var pathArr; + var singleShape = this.data.singleShape; + var trackingOffset = documentData.tr * 0.001 * documentData.finalSize; + var xPos = 0; + var yPos = 0; + var firstLine = true; + var cnt = 0; + for (i = 0; i < len; i += 1) { + charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily); + shapeData = (charData && charData.data) || {}; + matrixHelper.reset(); + if (singleShape && letters[i].n) { + xPos = -trackingOffset; + yPos += documentData.yOffset; + yPos += firstLine ? 1 : 0; + firstLine = false; + } + shapes = shapeData.shapes ? shapeData.shapes[0].it : []; + jLen = shapes.length; + matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100); + if (singleShape) { + this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); + } + commands = createSizedArray(jLen - 1); + var commandsCounter = 0; + for (j = 0; j < jLen; j += 1) { + if (shapes[j].ty === 'sh') { + kLen = shapes[j].ks.k.i.length; + pathNodes = shapes[j].ks.k; + pathArr = []; + for (k = 1; k < kLen; k += 1) { + if (k === 1) { + pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0)); + } + pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0)); + } + pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0)); + commands[commandsCounter] = pathArr; + commandsCounter += 1; + } + } + if (singleShape) { + xPos += letters[i].l; + xPos += trackingOffset; + } + if (this.textSpans[cnt]) { + this.textSpans[cnt].elem = commands; + } else { + this.textSpans[cnt] = { elem: commands }; + } + cnt += 1; + } +}; + +CVTextElement.prototype.renderInnerContent = function () { + var ctx = this.canvasContext; + ctx.font = this.values.fValue; + ctx.lineCap = 'butt'; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 4; + + if (!this.data.singleShape) { + this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); + } + + var i; + var len; + var j; + var jLen; + var k; + var kLen; + var renderedLetters = this.textAnimator.renderedLetters; + + var letters = this.textProperty.currentData.l; + + len = letters.length; + var renderedLetter; + var lastFill = null; + var lastStroke = null; + var lastStrokeW = null; + var commands; + var pathArr; + for (i = 0; i < len; i += 1) { + if (!letters[i].n) { + renderedLetter = renderedLetters[i]; + if (renderedLetter) { + this.globalData.renderer.save(); + this.globalData.renderer.ctxTransform(renderedLetter.p); + this.globalData.renderer.ctxOpacity(renderedLetter.o); + } + if (this.fill) { + if (renderedLetter && renderedLetter.fc) { + if (lastFill !== renderedLetter.fc) { + lastFill = renderedLetter.fc; + ctx.fillStyle = renderedLetter.fc; + } + } else if (lastFill !== this.values.fill) { + lastFill = this.values.fill; + ctx.fillStyle = this.values.fill; + } + commands = this.textSpans[i].elem; + jLen = commands.length; + this.globalData.canvasContext.beginPath(); + for (j = 0; j < jLen; j += 1) { + pathArr = commands[j]; + kLen = pathArr.length; + this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); + for (k = 2; k < kLen; k += 6) { + this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]); + } + } + this.globalData.canvasContext.closePath(); + this.globalData.canvasContext.fill(); + /// ctx.fillText(this.textSpans[i].val,0,0); + } + if (this.stroke) { + if (renderedLetter && renderedLetter.sw) { + if (lastStrokeW !== renderedLetter.sw) { + lastStrokeW = renderedLetter.sw; + ctx.lineWidth = renderedLetter.sw; + } + } else if (lastStrokeW !== this.values.sWidth) { + lastStrokeW = this.values.sWidth; + ctx.lineWidth = this.values.sWidth; + } + if (renderedLetter && renderedLetter.sc) { + if (lastStroke !== renderedLetter.sc) { + lastStroke = renderedLetter.sc; + ctx.strokeStyle = renderedLetter.sc; + } + } else if (lastStroke !== this.values.stroke) { + lastStroke = this.values.stroke; + ctx.strokeStyle = this.values.stroke; + } + commands = this.textSpans[i].elem; + jLen = commands.length; + this.globalData.canvasContext.beginPath(); + for (j = 0; j < jLen; j += 1) { + pathArr = commands[j]; + kLen = pathArr.length; + this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); + for (k = 2; k < kLen; k += 6) { + this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]); + } + } + this.globalData.canvasContext.closePath(); + this.globalData.canvasContext.stroke(); + /// ctx.strokeText(letters[i].val,0,0); + } + if (renderedLetter) { + this.globalData.renderer.restore(); + } + } + } +}; + +function CVImageElement(data, globalData, comp) { + this.assetData = globalData.getAssetData(data.refId); + this.img = globalData.imageLoader.getAsset(this.assetData); + this.initElement(data, globalData, comp); +} +extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement); + +CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement; +CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; + +CVImageElement.prototype.createContent = function () { + if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) { + var canvas = createTag('canvas'); + canvas.width = this.assetData.w; + canvas.height = this.assetData.h; + var ctx = canvas.getContext('2d'); + + var imgW = this.img.width; + var imgH = this.img.height; + var imgRel = imgW / imgH; + var canvasRel = this.assetData.w / this.assetData.h; + var widthCrop; + var heightCrop; + var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio; + if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) { + heightCrop = imgH; + widthCrop = heightCrop * canvasRel; + } else { + widthCrop = imgW; + heightCrop = widthCrop / canvasRel; + } + ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h); + this.img = canvas; + } +}; + +CVImageElement.prototype.renderInnerContent = function () { + this.canvasContext.drawImage(this.img, 0, 0); +}; + +CVImageElement.prototype.destroy = function () { + this.img = null; +}; + +function CVSolidElement(data, globalData, comp) { + this.initElement(data, globalData, comp); +} +extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement); + +CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement; +CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; + +CVSolidElement.prototype.renderInnerContent = function () { + var ctx = this.canvasContext; + ctx.fillStyle = this.data.sc; + ctx.fillRect(0, 0, this.data.sw, this.data.sh); + // +}; + +function CanvasRendererBase(animationItem, config) { + this.animationItem = animationItem; + this.renderConfig = { + clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true, + context: (config && config.context) || null, + progressiveLoad: (config && config.progressiveLoad) || false, + preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet', + imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice', + contentVisibility: (config && config.contentVisibility) || 'visible', + className: (config && config.className) || '', + id: (config && config.id) || '', + }; + this.renderConfig.dpr = (config && config.dpr) || 1; + if (this.animationItem.wrapper) { + this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1; + } + this.renderedFrame = -1; + this.globalData = { + frameNum: -1, + _mdf: false, + renderConfig: this.renderConfig, + currentGlobalAlpha: -1, + }; + this.contextData = new CVContextData(); + this.elements = []; + this.pendingElements = []; + this.transformMat = new Matrix(); + this.completeLayers = false; + this.rendererType = 'canvas'; +} +extendPrototype([BaseRenderer], CanvasRendererBase); + +CanvasRendererBase.prototype.createShape = function (data) { + return new CVShapeElement(data, this.globalData, this); +}; + +CanvasRendererBase.prototype.createText = function (data) { + return new CVTextElement(data, this.globalData, this); +}; + +CanvasRendererBase.prototype.createImage = function (data) { + return new CVImageElement(data, this.globalData, this); +}; + +CanvasRendererBase.prototype.createSolid = function (data) { + return new CVSolidElement(data, this.globalData, this); +}; + +CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull; + +CanvasRendererBase.prototype.ctxTransform = function (props) { + if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) { + return; + } + if (!this.renderConfig.clearCanvas) { + this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]); + return; + } + this.transformMat.cloneFromProps(props); + var cProps = this.contextData.cTr.props; + this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); + // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]); + this.contextData.cTr.cloneFromProps(this.transformMat.props); + var trProps = this.contextData.cTr.props; + this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]); +}; + +CanvasRendererBase.prototype.ctxOpacity = function (op) { + /* if(op === 1){ + return; + } */ + if (!this.renderConfig.clearCanvas) { + this.canvasContext.globalAlpha *= op < 0 ? 0 : op; + this.globalData.currentGlobalAlpha = this.contextData.cO; + return; + } + this.contextData.cO *= op < 0 ? 0 : op; + if (this.globalData.currentGlobalAlpha !== this.contextData.cO) { + this.canvasContext.globalAlpha = this.contextData.cO; + this.globalData.currentGlobalAlpha = this.contextData.cO; + } +}; + +CanvasRendererBase.prototype.reset = function () { + if (!this.renderConfig.clearCanvas) { + this.canvasContext.restore(); + return; + } + this.contextData.reset(); +}; + +CanvasRendererBase.prototype.save = function (actionFlag) { + if (!this.renderConfig.clearCanvas) { + this.canvasContext.save(); + return; + } + if (actionFlag) { + this.canvasContext.save(); + } + var props = this.contextData.cTr.props; + if (this.contextData._length <= this.contextData.cArrPos) { + this.contextData.duplicate(); + } + var i; + var arr = this.contextData.saved[this.contextData.cArrPos]; + for (i = 0; i < 16; i += 1) { + arr[i] = props[i]; + } + this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO; + this.contextData.cArrPos += 1; +}; + +CanvasRendererBase.prototype.restore = function (actionFlag) { + if (!this.renderConfig.clearCanvas) { + this.canvasContext.restore(); + return; + } + if (actionFlag) { + this.canvasContext.restore(); + this.globalData.blendMode = 'source-over'; + } + this.contextData.cArrPos -= 1; + var popped = this.contextData.saved[this.contextData.cArrPos]; + var i; + var arr = this.contextData.cTr.props; + for (i = 0; i < 16; i += 1) { + arr[i] = popped[i]; + } + this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]); + popped = this.contextData.savedOp[this.contextData.cArrPos]; + this.contextData.cO = popped; + if (this.globalData.currentGlobalAlpha !== popped) { + this.canvasContext.globalAlpha = popped; + this.globalData.currentGlobalAlpha = popped; + } +}; + +CanvasRendererBase.prototype.configAnimation = function (animData) { + if (this.animationItem.wrapper) { + this.animationItem.container = createTag('canvas'); + var containerStyle = this.animationItem.container.style; + containerStyle.width = '100%'; + containerStyle.height = '100%'; + var origin = '0px 0px 0px'; + containerStyle.transformOrigin = origin; + containerStyle.mozTransformOrigin = origin; + containerStyle.webkitTransformOrigin = origin; + containerStyle['-webkit-transform'] = origin; + containerStyle.contentVisibility = this.renderConfig.contentVisibility; + this.animationItem.wrapper.appendChild(this.animationItem.container); + this.canvasContext = this.animationItem.container.getContext('2d'); + if (this.renderConfig.className) { + this.animationItem.container.setAttribute('class', this.renderConfig.className); + } + if (this.renderConfig.id) { + this.animationItem.container.setAttribute('id', this.renderConfig.id); + } + } else { + this.canvasContext = this.renderConfig.context; + } + this.data = animData; + this.layers = animData.layers; + this.transformCanvas = { + w: animData.w, + h: animData.h, + sx: 0, + sy: 0, + tx: 0, + ty: 0, + }; + this.setupGlobalData(animData, document.body); + this.globalData.canvasContext = this.canvasContext; + this.globalData.renderer = this; + this.globalData.isDashed = false; + this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; + this.globalData.transformCanvas = this.transformCanvas; + this.elements = createSizedArray(animData.layers.length); + + this.updateContainerSize(); +}; + +CanvasRendererBase.prototype.updateContainerSize = function () { + this.reset(); + var elementWidth; + var elementHeight; + if (this.animationItem.wrapper && this.animationItem.container) { + elementWidth = this.animationItem.wrapper.offsetWidth; + elementHeight = this.animationItem.wrapper.offsetHeight; + this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr); + this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr); + } else { + elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr; + elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr; + } + var elementRel; + var animationRel; + if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) { + var par = this.renderConfig.preserveAspectRatio.split(' '); + var fillType = par[1] || 'meet'; + var pos = par[0] || 'xMidYMid'; + var xPos = pos.substr(0, 4); + var yPos = pos.substr(4); + elementRel = elementWidth / elementHeight; + animationRel = this.transformCanvas.w / this.transformCanvas.h; + if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) { + this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); + this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); + } else { + this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); + this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); + } + + if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) { + this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr; + } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) { + this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr; + } else { + this.transformCanvas.tx = 0; + } + if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) { + this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr; + } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) { + this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr; + } else { + this.transformCanvas.ty = 0; + } + } else if (this.renderConfig.preserveAspectRatio === 'none') { + this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); + this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); + this.transformCanvas.tx = 0; + this.transformCanvas.ty = 0; + } else { + this.transformCanvas.sx = this.renderConfig.dpr; + this.transformCanvas.sy = this.renderConfig.dpr; + this.transformCanvas.tx = 0; + this.transformCanvas.ty = 0; + } + this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1]; + /* var i, len = this.elements.length; + for(i=0;i= 0; i -= 1) { + if (this.elements[i]) { + this.elements[i].destroy(); + } + } + this.elements.length = 0; + this.globalData.canvasContext = null; + this.animationItem.container = null; + this.destroyed = true; +}; + +CanvasRendererBase.prototype.renderFrame = function (num, forceRender) { + if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) { + return; + } + this.renderedFrame = num; + this.globalData.frameNum = num - this.animationItem._isFirstFrame; + this.globalData.frameId += 1; + this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender; + this.globalData.projectInterface.currentFrame = num; + + // console.log('--------'); + // console.log('NEW: ',num); + var i; + var len = this.layers.length; + if (!this.completeLayers) { + this.checkLayers(num); + } + + for (i = 0; i < len; i += 1) { + if (this.completeLayers || this.elements[i]) { + this.elements[i].prepareFrame(num - this.layers[i].st); + } + } + if (this.globalData._mdf) { + if (this.renderConfig.clearCanvas === true) { + this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h); + } else { + this.save(); + } + for (i = len - 1; i >= 0; i -= 1) { + if (this.completeLayers || this.elements[i]) { + this.elements[i].renderFrame(); + } + } + if (this.renderConfig.clearCanvas !== true) { + this.restore(); + } + } +}; + +CanvasRendererBase.prototype.buildItem = function (pos) { + var elements = this.elements; + if (elements[pos] || this.layers[pos].ty === 99) { + return; + } + var element = this.createItem(this.layers[pos], this, this.globalData); + elements[pos] = element; + element.initExpressions(); + /* if(this.layers[pos].ty === 0){ + element.resize(this.globalData.transformCanvas); + } */ +}; + +CanvasRendererBase.prototype.checkPendingElements = function () { + while (this.pendingElements.length) { + var element = this.pendingElements.pop(); + element.checkParenting(); + } +}; + +CanvasRendererBase.prototype.hide = function () { + this.animationItem.container.style.display = 'none'; +}; + +CanvasRendererBase.prototype.show = function () { + this.animationItem.container.style.display = 'block'; +}; + +function CVCompElement(data, globalData, comp) { + this.completeLayers = false; + this.layers = data.layers; + this.pendingElements = []; + this.elements = createSizedArray(this.layers.length); + this.initElement(data, globalData, comp); + this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; +} + +extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement); + +CVCompElement.prototype.renderInnerContent = function () { + var ctx = this.canvasContext; + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(this.data.w, 0); + ctx.lineTo(this.data.w, this.data.h); + ctx.lineTo(0, this.data.h); + ctx.lineTo(0, 0); + ctx.clip(); + var i; + var len = this.layers.length; + for (i = len - 1; i >= 0; i -= 1) { + if (this.completeLayers || this.elements[i]) { + this.elements[i].renderFrame(); + } + } +}; + +CVCompElement.prototype.destroy = function () { + var i; + var len = this.layers.length; + for (i = len - 1; i >= 0; i -= 1) { + if (this.elements[i]) { + this.elements[i].destroy(); + } + } + this.layers = null; + this.elements = null; +}; + +CVCompElement.prototype.createComp = function (data) { + return new CVCompElement(data, this.globalData, this); +}; + +function CanvasRenderer(animationItem, config) { + this.animationItem = animationItem; + this.renderConfig = { + clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true, + context: (config && config.context) || null, + progressiveLoad: (config && config.progressiveLoad) || false, + preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet', + imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice', + contentVisibility: (config && config.contentVisibility) || 'visible', + className: (config && config.className) || '', + id: (config && config.id) || '', + }; + this.renderConfig.dpr = (config && config.dpr) || 1; + if (this.animationItem.wrapper) { + this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1; + } + this.renderedFrame = -1; + this.globalData = { + frameNum: -1, + _mdf: false, + renderConfig: this.renderConfig, + currentGlobalAlpha: -1, + }; + this.contextData = new CVContextData(); + this.elements = []; + this.pendingElements = []; + this.transformMat = new Matrix(); + this.completeLayers = false; + this.rendererType = 'canvas'; +} +extendPrototype([CanvasRendererBase], CanvasRenderer); + +CanvasRenderer.prototype.createComp = function (data) { + return new CVCompElement(data, this.globalData, this); +}; + +// Registering renderers +registerRenderer('canvas', CanvasRenderer); + +// Registering shape modifiers +ShapeModifiers.registerModifier('tm', TrimModifier); +ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier); +ShapeModifiers.registerModifier('rp', RepeaterModifier); +ShapeModifiers.registerModifier('rd', RoundCornersModifier); + +const Expressions = (function () { + var ob = {}; + ob.initExpressions = initExpressions; + + function initExpressions(animation) { + var stackCount = 0; + var registers = []; + + function pushExpression() { + stackCount += 1; + } + + function popExpression() { + stackCount -= 1; + if (stackCount === 0) { + releaseInstances(); + } + } + + function registerExpressionProperty(expression) { + if (registers.indexOf(expression) === -1) { + registers.push(expression); + } + } + + function releaseInstances() { + var i; + var len = registers.length; + for (i = 0; i < len; i += 1) { + registers[i].release(); + } + registers.length = 0; + } + + animation.renderer.compInterface = CompExpressionInterface(animation.renderer); + animation.renderer.globalData.projectInterface.registerComposition(animation.renderer); + animation.renderer.globalData.pushExpression = pushExpression; + animation.renderer.globalData.popExpression = popExpression; + animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty; + } + return ob; +}()); + +/* eslint-disable */ +/* + Copyright 2014 David Bau. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + */ + +function seedRandom(pool, math) { +// +// The following constants are related to IEEE 754 limits. +// + var global = this, + width = 256, // each RC4 output is 0 <= x < 256 + chunks = 6, // at least six RC4 outputs for each double + digits = 52, // there are 52 significant digits in a double + rngname = 'random', // rngname: name for Math.random and Math.seedrandom + startdenom = math.pow(width, chunks), + significance = math.pow(2, digits), + overflow = significance * 2, + mask = width - 1, + nodecrypto; // node.js crypto module, initialized at the bottom. + +// +// seedrandom() +// This is the seedrandom function described above. +// + function seedrandom(seed, options, callback) { + var key = []; + options = (options === true) ? { entropy: true } : (options || {}); + + // Flatten the seed string or build one from local entropy if needed. + var shortseed = mixkey(flatten( + options.entropy ? [seed, tostring(pool)] : + (seed === null) ? autoseed() : seed, 3), key); + + // Use the seed to initialize an ARC4 generator. + var arc4 = new ARC4(key); + + // This function returns a random double in [0, 1) that contains + // randomness in every bit of the mantissa of the IEEE 754 value. + var prng = function() { + var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48 + d = startdenom, // and denominator d = 2 ^ 48. + x = 0; // and no 'extra last byte'. + while (n < significance) { // Fill up all significant digits by + n = (n + x) * width; // shifting numerator and + d *= width; // denominator and generating a + x = arc4.g(1); // new least-significant-byte. + } + while (n >= overflow) { // To avoid rounding up, before adding + n /= 2; // last byte, shift everything + d /= 2; // right using integer math until + x >>>= 1; // we have exactly the desired bits. + } + return (n + x) / d; // Form the number within [0, 1). + }; + + prng.int32 = function() { return arc4.g(4) | 0; }; + prng.quick = function() { return arc4.g(4) / 0x100000000; }; + prng.double = prng; + + // Mix the randomness into accumulated entropy. + mixkey(tostring(arc4.S), pool); + + // Calling convention: what to return as a function of prng, seed, is_math. + return (options.pass || callback || + function(prng, seed, is_math_call, state) { + if (state) { + // Load the arc4 state from the given state if it has an S array. + if (state.S) { copy(state, arc4); } + // Only provide the .state method if requested via options.state. + prng.state = function() { return copy(arc4, {}); }; + } + + // If called as a method of Math (Math.seedrandom()), mutate + // Math.random because that is how seedrandom.js has worked since v1.0. + if (is_math_call) { math[rngname] = prng; return seed; } + + // Otherwise, it is a newer calling convention, so return the + // prng directly. + else return prng; + })( + prng, + shortseed, + 'global' in options ? options.global : (this == math), + options.state); + } + math['seed' + rngname] = seedrandom; + +// +// ARC4 +// +// An ARC4 implementation. The constructor takes a key in the form of +// an array of at most (width) integers that should be 0 <= x < (width). +// +// The g(count) method returns a pseudorandom integer that concatenates +// the next (count) outputs from ARC4. Its return value is a number x +// that is in the range 0 <= x < (width ^ count). +// + function ARC4(key) { + var t, keylen = key.length, + me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; + + // The empty key [] is treated as [0]. + if (!keylen) { key = [keylen++]; } + + // Set up S using the standard key scheduling algorithm. + while (i < width) { + s[i] = i++; + } + for (i = 0; i < width; i++) { + s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))]; + s[j] = t; + } + + // The "g" method returns the next (count) outputs as one number. + me.g = function(count) { + // Using instance members instead of closure state nearly doubles speed. + var t, r = 0, + i = me.i, j = me.j, s = me.S; + while (count--) { + t = s[i = mask & (i + 1)]; + r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))]; + } + me.i = i; me.j = j; + return r; + // For robust unpredictability, the function call below automatically + // discards an initial batch of values. This is called RC4-drop[256]. + // See http://google.com/search?q=rsa+fluhrer+response&btnI + }; + } + +// +// copy() +// Copies internal state of ARC4 to or from a plain object. +// + function copy(f, t) { + t.i = f.i; + t.j = f.j; + t.S = f.S.slice(); + return t; + } + +// +// flatten() +// Converts an object tree to nested arrays of strings. +// + function flatten(obj, depth) { + var result = [], typ = (typeof obj), prop; + if (depth && typ == 'object') { + for (prop in obj) { + try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} + } + } + return (result.length ? result : typ == 'string' ? obj : obj + '\0'); + } + +// +// mixkey() +// Mixes a string seed into a key that is an array of integers, and +// returns a shortened string seed that is equivalent to the result key. +// + function mixkey(seed, key) { + var stringseed = seed + '', smear, j = 0; + while (j < stringseed.length) { + key[mask & j] = + mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++)); + } + return tostring(key); + } + +// +// autoseed() +// Returns an object for autoseeding, using window.crypto and Node crypto +// module if available. +// + function autoseed() { + try { + if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); } + var out = new Uint8Array(width); + (global.crypto || global.msCrypto).getRandomValues(out); + return tostring(out); + } catch (e) { + var browser = global.navigator, + plugins = browser && browser.plugins; + return [+new Date(), global, plugins, global.screen, tostring(pool)]; + } + } + +// +// tostring() +// Converts an array of charcodes to a string +// + function tostring(a) { + return String.fromCharCode.apply(0, a); + } + +// +// When seedrandom.js is loaded, we immediately mix a few bits +// from the built-in RNG into the entropy pool. Because we do +// not want to interfere with deterministic PRNG state later, +// seedrandom will not call math.random on its own again after +// initialization. +// + mixkey(math.random(), pool); + +// +// Nodejs and AMD support: export the implementation as a module using +// either convention. +// + +// End anonymous scope, and pass initial values. +}; + +function initialize$2(BMMath) { + seedRandom([], BMMath); +} + +var propTypes = { + SHAPE: 'shape', +}; + +/* eslint-disable camelcase */ + +const ExpressionManager = (function () { + 'use strict'; + + var ob = {}; + var Math = BMMath; + var window = null; + var document = null; + var XMLHttpRequest = null; + var fetch = null; + var frames = null; + initialize$2(BMMath); + + function $bm_isInstanceOfArray(arr) { + return arr.constructor === Array || arr.constructor === Float32Array; + } + + function isNumerable(tOfV, v) { + return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number; + } + + function $bm_neg(a) { + var tOfA = typeof a; + if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) { + return -a; + } + if ($bm_isInstanceOfArray(a)) { + var i; + var lenA = a.length; + var retArr = []; + for (i = 0; i < lenA; i += 1) { + retArr[i] = -a[i]; + } + return retArr; + } + if (a.propType) { + return a.v; + } + return -a; + } + + var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get; + var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get; + var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get; + + function sum(a, b) { + var tOfA = typeof a; + var tOfB = typeof b; + if (tOfA === 'string' || tOfB === 'string') { + return a + b; + } + if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { + return a + b; + } + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { + a = a.slice(0); + a[0] += b; + return a; + } + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { + b = b.slice(0); + b[0] = a + b[0]; + return b; + } + if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) { + var i = 0; + var lenA = a.length; + var lenB = b.length; + var retArr = []; + while (i < lenA || i < lenB) { + if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) { + retArr[i] = a[i] + b[i]; + } else { + retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]; + } + i += 1; + } + return retArr; + } + return 0; + } + var add = sum; + + function sub(a, b) { + var tOfA = typeof a; + var tOfB = typeof b; + if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { + if (tOfA === 'string') { + a = parseInt(a, 10); + } + if (tOfB === 'string') { + b = parseInt(b, 10); + } + return a - b; + } + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { + a = a.slice(0); + a[0] -= b; + return a; + } + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { + b = b.slice(0); + b[0] = a - b[0]; + return b; + } + if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) { + var i = 0; + var lenA = a.length; + var lenB = b.length; + var retArr = []; + while (i < lenA || i < lenB) { + if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) { + retArr[i] = a[i] - b[i]; + } else { + retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]; + } + i += 1; + } + return retArr; + } + return 0; + } + + function mul(a, b) { + var tOfA = typeof a; + var tOfB = typeof b; + var arr; + if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { + return a * b; + } + + var i; + var len; + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { + len = a.length; + arr = createTypedArray('float32', len); + for (i = 0; i < len; i += 1) { + arr[i] = a[i] * b; + } + return arr; + } + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { + len = b.length; + arr = createTypedArray('float32', len); + for (i = 0; i < len; i += 1) { + arr[i] = a * b[i]; + } + return arr; + } + return 0; + } + + function div(a, b) { + var tOfA = typeof a; + var tOfB = typeof b; + var arr; + if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { + return a / b; + } + var i; + var len; + if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { + len = a.length; + arr = createTypedArray('float32', len); + for (i = 0; i < len; i += 1) { + arr[i] = a[i] / b; + } + return arr; + } + if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { + len = b.length; + arr = createTypedArray('float32', len); + for (i = 0; i < len; i += 1) { + arr[i] = a / b[i]; + } + return arr; + } + return 0; + } + function mod(a, b) { + if (typeof a === 'string') { + a = parseInt(a, 10); + } + if (typeof b === 'string') { + b = parseInt(b, 10); + } + return a % b; + } + var $bm_sum = sum; + var $bm_sub = sub; + var $bm_mul = mul; + var $bm_div = div; + var $bm_mod = mod; + + function clamp(num, min, max) { + if (min > max) { + var mm = max; + max = min; + min = mm; + } + return Math.min(Math.max(num, min), max); + } + + function radiansToDegrees(val) { + return val / degToRads; + } + var radians_to_degrees = radiansToDegrees; + + function degreesToRadians(val) { + return val * degToRads; + } + var degrees_to_radians = radiansToDegrees; + + var helperLengthArray = [0, 0, 0, 0, 0, 0]; + + function length(arr1, arr2) { + if (typeof arr1 === 'number' || arr1 instanceof Number) { + arr2 = arr2 || 0; + return Math.abs(arr1 - arr2); + } + if (!arr2) { + arr2 = helperLengthArray; + } + var i; + var len = Math.min(arr1.length, arr2.length); + var addedLength = 0; + for (i = 0; i < len; i += 1) { + addedLength += Math.pow(arr2[i] - arr1[i], 2); + } + return Math.sqrt(addedLength); + } + + function normalize(vec) { + return div(vec, length(vec)); + } + + function rgbToHsl(val) { + var r = val[0]; var g = val[1]; var b = val[2]; + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var h; + var s; + var l = (max + min) / 2; + + if (max === min) { + h = 0; // achromatic + s = 0; // achromatic + } else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + default: break; + } + h /= 6; + } + + return [h, s, l, val[3]]; + } + + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + + function hslToRgb(val) { + var h = val[0]; + var s = val[1]; + var l = val[2]; + + var r; + var g; + var b; + + if (s === 0) { + r = l; // achromatic + b = l; // achromatic + g = l; // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + + return [r, g, b, val[3]]; + } + + function linear(t, tMin, tMax, value1, value2) { + if (value1 === undefined || value2 === undefined) { + value1 = tMin; + value2 = tMax; + tMin = 0; + tMax = 1; + } + if (tMax < tMin) { + var _tMin = tMax; + tMax = tMin; + tMin = _tMin; + } + if (t <= tMin) { + return value1; + } if (t >= tMax) { + return value2; + } + var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin); + if (!value1.length) { + return value1 + (value2 - value1) * perc; + } + var i; + var len = value1.length; + var arr = createTypedArray('float32', len); + for (i = 0; i < len; i += 1) { + arr[i] = value1[i] + (value2[i] - value1[i]) * perc; + } + return arr; + } + function random(min, max) { + if (max === undefined) { + if (min === undefined) { + min = 0; + max = 1; + } else { + max = min; + min = undefined; + } + } + if (max.length) { + var i; + var len = max.length; + if (!min) { + min = createTypedArray('float32', len); + } + var arr = createTypedArray('float32', len); + var rnd = BMMath.random(); + for (i = 0; i < len; i += 1) { + arr[i] = min[i] + rnd * (max[i] - min[i]); + } + return arr; + } + if (min === undefined) { + min = 0; + } + var rndm = BMMath.random(); + return min + rndm * (max - min); + } + + function createPath(points, inTangents, outTangents, closed) { + var i; + var len = points.length; + var path = shapePool.newElement(); + path.setPathData(!!closed, len); + var arrPlaceholder = [0, 0]; + var inVertexPoint; + var outVertexPoint; + for (i = 0; i < len; i += 1) { + inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder; + outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder; + path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true); + } + return path; + } + + function initiateExpression(elem, data, property) { + var val = data.x; + var needsVelocity = /velocity(?![\w\d])/.test(val); + var _needsRandom = val.indexOf('random') !== -1; + var elemType = elem.data.ty; + var transform; + var $bm_transform; + var content; + var effect; + var thisProperty = property; + thisProperty.valueAtTime = thisProperty.getValueAtTime; + Object.defineProperty(thisProperty, 'value', { + get: function () { + return thisProperty.v; + }, + }); + elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate; + elem.comp.displayStartTime = 0; + var inPoint = elem.data.ip / elem.comp.globalData.frameRate; + var outPoint = elem.data.op / elem.comp.globalData.frameRate; + var width = elem.data.sw ? elem.data.sw : 0; + var height = elem.data.sh ? elem.data.sh : 0; + var name = elem.data.nm; + var loopIn; + var loop_in; + var loopOut; + var loop_out; + var smooth; + var toWorld; + var fromWorld; + var fromComp; + var toComp; + var fromCompToSurface; + var position; + var rotation; + var anchorPoint; + var scale; + var thisLayer; + var thisComp; + var mask; + var valueAtTime; + var velocityAtTime; + + var scoped_bm_rt; + // val = val.replace(/(\\?"|')((http)(s)?(:\/))?\/.*?(\\?"|')/g, "\"\""); // deter potential network calls + var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval + var numKeys = property.kf ? data.k.length : 0; + + var active = !this.data || this.data.hd !== true; + + var wiggle = function wiggle(freq, amp) { + var iWiggle; + var j; + var lenWiggle = this.pv.length ? this.pv.length : 1; + var addedAmps = createTypedArray('float32', lenWiggle); + freq = 5; + var iterations = Math.floor(time * freq); + iWiggle = 0; + j = 0; + while (iWiggle < iterations) { + // var rnd = BMMath.random(); + for (j = 0; j < lenWiggle; j += 1) { + addedAmps[j] += -amp + amp * 2 * BMMath.random(); + // addedAmps[j] += -amp + amp*2*rnd; + } + iWiggle += 1; + } + // var rnd2 = BMMath.random(); + var periods = time * freq; + var perc = periods - Math.floor(periods); + var arr = createTypedArray('float32', lenWiggle); + if (lenWiggle > 1) { + for (j = 0; j < lenWiggle; j += 1) { + arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; + // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc; + // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc); + } + return arr; + } + return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc; + }.bind(this); + + if (thisProperty.loopIn) { + loopIn = thisProperty.loopIn.bind(thisProperty); + loop_in = loopIn; + } + + if (thisProperty.loopOut) { + loopOut = thisProperty.loopOut.bind(thisProperty); + loop_out = loopOut; + } + + if (thisProperty.smooth) { + smooth = thisProperty.smooth.bind(thisProperty); + } + + function loopInDuration(type, duration) { + return loopIn(type, duration, true); + } + + function loopOutDuration(type, duration) { + return loopOut(type, duration, true); + } + + if (this.getValueAtTime) { + valueAtTime = this.getValueAtTime.bind(this); + } + + if (this.getVelocityAtTime) { + velocityAtTime = this.getVelocityAtTime.bind(this); + } + + var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface); + + function lookAt(elem1, elem2) { + var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]]; + var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads; + var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads; + return [yaw, pitch, 0]; + } + + function easeOut(t, tMin, tMax, val1, val2) { + return applyEase(easeOutBez, t, tMin, tMax, val1, val2); + } + + function easeIn(t, tMin, tMax, val1, val2) { + return applyEase(easeInBez, t, tMin, tMax, val1, val2); + } + + function ease(t, tMin, tMax, val1, val2) { + return applyEase(easeInOutBez, t, tMin, tMax, val1, val2); + } + + function applyEase(fn, t, tMin, tMax, val1, val2) { + if (val1 === undefined) { + val1 = tMin; + val2 = tMax; + } else { + t = (t - tMin) / (tMax - tMin); + } + if (t > 1) { + t = 1; + } else if (t < 0) { + t = 0; + } + var mult = fn(t); + if ($bm_isInstanceOfArray(val1)) { + var iKey; + var lenKey = val1.length; + var arr = createTypedArray('float32', lenKey); + for (iKey = 0; iKey < lenKey; iKey += 1) { + arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey]; + } + return arr; + } + return (val2 - val1) * mult + val1; + } + + function nearestKey(time) { + var iKey; + var lenKey = data.k.length; + var index; + var keyTime; + if (!data.k.length || typeof (data.k[0]) === 'number') { + index = 0; + keyTime = 0; + } else { + index = -1; + time *= elem.comp.globalData.frameRate; + if (time < data.k[0].t) { + index = 1; + keyTime = data.k[0].t; + } else { + for (iKey = 0; iKey < lenKey - 1; iKey += 1) { + if (time === data.k[iKey].t) { + index = iKey + 1; + keyTime = data.k[iKey].t; + break; + } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) { + if (time - data.k[iKey].t > data.k[iKey + 1].t - time) { + index = iKey + 2; + keyTime = data.k[iKey + 1].t; + } else { + index = iKey + 1; + keyTime = data.k[iKey].t; + } + break; + } + } + if (index === -1) { + index = iKey + 1; + keyTime = data.k[iKey].t; + } + } + } + var obKey = {}; + obKey.index = index; + obKey.time = keyTime / elem.comp.globalData.frameRate; + return obKey; + } + + function key(ind) { + var obKey; + var iKey; + var lenKey; + if (!data.k.length || typeof (data.k[0]) === 'number') { + throw new Error('The property has no keyframe at index ' + ind); + } + ind -= 1; + obKey = { + time: data.k[ind].t / elem.comp.globalData.frameRate, + value: [], + }; + var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e; + + lenKey = arr.length; + for (iKey = 0; iKey < lenKey; iKey += 1) { + obKey[iKey] = arr[iKey]; + obKey.value[iKey] = arr[iKey]; + } + return obKey; + } + + function framesToTime(fr, fps) { + if (!fps) { + fps = elem.comp.globalData.frameRate; + } + return fr / fps; + } + + function timeToFrames(t, fps) { + if (!t && t !== 0) { + t = time; + } + if (!fps) { + fps = elem.comp.globalData.frameRate; + } + return t * fps; + } + + function seedRandom(seed) { + BMMath.seedrandom(randSeed + seed); + } + + function sourceRectAtTime() { + return elem.sourceRectAtTime(); + } + + function substring(init, end) { + if (typeof value === 'string') { + if (end === undefined) { + return value.substring(init); + } + return value.substring(init, end); + } + return ''; + } + + function substr(init, end) { + if (typeof value === 'string') { + if (end === undefined) { + return value.substr(init); + } + return value.substr(init, end); + } + return ''; + } + + function posterizeTime(framesPerSecond) { + time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond; + value = valueAtTime(time); + } + + var time; + var velocity; + var value; + var text; + var textIndex; + var textTotal; + var selectorValue; + var index = elem.data.ind; + var hasParent = !!(elem.hierarchy && elem.hierarchy.length); + var parent; + var randSeed = Math.floor(Math.random() * 1000000); + var globalData = elem.globalData; + function executeExpression(_value) { + // globalData.pushExpression(); + value = _value; + if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') { + return value; + } + if (this.propType === 'textSelector') { + textIndex = this.textIndex; + textTotal = this.textTotal; + selectorValue = this.selectorValue; + } + if (!thisLayer) { + text = elem.layerInterface.text; + thisLayer = elem.layerInterface; + thisComp = elem.comp.compInterface; + toWorld = thisLayer.toWorld.bind(thisLayer); + fromWorld = thisLayer.fromWorld.bind(thisLayer); + fromComp = thisLayer.fromComp.bind(thisLayer); + toComp = thisLayer.toComp.bind(thisLayer); + mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null; + fromCompToSurface = fromComp; + } + if (!transform) { + transform = elem.layerInterface('ADBE Transform Group'); + $bm_transform = transform; + if (transform) { + anchorPoint = transform.anchorPoint; + /* position = transform.position; + rotation = transform.rotation; + scale = transform.scale; */ + } + } + + if (elemType === 4 && !content) { + content = thisLayer('ADBE Root Vectors Group'); + } + if (!effect) { + effect = thisLayer(4); + } + hasParent = !!(elem.hierarchy && elem.hierarchy.length); + if (hasParent && !parent) { + parent = elem.hierarchy[0].layerInterface; + } + time = this.comp.renderedFrame / this.comp.globalData.frameRate; + if (_needsRandom) { + seedRandom(randSeed + time); + } + if (needsVelocity) { + velocity = velocityAtTime(time); + } + expression_function(); + this.frameExpressionId = elem.globalData.frameId; + + // TODO: Check if it's possible to return on ShapeInterface the .v value + // Changed this to a ternary operation because Rollup failed compiling it correctly + scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE + ? scoped_bm_rt.v + : scoped_bm_rt; + return scoped_bm_rt; + } + // Bundlers will see these as dead code and unless we reference them + executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData]; + return executeExpression; + } + + ob.initiateExpression = initiateExpression; + ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath]; + return ob; +}()); + +const expressionHelpers = (function () { + function searchExpressions(elem, data, prop) { + if (data.x) { + prop.k = true; + prop.x = true; + prop.initiateExpression = ExpressionManager.initiateExpression; + prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop)); + } + } + + function getValueAtTime(frameNum) { + frameNum *= this.elem.globalData.frameRate; + frameNum -= this.offsetTime; + if (frameNum !== this._cachingAtTime.lastFrame) { + this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0; + this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime); + this._cachingAtTime.lastFrame = frameNum; + } + return this._cachingAtTime.value; + } + + function getSpeedAtTime(frameNum) { + var delta = -0.01; + var v1 = this.getValueAtTime(frameNum); + var v2 = this.getValueAtTime(frameNum + delta); + var speed = 0; + if (v1.length) { + var i; + for (i = 0; i < v1.length; i += 1) { + speed += Math.pow(v2[i] - v1[i], 2); + } + speed = Math.sqrt(speed) * 100; + } else { + speed = 0; + } + return speed; + } + + function getVelocityAtTime(frameNum) { + if (this.vel !== undefined) { + return this.vel; + } + var delta = -0.001; + // frameNum += this.elem.data.st; + var v1 = this.getValueAtTime(frameNum); + var v2 = this.getValueAtTime(frameNum + delta); + var velocity; + if (v1.length) { + velocity = createTypedArray('float32', v1.length); + var i; + for (i = 0; i < v1.length; i += 1) { + // removing frameRate + // if needed, don't add it here + // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta); + velocity[i] = (v2[i] - v1[i]) / delta; + } + } else { + velocity = (v2 - v1) / delta; + } + return velocity; + } + + function getStaticValueAtTime() { + return this.pv; + } + + function setGroupProperty(propertyGroup) { + this.propertyGroup = propertyGroup; + } + + return { + searchExpressions: searchExpressions, + getSpeedAtTime: getSpeedAtTime, + getVelocityAtTime: getVelocityAtTime, + getValueAtTime: getValueAtTime, + getStaticValueAtTime: getStaticValueAtTime, + setGroupProperty: setGroupProperty, + }; +}()); + +function addPropertyDecorator() { + function loopOut(type, duration, durationFlag) { + if (!this.k || !this.keyframes) { + return this.pv; + } + type = type ? type.toLowerCase() : ''; + var currentFrame = this.comp.renderedFrame; + var keyframes = this.keyframes; + var lastKeyFrame = keyframes[keyframes.length - 1].t; + if (currentFrame <= lastKeyFrame) { + return this.pv; + } + var cycleDuration; + var firstKeyFrame; + if (!durationFlag) { + if (!duration || duration > keyframes.length - 1) { + duration = keyframes.length - 1; + } + firstKeyFrame = keyframes[keyframes.length - 1 - duration].t; + cycleDuration = lastKeyFrame - firstKeyFrame; + } else { + if (!duration) { + cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip); + } else { + cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration); + } + firstKeyFrame = lastKeyFrame - cycleDuration; + } + var i; + var len; + var ret; + if (type === 'pingpong') { + var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration); + if (iterations % 2 !== 0) { + return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line + } + } else if (type === 'offset') { + var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); + var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); + var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line + var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration); + if (this.pv.length) { + ret = new Array(initV.length); + len = ret.length; + for (i = 0; i < len; i += 1) { + ret[i] = (endV[i] - initV[i]) * repeats + current[i]; + } + return ret; + } + return (endV - initV) * repeats + current; + } else if (type === 'continue') { + var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); + var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0); + if (this.pv.length) { + ret = new Array(lastValue.length); + len = ret.length; + for (i = 0; i < len; i += 1) { + ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line + } + return ret; + } + return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001); + } + return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line + + } + + function loopIn(type, duration, durationFlag) { + if (!this.k) { + return this.pv; + } + type = type ? type.toLowerCase() : ''; + var currentFrame = this.comp.renderedFrame; + var keyframes = this.keyframes; + var firstKeyFrame = keyframes[0].t; + if (currentFrame >= firstKeyFrame) { + return this.pv; + } + var cycleDuration; + var lastKeyFrame; + if (!durationFlag) { + if (!duration || duration > keyframes.length - 1) { + duration = keyframes.length - 1; + } + lastKeyFrame = keyframes[duration].t; + cycleDuration = lastKeyFrame - firstKeyFrame; + } else { + if (!duration) { + cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame); + } else { + cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration); + } + lastKeyFrame = firstKeyFrame + cycleDuration; + } + var i; + var len; + var ret; + if (type === 'pingpong') { + var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration); + if (iterations % 2 === 0) { + return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line + } + } else if (type === 'offset') { + var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); + var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); + var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0); + var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1; + if (this.pv.length) { + ret = new Array(initV.length); + len = ret.length; + for (i = 0; i < len; i += 1) { + ret[i] = current[i] - (endV[i] - initV[i]) * repeats; + } + return ret; + } + return current - (endV - initV) * repeats; + } else if (type === 'continue') { + var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); + var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0); + if (this.pv.length) { + ret = new Array(firstValue.length); + len = ret.length; + for (i = 0; i < len; i += 1) { + ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001; + } + return ret; + } + return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001; + } + return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line + + } + + function smooth(width, samples) { + if (!this.k) { + return this.pv; + } + width = (width || 0.4) * 0.5; + samples = Math.floor(samples || 5); + if (samples <= 1) { + return this.pv; + } + var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate; + var initFrame = currentTime - width; + var endFrame = currentTime + width; + var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1; + var i = 0; + var j = 0; + var value; + if (this.pv.length) { + value = createTypedArray('float32', this.pv.length); + } else { + value = 0; + } + var sampleValue; + while (i < samples) { + sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency); + if (this.pv.length) { + for (j = 0; j < this.pv.length; j += 1) { + value[j] += sampleValue[j]; + } + } else { + value += sampleValue; + } + i += 1; + } + if (this.pv.length) { + for (j = 0; j < this.pv.length; j += 1) { + value[j] /= samples; + } + } else { + value /= samples; + } + return value; + } + + function getTransformValueAtTime(time) { + if (!this._transformCachingAtTime) { + this._transformCachingAtTime = { + v: new Matrix(), + }; + } + /// / + var matrix = this._transformCachingAtTime.v; + matrix.cloneFromProps(this.pre.props); + if (this.appliedTransformations < 1) { + var anchor = this.a.getValueAtTime(time); + matrix.translate( + -anchor[0] * this.a.mult, + -anchor[1] * this.a.mult, + anchor[2] * this.a.mult + ); + } + if (this.appliedTransformations < 2) { + var scale = this.s.getValueAtTime(time); + matrix.scale( + scale[0] * this.s.mult, + scale[1] * this.s.mult, + scale[2] * this.s.mult + ); + } + if (this.sk && this.appliedTransformations < 3) { + var skew = this.sk.getValueAtTime(time); + var skewAxis = this.sa.getValueAtTime(time); + matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult); + } + if (this.r && this.appliedTransformations < 4) { + var rotation = this.r.getValueAtTime(time); + matrix.rotate(-rotation * this.r.mult); + } else if (!this.r && this.appliedTransformations < 4) { + var rotationZ = this.rz.getValueAtTime(time); + var rotationY = this.ry.getValueAtTime(time); + var rotationX = this.rx.getValueAtTime(time); + var orientation = this.or.getValueAtTime(time); + matrix.rotateZ(-rotationZ * this.rz.mult) + .rotateY(rotationY * this.ry.mult) + .rotateX(rotationX * this.rx.mult) + .rotateZ(-orientation[2] * this.or.mult) + .rotateY(orientation[1] * this.or.mult) + .rotateX(orientation[0] * this.or.mult); + } + if (this.data.p && this.data.p.s) { + var positionX = this.px.getValueAtTime(time); + var positionY = this.py.getValueAtTime(time); + if (this.data.p.z) { + var positionZ = this.pz.getValueAtTime(time); + matrix.translate( + positionX * this.px.mult, + positionY * this.py.mult, + -positionZ * this.pz.mult + ); + } else { + matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0); + } + } else { + var position = this.p.getValueAtTime(time); + matrix.translate( + position[0] * this.p.mult, + position[1] * this.p.mult, + -position[2] * this.p.mult + ); + } + return matrix; + /// / + } + + function getTransformStaticValueAtTime() { + return this.v.clone(new Matrix()); + } + + var getTransformProperty = TransformPropertyFactory.getTransformProperty; + TransformPropertyFactory.getTransformProperty = function (elem, data, container) { + var prop = getTransformProperty(elem, data, container); + if (prop.dynamicProperties.length) { + prop.getValueAtTime = getTransformValueAtTime.bind(prop); + } else { + prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop); + } + prop.setGroupProperty = expressionHelpers.setGroupProperty; + return prop; + }; + + var propertyGetProp = PropertyFactory.getProp; + PropertyFactory.getProp = function (elem, data, type, mult, container) { + var prop = propertyGetProp(elem, data, type, mult, container); + // prop.getVelocityAtTime = getVelocityAtTime; + // prop.loopOut = loopOut; + // prop.loopIn = loopIn; + if (prop.kf) { + prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop); + } else { + prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop); + } + prop.setGroupProperty = expressionHelpers.setGroupProperty; + prop.loopOut = loopOut; + prop.loopIn = loopIn; + prop.smooth = smooth; + prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop); + prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop); + prop.numKeys = data.a === 1 ? data.k.length : 0; + prop.propertyIndex = data.ix; + var value = 0; + if (type !== 0) { + value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length); + } + prop._cachingAtTime = { + lastFrame: initialDefaultFrame, + lastIndex: 0, + value: value, + }; + expressionHelpers.searchExpressions(elem, data, prop); + if (prop.k) { + container.addDynamicProperty(prop); + } + + return prop; + }; + + function getShapeValueAtTime(frameNum) { + // For now this caching object is created only when needed instead of creating it when the shape is initialized. + if (!this._cachingAtTime) { + this._cachingAtTime = { + shapeValue: shapePool.clone(this.pv), + lastIndex: 0, + lastTime: initialDefaultFrame, + }; + } + + frameNum *= this.elem.globalData.frameRate; + frameNum -= this.offsetTime; + if (frameNum !== this._cachingAtTime.lastTime) { + this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0; + this._cachingAtTime.lastTime = frameNum; + this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime); + } + return this._cachingAtTime.shapeValue; + } + + var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction(); + var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction(); + + function ShapeExpressions() {} + ShapeExpressions.prototype = { + vertices: function (prop, time) { + if (this.k) { + this.getValue(); + } + var shapePath = this.v; + if (time !== undefined) { + shapePath = this.getValueAtTime(time, 0); + } + var i; + var len = shapePath._length; + var vertices = shapePath[prop]; + var points = shapePath.v; + var arr = createSizedArray(len); + for (i = 0; i < len; i += 1) { + if (prop === 'i' || prop === 'o') { + arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]]; + } else { + arr[i] = [vertices[i][0], vertices[i][1]]; + } + } + return arr; + }, + points: function (time) { + return this.vertices('v', time); + }, + inTangents: function (time) { + return this.vertices('i', time); + }, + outTangents: function (time) { + return this.vertices('o', time); + }, + isClosed: function () { + return this.v.c; + }, + pointOnPath: function (perc, time) { + var shapePath = this.v; + if (time !== undefined) { + shapePath = this.getValueAtTime(time, 0); + } + if (!this._segmentsLength) { + this._segmentsLength = bez.getSegmentsLength(shapePath); + } + + var segmentsLength = this._segmentsLength; + var lengths = segmentsLength.lengths; + var lengthPos = segmentsLength.totalLength * perc; + var i = 0; + var len = lengths.length; + var accumulatedLength = 0; + var pt; + while (i < len) { + if (accumulatedLength + lengths[i].addedLength > lengthPos) { + var initIndex = i; + var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1; + var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength; + pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]); + break; + } else { + accumulatedLength += lengths[i].addedLength; + } + i += 1; + } + if (!pt) { + pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]]; + } + return pt; + }, + vectorOnPath: function (perc, time, vectorType) { + // perc doesn't use triple equality because it can be a Number object as well as a primitive. + if (perc == 1) { // eslint-disable-line eqeqeq + perc = this.v.c; + } else if (perc == 0) { // eslint-disable-line eqeqeq + perc = 0.999; + } + var pt1 = this.pointOnPath(perc, time); + var pt2 = this.pointOnPath(perc + 0.001, time); + var xLength = pt2[0] - pt1[0]; + var yLength = pt2[1] - pt1[1]; + var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2)); + if (magnitude === 0) { + return [0, 0]; + } + var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude]; + return unitVector; + }, + tangentOnPath: function (perc, time) { + return this.vectorOnPath(perc, time, 'tangent'); + }, + normalOnPath: function (perc, time) { + return this.vectorOnPath(perc, time, 'normal'); + }, + setGroupProperty: expressionHelpers.setGroupProperty, + getValueAtTime: expressionHelpers.getStaticValueAtTime, + }; + extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction); + extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction); + KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime; + KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression; + + var propertyGetShapeProp = ShapePropertyFactory.getShapeProp; + ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) { + var prop = propertyGetShapeProp(elem, data, type, arr, trims); + prop.propertyIndex = data.ix; + prop.lock = false; + if (type === 3) { + expressionHelpers.searchExpressions(elem, data.pt, prop); + } else if (type === 4) { + expressionHelpers.searchExpressions(elem, data.ks, prop); + } + if (prop.k) { + elem.addDynamicProperty(prop); + } + return prop; + }; +} + +function initialize$1() { + addPropertyDecorator(); +} + +function addDecorator() { + function searchExpressions() { + if (this.data.d.x) { + this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this); + this.addEffect(this.getExpressionValue.bind(this)); + return true; + } + return null; + } + + TextProperty.prototype.getExpressionValue = function (currentValue, text) { + var newValue = this.calculateExpression(text); + if (currentValue.t !== newValue) { + var newData = {}; + this.copyData(newData, currentValue); + newData.t = newValue.toString(); + newData.__complete = false; + return newData; + } + return currentValue; + }; + + TextProperty.prototype.searchProperty = function () { + var isKeyframed = this.searchKeyframes(); + var hasExpressions = this.searchExpressions(); + this.kf = isKeyframed || hasExpressions; + return this.kf; + }; + + TextProperty.prototype.searchExpressions = searchExpressions; +} + +function initialize() { + addDecorator(); +} + +// Registering expression plugin +setExpressionsPlugin(Expressions); +initialize$1(); +initialize(); + +export { lottie as default }; diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/lwu-request.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/lwu-request.ts new file mode 100644 index 0000000..83d04b3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/lwu-request.ts @@ -0,0 +1,756 @@ +/** + * 显示loading + * @param params - 参数 + * - title - 标题 + * - mask - 是否显示透明蒙层 + */ +export const loading = (params: { + title: string; + mask?: boolean; +}) => { + uni.showLoading({ + title: params.title, + mask: params.mask || true + }) +} + +/** + * 消息提示框 + * @param params - 参数 + * - title - 标题 + * - duration - 提示的延迟时间 + * @returns {void} + */ +export const msg = (params: { + title: string; + duration?: number; +}) => { + uni.showToast({ + title: params.title, + icon: 'none', + image: '', + mask: false, + duration: params.duration || 2000 + }) +} + +/** + * 网络请求参数配置 + */ +export interface RequestOptionsConfig { + baseUrl?: { + /** + * 开发环境域名 + */ + dev: string; + /** + * 生产环境域名 + */ + pro: string; + }; + /** + * 调试模式,开启后控制台会显示内部调试打印信息 + */ + debug?: boolean; + /** + * 请求过程是否显示loading + */ + loading?: boolean; + /** + * 请求中loading弹窗的提示文本,默认为 `'请求中...'` + */ + loadingText?: string; + /** + * 本次请求的队列ID,需要过滤重复请求、手动中断拦截的场景使用 + */ + task_id?: string; + /** + * 自定义请求前拦截 + */ + before?: Function; + /** + * 自定义请求后拦截 + */ + after?: Function; + /** + * 自定义请求头 + */ + header?: object; + // 下面配置项参考 [uniapp 网络请求API](https://uniapp.dcloud.io/api/request/request.html) + /** + * 请求超时时间,单位ms + */ + timeout?: number; + /** + * 请求方式,有效值:`'GET'`、`'POST'`、`'PUT'`、`'DELETE'`、`'CONNECT'`、`'HEAD'`、`'OPTIONS'`、`'TRACE'` + */ + method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'HEAD' | 'OPTIONS' | 'TRACE'; + /** + * 如果设为 json,会对返回的数据进行一次 JSON.parse,非 json 不会进行 JSON.parse + */ + dataType?: string; + /** + * 设置响应的数据类型。合法值:`text`、`arraybuffer` + */ + responseType?: string; + /** + * 验证 ssl 证书 + */ + sslVerify?: boolean; + /** + * 跨域请求时是否携带凭证(cookies) + */ + withCredentials?: boolean; + /** + * DNS解析时优先使用ipv4 + */ + firstIpv4?: boolean; + /** + * 业务错误代码拦截处理程序,请根据业务实际情况灵活设置 + * @param code + * @param errMsg + * @returns + */ + errorHandleByCode?: (code: number, errMsg?: string) => void; + /** + * API错误拦截处理程序,请根据业务实际情况灵活设置 + * + `1.1.0` 及以上版本支持 + * + * @param data API返回内容 + * @param args uniapp请求API回调结果 + */ + apiErrorInterception?: (data: any, args?: UniApp.RequestSuccessCallbackResult) => void; + /** + * 网络异常或者断网处理程序,建议更新缓存中是否断网或者网络繁忙的标识以便前端页面展示没有网络或者断网的通用异常页面 + * @returns + */ + networkExceptionHandle?: () => void; + /** + * 请求成功时接口响应描述信息字段名称,默认为 `'msg'` + */ + requestSuccessResponseMsgName?: string; + /** + * 缓存中token字段名称,方便请求库从缓存获取token完成自动填充token + */ + tokenStorageKeyName?: string; + /** + * 自定义获取token处理程序,通过promise返回最新token值即可 + * + `1.0.2` 及以上版本支持 + * @returns + */ + tokenValue?: () => Promise; + /** + * 自定义构建URL参数方式,即用什么方式把请求的params对象数据转为`a=1&b=2`的格式,默认使用NodeJS内置对象 `URLSearchParams` 转化,可以自定义通过 `qs` 插件的方式转化 + * + `1.0.2` 及以上版本支持 + * + * @example + * ```ts + * // qs 插件转化示例 + * import qs from 'qs'; + * + * return qs.stringify(obj); + * ``` + */ + buildQueryString?: (obj: object) => string; + /** + * 请求携带token的方式,有效值:`header`、`body` + */ + takeTokenMethod?: 'header' | 'body'; + /** + * 请求携带token的字段名称,header方式默认为 `Authorization` + */ + takenTokenKeyName?: string; + /** + * 是否自动刷新token + */ + autoRefreshToken?: boolean; + /** + * 自动刷新token程序,返回promise,`autoRefreshToken` 为 `true`时生效 + */ + refreshTokenHandle?: () => Promise; + /** + * 自定义token失效的错误代码,便于请求库内部做自动刷新token判断 + */ + tokenExpiredCode?: number; + /** + * 请求失败是否自动重试 + */ + retry?: boolean; + /** + * 请求失败自动重试次数 + */ + retryCount?: number; + /** + * 请求失败重试次数是否自动计算,失败重试次数上限依然是设置的retryCount值 + */ + retryCountAutoOffRetry?: boolean; + /** + * 请求失败用来生成重试时间上限(指数退避算法需要),单位秒 + */ + retryMaximum?: number; + /** + * 请求失败执行重试时间上限(指数退避算法需要),达到上限后不再重试 + */ + retryDeadline?: number; +} + +/** + * 这里是原来的全局配置和请求配置未分开的请求配置类型 + */ +export interface RequestOptions { + task_id?: string; + before?: Function; + after?: Function; + header?: object; + method?: "GET" | "OPTIONS" | "HEAD" | "POST" | "PUT" | "DELETE" | "TRACE" | "CONNECT"; + timeout?: number; + dataType?: string; + responseType?: string; + sslVerify?: boolean; + withCredentials?: boolean; + firstIpv4?: boolean; + retryCount?: number; +}; + +/** + * @param {number} times 重试次数 + * @param {number} maximum_offretry 最大等待秒数 + * @returns {number} + * 指数退避算法简介: + * 为了解决如何设置适当的重传等待时间而存在的算法,基本流程如下: + * - 1.客户端发起请求 + * - 2.请求失败,等待1 + random_number_milliseconds秒后重试请求。 + * - 3.请求失败,等待2 + random_number_milliseconds秒后重试请求。 + * - 4.请求失败,等待4 + random_number_milliseconds秒后重试请求。 + * - 5.以此类推,直至达到设置的等待时间上限为止结束请求,具体算法公式如下: + * Math.min((2 ** n + ranom_number_milliseconds), maxium_backoff) + * 上述的random_number_milliseconds为1到1000的随机毫秒数 + */ +const makeRetryTimeout = (times: number, maximum_offretry: number): number => { + const random_number_milliseconds = Math.floor(Math.random() * 1000); + return Math.min(Math.pow(2, times) * 1000 + random_number_milliseconds, maximum_offretry); +} + +/** + * 对象转query string的参数字符串 + * @param obj 需要转化的对象参数 + */ +const objToQueryString = (obj: object): string => { + if (typeof obj === 'object' && obj !== null) { + return Object.keys(obj) + .map((key) => `${key}=${encodeURIComponent((obj as any)[key])}`) + .join('&'); + } + + return JSON.stringify(obj); +} + +/** + * 网络请求库封装 + * @public + */ +export class Http { + /** + * 当前请求任务 + */ + private currentRequestTask: UniApp.RequestTask = { + abort: () => { }, + onHeadersReceived: () => { }, + offHeadersReceived: () => { } + }; + private requestTasksName = 'LWU-REQUEST-TASKS'; + /** + * 请求锁 + */ + private lock: boolean = true; + /** + * 请求列表 + */ + private pending: Function[] = []; + /** + * 请求失败自动重试次数 + */ + private retryCount: number = 3; + /** + * 请求失败用来生成重试时间上限(指数退避算法需要),单位秒 + */ + private retryMaximum: number = 64; + /** + * 重试等待时间列表 + */ + private retryTimeout: (number | undefined)[] = []; + /** + * 重试等待时间上限 + */ + private retryDeadline: number = 10000; + /** + * 配置信息 + */ + private config: RequestOptionsConfig = { + baseUrl: { + pro: '', + dev: '' + }, + /** + * 业务错误代码拦截处理程序,请根据业务实际情况灵活设置 + * @param code + * @param errMsg + * @returns + */ + errorHandleByCode: (code: number, errMsg?: string) => { } + }; + + /** + * 获取请求配置 + * @author KviewUI + * @param {RequestOptionsConfig} config - 配置信息 + * @returns + */ + private useConfig = (config: RequestOptionsConfig) => { + return { + baseUrl: config.baseUrl ?? { + pro: '', + dev: '' + }, + /** + * 调试模式,开启后控制台会显示内部调试打印信息 + */ + debug: config.debug ?? false, + /** + * 请求过程是否显示loading + */ + loading: config.loading ?? true, + /** + * 请求中loading弹窗的提示文本,默认为 `'请求中...'` + */ + loadingText: config.loadingText ?? '请求中...', + /** + * 本次请求的队列ID,需要过滤重复请求、手动中断拦截的场景使用 + */ + task_id: config.task_id ?? '', + /** + * 自定义请求前拦截 + */ + before: config.before, + /** + * 自定义请求后拦截 + */ + after: config.after, + /** + * 自定义请求头 + */ + header: config.header, + // 下面配置项参考 [uniapp 网络请求API](https://uniapp.dcloud.io/api/request/request.html) + /** + * 请求超时时间,单位`ms` + */ + timeout: config.timeout ?? 6000, + /** + * 请求方式,有效值:`'GET'`、`'POST'`、`'PUT'`、`'DELETE'`、`'CONNECT'`、`'HEAD'`、`'OPTIONS'`、`'TRACE'` + */ + method: config.method ?? 'GET', + /** + * 如果设为 json,会对返回的数据进行一次 JSON.parse,非 json 不会进行 JSON.parse + */ + dataType: config.dataType ?? 'json', + /** + * 设置响应的数据类型。合法值:`'text'`、`'arraybuffer'` + */ + responseType: config.responseType ?? 'text', + /** + * 验证 ssl 证书 + */ + sslVerify: config.sslVerify ?? true, + /** + * 跨域请求时是否携带凭证(cookies) + */ + withCredentials: config.withCredentials ?? false, + /** + * DNS解析时优先使用ipv4 + */ + firstIpv4: config.firstIpv4 ?? false, + /** + * 业务错误代码拦截处理程序,请根据业务实际情况灵活设置 + * @param code + * @param errMsg + * @returns + */ + errorHandleByCode: config.errorHandleByCode, + /** + * API错误拦截处理程序,请根据业务实际情况灵活设置 + * @param data API返回内容 + * @param args uniapp请求API回调结果 + */ + apiErrorInterception: config.apiErrorInterception, + /** + * 网络异常或者断网处理程序,建议更新缓存中是否断网或者网络繁忙的标识以便前端页面展示没有网络或者断网的通用异常页面 + * @returns + */ + networkExceptionHandle: () => { }, + /** + * 请求成功时接口响应描述信息字段名称,默认为 `'msg'` + */ + requestSuccessResponseMsgName: config.requestSuccessResponseMsgName ?? 'msg', + /** + * 缓存中token字段名称,方便请求库从缓存获取token完成自动填充token + */ + tokenStorageKeyName: config.tokenStorageKeyName ?? '', + /** + * 自定义获取token处理程序,通过promise返回最新token值即可 + * @returns + * @example + * ```ts + * tokenValue: () => { + * return new Promise((resolve, _) => { + * // 获取最新token演示 + * const token = getToken(); + * token && resolve(token); + * }); + * } + * ``` + */ + tokenValue: config.tokenValue, + /** + * 自定义构建URL参数方式,即用什么方式把请求的params对象数据转为`a=1&b=2`的格式,默认使用NodeJS内置对象 `URLSearchParams` 转化,可以自定义通过 `qs` 插件的方式转化 + * + * @example + * ```ts + * // qs 插件转化示例 + * import qs from 'qs'; + * + * return qs.stringify(obj); + * ``` + */ + buildQueryString: config.buildQueryString, + /** + * 请求携带token的方式,有效值:header、body + */ + takeTokenMethod: config.takeTokenMethod ?? 'header', + /** + * 请求携带token的字段名称,header方式默认为 `Authorization` + */ + takenTokenKeyName: config.takenTokenKeyName ?? 'Authorization', + /** + * 是否自动刷新token + */ + autoRefreshToken: false, + /** + * 自动刷新token程序,返回promise,`autoRefreshToken` 为 `true`时生效 + */ + refreshTokenHandle: config.refreshTokenHandle, + /** + * 自定义token失效的错误代码,便于请求库内部做自动刷新token判断 + */ + tokenExpiredCode: config.tokenExpiredCode ?? 403, + /** + * 请求失败是否自动重试 + */ + retry: config.retry ?? false, + /** + * 请求失败自动重试次数 + */ + retryCount: config.retryCount ?? 3, + /** + * 请求失败重试次数是否自动计算,失败重试次数上限依然是设置的retryCount值 + */ + retryCountAutoOffRetry: config.retryCountAutoOffRetry ?? true, + /** + * 请求失败用来生成重试时间上限(指数退避算法需要),单位秒 + */ + retryMaximum: config.retryMaximum ?? 64, + /** + * 请求失败执行重试时间上限(指数退避算法需要),达到上限后不再重试 + */ + retryDeadline: config.retryDeadline ?? 10000 + } + } + + /** + * 初始化配置内容 + * @param config + */ + private initConfig = (config: RequestOptionsConfig) => { + this.config = { + ...this.useConfig(config) + }; + + if (!this.config.retry) { + this.retryCount = 0; + } else { + if (this.config.retryCountAutoOffRetry) { + this.retryMaximum = (this.config.retryMaximum as number) * 1000; + this.retryTimeout = []; + this.retryDeadline = this.config.retryDeadline as number; + + for (let i = 0; i < this.retryCount; i++) { + if (this.retryDeadline < 0) { + break; + } + const timeout = makeRetryTimeout(i, this.retryMaximum); + this.retryDeadline -= timeout; + this.retryTimeout.push(timeout); + } + + this.retryCount = this.retryTimeout.length; + } + } + } + + /** + * 请求失败的错误统一处理 + * @param code - 错误码 + * @param message - 自定义错误信息 + */ + private handleError(code: number, message: string = ''): void { + // 调用错误状态码处理程序 + if (this.config.errorHandleByCode) { + this.config.errorHandleByCode(code, message); + } else { + msg({ title: message }); + } + } + + private interceptor(url: string, before: Function | undefined, after: Function | undefined) { + uni.addInterceptor('request', { + invoke: (args) => { + // 请求前拦截处理 + if (this.config.debug) { + console.warn(`【LwuRequest Debug:请求拦截】${JSON.stringify(args)}`); + } + + if (this.config.loading) { + loading({ title: this.config.loadingText ?? '请求中...' }); + } + + if (args?.header?.contentType) { + args.header['content-type'] = args.header.contentType; + delete args.header.contentType; + } + + // 拼接baseURI + let baseURI: string|undefined = ''; + if (process.env.NODE_ENV === 'development') { + baseURI = this.config.baseUrl && this.config.baseUrl.dev; + // debug = this.config.debug as boolean; + } else { + baseURI = this.config.baseUrl && this.config.baseUrl.pro; + } + + let reqUrl = `${baseURI}${url}`; + if (args.method === 'GET') { + args.data = this.config.buildQueryString && this.config.buildQueryString(args.data) + ? this.config.buildQueryString(args.data) + // : new URLSearchParams(Object.entries(args.data)).toString(); + : objToQueryString(args.data); + args.url = `${reqUrl}?${args.data}`; + } else { + args.url = reqUrl; + } + + // 请求前自定义拦截 + if (before) { + before(); + } + }, + // 响应拦截 + success: (args: UniApp.RequestSuccessCallbackResult) => { + this.handleError(args.statusCode, (args.data as AnyObject)[this.config.requestSuccessResponseMsgName as string]); + + this.config.apiErrorInterception && this.config.apiErrorInterception(args.data, args); + + if (this.config.debug) { + console.warn(`【LwuRequest Debug:响应拦截】${JSON.stringify(args)}`); + } + + if (after) { + after(); + } + }, + fail: (err: UniApp.GeneralCallbackResult) => { + if (this.config.debug) { + console.warn(`【LwuRequest Debug:请求拦截失败】${JSON.stringify(err)}`); + } + }, + complete: (res: UniApp.GeneralCallbackResult) => { + uni.hideLoading(); + if (this.config.debug) { + console.warn(`【LwuRequest Debug:请求拦截完成】${JSON.stringify(res)}`); + } + } + }); + } + + /** + * 刷新token处理 + */ + private refreshToken() { + if (this.config.refreshTokenHandle) { + this.config.refreshTokenHandle() + .then(() => { + // 重新执行业务请求 + uni.getStorageSync('LWU-REQUEST-CALLBACK')((callback: () => void) => { + callback(); + }) + }) + .catch(() => { + // token失效 + this.handleError(this.config.tokenExpiredCode as number); + }); + } + } + + public request(url: string, data: any = {}, options: RequestOptionsConfig = { + header: {}, + method: this.config.method, + timeout: this.config.timeout, + dataType: this.config.dataType, + responseType: this.config.responseType, + sslVerify: this.config.sslVerify, + withCredentials: this.config.withCredentials, + firstIpv4: this.config.firstIpv4, + retryCount: this.config.retryCount + }) { + // 初始化配置 + this.initConfig(options); + // 判断该请求队列是否存在,如果存在则中断请求 + const requestTasks = uni.getStorageSync(this.requestTasksName); + + if (options?.task_id && requestTasks[options?.task_id]) { + if (this.config.debug) { + console.warn(`【LwuRequest Debug】请求ID${options.task_id}有重复项已自动过滤`); + } + + requestTasks[options?.task_id]?.abort(); + } + + return new Promise((resolve, reject) => { + // 拦截器 + this.interceptor(url, options.before, options.after); + // let header: any = {}; + + // 判断是否存在token,如果存在则在请求头统一添加token,token获取从config配置获取 + let token = uni.getStorageSync(this.config.tokenStorageKeyName as string); + + const setToken = () => { + return new Promise((resolve, _) => { + token && resolve(token); + + if (this.config.tokenValue) { + this.config.tokenValue().then(res => { + res && resolve(res); + resolve(false); + }) + } else { + resolve(''); + } + }); + } + + setToken().then(getToken => { + if (getToken) { + if (this.config.takeTokenMethod === 'header') { + (options.header as any)[this.config.takenTokenKeyName as string] = getToken; + } + + if (this.config.takeTokenMethod === 'body') { + data[this.config.takenTokenKeyName as string] = getToken; + } + } + + // 发起请求 + this.currentRequestTask = uni.request({ + url: url, + data: data, + // header: reqHeader.header, + header: { + ...options.header + }, + method: options.method, + timeout: options.timeout, + dataType: options.dataType, + responseType: options.responseType, + sslVerify: options.sslVerify, + withCredentials: options.withCredentials, + firstIpv4: options.firstIpv4, + success: (res: UniApp.RequestSuccessCallbackResult) => { + if (res.statusCode !== this.config.tokenExpiredCode) { + resolve(res.data); + } else { + // 刷新token + this.refreshToken(); + uni.setStorageSync('LWU-REQUEST-CALLBACK', () => { + resolve(this.request(url, data, options)); + }); + } + }, + fail: (err: UniApp.GeneralCallbackResult) => { + this.retryCount = options.retryCount ?? 3; + + if (this.retryCount === 0) { + reject(err); + } else { + if (this.config.debug) { + console.warn(`【LwuRequest Debug】自动重试次数:${this.retryCount}`); + } + this.retryCount--; + setTimeout(this.request, this.retryTimeout.shift()); + // 网络异常或者断网处理 + this.config.networkExceptionHandle && this.config.networkExceptionHandle(); + } + } + }); + + // 判断是否设置请求队列ID + if (options?.task_id) { + // 当前请求存入缓存 + let tasks: UniApp.RequestTask[] = []; + tasks[options?.task_id as any] = this.currentRequestTask; + uni.setStorageSync(this.requestTasksName, tasks); + } + }); + }); + } + + public get(url: string, data: object = {}, options: RequestOptions = {}) { + return this.request(url, data, { + method: 'GET', + ...options + }); + } + + public post(url: string, data: object = {}, options: RequestOptions = {}) { + return this.request(url, data, { + method: 'POST', + ...options + }); + } + + public put(url: string, data: object = {}, options: RequestOptions = {}) { + return this.request(url, data, { + method: 'POST', + ...options + }); + } + + public delete(url: string, data: object = {}, options: RequestOptions = {}) { + return this.request(url, data, { + method: 'DELETE', + ...options + }); + } + + /** + * 中断请求,不传 `task_id` 时默认中断当前任务 + * @param task_id + */ + public abort(task_id: string = '') { + const requestTask = uni.getStorageSync(this.requestTasksName); + + if (requestTask[task_id]) { + requestTask[task_id].abort(); + } else { + this.currentRequestTask.abort(); + } + } +} + diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/minxs.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/minxs.ts new file mode 100644 index 0000000..1c3bde3 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/minxs.ts @@ -0,0 +1,247 @@ + +import colors from '../theme/theme'; +import { cssDirection, linearDirection, linearDeep, borderStyle, cssstyle, tmVuetify, cssDirectionType, linearDirectionType, linearDeepType, borderStyleType } from './interface'; +import { computed,PropType,ref } from "vue" +import { borderDirectionType, linearType } from '@/tmui/interface'; +// import { useTmpiniaStore } from './tmpinia'; +// const store = useTmpiniaStore(); +//自定义props +export const custom_props = { + /** + * 自定义的样式属性 + */ + _style: { + type: [Array, String, Object], + default: () => [] + }, + /** + * 自定义类名 + */ + _class: { + type: [Array, String], + default: '' + }, + /** + * 当前组件的主题。可以是颜色值,也可以是主题名称。 + */ + color: { + type: String, + default: 'primary' + }, + /** + * 是否跟随全局主题的变换而变换 + */ + followTheme: { + type: [Boolean, String], + default: false + }, + /** + * 暗黑 + */ + dark: { + type: [Boolean, String], + default: false + }, + /** + * 是否跟随主题全局切换暗黑模式。 + */ + followDark: { + type: [Boolean, String], + default: true + }, + /** + * 圆角 + */ + round: { + type: [Number,Array] as PropType, + default: 0 + }, + /** + * 投影,安卓上只有黑灰投影。 + */ + shadow: { + type: [Number], + default: 0,//4 + }, + /** + * 是否镂空背景。 + */ + outlined: { + type: [Boolean], + default: false + }, + /** + * 边线 + */ + border: { + type: [Number], + default: 0 + }, + /** + * 边线样式 + * @field solid|dashed|dotted + * @default solid + */ + borderStyle: { + type: String as PropType, + default: borderStyle.solid + }, + /** + * 边线的方向。 + */ + borderDirection: { + type: String as PropType, + default: cssDirection.all + }, + /** + * 是否浅色背景 + */ + text: { + type: [Boolean, String], + default: false + }, + /** + * 是否透明背景 + */ + transprent: { + type: [Boolean, String], + default: true + }, + /** + * 是否透明背景,等同transprent,因单词拼写错误,现在写一个正确的。 + */ + transparent: { + type: [Boolean, String], + default: true + }, + /** + * 渐变背景方向, + * left:右->左,right:左->右。top:下->上,bottom:上->下。 + */ + linear: { + type: String as PropType, + default: '' + }, + /** 渐变的亮浅 light,dark,accent亮系渐变和深色渐变。 */ + linearDeep: { + type: String as PropType, + default: 'light' + }, + /**当开启渐变时,如果提供些数组属性将产生自定义颜色的渐变值。 */ + linearColor:{ + type:[Array] as PropType>, + default:()=>[] + }, + //是否禁用圆角功能 ,针对安卓的特别处理。 + isDisabledRoundAndriod: { + type: [Boolean, String], + default: false + }, + //是否开启磨砂背景。 + blur:{ + type:Boolean, + default:false + }, + /**线的边线颜色,如果不提供自动从color中匹配计算。 */ + borderColor:{ + type:String, + default:"" + } +} +//暗黑状态。 +export const computedDark = (props: any, tmcfg: tmVuetify): boolean => { + const followDark = props.followDark; + const dark = props.dark; + const glboalDark = tmcfg.dark; + if (followDark) { + return glboalDark; + } + return dark; +} +//自定义类计算属性。 +export const computedClass = (props: any): string => { + const _class = props._class; + if (typeof _class == 'string') { + return _class + } + if (Array.isArray(_class)) { + return _class.join(' '); + } + return ''; +} +//自定义样式计算属性。 +export const computedStyle = (props: any): object => { + const _style = props._style; + if (typeof _style == 'string') { + let p = _style.split(";"); + let k = p.map(el => { + el = el.replace(";", ""); + let node: any = {}; + let idx = el.split(":"); + node[idx[0]] = idx[1]; + return node; + }) + let kl = {}; + k.forEach(el => { + kl = { ...kl, ...el } + }) + return kl; + } + if (typeof _style == 'object' && !Array.isArray(_style)) { + return _style; + } + if (typeof _style == 'object' && Array.isArray(_style)) { + let kl = {}; + _style.forEach(el => { + kl = { ...kl, ...el } + }) + return kl; + } + return {}; +} +//主题样式表 +export const computedTheme = (props: any, dark:boolean,store:any):cssstyle => { + const color = props.color; + const border = props.border; + const shadow = props.shadow; + const round = props.round; + const outlined = props.outlined; + const text = props.text; + const borderStyle = props.borderStyle; + const borderDirection = props.borderDirection; + const linear = props.linear; + const linearDeep = props.linearDeep; + const blur = props.blur; + var borderColor = props?.borderColor??''; + var theme = new colors.themeColors(store.colorList); + if (colors.isCssColor(color)&&!theme.hasColors(color)) { + // console.error('不支持自定义组件上的颜色值,请在theme/theme.js中添加自定义的颜色值为主题。当前已切换为primary主题。'); + theme = new colors.themeColors(theme.add(color,color)); + } + let defaultColorName = color || 'primary'; + + if(props?.followTheme==true&&store.color){ + defaultColorName = store.color; + borderColor = "" + } + + + let c = theme.getTheme({ + colorname: defaultColorName, + dark: dark, + borderWidth: border, + shadow: parseInt(String(shadow)), + round: parseInt(String(round)), + outlined: outlined ? true : false, + text: text ? true : false, + borderStyle: borderStyle, + borderDirection: borderDirection, + linearDirection: linear, + linearDeep: linearDeep, + blur: blur, + borderColor:borderColor + }); + + return c; + +}; diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/share.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/share.ts new file mode 100644 index 0000000..449257a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/share.ts @@ -0,0 +1,49 @@ +/** + * 分享配置 + */ +import { wxshareConfig } from "./interface" +import { onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app' +export const share = (args : wxshareConfig = {}) => { + let defaultWxshareConfig : wxshareConfig = { + ...args + } + // 分享朋友默认配置 + let shareAppOptions: wxshareConfig = {} + // 分享朋友圈默认配置 + let shareTimeOptions: wxshareConfig = {} + // onShareAppMessage + const shareApp = (options: wxshareConfig = {}) => { + onShareAppMessage((res): wxshareConfig => { + return { + ...defaultWxshareConfig, + ...options, + ...shareAppOptions + } + }) + } + // 添加onShareAppMessage参数 + const setShareApp = (options: wxshareConfig = {}) => { + shareAppOptions = options + } + // onShareTimeline + const shareTime = (options: wxshareConfig = {}) => { + onShareTimeline((): wxshareConfig => { + return { + ...defaultWxshareConfig, + ...options, + ...shareTimeOptions + } + }) + } + // 添加onShareTimeline参数 + const setShareTime = (options = {}) => { + shareTimeOptions = options + } + + return { + onShareAppMessage: shareApp, + onShareTimeline: shareTime, + setShareApp, + setShareTime, + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/tmpinia.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/tmpinia.ts new file mode 100644 index 0000000..404883f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/tmpinia.ts @@ -0,0 +1,132 @@ +import { defineStore} from 'pinia'; +import themeColor from '../theme/theme' +import * as u from '../function/util' +import type { tmVuetify,wxshareConfig,colorThemeType } from './interface' +let pdefault_cookies_color = u.getCookie('setTmVuetifyColor')||""; +let pdefault_cookies_black = u.getCookie('setTmVuetifyBlack') +let pdefault_cookies_local = u.getCookie('setTmVuetifyLocal')||'zh-Hans'; + +let pdefault_cookies_colorArrayList = u.getCookie('colorArrayList'); +let dark = typeof pdefault_cookies_black === 'boolean' ? pdefault_cookies_black : false; + +let themeObj = new themeColor.themeColors() +if(pdefault_cookies_colorArrayList){ + const result2 = pdefault_cookies_colorArrayList.filter((item:colorThemeType) => themeObj.colors.every(subItem => subItem.name !== item.name)); + themeObj = new themeColor.themeColors([...themeObj.colors,...result2]) +} +const colorArray = themeObj.colors; +const os = uni.getSystemInfoSync()?.osName??"" +u.setCookie('colorArrayList', colorArray) +// 为 store state 声明类型 +export interface State { + tmVuetify: tmVuetify + } + +export const useTmpiniaStore = defineStore('tmpinia', { + state: () => { + return { + tmStore: { + color: pdefault_cookies_color, + dark: dark, + tmVueTifly_pages: '', + tmVueTifly_pagesIndex: '', + os:os, + //这里是微信小程序和微信H5的配置资料。 + wxshareConfig_miniMp: { + title: '', // 分享标题 + desc: '', // 描述 + imageUrl: '', // 分享图片 + path: '', // 分享路径 + copyLink: '', // 复制链接 + query: {}, // 分享参数 + }, + //当前存储存的主题对象。 + colorList: colorArray, + //当前的语言 + local:pdefault_cookies_local + } + } + }, + + actions: { + setPageNow(url:string) { + this.tmStore = { + ...this.tmStore, + tmVueTifly_pages: url + } + }, + setPageNowIndex( index:string) { + this.tmStore = { + ...this.tmStore, + tmVueTifly_pagesIndex: index + } + }, + setTmVuetifyDark(dark:boolean) { + dark = typeof dark !=='boolean'?false:dark; + u.setCookie('setTmVuetifyBlack', dark) + this.tmStore = { + ...this.tmStore, + dark: dark + } + + }, + setTmAutoDark(autoDark=false){ + u.setCookie('setTmVuetifyAutoDark',autoDark) + this.tmuiConfig.autoDark = autoDark + if(autoDark){ + let nowstrdark = '' + // #ifdef H5 + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + nowstrdark = 'dark' + } else { + nowstrdark = 'light' + } + // #endif + + // #ifndef H5 + nowstrdark = uni.getSystemInfoSync()?.osTheme??'' + // #endif + this.setTmVuetifyDark(nowstrdark=='dark'?true:false) + } + }, + setWxShare(cfg:wxshareConfig) { + let pcf = cfg || {}; + if (typeof pcf !== 'object' || Array.isArray(cfg)) pcf = {}; + this.tmStore = { + ...this.tmStore, + wxshareConfig_miniMp: { + ...this.tmStore.wxshareConfig_miniMp, + ...pcf + } + } + }, + setTmVuetifyTheme(color:string) { + let defaultColorName = color + if (!defaultColorName || defaultColorName == ""||themeColor.isCssColor(defaultColorName)) { + defaultColorName = ''; + } + u.setCookie('setTmVuetifyColor', defaultColorName) + this.tmStore = {...this.tmStore,color:defaultColorName}; + }, + //添加一个主题 + setTmVuetifyAddTheme(colorName:string,color:string,isSet=true) { + this.tmStore = { + ...this.tmStore, + colorList: themeObj.add(colorName,color) + } + u.setCookie('colorArrayList', this.tmStore.colorList); + if(isSet){ + this.setTmVuetifyTheme(colorName) + } + }, + setTmLocal(language:string){ + language = language || 'zh-Hans'; + u.setCookie('setTmVuetifyLocal', language); + this.tmStore = { + ...this.tmStore, + local: language + } + } + }, +}); + diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/tmuiconfigDefault.ts b/uni_modules/UniDevTools/src/tmui/tool/lib/tmuiconfigDefault.ts new file mode 100644 index 0000000..281b9f5 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/tmuiconfigDefault.ts @@ -0,0 +1,36 @@ +import { useTmRouterAfter, useTmRouterBefore } from "../router/index" +export default { + autoDark: false, + theme:{}, + /** 开启全局分离功能,默认关闭 */ + shareDisable:true, + themeConfig: { + theme: {}, + globalFontSizeRatio:1, + /** 是否关闭弹层背景的模糊 */ + overflowBlur:false, + dark: { + /**一般的卡片项目暗黑背景 */ + cardcolor: '#0A0A0B', + /**输入框,表单等暗黑背景 */ + inputcolor: '#111112', + /**禁用输入框,表单等暗黑背景 */ + disablecolor: 'rgba(30, 30, 30, 1.0)', + /**暗黑下的页面背景 */ + bodycolor: "rgb(5, 5, 5)", + /**文本禁用色. */ + textDisableColor: 'rgba(100, 100, 100, 1.0)', + + }, + component:{ + button:{ + round:2, + shadow:2 + } + } + }, + router: { useTmRouterAfter, useTmRouterBefore }, + custom:{ + + } +} as Tmui.tmuiConfig \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/lib/tween.min.js b/uni_modules/UniDevTools/src/tmui/tool/lib/tween.min.js new file mode 100644 index 0000000..86b94b9 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/lib/tween.min.js @@ -0,0 +1 @@ +var Easing={Linear:{None:function(amount){return amount},},Quadratic:{In:function(amount){return amount*amount},Out:function(amount){return amount*(2-amount)},InOut:function(amount){if((amount*=2)<1){return 0.5*amount*amount}return-0.5*(--amount*(amount-2)-1)},},Cubic:{In:function(amount){return amount*amount*amount},Out:function(amount){return--amount*amount*amount+1},InOut:function(amount){if((amount*=2)<1){return 0.5*amount*amount*amount}return 0.5*((amount-=2)*amount*amount+2)},},Quartic:{In:function(amount){return amount*amount*amount*amount},Out:function(amount){return 1- --amount*amount*amount*amount},InOut:function(amount){if((amount*=2)<1){return 0.5*amount*amount*amount*amount}return-0.5*((amount-=2)*amount*amount*amount-2)},},Quintic:{In:function(amount){return amount*amount*amount*amount*amount},Out:function(amount){return--amount*amount*amount*amount*amount+1},InOut:function(amount){if((amount*=2)<1){return 0.5*amount*amount*amount*amount*amount}return 0.5*((amount-=2)*amount*amount*amount*amount+2)},},Sinusoidal:{In:function(amount){return 1-Math.cos((amount*Math.PI)/2)},Out:function(amount){return Math.sin((amount*Math.PI)/2)},InOut:function(amount){return 0.5*(1-Math.cos(Math.PI*amount))},},Exponential:{In:function(amount){return amount===0?0:Math.pow(1024,amount-1)},Out:function(amount){return amount===1?1:1-Math.pow(2,-10*amount)},InOut:function(amount){if(amount===0){return 0}if(amount===1){return 1}if((amount*=2)<1){return 0.5*Math.pow(1024,amount-1)}return 0.5*(-Math.pow(2,-10*(amount-1))+2)},},Circular:{In:function(amount){return 1-Math.sqrt(1-amount*amount)},Out:function(amount){return Math.sqrt(1- --amount*amount)},InOut:function(amount){if((amount*=2)<1){return-0.5*(Math.sqrt(1-amount*amount)-1)}return 0.5*(Math.sqrt(1-(amount-=2)*amount)+1)},},Elastic:{In:function(amount){if(amount===0){return 0}if(amount===1){return 1}return-Math.pow(2,10*(amount-1))*Math.sin((amount-1.1)*5*Math.PI)},Out:function(amount){if(amount===0){return 0}if(amount===1){return 1}return Math.pow(2,-10*amount)*Math.sin((amount-0.1)*5*Math.PI)+1},InOut:function(amount){if(amount===0){return 0}if(amount===1){return 1}amount*=2;if(amount<1){return-0.5*Math.pow(2,10*(amount-1))*Math.sin((amount-1.1)*5*Math.PI)}return 0.5*Math.pow(2,-10*(amount-1))*Math.sin((amount-1.1)*5*Math.PI)+1},},Back:{In:function(amount){var s=1.70158;return amount*amount*((s+1)*amount-s)},Out:function(amount){var s=1.70158;return--amount*amount*((s+1)*amount+s)+1},InOut:function(amount){var s=1.70158*1.525;if((amount*=2)<1){return 0.5*(amount*amount*((s+1)*amount-s))}return 0.5*((amount-=2)*amount*((s+1)*amount+s)+2)},},Bounce:{In:function(amount){return 1-Easing.Bounce.Out(1-amount)},Out:function(amount){if(amount<1/2.75){return 7.5625*amount*amount}else if(amount<2/2.75){return 7.5625*(amount-=1.5/2.75)*amount+0.75}else if(amount<2.5/2.75){return 7.5625*(amount-=2.25/2.75)*amount+0.9375}else{return 7.5625*(amount-=2.625/2.75)*amount+0.984375}},InOut:function(amount){if(amount<0.5){return Easing.Bounce.In(amount*2)*0.5}return Easing.Bounce.Out(amount*2-1)*0.5+0.5},},};var now;if(typeof self==='undefined'&&typeof process!=='undefined'&&process.hrtime){now=function(){var time=process.hrtime();return time[0]*1000+time[1]/1000000}}else if(typeof self!=='undefined'&&self.performance!==undefined&&self.performance.now!==undefined){now=self.performance.now.bind(self.performance)}else if(Date.now!==undefined){now=Date.now}else{now=function(){return new Date().getTime()}}var now$1=now;var Group=(function(){function Group(){this._tweens={};this._tweensAddedDuringUpdate={}}Group.prototype.getAll=function(){var _this=this;return Object.keys(this._tweens).map(function(tweenId){return _this._tweens[tweenId]})};Group.prototype.removeAll=function(){this._tweens={}};Group.prototype.add=function(tween){this._tweens[tween.getId()]=tween;this._tweensAddedDuringUpdate[tween.getId()]=tween};Group.prototype.remove=function(tween){delete this._tweens[tween.getId()];delete this._tweensAddedDuringUpdate[tween.getId()]};Group.prototype.update=function(time,preserve){if(time===void 0){time=now$1()}if(preserve===void 0){preserve=false}var tweenIds=Object.keys(this._tweens);if(tweenIds.length===0){return false}while(tweenIds.length>0){this._tweensAddedDuringUpdate={};for(var i=0;i1){return fn(v[m],v[m-1],m-f)}return fn(v[i],v[i+1>m?m:i+1],f-i)},Bezier:function(v,k){var b=0;var n=v.length-1;var pw=Math.pow;var bn=Interpolation.Utils.Bernstein;for(var i=0;i<=n;i++){b+=pw(1-k,n-i)*pw(k,i)*v[i]*bn(n,i)}return b},CatmullRom:function(v,k){var m=v.length-1;var f=m*k;var i=Math.floor(f);var fn=Interpolation.Utils.CatmullRom;if(v[0]===v[m]){if(k<0){i=Math.floor((f=m*(1+k)))}return fn(v[(i-1+m)%m],v[i],v[(i+1)%m],v[(i+2)%m],f-i)}else{if(k<0){return v[0]-(fn(v[0],v[0],v[1],v[1],-f)-v[0])}if(k>1){return v[m]-(fn(v[m],v[m],v[m-1],v[m-1],f-m)-v[m])}return fn(v[i?i-1:0],v[i],v[m1;i--){s*=i}a[n]=s;return s}})(),CatmullRom:function(p0,p1,p2,p3,t){var v0=(p2-p0)*0.5;var v1=(p3-p1)*0.5;var t2=t*t;var t3=t*t2;return(2*p1-2*p2+v0+v1)*t3+(-3*p1+3*p2-2*v0-v1)*t2+v0*t+p1},},};var Sequence=(function(){function Sequence(){}Sequence.nextId=function(){return Sequence._nextId++};Sequence._nextId=0;return Sequence}());var mainGroup=new Group();var Tween=(function(){function Tween(_object,_group){if(_group===void 0){_group=mainGroup}this._object=_object;this._group=_group;this._isPaused=false;this._pauseStart=0;this._valuesStart={};this._valuesEnd={};this._valuesStartRepeat={};this._duration=1000;this._initialRepeat=0;this._repeat=0;this._yoyo=false;this._isPlaying=false;this._reversed=false;this._delayTime=0;this._startTime=0;this._easingFunction=Easing.Linear.None;this._interpolationFunction=Interpolation.Linear;this._chainedTweens=[];this._onStartCallbackFired=false;this._id=Sequence.nextId();this._isChainStopped=false;this._goToEnd=false}Tween.prototype.getId=function(){return this._id};Tween.prototype.isPlaying=function(){return this._isPlaying};Tween.prototype.isPaused=function(){return this._isPaused};Tween.prototype.to=function(properties,duration){this._valuesEnd=Object.create(properties);if(duration!==undefined){this._duration=duration}return this};Tween.prototype.duration=function(d){this._duration=d;return this};Tween.prototype.start=function(time){if(this._isPlaying){return this}this._group&&this._group.add(this);this._repeat=this._initialRepeat;if(this._reversed){this._reversed=false;for(var property in this._valuesStartRepeat){this._swapEndStartRepeatValues(property);this._valuesStart[property]=this._valuesStartRepeat[property]}}this._isPlaying=true;this._isPaused=false;this._onStartCallbackFired=false;this._isChainStopped=false;this._startTime=time!==undefined?(typeof time==='string'?now$1()+parseFloat(time):time):now$1();this._startTime+=this._delayTime;this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat);return this};Tween.prototype._setupProperties=function(_object,_valuesStart,_valuesEnd,_valuesStartRepeat){for(var property in _valuesEnd){var startValue=_object[property];var startValueIsArray=Array.isArray(startValue);var propType=startValueIsArray?'array':typeof startValue;var isInterpolationList=!startValueIsArray&&Array.isArray(_valuesEnd[property]);if(propType==='undefined'||propType==='function'){continue}if(isInterpolationList){var endValues=_valuesEnd[property];if(endValues.length===0){continue}endValues=endValues.map(this._handleRelativeValue.bind(this,startValue));_valuesEnd[property]=[startValue].concat(endValues)}if((propType==='object'||startValueIsArray)&&startValue&&!isInterpolationList){_valuesStart[property]=startValueIsArray?[]:{};for(var prop in startValue){_valuesStart[property][prop]=startValue[prop]}_valuesStartRepeat[property]=startValueIsArray?[]:{};this._setupProperties(startValue,_valuesStart[property],_valuesEnd[property],_valuesStartRepeat[property])}else{if(typeof _valuesStart[property]==='undefined'){_valuesStart[property]=startValue}if(!startValueIsArray){_valuesStart[property]*=1.0}if(isInterpolationList){_valuesStartRepeat[property]=_valuesEnd[property].slice().reverse()}else{_valuesStartRepeat[property]=_valuesStart[property]||0}}}};Tween.prototype.stop=function(){if(!this._isChainStopped){this._isChainStopped=true;this.stopChainedTweens()}if(!this._isPlaying){return this}this._group&&this._group.remove(this);this._isPlaying=false;this._isPaused=false;if(this._onStopCallback){this._onStopCallback(this._object)}return this};Tween.prototype.end=function(){this._goToEnd=true;this.update(Infinity);return this};Tween.prototype.pause=function(time){if(time===void 0){time=now$1()}if(this._isPaused||!this._isPlaying){return this}this._isPaused=true;this._pauseStart=time;this._group&&this._group.remove(this);return this};Tween.prototype.resume=function(time){if(time===void 0){time=now$1()}if(!this._isPaused||!this._isPlaying){return this}this._isPaused=false;this._startTime+=time-this._pauseStart;this._pauseStart=0;this._group&&this._group.add(this);return this};Tween.prototype.stopChainedTweens=function(){for(var i=0,numChainedTweens=this._chainedTweens.length;iendTime)return false;if(autoStart)this.start(time)}this._goToEnd=false;if(time1?1:elapsed;var value=this._easingFunction(elapsed);this._updateProperties(this._object,this._valuesStart,this._valuesEnd,value);if(this._onUpdateCallback){this._onUpdateCallback(this._object,elapsed)}if(elapsed===1){if(this._repeat>0){if(isFinite(this._repeat)){this._repeat--}for(property in this._valuesStartRepeat){if(!this._yoyo&&typeof this._valuesEnd[property]==='string'){this._valuesStartRepeat[property]=this._valuesStartRepeat[property]+parseFloat(this._valuesEnd[property])}if(this._yoyo){this._swapEndStartRepeatValues(property)}this._valuesStart[property]=this._valuesStartRepeat[property]}if(this._yoyo){this._reversed=!this._reversed}if(this._repeatDelayTime!==undefined){this._startTime=time+this._repeatDelayTime}else{this._startTime=time+this._delayTime}if(this._onRepeatCallback){this._onRepeatCallback(this._object)}return true}else{if(this._onCompleteCallback){this._onCompleteCallback(this._object)}for(var i=0,numChainedTweens=this._chainedTweens.length;i{ + // 每一个页面在初化前都会执行 + //返回事件,只有在h5端可以被拦截。 +} +/** + * 路由访问后执行的函数 + * @param path 页面路径,不带前缀/ + * @param opts 页面加载完成后返回的参数 + */ +export const useTmRouterAfter = (arg:beforeRouterOpts):void=>{ + //每一个页面初始后都会执行 + +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/static/area.ts b/uni_modules/UniDevTools/src/tmui/tool/static/area.ts new file mode 100644 index 0000000..0ae990d --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/static/area.ts @@ -0,0 +1 @@ +export var areaData=[[[{"label":"东城区","value":"110101"},{"label":"西城区","value":"110102"},{"label":"朝阳区","value":"110105"},{"label":"丰台区","value":"110106"},{"label":"石景山区","value":"110107"},{"label":"海淀区","value":"110108"},{"label":"门头沟区","value":"110109"},{"label":"房山区","value":"110111"},{"label":"通州区","value":"110112"},{"label":"顺义区","value":"110113"},{"label":"昌平区","value":"110114"},{"label":"大兴区","value":"110115"},{"label":"怀柔区","value":"110116"},{"label":"平谷区","value":"110117"},{"label":"密云区","value":"110118"},{"label":"延庆区","value":"110119"}]],[[{"label":"和平区","value":"120101"},{"label":"河东区","value":"120102"},{"label":"河西区","value":"120103"},{"label":"南开区","value":"120104"},{"label":"河北区","value":"120105"},{"label":"红桥区","value":"120106"},{"label":"东丽区","value":"120110"},{"label":"西青区","value":"120111"},{"label":"津南区","value":"120112"},{"label":"北辰区","value":"120113"},{"label":"武清区","value":"120114"},{"label":"宝坻区","value":"120115"},{"label":"滨海新区","value":"120116"},{"label":"宁河区","value":"120117"},{"label":"静海区","value":"120118"},{"label":"蓟州区","value":"120119"}]],[[{"label":"长安区","value":"130102"},{"label":"桥西区","value":"130104"},{"label":"新华区","value":"130105"},{"label":"井陉矿区","value":"130107"},{"label":"裕华区","value":"130108"},{"label":"藁城区","value":"130109"},{"label":"鹿泉区","value":"130110"},{"label":"栾城区","value":"130111"},{"label":"井陉县","value":"130121"},{"label":"正定县","value":"130123"},{"label":"行唐县","value":"130125"},{"label":"灵寿县","value":"130126"},{"label":"高邑县","value":"130127"},{"label":"深泽县","value":"130128"},{"label":"赞皇县","value":"130129"},{"label":"无极县","value":"130130"},{"label":"平山县","value":"130131"},{"label":"元氏县","value":"130132"},{"label":"赵县","value":"130133"},{"label":"石家庄高新技术产业开发区","value":"130171"},{"label":"石家庄循环化工园区","value":"130172"},{"label":"辛集市","value":"130181"},{"label":"晋州市","value":"130183"},{"label":"新乐市","value":"130184"}],[{"label":"路南区","value":"130202"},{"label":"路北区","value":"130203"},{"label":"古冶区","value":"130204"},{"label":"开平区","value":"130205"},{"label":"丰南区","value":"130207"},{"label":"丰润区","value":"130208"},{"label":"曹妃甸区","value":"130209"},{"label":"滦县","value":"130223"},{"label":"滦南县","value":"130224"},{"label":"乐亭县","value":"130225"},{"label":"迁西县","value":"130227"},{"label":"玉田县","value":"130229"},{"label":"唐山市芦台经济技术开发区","value":"130271"},{"label":"唐山市汉沽管理区","value":"130272"},{"label":"唐山高新技术产业开发区","value":"130273"},{"label":"河北唐山海港经济开发区","value":"130274"},{"label":"遵化市","value":"130281"},{"label":"迁安市","value":"130283"}],[{"label":"海港区","value":"130302"},{"label":"山海关区","value":"130303"},{"label":"北戴河区","value":"130304"},{"label":"抚宁区","value":"130306"},{"label":"青龙满族自治县","value":"130321"},{"label":"昌黎县","value":"130322"},{"label":"卢龙县","value":"130324"},{"label":"秦皇岛市经济技术开发区","value":"130371"},{"label":"北戴河新区","value":"130372"}],[{"label":"邯山区","value":"130402"},{"label":"丛台区","value":"130403"},{"label":"复兴区","value":"130404"},{"label":"峰峰矿区","value":"130406"},{"label":"肥乡区","value":"130407"},{"label":"永年区","value":"130408"},{"label":"临漳县","value":"130423"},{"label":"成安县","value":"130424"},{"label":"大名县","value":"130425"},{"label":"涉县","value":"130426"},{"label":"磁县","value":"130427"},{"label":"邱县","value":"130430"},{"label":"鸡泽县","value":"130431"},{"label":"广平县","value":"130432"},{"label":"馆陶县","value":"130433"},{"label":"魏县","value":"130434"},{"label":"曲周县","value":"130435"},{"label":"邯郸经济技术开发区","value":"130471"},{"label":"邯郸冀南新区","value":"130473"},{"label":"武安市","value":"130481"}],[{"label":"桥东区","value":"130502"},{"label":"桥西区","value":"130503"},{"label":"邢台县","value":"130521"},{"label":"临城县","value":"130522"},{"label":"内丘县","value":"130523"},{"label":"柏乡县","value":"130524"},{"label":"隆尧县","value":"130525"},{"label":"任县","value":"130526"},{"label":"南和县","value":"130527"},{"label":"宁晋县","value":"130528"},{"label":"巨鹿县","value":"130529"},{"label":"新河县","value":"130530"},{"label":"广宗县","value":"130531"},{"label":"平乡县","value":"130532"},{"label":"威县","value":"130533"},{"label":"清河县","value":"130534"},{"label":"临西县","value":"130535"},{"label":"河北邢台经济开发区","value":"130571"},{"label":"南宫市","value":"130581"},{"label":"沙河市","value":"130582"}],[{"label":"竞秀区","value":"130602"},{"label":"莲池区","value":"130606"},{"label":"满城区","value":"130607"},{"label":"清苑区","value":"130608"},{"label":"徐水区","value":"130609"},{"label":"涞水县","value":"130623"},{"label":"阜平县","value":"130624"},{"label":"定兴县","value":"130626"},{"label":"唐县","value":"130627"},{"label":"高阳县","value":"130628"},{"label":"容城县","value":"130629"},{"label":"涞源县","value":"130630"},{"label":"望都县","value":"130631"},{"label":"安新县","value":"130632"},{"label":"易县","value":"130633"},{"label":"曲阳县","value":"130634"},{"label":"蠡县","value":"130635"},{"label":"顺平县","value":"130636"},{"label":"博野县","value":"130637"},{"label":"雄县","value":"130638"},{"label":"保定高新技术产业开发区","value":"130671"},{"label":"保定白沟新城","value":"130672"},{"label":"涿州市","value":"130681"},{"label":"定州市","value":"130682"},{"label":"安国市","value":"130683"},{"label":"高碑店市","value":"130684"}],[{"label":"桥东区","value":"130702"},{"label":"桥西区","value":"130703"},{"label":"宣化区","value":"130705"},{"label":"下花园区","value":"130706"},{"label":"万全区","value":"130708"},{"label":"崇礼区","value":"130709"},{"label":"张北县","value":"130722"},{"label":"康保县","value":"130723"},{"label":"沽源县","value":"130724"},{"label":"尚义县","value":"130725"},{"label":"蔚县","value":"130726"},{"label":"阳原县","value":"130727"},{"label":"怀安县","value":"130728"},{"label":"怀来县","value":"130730"},{"label":"涿鹿县","value":"130731"},{"label":"赤城县","value":"130732"},{"label":"张家口市高新技术产业开发区","value":"130771"},{"label":"张家口市察北管理区","value":"130772"},{"label":"张家口市塞北管理区","value":"130773"}],[{"label":"双桥区","value":"130802"},{"label":"双滦区","value":"130803"},{"label":"鹰手营子矿区","value":"130804"},{"label":"承德县","value":"130821"},{"label":"兴隆县","value":"130822"},{"label":"滦平县","value":"130824"},{"label":"隆化县","value":"130825"},{"label":"丰宁满族自治县","value":"130826"},{"label":"宽城满族自治县","value":"130827"},{"label":"围场满族蒙古族自治县","value":"130828"},{"label":"承德高新技术产业开发区","value":"130871"},{"label":"平泉市","value":"130881"}],[{"label":"新华区","value":"130902"},{"label":"运河区","value":"130903"},{"label":"沧县","value":"130921"},{"label":"青县","value":"130922"},{"label":"东光县","value":"130923"},{"label":"海兴县","value":"130924"},{"label":"盐山县","value":"130925"},{"label":"肃宁县","value":"130926"},{"label":"南皮县","value":"130927"},{"label":"吴桥县","value":"130928"},{"label":"献县","value":"130929"},{"label":"孟村回族自治县","value":"130930"},{"label":"河北沧州经济开发区","value":"130971"},{"label":"沧州高新技术产业开发区","value":"130972"},{"label":"沧州渤海新区","value":"130973"},{"label":"泊头市","value":"130981"},{"label":"任丘市","value":"130982"},{"label":"黄骅市","value":"130983"},{"label":"河间市","value":"130984"}],[{"label":"安次区","value":"131002"},{"label":"广阳区","value":"131003"},{"label":"固安县","value":"131022"},{"label":"永清县","value":"131023"},{"label":"香河县","value":"131024"},{"label":"大城县","value":"131025"},{"label":"文安县","value":"131026"},{"label":"大厂回族自治县","value":"131028"},{"label":"廊坊经济技术开发区","value":"131071"},{"label":"霸州市","value":"131081"},{"label":"三河市","value":"131082"}],[{"label":"桃城区","value":"131102"},{"label":"冀州区","value":"131103"},{"label":"枣强县","value":"131121"},{"label":"武邑县","value":"131122"},{"label":"武强县","value":"131123"},{"label":"饶阳县","value":"131124"},{"label":"安平县","value":"131125"},{"label":"故城县","value":"131126"},{"label":"景县","value":"131127"},{"label":"阜城县","value":"131128"},{"label":"河北衡水经济开发区","value":"131171"},{"label":"衡水滨湖新区","value":"131172"},{"label":"深州市","value":"131182"}]],[[{"label":"小店区","value":"140105"},{"label":"迎泽区","value":"140106"},{"label":"杏花岭区","value":"140107"},{"label":"尖草坪区","value":"140108"},{"label":"万柏林区","value":"140109"},{"label":"晋源区","value":"140110"},{"label":"清徐县","value":"140121"},{"label":"阳曲县","value":"140122"},{"label":"娄烦县","value":"140123"},{"label":"山西转型综合改革示范区","value":"140171"},{"label":"古交市","value":"140181"}],[{"label":"城区","value":"140202"},{"label":"矿区","value":"140203"},{"label":"南郊区","value":"140211"},{"label":"新荣区","value":"140212"},{"label":"阳高县","value":"140221"},{"label":"天镇县","value":"140222"},{"label":"广灵县","value":"140223"},{"label":"灵丘县","value":"140224"},{"label":"浑源县","value":"140225"},{"label":"左云县","value":"140226"},{"label":"大同县","value":"140227"},{"label":"山西大同经济开发区","value":"140271"}],[{"label":"城区","value":"140302"},{"label":"矿区","value":"140303"},{"label":"郊区","value":"140311"},{"label":"平定县","value":"140321"},{"label":"盂县","value":"140322"},{"label":"山西阳泉经济开发区","value":"140371"}],[{"label":"城区","value":"140402"},{"label":"郊区","value":"140411"},{"label":"长治县","value":"140421"},{"label":"襄垣县","value":"140423"},{"label":"屯留县","value":"140424"},{"label":"平顺县","value":"140425"},{"label":"黎城县","value":"140426"},{"label":"壶关县","value":"140427"},{"label":"长子县","value":"140428"},{"label":"武乡县","value":"140429"},{"label":"沁县","value":"140430"},{"label":"沁源县","value":"140431"},{"label":"山西长治高新技术产业园区","value":"140471"},{"label":"潞城市","value":"140481"}],[{"label":"城区","value":"140502"},{"label":"沁水县","value":"140521"},{"label":"阳城县","value":"140522"},{"label":"陵川县","value":"140524"},{"label":"泽州县","value":"140525"},{"label":"高平市","value":"140581"}],[{"label":"朔城区","value":"140602"},{"label":"平鲁区","value":"140603"},{"label":"山阴县","value":"140621"},{"label":"应县","value":"140622"},{"label":"右玉县","value":"140623"},{"label":"怀仁县","value":"140624"},{"label":"山西朔州经济开发区","value":"140671"}],[{"label":"榆次区","value":"140702"},{"label":"榆社县","value":"140721"},{"label":"左权县","value":"140722"},{"label":"和顺县","value":"140723"},{"label":"昔阳县","value":"140724"},{"label":"寿阳县","value":"140725"},{"label":"太谷县","value":"140726"},{"label":"祁县","value":"140727"},{"label":"平遥县","value":"140728"},{"label":"灵石县","value":"140729"},{"label":"介休市","value":"140781"}],[{"label":"盐湖区","value":"140802"},{"label":"临猗县","value":"140821"},{"label":"万荣县","value":"140822"},{"label":"闻喜县","value":"140823"},{"label":"稷山县","value":"140824"},{"label":"新绛县","value":"140825"},{"label":"绛县","value":"140826"},{"label":"垣曲县","value":"140827"},{"label":"夏县","value":"140828"},{"label":"平陆县","value":"140829"},{"label":"芮城县","value":"140830"},{"label":"永济市","value":"140881"},{"label":"河津市","value":"140882"}],[{"label":"忻府区","value":"140902"},{"label":"定襄县","value":"140921"},{"label":"五台县","value":"140922"},{"label":"代县","value":"140923"},{"label":"繁峙县","value":"140924"},{"label":"宁武县","value":"140925"},{"label":"静乐县","value":"140926"},{"label":"神池县","value":"140927"},{"label":"五寨县","value":"140928"},{"label":"岢岚县","value":"140929"},{"label":"河曲县","value":"140930"},{"label":"保德县","value":"140931"},{"label":"偏关县","value":"140932"},{"label":"五台山风景名胜区","value":"140971"},{"label":"原平市","value":"140981"}],[{"label":"尧都区","value":"141002"},{"label":"曲沃县","value":"141021"},{"label":"翼城县","value":"141022"},{"label":"襄汾县","value":"141023"},{"label":"洪洞县","value":"141024"},{"label":"古县","value":"141025"},{"label":"安泽县","value":"141026"},{"label":"浮山县","value":"141027"},{"label":"吉县","value":"141028"},{"label":"乡宁县","value":"141029"},{"label":"大宁县","value":"141030"},{"label":"隰县","value":"141031"},{"label":"永和县","value":"141032"},{"label":"蒲县","value":"141033"},{"label":"汾西县","value":"141034"},{"label":"侯马市","value":"141081"},{"label":"霍州市","value":"141082"}],[{"label":"离石区","value":"141102"},{"label":"文水县","value":"141121"},{"label":"交城县","value":"141122"},{"label":"兴县","value":"141123"},{"label":"临县","value":"141124"},{"label":"柳林县","value":"141125"},{"label":"石楼县","value":"141126"},{"label":"岚县","value":"141127"},{"label":"方山县","value":"141128"},{"label":"中阳县","value":"141129"},{"label":"交口县","value":"141130"},{"label":"孝义市","value":"141181"},{"label":"汾阳市","value":"141182"}]],[[{"label":"新城区","value":"150102"},{"label":"回民区","value":"150103"},{"label":"玉泉区","value":"150104"},{"label":"赛罕区","value":"150105"},{"label":"土默特左旗","value":"150121"},{"label":"托克托县","value":"150122"},{"label":"和林格尔县","value":"150123"},{"label":"清水河县","value":"150124"},{"label":"武川县","value":"150125"},{"label":"呼和浩特金海工业园区","value":"150171"},{"label":"呼和浩特经济技术开发区","value":"150172"}],[{"label":"东河区","value":"150202"},{"label":"昆都仑区","value":"150203"},{"label":"青山区","value":"150204"},{"label":"石拐区","value":"150205"},{"label":"白云鄂博矿区","value":"150206"},{"label":"九原区","value":"150207"},{"label":"土默特右旗","value":"150221"},{"label":"固阳县","value":"150222"},{"label":"达尔罕茂明安联合旗","value":"150223"},{"label":"包头稀土高新技术产业开发区","value":"150271"}],[{"label":"海勃湾区","value":"150302"},{"label":"海南区","value":"150303"},{"label":"乌达区","value":"150304"}],[{"label":"红山区","value":"150402"},{"label":"元宝山区","value":"150403"},{"label":"松山区","value":"150404"},{"label":"阿鲁科尔沁旗","value":"150421"},{"label":"巴林左旗","value":"150422"},{"label":"巴林右旗","value":"150423"},{"label":"林西县","value":"150424"},{"label":"克什克腾旗","value":"150425"},{"label":"翁牛特旗","value":"150426"},{"label":"喀喇沁旗","value":"150428"},{"label":"宁城县","value":"150429"},{"label":"敖汉旗","value":"150430"}],[{"label":"科尔沁区","value":"150502"},{"label":"科尔沁左翼中旗","value":"150521"},{"label":"科尔沁左翼后旗","value":"150522"},{"label":"开鲁县","value":"150523"},{"label":"库伦旗","value":"150524"},{"label":"奈曼旗","value":"150525"},{"label":"扎鲁特旗","value":"150526"},{"label":"通辽经济技术开发区","value":"150571"},{"label":"霍林郭勒市","value":"150581"}],[{"label":"东胜区","value":"150602"},{"label":"康巴什区","value":"150603"},{"label":"达拉特旗","value":"150621"},{"label":"准格尔旗","value":"150622"},{"label":"鄂托克前旗","value":"150623"},{"label":"鄂托克旗","value":"150624"},{"label":"杭锦旗","value":"150625"},{"label":"乌审旗","value":"150626"},{"label":"伊金霍洛旗","value":"150627"}],[{"label":"海拉尔区","value":"150702"},{"label":"扎赉诺尔区","value":"150703"},{"label":"阿荣旗","value":"150721"},{"label":"莫力达瓦达斡尔族自治旗","value":"150722"},{"label":"鄂伦春自治旗","value":"150723"},{"label":"鄂温克族自治旗","value":"150724"},{"label":"陈巴尔虎旗","value":"150725"},{"label":"新巴尔虎左旗","value":"150726"},{"label":"新巴尔虎右旗","value":"150727"},{"label":"满洲里市","value":"150781"},{"label":"牙克石市","value":"150782"},{"label":"扎兰屯市","value":"150783"},{"label":"额尔古纳市","value":"150784"},{"label":"根河市","value":"150785"}],[{"label":"临河区","value":"150802"},{"label":"五原县","value":"150821"},{"label":"磴口县","value":"150822"},{"label":"乌拉特前旗","value":"150823"},{"label":"乌拉特中旗","value":"150824"},{"label":"乌拉特后旗","value":"150825"},{"label":"杭锦后旗","value":"150826"}],[{"label":"集宁区","value":"150902"},{"label":"卓资县","value":"150921"},{"label":"化德县","value":"150922"},{"label":"商都县","value":"150923"},{"label":"兴和县","value":"150924"},{"label":"凉城县","value":"150925"},{"label":"察哈尔右翼前旗","value":"150926"},{"label":"察哈尔右翼中旗","value":"150927"},{"label":"察哈尔右翼后旗","value":"150928"},{"label":"四子王旗","value":"150929"},{"label":"丰镇市","value":"150981"}],[{"label":"乌兰浩特市","value":"152201"},{"label":"阿尔山市","value":"152202"},{"label":"科尔沁右翼前旗","value":"152221"},{"label":"科尔沁右翼中旗","value":"152222"},{"label":"扎赉特旗","value":"152223"},{"label":"突泉县","value":"152224"}],[{"label":"二连浩特市","value":"152501"},{"label":"锡林浩特市","value":"152502"},{"label":"阿巴嘎旗","value":"152522"},{"label":"苏尼特左旗","value":"152523"},{"label":"苏尼特右旗","value":"152524"},{"label":"东乌珠穆沁旗","value":"152525"},{"label":"西乌珠穆沁旗","value":"152526"},{"label":"太仆寺旗","value":"152527"},{"label":"镶黄旗","value":"152528"},{"label":"正镶白旗","value":"152529"},{"label":"正蓝旗","value":"152530"},{"label":"多伦县","value":"152531"},{"label":"乌拉盖管委会","value":"152571"}],[{"label":"阿拉善左旗","value":"152921"},{"label":"阿拉善右旗","value":"152922"},{"label":"额济纳旗","value":"152923"},{"label":"内蒙古阿拉善经济开发区","value":"152971"}]],[[{"label":"和平区","value":"210102"},{"label":"沈河区","value":"210103"},{"label":"大东区","value":"210104"},{"label":"皇姑区","value":"210105"},{"label":"铁西区","value":"210106"},{"label":"苏家屯区","value":"210111"},{"label":"浑南区","value":"210112"},{"label":"沈北新区","value":"210113"},{"label":"于洪区","value":"210114"},{"label":"辽中区","value":"210115"},{"label":"康平县","value":"210123"},{"label":"法库县","value":"210124"},{"label":"新民市","value":"210181"}],[{"label":"中山区","value":"210202"},{"label":"西岗区","value":"210203"},{"label":"沙河口区","value":"210204"},{"label":"甘井子区","value":"210211"},{"label":"旅顺口区","value":"210212"},{"label":"金州区","value":"210213"},{"label":"普兰店区","value":"210214"},{"label":"长海县","value":"210224"},{"label":"瓦房店市","value":"210281"},{"label":"庄河市","value":"210283"}],[{"label":"铁东区","value":"210302"},{"label":"铁西区","value":"210303"},{"label":"立山区","value":"210304"},{"label":"千山区","value":"210311"},{"label":"台安县","value":"210321"},{"label":"岫岩满族自治县","value":"210323"},{"label":"海城市","value":"210381"}],[{"label":"新抚区","value":"210402"},{"label":"东洲区","value":"210403"},{"label":"望花区","value":"210404"},{"label":"顺城区","value":"210411"},{"label":"抚顺县","value":"210421"},{"label":"新宾满族自治县","value":"210422"},{"label":"清原满族自治县","value":"210423"}],[{"label":"平山区","value":"210502"},{"label":"溪湖区","value":"210503"},{"label":"明山区","value":"210504"},{"label":"南芬区","value":"210505"},{"label":"本溪满族自治县","value":"210521"},{"label":"桓仁满族自治县","value":"210522"}],[{"label":"元宝区","value":"210602"},{"label":"振兴区","value":"210603"},{"label":"振安区","value":"210604"},{"label":"宽甸满族自治县","value":"210624"},{"label":"东港市","value":"210681"},{"label":"凤城市","value":"210682"}],[{"label":"古塔区","value":"210702"},{"label":"凌河区","value":"210703"},{"label":"太和区","value":"210711"},{"label":"黑山县","value":"210726"},{"label":"义县","value":"210727"},{"label":"凌海市","value":"210781"},{"label":"北镇市","value":"210782"}],[{"label":"站前区","value":"210802"},{"label":"西市区","value":"210803"},{"label":"鲅鱼圈区","value":"210804"},{"label":"老边区","value":"210811"},{"label":"盖州市","value":"210881"},{"label":"大石桥市","value":"210882"}],[{"label":"海州区","value":"210902"},{"label":"新邱区","value":"210903"},{"label":"太平区","value":"210904"},{"label":"清河门区","value":"210905"},{"label":"细河区","value":"210911"},{"label":"阜新蒙古族自治县","value":"210921"},{"label":"彰武县","value":"210922"}],[{"label":"白塔区","value":"211002"},{"label":"文圣区","value":"211003"},{"label":"宏伟区","value":"211004"},{"label":"弓长岭区","value":"211005"},{"label":"太子河区","value":"211011"},{"label":"辽阳县","value":"211021"},{"label":"灯塔市","value":"211081"}],[{"label":"双台子区","value":"211102"},{"label":"兴隆台区","value":"211103"},{"label":"大洼区","value":"211104"},{"label":"盘山县","value":"211122"}],[{"label":"银州区","value":"211202"},{"label":"清河区","value":"211204"},{"label":"铁岭县","value":"211221"},{"label":"西丰县","value":"211223"},{"label":"昌图县","value":"211224"},{"label":"调兵山市","value":"211281"},{"label":"开原市","value":"211282"}],[{"label":"双塔区","value":"211302"},{"label":"龙城区","value":"211303"},{"label":"朝阳县","value":"211321"},{"label":"建平县","value":"211322"},{"label":"喀喇沁左翼蒙古族自治县","value":"211324"},{"label":"北票市","value":"211381"},{"label":"凌源市","value":"211382"}],[{"label":"连山区","value":"211402"},{"label":"龙港区","value":"211403"},{"label":"南票区","value":"211404"},{"label":"绥中县","value":"211421"},{"label":"建昌县","value":"211422"},{"label":"兴城市","value":"211481"}]],[[{"label":"南关区","value":"220102"},{"label":"宽城区","value":"220103"},{"label":"朝阳区","value":"220104"},{"label":"二道区","value":"220105"},{"label":"绿园区","value":"220106"},{"label":"双阳区","value":"220112"},{"label":"九台区","value":"220113"},{"label":"农安县","value":"220122"},{"label":"长春经济技术开发区","value":"220171"},{"label":"长春净月高新技术产业开发区","value":"220172"},{"label":"长春高新技术产业开发区","value":"220173"},{"label":"长春汽车经济技术开发区","value":"220174"},{"label":"榆树市","value":"220182"},{"label":"德惠市","value":"220183"}],[{"label":"昌邑区","value":"220202"},{"label":"龙潭区","value":"220203"},{"label":"船营区","value":"220204"},{"label":"丰满区","value":"220211"},{"label":"永吉县","value":"220221"},{"label":"吉林经济开发区","value":"220271"},{"label":"吉林高新技术产业开发区","value":"220272"},{"label":"吉林中国新加坡食品区","value":"220273"},{"label":"蛟河市","value":"220281"},{"label":"桦甸市","value":"220282"},{"label":"舒兰市","value":"220283"},{"label":"磐石市","value":"220284"}],[{"label":"铁西区","value":"220302"},{"label":"铁东区","value":"220303"},{"label":"梨树县","value":"220322"},{"label":"伊通满族自治县","value":"220323"},{"label":"公主岭市","value":"220381"},{"label":"双辽市","value":"220382"}],[{"label":"龙山区","value":"220402"},{"label":"西安区","value":"220403"},{"label":"东丰县","value":"220421"},{"label":"东辽县","value":"220422"}],[{"label":"东昌区","value":"220502"},{"label":"二道江区","value":"220503"},{"label":"通化县","value":"220521"},{"label":"辉南县","value":"220523"},{"label":"柳河县","value":"220524"},{"label":"梅河口市","value":"220581"},{"label":"集安市","value":"220582"}],[{"label":"浑江区","value":"220602"},{"label":"江源区","value":"220605"},{"label":"抚松县","value":"220621"},{"label":"靖宇县","value":"220622"},{"label":"长白朝鲜族自治县","value":"220623"},{"label":"临江市","value":"220681"}],[{"label":"宁江区","value":"220702"},{"label":"前郭尔罗斯蒙古族自治县","value":"220721"},{"label":"长岭县","value":"220722"},{"label":"乾安县","value":"220723"},{"label":"吉林松原经济开发区","value":"220771"},{"label":"扶余市","value":"220781"}],[{"label":"洮北区","value":"220802"},{"label":"镇赉县","value":"220821"},{"label":"通榆县","value":"220822"},{"label":"吉林白城经济开发区","value":"220871"},{"label":"洮南市","value":"220881"},{"label":"大安市","value":"220882"}],[{"label":"延吉市","value":"222401"},{"label":"图们市","value":"222402"},{"label":"敦化市","value":"222403"},{"label":"珲春市","value":"222404"},{"label":"龙井市","value":"222405"},{"label":"和龙市","value":"222406"},{"label":"汪清县","value":"222424"},{"label":"安图县","value":"222426"}]],[[{"label":"道里区","value":"230102"},{"label":"南岗区","value":"230103"},{"label":"道外区","value":"230104"},{"label":"平房区","value":"230108"},{"label":"松北区","value":"230109"},{"label":"香坊区","value":"230110"},{"label":"呼兰区","value":"230111"},{"label":"阿城区","value":"230112"},{"label":"双城区","value":"230113"},{"label":"依兰县","value":"230123"},{"label":"方正县","value":"230124"},{"label":"宾县","value":"230125"},{"label":"巴彦县","value":"230126"},{"label":"木兰县","value":"230127"},{"label":"通河县","value":"230128"},{"label":"延寿县","value":"230129"},{"label":"尚志市","value":"230183"},{"label":"五常市","value":"230184"}],[{"label":"龙沙区","value":"230202"},{"label":"建华区","value":"230203"},{"label":"铁锋区","value":"230204"},{"label":"昂昂溪区","value":"230205"},{"label":"富拉尔基区","value":"230206"},{"label":"碾子山区","value":"230207"},{"label":"梅里斯达斡尔族区","value":"230208"},{"label":"龙江县","value":"230221"},{"label":"依安县","value":"230223"},{"label":"泰来县","value":"230224"},{"label":"甘南县","value":"230225"},{"label":"富裕县","value":"230227"},{"label":"克山县","value":"230229"},{"label":"克东县","value":"230230"},{"label":"拜泉县","value":"230231"},{"label":"讷河市","value":"230281"}],[{"label":"鸡冠区","value":"230302"},{"label":"恒山区","value":"230303"},{"label":"滴道区","value":"230304"},{"label":"梨树区","value":"230305"},{"label":"城子河区","value":"230306"},{"label":"麻山区","value":"230307"},{"label":"鸡东县","value":"230321"},{"label":"虎林市","value":"230381"},{"label":"密山市","value":"230382"}],[{"label":"向阳区","value":"230402"},{"label":"工农区","value":"230403"},{"label":"南山区","value":"230404"},{"label":"兴安区","value":"230405"},{"label":"东山区","value":"230406"},{"label":"兴山区","value":"230407"},{"label":"萝北县","value":"230421"},{"label":"绥滨县","value":"230422"}],[{"label":"尖山区","value":"230502"},{"label":"岭东区","value":"230503"},{"label":"四方台区","value":"230505"},{"label":"宝山区","value":"230506"},{"label":"集贤县","value":"230521"},{"label":"友谊县","value":"230522"},{"label":"宝清县","value":"230523"},{"label":"饶河县","value":"230524"}],[{"label":"萨尔图区","value":"230602"},{"label":"龙凤区","value":"230603"},{"label":"让胡路区","value":"230604"},{"label":"红岗区","value":"230605"},{"label":"大同区","value":"230606"},{"label":"肇州县","value":"230621"},{"label":"肇源县","value":"230622"},{"label":"林甸县","value":"230623"},{"label":"杜尔伯特蒙古族自治县","value":"230624"},{"label":"大庆高新技术产业开发区","value":"230671"}],[{"label":"伊春区","value":"230702"},{"label":"南岔区","value":"230703"},{"label":"友好区","value":"230704"},{"label":"西林区","value":"230705"},{"label":"翠峦区","value":"230706"},{"label":"新青区","value":"230707"},{"label":"美溪区","value":"230708"},{"label":"金山屯区","value":"230709"},{"label":"五营区","value":"230710"},{"label":"乌马河区","value":"230711"},{"label":"汤旺河区","value":"230712"},{"label":"带岭区","value":"230713"},{"label":"乌伊岭区","value":"230714"},{"label":"红星区","value":"230715"},{"label":"上甘岭区","value":"230716"},{"label":"嘉荫县","value":"230722"},{"label":"铁力市","value":"230781"}],[{"label":"向阳区","value":"230803"},{"label":"前进区","value":"230804"},{"label":"东风区","value":"230805"},{"label":"郊区","value":"230811"},{"label":"桦南县","value":"230822"},{"label":"桦川县","value":"230826"},{"label":"汤原县","value":"230828"},{"label":"同江市","value":"230881"},{"label":"富锦市","value":"230882"},{"label":"抚远市","value":"230883"}],[{"label":"新兴区","value":"230902"},{"label":"桃山区","value":"230903"},{"label":"茄子河区","value":"230904"},{"label":"勃利县","value":"230921"}],[{"label":"东安区","value":"231002"},{"label":"阳明区","value":"231003"},{"label":"爱民区","value":"231004"},{"label":"西安区","value":"231005"},{"label":"林口县","value":"231025"},{"label":"牡丹江经济技术开发区","value":"231071"},{"label":"绥芬河市","value":"231081"},{"label":"海林市","value":"231083"},{"label":"宁安市","value":"231084"},{"label":"穆棱市","value":"231085"},{"label":"东宁市","value":"231086"}],[{"label":"爱辉区","value":"231102"},{"label":"嫩江县","value":"231121"},{"label":"逊克县","value":"231123"},{"label":"孙吴县","value":"231124"},{"label":"北安市","value":"231181"},{"label":"五大连池市","value":"231182"}],[{"label":"北林区","value":"231202"},{"label":"望奎县","value":"231221"},{"label":"兰西县","value":"231222"},{"label":"青冈县","value":"231223"},{"label":"庆安县","value":"231224"},{"label":"明水县","value":"231225"},{"label":"绥棱县","value":"231226"},{"label":"安达市","value":"231281"},{"label":"肇东市","value":"231282"},{"label":"海伦市","value":"231283"}],[{"label":"加格达奇区","value":"232701"},{"label":"松岭区","value":"232702"},{"label":"新林区","value":"232703"},{"label":"呼中区","value":"232704"},{"label":"呼玛县","value":"232721"},{"label":"塔河县","value":"232722"},{"label":"漠河县","value":"232723"}]],[[{"label":"黄浦区","value":"310101"},{"label":"徐汇区","value":"310104"},{"label":"长宁区","value":"310105"},{"label":"静安区","value":"310106"},{"label":"普陀区","value":"310107"},{"label":"虹口区","value":"310109"},{"label":"杨浦区","value":"310110"},{"label":"闵行区","value":"310112"},{"label":"宝山区","value":"310113"},{"label":"嘉定区","value":"310114"},{"label":"浦东新区","value":"310115"},{"label":"金山区","value":"310116"},{"label":"松江区","value":"310117"},{"label":"青浦区","value":"310118"},{"label":"奉贤区","value":"310120"},{"label":"崇明区","value":"310151"}]],[[{"label":"玄武区","value":"320102"},{"label":"秦淮区","value":"320104"},{"label":"建邺区","value":"320105"},{"label":"鼓楼区","value":"320106"},{"label":"浦口区","value":"320111"},{"label":"栖霞区","value":"320113"},{"label":"雨花台区","value":"320114"},{"label":"江宁区","value":"320115"},{"label":"六合区","value":"320116"},{"label":"溧水区","value":"320117"},{"label":"高淳区","value":"320118"}],[{"label":"锡山区","value":"320205"},{"label":"惠山区","value":"320206"},{"label":"滨湖区","value":"320211"},{"label":"梁溪区","value":"320213"},{"label":"新吴区","value":"320214"},{"label":"江阴市","value":"320281"},{"label":"宜兴市","value":"320282"}],[{"label":"鼓楼区","value":"320302"},{"label":"云龙区","value":"320303"},{"label":"贾汪区","value":"320305"},{"label":"泉山区","value":"320311"},{"label":"铜山区","value":"320312"},{"label":"丰县","value":"320321"},{"label":"沛县","value":"320322"},{"label":"睢宁县","value":"320324"},{"label":"徐州经济技术开发区","value":"320371"},{"label":"新沂市","value":"320381"},{"label":"邳州市","value":"320382"}],[{"label":"天宁区","value":"320402"},{"label":"钟楼区","value":"320404"},{"label":"新北区","value":"320411"},{"label":"武进区","value":"320412"},{"label":"金坛区","value":"320413"},{"label":"溧阳市","value":"320481"}],[{"label":"虎丘区","value":"320505"},{"label":"吴中区","value":"320506"},{"label":"相城区","value":"320507"},{"label":"姑苏区","value":"320508"},{"label":"吴江区","value":"320509"},{"label":"苏州工业园区","value":"320571"},{"label":"常熟市","value":"320581"},{"label":"张家港市","value":"320582"},{"label":"昆山市","value":"320583"},{"label":"太仓市","value":"320585"}],[{"label":"崇川区","value":"320602"},{"label":"港闸区","value":"320611"},{"label":"通州区","value":"320612"},{"label":"海安县","value":"320621"},{"label":"如东县","value":"320623"},{"label":"南通经济技术开发区","value":"320671"},{"label":"启东市","value":"320681"},{"label":"如皋市","value":"320682"},{"label":"海门市","value":"320684"}],[{"label":"连云区","value":"320703"},{"label":"海州区","value":"320706"},{"label":"赣榆区","value":"320707"},{"label":"东海县","value":"320722"},{"label":"灌云县","value":"320723"},{"label":"灌南县","value":"320724"},{"label":"连云港经济技术开发区","value":"320771"},{"label":"连云港高新技术产业开发区","value":"320772"}],[{"label":"淮安区","value":"320803"},{"label":"淮阴区","value":"320804"},{"label":"清江浦区","value":"320812"},{"label":"洪泽区","value":"320813"},{"label":"涟水县","value":"320826"},{"label":"盱眙县","value":"320830"},{"label":"金湖县","value":"320831"},{"label":"淮安经济技术开发区","value":"320871"}],[{"label":"亭湖区","value":"320902"},{"label":"盐都区","value":"320903"},{"label":"大丰区","value":"320904"},{"label":"响水县","value":"320921"},{"label":"滨海县","value":"320922"},{"label":"阜宁县","value":"320923"},{"label":"射阳县","value":"320924"},{"label":"建湖县","value":"320925"},{"label":"盐城经济技术开发区","value":"320971"},{"label":"东台市","value":"320981"}],[{"label":"广陵区","value":"321002"},{"label":"邗江区","value":"321003"},{"label":"江都区","value":"321012"},{"label":"宝应县","value":"321023"},{"label":"扬州经济技术开发区","value":"321071"},{"label":"仪征市","value":"321081"},{"label":"高邮市","value":"321084"}],[{"label":"京口区","value":"321102"},{"label":"润州区","value":"321111"},{"label":"丹徒区","value":"321112"},{"label":"镇江新区","value":"321171"},{"label":"丹阳市","value":"321181"},{"label":"扬中市","value":"321182"},{"label":"句容市","value":"321183"}],[{"label":"海陵区","value":"321202"},{"label":"高港区","value":"321203"},{"label":"姜堰区","value":"321204"},{"label":"泰州医药高新技术产业开发区","value":"321271"},{"label":"兴化市","value":"321281"},{"label":"靖江市","value":"321282"},{"label":"泰兴市","value":"321283"}],[{"label":"宿城区","value":"321302"},{"label":"宿豫区","value":"321311"},{"label":"沭阳县","value":"321322"},{"label":"泗阳县","value":"321323"},{"label":"泗洪县","value":"321324"},{"label":"宿迁经济技术开发区","value":"321371"}]],[[{"label":"上城区","value":"330102"},{"label":"下城区","value":"330103"},{"label":"江干区","value":"330104"},{"label":"拱墅区","value":"330105"},{"label":"西湖区","value":"330106"},{"label":"滨江区","value":"330108"},{"label":"萧山区","value":"330109"},{"label":"余杭区","value":"330110"},{"label":"富阳区","value":"330111"},{"label":"临安区","value":"330112"},{"label":"桐庐县","value":"330122"},{"label":"淳安县","value":"330127"},{"label":"建德市","value":"330182"}],[{"label":"海曙区","value":"330203"},{"label":"江北区","value":"330205"},{"label":"北仑区","value":"330206"},{"label":"镇海区","value":"330211"},{"label":"鄞州区","value":"330212"},{"label":"奉化区","value":"330213"},{"label":"象山县","value":"330225"},{"label":"宁海县","value":"330226"},{"label":"余姚市","value":"330281"},{"label":"慈溪市","value":"330282"}],[{"label":"鹿城区","value":"330302"},{"label":"龙湾区","value":"330303"},{"label":"瓯海区","value":"330304"},{"label":"洞头区","value":"330305"},{"label":"永嘉县","value":"330324"},{"label":"平阳县","value":"330326"},{"label":"苍南县","value":"330327"},{"label":"文成县","value":"330328"},{"label":"泰顺县","value":"330329"},{"label":"温州经济技术开发区","value":"330371"},{"label":"瑞安市","value":"330381"},{"label":"乐清市","value":"330382"}],[{"label":"南湖区","value":"330402"},{"label":"秀洲区","value":"330411"},{"label":"嘉善县","value":"330421"},{"label":"海盐县","value":"330424"},{"label":"海宁市","value":"330481"},{"label":"平湖市","value":"330482"},{"label":"桐乡市","value":"330483"}],[{"label":"吴兴区","value":"330502"},{"label":"南浔区","value":"330503"},{"label":"德清县","value":"330521"},{"label":"长兴县","value":"330522"},{"label":"安吉县","value":"330523"}],[{"label":"越城区","value":"330602"},{"label":"柯桥区","value":"330603"},{"label":"上虞区","value":"330604"},{"label":"新昌县","value":"330624"},{"label":"诸暨市","value":"330681"},{"label":"嵊州市","value":"330683"}],[{"label":"婺城区","value":"330702"},{"label":"金东区","value":"330703"},{"label":"武义县","value":"330723"},{"label":"浦江县","value":"330726"},{"label":"磐安县","value":"330727"},{"label":"兰溪市","value":"330781"},{"label":"义乌市","value":"330782"},{"label":"东阳市","value":"330783"},{"label":"永康市","value":"330784"}],[{"label":"柯城区","value":"330802"},{"label":"衢江区","value":"330803"},{"label":"常山县","value":"330822"},{"label":"开化县","value":"330824"},{"label":"龙游县","value":"330825"},{"label":"江山市","value":"330881"}],[{"label":"定海区","value":"330902"},{"label":"普陀区","value":"330903"},{"label":"岱山县","value":"330921"},{"label":"嵊泗县","value":"330922"}],[{"label":"椒江区","value":"331002"},{"label":"黄岩区","value":"331003"},{"label":"路桥区","value":"331004"},{"label":"三门县","value":"331022"},{"label":"天台县","value":"331023"},{"label":"仙居县","value":"331024"},{"label":"温岭市","value":"331081"},{"label":"临海市","value":"331082"},{"label":"玉环市","value":"331083"}],[{"label":"莲都区","value":"331102"},{"label":"青田县","value":"331121"},{"label":"缙云县","value":"331122"},{"label":"遂昌县","value":"331123"},{"label":"松阳县","value":"331124"},{"label":"云和县","value":"331125"},{"label":"庆元县","value":"331126"},{"label":"景宁畲族自治县","value":"331127"},{"label":"龙泉市","value":"331181"}]],[[{"label":"瑶海区","value":"340102"},{"label":"庐阳区","value":"340103"},{"label":"蜀山区","value":"340104"},{"label":"包河区","value":"340111"},{"label":"长丰县","value":"340121"},{"label":"肥东县","value":"340122"},{"label":"肥西县","value":"340123"},{"label":"庐江县","value":"340124"},{"label":"合肥高新技术产业开发区","value":"340171"},{"label":"合肥经济技术开发区","value":"340172"},{"label":"合肥新站高新技术产业开发区","value":"340173"},{"label":"巢湖市","value":"340181"}],[{"label":"镜湖区","value":"340202"},{"label":"弋江区","value":"340203"},{"label":"鸠江区","value":"340207"},{"label":"三山区","value":"340208"},{"label":"芜湖县","value":"340221"},{"label":"繁昌县","value":"340222"},{"label":"南陵县","value":"340223"},{"label":"无为县","value":"340225"},{"label":"芜湖经济技术开发区","value":"340271"},{"label":"安徽芜湖长江大桥经济开发区","value":"340272"}],[{"label":"龙子湖区","value":"340302"},{"label":"蚌山区","value":"340303"},{"label":"禹会区","value":"340304"},{"label":"淮上区","value":"340311"},{"label":"怀远县","value":"340321"},{"label":"五河县","value":"340322"},{"label":"固镇县","value":"340323"},{"label":"蚌埠市高新技术开发区","value":"340371"},{"label":"蚌埠市经济开发区","value":"340372"}],[{"label":"大通区","value":"340402"},{"label":"田家庵区","value":"340403"},{"label":"谢家集区","value":"340404"},{"label":"八公山区","value":"340405"},{"label":"潘集区","value":"340406"},{"label":"凤台县","value":"340421"},{"label":"寿县","value":"340422"}],[{"label":"花山区","value":"340503"},{"label":"雨山区","value":"340504"},{"label":"博望区","value":"340506"},{"label":"当涂县","value":"340521"},{"label":"含山县","value":"340522"},{"label":"和县","value":"340523"}],[{"label":"杜集区","value":"340602"},{"label":"相山区","value":"340603"},{"label":"烈山区","value":"340604"},{"label":"濉溪县","value":"340621"}],[{"label":"铜官区","value":"340705"},{"label":"义安区","value":"340706"},{"label":"郊区","value":"340711"},{"label":"枞阳县","value":"340722"}],[{"label":"迎江区","value":"340802"},{"label":"大观区","value":"340803"},{"label":"宜秀区","value":"340811"},{"label":"怀宁县","value":"340822"},{"label":"潜山县","value":"340824"},{"label":"太湖县","value":"340825"},{"label":"宿松县","value":"340826"},{"label":"望江县","value":"340827"},{"label":"岳西县","value":"340828"},{"label":"安徽安庆经济开发区","value":"340871"},{"label":"桐城市","value":"340881"}],[{"label":"屯溪区","value":"341002"},{"label":"黄山区","value":"341003"},{"label":"徽州区","value":"341004"},{"label":"歙县","value":"341021"},{"label":"休宁县","value":"341022"},{"label":"黟县","value":"341023"},{"label":"祁门县","value":"341024"}],[{"label":"琅琊区","value":"341102"},{"label":"南谯区","value":"341103"},{"label":"来安县","value":"341122"},{"label":"全椒县","value":"341124"},{"label":"定远县","value":"341125"},{"label":"凤阳县","value":"341126"},{"label":"苏滁现代产业园","value":"341171"},{"label":"滁州经济技术开发区","value":"341172"},{"label":"天长市","value":"341181"},{"label":"明光市","value":"341182"}],[{"label":"颍州区","value":"341202"},{"label":"颍东区","value":"341203"},{"label":"颍泉区","value":"341204"},{"label":"临泉县","value":"341221"},{"label":"太和县","value":"341222"},{"label":"阜南县","value":"341225"},{"label":"颍上县","value":"341226"},{"label":"阜阳合肥现代产业园区","value":"341271"},{"label":"阜阳经济技术开发区","value":"341272"},{"label":"界首市","value":"341282"}],[{"label":"埇桥区","value":"341302"},{"label":"砀山县","value":"341321"},{"label":"萧县","value":"341322"},{"label":"灵璧县","value":"341323"},{"label":"泗县","value":"341324"},{"label":"宿州马鞍山现代产业园区","value":"341371"},{"label":"宿州经济技术开发区","value":"341372"}],[{"label":"金安区","value":"341502"},{"label":"裕安区","value":"341503"},{"label":"叶集区","value":"341504"},{"label":"霍邱县","value":"341522"},{"label":"舒城县","value":"341523"},{"label":"金寨县","value":"341524"},{"label":"霍山县","value":"341525"}],[{"label":"谯城区","value":"341602"},{"label":"涡阳县","value":"341621"},{"label":"蒙城县","value":"341622"},{"label":"利辛县","value":"341623"}],[{"label":"贵池区","value":"341702"},{"label":"东至县","value":"341721"},{"label":"石台县","value":"341722"},{"label":"青阳县","value":"341723"}],[{"label":"宣州区","value":"341802"},{"label":"郎溪县","value":"341821"},{"label":"广德县","value":"341822"},{"label":"泾县","value":"341823"},{"label":"绩溪县","value":"341824"},{"label":"旌德县","value":"341825"},{"label":"宣城市经济开发区","value":"341871"},{"label":"宁国市","value":"341881"}]],[[{"label":"鼓楼区","value":"350102"},{"label":"台江区","value":"350103"},{"label":"仓山区","value":"350104"},{"label":"马尾区","value":"350105"},{"label":"晋安区","value":"350111"},{"label":"闽侯县","value":"350121"},{"label":"连江县","value":"350122"},{"label":"罗源县","value":"350123"},{"label":"闽清县","value":"350124"},{"label":"永泰县","value":"350125"},{"label":"平潭县","value":"350128"},{"label":"福清市","value":"350181"},{"label":"长乐市","value":"350182"}],[{"label":"思明区","value":"350203"},{"label":"海沧区","value":"350205"},{"label":"湖里区","value":"350206"},{"label":"集美区","value":"350211"},{"label":"同安区","value":"350212"},{"label":"翔安区","value":"350213"}],[{"label":"城厢区","value":"350302"},{"label":"涵江区","value":"350303"},{"label":"荔城区","value":"350304"},{"label":"秀屿区","value":"350305"},{"label":"仙游县","value":"350322"}],[{"label":"梅列区","value":"350402"},{"label":"三元区","value":"350403"},{"label":"明溪县","value":"350421"},{"label":"清流县","value":"350423"},{"label":"宁化县","value":"350424"},{"label":"大田县","value":"350425"},{"label":"尤溪县","value":"350426"},{"label":"沙县","value":"350427"},{"label":"将乐县","value":"350428"},{"label":"泰宁县","value":"350429"},{"label":"建宁县","value":"350430"},{"label":"永安市","value":"350481"}],[{"label":"鲤城区","value":"350502"},{"label":"丰泽区","value":"350503"},{"label":"洛江区","value":"350504"},{"label":"泉港区","value":"350505"},{"label":"惠安县","value":"350521"},{"label":"安溪县","value":"350524"},{"label":"永春县","value":"350525"},{"label":"德化县","value":"350526"},{"label":"金门县","value":"350527"},{"label":"石狮市","value":"350581"},{"label":"晋江市","value":"350582"},{"label":"南安市","value":"350583"}],[{"label":"芗城区","value":"350602"},{"label":"龙文区","value":"350603"},{"label":"云霄县","value":"350622"},{"label":"漳浦县","value":"350623"},{"label":"诏安县","value":"350624"},{"label":"长泰县","value":"350625"},{"label":"东山县","value":"350626"},{"label":"南靖县","value":"350627"},{"label":"平和县","value":"350628"},{"label":"华安县","value":"350629"},{"label":"龙海市","value":"350681"}],[{"label":"延平区","value":"350702"},{"label":"建阳区","value":"350703"},{"label":"顺昌县","value":"350721"},{"label":"浦城县","value":"350722"},{"label":"光泽县","value":"350723"},{"label":"松溪县","value":"350724"},{"label":"政和县","value":"350725"},{"label":"邵武市","value":"350781"},{"label":"武夷山市","value":"350782"},{"label":"建瓯市","value":"350783"}],[{"label":"新罗区","value":"350802"},{"label":"永定区","value":"350803"},{"label":"长汀县","value":"350821"},{"label":"上杭县","value":"350823"},{"label":"武平县","value":"350824"},{"label":"连城县","value":"350825"},{"label":"漳平市","value":"350881"}],[{"label":"蕉城区","value":"350902"},{"label":"霞浦县","value":"350921"},{"label":"古田县","value":"350922"},{"label":"屏南县","value":"350923"},{"label":"寿宁县","value":"350924"},{"label":"周宁县","value":"350925"},{"label":"柘荣县","value":"350926"},{"label":"福安市","value":"350981"},{"label":"福鼎市","value":"350982"}]],[[{"label":"东湖区","value":"360102"},{"label":"西湖区","value":"360103"},{"label":"青云谱区","value":"360104"},{"label":"湾里区","value":"360105"},{"label":"青山湖区","value":"360111"},{"label":"新建区","value":"360112"},{"label":"南昌县","value":"360121"},{"label":"安义县","value":"360123"},{"label":"进贤县","value":"360124"}],[{"label":"昌江区","value":"360202"},{"label":"珠山区","value":"360203"},{"label":"浮梁县","value":"360222"},{"label":"乐平市","value":"360281"}],[{"label":"安源区","value":"360302"},{"label":"湘东区","value":"360313"},{"label":"莲花县","value":"360321"},{"label":"上栗县","value":"360322"},{"label":"芦溪县","value":"360323"}],[{"label":"濂溪区","value":"360402"},{"label":"浔阳区","value":"360403"},{"label":"柴桑区","value":"360404"},{"label":"武宁县","value":"360423"},{"label":"修水县","value":"360424"},{"label":"永修县","value":"360425"},{"label":"德安县","value":"360426"},{"label":"都昌县","value":"360428"},{"label":"湖口县","value":"360429"},{"label":"彭泽县","value":"360430"},{"label":"瑞昌市","value":"360481"},{"label":"共青城市","value":"360482"},{"label":"庐山市","value":"360483"}],[{"label":"渝水区","value":"360502"},{"label":"分宜县","value":"360521"}],[{"label":"月湖区","value":"360602"},{"label":"余江县","value":"360622"},{"label":"贵溪市","value":"360681"}],[{"label":"章贡区","value":"360702"},{"label":"南康区","value":"360703"},{"label":"赣县区","value":"360704"},{"label":"信丰县","value":"360722"},{"label":"大余县","value":"360723"},{"label":"上犹县","value":"360724"},{"label":"崇义县","value":"360725"},{"label":"安远县","value":"360726"},{"label":"龙南县","value":"360727"},{"label":"定南县","value":"360728"},{"label":"全南县","value":"360729"},{"label":"宁都县","value":"360730"},{"label":"于都县","value":"360731"},{"label":"兴国县","value":"360732"},{"label":"会昌县","value":"360733"},{"label":"寻乌县","value":"360734"},{"label":"石城县","value":"360735"},{"label":"瑞金市","value":"360781"}],[{"label":"吉州区","value":"360802"},{"label":"青原区","value":"360803"},{"label":"吉安县","value":"360821"},{"label":"吉水县","value":"360822"},{"label":"峡江县","value":"360823"},{"label":"新干县","value":"360824"},{"label":"永丰县","value":"360825"},{"label":"泰和县","value":"360826"},{"label":"遂川县","value":"360827"},{"label":"万安县","value":"360828"},{"label":"安福县","value":"360829"},{"label":"永新县","value":"360830"},{"label":"井冈山市","value":"360881"}],[{"label":"袁州区","value":"360902"},{"label":"奉新县","value":"360921"},{"label":"万载县","value":"360922"},{"label":"上高县","value":"360923"},{"label":"宜丰县","value":"360924"},{"label":"靖安县","value":"360925"},{"label":"铜鼓县","value":"360926"},{"label":"丰城市","value":"360981"},{"label":"樟树市","value":"360982"},{"label":"高安市","value":"360983"}],[{"label":"临川区","value":"361002"},{"label":"东乡区","value":"361003"},{"label":"南城县","value":"361021"},{"label":"黎川县","value":"361022"},{"label":"南丰县","value":"361023"},{"label":"崇仁县","value":"361024"},{"label":"乐安县","value":"361025"},{"label":"宜黄县","value":"361026"},{"label":"金溪县","value":"361027"},{"label":"资溪县","value":"361028"},{"label":"广昌县","value":"361030"}],[{"label":"信州区","value":"361102"},{"label":"广丰区","value":"361103"},{"label":"上饶县","value":"361121"},{"label":"玉山县","value":"361123"},{"label":"铅山县","value":"361124"},{"label":"横峰县","value":"361125"},{"label":"弋阳县","value":"361126"},{"label":"余干县","value":"361127"},{"label":"鄱阳县","value":"361128"},{"label":"万年县","value":"361129"},{"label":"婺源县","value":"361130"},{"label":"德兴市","value":"361181"}]],[[{"label":"历下区","value":"370102"},{"label":"市中区","value":"370103"},{"label":"槐荫区","value":"370104"},{"label":"天桥区","value":"370105"},{"label":"历城区","value":"370112"},{"label":"长清区","value":"370113"},{"label":"章丘区","value":"370114"},{"label":"平阴县","value":"370124"},{"label":"济阳县","value":"370125"},{"label":"商河县","value":"370126"},{"label":"济南高新技术产业开发区","value":"370171"}],[{"label":"市南区","value":"370202"},{"label":"市北区","value":"370203"},{"label":"黄岛区","value":"370211"},{"label":"崂山区","value":"370212"},{"label":"李沧区","value":"370213"},{"label":"城阳区","value":"370214"},{"label":"即墨区","value":"370215"},{"label":"青岛高新技术产业开发区","value":"370271"},{"label":"胶州市","value":"370281"},{"label":"平度市","value":"370283"},{"label":"莱西市","value":"370285"}],[{"label":"淄川区","value":"370302"},{"label":"张店区","value":"370303"},{"label":"博山区","value":"370304"},{"label":"临淄区","value":"370305"},{"label":"周村区","value":"370306"},{"label":"桓台县","value":"370321"},{"label":"高青县","value":"370322"},{"label":"沂源县","value":"370323"}],[{"label":"市中区","value":"370402"},{"label":"薛城区","value":"370403"},{"label":"峄城区","value":"370404"},{"label":"台儿庄区","value":"370405"},{"label":"山亭区","value":"370406"},{"label":"滕州市","value":"370481"}],[{"label":"东营区","value":"370502"},{"label":"河口区","value":"370503"},{"label":"垦利区","value":"370505"},{"label":"利津县","value":"370522"},{"label":"广饶县","value":"370523"},{"label":"东营经济技术开发区","value":"370571"},{"label":"东营港经济开发区","value":"370572"}],[{"label":"芝罘区","value":"370602"},{"label":"福山区","value":"370611"},{"label":"牟平区","value":"370612"},{"label":"莱山区","value":"370613"},{"label":"长岛县","value":"370634"},{"label":"烟台高新技术产业开发区","value":"370671"},{"label":"烟台经济技术开发区","value":"370672"},{"label":"龙口市","value":"370681"},{"label":"莱阳市","value":"370682"},{"label":"莱州市","value":"370683"},{"label":"蓬莱市","value":"370684"},{"label":"招远市","value":"370685"},{"label":"栖霞市","value":"370686"},{"label":"海阳市","value":"370687"}],[{"label":"潍城区","value":"370702"},{"label":"寒亭区","value":"370703"},{"label":"坊子区","value":"370704"},{"label":"奎文区","value":"370705"},{"label":"临朐县","value":"370724"},{"label":"昌乐县","value":"370725"},{"label":"潍坊滨海经济技术开发区","value":"370772"},{"label":"青州市","value":"370781"},{"label":"诸城市","value":"370782"},{"label":"寿光市","value":"370783"},{"label":"安丘市","value":"370784"},{"label":"高密市","value":"370785"},{"label":"昌邑市","value":"370786"}],[{"label":"任城区","value":"370811"},{"label":"兖州区","value":"370812"},{"label":"微山县","value":"370826"},{"label":"鱼台县","value":"370827"},{"label":"金乡县","value":"370828"},{"label":"嘉祥县","value":"370829"},{"label":"汶上县","value":"370830"},{"label":"泗水县","value":"370831"},{"label":"梁山县","value":"370832"},{"label":"济宁高新技术产业开发区","value":"370871"},{"label":"曲阜市","value":"370881"},{"label":"邹城市","value":"370883"}],[{"label":"泰山区","value":"370902"},{"label":"岱岳区","value":"370911"},{"label":"宁阳县","value":"370921"},{"label":"东平县","value":"370923"},{"label":"新泰市","value":"370982"},{"label":"肥城市","value":"370983"}],[{"label":"环翠区","value":"371002"},{"label":"文登区","value":"371003"},{"label":"威海火炬高技术产业开发区","value":"371071"},{"label":"威海经济技术开发区","value":"371072"},{"label":"威海临港经济技术开发区","value":"371073"},{"label":"荣成市","value":"371082"},{"label":"乳山市","value":"371083"}],[{"label":"东港区","value":"371102"},{"label":"岚山区","value":"371103"},{"label":"五莲县","value":"371121"},{"label":"莒县","value":"371122"},{"label":"日照经济技术开发区","value":"371171"},{"label":"日照国际海洋城","value":"371172"}],[{"label":"莱城区","value":"371202"},{"label":"钢城区","value":"371203"}],[{"label":"兰山区","value":"371302"},{"label":"罗庄区","value":"371311"},{"label":"河东区","value":"371312"},{"label":"沂南县","value":"371321"},{"label":"郯城县","value":"371322"},{"label":"沂水县","value":"371323"},{"label":"兰陵县","value":"371324"},{"label":"费县","value":"371325"},{"label":"平邑县","value":"371326"},{"label":"莒南县","value":"371327"},{"label":"蒙阴县","value":"371328"},{"label":"临沭县","value":"371329"},{"label":"临沂高新技术产业开发区","value":"371371"},{"label":"临沂经济技术开发区","value":"371372"},{"label":"临沂临港经济开发区","value":"371373"}],[{"label":"德城区","value":"371402"},{"label":"陵城区","value":"371403"},{"label":"宁津县","value":"371422"},{"label":"庆云县","value":"371423"},{"label":"临邑县","value":"371424"},{"label":"齐河县","value":"371425"},{"label":"平原县","value":"371426"},{"label":"夏津县","value":"371427"},{"label":"武城县","value":"371428"},{"label":"德州经济技术开发区","value":"371471"},{"label":"德州运河经济开发区","value":"371472"},{"label":"乐陵市","value":"371481"},{"label":"禹城市","value":"371482"}],[{"label":"东昌府区","value":"371502"},{"label":"阳谷县","value":"371521"},{"label":"莘县","value":"371522"},{"label":"茌平县","value":"371523"},{"label":"东阿县","value":"371524"},{"label":"冠县","value":"371525"},{"label":"高唐县","value":"371526"},{"label":"临清市","value":"371581"}],[{"label":"滨城区","value":"371602"},{"label":"沾化区","value":"371603"},{"label":"惠民县","value":"371621"},{"label":"阳信县","value":"371622"},{"label":"无棣县","value":"371623"},{"label":"博兴县","value":"371625"},{"label":"邹平县","value":"371626"}],[{"label":"牡丹区","value":"371702"},{"label":"定陶区","value":"371703"},{"label":"曹县","value":"371721"},{"label":"单县","value":"371722"},{"label":"成武县","value":"371723"},{"label":"巨野县","value":"371724"},{"label":"郓城县","value":"371725"},{"label":"鄄城县","value":"371726"},{"label":"东明县","value":"371728"},{"label":"菏泽经济技术开发区","value":"371771"},{"label":"菏泽高新技术开发区","value":"371772"}]],[[{"label":"中原区","value":"410102"},{"label":"二七区","value":"410103"},{"label":"管城回族区","value":"410104"},{"label":"金水区","value":"410105"},{"label":"上街区","value":"410106"},{"label":"惠济区","value":"410108"},{"label":"中牟县","value":"410122"},{"label":"郑州经济技术开发区","value":"410171"},{"label":"郑州高新技术产业开发区","value":"410172"},{"label":"郑州航空港经济综合实验区","value":"410173"},{"label":"巩义市","value":"410181"},{"label":"荥阳市","value":"410182"},{"label":"新密市","value":"410183"},{"label":"新郑市","value":"410184"},{"label":"登封市","value":"410185"}],[{"label":"龙亭区","value":"410202"},{"label":"顺河回族区","value":"410203"},{"label":"鼓楼区","value":"410204"},{"label":"禹王台区","value":"410205"},{"label":"祥符区","value":"410212"},{"label":"杞县","value":"410221"},{"label":"通许县","value":"410222"},{"label":"尉氏县","value":"410223"},{"label":"兰考县","value":"410225"}],[{"label":"老城区","value":"410302"},{"label":"西工区","value":"410303"},{"label":"瀍河回族区","value":"410304"},{"label":"涧西区","value":"410305"},{"label":"吉利区","value":"410306"},{"label":"洛龙区","value":"410311"},{"label":"孟津县","value":"410322"},{"label":"新安县","value":"410323"},{"label":"栾川县","value":"410324"},{"label":"嵩县","value":"410325"},{"label":"汝阳县","value":"410326"},{"label":"宜阳县","value":"410327"},{"label":"洛宁县","value":"410328"},{"label":"伊川县","value":"410329"},{"label":"洛阳高新技术产业开发区","value":"410371"},{"label":"偃师市","value":"410381"}],[{"label":"新华区","value":"410402"},{"label":"卫东区","value":"410403"},{"label":"石龙区","value":"410404"},{"label":"湛河区","value":"410411"},{"label":"宝丰县","value":"410421"},{"label":"叶县","value":"410422"},{"label":"鲁山县","value":"410423"},{"label":"郏县","value":"410425"},{"label":"平顶山高新技术产业开发区","value":"410471"},{"label":"平顶山市新城区","value":"410472"},{"label":"舞钢市","value":"410481"},{"label":"汝州市","value":"410482"}],[{"label":"文峰区","value":"410502"},{"label":"北关区","value":"410503"},{"label":"殷都区","value":"410505"},{"label":"龙安区","value":"410506"},{"label":"安阳县","value":"410522"},{"label":"汤阴县","value":"410523"},{"label":"滑县","value":"410526"},{"label":"内黄县","value":"410527"},{"label":"安阳高新技术产业开发区","value":"410571"},{"label":"林州市","value":"410581"}],[{"label":"鹤山区","value":"410602"},{"label":"山城区","value":"410603"},{"label":"淇滨区","value":"410611"},{"label":"浚县","value":"410621"},{"label":"淇县","value":"410622"},{"label":"鹤壁经济技术开发区","value":"410671"}],[{"label":"红旗区","value":"410702"},{"label":"卫滨区","value":"410703"},{"label":"凤泉区","value":"410704"},{"label":"牧野区","value":"410711"},{"label":"新乡县","value":"410721"},{"label":"获嘉县","value":"410724"},{"label":"原阳县","value":"410725"},{"label":"延津县","value":"410726"},{"label":"封丘县","value":"410727"},{"label":"长垣县","value":"410728"},{"label":"新乡高新技术产业开发区","value":"410771"},{"label":"新乡经济技术开发区","value":"410772"},{"label":"新乡市平原城乡一体化示范区","value":"410773"},{"label":"卫辉市","value":"410781"},{"label":"辉县市","value":"410782"}],[{"label":"解放区","value":"410802"},{"label":"中站区","value":"410803"},{"label":"马村区","value":"410804"},{"label":"山阳区","value":"410811"},{"label":"修武县","value":"410821"},{"label":"博爱县","value":"410822"},{"label":"武陟县","value":"410823"},{"label":"温县","value":"410825"},{"label":"焦作城乡一体化示范区","value":"410871"},{"label":"沁阳市","value":"410882"},{"label":"孟州市","value":"410883"}],[{"label":"华龙区","value":"410902"},{"label":"清丰县","value":"410922"},{"label":"南乐县","value":"410923"},{"label":"范县","value":"410926"},{"label":"台前县","value":"410927"},{"label":"濮阳县","value":"410928"},{"label":"河南濮阳工业园区","value":"410971"},{"label":"濮阳经济技术开发区","value":"410972"}],[{"label":"魏都区","value":"411002"},{"label":"建安区","value":"411003"},{"label":"鄢陵县","value":"411024"},{"label":"襄城县","value":"411025"},{"label":"许昌经济技术开发区","value":"411071"},{"label":"禹州市","value":"411081"},{"label":"长葛市","value":"411082"}],[{"label":"源汇区","value":"411102"},{"label":"郾城区","value":"411103"},{"label":"召陵区","value":"411104"},{"label":"舞阳县","value":"411121"},{"label":"临颍县","value":"411122"},{"label":"漯河经济技术开发区","value":"411171"}],[{"label":"湖滨区","value":"411202"},{"label":"陕州区","value":"411203"},{"label":"渑池县","value":"411221"},{"label":"卢氏县","value":"411224"},{"label":"河南三门峡经济开发区","value":"411271"},{"label":"义马市","value":"411281"},{"label":"灵宝市","value":"411282"}],[{"label":"宛城区","value":"411302"},{"label":"卧龙区","value":"411303"},{"label":"南召县","value":"411321"},{"label":"方城县","value":"411322"},{"label":"西峡县","value":"411323"},{"label":"镇平县","value":"411324"},{"label":"内乡县","value":"411325"},{"label":"淅川县","value":"411326"},{"label":"社旗县","value":"411327"},{"label":"唐河县","value":"411328"},{"label":"新野县","value":"411329"},{"label":"桐柏县","value":"411330"},{"label":"南阳高新技术产业开发区","value":"411371"},{"label":"南阳市城乡一体化示范区","value":"411372"},{"label":"邓州市","value":"411381"}],[{"label":"梁园区","value":"411402"},{"label":"睢阳区","value":"411403"},{"label":"民权县","value":"411421"},{"label":"睢县","value":"411422"},{"label":"宁陵县","value":"411423"},{"label":"柘城县","value":"411424"},{"label":"虞城县","value":"411425"},{"label":"夏邑县","value":"411426"},{"label":"豫东综合物流产业聚集区","value":"411471"},{"label":"河南商丘经济开发区","value":"411472"},{"label":"永城市","value":"411481"}],[{"label":"浉河区","value":"411502"},{"label":"平桥区","value":"411503"},{"label":"罗山县","value":"411521"},{"label":"光山县","value":"411522"},{"label":"新县","value":"411523"},{"label":"商城县","value":"411524"},{"label":"固始县","value":"411525"},{"label":"潢川县","value":"411526"},{"label":"淮滨县","value":"411527"},{"label":"息县","value":"411528"},{"label":"信阳高新技术产业开发区","value":"411571"}],[{"label":"川汇区","value":"411602"},{"label":"扶沟县","value":"411621"},{"label":"西华县","value":"411622"},{"label":"商水县","value":"411623"},{"label":"沈丘县","value":"411624"},{"label":"郸城县","value":"411625"},{"label":"淮阳县","value":"411626"},{"label":"太康县","value":"411627"},{"label":"鹿邑县","value":"411628"},{"label":"河南周口经济开发区","value":"411671"},{"label":"项城市","value":"411681"}],[{"label":"驿城区","value":"411702"},{"label":"西平县","value":"411721"},{"label":"上蔡县","value":"411722"},{"label":"平舆县","value":"411723"},{"label":"正阳县","value":"411724"},{"label":"确山县","value":"411725"},{"label":"泌阳县","value":"411726"},{"label":"汝南县","value":"411727"},{"label":"遂平县","value":"411728"},{"label":"新蔡县","value":"411729"},{"label":"河南驻马店经济开发区","value":"411771"}],[{"label":"济源市","value":"419001"}]],[[{"label":"江岸区","value":"420102"},{"label":"江汉区","value":"420103"},{"label":"硚口区","value":"420104"},{"label":"汉阳区","value":"420105"},{"label":"武昌区","value":"420106"},{"label":"青山区","value":"420107"},{"label":"洪山区","value":"420111"},{"label":"东西湖区","value":"420112"},{"label":"汉南区","value":"420113"},{"label":"蔡甸区","value":"420114"},{"label":"江夏区","value":"420115"},{"label":"黄陂区","value":"420116"},{"label":"新洲区","value":"420117"}],[{"label":"黄石港区","value":"420202"},{"label":"西塞山区","value":"420203"},{"label":"下陆区","value":"420204"},{"label":"铁山区","value":"420205"},{"label":"阳新县","value":"420222"},{"label":"大冶市","value":"420281"}],[{"label":"茅箭区","value":"420302"},{"label":"张湾区","value":"420303"},{"label":"郧阳区","value":"420304"},{"label":"郧西县","value":"420322"},{"label":"竹山县","value":"420323"},{"label":"竹溪县","value":"420324"},{"label":"房县","value":"420325"},{"label":"丹江口市","value":"420381"}],[{"label":"西陵区","value":"420502"},{"label":"伍家岗区","value":"420503"},{"label":"点军区","value":"420504"},{"label":"猇亭区","value":"420505"},{"label":"夷陵区","value":"420506"},{"label":"远安县","value":"420525"},{"label":"兴山县","value":"420526"},{"label":"秭归县","value":"420527"},{"label":"长阳土家族自治县","value":"420528"},{"label":"五峰土家族自治县","value":"420529"},{"label":"宜都市","value":"420581"},{"label":"当阳市","value":"420582"},{"label":"枝江市","value":"420583"}],[{"label":"襄城区","value":"420602"},{"label":"樊城区","value":"420606"},{"label":"襄州区","value":"420607"},{"label":"南漳县","value":"420624"},{"label":"谷城县","value":"420625"},{"label":"保康县","value":"420626"},{"label":"老河口市","value":"420682"},{"label":"枣阳市","value":"420683"},{"label":"宜城市","value":"420684"}],[{"label":"梁子湖区","value":"420702"},{"label":"华容区","value":"420703"},{"label":"鄂城区","value":"420704"}],[{"label":"东宝区","value":"420802"},{"label":"掇刀区","value":"420804"},{"label":"京山县","value":"420821"},{"label":"沙洋县","value":"420822"},{"label":"钟祥市","value":"420881"}],[{"label":"孝南区","value":"420902"},{"label":"孝昌县","value":"420921"},{"label":"大悟县","value":"420922"},{"label":"云梦县","value":"420923"},{"label":"应城市","value":"420981"},{"label":"安陆市","value":"420982"},{"label":"汉川市","value":"420984"}],[{"label":"沙市区","value":"421002"},{"label":"荆州区","value":"421003"},{"label":"公安县","value":"421022"},{"label":"监利县","value":"421023"},{"label":"江陵县","value":"421024"},{"label":"荆州经济技术开发区","value":"421071"},{"label":"石首市","value":"421081"},{"label":"洪湖市","value":"421083"},{"label":"松滋市","value":"421087"}],[{"label":"黄州区","value":"421102"},{"label":"团风县","value":"421121"},{"label":"红安县","value":"421122"},{"label":"罗田县","value":"421123"},{"label":"英山县","value":"421124"},{"label":"浠水县","value":"421125"},{"label":"蕲春县","value":"421126"},{"label":"黄梅县","value":"421127"},{"label":"龙感湖管理区","value":"421171"},{"label":"麻城市","value":"421181"},{"label":"武穴市","value":"421182"}],[{"label":"咸安区","value":"421202"},{"label":"嘉鱼县","value":"421221"},{"label":"通城县","value":"421222"},{"label":"崇阳县","value":"421223"},{"label":"通山县","value":"421224"},{"label":"赤壁市","value":"421281"}],[{"label":"曾都区","value":"421303"},{"label":"随县","value":"421321"},{"label":"广水市","value":"421381"}],[{"label":"恩施市","value":"422801"},{"label":"利川市","value":"422802"},{"label":"建始县","value":"422822"},{"label":"巴东县","value":"422823"},{"label":"宣恩县","value":"422825"},{"label":"咸丰县","value":"422826"},{"label":"来凤县","value":"422827"},{"label":"鹤峰县","value":"422828"}],[{"label":"仙桃市","value":"429004"},{"label":"潜江市","value":"429005"},{"label":"天门市","value":"429006"},{"label":"神农架林区","value":"429021"}]],[[{"label":"芙蓉区","value":"430102"},{"label":"天心区","value":"430103"},{"label":"岳麓区","value":"430104"},{"label":"开福区","value":"430105"},{"label":"雨花区","value":"430111"},{"label":"望城区","value":"430112"},{"label":"长沙县","value":"430121"},{"label":"浏阳市","value":"430181"},{"label":"宁乡市","value":"430182"}],[{"label":"荷塘区","value":"430202"},{"label":"芦淞区","value":"430203"},{"label":"石峰区","value":"430204"},{"label":"天元区","value":"430211"},{"label":"株洲县","value":"430221"},{"label":"攸县","value":"430223"},{"label":"茶陵县","value":"430224"},{"label":"炎陵县","value":"430225"},{"label":"云龙示范区","value":"430271"},{"label":"醴陵市","value":"430281"}],[{"label":"雨湖区","value":"430302"},{"label":"岳塘区","value":"430304"},{"label":"湘潭县","value":"430321"},{"label":"湖南湘潭高新技术产业园区","value":"430371"},{"label":"湘潭昭山示范区","value":"430372"},{"label":"湘潭九华示范区","value":"430373"},{"label":"湘乡市","value":"430381"},{"label":"韶山市","value":"430382"}],[{"label":"珠晖区","value":"430405"},{"label":"雁峰区","value":"430406"},{"label":"石鼓区","value":"430407"},{"label":"蒸湘区","value":"430408"},{"label":"南岳区","value":"430412"},{"label":"衡阳县","value":"430421"},{"label":"衡南县","value":"430422"},{"label":"衡山县","value":"430423"},{"label":"衡东县","value":"430424"},{"label":"祁东县","value":"430426"},{"label":"衡阳综合保税区","value":"430471"},{"label":"湖南衡阳高新技术产业园区","value":"430472"},{"label":"湖南衡阳松木经济开发区","value":"430473"},{"label":"耒阳市","value":"430481"},{"label":"常宁市","value":"430482"}],[{"label":"双清区","value":"430502"},{"label":"大祥区","value":"430503"},{"label":"北塔区","value":"430511"},{"label":"邵东县","value":"430521"},{"label":"新邵县","value":"430522"},{"label":"邵阳县","value":"430523"},{"label":"隆回县","value":"430524"},{"label":"洞口县","value":"430525"},{"label":"绥宁县","value":"430527"},{"label":"新宁县","value":"430528"},{"label":"城步苗族自治县","value":"430529"},{"label":"武冈市","value":"430581"}],[{"label":"岳阳楼区","value":"430602"},{"label":"云溪区","value":"430603"},{"label":"君山区","value":"430611"},{"label":"岳阳县","value":"430621"},{"label":"华容县","value":"430623"},{"label":"湘阴县","value":"430624"},{"label":"平江县","value":"430626"},{"label":"岳阳市屈原管理区","value":"430671"},{"label":"汨罗市","value":"430681"},{"label":"临湘市","value":"430682"}],[{"label":"武陵区","value":"430702"},{"label":"鼎城区","value":"430703"},{"label":"安乡县","value":"430721"},{"label":"汉寿县","value":"430722"},{"label":"澧县","value":"430723"},{"label":"临澧县","value":"430724"},{"label":"桃源县","value":"430725"},{"label":"石门县","value":"430726"},{"label":"常德市西洞庭管理区","value":"430771"},{"label":"津市市","value":"430781"}],[{"label":"永定区","value":"430802"},{"label":"武陵源区","value":"430811"},{"label":"慈利县","value":"430821"},{"label":"桑植县","value":"430822"}],[{"label":"资阳区","value":"430902"},{"label":"赫山区","value":"430903"},{"label":"南县","value":"430921"},{"label":"桃江县","value":"430922"},{"label":"安化县","value":"430923"},{"label":"益阳市大通湖管理区","value":"430971"},{"label":"湖南益阳高新技术产业园区","value":"430972"},{"label":"沅江市","value":"430981"}],[{"label":"北湖区","value":"431002"},{"label":"苏仙区","value":"431003"},{"label":"桂阳县","value":"431021"},{"label":"宜章县","value":"431022"},{"label":"永兴县","value":"431023"},{"label":"嘉禾县","value":"431024"},{"label":"临武县","value":"431025"},{"label":"汝城县","value":"431026"},{"label":"桂东县","value":"431027"},{"label":"安仁县","value":"431028"},{"label":"资兴市","value":"431081"}],[{"label":"零陵区","value":"431102"},{"label":"冷水滩区","value":"431103"},{"label":"祁阳县","value":"431121"},{"label":"东安县","value":"431122"},{"label":"双牌县","value":"431123"},{"label":"道县","value":"431124"},{"label":"江永县","value":"431125"},{"label":"宁远县","value":"431126"},{"label":"蓝山县","value":"431127"},{"label":"新田县","value":"431128"},{"label":"江华瑶族自治县","value":"431129"},{"label":"永州经济技术开发区","value":"431171"},{"label":"永州市金洞管理区","value":"431172"},{"label":"永州市回龙圩管理区","value":"431173"}],[{"label":"鹤城区","value":"431202"},{"label":"中方县","value":"431221"},{"label":"沅陵县","value":"431222"},{"label":"辰溪县","value":"431223"},{"label":"溆浦县","value":"431224"},{"label":"会同县","value":"431225"},{"label":"麻阳苗族自治县","value":"431226"},{"label":"新晃侗族自治县","value":"431227"},{"label":"芷江侗族自治县","value":"431228"},{"label":"靖州苗族侗族自治县","value":"431229"},{"label":"通道侗族自治县","value":"431230"},{"label":"怀化市洪江管理区","value":"431271"},{"label":"洪江市","value":"431281"}],[{"label":"娄星区","value":"431302"},{"label":"双峰县","value":"431321"},{"label":"新化县","value":"431322"},{"label":"冷水江市","value":"431381"},{"label":"涟源市","value":"431382"}],[{"label":"吉首市","value":"433101"},{"label":"泸溪县","value":"433122"},{"label":"凤凰县","value":"433123"},{"label":"花垣县","value":"433124"},{"label":"保靖县","value":"433125"},{"label":"古丈县","value":"433126"},{"label":"永顺县","value":"433127"},{"label":"龙山县","value":"433130"},{"label":"湖南吉首经济开发区","value":"433172"},{"label":"湖南永顺经济开发区","value":"433173"}]],[[{"label":"荔湾区","value":"440103"},{"label":"越秀区","value":"440104"},{"label":"海珠区","value":"440105"},{"label":"天河区","value":"440106"},{"label":"白云区","value":"440111"},{"label":"黄埔区","value":"440112"},{"label":"番禺区","value":"440113"},{"label":"花都区","value":"440114"},{"label":"南沙区","value":"440115"},{"label":"从化区","value":"440117"},{"label":"增城区","value":"440118"}],[{"label":"武江区","value":"440203"},{"label":"浈江区","value":"440204"},{"label":"曲江区","value":"440205"},{"label":"始兴县","value":"440222"},{"label":"仁化县","value":"440224"},{"label":"翁源县","value":"440229"},{"label":"乳源瑶族自治县","value":"440232"},{"label":"新丰县","value":"440233"},{"label":"乐昌市","value":"440281"},{"label":"南雄市","value":"440282"}],[{"label":"罗湖区","value":"440303"},{"label":"福田区","value":"440304"},{"label":"南山区","value":"440305"},{"label":"宝安区","value":"440306"},{"label":"龙岗区","value":"440307"},{"label":"盐田区","value":"440308"},{"label":"龙华区","value":"440309"},{"label":"坪山区","value":"440310"}],[{"label":"香洲区","value":"440402"},{"label":"斗门区","value":"440403"},{"label":"金湾区","value":"440404"}],[{"label":"龙湖区","value":"440507"},{"label":"金平区","value":"440511"},{"label":"濠江区","value":"440512"},{"label":"潮阳区","value":"440513"},{"label":"潮南区","value":"440514"},{"label":"澄海区","value":"440515"},{"label":"南澳县","value":"440523"}],[{"label":"禅城区","value":"440604"},{"label":"南海区","value":"440605"},{"label":"顺德区","value":"440606"},{"label":"三水区","value":"440607"},{"label":"高明区","value":"440608"}],[{"label":"蓬江区","value":"440703"},{"label":"江海区","value":"440704"},{"label":"新会区","value":"440705"},{"label":"台山市","value":"440781"},{"label":"开平市","value":"440783"},{"label":"鹤山市","value":"440784"},{"label":"恩平市","value":"440785"}],[{"label":"赤坎区","value":"440802"},{"label":"霞山区","value":"440803"},{"label":"坡头区","value":"440804"},{"label":"麻章区","value":"440811"},{"label":"遂溪县","value":"440823"},{"label":"徐闻县","value":"440825"},{"label":"廉江市","value":"440881"},{"label":"雷州市","value":"440882"},{"label":"吴川市","value":"440883"}],[{"label":"茂南区","value":"440902"},{"label":"电白区","value":"440904"},{"label":"高州市","value":"440981"},{"label":"化州市","value":"440982"},{"label":"信宜市","value":"440983"}],[{"label":"端州区","value":"441202"},{"label":"鼎湖区","value":"441203"},{"label":"高要区","value":"441204"},{"label":"广宁县","value":"441223"},{"label":"怀集县","value":"441224"},{"label":"封开县","value":"441225"},{"label":"德庆县","value":"441226"},{"label":"四会市","value":"441284"}],[{"label":"惠城区","value":"441302"},{"label":"惠阳区","value":"441303"},{"label":"博罗县","value":"441322"},{"label":"惠东县","value":"441323"},{"label":"龙门县","value":"441324"}],[{"label":"梅江区","value":"441402"},{"label":"梅县区","value":"441403"},{"label":"大埔县","value":"441422"},{"label":"丰顺县","value":"441423"},{"label":"五华县","value":"441424"},{"label":"平远县","value":"441426"},{"label":"蕉岭县","value":"441427"},{"label":"兴宁市","value":"441481"}],[{"label":"城区","value":"441502"},{"label":"海丰县","value":"441521"},{"label":"陆河县","value":"441523"},{"label":"陆丰市","value":"441581"}],[{"label":"源城区","value":"441602"},{"label":"紫金县","value":"441621"},{"label":"龙川县","value":"441622"},{"label":"连平县","value":"441623"},{"label":"和平县","value":"441624"},{"label":"东源县","value":"441625"}],[{"label":"江城区","value":"441702"},{"label":"阳东区","value":"441704"},{"label":"阳西县","value":"441721"},{"label":"阳春市","value":"441781"}],[{"label":"清城区","value":"441802"},{"label":"清新区","value":"441803"},{"label":"佛冈县","value":"441821"},{"label":"阳山县","value":"441823"},{"label":"连山壮族瑶族自治县","value":"441825"},{"label":"连南瑶族自治县","value":"441826"},{"label":"英德市","value":"441881"},{"label":"连州市","value":"441882"}],[{"label":"东莞市","value":"441900"}],[{"label":"中山市","value":"442000"}],[{"label":"湘桥区","value":"445102"},{"label":"潮安区","value":"445103"},{"label":"饶平县","value":"445122"}],[{"label":"榕城区","value":"445202"},{"label":"揭东区","value":"445203"},{"label":"揭西县","value":"445222"},{"label":"惠来县","value":"445224"},{"label":"普宁市","value":"445281"}],[{"label":"云城区","value":"445302"},{"label":"云安区","value":"445303"},{"label":"新兴县","value":"445321"},{"label":"郁南县","value":"445322"},{"label":"罗定市","value":"445381"}]],[[{"label":"兴宁区","value":"450102"},{"label":"青秀区","value":"450103"},{"label":"江南区","value":"450105"},{"label":"西乡塘区","value":"450107"},{"label":"良庆区","value":"450108"},{"label":"邕宁区","value":"450109"},{"label":"武鸣区","value":"450110"},{"label":"隆安县","value":"450123"},{"label":"马山县","value":"450124"},{"label":"上林县","value":"450125"},{"label":"宾阳县","value":"450126"},{"label":"横县","value":"450127"}],[{"label":"城中区","value":"450202"},{"label":"鱼峰区","value":"450203"},{"label":"柳南区","value":"450204"},{"label":"柳北区","value":"450205"},{"label":"柳江区","value":"450206"},{"label":"柳城县","value":"450222"},{"label":"鹿寨县","value":"450223"},{"label":"融安县","value":"450224"},{"label":"融水苗族自治县","value":"450225"},{"label":"三江侗族自治县","value":"450226"}],[{"label":"秀峰区","value":"450302"},{"label":"叠彩区","value":"450303"},{"label":"象山区","value":"450304"},{"label":"七星区","value":"450305"},{"label":"雁山区","value":"450311"},{"label":"临桂区","value":"450312"},{"label":"阳朔县","value":"450321"},{"label":"灵川县","value":"450323"},{"label":"全州县","value":"450324"},{"label":"兴安县","value":"450325"},{"label":"永福县","value":"450326"},{"label":"灌阳县","value":"450327"},{"label":"龙胜各族自治县","value":"450328"},{"label":"资源县","value":"450329"},{"label":"平乐县","value":"450330"},{"label":"荔浦县","value":"450331"},{"label":"恭城瑶族自治县","value":"450332"}],[{"label":"万秀区","value":"450403"},{"label":"长洲区","value":"450405"},{"label":"龙圩区","value":"450406"},{"label":"苍梧县","value":"450421"},{"label":"藤县","value":"450422"},{"label":"蒙山县","value":"450423"},{"label":"岑溪市","value":"450481"}],[{"label":"海城区","value":"450502"},{"label":"银海区","value":"450503"},{"label":"铁山港区","value":"450512"},{"label":"合浦县","value":"450521"}],[{"label":"港口区","value":"450602"},{"label":"防城区","value":"450603"},{"label":"上思县","value":"450621"},{"label":"东兴市","value":"450681"}],[{"label":"钦南区","value":"450702"},{"label":"钦北区","value":"450703"},{"label":"灵山县","value":"450721"},{"label":"浦北县","value":"450722"}],[{"label":"港北区","value":"450802"},{"label":"港南区","value":"450803"},{"label":"覃塘区","value":"450804"},{"label":"平南县","value":"450821"},{"label":"桂平市","value":"450881"}],[{"label":"玉州区","value":"450902"},{"label":"福绵区","value":"450903"},{"label":"容县","value":"450921"},{"label":"陆川县","value":"450922"},{"label":"博白县","value":"450923"},{"label":"兴业县","value":"450924"},{"label":"北流市","value":"450981"}],[{"label":"右江区","value":"451002"},{"label":"田阳县","value":"451021"},{"label":"田东县","value":"451022"},{"label":"平果县","value":"451023"},{"label":"德保县","value":"451024"},{"label":"那坡县","value":"451026"},{"label":"凌云县","value":"451027"},{"label":"乐业县","value":"451028"},{"label":"田林县","value":"451029"},{"label":"西林县","value":"451030"},{"label":"隆林各族自治县","value":"451031"},{"label":"靖西市","value":"451081"}],[{"label":"八步区","value":"451102"},{"label":"平桂区","value":"451103"},{"label":"昭平县","value":"451121"},{"label":"钟山县","value":"451122"},{"label":"富川瑶族自治县","value":"451123"}],[{"label":"金城江区","value":"451202"},{"label":"宜州区","value":"451203"},{"label":"南丹县","value":"451221"},{"label":"天峨县","value":"451222"},{"label":"凤山县","value":"451223"},{"label":"东兰县","value":"451224"},{"label":"罗城仫佬族自治县","value":"451225"},{"label":"环江毛南族自治县","value":"451226"},{"label":"巴马瑶族自治县","value":"451227"},{"label":"都安瑶族自治县","value":"451228"},{"label":"大化瑶族自治县","value":"451229"}],[{"label":"兴宾区","value":"451302"},{"label":"忻城县","value":"451321"},{"label":"象州县","value":"451322"},{"label":"武宣县","value":"451323"},{"label":"金秀瑶族自治县","value":"451324"},{"label":"合山市","value":"451381"}],[{"label":"江州区","value":"451402"},{"label":"扶绥县","value":"451421"},{"label":"宁明县","value":"451422"},{"label":"龙州县","value":"451423"},{"label":"大新县","value":"451424"},{"label":"天等县","value":"451425"},{"label":"凭祥市","value":"451481"}]],[[{"label":"秀英区","value":"460105"},{"label":"龙华区","value":"460106"},{"label":"琼山区","value":"460107"},{"label":"美兰区","value":"460108"}],[{"label":"海棠区","value":"460202"},{"label":"吉阳区","value":"460203"},{"label":"天涯区","value":"460204"},{"label":"崖州区","value":"460205"}],[{"label":"西沙群岛","value":"460321"},{"label":"南沙群岛","value":"460322"},{"label":"中沙群岛的岛礁及其海域","value":"460323"}],[{"label":"儋州市","value":"460400"}],[{"label":"五指山市","value":"469001"},{"label":"琼海市","value":"469002"},{"label":"文昌市","value":"469005"},{"label":"万宁市","value":"469006"},{"label":"东方市","value":"469007"},{"label":"定安县","value":"469021"},{"label":"屯昌县","value":"469022"},{"label":"澄迈县","value":"469023"},{"label":"临高县","value":"469024"},{"label":"白沙黎族自治县","value":"469025"},{"label":"昌江黎族自治县","value":"469026"},{"label":"乐东黎族自治县","value":"469027"},{"label":"陵水黎族自治县","value":"469028"},{"label":"保亭黎族苗族自治县","value":"469029"},{"label":"琼中黎族苗族自治县","value":"469030"}]],[[{"label":"万州区","value":"500101"},{"label":"涪陵区","value":"500102"},{"label":"渝中区","value":"500103"},{"label":"大渡口区","value":"500104"},{"label":"江北区","value":"500105"},{"label":"沙坪坝区","value":"500106"},{"label":"九龙坡区","value":"500107"},{"label":"南岸区","value":"500108"},{"label":"北碚区","value":"500109"},{"label":"綦江区","value":"500110"},{"label":"大足区","value":"500111"},{"label":"渝北区","value":"500112"},{"label":"巴南区","value":"500113"},{"label":"黔江区","value":"500114"},{"label":"长寿区","value":"500115"},{"label":"江津区","value":"500116"},{"label":"合川区","value":"500117"},{"label":"永川区","value":"500118"},{"label":"南川区","value":"500119"},{"label":"璧山区","value":"500120"},{"label":"铜梁区","value":"500151"},{"label":"潼南区","value":"500152"},{"label":"荣昌区","value":"500153"},{"label":"开州区","value":"500154"},{"label":"梁平区","value":"500155"},{"label":"武隆区","value":"500156"}],[{"label":"城口县","value":"500229"},{"label":"丰都县","value":"500230"},{"label":"垫江县","value":"500231"},{"label":"忠县","value":"500233"},{"label":"云阳县","value":"500235"},{"label":"奉节县","value":"500236"},{"label":"巫山县","value":"500237"},{"label":"巫溪县","value":"500238"},{"label":"石柱土家族自治县","value":"500240"},{"label":"秀山土家族苗族自治县","value":"500241"},{"label":"酉阳土家族苗族自治县","value":"500242"},{"label":"彭水苗族土家族自治县","value":"500243"}]],[[{"label":"锦江区","value":"510104"},{"label":"青羊区","value":"510105"},{"label":"金牛区","value":"510106"},{"label":"武侯区","value":"510107"},{"label":"成华区","value":"510108"},{"label":"龙泉驿区","value":"510112"},{"label":"青白江区","value":"510113"},{"label":"新都区","value":"510114"},{"label":"温江区","value":"510115"},{"label":"双流区","value":"510116"},{"label":"郫都区","value":"510117"},{"label":"金堂县","value":"510121"},{"label":"大邑县","value":"510129"},{"label":"蒲江县","value":"510131"},{"label":"新津县","value":"510132"},{"label":"都江堰市","value":"510181"},{"label":"彭州市","value":"510182"},{"label":"邛崃市","value":"510183"},{"label":"崇州市","value":"510184"},{"label":"简阳市","value":"510185"}],[{"label":"自流井区","value":"510302"},{"label":"贡井区","value":"510303"},{"label":"大安区","value":"510304"},{"label":"沿滩区","value":"510311"},{"label":"荣县","value":"510321"},{"label":"富顺县","value":"510322"}],[{"label":"东区","value":"510402"},{"label":"西区","value":"510403"},{"label":"仁和区","value":"510411"},{"label":"米易县","value":"510421"},{"label":"盐边县","value":"510422"}],[{"label":"江阳区","value":"510502"},{"label":"纳溪区","value":"510503"},{"label":"龙马潭区","value":"510504"},{"label":"泸县","value":"510521"},{"label":"合江县","value":"510522"},{"label":"叙永县","value":"510524"},{"label":"古蔺县","value":"510525"}],[{"label":"旌阳区","value":"510603"},{"label":"罗江区","value":"510604"},{"label":"中江县","value":"510623"},{"label":"广汉市","value":"510681"},{"label":"什邡市","value":"510682"},{"label":"绵竹市","value":"510683"}],[{"label":"涪城区","value":"510703"},{"label":"游仙区","value":"510704"},{"label":"安州区","value":"510705"},{"label":"三台县","value":"510722"},{"label":"盐亭县","value":"510723"},{"label":"梓潼县","value":"510725"},{"label":"北川羌族自治县","value":"510726"},{"label":"平武县","value":"510727"},{"label":"江油市","value":"510781"}],[{"label":"利州区","value":"510802"},{"label":"昭化区","value":"510811"},{"label":"朝天区","value":"510812"},{"label":"旺苍县","value":"510821"},{"label":"青川县","value":"510822"},{"label":"剑阁县","value":"510823"},{"label":"苍溪县","value":"510824"}],[{"label":"船山区","value":"510903"},{"label":"安居区","value":"510904"},{"label":"蓬溪县","value":"510921"},{"label":"射洪县","value":"510922"},{"label":"大英县","value":"510923"}],[{"label":"市中区","value":"511002"},{"label":"东兴区","value":"511011"},{"label":"威远县","value":"511024"},{"label":"资中县","value":"511025"},{"label":"内江经济开发区","value":"511071"},{"label":"隆昌市","value":"511083"}],[{"label":"市中区","value":"511102"},{"label":"沙湾区","value":"511111"},{"label":"五通桥区","value":"511112"},{"label":"金口河区","value":"511113"},{"label":"犍为县","value":"511123"},{"label":"井研县","value":"511124"},{"label":"夹江县","value":"511126"},{"label":"沐川县","value":"511129"},{"label":"峨边彝族自治县","value":"511132"},{"label":"马边彝族自治县","value":"511133"},{"label":"峨眉山市","value":"511181"}],[{"label":"顺庆区","value":"511302"},{"label":"高坪区","value":"511303"},{"label":"嘉陵区","value":"511304"},{"label":"南部县","value":"511321"},{"label":"营山县","value":"511322"},{"label":"蓬安县","value":"511323"},{"label":"仪陇县","value":"511324"},{"label":"西充县","value":"511325"},{"label":"阆中市","value":"511381"}],[{"label":"东坡区","value":"511402"},{"label":"彭山区","value":"511403"},{"label":"仁寿县","value":"511421"},{"label":"洪雅县","value":"511423"},{"label":"丹棱县","value":"511424"},{"label":"青神县","value":"511425"}],[{"label":"翠屏区","value":"511502"},{"label":"南溪区","value":"511503"},{"label":"宜宾县","value":"511521"},{"label":"江安县","value":"511523"},{"label":"长宁县","value":"511524"},{"label":"高县","value":"511525"},{"label":"珙县","value":"511526"},{"label":"筠连县","value":"511527"},{"label":"兴文县","value":"511528"},{"label":"屏山县","value":"511529"}],[{"label":"广安区","value":"511602"},{"label":"前锋区","value":"511603"},{"label":"岳池县","value":"511621"},{"label":"武胜县","value":"511622"},{"label":"邻水县","value":"511623"},{"label":"华蓥市","value":"511681"}],[{"label":"通川区","value":"511702"},{"label":"达川区","value":"511703"},{"label":"宣汉县","value":"511722"},{"label":"开江县","value":"511723"},{"label":"大竹县","value":"511724"},{"label":"渠县","value":"511725"},{"label":"达州经济开发区","value":"511771"},{"label":"万源市","value":"511781"}],[{"label":"雨城区","value":"511802"},{"label":"名山区","value":"511803"},{"label":"荥经县","value":"511822"},{"label":"汉源县","value":"511823"},{"label":"石棉县","value":"511824"},{"label":"天全县","value":"511825"},{"label":"芦山县","value":"511826"},{"label":"宝兴县","value":"511827"}],[{"label":"巴州区","value":"511902"},{"label":"恩阳区","value":"511903"},{"label":"通江县","value":"511921"},{"label":"南江县","value":"511922"},{"label":"平昌县","value":"511923"},{"label":"巴中经济开发区","value":"511971"}],[{"label":"雁江区","value":"512002"},{"label":"安岳县","value":"512021"},{"label":"乐至县","value":"512022"}],[{"label":"马尔康市","value":"513201"},{"label":"汶川县","value":"513221"},{"label":"理县","value":"513222"},{"label":"茂县","value":"513223"},{"label":"松潘县","value":"513224"},{"label":"九寨沟县","value":"513225"},{"label":"金川县","value":"513226"},{"label":"小金县","value":"513227"},{"label":"黑水县","value":"513228"},{"label":"壤塘县","value":"513230"},{"label":"阿坝县","value":"513231"},{"label":"若尔盖县","value":"513232"},{"label":"红原县","value":"513233"}],[{"label":"康定市","value":"513301"},{"label":"泸定县","value":"513322"},{"label":"丹巴县","value":"513323"},{"label":"九龙县","value":"513324"},{"label":"雅江县","value":"513325"},{"label":"道孚县","value":"513326"},{"label":"炉霍县","value":"513327"},{"label":"甘孜县","value":"513328"},{"label":"新龙县","value":"513329"},{"label":"德格县","value":"513330"},{"label":"白玉县","value":"513331"},{"label":"石渠县","value":"513332"},{"label":"色达县","value":"513333"},{"label":"理塘县","value":"513334"},{"label":"巴塘县","value":"513335"},{"label":"乡城县","value":"513336"},{"label":"稻城县","value":"513337"},{"label":"得荣县","value":"513338"}],[{"label":"西昌市","value":"513401"},{"label":"木里藏族自治县","value":"513422"},{"label":"盐源县","value":"513423"},{"label":"德昌县","value":"513424"},{"label":"会理县","value":"513425"},{"label":"会东县","value":"513426"},{"label":"宁南县","value":"513427"},{"label":"普格县","value":"513428"},{"label":"布拖县","value":"513429"},{"label":"金阳县","value":"513430"},{"label":"昭觉县","value":"513431"},{"label":"喜德县","value":"513432"},{"label":"冕宁县","value":"513433"},{"label":"越西县","value":"513434"},{"label":"甘洛县","value":"513435"},{"label":"美姑县","value":"513436"},{"label":"雷波县","value":"513437"}]],[[{"label":"南明区","value":"520102"},{"label":"云岩区","value":"520103"},{"label":"花溪区","value":"520111"},{"label":"乌当区","value":"520112"},{"label":"白云区","value":"520113"},{"label":"观山湖区","value":"520115"},{"label":"开阳县","value":"520121"},{"label":"息烽县","value":"520122"},{"label":"修文县","value":"520123"},{"label":"清镇市","value":"520181"}],[{"label":"钟山区","value":"520201"},{"label":"六枝特区","value":"520203"},{"label":"水城县","value":"520221"},{"label":"盘州市","value":"520281"}],[{"label":"红花岗区","value":"520302"},{"label":"汇川区","value":"520303"},{"label":"播州区","value":"520304"},{"label":"桐梓县","value":"520322"},{"label":"绥阳县","value":"520323"},{"label":"正安县","value":"520324"},{"label":"道真仡佬族苗族自治县","value":"520325"},{"label":"务川仡佬族苗族自治县","value":"520326"},{"label":"凤冈县","value":"520327"},{"label":"湄潭县","value":"520328"},{"label":"余庆县","value":"520329"},{"label":"习水县","value":"520330"},{"label":"赤水市","value":"520381"},{"label":"仁怀市","value":"520382"}],[{"label":"西秀区","value":"520402"},{"label":"平坝区","value":"520403"},{"label":"普定县","value":"520422"},{"label":"镇宁布依族苗族自治县","value":"520423"},{"label":"关岭布依族苗族自治县","value":"520424"},{"label":"紫云苗族布依族自治县","value":"520425"}],[{"label":"七星关区","value":"520502"},{"label":"大方县","value":"520521"},{"label":"黔西县","value":"520522"},{"label":"金沙县","value":"520523"},{"label":"织金县","value":"520524"},{"label":"纳雍县","value":"520525"},{"label":"威宁彝族回族苗族自治县","value":"520526"},{"label":"赫章县","value":"520527"}],[{"label":"碧江区","value":"520602"},{"label":"万山区","value":"520603"},{"label":"江口县","value":"520621"},{"label":"玉屏侗族自治县","value":"520622"},{"label":"石阡县","value":"520623"},{"label":"思南县","value":"520624"},{"label":"印江土家族苗族自治县","value":"520625"},{"label":"德江县","value":"520626"},{"label":"沿河土家族自治县","value":"520627"},{"label":"松桃苗族自治县","value":"520628"}],[{"label":"兴义市","value":"522301"},{"label":"兴仁县","value":"522322"},{"label":"普安县","value":"522323"},{"label":"晴隆县","value":"522324"},{"label":"贞丰县","value":"522325"},{"label":"望谟县","value":"522326"},{"label":"册亨县","value":"522327"},{"label":"安龙县","value":"522328"}],[{"label":"凯里市","value":"522601"},{"label":"黄平县","value":"522622"},{"label":"施秉县","value":"522623"},{"label":"三穗县","value":"522624"},{"label":"镇远县","value":"522625"},{"label":"岑巩县","value":"522626"},{"label":"天柱县","value":"522627"},{"label":"锦屏县","value":"522628"},{"label":"剑河县","value":"522629"},{"label":"台江县","value":"522630"},{"label":"黎平县","value":"522631"},{"label":"榕江县","value":"522632"},{"label":"从江县","value":"522633"},{"label":"雷山县","value":"522634"},{"label":"麻江县","value":"522635"},{"label":"丹寨县","value":"522636"}],[{"label":"都匀市","value":"522701"},{"label":"福泉市","value":"522702"},{"label":"荔波县","value":"522722"},{"label":"贵定县","value":"522723"},{"label":"瓮安县","value":"522725"},{"label":"独山县","value":"522726"},{"label":"平塘县","value":"522727"},{"label":"罗甸县","value":"522728"},{"label":"长顺县","value":"522729"},{"label":"龙里县","value":"522730"},{"label":"惠水县","value":"522731"},{"label":"三都水族自治县","value":"522732"}]],[[{"label":"五华区","value":"530102"},{"label":"盘龙区","value":"530103"},{"label":"官渡区","value":"530111"},{"label":"西山区","value":"530112"},{"label":"东川区","value":"530113"},{"label":"呈贡区","value":"530114"},{"label":"晋宁区","value":"530115"},{"label":"富民县","value":"530124"},{"label":"宜良县","value":"530125"},{"label":"石林彝族自治县","value":"530126"},{"label":"嵩明县","value":"530127"},{"label":"禄劝彝族苗族自治县","value":"530128"},{"label":"寻甸回族彝族自治县","value":"530129"},{"label":"安宁市","value":"530181"}],[{"label":"麒麟区","value":"530302"},{"label":"沾益区","value":"530303"},{"label":"马龙县","value":"530321"},{"label":"陆良县","value":"530322"},{"label":"师宗县","value":"530323"},{"label":"罗平县","value":"530324"},{"label":"富源县","value":"530325"},{"label":"会泽县","value":"530326"},{"label":"宣威市","value":"530381"}],[{"label":"红塔区","value":"530402"},{"label":"江川区","value":"530403"},{"label":"澄江县","value":"530422"},{"label":"通海县","value":"530423"},{"label":"华宁县","value":"530424"},{"label":"易门县","value":"530425"},{"label":"峨山彝族自治县","value":"530426"},{"label":"新平彝族傣族自治县","value":"530427"},{"label":"元江哈尼族彝族傣族自治县","value":"530428"}],[{"label":"隆阳区","value":"530502"},{"label":"施甸县","value":"530521"},{"label":"龙陵县","value":"530523"},{"label":"昌宁县","value":"530524"},{"label":"腾冲市","value":"530581"}],[{"label":"昭阳区","value":"530602"},{"label":"鲁甸县","value":"530621"},{"label":"巧家县","value":"530622"},{"label":"盐津县","value":"530623"},{"label":"大关县","value":"530624"},{"label":"永善县","value":"530625"},{"label":"绥江县","value":"530626"},{"label":"镇雄县","value":"530627"},{"label":"彝良县","value":"530628"},{"label":"威信县","value":"530629"},{"label":"水富县","value":"530630"}],[{"label":"古城区","value":"530702"},{"label":"玉龙纳西族自治县","value":"530721"},{"label":"永胜县","value":"530722"},{"label":"华坪县","value":"530723"},{"label":"宁蒗彝族自治县","value":"530724"}],[{"label":"思茅区","value":"530802"},{"label":"宁洱哈尼族彝族自治县","value":"530821"},{"label":"墨江哈尼族自治县","value":"530822"},{"label":"景东彝族自治县","value":"530823"},{"label":"景谷傣族彝族自治县","value":"530824"},{"label":"镇沅彝族哈尼族拉祜族自治县","value":"530825"},{"label":"江城哈尼族彝族自治县","value":"530826"},{"label":"孟连傣族拉祜族佤族自治县","value":"530827"},{"label":"澜沧拉祜族自治县","value":"530828"},{"label":"西盟佤族自治县","value":"530829"}],[{"label":"临翔区","value":"530902"},{"label":"凤庆县","value":"530921"},{"label":"云县","value":"530922"},{"label":"永德县","value":"530923"},{"label":"镇康县","value":"530924"},{"label":"双江拉祜族佤族布朗族傣族自治县","value":"530925"},{"label":"耿马傣族佤族自治县","value":"530926"},{"label":"沧源佤族自治县","value":"530927"}],[{"label":"楚雄市","value":"532301"},{"label":"双柏县","value":"532322"},{"label":"牟定县","value":"532323"},{"label":"南华县","value":"532324"},{"label":"姚安县","value":"532325"},{"label":"大姚县","value":"532326"},{"label":"永仁县","value":"532327"},{"label":"元谋县","value":"532328"},{"label":"武定县","value":"532329"},{"label":"禄丰县","value":"532331"}],[{"label":"个旧市","value":"532501"},{"label":"开远市","value":"532502"},{"label":"蒙自市","value":"532503"},{"label":"弥勒市","value":"532504"},{"label":"屏边苗族自治县","value":"532523"},{"label":"建水县","value":"532524"},{"label":"石屏县","value":"532525"},{"label":"泸西县","value":"532527"},{"label":"元阳县","value":"532528"},{"label":"红河县","value":"532529"},{"label":"金平苗族瑶族傣族自治县","value":"532530"},{"label":"绿春县","value":"532531"},{"label":"河口瑶族自治县","value":"532532"}],[{"label":"文山市","value":"532601"},{"label":"砚山县","value":"532622"},{"label":"西畴县","value":"532623"},{"label":"麻栗坡县","value":"532624"},{"label":"马关县","value":"532625"},{"label":"丘北县","value":"532626"},{"label":"广南县","value":"532627"},{"label":"富宁县","value":"532628"}],[{"label":"景洪市","value":"532801"},{"label":"勐海县","value":"532822"},{"label":"勐腊县","value":"532823"}],[{"label":"大理市","value":"532901"},{"label":"漾濞彝族自治县","value":"532922"},{"label":"祥云县","value":"532923"},{"label":"宾川县","value":"532924"},{"label":"弥渡县","value":"532925"},{"label":"南涧彝族自治县","value":"532926"},{"label":"巍山彝族回族自治县","value":"532927"},{"label":"永平县","value":"532928"},{"label":"云龙县","value":"532929"},{"label":"洱源县","value":"532930"},{"label":"剑川县","value":"532931"},{"label":"鹤庆县","value":"532932"}],[{"label":"瑞丽市","value":"533102"},{"label":"芒市","value":"533103"},{"label":"梁河县","value":"533122"},{"label":"盈江县","value":"533123"},{"label":"陇川县","value":"533124"}],[{"label":"泸水市","value":"533301"},{"label":"福贡县","value":"533323"},{"label":"贡山独龙族怒族自治县","value":"533324"},{"label":"兰坪白族普米族自治县","value":"533325"}],[{"label":"香格里拉市","value":"533401"},{"label":"德钦县","value":"533422"},{"label":"维西傈僳族自治县","value":"533423"}]],[[{"label":"城关区","value":"540102"},{"label":"堆龙德庆区","value":"540103"},{"label":"林周县","value":"540121"},{"label":"当雄县","value":"540122"},{"label":"尼木县","value":"540123"},{"label":"曲水县","value":"540124"},{"label":"达孜县","value":"540126"},{"label":"墨竹工卡县","value":"540127"},{"label":"格尔木藏青工业园区","value":"540171"},{"label":"拉萨经济技术开发区","value":"540172"},{"label":"西藏文化旅游创意园区","value":"540173"},{"label":"达孜工业园区","value":"540174"}],[{"label":"桑珠孜区","value":"540202"},{"label":"南木林县","value":"540221"},{"label":"江孜县","value":"540222"},{"label":"定日县","value":"540223"},{"label":"萨迦县","value":"540224"},{"label":"拉孜县","value":"540225"},{"label":"昂仁县","value":"540226"},{"label":"谢通门县","value":"540227"},{"label":"白朗县","value":"540228"},{"label":"仁布县","value":"540229"},{"label":"康马县","value":"540230"},{"label":"定结县","value":"540231"},{"label":"仲巴县","value":"540232"},{"label":"亚东县","value":"540233"},{"label":"吉隆县","value":"540234"},{"label":"聂拉木县","value":"540235"},{"label":"萨嘎县","value":"540236"},{"label":"岗巴县","value":"540237"}],[{"label":"卡若区","value":"540302"},{"label":"江达县","value":"540321"},{"label":"贡觉县","value":"540322"},{"label":"类乌齐县","value":"540323"},{"label":"丁青县","value":"540324"},{"label":"察雅县","value":"540325"},{"label":"八宿县","value":"540326"},{"label":"左贡县","value":"540327"},{"label":"芒康县","value":"540328"},{"label":"洛隆县","value":"540329"},{"label":"边坝县","value":"540330"}],[{"label":"巴宜区","value":"540402"},{"label":"工布江达县","value":"540421"},{"label":"米林县","value":"540422"},{"label":"墨脱县","value":"540423"},{"label":"波密县","value":"540424"},{"label":"察隅县","value":"540425"},{"label":"朗县","value":"540426"}],[{"label":"乃东区","value":"540502"},{"label":"扎囊县","value":"540521"},{"label":"贡嘎县","value":"540522"},{"label":"桑日县","value":"540523"},{"label":"琼结县","value":"540524"},{"label":"曲松县","value":"540525"},{"label":"措美县","value":"540526"},{"label":"洛扎县","value":"540527"},{"label":"加查县","value":"540528"},{"label":"隆子县","value":"540529"},{"label":"错那县","value":"540530"},{"label":"浪卡子县","value":"540531"}],[{"label":"那曲县","value":"542421"},{"label":"嘉黎县","value":"542422"},{"label":"比如县","value":"542423"},{"label":"聂荣县","value":"542424"},{"label":"安多县","value":"542425"},{"label":"申扎县","value":"542426"},{"label":"索县","value":"542427"},{"label":"班戈县","value":"542428"},{"label":"巴青县","value":"542429"},{"label":"尼玛县","value":"542430"},{"label":"双湖县","value":"542431"}],[{"label":"普兰县","value":"542521"},{"label":"札达县","value":"542522"},{"label":"噶尔县","value":"542523"},{"label":"日土县","value":"542524"},{"label":"革吉县","value":"542525"},{"label":"改则县","value":"542526"},{"label":"措勤县","value":"542527"}]],[[{"label":"新城区","value":"610102"},{"label":"碑林区","value":"610103"},{"label":"莲湖区","value":"610104"},{"label":"灞桥区","value":"610111"},{"label":"未央区","value":"610112"},{"label":"雁塔区","value":"610113"},{"label":"阎良区","value":"610114"},{"label":"临潼区","value":"610115"},{"label":"长安区","value":"610116"},{"label":"高陵区","value":"610117"},{"label":"鄠邑区","value":"610118"},{"label":"蓝田县","value":"610122"},{"label":"周至县","value":"610124"}],[{"label":"王益区","value":"610202"},{"label":"印台区","value":"610203"},{"label":"耀州区","value":"610204"},{"label":"宜君县","value":"610222"}],[{"label":"渭滨区","value":"610302"},{"label":"金台区","value":"610303"},{"label":"陈仓区","value":"610304"},{"label":"凤翔县","value":"610322"},{"label":"岐山县","value":"610323"},{"label":"扶风县","value":"610324"},{"label":"眉县","value":"610326"},{"label":"陇县","value":"610327"},{"label":"千阳县","value":"610328"},{"label":"麟游县","value":"610329"},{"label":"凤县","value":"610330"},{"label":"太白县","value":"610331"}],[{"label":"秦都区","value":"610402"},{"label":"杨陵区","value":"610403"},{"label":"渭城区","value":"610404"},{"label":"三原县","value":"610422"},{"label":"泾阳县","value":"610423"},{"label":"乾县","value":"610424"},{"label":"礼泉县","value":"610425"},{"label":"永寿县","value":"610426"},{"label":"彬县","value":"610427"},{"label":"长武县","value":"610428"},{"label":"旬邑县","value":"610429"},{"label":"淳化县","value":"610430"},{"label":"武功县","value":"610431"},{"label":"兴平市","value":"610481"}],[{"label":"临渭区","value":"610502"},{"label":"华州区","value":"610503"},{"label":"潼关县","value":"610522"},{"label":"大荔县","value":"610523"},{"label":"合阳县","value":"610524"},{"label":"澄城县","value":"610525"},{"label":"蒲城县","value":"610526"},{"label":"白水县","value":"610527"},{"label":"富平县","value":"610528"},{"label":"韩城市","value":"610581"},{"label":"华阴市","value":"610582"}],[{"label":"宝塔区","value":"610602"},{"label":"安塞区","value":"610603"},{"label":"延长县","value":"610621"},{"label":"延川县","value":"610622"},{"label":"子长县","value":"610623"},{"label":"志丹县","value":"610625"},{"label":"吴起县","value":"610626"},{"label":"甘泉县","value":"610627"},{"label":"富县","value":"610628"},{"label":"洛川县","value":"610629"},{"label":"宜川县","value":"610630"},{"label":"黄龙县","value":"610631"},{"label":"黄陵县","value":"610632"}],[{"label":"汉台区","value":"610702"},{"label":"南郑区","value":"610703"},{"label":"城固县","value":"610722"},{"label":"洋县","value":"610723"},{"label":"西乡县","value":"610724"},{"label":"勉县","value":"610725"},{"label":"宁强县","value":"610726"},{"label":"略阳县","value":"610727"},{"label":"镇巴县","value":"610728"},{"label":"留坝县","value":"610729"},{"label":"佛坪县","value":"610730"}],[{"label":"榆阳区","value":"610802"},{"label":"横山区","value":"610803"},{"label":"府谷县","value":"610822"},{"label":"靖边县","value":"610824"},{"label":"定边县","value":"610825"},{"label":"绥德县","value":"610826"},{"label":"米脂县","value":"610827"},{"label":"佳县","value":"610828"},{"label":"吴堡县","value":"610829"},{"label":"清涧县","value":"610830"},{"label":"子洲县","value":"610831"},{"label":"神木市","value":"610881"}],[{"label":"汉滨区","value":"610902"},{"label":"汉阴县","value":"610921"},{"label":"石泉县","value":"610922"},{"label":"宁陕县","value":"610923"},{"label":"紫阳县","value":"610924"},{"label":"岚皋县","value":"610925"},{"label":"平利县","value":"610926"},{"label":"镇坪县","value":"610927"},{"label":"旬阳县","value":"610928"},{"label":"白河县","value":"610929"}],[{"label":"商州区","value":"611002"},{"label":"洛南县","value":"611021"},{"label":"丹凤县","value":"611022"},{"label":"商南县","value":"611023"},{"label":"山阳县","value":"611024"},{"label":"镇安县","value":"611025"},{"label":"柞水县","value":"611026"}]],[[{"label":"城关区","value":"620102"},{"label":"七里河区","value":"620103"},{"label":"西固区","value":"620104"},{"label":"安宁区","value":"620105"},{"label":"红古区","value":"620111"},{"label":"永登县","value":"620121"},{"label":"皋兰县","value":"620122"},{"label":"榆中县","value":"620123"},{"label":"兰州新区","value":"620171"}],[{"label":"嘉峪关市","value":"620201"}],[{"label":"金川区","value":"620302"},{"label":"永昌县","value":"620321"}],[{"label":"白银区","value":"620402"},{"label":"平川区","value":"620403"},{"label":"靖远县","value":"620421"},{"label":"会宁县","value":"620422"},{"label":"景泰县","value":"620423"}],[{"label":"秦州区","value":"620502"},{"label":"麦积区","value":"620503"},{"label":"清水县","value":"620521"},{"label":"秦安县","value":"620522"},{"label":"甘谷县","value":"620523"},{"label":"武山县","value":"620524"},{"label":"张家川回族自治县","value":"620525"}],[{"label":"凉州区","value":"620602"},{"label":"民勤县","value":"620621"},{"label":"古浪县","value":"620622"},{"label":"天祝藏族自治县","value":"620623"}],[{"label":"甘州区","value":"620702"},{"label":"肃南裕固族自治县","value":"620721"},{"label":"民乐县","value":"620722"},{"label":"临泽县","value":"620723"},{"label":"高台县","value":"620724"},{"label":"山丹县","value":"620725"}],[{"label":"崆峒区","value":"620802"},{"label":"泾川县","value":"620821"},{"label":"灵台县","value":"620822"},{"label":"崇信县","value":"620823"},{"label":"华亭县","value":"620824"},{"label":"庄浪县","value":"620825"},{"label":"静宁县","value":"620826"},{"label":"平凉工业园区","value":"620871"}],[{"label":"肃州区","value":"620902"},{"label":"金塔县","value":"620921"},{"label":"瓜州县","value":"620922"},{"label":"肃北蒙古族自治县","value":"620923"},{"label":"阿克塞哈萨克族自治县","value":"620924"},{"label":"玉门市","value":"620981"},{"label":"敦煌市","value":"620982"}],[{"label":"西峰区","value":"621002"},{"label":"庆城县","value":"621021"},{"label":"环县","value":"621022"},{"label":"华池县","value":"621023"},{"label":"合水县","value":"621024"},{"label":"正宁县","value":"621025"},{"label":"宁县","value":"621026"},{"label":"镇原县","value":"621027"}],[{"label":"安定区","value":"621102"},{"label":"通渭县","value":"621121"},{"label":"陇西县","value":"621122"},{"label":"渭源县","value":"621123"},{"label":"临洮县","value":"621124"},{"label":"漳县","value":"621125"},{"label":"岷县","value":"621126"}],[{"label":"武都区","value":"621202"},{"label":"成县","value":"621221"},{"label":"文县","value":"621222"},{"label":"宕昌县","value":"621223"},{"label":"康县","value":"621224"},{"label":"西和县","value":"621225"},{"label":"礼县","value":"621226"},{"label":"徽县","value":"621227"},{"label":"两当县","value":"621228"}],[{"label":"临夏市","value":"622901"},{"label":"临夏县","value":"622921"},{"label":"康乐县","value":"622922"},{"label":"永靖县","value":"622923"},{"label":"广河县","value":"622924"},{"label":"和政县","value":"622925"},{"label":"东乡族自治县","value":"622926"},{"label":"积石山保安族东乡族撒拉族自治县","value":"622927"}],[{"label":"合作市","value":"623001"},{"label":"临潭县","value":"623021"},{"label":"卓尼县","value":"623022"},{"label":"舟曲县","value":"623023"},{"label":"迭部县","value":"623024"},{"label":"玛曲县","value":"623025"},{"label":"碌曲县","value":"623026"},{"label":"夏河县","value":"623027"}]],[[{"label":"城东区","value":"630102"},{"label":"城中区","value":"630103"},{"label":"城西区","value":"630104"},{"label":"城北区","value":"630105"},{"label":"大通回族土族自治县","value":"630121"},{"label":"湟中县","value":"630122"},{"label":"湟源县","value":"630123"}],[{"label":"乐都区","value":"630202"},{"label":"平安区","value":"630203"},{"label":"民和回族土族自治县","value":"630222"},{"label":"互助土族自治县","value":"630223"},{"label":"化隆回族自治县","value":"630224"},{"label":"循化撒拉族自治县","value":"630225"}],[{"label":"门源回族自治县","value":"632221"},{"label":"祁连县","value":"632222"},{"label":"海晏县","value":"632223"},{"label":"刚察县","value":"632224"}],[{"label":"同仁县","value":"632321"},{"label":"尖扎县","value":"632322"},{"label":"泽库县","value":"632323"},{"label":"河南蒙古族自治县","value":"632324"}],[{"label":"共和县","value":"632521"},{"label":"同德县","value":"632522"},{"label":"贵德县","value":"632523"},{"label":"兴海县","value":"632524"},{"label":"贵南县","value":"632525"}],[{"label":"玛沁县","value":"632621"},{"label":"班玛县","value":"632622"},{"label":"甘德县","value":"632623"},{"label":"达日县","value":"632624"},{"label":"久治县","value":"632625"},{"label":"玛多县","value":"632626"}],[{"label":"玉树市","value":"632701"},{"label":"杂多县","value":"632722"},{"label":"称多县","value":"632723"},{"label":"治多县","value":"632724"},{"label":"囊谦县","value":"632725"},{"label":"曲麻莱县","value":"632726"}],[{"label":"格尔木市","value":"632801"},{"label":"德令哈市","value":"632802"},{"label":"乌兰县","value":"632821"},{"label":"都兰县","value":"632822"},{"label":"天峻县","value":"632823"},{"label":"大柴旦行政委员会","value":"632857"},{"label":"冷湖行政委员会","value":"632858"},{"label":"茫崖行政委员会","value":"632859"}]],[[{"label":"兴庆区","value":"640104"},{"label":"西夏区","value":"640105"},{"label":"金凤区","value":"640106"},{"label":"永宁县","value":"640121"},{"label":"贺兰县","value":"640122"},{"label":"灵武市","value":"640181"}],[{"label":"大武口区","value":"640202"},{"label":"惠农区","value":"640205"},{"label":"平罗县","value":"640221"}],[{"label":"利通区","value":"640302"},{"label":"红寺堡区","value":"640303"},{"label":"盐池县","value":"640323"},{"label":"同心县","value":"640324"},{"label":"青铜峡市","value":"640381"}],[{"label":"原州区","value":"640402"},{"label":"西吉县","value":"640422"},{"label":"隆德县","value":"640423"},{"label":"泾源县","value":"640424"},{"label":"彭阳县","value":"640425"}],[{"label":"沙坡头区","value":"640502"},{"label":"中宁县","value":"640521"},{"label":"海原县","value":"640522"}]],[[{"label":"天山区","value":"650102"},{"label":"沙依巴克区","value":"650103"},{"label":"新市区","value":"650104"},{"label":"水磨沟区","value":"650105"},{"label":"头屯河区","value":"650106"},{"label":"达坂城区","value":"650107"},{"label":"米东区","value":"650109"},{"label":"乌鲁木齐县","value":"650121"},{"label":"乌鲁木齐经济技术开发区","value":"650171"},{"label":"乌鲁木齐高新技术产业开发区","value":"650172"}],[{"label":"独山子区","value":"650202"},{"label":"克拉玛依区","value":"650203"},{"label":"白碱滩区","value":"650204"},{"label":"乌尔禾区","value":"650205"}],[{"label":"高昌区","value":"650402"},{"label":"鄯善县","value":"650421"},{"label":"托克逊县","value":"650422"}],[{"label":"伊州区","value":"650502"},{"label":"巴里坤哈萨克自治县","value":"650521"},{"label":"伊吾县","value":"650522"}],[{"label":"昌吉市","value":"652301"},{"label":"阜康市","value":"652302"},{"label":"呼图壁县","value":"652323"},{"label":"玛纳斯县","value":"652324"},{"label":"奇台县","value":"652325"},{"label":"吉木萨尔县","value":"652327"},{"label":"木垒哈萨克自治县","value":"652328"}],[{"label":"博乐市","value":"652701"},{"label":"阿拉山口市","value":"652702"},{"label":"精河县","value":"652722"},{"label":"温泉县","value":"652723"}],[{"label":"库尔勒市","value":"652801"},{"label":"轮台县","value":"652822"},{"label":"尉犁县","value":"652823"},{"label":"若羌县","value":"652824"},{"label":"且末县","value":"652825"},{"label":"焉耆回族自治县","value":"652826"},{"label":"和静县","value":"652827"},{"label":"和硕县","value":"652828"},{"label":"博湖县","value":"652829"},{"label":"库尔勒经济技术开发区","value":"652871"}],[{"label":"阿克苏市","value":"652901"},{"label":"温宿县","value":"652922"},{"label":"库车县","value":"652923"},{"label":"沙雅县","value":"652924"},{"label":"新和县","value":"652925"},{"label":"拜城县","value":"652926"},{"label":"乌什县","value":"652927"},{"label":"阿瓦提县","value":"652928"},{"label":"柯坪县","value":"652929"}],[{"label":"阿图什市","value":"653001"},{"label":"阿克陶县","value":"653022"},{"label":"阿合奇县","value":"653023"},{"label":"乌恰县","value":"653024"}],[{"label":"喀什市","value":"653101"},{"label":"疏附县","value":"653121"},{"label":"疏勒县","value":"653122"},{"label":"英吉沙县","value":"653123"},{"label":"泽普县","value":"653124"},{"label":"莎车县","value":"653125"},{"label":"叶城县","value":"653126"},{"label":"麦盖提县","value":"653127"},{"label":"岳普湖县","value":"653128"},{"label":"伽师县","value":"653129"},{"label":"巴楚县","value":"653130"},{"label":"塔什库尔干塔吉克自治县","value":"653131"}],[{"label":"和田市","value":"653201"},{"label":"和田县","value":"653221"},{"label":"墨玉县","value":"653222"},{"label":"皮山县","value":"653223"},{"label":"洛浦县","value":"653224"},{"label":"策勒县","value":"653225"},{"label":"于田县","value":"653226"},{"label":"民丰县","value":"653227"}],[{"label":"伊宁市","value":"654002"},{"label":"奎屯市","value":"654003"},{"label":"霍尔果斯市","value":"654004"},{"label":"伊宁县","value":"654021"},{"label":"察布查尔锡伯自治县","value":"654022"},{"label":"霍城县","value":"654023"},{"label":"巩留县","value":"654024"},{"label":"新源县","value":"654025"},{"label":"昭苏县","value":"654026"},{"label":"特克斯县","value":"654027"},{"label":"尼勒克县","value":"654028"}],[{"label":"塔城市","value":"654201"},{"label":"乌苏市","value":"654202"},{"label":"额敏县","value":"654221"},{"label":"沙湾县","value":"654223"},{"label":"托里县","value":"654224"},{"label":"裕民县","value":"654225"},{"label":"和布克赛尔蒙古自治县","value":"654226"}],[{"label":"阿勒泰市","value":"654301"},{"label":"布尔津县","value":"654321"},{"label":"富蕴县","value":"654322"},{"label":"福海县","value":"654323"},{"label":"哈巴河县","value":"654324"},{"label":"青河县","value":"654325"},{"label":"吉木乃县","value":"654326"}],[{"label":"石河子市","value":"659001"},{"label":"阿拉尔市","value":"659002"},{"label":"图木舒克市","value":"659003"},{"label":"五家渠市","value":"659004"},{"label":"铁门关市","value":"659006"}]],[[{"label":"台北","value":"660101"}],[{"label":"高雄","value":"660201"}],[{"label":"基隆","value":"660301"}],[{"label":"台中","value":"660401"}],[{"label":"台南","value":"660501"}],[{"label":"新竹","value":"660601"}],[{"label":"嘉义","value":"660701"}],[{"label":"宜兰","value":"660801"}],[{"label":"桃园","value":"660901"}],[{"label":"苗栗","value":"661001"}],[{"label":"彰化","value":"661101"}],[{"label":"南投","value":"661201"}],[{"label":"云林","value":"661301"}],[{"label":"屏东","value":"661401"}],[{"label":"台东","value":"661501"}],[{"label":"花莲","value":"661601"}],[{"label":"澎湖","value":"661701"}]],[[{"label":"香港岛","value":"670101"}],[{"label":"九龙","value":"670201"}],[{"label":"新界","value":"670301"}]],[[{"label":"澳门半岛","value":"680101"}],[{"label":"氹仔岛","value":"680201"}],[{"label":"路环岛","value":"680301"}],[{"label":"路氹城","value":"680401"}]]]; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/static/city.ts b/uni_modules/UniDevTools/src/tmui/tool/static/city.ts new file mode 100644 index 0000000..289176f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/static/city.ts @@ -0,0 +1 @@ +export var cityData= [[{"label":"市辖区","value":"1101"}],[{"label":"市辖区","value":"1201"}],[{"label":"石家庄市","value":"1301"},{"label":"唐山市","value":"1302"},{"label":"秦皇岛市","value":"1303"},{"label":"邯郸市","value":"1304"},{"label":"邢台市","value":"1305"},{"label":"保定市","value":"1306"},{"label":"张家口市","value":"1307"},{"label":"承德市","value":"1308"},{"label":"沧州市","value":"1309"},{"label":"廊坊市","value":"1310"},{"label":"衡水市","value":"1311"}],[{"label":"太原市","value":"1401"},{"label":"大同市","value":"1402"},{"label":"阳泉市","value":"1403"},{"label":"长治市","value":"1404"},{"label":"晋城市","value":"1405"},{"label":"朔州市","value":"1406"},{"label":"晋中市","value":"1407"},{"label":"运城市","value":"1408"},{"label":"忻州市","value":"1409"},{"label":"临汾市","value":"1410"},{"label":"吕梁市","value":"1411"}],[{"label":"呼和浩特市","value":"1501"},{"label":"包头市","value":"1502"},{"label":"乌海市","value":"1503"},{"label":"赤峰市","value":"1504"},{"label":"通辽市","value":"1505"},{"label":"鄂尔多斯市","value":"1506"},{"label":"呼伦贝尔市","value":"1507"},{"label":"巴彦淖尔市","value":"1508"},{"label":"乌兰察布市","value":"1509"},{"label":"兴安盟","value":"1522"},{"label":"锡林郭勒盟","value":"1525"},{"label":"阿拉善盟","value":"1529"}],[{"label":"沈阳市","value":"2101"},{"label":"大连市","value":"2102"},{"label":"鞍山市","value":"2103"},{"label":"抚顺市","value":"2104"},{"label":"本溪市","value":"2105"},{"label":"丹东市","value":"2106"},{"label":"锦州市","value":"2107"},{"label":"营口市","value":"2108"},{"label":"阜新市","value":"2109"},{"label":"辽阳市","value":"2110"},{"label":"盘锦市","value":"2111"},{"label":"铁岭市","value":"2112"},{"label":"朝阳市","value":"2113"},{"label":"葫芦岛市","value":"2114"}],[{"label":"长春市","value":"2201"},{"label":"吉林市","value":"2202"},{"label":"四平市","value":"2203"},{"label":"辽源市","value":"2204"},{"label":"通化市","value":"2205"},{"label":"白山市","value":"2206"},{"label":"松原市","value":"2207"},{"label":"白城市","value":"2208"},{"label":"延边朝鲜族自治州","value":"2224"}],[{"label":"哈尔滨市","value":"2301"},{"label":"齐齐哈尔市","value":"2302"},{"label":"鸡西市","value":"2303"},{"label":"鹤岗市","value":"2304"},{"label":"双鸭山市","value":"2305"},{"label":"大庆市","value":"2306"},{"label":"伊春市","value":"2307"},{"label":"佳木斯市","value":"2308"},{"label":"七台河市","value":"2309"},{"label":"牡丹江市","value":"2310"},{"label":"黑河市","value":"2311"},{"label":"绥化市","value":"2312"},{"label":"大兴安岭地区","value":"2327"}],[{"label":"市辖区","value":"3101"}],[{"label":"南京市","value":"3201"},{"label":"无锡市","value":"3202"},{"label":"徐州市","value":"3203"},{"label":"常州市","value":"3204"},{"label":"苏州市","value":"3205"},{"label":"南通市","value":"3206"},{"label":"连云港市","value":"3207"},{"label":"淮安市","value":"3208"},{"label":"盐城市","value":"3209"},{"label":"扬州市","value":"3210"},{"label":"镇江市","value":"3211"},{"label":"泰州市","value":"3212"},{"label":"宿迁市","value":"3213"}],[{"label":"杭州市","value":"3301"},{"label":"宁波市","value":"3302"},{"label":"温州市","value":"3303"},{"label":"嘉兴市","value":"3304"},{"label":"湖州市","value":"3305"},{"label":"绍兴市","value":"3306"},{"label":"金华市","value":"3307"},{"label":"衢州市","value":"3308"},{"label":"舟山市","value":"3309"},{"label":"台州市","value":"3310"},{"label":"丽水市","value":"3311"}],[{"label":"合肥市","value":"3401"},{"label":"芜湖市","value":"3402"},{"label":"蚌埠市","value":"3403"},{"label":"淮南市","value":"3404"},{"label":"马鞍山市","value":"3405"},{"label":"淮北市","value":"3406"},{"label":"铜陵市","value":"3407"},{"label":"安庆市","value":"3408"},{"label":"黄山市","value":"3410"},{"label":"滁州市","value":"3411"},{"label":"阜阳市","value":"3412"},{"label":"宿州市","value":"3413"},{"label":"六安市","value":"3415"},{"label":"亳州市","value":"3416"},{"label":"池州市","value":"3417"},{"label":"宣城市","value":"3418"}],[{"label":"福州市","value":"3501"},{"label":"厦门市","value":"3502"},{"label":"莆田市","value":"3503"},{"label":"三明市","value":"3504"},{"label":"泉州市","value":"3505"},{"label":"漳州市","value":"3506"},{"label":"南平市","value":"3507"},{"label":"龙岩市","value":"3508"},{"label":"宁德市","value":"3509"}],[{"label":"南昌市","value":"3601"},{"label":"景德镇市","value":"3602"},{"label":"萍乡市","value":"3603"},{"label":"九江市","value":"3604"},{"label":"新余市","value":"3605"},{"label":"鹰潭市","value":"3606"},{"label":"赣州市","value":"3607"},{"label":"吉安市","value":"3608"},{"label":"宜春市","value":"3609"},{"label":"抚州市","value":"3610"},{"label":"上饶市","value":"3611"}],[{"label":"济南市","value":"3701"},{"label":"青岛市","value":"3702"},{"label":"淄博市","value":"3703"},{"label":"枣庄市","value":"3704"},{"label":"东营市","value":"3705"},{"label":"烟台市","value":"3706"},{"label":"潍坊市","value":"3707"},{"label":"济宁市","value":"3708"},{"label":"泰安市","value":"3709"},{"label":"威海市","value":"3710"},{"label":"日照市","value":"3711"},{"label":"莱芜市","value":"3712"},{"label":"临沂市","value":"3713"},{"label":"德州市","value":"3714"},{"label":"聊城市","value":"3715"},{"label":"滨州市","value":"3716"},{"label":"菏泽市","value":"3717"}],[{"label":"郑州市","value":"4101"},{"label":"开封市","value":"4102"},{"label":"洛阳市","value":"4103"},{"label":"平顶山市","value":"4104"},{"label":"安阳市","value":"4105"},{"label":"鹤壁市","value":"4106"},{"label":"新乡市","value":"4107"},{"label":"焦作市","value":"4108"},{"label":"濮阳市","value":"4109"},{"label":"许昌市","value":"4110"},{"label":"漯河市","value":"4111"},{"label":"三门峡市","value":"4112"},{"label":"南阳市","value":"4113"},{"label":"商丘市","value":"4114"},{"label":"信阳市","value":"4115"},{"label":"周口市","value":"4116"},{"label":"驻马店市","value":"4117"},{"label":"省直辖县级行政区划","value":"4190"}],[{"label":"武汉市","value":"4201"},{"label":"黄石市","value":"4202"},{"label":"十堰市","value":"4203"},{"label":"宜昌市","value":"4205"},{"label":"襄阳市","value":"4206"},{"label":"鄂州市","value":"4207"},{"label":"荆门市","value":"4208"},{"label":"孝感市","value":"4209"},{"label":"荆州市","value":"4210"},{"label":"黄冈市","value":"4211"},{"label":"咸宁市","value":"4212"},{"label":"随州市","value":"4213"},{"label":"恩施土家族苗族自治州","value":"4228"},{"label":"省直辖县级行政区划","value":"4290"}],[{"label":"长沙市","value":"4301"},{"label":"株洲市","value":"4302"},{"label":"湘潭市","value":"4303"},{"label":"衡阳市","value":"4304"},{"label":"邵阳市","value":"4305"},{"label":"岳阳市","value":"4306"},{"label":"常德市","value":"4307"},{"label":"张家界市","value":"4308"},{"label":"益阳市","value":"4309"},{"label":"郴州市","value":"4310"},{"label":"永州市","value":"4311"},{"label":"怀化市","value":"4312"},{"label":"娄底市","value":"4313"},{"label":"湘西土家族苗族自治州","value":"4331"}],[{"label":"广州市","value":"4401"},{"label":"韶关市","value":"4402"},{"label":"深圳市","value":"4403"},{"label":"珠海市","value":"4404"},{"label":"汕头市","value":"4405"},{"label":"佛山市","value":"4406"},{"label":"江门市","value":"4407"},{"label":"湛江市","value":"4408"},{"label":"茂名市","value":"4409"},{"label":"肇庆市","value":"4412"},{"label":"惠州市","value":"4413"},{"label":"梅州市","value":"4414"},{"label":"汕尾市","value":"4415"},{"label":"河源市","value":"4416"},{"label":"阳江市","value":"4417"},{"label":"清远市","value":"4418"},{"label":"东莞市","value":"4419"},{"label":"中山市","value":"4420"},{"label":"潮州市","value":"4451"},{"label":"揭阳市","value":"4452"},{"label":"云浮市","value":"4453"}],[{"label":"南宁市","value":"4501"},{"label":"柳州市","value":"4502"},{"label":"桂林市","value":"4503"},{"label":"梧州市","value":"4504"},{"label":"北海市","value":"4505"},{"label":"防城港市","value":"4506"},{"label":"钦州市","value":"4507"},{"label":"贵港市","value":"4508"},{"label":"玉林市","value":"4509"},{"label":"百色市","value":"4510"},{"label":"贺州市","value":"4511"},{"label":"河池市","value":"4512"},{"label":"来宾市","value":"4513"},{"label":"崇左市","value":"4514"}],[{"label":"海口市","value":"4601"},{"label":"三亚市","value":"4602"},{"label":"三沙市","value":"4603"},{"label":"儋州市","value":"4604"},{"label":"省直辖县级行政区划","value":"4690"}],[{"label":"市辖区","value":"5001"},{"label":"县","value":"5002"}],[{"label":"成都市","value":"5101"},{"label":"自贡市","value":"5103"},{"label":"攀枝花市","value":"5104"},{"label":"泸州市","value":"5105"},{"label":"德阳市","value":"5106"},{"label":"绵阳市","value":"5107"},{"label":"广元市","value":"5108"},{"label":"遂宁市","value":"5109"},{"label":"内江市","value":"5110"},{"label":"乐山市","value":"5111"},{"label":"南充市","value":"5113"},{"label":"眉山市","value":"5114"},{"label":"宜宾市","value":"5115"},{"label":"广安市","value":"5116"},{"label":"达州市","value":"5117"},{"label":"雅安市","value":"5118"},{"label":"巴中市","value":"5119"},{"label":"资阳市","value":"5120"},{"label":"阿坝藏族羌族自治州","value":"5132"},{"label":"甘孜藏族自治州","value":"5133"},{"label":"凉山彝族自治州","value":"5134"}],[{"label":"贵阳市","value":"5201"},{"label":"六盘水市","value":"5202"},{"label":"遵义市","value":"5203"},{"label":"安顺市","value":"5204"},{"label":"毕节市","value":"5205"},{"label":"铜仁市","value":"5206"},{"label":"黔西南布依族苗族自治州","value":"5223"},{"label":"黔东南苗族侗族自治州","value":"5226"},{"label":"黔南布依族苗族自治州","value":"5227"}],[{"label":"昆明市","value":"5301"},{"label":"曲靖市","value":"5303"},{"label":"玉溪市","value":"5304"},{"label":"保山市","value":"5305"},{"label":"昭通市","value":"5306"},{"label":"丽江市","value":"5307"},{"label":"普洱市","value":"5308"},{"label":"临沧市","value":"5309"},{"label":"楚雄彝族自治州","value":"5323"},{"label":"红河哈尼族彝族自治州","value":"5325"},{"label":"文山壮族苗族自治州","value":"5326"},{"label":"西双版纳傣族自治州","value":"5328"},{"label":"大理白族自治州","value":"5329"},{"label":"德宏傣族景颇族自治州","value":"5331"},{"label":"怒江傈僳族自治州","value":"5333"},{"label":"迪庆藏族自治州","value":"5334"}],[{"label":"拉萨市","value":"5401"},{"label":"日喀则市","value":"5402"},{"label":"昌都市","value":"5403"},{"label":"林芝市","value":"5404"},{"label":"山南市","value":"5405"},{"label":"那曲地区","value":"5424"},{"label":"阿里地区","value":"5425"}],[{"label":"西安市","value":"6101"},{"label":"铜川市","value":"6102"},{"label":"宝鸡市","value":"6103"},{"label":"咸阳市","value":"6104"},{"label":"渭南市","value":"6105"},{"label":"延安市","value":"6106"},{"label":"汉中市","value":"6107"},{"label":"榆林市","value":"6108"},{"label":"安康市","value":"6109"},{"label":"商洛市","value":"6110"}],[{"label":"兰州市","value":"6201"},{"label":"嘉峪关市","value":"6202"},{"label":"金昌市","value":"6203"},{"label":"白银市","value":"6204"},{"label":"天水市","value":"6205"},{"label":"武威市","value":"6206"},{"label":"张掖市","value":"6207"},{"label":"平凉市","value":"6208"},{"label":"酒泉市","value":"6209"},{"label":"庆阳市","value":"6210"},{"label":"定西市","value":"6211"},{"label":"陇南市","value":"6212"},{"label":"临夏回族自治州","value":"6229"},{"label":"甘南藏族自治州","value":"6230"}],[{"label":"西宁市","value":"6301"},{"label":"海东市","value":"6302"},{"label":"海北藏族自治州","value":"6322"},{"label":"黄南藏族自治州","value":"6323"},{"label":"海南藏族自治州","value":"6325"},{"label":"果洛藏族自治州","value":"6326"},{"label":"玉树藏族自治州","value":"6327"},{"label":"海西蒙古族藏族自治州","value":"6328"}],[{"label":"银川市","value":"6401"},{"label":"石嘴山市","value":"6402"},{"label":"吴忠市","value":"6403"},{"label":"固原市","value":"6404"},{"label":"中卫市","value":"6405"}],[{"label":"乌鲁木齐市","value":"6501"},{"label":"克拉玛依市","value":"6502"},{"label":"吐鲁番市","value":"6504"},{"label":"哈密市","value":"6505"},{"label":"昌吉回族自治州","value":"6523"},{"label":"博尔塔拉蒙古自治州","value":"6527"},{"label":"巴音郭楞蒙古自治州","value":"6528"},{"label":"阿克苏地区","value":"6529"},{"label":"克孜勒苏柯尔克孜自治州","value":"6530"},{"label":"喀什地区","value":"6531"},{"label":"和田地区","value":"6532"},{"label":"伊犁哈萨克自治州","value":"6540"},{"label":"塔城地区","value":"6542"},{"label":"阿勒泰地区","value":"6543"},{"label":"自治区直辖县级行政区划","value":"6590"}],[{"label":"台北","value":"6601"},{"label":"高雄","value":"6602"},{"label":"基隆","value":"6603"},{"label":"台中","value":"6604"},{"label":"台南","value":"6605"},{"label":"新竹","value":"6606"},{"label":"嘉义","value":"6607"},{"label":"宜兰","value":"6608"},{"label":"桃园","value":"6609"},{"label":"苗栗","value":"6610"},{"label":"彰化","value":"6611"},{"label":"南投","value":"6612"},{"label":"云林","value":"6613"},{"label":"屏东","value":"6614"},{"label":"台东","value":"6615"},{"label":"花莲","value":"6616"},{"label":"澎湖","value":"6617"}],[{"label":"香港岛","value":"6701"},{"label":"九龙","value":"6702"},{"label":"新界","value":"6703"}],[{"label":"澳门半岛","value":"6801"},{"label":"氹仔岛","value":"6802"},{"label":"路环岛","value":"6803"},{"label":"路氹城","value":"6804"}]]; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/static/province.ts b/uni_modules/UniDevTools/src/tmui/tool/static/province.ts new file mode 100644 index 0000000..334b1df --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/static/province.ts @@ -0,0 +1 @@ +export var provinceData=[{"label":"北京市","value":"11"},{"label":"天津市","value":"12"},{"label":"河北省","value":"13"},{"label":"山西省","value":"14"},{"label":"内蒙古自治区","value":"15"},{"label":"辽宁省","value":"21"},{"label":"吉林省","value":"22"},{"label":"黑龙江省","value":"23"},{"label":"上海市","value":"31"},{"label":"江苏省","value":"32"},{"label":"浙江省","value":"33"},{"label":"安徽省","value":"34"},{"label":"福建省","value":"35"},{"label":"江西省","value":"36"},{"label":"山东省","value":"37"},{"label":"河南省","value":"41"},{"label":"湖北省","value":"42"},{"label":"湖南省","value":"43"},{"label":"广东省","value":"44"},{"label":"广西壮族自治区","value":"45"},{"label":"海南省","value":"46"},{"label":"重庆市","value":"50"},{"label":"四川省","value":"51"},{"label":"贵州省","value":"52"},{"label":"云南省","value":"53"},{"label":"西藏自治区","value":"54"},{"label":"陕西省","value":"61"},{"label":"甘肃省","value":"62"},{"label":"青海省","value":"63"},{"label":"宁夏回族自治区","value":"64"},{"label":"新疆维吾尔自治区","value":"65"},{"label":"台湾","value":"66"},{"label":"香港","value":"67"},{"label":"澳门","value":"68"}]; diff --git a/uni_modules/UniDevTools/src/tmui/tool/theme/colortool.ts b/uni_modules/UniDevTools/src/tmui/tool/theme/colortool.ts new file mode 100644 index 0000000..f439ff1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/theme/colortool.ts @@ -0,0 +1,226 @@ +/** + * 颜色转换工具 + * @description js颜色值转换类 + * @author tmui | tmzdy | vuetify | https://tmui.design + */ +import { rgba, hsla, hsva } from '../lib/interface'; + +export var colortool = { + + + rgbaToHsla(scolor : rgba) : hsla { + let { r, g, b, a } = scolor; + r = r / 255; + g = g / 255; + b = b / 255; + + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var h, s, l; + + if (max === min) { + h = 0; + } else if (max === r) { + h = (60 * (g - b)) / (max - min); + } else if (max === g) { + h = 60 * (2 + (b - r) / (max - min)); + } else { + h = 60 * (4 + (r - g) / (max - min)); + } + + if (h < 0) { + h += 360; + } + + l = (max + min) / 2; + + if (max === min) { + s = 0; + } else if (l < 0.5) { + s = (max - min) / (max + min); + } else { + s = (max - min) / (2 - max - min); + } + + return { h: h, s: s * 100, l: l * 100, a: a }; + }, + hslaToRgba(scolor : hsla) : rgba { + let { h, s, l, a } = scolor; + h = h / 360; // 转换为0-1之间的比例 + s = s / 100; // 转换为0-1之间的比例 + l = l / 100; // 转换为0-1之间的比例 + + var r, g, b; + + if (s === 0) { + r = g = b = l; // 非彩色的HSLA颜色转换成灰色的RGBA颜色 + } else { + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + + return { + r: Math.round(r * 255), + g: Math.round(g * 255), + b: Math.round(b * 255), + a: a, + }; + + // return { r: rgb[0], g: rgb[1], b: rgb[2], a: a }; + }, + cssToRgba: function (sColor : string) : rgba { + if (!sColor) { + return { r: 0, g: 0, b: 0, a: 0 } + } + let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + sColor = sColor.toLowerCase(); + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = "#"; + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); + } + sColor = sColorNew; + } + //处理六位的颜色值 + let sColorChange = []; + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); + } + return { + r: sColorChange[0], + g: sColorChange[1], + b: sColorChange[2], + a: 1 + } + } else if (/^(rgb|RGB|rgba|RGBA)/.test(sColor)) { + let arr = sColor.replace(/(?:\(|\)|rgba|rgb|RGB|RGBA)*/g, "").split(",") + let p = arr.map(val => Number(val)); + if (p.length < 3) { + return { + r: 0, + g: 0, + b: 0, + a: 1 + } + } + if (p.length == 3) { + p.push(1) + } + return { + r: p[0], + g: p[1], + b: p[2], + a: p[3] + } + } else { + return { + r: 0, + g: 0, + b: 0, + a: 1 + } + } + }, + rgbaToHsva: function (rgba : rgba) : hsva { + if (!rgba) return { + h: 0, + s: 1, + v: 1, + a: 1 + }; + const r = rgba.r / 255; + const g = rgba.g / 255; + const b = rgba.b / 255; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h = 0; + + if (max !== min) { + if (max === r) { + h = 60 * (0 + (g - b) / (max - min)); + } else if (max === g) { + h = 60 * (2 + (b - r) / (max - min)); + } else if (max === b) { + h = 60 * (4 + (r - g) / (max - min)); + } + } + + if (h < 0) h = h + 360; + const s = max === 0 ? 0 : (max - min) / max; + const hsv = [h, s, max]; + return { + h: hsv[0], + s: hsv[1], + v: hsv[2], + a: rgba.a + }; + }, + hsvaToRgba: function (sColor : hsva) : rgba { + var { h, s, v, a } = sColor; + var r : number = 0; + var g : number = 0; + var b : number = 0; + var i; + var f; + var p; + var q; + var t; + i = Math.floor(h * 6); + f = h * 6 - i; + p = v * (1 - s); + q = v * (1 - f * s); + t = v * (1 - (1 - f) * s); + switch (i % 6) { + case 0: + r = v; + g = t; + b = p; + break; + case 1: + r = q; + g = v; + b = p; + break; + case 2: + r = p; + g = v; + b = t; + break; + case 3: + r = p; + g = q; + b = v; + break; + case 4: + r = t; + g = p; + b = v; + break; + case 5: + r = v; + g = p; + b = q; + break; + default: + break; + } + return { r: r, g: g, b: b, a: a } + }, + rgbaToCss: function (sColor : rgba) : string { + return `rgba(${sColor.r},${sColor.g},${sColor.b},${sColor.a})`; + }, +}; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/theme/theme.ts b/uni_modules/UniDevTools/src/tmui/tool/theme/theme.ts new file mode 100644 index 0000000..3b14817 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/theme/theme.ts @@ -0,0 +1,533 @@ + +/** + * 主题工具 + * @author tmzdy tmui3.0 + * @description 主题样式生成工具 + * @copyright tmzdy|tmui|https://tmui.design + */ +import { colortool } from './colortool'; +import { ssrRef } from '@dcloudio/uni-app' +import { cssStyleConfig, cssstyle, colorThemeType, cssDirection, linearDirection, linearDeep, linearDirectionType } from '../lib/interface'; +//导入用户自定义的主题色值。 +// import { theme } from '../../../theme/index'; + +let localTheme = {}; +// #ifdef APP +try { + localTheme = JSON.parse(uni.getStorageSync("$tmTheme")) +} catch (e) { + //TODO handle the exception +} +// #endif +let theme = uni?.$tm?.config?.theme ? { ...uni.$tm.config.theme } : localTheme; + +var colors: Array = []; +var colorObj: any = { + red: '#FE1C00', + pink: '#CA145D', + purple: '#A61BC3', + 'deep-purple': '#6A0E81', + indigo: '#652DF4', + blue: '#0163FF', + 'light-blue': '#0889FF', + cyan: '#11CDE8', + teal: '#00998a', + green: '#5DBD1F', + 'light-green': '#83D54A', + lime: '#D4ED00', + yellow: '#FFC400', + amber: '#FFFB01', + orange: '#FEA600', + 'deep-orange': '#FE5C00', + brown: '#795548', + 'blue-grey': '#607D8B', + grey: '#9E9E9E', + black: '#000000', + white: '#FFFFFF', + primary: '#0163FF', + 'grey-5': '#fafafa', + 'grey-4': '#f5f5f5', + 'grey-3': '#eeeeee', + 'grey-2': '#e0e0e0', + 'grey-1': '#bdbdbd', + 'grey-darken-1': '#757575', + 'grey-darken-2': '#616161', + 'grey-darken-3': '#404044', + 'grey-darken-4': '#202022', + 'grey-darken-5': '#111112', + 'grey-darken-6': '#0A0A0B', + ...theme +}; +for (const key in colorObj) { + if (Object.prototype.hasOwnProperty.call(colorObj, key)) { + const element: string = String(colorObj[key]); + if (isCssColor(element)) { + let rgba = colortool.cssToRgba(element); + colors.push({ + name: key, + value: element, + hsva: colortool.rgbaToHsva(colortool.cssToRgba(element)), + rgba: colortool.cssToRgba(element), + hsla: colortool.rgbaToHsla(rgba), + csscolor: `rgba(${rgba.r},${rgba.g},${rgba.b},${rgba.a})` + }); + } + } +} + +function isCssColor(color: string) { + const reg1 = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + const reg2 = /^(rgb|RGB|rgba|RGBA)/; + return reg1.test(color) || reg2.test(color); +} +function getColor(colorName: string) { + let isHand: number = colors.findIndex(function (el, index) { + return el.name == colorName; + }); + if (isHand == -1) { + colorName = "primary"; + isHand = colors.findIndex(function (el, index) { + return el.name == colorName; + }); + console.warn('主题中不存在相关名称的主题。'); + } + + + return colors[isHand]; +} +class themeColors { + colors: Array = []; + constructor(c: Array = colors) { + this.colors = c; + } + public hasColors(colorName: string = "") { + let isHand: Array = this.colors.filter(function (el, index) { + return el.name == colorName; + }); + return isHand.length > 0; + } + public add(colorName: string = "", value: string = "") { + let isHand: Array = this.colors.filter(function (el, index) { + return el.name == colorName; + }); + if (isHand.length > 0) { + // console.error('已存在相关颜色名称!!!'); + return this.colors; + } + if (!value) { + console.error('颜色值必填!!!'); + return this.colors; + } + let rgba = colortool.cssToRgba(value); + let color: colorThemeType = { + csscolor: "", + hsva: { h: 0, s: 0, v: 0, a: 0 }, + hsla: { h: 0, s: 0, l: 0, a: 0 }, + rgba: { r: 0, g: 0, b: 0, a: 0 }, + name: colorName, value: value + }; + color.csscolor = colortool.rgbaToCss(rgba); + color.hsva = colortool.rgbaToHsva(rgba); + color.rgba = rgba; + color.hsla = colortool.rgbaToHsla(rgba); + this.colors.push(color); + + return this.colors; + } + public del(colorName: string) { + let isHand: number = this.colors.findIndex(function (el, index) { + return el.name == colorName; + }); + if (isHand == -1) { + console.error('删除失败,主题中不存在相关名称的主题。'); + return; + } + this.colors.splice(isHand, 1); + } + public getColor(colorName: string): colorThemeType { + let isHand: number = this.colors.findIndex(function (el, index) { + return el.name == colorName; + }); + if (isHand == -1) { + colorName = "primary"; + isHand = this.colors.findIndex(function (el, index) { + return el.name == colorName; + }); + console.error('主题中不存在相关名称的主题。'); + } + + + return this.colors[isHand]; + } + /** + * 计算主题 + * @author tmui3.0|tmzdy + * @param config 样式的细化 + * @returns cssstyle 返回一个计算好的主题系。 + */ + public getTheme(config: cssStyleConfig = { colorname: 'primary', dark: false }): cssstyle { + if (!config['colorname']) { + console.error('颜色名称必填'); + config.colorname = 'primary'; + } + let index = this.colors.findIndex(el => el.name == config.colorname); + if (index == -1) { + console.error('主题不存在,默认为primary'); + config.colorname = 'primary'; + } + + //当前颜色对象。 + let nowColor = { ...this.colors[index] }; + config.borderWidth = isNaN(parseInt(String(config['borderWidth']))) ? 0 : config['borderWidth'] ?? 0; + config.borderStyle = config['borderStyle'] ? config['borderStyle'] : 'solid'; + config.borderColor = config['borderColor'] || ''; + config.borderDirection = config['borderDirection'] || cssDirection.all; + config.linearDirection = config['linearDirection'] || linearDirection.none; + config.linearDeep = config['linearDeep'] || linearDeep.light; + config.shadow = isNaN(parseInt(String(config['shadow']))) ? 6 : config['shadow']; + config.round = isNaN(parseInt(String(config['round']))) ? 4 : config['round']; + config.opaticy = isNaN(parseInt(String(config['opaticy']))) ? 1 : config['opaticy']; + config.outlined = typeof config['outlined'] == 'boolean' ? config['outlined'] : false; + config.text = typeof config['text'] == 'boolean' ? config['text'] : false; + config.blur = typeof config['blur'] == 'boolean' ? config['blur'] : false; + // 确定一个颜色值是明亮的还是深色的, + //以方便确定文本颜色是亮还是深来区别,否则颜色看不清. + function isDarkColorFun(r: number, g: number, b: number) { + const yiq = (r * 2126 + g * 7152 + b * 722) / 10000; + return yiq < 180; + } + /**是否是黑色 */ + let isBlack = false; + /**是否是白色 */ + let isWhite = false; + /**黑或者白 */ + let isBlackAndWhite = false; + /**是否是灰色 */ + let isGrey = false + /**该颜色在人眼中属于深,还是浅,以适配文本色 */ + let isDarkColor = false; + + isDarkColor = isDarkColorFun(nowColor.rgba.r, nowColor.rgba.g, nowColor.rgba.b) + //黑 + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0 && nowColor.hsla.l == 0) { + isBlack = true; + } + //白 + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0 && nowColor.hsla.l == 100) { + isWhite = true; + } + //灰 + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0 && nowColor.hsla.l < 100) { + isGrey = true; + } + //黑或者白 + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0) { + isBlackAndWhite = true; + } + + let css: cssstyle = {}; + css.color = nowColor.value; + css.config = { ...config }; + css.isBlackAndWhite = isBlackAndWhite; + css.gradientColor = [] + css.colorname = config.colorname; + let borderhsl = { ...nowColor.hsla }; + let borderDir = "all"; + css.borderCss = {}; + + //背景颜色。 + let bghsl = { ...nowColor.hsla }; + /**非黑非白,h,s不变,只要降10%的亮度即可。 */ + if (config.dark && !isBlackAndWhite) { + bghsl.l = 40; + } + if (config.blur) { + bghsl.a = 0.85 + } + css.backgroundColor = colortool.rgbaToCss(colortool.hslaToRgba({ ...bghsl })); + + if (isBlackAndWhite && config.dark) { + css.backgroundColor = colortool.rgbaToCss(colortool.hslaToRgba({ ...bghsl, h: 240, s: 3, l: 8 })); + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...borderhsl, h: 240, s: 3, l: 12 })); + } + if (isWhite && !config.dark) { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...borderhsl, l: 90 })); + } + if (isBlack && !config.dark) { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...borderhsl, l: 12 })); + } + css.backgroundColorCss = { 'background-color': css.backgroundColor } + //文字颜色。 + let txcolor = { ...nowColor.hsla }; + //当亮度小于(含)50需要降低文本颜色的亮度,即加深。,否则加亮,即变浅色。 + if (config.dark) { + txcolor.l = 95; + } else { + if (isDarkColor) { + txcolor.l = 95; + } else { + if (isGrey) { + txcolor.l = 10; + } else { + txcolor.l = 20; + } + } + } + + //外边框轮廓时 + //outlined + if (config.outlined) { + txcolor.l = nowColor.hsla.l; + if (config.dark) { + txcolor.l = 55; + } else { + if (nowColor.hsla.h != 0 && nowColor.hsla.s != 0 && !isDarkColorFun(nowColor.rgba.r, nowColor.rgba.g, nowColor.rgba.b)) { + txcolor.l = 20; + } + } + if ((isBlack || isWhite) && config.dark) { + txcolor.l = 100 + } + config.borderWidth = config['borderWidth'] || 2; + let n_hsl = { h: nowColor.hsla.h, s: nowColor.hsla.s, l: 0, a: 0 }; + let o_bgcss = colortool.rgbaToCss(colortool.hslaToRgba(n_hsl)); + css.backgroundColor = o_bgcss; + css.backgroundColorCss = { 'background-color': o_bgcss } + css.textColor = colortool.rgbaToCss(colortool.hslaToRgba(txcolor)); + } + + //text + if (config.text) { + txcolor.l = nowColor.hsla.l; + if (isGrey) { + txcolor.l = 15; + } else { + // txcolor.l = 55; + if (nowColor.hsla.h != 0 && nowColor.hsla.s != 0 && !isDarkColorFun(nowColor.rgba.r, nowColor.rgba.g, nowColor.rgba.b)) { + txcolor.l = 20; + } + + } + if (config.dark) { + txcolor.l = 60; + if (!isBlackAndWhite) { + txcolor.s = 100; + } + } + if (isBlack) { + txcolor.l = 90 + } + if (isWhite) { + txcolor.l = 15 + } + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0 && config.dark) { + txcolor.l = 90; + } + + + css.textColor = colortool.rgbaToCss(colortool.hslaToRgba(txcolor)); + css.border = css.textColor; + let o_now_bgColor = nowColor.csscolor; + let n_hsl = { h: nowColor.hsla.h, s: nowColor.hsla.s, l: 96, a: nowColor.hsla.a }; + if (config.dark) { + if (nowColor.hsla.h != 0 && nowColor.hsla.s != 0) { + n_hsl.l = 12; + n_hsl.s = 35; + } else { + n_hsl.l = 12; + n_hsl.s = 0; + } + + } + if (config.blur) { + n_hsl.a = 0.85 + } + o_now_bgColor = colortool.rgbaToCss(colortool.hslaToRgba(n_hsl)); + + css.backgroundColor = o_now_bgColor; + css.backgroundColorCss = { 'background-color': o_now_bgColor } + } + + //shadow + if (config.shadow) { + let n_hsl = { h: nowColor.hsla.h, s: 100, l: 50, a: 0.2 }; + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0) { + //黑白要反转。 + n_hsl = { h: 0, s: 0, l: 20, a: 0.07 }; + } + let o_bgcss = colortool.rgbaToCss(colortool.hslaToRgba(n_hsl)); + css.shadowColor = { + boxShadow: `0rpx ${config.shadow * 2.5}rpx ${config.shadow * 6}rpx ${o_bgcss}` + } + } + + + + //处理渐变色 + if (config.linearDirection) { + + let liner_color_1 = { h: 0, s: 0, l: 0, a: nowColor.hsla.a }; + let liner_color_2 = { h: 0, s: 0, l: 0, a: nowColor.hsla.a }; + let dir_str = linearDirection[config.linearDirection]; + // 增减控制参数。 + let addling = 0; + if (nowColor.hsla.h < 180 && nowColor.hsla.h > 0) { + addling = 20 + } else { + addling = -37 + } + + + //先计算渐变的亮色系。 + // 先算白或者黑 + // 如果是白 + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0 && nowColor.hsla.l == 100) { + //白。 + if (config.linearDeep == 'light') { + liner_color_1.l = 80; + liner_color_2.l = 20; + } else { + liner_color_1.l = 50; + liner_color_2.l = 40; + } + } else if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0 && nowColor.hsla.l == 0) { + //黑。 + if (config.linearDeep == 'light') { + liner_color_1.l = 40; + liner_color_2.l = 10; + } else { + liner_color_1.l = 30; + liner_color_2.l = 0; + } + + } else { + liner_color_2.h = nowColor.hsla.h; + liner_color_2.s = nowColor.hsla.s; + + liner_color_1.h = nowColor.hsla.h; + liner_color_1.s = nowColor.hsla.s; + if (config.linearDeep == 'light') { + liner_color_1.h = liner_color_1.h;//色相需要往前偏移加强色系 + liner_color_1.s = 90;//饱和度需要加强 + liner_color_1.l = 70; + liner_color_2.l = 44; + + } else if (config.linearDeep == 'dark') { + + liner_color_2.s = 90; + liner_color_2.l = 26; + + liner_color_1.s = 90; + liner_color_1.l = 50; + } else if (config.linearDeep == 'accent') { + liner_color_1.h -= 0;//色相需要往前偏移加强色系 + liner_color_1.s = 90;//饱和度需要加强 + liner_color_1.l = 54; + + liner_color_2.h -= addling;//偏移30度的色相搭配色进行渐变 + liner_color_2.s = 90;//饱和度需要加强 + liner_color_2.l = 54; + } + + } + if (config.dark) { + liner_color_1.l = 40 + liner_color_2.l = 40 + txcolor.l = 90; + } + // 背景颜色取中间。 + let color_t_1 = colortool.rgbaToCss(colortool.hslaToRgba(liner_color_1)); + let color_t_2 = colortool.rgbaToCss(colortool.hslaToRgba(liner_color_2)); + if (!config.text && !config.outlined) { + css.backgroundColorCss = { 'background-image': `linear-gradient(${dir_str},${color_t_1},${color_t_2})` } + let newBgcolor = { + h: (liner_color_1.h + liner_color_2.h) / 2, + s: (liner_color_1.s + liner_color_2.s) / 2, + l: (liner_color_1.l + liner_color_2.l) / 2, + a: (liner_color_1.a + liner_color_2.a) / 2 + } + let newBgcolorRgb = colortool.hslaToRgba(newBgcolor) + + if (!config.dark) { + if (!isDarkColorFun(newBgcolorRgb.r, newBgcolorRgb.g, newBgcolorRgb.b) && nowColor.hsla.h != 0 && nowColor.hsla.s != 0) { + txcolor.l = 20; + } + } + css.backgroundColor = colortool.rgbaToCss(colortool.hslaToRgba(newBgcolor)); + css.gradientColor = [color_t_1, color_t_2] + css.linearDirectionStr = dir_str; + } + + } + + if (config.dark == true) { + // css.cardcolor = '#0A0A0B'; //项目 + // css.inputcolor = '#111112';//输入框,表单等 + // css.bodycolor = 'rgba(5,5,5, 1.0)';//背景 + // css.disablecolor = 'rgba(30, 30, 30, 1.0)';//禁用的项目或者表单 + // css.textDisableColor = 'rgba(100, 100, 100, 1.0)';//文本禁用色. + css = { ...css, ...uni.$tm.config?.themeConfig?.dark ?? {} } + } + + css.textColor = colortool.rgbaToCss(colortool.hslaToRgba(txcolor)); + if (config.dark) { + + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0) { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...nowColor.hsla, l: 12 })); + } else { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...nowColor.hsla, l: bghsl.l + 10 })); + } + } else { + + if (nowColor.hsla.h == 0 && nowColor.hsla.s == 0) { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...nowColor.hsla, l: 90 })); + } else { + // text时,使用浅色线条,outlined时与颜色相同 + if ((config.text && config.outlined)) { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...nowColor.hsla, l: 90 })); + } else if (!config.text && config.outlined) { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...txcolor })); + } else if (!config.text && !config.outlined && config.borderWidth > 0) { + css.border = colortool.rgbaToCss(colortool.hslaToRgba({ ...nowColor.hsla, l: bghsl.l - 3 })); + } + + } + css.border = config.borderColor || css.border + } + + //设置边线样式。 + let bcss = `${config.borderWidth}rpx ${config.borderStyle} ${css.border}`; + if (config.borderDirection == 'all') { + css.borderCss[`border`] = bcss; + } else if (config.borderDirection == 'x' || config.borderDirection == "leftright") { + css.borderCss[`border-left`] = bcss; + css.borderCss[`border-right`] = bcss; + } else if (config.borderDirection == 'y' || config.borderDirection == "topbottom") { + css.borderCss[`border-top`] = bcss; + css.borderCss[`border-bottom`] = bcss; + } else if (config.borderDirection == 'bottomleft') { + css.borderCss[`border-left`] = bcss; + css.borderCss[`border-bottom`] = bcss; + } else if (config.borderDirection == 'bottomright') { + css.borderCss[`border-right`] = bcss; + css.borderCss[`border-bottom`] = bcss; + } else if (config.borderDirection == 'topleft') { + css.borderCss[`border-left`] = bcss; + css.borderCss[`border-top`] = bcss; + } else if (config.borderDirection == 'topright') { + css.borderCss[`border-right`] = bcss; + css.borderCss[`border-top`] = bcss; + } else { + let str = '-' + config.borderDirection; + css.borderCss[`border${str}`] = bcss; + } + + return css; + } +} + +export default { + isCssColor, + themeColors, + getColor +}; diff --git a/uni_modules/UniDevTools/src/tmui/tool/theme/util.ts b/uni_modules/UniDevTools/src/tmui/tool/theme/util.ts new file mode 100644 index 0000000..9f5d66c --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/theme/util.ts @@ -0,0 +1,26 @@ +export function setDomDarkOrWhite(){ + // #ifdef H5 + let tmuiNavStyle= localStorage.getItem("tmuiNavStyle") + let dark = localStorage.getItem('setTmVuetifyBlack'); + try{ + if(tmuiNavStyle&&typeof tmuiNavStyle !='undefined'){ + // dark = JSON.parse(dark||'{"type":"boolean","data":false}') + // let tmuiNavStyleJson = JSON.parse(tmuiNavStyle); + // if(document.querySelector("#tmuiBodyId")){ + // document.body.removeChild(document.querySelector("#tmuiBodyId")) + // } + // let style = document.createElement('style') + // style.type="text/css" + // style.id="tmuiBodyId"; + // if(dark?.data==true||dark==true){ + // style.append(document.createTextNode(`.uni-page-head{background-color:${tmuiNavStyleJson?.navbarBackground??'none'} !important} body{background:#000}`)) + // }else{ + // style.append(document.createTextNode(`.uni-page-head{background-color:${tmuiNavStyleJson?.navbarBackground??'none'} !important} `)) + // } + // document.body.append(style) + } + }catch(e){ + //TODO handle the exception + } + // #endif +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/demo.css b/uni_modules/UniDevTools/src/tmui/tool/tmicon/demo.css new file mode 100644 index 0000000..a67054a --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/demo.css @@ -0,0 +1,539 @@ +/* Logo 字体 */ +@font-face { + font-family: "iconfont logo"; + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); +} + +.logo { + font-family: "iconfont logo"; + font-size: 160px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* tabs */ +.nav-tabs { + position: relative; +} + +.nav-tabs .nav-more { + position: absolute; + right: 0; + bottom: 0; + height: 42px; + line-height: 42px; + color: #666; +} + +#tabs { + border-bottom: 1px solid #eee; +} + +#tabs li { + cursor: pointer; + width: 100px; + height: 40px; + line-height: 40px; + text-align: center; + font-size: 16px; + border-bottom: 2px solid transparent; + position: relative; + z-index: 1; + margin-bottom: -1px; + color: #666; +} + + +#tabs .active { + border-bottom-color: #f00; + color: #222; +} + +.tab-container .content { + display: none; +} + +/* 页面布局 */ +.main { + padding: 30px 100px; + width: 960px; + margin: 0 auto; +} + +.main .logo { + color: #333; + text-align: left; + margin-bottom: 30px; + line-height: 1; + height: 110px; + margin-top: -50px; + overflow: hidden; + *zoom: 1; +} + +.main .logo a { + font-size: 160px; + color: #333; +} + +.helps { + margin-top: 40px; +} + +.helps pre { + padding: 20px; + margin: 10px 0; + border: solid 1px #e7e1cd; + background-color: #fffdef; + overflow: auto; +} + +.icon_lists { + width: 100% !important; + overflow: hidden; + *zoom: 1; +} + +.icon_lists li { + width: 100px; + margin-bottom: 10px; + margin-right: 20px; + text-align: center; + list-style: none !important; + cursor: default; +} + +.icon_lists li .code-name { + line-height: 1.2; +} + +.icon_lists .icon { + display: block; + height: 100px; + line-height: 100px; + font-size: 42px; + margin: 10px auto; + color: #333; + -webkit-transition: font-size 0.25s linear, width 0.25s linear; + -moz-transition: font-size 0.25s linear, width 0.25s linear; + transition: font-size 0.25s linear, width 0.25s linear; +} + +.icon_lists .icon:hover { + font-size: 100px; +} + +.icon_lists .svg-icon { + /* 通过设置 font-size 来改变图标大小 */ + width: 1em; + /* 图标和文字相邻时,垂直对齐 */ + vertical-align: -0.15em; + /* 通过设置 color 来改变 SVG 的颜色/fill */ + fill: currentColor; + /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 + normalize.css 中也包含这行 */ + overflow: hidden; +} + +.icon_lists li .name, +.icon_lists li .code-name { + color: #666; +} + +/* markdown 样式 */ +.markdown { + color: #666; + font-size: 14px; + line-height: 1.8; +} + +.highlight { + line-height: 1.5; +} + +.markdown img { + vertical-align: middle; + max-width: 100%; +} + +.markdown h1 { + color: #404040; + font-weight: 500; + line-height: 40px; + margin-bottom: 24px; +} + +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6 { + color: #404040; + margin: 1.6em 0 0.6em 0; + font-weight: 500; + clear: both; +} + +.markdown h1 { + font-size: 28px; +} + +.markdown h2 { + font-size: 22px; +} + +.markdown h3 { + font-size: 16px; +} + +.markdown h4 { + font-size: 14px; +} + +.markdown h5 { + font-size: 12px; +} + +.markdown h6 { + font-size: 12px; +} + +.markdown hr { + height: 1px; + border: 0; + background: #e9e9e9; + margin: 16px 0; + clear: both; +} + +.markdown p { + margin: 1em 0; +} + +.markdown>p, +.markdown>blockquote, +.markdown>.highlight, +.markdown>ol, +.markdown>ul { + width: 80%; +} + +.markdown ul>li { + list-style: circle; +} + +.markdown>ul li, +.markdown blockquote ul>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown>ul li p, +.markdown>ol li p { + margin: 0.6em 0; +} + +.markdown ol>li { + list-style: decimal; +} + +.markdown>ol li, +.markdown blockquote ol>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown code { + margin: 0 3px; + padding: 0 5px; + background: #eee; + border-radius: 3px; +} + +.markdown strong, +.markdown b { + font-weight: 600; +} + +.markdown>table { + border-collapse: collapse; + border-spacing: 0px; + empty-cells: show; + border: 1px solid #e9e9e9; + width: 95%; + margin-bottom: 24px; +} + +.markdown>table th { + white-space: nowrap; + color: #333; + font-weight: 600; +} + +.markdown>table th, +.markdown>table td { + border: 1px solid #e9e9e9; + padding: 8px 16px; + text-align: left; +} + +.markdown>table th { + background: #F7F7F7; +} + +.markdown blockquote { + font-size: 90%; + color: #999; + border-left: 4px solid #e9e9e9; + padding-left: 0.8em; + margin: 1em 0; +} + +.markdown blockquote p { + margin: 0; +} + +.markdown .anchor { + opacity: 0; + transition: opacity 0.3s ease; + margin-left: 8px; +} + +.markdown .waiting { + color: #ccc; +} + +.markdown h1:hover .anchor, +.markdown h2:hover .anchor, +.markdown h3:hover .anchor, +.markdown h4:hover .anchor, +.markdown h5:hover .anchor, +.markdown h6:hover .anchor { + opacity: 1; + display: inline-block; +} + +.markdown>br, +.markdown>p>br { + clear: both; +} + + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +/* 代码高亮 */ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre)>code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre)>code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/demo_index.html b/uni_modules/UniDevTools/src/tmui/tool/tmicon/demo_index.html new file mode 100644 index 0000000..3a8ec8b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/demo_index.html @@ -0,0 +1,9388 @@ + + + + + iconfont Demo + + + + + + + + + + + + + +
+

+ + +

+ +
+
+
    + +
  • + +
    paypal
    +
    &#xe8c8;
    +
  • + +
  • + +
    google
    +
    &#xe8c9;
    +
  • + +
  • + +
    apple-pay
    +
    &#xf166;
    +
  • + +
  • + +
    Apple
    +
    &#xedd8;
    +
  • + +
  • + +
    google-pay
    +
    &#xec04;
    +
  • + +
  • + +
    钱袋
    +
    &#xe600;
    +
  • + +
  • + +
    +
    &#xe601;
    +
  • + +
  • + +
    红包
    +
    &#xe6da;
    +
  • + +
  • + +
    通知-fill
    +
    &#xe758;
    +
  • + +
  • + +
    人民币3
    +
    &#xe73e;
    +
  • + +
  • + +
    投票
    +
    &#xe60e;
    +
  • + +
  • + +
    票券-色块icon
    +
    &#xe658;
    +
  • + +
  • + +
    足球
    +
    &#xe65d;
    +
  • + +
  • + +
    美元
    +
    &#xeb1a;
    +
  • + +
  • + +
    汽车
    +
    &#xe611;
    +
  • + +
  • + +
    通知
    +
    &#xe612;
    +
  • + +
  • + +
    会员
    +
    &#xe62f;
    +
  • + +
  • + +
    md-phone-portrait
    +
    &#xe6c2;
    +
  • + +
  • + +
    md-planet
    +
    &#xe6c3;
    +
  • + +
  • + +
    md-phone-landscape
    +
    &#xe6c4;
    +
  • + +
  • + +
    md-power
    +
    &#xe6c5;
    +
  • + +
  • + +
    md-redo
    +
    &#xe6c6;
    +
  • + +
  • + +
    md-rocket
    +
    &#xe6c7;
    +
  • + +
  • + +
    md-ribbon
    +
    &#xe6c8;
    +
  • + +
  • + +
    md-undo
    +
    &#xe6cb;
    +
  • + +
  • + +
    md-trending-down
    +
    &#xe6cc;
    +
  • + +
  • + +
    md-trending-up
    +
    &#xe6cd;
    +
  • + +
  • + +
    md-git-merge
    +
    &#xe6de;
    +
  • + +
  • + +
    md-female
    +
    &#xe6e2;
    +
  • + +
  • + +
    md-male
    +
    &#xe6e3;
    +
  • + +
  • + +
    md-heart-dislike
    +
    &#xe6e4;
    +
  • + +
  • + +
    md-heart
    +
    &#xe6e7;
    +
  • + +
  • + +
    ios-text
    +
    &#xe6f1;
    +
  • + +
  • + +
    ios-rose
    +
    &#xe6f2;
    +
  • + +
  • + +
    logo-game-controller-b
    +
    &#xe6fd;
    +
  • + +
  • + +
    ios-beer
    +
    &#xe707;
    +
  • + +
  • + +
    ios-cafe
    +
    &#xe709;
    +
  • + +
  • + +
    ios-chatbubbles
    +
    &#xe70a;
    +
  • + +
  • + +
    ios-color-palette
    +
    &#xe70e;
    +
  • + +
  • + +
    ios-filing
    +
    &#xe712;
    +
  • + +
  • + +
    ios-finger-print
    +
    &#xe713;
    +
  • + +
  • + +
    ios-hand
    +
    &#xe716;
    +
  • + +
  • + +
    ios-flower
    +
    &#xe714;
    +
  • + +
  • + +
    ios-ice-cream
    +
    &#xe719;
    +
  • + +
  • + +
    ios-grid
    +
    &#xe71c;
    +
  • + +
  • + +
    ios-mail-open
    +
    &#xe71d;
    +
  • + +
  • + +
    ios-key
    +
    &#xe71e;
    +
  • + +
  • + +
    ios-man
    +
    &#xe71f;
    +
  • + +
  • + +
    美元
    +
    &#xe90d;
    +
  • + +
  • + +
    自定义
    +
    &#xe60d;
    +
  • + +
  • + +
    刷新
    +
    &#xe6ce;
    +
  • + +
  • + +
    会员
    +
    &#xe646;
    +
  • + +
  • + +
    +
    &#xe657;
    +
  • + +
  • + +
    ios-airplane
    +
    &#xe852;
    +
  • + +
  • + +
    ios-woman
    +
    &#xe859;
    +
  • + +
  • + +
    ios-aperture
    +
    &#xe866;
    +
  • + +
  • + +
    ios-alarm
    +
    &#xe868;
    +
  • + +
  • + +
    ios-arrow-dropdown
    +
    &#xe869;
    +
  • + +
  • + +
    ios-arrow-dropleft-c
    +
    &#xe876;
    +
  • + +
  • + +
    ios-arrow-dropleft
    +
    &#xe87c;
    +
  • + +
  • + +
    ios-arrow-dropup
    +
    &#xe87f;
    +
  • + +
  • + +
    ios-arrow-dropright-
    +
    &#xe880;
    +
  • + +
  • + +
    ios-arrow-dropdown-c
    +
    &#xe886;
    +
  • + +
  • + +
    ios-arrow-dropup-cir
    +
    &#xe88d;
    +
  • + +
  • + +
    ios-arrow-dropright
    +
    &#xe890;
    +
  • + +
  • + +
    ios-attach
    +
    &#xe893;
    +
  • + +
  • + +
    ios-at
    +
    &#xe894;
    +
  • + +
  • + +
    ios-bed
    +
    &#xe895;
    +
  • + +
  • + +
    ios-battery-full
    +
    &#xe896;
    +
  • + +
  • + +
    ios-bookmarks
    +
    &#xe897;
    +
  • + +
  • + +
    ios-bluetooth
    +
    &#xe898;
    +
  • + +
  • + +
    ios-cellular
    +
    &#xe899;
    +
  • + +
  • + +
    ios-cut
    +
    &#xe89a;
    +
  • + +
  • + +
    ios-leaf
    +
    &#xe89b;
    +
  • + +
  • + +
    ios-mic
    +
    &#xe89c;
    +
  • + +
  • + +
    ios-mail-open
    +
    &#xe89d;
    +
  • + +
  • + +
    ios-partly-sunny
    +
    &#xe8a0;
    +
  • + +
  • + +
    ios-radio-button-on
    +
    &#xe8a1;
    +
  • + +
  • + +
    ios-radio-button-off
    +
    &#xe8a2;
    +
  • + +
  • + +
    ios-remove
    +
    &#xe8a3;
    +
  • + +
  • + +
    ios-remove-circle-ou
    +
    &#xe8a4;
    +
  • + +
  • + +
    ios-remove-circle
    +
    &#xe8a5;
    +
  • + +
  • + +
    ios-rocket
    +
    &#xe8a6;
    +
  • + +
  • + +
    ios-ribbon
    +
    &#xe8a7;
    +
  • + +
  • + +
    ios-star
    +
    &#xe8a8;
    +
  • + +
  • + +
    ios-star-half
    +
    &#xe8a9;
    +
  • + +
  • + +
    ios-star-outline
    +
    &#xe8aa;
    +
  • + +
  • + +
    ios-snow
    +
    &#xe8ab;
    +
  • + +
  • + +
    ios-stopwatch
    +
    &#xe8ac;
    +
  • + +
  • + +
    ios-sunny
    +
    &#xe8ad;
    +
  • + +
  • + +
    ios-unlock
    +
    &#xe8ae;
    +
  • + +
  • + +
    ios-trophy
    +
    &#xe8af;
    +
  • + +
  • + +
    ios-umbrella
    +
    &#xe8b0;
    +
  • + +
  • + +
    ios-videocam
    +
    &#xe8b1;
    +
  • + +
  • + +
    ios-volume-high
    +
    &#xe8b2;
    +
  • + +
  • + +
    ios-water
    +
    &#xe8b3;
    +
  • + +
  • + +
    ios-wifi
    +
    &#xe8b4;
    +
  • + +
  • + +
    md-water
    +
    &#xe8b5;
    +
  • + +
  • + +
    md-checkbox
    +
    &#xe8b6;
    +
  • + +
  • + +
    md-chatbubbles
    +
    &#xe8b7;
    +
  • + +
  • + +
    md-chatboxes
    +
    &#xe8b8;
    +
  • + +
  • + +
    md-cloud-done
    +
    &#xe8b9;
    +
  • + +
  • + +
    md-cloud-upload
    +
    &#xe8ba;
    +
  • + +
  • + +
    md-cloudy
    +
    &#xe8bb;
    +
  • + +
  • + +
    md-contrast
    +
    &#xe8bc;
    +
  • + +
  • + +
    md-disc
    +
    &#xe8bd;
    +
  • + +
  • + +
    md-heart-empty
    +
    &#xe8be;
    +
  • + +
  • + +
    md-heart
    +
    &#xe8bf;
    +
  • + +
  • + +
    md-home
    +
    &#xe8c0;
    +
  • + +
  • + +
    md-mail-open
    +
    &#xe8c1;
    +
  • + +
  • + +
    md-heart-half
    +
    &#xe8c2;
    +
  • + +
  • + +
    md-person
    +
    &#xe8c3;
    +
  • + +
  • + +
    md-people
    +
    &#xe8c4;
    +
  • + +
  • + +
    md-more
    +
    &#xe8c5;
    +
  • + +
  • + +
    md-moon
    +
    &#xe8c6;
    +
  • + +
  • + +
    md-pin
    +
    &#xe8c7;
    +
  • + +
  • + +
    更多
    +
    &#xe73a;
    +
  • + +
  • + +
    IOS
    +
    &#xe60c;
    +
  • + +
  • + +
    wifi-off
    +
    &#xe93a;
    +
  • + +
  • + +
    列表空空
    +
    &#xe6ad;
    +
  • + +
  • + +
    微信支付
    +
    &#xe605;
    +
  • + +
  • + +
    银行卡
    +
    &#xe6c9;
    +
  • + +
  • + +
    云闪付
    +
    &#xe68b;
    +
  • + +
  • + +
    头条样式
    +
    &#xe622;
    +
  • + +
  • + +
    抖音
    +
    &#xe8db;
    +
  • + +
  • + +
    支付,支付宝
    +
    &#xe8de;
    +
  • + +
  • + +
    华为
    +
    &#xe610;
    +
  • + +
  • + +
    链接
    +
    &#xe665;
    +
  • + +
  • + +
    微信
    +
    &#xe63f;
    +
  • + +
  • + +
    朋友圈
    +
    &#xe615;
    +
  • + +
  • + +
    微博
    +
    &#xe608;
    +
  • + +
  • + +
    QQ
    +
    &#xe60f;
    +
  • + +
  • + +
    小程序
    +
    &#xe706;
    +
  • + +
  • + +
    display-code
    +
    &#xe792;
    +
  • + +
  • + +
    display-arrow-right
    +
    &#xe793;
    +
  • + +
  • + +
    display-arrow-left
    +
    &#xe794;
    +
  • + +
  • + +
    laptop-error
    +
    &#xe795;
    +
  • + +
  • + +
    laptop-check
    +
    &#xe796;
    +
  • + +
  • + +
    laptop
    +
    &#xe797;
    +
  • + +
  • + +
    mobile-error
    +
    &#xe798;
    +
  • + +
  • + +
    mobile-check
    +
    &#xe799;
    +
  • + +
  • + +
    mobile-alt
    +
    &#xe79a;
    +
  • + +
  • + +
    aliwangwang
    +
    &#xe79d;
    +
  • + +
  • + +
    nail
    +
    &#xe79e;
    +
  • + +
  • + +
    nail-fixed
    +
    &#xe79f;
    +
  • + +
  • + +
    edit
    +
    &#xe7a0;
    +
  • + +
  • + +
    dollar
    +
    &#xe7a1;
    +
  • + +
  • + +
    transanction
    +
    &#xe7a2;
    +
  • + +
  • + +
    filter-fill
    +
    &#xe7a3;
    +
  • + +
  • + +
    all-fill
    +
    &#xe7a4;
    +
  • + +
  • + +
    database plus-fill
    +
    &#xe7a5;
    +
  • + +
  • + +
    database-fill
    +
    &#xe7a6;
    +
  • + +
  • + +
    comment lines-fill
    +
    &#xe7a7;
    +
  • + +
  • + +
    comment dots-fill
    +
    &#xe7a8;
    +
  • + +
  • + +
    paper plane-fill
    +
    &#xe7a9;
    +
  • + +
  • + +
    eye slash-fill
    +
    &#xe7aa;
    +
  • + +
  • + +
    eye-fill
    +
    &#xe7ab;
    +
  • + +
  • + +
    lightbulb-fill
    +
    &#xe7ac;
    +
  • + +
  • + +
    flag-fill
    +
    &#xe7ad;
    +
  • + +
  • + +
    tag-fill
    +
    &#xe7ae;
    +
  • + +
  • + +
    position-fill
    +
    &#xe7af;
    +
  • + +
  • + +
    location-fill
    +
    &#xe7b0;
    +
  • + +
  • + +
    map-fill
    +
    &#xe7b1;
    +
  • + +
  • + +
    inbox in-fill
    +
    &#xe7b2;
    +
  • + +
  • + +
    box-fill
    +
    &#xe7b3;
    +
  • + +
  • + +
    database set-fill
    +
    &#xe7b4;
    +
  • + +
  • + +
    layer group-fill
    +
    &#xe7b5;
    +
  • + +
  • + +
    cry-fill
    +
    &#xe7b6;
    +
  • + +
  • + +
    smile-fill
    +
    &#xe7b7;
    +
  • + +
  • + +
    unlock-fill
    +
    &#xe7b8;
    +
  • + +
  • + +
    lock-fill
    +
    &#xe7b9;
    +
  • + +
  • + +
    align right-fill
    +
    &#xe7ba;
    +
  • + +
  • + +
    align left-fill
    +
    &#xe7bb;
    +
  • + +
  • + +
    border bottom-fill
    +
    &#xe7bc;
    +
  • + +
  • + +
    border top-fill
    +
    &#xe7bd;
    +
  • + +
  • + +
    align center-fill
    +
    &#xe7be;
    +
  • + +
  • + +
    sort-down-copy
    +
    &#xf167;
    +
  • + +
  • + +
    border verticle-fill
    +
    &#xe7bf;
    +
  • + +
  • + +
    pic center-fill
    +
    &#xe7c0;
    +
  • + +
  • + +
    pic side-fill
    +
    &#xe7c1;
    +
  • + +
  • + +
    folder open-fill
    +
    &#xe7c2;
    +
  • + +
  • + +
    folder plus-fill
    +
    &#xe7c3;
    +
  • + +
  • + +
    folder-fill
    +
    &#xe7c4;
    +
  • + +
  • + +
    file-SQL
    +
    &#xe7c5;
    +
  • + +
  • + +
    file plus-fill
    +
    &#xe7c6;
    +
  • + +
  • + +
    file-fill
    +
    &#xe7c7;
    +
  • + +
  • + +
    copy-fill
    +
    &#xe7c8;
    +
  • + +
  • + +
    headset-fill
    +
    &#xe7c9;
    +
  • + +
  • + +
    phone-fill
    +
    &#xe7ca;
    +
  • + +
  • + +
    pause circle-fill
    +
    &#xe7cb;
    +
  • + +
  • + +
    stop circle-fill
    +
    &#xe7cc;
    +
  • + +
  • + +
    play circle-fill
    +
    &#xe7cd;
    +
  • + +
  • + +
    delete-fill
    +
    &#xe7ce;
    +
  • + +
  • + +
    picture-fill
    +
    &#xe7cf;
    +
  • + +
  • + +
    mail-fill
    +
    &#xe7d0;
    +
  • + +
  • + +
    heart-fill
    +
    &#xe7d1;
    +
  • + +
  • + +
    collection-fill
    +
    &#xe7d2;
    +
  • + +
  • + +
    user-group-fill
    +
    &#xe7d3;
    +
  • + +
  • + +
    user plus-fill
    +
    &#xe7d4;
    +
  • + +
  • + +
    user-fill
    +
    &#xe7d5;
    +
  • + +
  • + +
    cog-fill
    +
    &#xe7d6;
    +
  • + +
  • + +
    clock-fill
    +
    &#xe7d7;
    +
  • + +
  • + +
    calendar alt-fill
    +
    &#xe7d8;
    +
  • + +
  • + +
    cloud download-fill
    +
    &#xe7d9;
    +
  • + +
  • + +
    cloud upload-fill
    +
    &#xe7da;
    +
  • + +
  • + +
    exchange-fill
    +
    &#xe7db;
    +
  • + +
  • + +
    info-circle-fill
    +
    &#xe7dc;
    +
  • + +
  • + +
    question-circle-fill
    +
    &#xe7dd;
    +
  • + +
  • + +
    exclamation circle-f
    +
    &#xe7de;
    +
  • + +
  • + +
    minus-circle-fill
    +
    &#xe7df;
    +
  • + +
  • + +
    plus-circle-fill
    +
    &#xe7e0;
    +
  • + +
  • + +
    times-circle-fill
    +
    &#xe7e1;
    +
  • + +
  • + +
    check-circle-fill
    +
    &#xe7e2;
    +
  • + +
  • + +
    compress alt-fill
    +
    &#xe7e3;
    +
  • + +
  • + +
    expand alt-fill
    +
    &#xe7e4;
    +
  • + +
  • + +
    filter
    +
    &#xe7e5;
    +
  • + +
  • + +
    all
    +
    &#xe7e6;
    +
  • + +
  • + +
    database-plus
    +
    &#xe7e7;
    +
  • + +
  • + +
    database
    +
    &#xe7e8;
    +
  • + +
  • + +
    comment-lines
    +
    &#xe7e9;
    +
  • + +
  • + +
    comment-dots
    +
    &#xe7ea;
    +
  • + +
  • + +
    paper-plane
    +
    &#xe7eb;
    +
  • + +
  • + +
    eye-slash
    +
    &#xe7ec;
    +
  • + +
  • + +
    eye
    +
    &#xe7ed;
    +
  • + +
  • + +
    lightbulb
    +
    &#xe7ee;
    +
  • + +
  • + +
    flag
    +
    &#xe7ef;
    +
  • + +
  • + +
    tag
    +
    &#xe7f0;
    +
  • + +
  • + +
    position
    +
    &#xe7f1;
    +
  • + +
  • + +
    location
    +
    &#xe7f2;
    +
  • + +
  • + +
    map
    +
    &#xe7f3;
    +
  • + +
  • + +
    inbox-in
    +
    &#xe7f4;
    +
  • + +
  • + +
    box
    +
    &#xe7f5;
    +
  • + +
  • + +
    database-set
    +
    &#xe7f6;
    +
  • + +
  • + +
    layer-group
    +
    &#xe7f7;
    +
  • + +
  • + +
    wind-cry
    +
    &#xe7f8;
    +
  • + +
  • + +
    wind-smile
    +
    &#xe7f9;
    +
  • + +
  • + +
    unlock
    +
    &#xe7fa;
    +
  • + +
  • + +
    lock
    +
    &#xe7fb;
    +
  • + +
  • + +
    align-right
    +
    &#xe7fc;
    +
  • + +
  • + +
    align-left
    +
    &#xe7fd;
    +
  • + +
  • + +
    border-bottom
    +
    &#xe7fe;
    +
  • + +
  • + +
    border-top
    +
    &#xe7ff;
    +
  • + +
  • + +
    align-center
    +
    &#xe800;
    +
  • + +
  • + +
    border-verticle
    +
    &#xe801;
    +
  • + +
  • + +
    pic-center
    +
    &#xe802;
    +
  • + +
  • + +
    pic-side
    +
    &#xe803;
    +
  • + +
  • + +
    folder-open
    +
    &#xe804;
    +
  • + +
  • + +
    folder-plus
    +
    &#xe805;
    +
  • + +
  • + +
    folder
    +
    &#xe806;
    +
  • + +
  • + +
    file-SQL
    +
    &#xe807;
    +
  • + +
  • + +
    file-plus
    +
    &#xe808;
    +
  • + +
  • + +
    file
    +
    &#xe809;
    +
  • + +
  • + +
    copy
    +
    &#xe80a;
    +
  • + +
  • + +
    headset
    +
    &#xe80b;
    +
  • + +
  • + +
    phone
    +
    &#xe80c;
    +
  • + +
  • + +
    pause circle
    +
    &#xe80d;
    +
  • + +
  • + +
    stop circle
    +
    &#xe80e;
    +
  • + +
  • + +
    play circle
    +
    &#xe80f;
    +
  • + +
  • + +
    delete
    +
    &#xe810;
    +
  • + +
  • + +
    picture
    +
    &#xe811;
    +
  • + +
  • + +
    mail
    +
    &#xe812;
    +
  • + +
  • + +
    like
    +
    &#xe813;
    +
  • + +
  • + +
    collection
    +
    &#xe814;
    +
  • + +
  • + +
    user-group
    +
    &#xe815;
    +
  • + +
  • + +
    account-plus
    +
    &#xe816;
    +
  • + +
  • + +
    account
    +
    &#xe817;
    +
  • + +
  • + +
    cog
    +
    &#xe818;
    +
  • + +
  • + +
    clock
    +
    &#xe819;
    +
  • + +
  • + +
    calendar-alt
    +
    &#xe81a;
    +
  • + +
  • + +
    cloud download
    +
    &#xe81b;
    +
  • + +
  • + +
    cloud upload
    +
    &#xe81c;
    +
  • + +
  • + +
    exchange
    +
    &#xe81d;
    +
  • + +
  • + +
    info-circle
    +
    &#xe81e;
    +
  • + +
  • + +
    question-circle
    +
    &#xe81f;
    +
  • + +
  • + +
    exclamation-circle
    +
    &#xe820;
    +
  • + +
  • + +
    minus-circle
    +
    &#xe821;
    +
  • + +
  • + +
    plus-circle
    +
    &#xe822;
    +
  • + +
  • + +
    times-circle
    +
    &#xe823;
    +
  • + +
  • + +
    check-circle
    +
    &#xe824;
    +
  • + +
  • + +
    compress-alt
    +
    &#xe825;
    +
  • + +
  • + +
    expand-alt
    +
    &#xe826;
    +
  • + +
  • + +
    ban
    +
    &#xe827;
    +
  • + +
  • + +
    minus
    +
    &#xe828;
    +
  • + +
  • + +
    plus
    +
    &#xe829;
    +
  • + +
  • + +
    times
    +
    &#xe82a;
    +
  • + +
  • + +
    check
    +
    &#xe82b;
    +
  • + +
  • + +
    search-minus
    +
    &#xe82c;
    +
  • + +
  • + +
    search-plus
    +
    &#xe82d;
    +
  • + +
  • + +
    search
    +
    &#xe82e;
    +
  • + +
  • + +
    reply
    +
    &#xe82f;
    +
  • + +
  • + +
    undo
    +
    &#xe830;
    +
  • + +
  • + +
    redo
    +
    &#xe831;
    +
  • + +
  • + +
    external-link
    +
    &#xe832;
    +
  • + +
  • + +
    arrows-alt
    +
    &#xe833;
    +
  • + +
  • + +
    indent
    +
    &#xe834;
    +
  • + +
  • + +
    outdent
    +
    &#xe835;
    +
  • + +
  • + +
    sort-line
    +
    &#xe836;
    +
  • + +
  • + +
    switch
    +
    &#xe837;
    +
  • + +
  • + +
    wind-descending
    +
    &#xe838;
    +
  • + +
  • + +
    wind-ascending
    +
    &#xe839;
    +
  • + +
  • + +
    download
    +
    &#xe83a;
    +
  • + +
  • + +
    upload
    +
    &#xe83b;
    +
  • + +
  • + +
    arrow-to-bottom
    +
    &#xe83c;
    +
  • + +
  • + +
    arrow-to-top
    +
    &#xe83d;
    +
  • + +
  • + +
    long-arrow-down
    +
    &#xe83e;
    +
  • + +
  • + +
    long-arrow-up
    +
    &#xe83f;
    +
  • + +
  • + +
    arrow-right
    +
    &#xe840;
    +
  • + +
  • + +
    arrow-left
    +
    &#xe841;
    +
  • + +
  • + +
    sort
    +
    &#xe842;
    +
  • + +
  • + +
    sort-down
    +
    &#xe843;
    +
  • + +
  • + +
    sort-up
    +
    &#xe844;
    +
  • + +
  • + +
    caret-right
    +
    &#xe845;
    +
  • + +
  • + +
    caret-left
    +
    &#xe846;
    +
  • + +
  • + +
    arrows-v
    +
    &#xe847;
    +
  • + +
  • + +
    angle- double-down
    +
    &#xe848;
    +
  • + +
  • + +
    angle-double-up
    +
    &#xe849;
    +
  • + +
  • + +
    angle-double-right
    +
    &#xe84a;
    +
  • + +
  • + +
    angle-double-left
    +
    &#xe84b;
    +
  • + +
  • + +
    angle-down
    +
    &#xe84c;
    +
  • + +
  • + +
    angle-up
    +
    &#xe84d;
    +
  • + +
  • + +
    angle-right
    +
    &#xe84e;
    +
  • + +
  • + +
    angle-left
    +
    &#xe84f;
    +
  • + +
  • + +
    paperclip
    +
    &#xe850;
    +
  • + +
  • + +
    connection
    +
    &#xe851;
    +
  • + +
  • + +
    training
    +
    &#xe853;
    +
  • + +
  • + +
    process
    +
    &#xe854;
    +
  • + +
  • + +
    news
    +
    &#xe855;
    +
  • + +
  • + +
    save
    +
    &#xe856;
    +
  • + +
  • + +
    print
    +
    &#xe857;
    +
  • + +
  • + +
    new-releases
    +
    &#xe858;
    +
  • + +
  • + +
    release
    +
    &#xe85a;
    +
  • + +
  • + +
    alert
    +
    &#xe85b;
    +
  • + +
  • + +
    backspace
    +
    &#xe85c;
    +
  • + +
  • + +
    gem
    +
    &#xe85d;
    +
  • + +
  • + +
    integral
    +
    &#xe85e;
    +
  • + +
  • + +
    star-circle
    +
    &#xe85f;
    +
  • + +
  • + +
    user-circle
    +
    &#xe860;
    +
  • + +
  • + +
    cloud-machine-fill
    +
    &#xe861;
    +
  • + +
  • + +
    cloud-machine
    +
    &#xe862;
    +
  • + +
  • + +
    terminal-fill
    +
    &#xe863;
    +
  • + +
  • + +
    terminal
    +
    &#xe864;
    +
  • + +
  • + +
    shopping-cart-fill
    +
    &#xe865;
    +
  • + +
  • + +
    resource
    +
    &#xe867;
    +
  • + +
  • + +
    rank
    +
    &#xe86a;
    +
  • + +
  • + +
    sync-alt
    +
    &#xe86b;
    +
  • + +
  • + +
    compass
    +
    &#xe86c;
    +
  • + +
  • + +
    arrow-alt- from-top
    +
    &#xe86d;
    +
  • + +
  • + +
    arrow-alt-from-botto
    +
    &#xe86e;
    +
  • + +
  • + +
    menu
    +
    &#xe86f;
    +
  • + +
  • + +
    icon-drag
    +
    &#xe870;
    +
  • + +
  • + +
    early-warning
    +
    &#xe871;
    +
  • + +
  • + +
    share
    +
    &#xe872;
    +
  • + +
  • + +
    share
    +
    &#xe873;
    +
  • + +
  • + +
    management
    +
    &#xe874;
    +
  • + +
  • + +
    accesskeys
    +
    &#xe875;
    +
  • + +
  • + +
    arrow-sort down-small
    +
    &#xe877;
    +
  • + +
  • + +
    minus-square-fill
    +
    &#xe878;
    +
  • + +
  • + +
    plus-square-fill
    +
    &#xe879;
    +
  • + +
  • + +
    minus-square
    +
    &#xe87a;
    +
  • + +
  • + +
    plus-square
    +
    &#xe87b;
    +
  • + +
  • + +
    step mode
    +
    &#xe87d;
    +
  • + +
  • + +
    scrolling mode
    +
    &#xe87e;
    +
  • + +
  • + +
    shopping cart
    +
    &#xe881;
    +
  • + +
  • + +
    waiting-fill
    +
    &#xe882;
    +
  • + +
  • + +
    waiting
    +
    &#xe883;
    +
  • + +
  • + +
    right-arrow-rect
    +
    &#xe884;
    +
  • + +
  • + +
    left-arrow-rect
    +
    &#xe885;
    +
  • + +
  • + +
    bell
    +
    &#xe887;
    +
  • + +
  • + +
    structured data
    +
    &#xe888;
    +
  • + +
  • + +
    drag
    +
    &#xe769;
    +
  • + +
  • + +
    vector
    +
    &#xe889;
    +
  • + +
  • + +
    ellipsis-v
    +
    &#xe76a;
    +
  • + +
  • + +
    NEW
    +
    &#xe88a;
    +
  • + +
  • + +
    gallery-view
    +
    &#xe76b;
    +
  • + +
  • + +
    HOT
    +
    &#xe88b;
    +
  • + +
  • + +
    WIFI
    +
    &#xe76c;
    +
  • + +
  • + +
    home
    +
    &#xe88c;
    +
  • + +
  • + +
    bug-report
    +
    &#xe76d;
    +
  • + +
  • + +
    monitoring
    +
    &#xe88e;
    +
  • + +
  • + +
    qrcode
    +
    &#xe76e;
    +
  • + +
  • + +
    diagnose
    +
    &#xe88f;
    +
  • + +
  • + +
    scan
    +
    &#xe76f;
    +
  • + +
  • + +
    loading
    +
    &#xe891;
    +
  • + +
  • + +
    cut
    +
    &#xe770;
    +
  • + +
  • + +
    Directory tree
    +
    &#xe892;
    +
  • + +
  • + +
    gift
    +
    &#xe771;
    +
  • + +
  • + +
    application
    +
    &#xe89e;
    +
  • + +
  • + +
    link
    +
    &#xe772;
    +
  • + +
  • + +
    application group
    +
    &#xe89f;
    +
  • + +
  • + +
    poweroff
    +
    &#xe774;
    +
  • + +
  • + +
    key
    +
    &#xe775;
    +
  • + +
  • + +
    safety-certificate
    +
    &#xe776;
    +
  • + +
  • + +
    supervise
    +
    &#xe777;
    +
  • + +
  • + +
    tag-subscipt
    +
    &#xe78a;
    +
  • + +
  • + +
    chart-pie-alt
    +
    &#xe78c;
    +
  • + +
  • + +
    chart-relation
    +
    &#xe78d;
    +
  • + +
  • + +
    chart-scatter-plot
    +
    &#xe78e;
    +
  • + +
  • + +
    chart-area
    +
    &#xe78f;
    +
  • + +
  • + +
    chart-line
    +
    &#xe790;
    +
  • + +
  • + +
    chart-bar
    +
    &#xe791;
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'tmicon';
+  src: 
+       url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
+       url('iconfont.ttf?t=1667376450105') format('truetype');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.tmicon {
+  font-family: "tmicon" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="tmicon">&#x33;</span>
+
+
+

"tmicon" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + paypal +
    +
    .tmicon-paypal +
    +
  • + +
  • + +
    + google +
    +
    .tmicon-google +
    +
  • + +
  • + +
    + apple-pay +
    +
    .tmicon-apple-pay +
    +
  • + +
  • + +
    + Apple +
    +
    .tmicon-Apple +
    +
  • + +
  • + +
    + google-pay +
    +
    .tmicon-google-pay +
    +
  • + +
  • + +
    + 钱袋 +
    +
    .tmicon-qiandai +
    +
  • + +
  • + +
    + 券 +
    +
    .tmicon-quan +
    +
  • + +
  • + +
    + 红包 +
    +
    .tmicon-hongbao +
    +
  • + +
  • + +
    + 通知-fill +
    +
    .tmicon-tongzhifill +
    +
  • + +
  • + +
    + 人民币3 +
    +
    .tmicon-renminbi3 +
    +
  • + +
  • + +
    + 投票 +
    +
    .tmicon-toupiao +
    +
  • + +
  • + +
    + 票券-色块icon +
    +
    .tmicon-icon +
    +
  • + +
  • + +
    + 足球 +
    +
    .tmicon-svggeshi- +
    +
  • + +
  • + +
    + 美元 +
    +
    .tmicon-meiyuan +
    +
  • + +
  • + +
    + 汽车 +
    +
    .tmicon-qiche +
    +
  • + +
  • + +
    + 通知 +
    +
    .tmicon-tongzhi +
    +
  • + +
  • + +
    + 会员 +
    +
    .tmicon-huiyuan +
    +
  • + +
  • + +
    + md-phone-portrait +
    +
    .tmicon-md-phone-portrait +
    +
  • + +
  • + +
    + md-planet +
    +
    .tmicon-md-planet +
    +
  • + +
  • + +
    + md-phone-landscape +
    +
    .tmicon-md-phone-landscape +
    +
  • + +
  • + +
    + md-power +
    +
    .tmicon-md-power +
    +
  • + +
  • + +
    + md-redo +
    +
    .tmicon-md-redo +
    +
  • + +
  • + +
    + md-rocket +
    +
    .tmicon-md-rocket +
    +
  • + +
  • + +
    + md-ribbon +
    +
    .tmicon-md-ribbon +
    +
  • + +
  • + +
    + md-undo +
    +
    .tmicon-md-undo +
    +
  • + +
  • + +
    + md-trending-down +
    +
    .tmicon-md-trending-down +
    +
  • + +
  • + +
    + md-trending-up +
    +
    .tmicon-md-trending-up +
    +
  • + +
  • + +
    + md-git-merge +
    +
    .tmicon-md-git-merge +
    +
  • + +
  • + +
    + md-female +
    +
    .tmicon-md-female +
    +
  • + +
  • + +
    + md-male +
    +
    .tmicon-md-male +
    +
  • + +
  • + +
    + md-heart-dislike +
    +
    .tmicon-md-heart-dislike +
    +
  • + +
  • + +
    + md-heart +
    +
    .tmicon-md-heart1 +
    +
  • + +
  • + +
    + ios-text +
    +
    .tmicon-ios-text +
    +
  • + +
  • + +
    + ios-rose +
    +
    .tmicon-ios-rose +
    +
  • + +
  • + +
    + logo-game-controller-b +
    +
    .tmicon-logo-game-controller-b +
    +
  • + +
  • + +
    + ios-beer +
    +
    .tmicon-ios-beer +
    +
  • + +
  • + +
    + ios-cafe +
    +
    .tmicon-ios-cafe +
    +
  • + +
  • + +
    + ios-chatbubbles +
    +
    .tmicon-ios-chatbubbles +
    +
  • + +
  • + +
    + ios-color-palette +
    +
    .tmicon-ios-color-palette +
    +
  • + +
  • + +
    + ios-filing +
    +
    .tmicon-ios-filing +
    +
  • + +
  • + +
    + ios-finger-print +
    +
    .tmicon-ios-finger-print +
    +
  • + +
  • + +
    + ios-hand +
    +
    .tmicon-ios-hand +
    +
  • + +
  • + +
    + ios-flower +
    +
    .tmicon-ios-flower +
    +
  • + +
  • + +
    + ios-ice-cream +
    +
    .tmicon-ios-ice-cream +
    +
  • + +
  • + +
    + ios-grid +
    +
    .tmicon-ios-grid +
    +
  • + +
  • + +
    + ios-mail-open +
    +
    .tmicon-ios-mail-open1 +
    +
  • + +
  • + +
    + ios-key +
    +
    .tmicon-ios-key +
    +
  • + +
  • + +
    + ios-man +
    +
    .tmicon-ios-man +
    +
  • + +
  • + +
    + 美元 +
    +
    .tmicon-meiyuan1 +
    +
  • + +
  • + +
    + 自定义 +
    +
    .tmicon-zidingyi +
    +
  • + +
  • + +
    + 刷新 +
    +
    .tmicon-shuaxin +
    +
  • + +
  • + +
    + 会员 +
    +
    .tmicon-huiyuan1 +
    +
  • + +
  • + +
    + 圆 +
    +
    .tmicon-yuan +
    +
  • + +
  • + +
    + ios-airplane +
    +
    .tmicon-ios-airplane +
    +
  • + +
  • + +
    + ios-woman +
    +
    .tmicon-ios-woman +
    +
  • + +
  • + +
    + ios-aperture +
    +
    .tmicon-ios-aperture +
    +
  • + +
  • + +
    + ios-alarm +
    +
    .tmicon-ios-alarm +
    +
  • + +
  • + +
    + ios-arrow-dropdown +
    +
    .tmicon-ios-arrow-dropdown +
    +
  • + +
  • + +
    + ios-arrow-dropleft-c +
    +
    .tmicon-ios-arrow-dropleft-c +
    +
  • + +
  • + +
    + ios-arrow-dropleft +
    +
    .tmicon-ios-arrow-dropleft +
    +
  • + +
  • + +
    + ios-arrow-dropup +
    +
    .tmicon-ios-arrow-dropup +
    +
  • + +
  • + +
    + ios-arrow-dropright- +
    +
    .tmicon-ios-arrow-dropright- +
    +
  • + +
  • + +
    + ios-arrow-dropdown-c +
    +
    .tmicon-ios-arrow-dropdown-c +
    +
  • + +
  • + +
    + ios-arrow-dropup-cir +
    +
    .tmicon-ios-arrow-dropup-cir +
    +
  • + +
  • + +
    + ios-arrow-dropright +
    +
    .tmicon-ios-arrow-dropright +
    +
  • + +
  • + +
    + ios-attach +
    +
    .tmicon-ios-attach +
    +
  • + +
  • + +
    + ios-at +
    +
    .tmicon-ios-at +
    +
  • + +
  • + +
    + ios-bed +
    +
    .tmicon-ios-bed +
    +
  • + +
  • + +
    + ios-battery-full +
    +
    .tmicon-ios-battery-full +
    +
  • + +
  • + +
    + ios-bookmarks +
    +
    .tmicon-ios-bookmarks +
    +
  • + +
  • + +
    + ios-bluetooth +
    +
    .tmicon-ios-bluetooth +
    +
  • + +
  • + +
    + ios-cellular +
    +
    .tmicon-ios-cellular +
    +
  • + +
  • + +
    + ios-cut +
    +
    .tmicon-ios-cut +
    +
  • + +
  • + +
    + ios-leaf +
    +
    .tmicon-ios-leaf +
    +
  • + +
  • + +
    + ios-mic +
    +
    .tmicon-ios-mic +
    +
  • + +
  • + +
    + ios-mail-open +
    +
    .tmicon-ios-mail-open +
    +
  • + +
  • + +
    + ios-partly-sunny +
    +
    .tmicon-ios-partly-sunny +
    +
  • + +
  • + +
    + ios-radio-button-on +
    +
    .tmicon-ios-radio-button-on +
    +
  • + +
  • + +
    + ios-radio-button-off +
    +
    .tmicon-ios-radio-button-off +
    +
  • + +
  • + +
    + ios-remove +
    +
    .tmicon-ios-remove +
    +
  • + +
  • + +
    + ios-remove-circle-ou +
    +
    .tmicon-ios-remove-circle-ou +
    +
  • + +
  • + +
    + ios-remove-circle +
    +
    .tmicon-ios-remove-circle +
    +
  • + +
  • + +
    + ios-rocket +
    +
    .tmicon-ios-rocket +
    +
  • + +
  • + +
    + ios-ribbon +
    +
    .tmicon-ios-ribbon +
    +
  • + +
  • + +
    + ios-star +
    +
    .tmicon-ios-star +
    +
  • + +
  • + +
    + ios-star-half +
    +
    .tmicon-ios-star-half +
    +
  • + +
  • + +
    + ios-star-outline +
    +
    .tmicon-ios-star-outline +
    +
  • + +
  • + +
    + ios-snow +
    +
    .tmicon-ios-snow +
    +
  • + +
  • + +
    + ios-stopwatch +
    +
    .tmicon-ios-stopwatch +
    +
  • + +
  • + +
    + ios-sunny +
    +
    .tmicon-ios-sunny +
    +
  • + +
  • + +
    + ios-unlock +
    +
    .tmicon-ios-unlock +
    +
  • + +
  • + +
    + ios-trophy +
    +
    .tmicon-ios-trophy +
    +
  • + +
  • + +
    + ios-umbrella +
    +
    .tmicon-ios-umbrella +
    +
  • + +
  • + +
    + ios-videocam +
    +
    .tmicon-ios-videocam +
    +
  • + +
  • + +
    + ios-volume-high +
    +
    .tmicon-ios-volume-high +
    +
  • + +
  • + +
    + ios-water +
    +
    .tmicon-ios-water +
    +
  • + +
  • + +
    + ios-wifi +
    +
    .tmicon-ios-wifi +
    +
  • + +
  • + +
    + md-water +
    +
    .tmicon-md-water +
    +
  • + +
  • + +
    + md-checkbox +
    +
    .tmicon-md-checkbox +
    +
  • + +
  • + +
    + md-chatbubbles +
    +
    .tmicon-md-chatbubbles +
    +
  • + +
  • + +
    + md-chatboxes +
    +
    .tmicon-md-chatboxes +
    +
  • + +
  • + +
    + md-cloud-done +
    +
    .tmicon-md-cloud-done +
    +
  • + +
  • + +
    + md-cloud-upload +
    +
    .tmicon-md-cloud-upload +
    +
  • + +
  • + +
    + md-cloudy +
    +
    .tmicon-md-cloudy +
    +
  • + +
  • + +
    + md-contrast +
    +
    .tmicon-md-contrast +
    +
  • + +
  • + +
    + md-disc +
    +
    .tmicon-md-disc +
    +
  • + +
  • + +
    + md-heart-empty +
    +
    .tmicon-md-heart-empty +
    +
  • + +
  • + +
    + md-heart +
    +
    .tmicon-md-heart +
    +
  • + +
  • + +
    + md-home +
    +
    .tmicon-md-home +
    +
  • + +
  • + +
    + md-mail-open +
    +
    .tmicon-md-mail-open +
    +
  • + +
  • + +
    + md-heart-half +
    +
    .tmicon-md-heart-half +
    +
  • + +
  • + +
    + md-person +
    +
    .tmicon-md-person +
    +
  • + +
  • + +
    + md-people +
    +
    .tmicon-md-people +
    +
  • + +
  • + +
    + md-more +
    +
    .tmicon-md-more +
    +
  • + +
  • + +
    + md-moon +
    +
    .tmicon-md-moon +
    +
  • + +
  • + +
    + md-pin +
    +
    .tmicon-md-pin +
    +
  • + +
  • + +
    + 更多 +
    +
    .tmicon-gengduo +
    +
  • + +
  • + +
    + IOS +
    +
    .tmicon-ios +
    +
  • + +
  • + +
    + wifi-off +
    +
    .tmicon-wifi-off +
    +
  • + +
  • + +
    + 列表空空 +
    +
    .tmicon-shiliangzhinengduixiang- +
    +
  • + +
  • + +
    + 微信支付 +
    +
    .tmicon-weixinzhifu +
    +
  • + +
  • + +
    + 银行卡 +
    +
    .tmicon-yinhangqia +
    +
  • + +
  • + +
    + 云闪付 +
    +
    .tmicon-yunshanfu +
    +
  • + +
  • + +
    + 头条样式 +
    +
    .tmicon-toutiaoyangshi +
    +
  • + +
  • + +
    + 抖音 +
    +
    .tmicon-douyin +
    +
  • + +
  • + +
    + 支付,支付宝 +
    +
    .tmicon-alipay +
    +
  • + +
  • + +
    + 华为 +
    +
    .tmicon-huawei +
    +
  • + +
  • + +
    + 链接 +
    +
    .tmicon-lianjie +
    +
  • + +
  • + +
    + 微信 +
    +
    .tmicon-weixin +
    +
  • + +
  • + +
    + 朋友圈 +
    +
    .tmicon-pengyouquan +
    +
  • + +
  • + +
    + 微博 +
    +
    .tmicon-weibo +
    +
  • + +
  • + +
    + QQ +
    +
    .tmicon-QQ +
    +
  • + +
  • + +
    + 小程序 +
    +
    .tmicon-xiaochengxu +
    +
  • + +
  • + +
    + display-code +
    +
    .tmicon-display-code +
    +
  • + +
  • + +
    + display-arrow-right +
    +
    .tmicon-display-arrow-right +
    +
  • + +
  • + +
    + display-arrow-left +
    +
    .tmicon-display-arrow-left +
    +
  • + +
  • + +
    + laptop-error +
    +
    .tmicon-laptop-error +
    +
  • + +
  • + +
    + laptop-check +
    +
    .tmicon-laptop-check +
    +
  • + +
  • + +
    + laptop +
    +
    .tmicon-laptop +
    +
  • + +
  • + +
    + mobile-error +
    +
    .tmicon-mobile-error +
    +
  • + +
  • + +
    + mobile-check +
    +
    .tmicon-mobile-check +
    +
  • + +
  • + +
    + mobile-alt +
    +
    .tmicon-mobile-alt +
    +
  • + +
  • + +
    + aliwangwang +
    +
    .tmicon-aliwangwang +
    +
  • + +
  • + +
    + nail +
    +
    .tmicon-nail +
    +
  • + +
  • + +
    + nail-fixed +
    +
    .tmicon-nail-fixed +
    +
  • + +
  • + +
    + edit +
    +
    .tmicon-edit +
    +
  • + +
  • + +
    + dollar +
    +
    .tmicon-dollar +
    +
  • + +
  • + +
    + transanction +
    +
    .tmicon-transanction +
    +
  • + +
  • + +
    + filter-fill +
    +
    .tmicon-filter-fill +
    +
  • + +
  • + +
    + all-fill +
    +
    .tmicon-all-fill +
    +
  • + +
  • + +
    + database plus-fill +
    +
    .tmicon-databaseplus-fill +
    +
  • + +
  • + +
    + database-fill +
    +
    .tmicon-database-fill +
    +
  • + +
  • + +
    + comment lines-fill +
    +
    .tmicon-commentlines-fill +
    +
  • + +
  • + +
    + comment dots-fill +
    +
    .tmicon-commentdots-fill +
    +
  • + +
  • + +
    + paper plane-fill +
    +
    .tmicon-paperplane-fill +
    +
  • + +
  • + +
    + eye slash-fill +
    +
    .tmicon-eyeslash-fill +
    +
  • + +
  • + +
    + eye-fill +
    +
    .tmicon-eye-fill +
    +
  • + +
  • + +
    + lightbulb-fill +
    +
    .tmicon-lightbulb-fill +
    +
  • + +
  • + +
    + flag-fill +
    +
    .tmicon-flag-fill +
    +
  • + +
  • + +
    + tag-fill +
    +
    .tmicon-tag-fill +
    +
  • + +
  • + +
    + position-fill +
    +
    .tmicon-position-fill +
    +
  • + +
  • + +
    + location-fill +
    +
    .tmicon-location-fill +
    +
  • + +
  • + +
    + map-fill +
    +
    .tmicon-map-fill +
    +
  • + +
  • + +
    + inbox in-fill +
    +
    .tmicon-inboxin-fill +
    +
  • + +
  • + +
    + box-fill +
    +
    .tmicon-box-fill +
    +
  • + +
  • + +
    + database set-fill +
    +
    .tmicon-databaseset-fill +
    +
  • + +
  • + +
    + layer group-fill +
    +
    .tmicon-layergroup-fill +
    +
  • + +
  • + +
    + cry-fill +
    +
    .tmicon-cry-fill +
    +
  • + +
  • + +
    + smile-fill +
    +
    .tmicon-smile-fill +
    +
  • + +
  • + +
    + unlock-fill +
    +
    .tmicon-unlock-fill +
    +
  • + +
  • + +
    + lock-fill +
    +
    .tmicon-lock-fill +
    +
  • + +
  • + +
    + align right-fill +
    +
    .tmicon-alignright-fill +
    +
  • + +
  • + +
    + align left-fill +
    +
    .tmicon-alignleft-fill +
    +
  • + +
  • + +
    + border bottom-fill +
    +
    .tmicon-borderbottom-fill +
    +
  • + +
  • + +
    + border top-fill +
    +
    .tmicon-bordertop-fill +
    +
  • + +
  • + +
    + align center-fill +
    +
    .tmicon-aligncenter-fill +
    +
  • + +
  • + +
    + sort-down-copy +
    +
    .tmicon-sort-down-nogap-copy +
    +
  • + +
  • + +
    + border verticle-fill +
    +
    .tmicon-borderverticle-fill +
    +
  • + +
  • + +
    + pic center-fill +
    +
    .tmicon-piccenter-fill +
    +
  • + +
  • + +
    + pic side-fill +
    +
    .tmicon-picside-fill +
    +
  • + +
  • + +
    + folder open-fill +
    +
    .tmicon-folderopen-fill +
    +
  • + +
  • + +
    + folder plus-fill +
    +
    .tmicon-folderplus-fill +
    +
  • + +
  • + +
    + folder-fill +
    +
    .tmicon-folder-fill +
    +
  • + +
  • + +
    + file-SQL +
    +
    .tmicon-file-SQL +
    +
  • + +
  • + +
    + file plus-fill +
    +
    .tmicon-fileplus-fill +
    +
  • + +
  • + +
    + file-fill +
    +
    .tmicon-file-fill +
    +
  • + +
  • + +
    + copy-fill +
    +
    .tmicon-copy-fill +
    +
  • + +
  • + +
    + headset-fill +
    +
    .tmicon-headset-fill +
    +
  • + +
  • + +
    + phone-fill +
    +
    .tmicon-phone-fill +
    +
  • + +
  • + +
    + pause circle-fill +
    +
    .tmicon-pausecircle-fill +
    +
  • + +
  • + +
    + stop circle-fill +
    +
    .tmicon-stopcircle-fill +
    +
  • + +
  • + +
    + play circle-fill +
    +
    .tmicon-playcircle-fill +
    +
  • + +
  • + +
    + delete-fill +
    +
    .tmicon-delete-fill +
    +
  • + +
  • + +
    + picture-fill +
    +
    .tmicon-picture-fill +
    +
  • + +
  • + +
    + mail-fill +
    +
    .tmicon-mail-fill +
    +
  • + +
  • + +
    + heart-fill +
    +
    .tmicon-heart-fill +
    +
  • + +
  • + +
    + collection-fill +
    +
    .tmicon-collection-fill +
    +
  • + +
  • + +
    + user-group-fill +
    +
    .tmicon-user-group-fill +
    +
  • + +
  • + +
    + user plus-fill +
    +
    .tmicon-userplus-fill +
    +
  • + +
  • + +
    + user-fill +
    +
    .tmicon-user-fill +
    +
  • + +
  • + +
    + cog-fill +
    +
    .tmicon-cog-fill +
    +
  • + +
  • + +
    + clock-fill +
    +
    .tmicon-clock-fill +
    +
  • + +
  • + +
    + calendar alt-fill +
    +
    .tmicon-calendaralt-fill +
    +
  • + +
  • + +
    + cloud download-fill +
    +
    .tmicon-clouddownload-fill +
    +
  • + +
  • + +
    + cloud upload-fill +
    +
    .tmicon-cloudupload-fill +
    +
  • + +
  • + +
    + exchange-fill +
    +
    .tmicon-exchange-fill +
    +
  • + +
  • + +
    + info-circle-fill +
    +
    .tmicon-info-circle-fill +
    +
  • + +
  • + +
    + question-circle-fill +
    +
    .tmicon-question-circle-fill +
    +
  • + +
  • + +
    + exclamation circle-f +
    +
    .tmicon-exclamationcircle-f +
    +
  • + +
  • + +
    + minus-circle-fill +
    +
    .tmicon-minus-circle-fill +
    +
  • + +
  • + +
    + plus-circle-fill +
    +
    .tmicon-plus-circle-fill +
    +
  • + +
  • + +
    + times-circle-fill +
    +
    .tmicon-times-circle-fill +
    +
  • + +
  • + +
    + check-circle-fill +
    +
    .tmicon-check-circle-fill +
    +
  • + +
  • + +
    + compress alt-fill +
    +
    .tmicon-compressalt-fill +
    +
  • + +
  • + +
    + expand alt-fill +
    +
    .tmicon-expandalt-fill +
    +
  • + +
  • + +
    + filter +
    +
    .tmicon-filter +
    +
  • + +
  • + +
    + all +
    +
    .tmicon-all +
    +
  • + +
  • + +
    + database-plus +
    +
    .tmicon-database-plus +
    +
  • + +
  • + +
    + database +
    +
    .tmicon-database +
    +
  • + +
  • + +
    + comment-lines +
    +
    .tmicon-comment-lines +
    +
  • + +
  • + +
    + comment-dots +
    +
    .tmicon-comment-dots +
    +
  • + +
  • + +
    + paper-plane +
    +
    .tmicon-paper-plane +
    +
  • + +
  • + +
    + eye-slash +
    +
    .tmicon-eye-slash +
    +
  • + +
  • + +
    + eye +
    +
    .tmicon-eye +
    +
  • + +
  • + +
    + lightbulb +
    +
    .tmicon-lightbulb +
    +
  • + +
  • + +
    + flag +
    +
    .tmicon-flag +
    +
  • + +
  • + +
    + tag +
    +
    .tmicon-tag +
    +
  • + +
  • + +
    + position +
    +
    .tmicon-position +
    +
  • + +
  • + +
    + location +
    +
    .tmicon-location +
    +
  • + +
  • + +
    + map +
    +
    .tmicon-map +
    +
  • + +
  • + +
    + inbox-in +
    +
    .tmicon-inbox-in +
    +
  • + +
  • + +
    + box +
    +
    .tmicon-box +
    +
  • + +
  • + +
    + database-set +
    +
    .tmicon-database-set +
    +
  • + +
  • + +
    + layer-group +
    +
    .tmicon-layer-group +
    +
  • + +
  • + +
    + wind-cry +
    +
    .tmicon-wind-cry +
    +
  • + +
  • + +
    + wind-smile +
    +
    .tmicon-wind-smile +
    +
  • + +
  • + +
    + unlock +
    +
    .tmicon-unlock +
    +
  • + +
  • + +
    + lock +
    +
    .tmicon-lock +
    +
  • + +
  • + +
    + align-right +
    +
    .tmicon-align-right +
    +
  • + +
  • + +
    + align-left +
    +
    .tmicon-align-left +
    +
  • + +
  • + +
    + border-bottom +
    +
    .tmicon-border-bottom +
    +
  • + +
  • + +
    + border-top +
    +
    .tmicon-border-top +
    +
  • + +
  • + +
    + align-center +
    +
    .tmicon-align-center +
    +
  • + +
  • + +
    + border-verticle +
    +
    .tmicon-border-verticle +
    +
  • + +
  • + +
    + pic-center +
    +
    .tmicon-pic-center +
    +
  • + +
  • + +
    + pic-side +
    +
    .tmicon-pic-side +
    +
  • + +
  • + +
    + folder-open +
    +
    .tmicon-folder-open +
    +
  • + +
  • + +
    + folder-plus +
    +
    .tmicon-folder-plus +
    +
  • + +
  • + +
    + folder +
    +
    .tmicon-folder +
    +
  • + +
  • + +
    + file-SQL +
    +
    .tmicon-file-SQL1 +
    +
  • + +
  • + +
    + file-plus +
    +
    .tmicon-file-plus +
    +
  • + +
  • + +
    + file +
    +
    .tmicon-file +
    +
  • + +
  • + +
    + copy +
    +
    .tmicon-copy +
    +
  • + +
  • + +
    + headset +
    +
    .tmicon-headset +
    +
  • + +
  • + +
    + phone +
    +
    .tmicon-phone +
    +
  • + +
  • + +
    + pause circle +
    +
    .tmicon-pausecircle +
    +
  • + +
  • + +
    + stop circle +
    +
    .tmicon-stopcircle +
    +
  • + +
  • + +
    + play circle +
    +
    .tmicon-playcircle +
    +
  • + +
  • + +
    + delete +
    +
    .tmicon-delete +
    +
  • + +
  • + +
    + picture +
    +
    .tmicon-picture +
    +
  • + +
  • + +
    + mail +
    +
    .tmicon-mail +
    +
  • + +
  • + +
    + like +
    +
    .tmicon-like +
    +
  • + +
  • + +
    + collection +
    +
    .tmicon-collection +
    +
  • + +
  • + +
    + user-group +
    +
    .tmicon-user-group +
    +
  • + +
  • + +
    + account-plus +
    +
    .tmicon-account-plus +
    +
  • + +
  • + +
    + account +
    +
    .tmicon-account +
    +
  • + +
  • + +
    + cog +
    +
    .tmicon-cog +
    +
  • + +
  • + +
    + clock +
    +
    .tmicon-clock +
    +
  • + +
  • + +
    + calendar-alt +
    +
    .tmicon-calendar-alt +
    +
  • + +
  • + +
    + cloud download +
    +
    .tmicon-clouddownload +
    +
  • + +
  • + +
    + cloud upload +
    +
    .tmicon-cloudupload +
    +
  • + +
  • + +
    + exchange +
    +
    .tmicon-exchange +
    +
  • + +
  • + +
    + info-circle +
    +
    .tmicon-info-circle +
    +
  • + +
  • + +
    + question-circle +
    +
    .tmicon-question-circle +
    +
  • + +
  • + +
    + exclamation-circle +
    +
    .tmicon-exclamation-circle +
    +
  • + +
  • + +
    + minus-circle +
    +
    .tmicon-minus-circle +
    +
  • + +
  • + +
    + plus-circle +
    +
    .tmicon-plus-circle +
    +
  • + +
  • + +
    + times-circle +
    +
    .tmicon-times-circle +
    +
  • + +
  • + +
    + check-circle +
    +
    .tmicon-check-circle +
    +
  • + +
  • + +
    + compress-alt +
    +
    .tmicon-compress-alt +
    +
  • + +
  • + +
    + expand-alt +
    +
    .tmicon-expand-alt +
    +
  • + +
  • + +
    + ban +
    +
    .tmicon-ban +
    +
  • + +
  • + +
    + minus +
    +
    .tmicon-minus +
    +
  • + +
  • + +
    + plus +
    +
    .tmicon-plus +
    +
  • + +
  • + +
    + times +
    +
    .tmicon-times +
    +
  • + +
  • + +
    + check +
    +
    .tmicon-check +
    +
  • + +
  • + +
    + search-minus +
    +
    .tmicon-search-minus +
    +
  • + +
  • + +
    + search-plus +
    +
    .tmicon-search-plus +
    +
  • + +
  • + +
    + search +
    +
    .tmicon-search +
    +
  • + +
  • + +
    + reply +
    +
    .tmicon-reply +
    +
  • + +
  • + +
    + undo +
    +
    .tmicon-undo +
    +
  • + +
  • + +
    + redo +
    +
    .tmicon-redo +
    +
  • + +
  • + +
    + external-link +
    +
    .tmicon-external-link +
    +
  • + +
  • + +
    + arrows-alt +
    +
    .tmicon-arrows-alt +
    +
  • + +
  • + +
    + indent +
    +
    .tmicon-indent +
    +
  • + +
  • + +
    + outdent +
    +
    .tmicon-outdent +
    +
  • + +
  • + +
    + sort-line +
    +
    .tmicon-sort-line +
    +
  • + +
  • + +
    + switch +
    +
    .tmicon-switch +
    +
  • + +
  • + +
    + wind-descending +
    +
    .tmicon-wind-descending +
    +
  • + +
  • + +
    + wind-ascending +
    +
    .tmicon-wind-ascending +
    +
  • + +
  • + +
    + download +
    +
    .tmicon-download +
    +
  • + +
  • + +
    + upload +
    +
    .tmicon-upload +
    +
  • + +
  • + +
    + arrow-to-bottom +
    +
    .tmicon-arrow-to-bottom +
    +
  • + +
  • + +
    + arrow-to-top +
    +
    .tmicon-arrow-to-top +
    +
  • + +
  • + +
    + long-arrow-down +
    +
    .tmicon-long-arrow-down +
    +
  • + +
  • + +
    + long-arrow-up +
    +
    .tmicon-long-arrow-up +
    +
  • + +
  • + +
    + arrow-right +
    +
    .tmicon-arrow-right +
    +
  • + +
  • + +
    + arrow-left +
    +
    .tmicon-arrow-left +
    +
  • + +
  • + +
    + sort +
    +
    .tmicon-sort +
    +
  • + +
  • + +
    + sort-down +
    +
    .tmicon-sort-down +
    +
  • + +
  • + +
    + sort-up +
    +
    .tmicon-sort-up +
    +
  • + +
  • + +
    + caret-right +
    +
    .tmicon-caret-right +
    +
  • + +
  • + +
    + caret-left +
    +
    .tmicon-caret-left +
    +
  • + +
  • + +
    + arrows-v +
    +
    .tmicon-arrows-v +
    +
  • + +
  • + +
    + angle- double-down +
    +
    .tmicon-angle-double-down +
    +
  • + +
  • + +
    + angle-double-up +
    +
    .tmicon-angle-double-up +
    +
  • + +
  • + +
    + angle-double-right +
    +
    .tmicon-angle-double-right +
    +
  • + +
  • + +
    + angle-double-left +
    +
    .tmicon-angle-double-left +
    +
  • + +
  • + +
    + angle-down +
    +
    .tmicon-angle-down +
    +
  • + +
  • + +
    + angle-up +
    +
    .tmicon-angle-up +
    +
  • + +
  • + +
    + angle-right +
    +
    .tmicon-angle-right +
    +
  • + +
  • + +
    + angle-left +
    +
    .tmicon-angle-left +
    +
  • + +
  • + +
    + paperclip +
    +
    .tmicon-paperclip +
    +
  • + +
  • + +
    + connection +
    +
    .tmicon-connection +
    +
  • + +
  • + +
    + training +
    +
    .tmicon-training +
    +
  • + +
  • + +
    + process +
    +
    .tmicon-process +
    +
  • + +
  • + +
    + news +
    +
    .tmicon-news +
    +
  • + +
  • + +
    + save +
    +
    .tmicon-save +
    +
  • + +
  • + +
    + print +
    +
    .tmicon-print +
    +
  • + +
  • + +
    + new-releases +
    +
    .tmicon-new-releases +
    +
  • + +
  • + +
    + release +
    +
    .tmicon-release +
    +
  • + +
  • + +
    + alert +
    +
    .tmicon-alert +
    +
  • + +
  • + +
    + backspace +
    +
    .tmicon-backspace +
    +
  • + +
  • + +
    + gem +
    +
    .tmicon-gem +
    +
  • + +
  • + +
    + integral +
    +
    .tmicon-integral +
    +
  • + +
  • + +
    + star-circle +
    +
    .tmicon-star-circle +
    +
  • + +
  • + +
    + user-circle +
    +
    .tmicon-user-circle +
    +
  • + +
  • + +
    + cloud-machine-fill +
    +
    .tmicon-cloud-machine-fill +
    +
  • + +
  • + +
    + cloud-machine +
    +
    .tmicon-cloud-machine +
    +
  • + +
  • + +
    + terminal-fill +
    +
    .tmicon-terminal-fill +
    +
  • + +
  • + +
    + terminal +
    +
    .tmicon-terminal +
    +
  • + +
  • + +
    + shopping-cart-fill +
    +
    .tmicon-shopping-cart-fill +
    +
  • + +
  • + +
    + resource +
    +
    .tmicon-resource +
    +
  • + +
  • + +
    + rank +
    +
    .tmicon-rank +
    +
  • + +
  • + +
    + sync-alt +
    +
    .tmicon-sync-alt +
    +
  • + +
  • + +
    + compass +
    +
    .tmicon-compass +
    +
  • + +
  • + +
    + arrow-alt- from-top +
    +
    .tmicon-arrow-alt-from-top +
    +
  • + +
  • + +
    + arrow-alt-from-botto +
    +
    .tmicon-arrow-alt-from-botto +
    +
  • + +
  • + +
    + menu +
    +
    .tmicon-menu +
    +
  • + +
  • + +
    + icon-drag +
    +
    .tmicon-icon-drag +
    +
  • + +
  • + +
    + early-warning +
    +
    .tmicon-early-warning +
    +
  • + +
  • + +
    + share +
    +
    .tmicon-share +
    +
  • + +
  • + +
    + share +
    +
    .tmicon-share1 +
    +
  • + +
  • + +
    + management +
    +
    .tmicon-management- +
    +
  • + +
  • + +
    + accesskeys +
    +
    .tmicon-accesskeys +
    +
  • + +
  • + +
    + arrow-sort down-small +
    +
    .tmicon-arrow-sortdown-smal +
    +
  • + +
  • + +
    + minus-square-fill +
    +
    .tmicon-minus-square-fill +
    +
  • + +
  • + +
    + plus-square-fill +
    +
    .tmicon-plus-square-fill +
    +
  • + +
  • + +
    + minus-square +
    +
    .tmicon-minus-square +
    +
  • + +
  • + +
    + plus-square +
    +
    .tmicon-plus-square +
    +
  • + +
  • + +
    + step mode +
    +
    .tmicon-stepmode +
    +
  • + +
  • + +
    + scrolling mode +
    +
    .tmicon-scrollingmode +
    +
  • + +
  • + +
    + shopping cart +
    +
    .tmicon-shoppingcart +
    +
  • + +
  • + +
    + waiting-fill +
    +
    .tmicon-waiting-fill +
    +
  • + +
  • + +
    + waiting +
    +
    .tmicon-waiting +
    +
  • + +
  • + +
    + right-arrow-rect +
    +
    .tmicon-right-arrow-rect +
    +
  • + +
  • + +
    + left-arrow-rect +
    +
    .tmicon-left-arrow-rect +
    +
  • + +
  • + +
    + bell +
    +
    .tmicon-bell +
    +
  • + +
  • + +
    + structured data +
    +
    .tmicon-structured-data +
    +
  • + +
  • + +
    + drag +
    +
    .tmicon-drag +
    +
  • + +
  • + +
    + vector +
    +
    .tmicon-vector +
    +
  • + +
  • + +
    + ellipsis-v +
    +
    .tmicon-ellipsis-vertical +
    +
  • + +
  • + +
    + NEW +
    +
    .tmicon-NEW-copy +
    +
  • + +
  • + +
    + gallery-view +
    +
    .tmicon-gallery-view +
    +
  • + +
  • + +
    + HOT +
    +
    .tmicon-HOT-copy +
    +
  • + +
  • + +
    + WIFI +
    +
    .tmicon-WIFI +
    +
  • + +
  • + +
    + home +
    +
    .tmicon-home +
    +
  • + +
  • + +
    + bug-report +
    +
    .tmicon-bug-report +
    +
  • + +
  • + +
    + monitoring +
    +
    .tmicon-monitoring +
    +
  • + +
  • + +
    + qrcode +
    +
    .tmicon-qrcode +
    +
  • + +
  • + +
    + diagnose +
    +
    .tmicon-diagnose +
    +
  • + +
  • + +
    + scan +
    +
    .tmicon-scan +
    +
  • + +
  • + +
    + loading +
    +
    .tmicon-loading +
    +
  • + +
  • + +
    + cut +
    +
    .tmicon-cut +
    +
  • + +
  • + +
    + Directory tree +
    +
    .tmicon-Directory-tree +
    +
  • + +
  • + +
    + gift +
    +
    .tmicon-gift +
    +
  • + +
  • + +
    + application +
    +
    .tmicon-application +
    +
  • + +
  • + +
    + link +
    +
    .tmicon-link +
    +
  • + +
  • + +
    + application group +
    +
    .tmicon-applicationgroup +
    +
  • + +
  • + +
    + poweroff +
    +
    .tmicon-poweroff +
    +
  • + +
  • + +
    + key +
    +
    .tmicon-key +
    +
  • + +
  • + +
    + safety-certificate +
    +
    .tmicon-safety-certificate +
    +
  • + +
  • + +
    + supervise +
    +
    .tmicon-supervise +
    +
  • + +
  • + +
    + tag-subscipt +
    +
    .tmicon-tag-subscipt +
    +
  • + +
  • + +
    + chart-pie-alt +
    +
    .tmicon-chart-pie-alt +
    +
  • + +
  • + +
    + chart-relation +
    +
    .tmicon-chart-relation +
    +
  • + +
  • + +
    + chart-scatter-plot +
    +
    .tmicon-chart-scatter-plot +
    +
  • + +
  • + +
    + chart-area +
    +
    .tmicon-chart-area +
    +
  • + +
  • + +
    + chart-line +
    +
    .tmicon-chart-line +
    +
  • + +
  • + +
    + chart-bar +
    +
    .tmicon-chart-bar +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="tmicon tmicon-xxx"></span>
+
+
+

" + tmicon" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    paypal
    +
    #tmicon-paypal
    +
  • + +
  • + +
    google
    +
    #tmicon-google
    +
  • + +
  • + +
    apple-pay
    +
    #tmicon-apple-pay
    +
  • + +
  • + +
    Apple
    +
    #tmicon-Apple
    +
  • + +
  • + +
    google-pay
    +
    #tmicon-google-pay
    +
  • + +
  • + +
    钱袋
    +
    #tmicon-qiandai
    +
  • + +
  • + +
    +
    #tmicon-quan
    +
  • + +
  • + +
    红包
    +
    #tmicon-hongbao
    +
  • + +
  • + +
    通知-fill
    +
    #tmicon-tongzhifill
    +
  • + +
  • + +
    人民币3
    +
    #tmicon-renminbi3
    +
  • + +
  • + +
    投票
    +
    #tmicon-toupiao
    +
  • + +
  • + +
    票券-色块icon
    +
    #tmicon-icon
    +
  • + +
  • + +
    足球
    +
    #tmicon-svggeshi-
    +
  • + +
  • + +
    美元
    +
    #tmicon-meiyuan
    +
  • + +
  • + +
    汽车
    +
    #tmicon-qiche
    +
  • + +
  • + +
    通知
    +
    #tmicon-tongzhi
    +
  • + +
  • + +
    会员
    +
    #tmicon-huiyuan
    +
  • + +
  • + +
    md-phone-portrait
    +
    #tmicon-md-phone-portrait
    +
  • + +
  • + +
    md-planet
    +
    #tmicon-md-planet
    +
  • + +
  • + +
    md-phone-landscape
    +
    #tmicon-md-phone-landscape
    +
  • + +
  • + +
    md-power
    +
    #tmicon-md-power
    +
  • + +
  • + +
    md-redo
    +
    #tmicon-md-redo
    +
  • + +
  • + +
    md-rocket
    +
    #tmicon-md-rocket
    +
  • + +
  • + +
    md-ribbon
    +
    #tmicon-md-ribbon
    +
  • + +
  • + +
    md-undo
    +
    #tmicon-md-undo
    +
  • + +
  • + +
    md-trending-down
    +
    #tmicon-md-trending-down
    +
  • + +
  • + +
    md-trending-up
    +
    #tmicon-md-trending-up
    +
  • + +
  • + +
    md-git-merge
    +
    #tmicon-md-git-merge
    +
  • + +
  • + +
    md-female
    +
    #tmicon-md-female
    +
  • + +
  • + +
    md-male
    +
    #tmicon-md-male
    +
  • + +
  • + +
    md-heart-dislike
    +
    #tmicon-md-heart-dislike
    +
  • + +
  • + +
    md-heart
    +
    #tmicon-md-heart1
    +
  • + +
  • + +
    ios-text
    +
    #tmicon-ios-text
    +
  • + +
  • + +
    ios-rose
    +
    #tmicon-ios-rose
    +
  • + +
  • + +
    logo-game-controller-b
    +
    #tmicon-logo-game-controller-b
    +
  • + +
  • + +
    ios-beer
    +
    #tmicon-ios-beer
    +
  • + +
  • + +
    ios-cafe
    +
    #tmicon-ios-cafe
    +
  • + +
  • + +
    ios-chatbubbles
    +
    #tmicon-ios-chatbubbles
    +
  • + +
  • + +
    ios-color-palette
    +
    #tmicon-ios-color-palette
    +
  • + +
  • + +
    ios-filing
    +
    #tmicon-ios-filing
    +
  • + +
  • + +
    ios-finger-print
    +
    #tmicon-ios-finger-print
    +
  • + +
  • + +
    ios-hand
    +
    #tmicon-ios-hand
    +
  • + +
  • + +
    ios-flower
    +
    #tmicon-ios-flower
    +
  • + +
  • + +
    ios-ice-cream
    +
    #tmicon-ios-ice-cream
    +
  • + +
  • + +
    ios-grid
    +
    #tmicon-ios-grid
    +
  • + +
  • + +
    ios-mail-open
    +
    #tmicon-ios-mail-open1
    +
  • + +
  • + +
    ios-key
    +
    #tmicon-ios-key
    +
  • + +
  • + +
    ios-man
    +
    #tmicon-ios-man
    +
  • + +
  • + +
    美元
    +
    #tmicon-meiyuan1
    +
  • + +
  • + +
    自定义
    +
    #tmicon-zidingyi
    +
  • + +
  • + +
    刷新
    +
    #tmicon-shuaxin
    +
  • + +
  • + +
    会员
    +
    #tmicon-huiyuan1
    +
  • + +
  • + +
    +
    #tmicon-yuan
    +
  • + +
  • + +
    ios-airplane
    +
    #tmicon-ios-airplane
    +
  • + +
  • + +
    ios-woman
    +
    #tmicon-ios-woman
    +
  • + +
  • + +
    ios-aperture
    +
    #tmicon-ios-aperture
    +
  • + +
  • + +
    ios-alarm
    +
    #tmicon-ios-alarm
    +
  • + +
  • + +
    ios-arrow-dropdown
    +
    #tmicon-ios-arrow-dropdown
    +
  • + +
  • + +
    ios-arrow-dropleft-c
    +
    #tmicon-ios-arrow-dropleft-c
    +
  • + +
  • + +
    ios-arrow-dropleft
    +
    #tmicon-ios-arrow-dropleft
    +
  • + +
  • + +
    ios-arrow-dropup
    +
    #tmicon-ios-arrow-dropup
    +
  • + +
  • + +
    ios-arrow-dropright-
    +
    #tmicon-ios-arrow-dropright-
    +
  • + +
  • + +
    ios-arrow-dropdown-c
    +
    #tmicon-ios-arrow-dropdown-c
    +
  • + +
  • + +
    ios-arrow-dropup-cir
    +
    #tmicon-ios-arrow-dropup-cir
    +
  • + +
  • + +
    ios-arrow-dropright
    +
    #tmicon-ios-arrow-dropright
    +
  • + +
  • + +
    ios-attach
    +
    #tmicon-ios-attach
    +
  • + +
  • + +
    ios-at
    +
    #tmicon-ios-at
    +
  • + +
  • + +
    ios-bed
    +
    #tmicon-ios-bed
    +
  • + +
  • + +
    ios-battery-full
    +
    #tmicon-ios-battery-full
    +
  • + +
  • + +
    ios-bookmarks
    +
    #tmicon-ios-bookmarks
    +
  • + +
  • + +
    ios-bluetooth
    +
    #tmicon-ios-bluetooth
    +
  • + +
  • + +
    ios-cellular
    +
    #tmicon-ios-cellular
    +
  • + +
  • + +
    ios-cut
    +
    #tmicon-ios-cut
    +
  • + +
  • + +
    ios-leaf
    +
    #tmicon-ios-leaf
    +
  • + +
  • + +
    ios-mic
    +
    #tmicon-ios-mic
    +
  • + +
  • + +
    ios-mail-open
    +
    #tmicon-ios-mail-open
    +
  • + +
  • + +
    ios-partly-sunny
    +
    #tmicon-ios-partly-sunny
    +
  • + +
  • + +
    ios-radio-button-on
    +
    #tmicon-ios-radio-button-on
    +
  • + +
  • + +
    ios-radio-button-off
    +
    #tmicon-ios-radio-button-off
    +
  • + +
  • + +
    ios-remove
    +
    #tmicon-ios-remove
    +
  • + +
  • + +
    ios-remove-circle-ou
    +
    #tmicon-ios-remove-circle-ou
    +
  • + +
  • + +
    ios-remove-circle
    +
    #tmicon-ios-remove-circle
    +
  • + +
  • + +
    ios-rocket
    +
    #tmicon-ios-rocket
    +
  • + +
  • + +
    ios-ribbon
    +
    #tmicon-ios-ribbon
    +
  • + +
  • + +
    ios-star
    +
    #tmicon-ios-star
    +
  • + +
  • + +
    ios-star-half
    +
    #tmicon-ios-star-half
    +
  • + +
  • + +
    ios-star-outline
    +
    #tmicon-ios-star-outline
    +
  • + +
  • + +
    ios-snow
    +
    #tmicon-ios-snow
    +
  • + +
  • + +
    ios-stopwatch
    +
    #tmicon-ios-stopwatch
    +
  • + +
  • + +
    ios-sunny
    +
    #tmicon-ios-sunny
    +
  • + +
  • + +
    ios-unlock
    +
    #tmicon-ios-unlock
    +
  • + +
  • + +
    ios-trophy
    +
    #tmicon-ios-trophy
    +
  • + +
  • + +
    ios-umbrella
    +
    #tmicon-ios-umbrella
    +
  • + +
  • + +
    ios-videocam
    +
    #tmicon-ios-videocam
    +
  • + +
  • + +
    ios-volume-high
    +
    #tmicon-ios-volume-high
    +
  • + +
  • + +
    ios-water
    +
    #tmicon-ios-water
    +
  • + +
  • + +
    ios-wifi
    +
    #tmicon-ios-wifi
    +
  • + +
  • + +
    md-water
    +
    #tmicon-md-water
    +
  • + +
  • + +
    md-checkbox
    +
    #tmicon-md-checkbox
    +
  • + +
  • + +
    md-chatbubbles
    +
    #tmicon-md-chatbubbles
    +
  • + +
  • + +
    md-chatboxes
    +
    #tmicon-md-chatboxes
    +
  • + +
  • + +
    md-cloud-done
    +
    #tmicon-md-cloud-done
    +
  • + +
  • + +
    md-cloud-upload
    +
    #tmicon-md-cloud-upload
    +
  • + +
  • + +
    md-cloudy
    +
    #tmicon-md-cloudy
    +
  • + +
  • + +
    md-contrast
    +
    #tmicon-md-contrast
    +
  • + +
  • + +
    md-disc
    +
    #tmicon-md-disc
    +
  • + +
  • + +
    md-heart-empty
    +
    #tmicon-md-heart-empty
    +
  • + +
  • + +
    md-heart
    +
    #tmicon-md-heart
    +
  • + +
  • + +
    md-home
    +
    #tmicon-md-home
    +
  • + +
  • + +
    md-mail-open
    +
    #tmicon-md-mail-open
    +
  • + +
  • + +
    md-heart-half
    +
    #tmicon-md-heart-half
    +
  • + +
  • + +
    md-person
    +
    #tmicon-md-person
    +
  • + +
  • + +
    md-people
    +
    #tmicon-md-people
    +
  • + +
  • + +
    md-more
    +
    #tmicon-md-more
    +
  • + +
  • + +
    md-moon
    +
    #tmicon-md-moon
    +
  • + +
  • + +
    md-pin
    +
    #tmicon-md-pin
    +
  • + +
  • + +
    更多
    +
    #tmicon-gengduo
    +
  • + +
  • + +
    IOS
    +
    #tmicon-ios
    +
  • + +
  • + +
    wifi-off
    +
    #tmicon-wifi-off
    +
  • + +
  • + +
    列表空空
    +
    #tmicon-shiliangzhinengduixiang-
    +
  • + +
  • + +
    微信支付
    +
    #tmicon-weixinzhifu
    +
  • + +
  • + +
    银行卡
    +
    #tmicon-yinhangqia
    +
  • + +
  • + +
    云闪付
    +
    #tmicon-yunshanfu
    +
  • + +
  • + +
    头条样式
    +
    #tmicon-toutiaoyangshi
    +
  • + +
  • + +
    抖音
    +
    #tmicon-douyin
    +
  • + +
  • + +
    支付,支付宝
    +
    #tmicon-alipay
    +
  • + +
  • + +
    华为
    +
    #tmicon-huawei
    +
  • + +
  • + +
    链接
    +
    #tmicon-lianjie
    +
  • + +
  • + +
    微信
    +
    #tmicon-weixin
    +
  • + +
  • + +
    朋友圈
    +
    #tmicon-pengyouquan
    +
  • + +
  • + +
    微博
    +
    #tmicon-weibo
    +
  • + +
  • + +
    QQ
    +
    #tmicon-QQ
    +
  • + +
  • + +
    小程序
    +
    #tmicon-xiaochengxu
    +
  • + +
  • + +
    display-code
    +
    #tmicon-display-code
    +
  • + +
  • + +
    display-arrow-right
    +
    #tmicon-display-arrow-right
    +
  • + +
  • + +
    display-arrow-left
    +
    #tmicon-display-arrow-left
    +
  • + +
  • + +
    laptop-error
    +
    #tmicon-laptop-error
    +
  • + +
  • + +
    laptop-check
    +
    #tmicon-laptop-check
    +
  • + +
  • + +
    laptop
    +
    #tmicon-laptop
    +
  • + +
  • + +
    mobile-error
    +
    #tmicon-mobile-error
    +
  • + +
  • + +
    mobile-check
    +
    #tmicon-mobile-check
    +
  • + +
  • + +
    mobile-alt
    +
    #tmicon-mobile-alt
    +
  • + +
  • + +
    aliwangwang
    +
    #tmicon-aliwangwang
    +
  • + +
  • + +
    nail
    +
    #tmicon-nail
    +
  • + +
  • + +
    nail-fixed
    +
    #tmicon-nail-fixed
    +
  • + +
  • + +
    edit
    +
    #tmicon-edit
    +
  • + +
  • + +
    dollar
    +
    #tmicon-dollar
    +
  • + +
  • + +
    transanction
    +
    #tmicon-transanction
    +
  • + +
  • + +
    filter-fill
    +
    #tmicon-filter-fill
    +
  • + +
  • + +
    all-fill
    +
    #tmicon-all-fill
    +
  • + +
  • + +
    database plus-fill
    +
    #tmicon-databaseplus-fill
    +
  • + +
  • + +
    database-fill
    +
    #tmicon-database-fill
    +
  • + +
  • + +
    comment lines-fill
    +
    #tmicon-commentlines-fill
    +
  • + +
  • + +
    comment dots-fill
    +
    #tmicon-commentdots-fill
    +
  • + +
  • + +
    paper plane-fill
    +
    #tmicon-paperplane-fill
    +
  • + +
  • + +
    eye slash-fill
    +
    #tmicon-eyeslash-fill
    +
  • + +
  • + +
    eye-fill
    +
    #tmicon-eye-fill
    +
  • + +
  • + +
    lightbulb-fill
    +
    #tmicon-lightbulb-fill
    +
  • + +
  • + +
    flag-fill
    +
    #tmicon-flag-fill
    +
  • + +
  • + +
    tag-fill
    +
    #tmicon-tag-fill
    +
  • + +
  • + +
    position-fill
    +
    #tmicon-position-fill
    +
  • + +
  • + +
    location-fill
    +
    #tmicon-location-fill
    +
  • + +
  • + +
    map-fill
    +
    #tmicon-map-fill
    +
  • + +
  • + +
    inbox in-fill
    +
    #tmicon-inboxin-fill
    +
  • + +
  • + +
    box-fill
    +
    #tmicon-box-fill
    +
  • + +
  • + +
    database set-fill
    +
    #tmicon-databaseset-fill
    +
  • + +
  • + +
    layer group-fill
    +
    #tmicon-layergroup-fill
    +
  • + +
  • + +
    cry-fill
    +
    #tmicon-cry-fill
    +
  • + +
  • + +
    smile-fill
    +
    #tmicon-smile-fill
    +
  • + +
  • + +
    unlock-fill
    +
    #tmicon-unlock-fill
    +
  • + +
  • + +
    lock-fill
    +
    #tmicon-lock-fill
    +
  • + +
  • + +
    align right-fill
    +
    #tmicon-alignright-fill
    +
  • + +
  • + +
    align left-fill
    +
    #tmicon-alignleft-fill
    +
  • + +
  • + +
    border bottom-fill
    +
    #tmicon-borderbottom-fill
    +
  • + +
  • + +
    border top-fill
    +
    #tmicon-bordertop-fill
    +
  • + +
  • + +
    align center-fill
    +
    #tmicon-aligncenter-fill
    +
  • + +
  • + +
    sort-down-copy
    +
    #tmicon-sort-down-nogap-copy
    +
  • + +
  • + +
    border verticle-fill
    +
    #tmicon-borderverticle-fill
    +
  • + +
  • + +
    pic center-fill
    +
    #tmicon-piccenter-fill
    +
  • + +
  • + +
    pic side-fill
    +
    #tmicon-picside-fill
    +
  • + +
  • + +
    folder open-fill
    +
    #tmicon-folderopen-fill
    +
  • + +
  • + +
    folder plus-fill
    +
    #tmicon-folderplus-fill
    +
  • + +
  • + +
    folder-fill
    +
    #tmicon-folder-fill
    +
  • + +
  • + +
    file-SQL
    +
    #tmicon-file-SQL
    +
  • + +
  • + +
    file plus-fill
    +
    #tmicon-fileplus-fill
    +
  • + +
  • + +
    file-fill
    +
    #tmicon-file-fill
    +
  • + +
  • + +
    copy-fill
    +
    #tmicon-copy-fill
    +
  • + +
  • + +
    headset-fill
    +
    #tmicon-headset-fill
    +
  • + +
  • + +
    phone-fill
    +
    #tmicon-phone-fill
    +
  • + +
  • + +
    pause circle-fill
    +
    #tmicon-pausecircle-fill
    +
  • + +
  • + +
    stop circle-fill
    +
    #tmicon-stopcircle-fill
    +
  • + +
  • + +
    play circle-fill
    +
    #tmicon-playcircle-fill
    +
  • + +
  • + +
    delete-fill
    +
    #tmicon-delete-fill
    +
  • + +
  • + +
    picture-fill
    +
    #tmicon-picture-fill
    +
  • + +
  • + +
    mail-fill
    +
    #tmicon-mail-fill
    +
  • + +
  • + +
    heart-fill
    +
    #tmicon-heart-fill
    +
  • + +
  • + +
    collection-fill
    +
    #tmicon-collection-fill
    +
  • + +
  • + +
    user-group-fill
    +
    #tmicon-user-group-fill
    +
  • + +
  • + +
    user plus-fill
    +
    #tmicon-userplus-fill
    +
  • + +
  • + +
    user-fill
    +
    #tmicon-user-fill
    +
  • + +
  • + +
    cog-fill
    +
    #tmicon-cog-fill
    +
  • + +
  • + +
    clock-fill
    +
    #tmicon-clock-fill
    +
  • + +
  • + +
    calendar alt-fill
    +
    #tmicon-calendaralt-fill
    +
  • + +
  • + +
    cloud download-fill
    +
    #tmicon-clouddownload-fill
    +
  • + +
  • + +
    cloud upload-fill
    +
    #tmicon-cloudupload-fill
    +
  • + +
  • + +
    exchange-fill
    +
    #tmicon-exchange-fill
    +
  • + +
  • + +
    info-circle-fill
    +
    #tmicon-info-circle-fill
    +
  • + +
  • + +
    question-circle-fill
    +
    #tmicon-question-circle-fill
    +
  • + +
  • + +
    exclamation circle-f
    +
    #tmicon-exclamationcircle-f
    +
  • + +
  • + +
    minus-circle-fill
    +
    #tmicon-minus-circle-fill
    +
  • + +
  • + +
    plus-circle-fill
    +
    #tmicon-plus-circle-fill
    +
  • + +
  • + +
    times-circle-fill
    +
    #tmicon-times-circle-fill
    +
  • + +
  • + +
    check-circle-fill
    +
    #tmicon-check-circle-fill
    +
  • + +
  • + +
    compress alt-fill
    +
    #tmicon-compressalt-fill
    +
  • + +
  • + +
    expand alt-fill
    +
    #tmicon-expandalt-fill
    +
  • + +
  • + +
    filter
    +
    #tmicon-filter
    +
  • + +
  • + +
    all
    +
    #tmicon-all
    +
  • + +
  • + +
    database-plus
    +
    #tmicon-database-plus
    +
  • + +
  • + +
    database
    +
    #tmicon-database
    +
  • + +
  • + +
    comment-lines
    +
    #tmicon-comment-lines
    +
  • + +
  • + +
    comment-dots
    +
    #tmicon-comment-dots
    +
  • + +
  • + +
    paper-plane
    +
    #tmicon-paper-plane
    +
  • + +
  • + +
    eye-slash
    +
    #tmicon-eye-slash
    +
  • + +
  • + +
    eye
    +
    #tmicon-eye
    +
  • + +
  • + +
    lightbulb
    +
    #tmicon-lightbulb
    +
  • + +
  • + +
    flag
    +
    #tmicon-flag
    +
  • + +
  • + +
    tag
    +
    #tmicon-tag
    +
  • + +
  • + +
    position
    +
    #tmicon-position
    +
  • + +
  • + +
    location
    +
    #tmicon-location
    +
  • + +
  • + +
    map
    +
    #tmicon-map
    +
  • + +
  • + +
    inbox-in
    +
    #tmicon-inbox-in
    +
  • + +
  • + +
    box
    +
    #tmicon-box
    +
  • + +
  • + +
    database-set
    +
    #tmicon-database-set
    +
  • + +
  • + +
    layer-group
    +
    #tmicon-layer-group
    +
  • + +
  • + +
    wind-cry
    +
    #tmicon-wind-cry
    +
  • + +
  • + +
    wind-smile
    +
    #tmicon-wind-smile
    +
  • + +
  • + +
    unlock
    +
    #tmicon-unlock
    +
  • + +
  • + +
    lock
    +
    #tmicon-lock
    +
  • + +
  • + +
    align-right
    +
    #tmicon-align-right
    +
  • + +
  • + +
    align-left
    +
    #tmicon-align-left
    +
  • + +
  • + +
    border-bottom
    +
    #tmicon-border-bottom
    +
  • + +
  • + +
    border-top
    +
    #tmicon-border-top
    +
  • + +
  • + +
    align-center
    +
    #tmicon-align-center
    +
  • + +
  • + +
    border-verticle
    +
    #tmicon-border-verticle
    +
  • + +
  • + +
    pic-center
    +
    #tmicon-pic-center
    +
  • + +
  • + +
    pic-side
    +
    #tmicon-pic-side
    +
  • + +
  • + +
    folder-open
    +
    #tmicon-folder-open
    +
  • + +
  • + +
    folder-plus
    +
    #tmicon-folder-plus
    +
  • + +
  • + +
    folder
    +
    #tmicon-folder
    +
  • + +
  • + +
    file-SQL
    +
    #tmicon-file-SQL1
    +
  • + +
  • + +
    file-plus
    +
    #tmicon-file-plus
    +
  • + +
  • + +
    file
    +
    #tmicon-file
    +
  • + +
  • + +
    copy
    +
    #tmicon-copy
    +
  • + +
  • + +
    headset
    +
    #tmicon-headset
    +
  • + +
  • + +
    phone
    +
    #tmicon-phone
    +
  • + +
  • + +
    pause circle
    +
    #tmicon-pausecircle
    +
  • + +
  • + +
    stop circle
    +
    #tmicon-stopcircle
    +
  • + +
  • + +
    play circle
    +
    #tmicon-playcircle
    +
  • + +
  • + +
    delete
    +
    #tmicon-delete
    +
  • + +
  • + +
    picture
    +
    #tmicon-picture
    +
  • + +
  • + +
    mail
    +
    #tmicon-mail
    +
  • + +
  • + +
    like
    +
    #tmicon-like
    +
  • + +
  • + +
    collection
    +
    #tmicon-collection
    +
  • + +
  • + +
    user-group
    +
    #tmicon-user-group
    +
  • + +
  • + +
    account-plus
    +
    #tmicon-account-plus
    +
  • + +
  • + +
    account
    +
    #tmicon-account
    +
  • + +
  • + +
    cog
    +
    #tmicon-cog
    +
  • + +
  • + +
    clock
    +
    #tmicon-clock
    +
  • + +
  • + +
    calendar-alt
    +
    #tmicon-calendar-alt
    +
  • + +
  • + +
    cloud download
    +
    #tmicon-clouddownload
    +
  • + +
  • + +
    cloud upload
    +
    #tmicon-cloudupload
    +
  • + +
  • + +
    exchange
    +
    #tmicon-exchange
    +
  • + +
  • + +
    info-circle
    +
    #tmicon-info-circle
    +
  • + +
  • + +
    question-circle
    +
    #tmicon-question-circle
    +
  • + +
  • + +
    exclamation-circle
    +
    #tmicon-exclamation-circle
    +
  • + +
  • + +
    minus-circle
    +
    #tmicon-minus-circle
    +
  • + +
  • + +
    plus-circle
    +
    #tmicon-plus-circle
    +
  • + +
  • + +
    times-circle
    +
    #tmicon-times-circle
    +
  • + +
  • + +
    check-circle
    +
    #tmicon-check-circle
    +
  • + +
  • + +
    compress-alt
    +
    #tmicon-compress-alt
    +
  • + +
  • + +
    expand-alt
    +
    #tmicon-expand-alt
    +
  • + +
  • + +
    ban
    +
    #tmicon-ban
    +
  • + +
  • + +
    minus
    +
    #tmicon-minus
    +
  • + +
  • + +
    plus
    +
    #tmicon-plus
    +
  • + +
  • + +
    times
    +
    #tmicon-times
    +
  • + +
  • + +
    check
    +
    #tmicon-check
    +
  • + +
  • + +
    search-minus
    +
    #tmicon-search-minus
    +
  • + +
  • + +
    search-plus
    +
    #tmicon-search-plus
    +
  • + +
  • + +
    search
    +
    #tmicon-search
    +
  • + +
  • + +
    reply
    +
    #tmicon-reply
    +
  • + +
  • + +
    undo
    +
    #tmicon-undo
    +
  • + +
  • + +
    redo
    +
    #tmicon-redo
    +
  • + +
  • + +
    external-link
    +
    #tmicon-external-link
    +
  • + +
  • + +
    arrows-alt
    +
    #tmicon-arrows-alt
    +
  • + +
  • + +
    indent
    +
    #tmicon-indent
    +
  • + +
  • + +
    outdent
    +
    #tmicon-outdent
    +
  • + +
  • + +
    sort-line
    +
    #tmicon-sort-line
    +
  • + +
  • + +
    switch
    +
    #tmicon-switch
    +
  • + +
  • + +
    wind-descending
    +
    #tmicon-wind-descending
    +
  • + +
  • + +
    wind-ascending
    +
    #tmicon-wind-ascending
    +
  • + +
  • + +
    download
    +
    #tmicon-download
    +
  • + +
  • + +
    upload
    +
    #tmicon-upload
    +
  • + +
  • + +
    arrow-to-bottom
    +
    #tmicon-arrow-to-bottom
    +
  • + +
  • + +
    arrow-to-top
    +
    #tmicon-arrow-to-top
    +
  • + +
  • + +
    long-arrow-down
    +
    #tmicon-long-arrow-down
    +
  • + +
  • + +
    long-arrow-up
    +
    #tmicon-long-arrow-up
    +
  • + +
  • + +
    arrow-right
    +
    #tmicon-arrow-right
    +
  • + +
  • + +
    arrow-left
    +
    #tmicon-arrow-left
    +
  • + +
  • + +
    sort
    +
    #tmicon-sort
    +
  • + +
  • + +
    sort-down
    +
    #tmicon-sort-down
    +
  • + +
  • + +
    sort-up
    +
    #tmicon-sort-up
    +
  • + +
  • + +
    caret-right
    +
    #tmicon-caret-right
    +
  • + +
  • + +
    caret-left
    +
    #tmicon-caret-left
    +
  • + +
  • + +
    arrows-v
    +
    #tmicon-arrows-v
    +
  • + +
  • + +
    angle- double-down
    +
    #tmicon-angle-double-down
    +
  • + +
  • + +
    angle-double-up
    +
    #tmicon-angle-double-up
    +
  • + +
  • + +
    angle-double-right
    +
    #tmicon-angle-double-right
    +
  • + +
  • + +
    angle-double-left
    +
    #tmicon-angle-double-left
    +
  • + +
  • + +
    angle-down
    +
    #tmicon-angle-down
    +
  • + +
  • + +
    angle-up
    +
    #tmicon-angle-up
    +
  • + +
  • + +
    angle-right
    +
    #tmicon-angle-right
    +
  • + +
  • + +
    angle-left
    +
    #tmicon-angle-left
    +
  • + +
  • + +
    paperclip
    +
    #tmicon-paperclip
    +
  • + +
  • + +
    connection
    +
    #tmicon-connection
    +
  • + +
  • + +
    training
    +
    #tmicon-training
    +
  • + +
  • + +
    process
    +
    #tmicon-process
    +
  • + +
  • + +
    news
    +
    #tmicon-news
    +
  • + +
  • + +
    save
    +
    #tmicon-save
    +
  • + +
  • + +
    print
    +
    #tmicon-print
    +
  • + +
  • + +
    new-releases
    +
    #tmicon-new-releases
    +
  • + +
  • + +
    release
    +
    #tmicon-release
    +
  • + +
  • + +
    alert
    +
    #tmicon-alert
    +
  • + +
  • + +
    backspace
    +
    #tmicon-backspace
    +
  • + +
  • + +
    gem
    +
    #tmicon-gem
    +
  • + +
  • + +
    integral
    +
    #tmicon-integral
    +
  • + +
  • + +
    star-circle
    +
    #tmicon-star-circle
    +
  • + +
  • + +
    user-circle
    +
    #tmicon-user-circle
    +
  • + +
  • + +
    cloud-machine-fill
    +
    #tmicon-cloud-machine-fill
    +
  • + +
  • + +
    cloud-machine
    +
    #tmicon-cloud-machine
    +
  • + +
  • + +
    terminal-fill
    +
    #tmicon-terminal-fill
    +
  • + +
  • + +
    terminal
    +
    #tmicon-terminal
    +
  • + +
  • + +
    shopping-cart-fill
    +
    #tmicon-shopping-cart-fill
    +
  • + +
  • + +
    resource
    +
    #tmicon-resource
    +
  • + +
  • + +
    rank
    +
    #tmicon-rank
    +
  • + +
  • + +
    sync-alt
    +
    #tmicon-sync-alt
    +
  • + +
  • + +
    compass
    +
    #tmicon-compass
    +
  • + +
  • + +
    arrow-alt- from-top
    +
    #tmicon-arrow-alt-from-top
    +
  • + +
  • + +
    arrow-alt-from-botto
    +
    #tmicon-arrow-alt-from-botto
    +
  • + +
  • + +
    menu
    +
    #tmicon-menu
    +
  • + +
  • + +
    icon-drag
    +
    #tmicon-icon-drag
    +
  • + +
  • + +
    early-warning
    +
    #tmicon-early-warning
    +
  • + +
  • + +
    share
    +
    #tmicon-share
    +
  • + +
  • + +
    share
    +
    #tmicon-share1
    +
  • + +
  • + +
    management
    +
    #tmicon-management-
    +
  • + +
  • + +
    accesskeys
    +
    #tmicon-accesskeys
    +
  • + +
  • + +
    arrow-sort down-small
    +
    #tmicon-arrow-sortdown-smal
    +
  • + +
  • + +
    minus-square-fill
    +
    #tmicon-minus-square-fill
    +
  • + +
  • + +
    plus-square-fill
    +
    #tmicon-plus-square-fill
    +
  • + +
  • + +
    minus-square
    +
    #tmicon-minus-square
    +
  • + +
  • + +
    plus-square
    +
    #tmicon-plus-square
    +
  • + +
  • + +
    step mode
    +
    #tmicon-stepmode
    +
  • + +
  • + +
    scrolling mode
    +
    #tmicon-scrollingmode
    +
  • + +
  • + +
    shopping cart
    +
    #tmicon-shoppingcart
    +
  • + +
  • + +
    waiting-fill
    +
    #tmicon-waiting-fill
    +
  • + +
  • + +
    waiting
    +
    #tmicon-waiting
    +
  • + +
  • + +
    right-arrow-rect
    +
    #tmicon-right-arrow-rect
    +
  • + +
  • + +
    left-arrow-rect
    +
    #tmicon-left-arrow-rect
    +
  • + +
  • + +
    bell
    +
    #tmicon-bell
    +
  • + +
  • + +
    structured data
    +
    #tmicon-structured-data
    +
  • + +
  • + +
    drag
    +
    #tmicon-drag
    +
  • + +
  • + +
    vector
    +
    #tmicon-vector
    +
  • + +
  • + +
    ellipsis-v
    +
    #tmicon-ellipsis-vertical
    +
  • + +
  • + +
    NEW
    +
    #tmicon-NEW-copy
    +
  • + +
  • + +
    gallery-view
    +
    #tmicon-gallery-view
    +
  • + +
  • + +
    HOT
    +
    #tmicon-HOT-copy
    +
  • + +
  • + +
    WIFI
    +
    #tmicon-WIFI
    +
  • + +
  • + +
    home
    +
    #tmicon-home
    +
  • + +
  • + +
    bug-report
    +
    #tmicon-bug-report
    +
  • + +
  • + +
    monitoring
    +
    #tmicon-monitoring
    +
  • + +
  • + +
    qrcode
    +
    #tmicon-qrcode
    +
  • + +
  • + +
    diagnose
    +
    #tmicon-diagnose
    +
  • + +
  • + +
    scan
    +
    #tmicon-scan
    +
  • + +
  • + +
    loading
    +
    #tmicon-loading
    +
  • + +
  • + +
    cut
    +
    #tmicon-cut
    +
  • + +
  • + +
    Directory tree
    +
    #tmicon-Directory-tree
    +
  • + +
  • + +
    gift
    +
    #tmicon-gift
    +
  • + +
  • + +
    application
    +
    #tmicon-application
    +
  • + +
  • + +
    link
    +
    #tmicon-link
    +
  • + +
  • + +
    application group
    +
    #tmicon-applicationgroup
    +
  • + +
  • + +
    poweroff
    +
    #tmicon-poweroff
    +
  • + +
  • + +
    key
    +
    #tmicon-key
    +
  • + +
  • + +
    safety-certificate
    +
    #tmicon-safety-certificate
    +
  • + +
  • + +
    supervise
    +
    #tmicon-supervise
    +
  • + +
  • + +
    tag-subscipt
    +
    #tmicon-tag-subscipt
    +
  • + +
  • + +
    chart-pie-alt
    +
    #tmicon-chart-pie-alt
    +
  • + +
  • + +
    chart-relation
    +
    #tmicon-chart-relation
    +
  • + +
  • + +
    chart-scatter-plot
    +
    #tmicon-chart-scatter-plot
    +
  • + +
  • + +
    chart-area
    +
    #tmicon-chart-area
    +
  • + +
  • + +
    chart-line
    +
    #tmicon-chart-line
    +
  • + +
  • + +
    chart-bar
    +
    #tmicon-chart-bar
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/fontJson.ts b/uni_modules/UniDevTools/src/tmui/tool/tmicon/fontJson.ts new file mode 100644 index 0000000..87ec4fd --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/fontJson.ts @@ -0,0 +1,2802 @@ +export default [ + { + "icon_id": "400994", + "name": "paypal", + "font_class": "paypal", + "unicode": "e8c8", + "unicode_decimal": 59592 + }, + { + "icon_id": "4936951", + "name": "google", + "font_class": "google", + "unicode": "e8c9", + "unicode_decimal": 59593 + }, + { + "icon_id": "5634565", + "name": "apple-pay", + "font_class": "apple-pay", + "unicode": "f166", + "unicode_decimal": 61798 + }, + { + "icon_id": "6808509", + "name": "Apple", + "font_class": "Apple", + "unicode": "edd8", + "unicode_decimal": 60888 + }, + { + "icon_id": "27365105", + "name": "google-pay", + "font_class": "google-pay", + "unicode": "ec04", + "unicode_decimal": 60420 + }, + { + "icon_id": "1039", + "name": "钱袋", + "font_class": "qiandai", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "1431", + "name": "券", + "font_class": "quan", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "780044", + "name": "红包", + "font_class": "hongbao", + "unicode": "e6da", + "unicode_decimal": 59098 + }, + { + "icon_id": "577373", + "name": "通知-fill", + "font_class": "tongzhifill", + "unicode": "e758", + "unicode_decimal": 59224 + }, + { + "icon_id": "844648", + "name": "人民币3", + "font_class": "renminbi3", + "unicode": "e73e", + "unicode_decimal": 59198 + }, + { + "icon_id": "1240755", + "name": "投票", + "font_class": "toupiao", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "5117623", + "name": "票券-色块icon", + "font_class": "icon", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "5178379", + "name": "足球", + "font_class": "svggeshi-", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "5387627", + "name": "美元", + "font_class": "meiyuan", + "unicode": "eb1a", + "unicode_decimal": 60186 + }, + { + "icon_id": "7516900", + "name": "汽车", + "font_class": "qiche", + "unicode": "e611", + "unicode_decimal": 58897 + }, + { + "icon_id": "8023415", + "name": "通知", + "font_class": "tongzhi", + "unicode": "e612", + "unicode_decimal": 58898 + }, + { + "icon_id": "8575345", + "name": "会员", + "font_class": "huiyuan", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "9456772", + "name": "md-phone-portrait", + "font_class": "md-phone-portrait", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "9456777", + "name": "md-planet", + "font_class": "md-planet", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "9456779", + "name": "md-phone-landscape", + "font_class": "md-phone-landscape", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "9456788", + "name": "md-power", + "font_class": "md-power", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "9456798", + "name": "md-redo", + "font_class": "md-redo", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "9456808", + "name": "md-rocket", + "font_class": "md-rocket", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "9456819", + "name": "md-ribbon", + "font_class": "md-ribbon", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "9456835", + "name": "md-undo", + "font_class": "md-undo", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "9456837", + "name": "md-trending-down", + "font_class": "md-trending-down", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "9456851", + "name": "md-trending-up", + "font_class": "md-trending-up", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "9457020", + "name": "md-git-merge", + "font_class": "md-git-merge", + "unicode": "e6de", + "unicode_decimal": 59102 + }, + { + "icon_id": "9457071", + "name": "md-female", + "font_class": "md-female", + "unicode": "e6e2", + "unicode_decimal": 59106 + }, + { + "icon_id": "9457091", + "name": "md-male", + "font_class": "md-male", + "unicode": "e6e3", + "unicode_decimal": 59107 + }, + { + "icon_id": "9457108", + "name": "md-heart-dislike", + "font_class": "md-heart-dislike", + "unicode": "e6e4", + "unicode_decimal": 59108 + }, + { + "icon_id": "9457111", + "name": "md-heart", + "font_class": "md-heart1", + "unicode": "e6e7", + "unicode_decimal": 59111 + }, + { + "icon_id": "9457220", + "name": "ios-text", + "font_class": "ios-text", + "unicode": "e6f1", + "unicode_decimal": 59121 + }, + { + "icon_id": "9457232", + "name": "ios-rose", + "font_class": "ios-rose", + "unicode": "e6f2", + "unicode_decimal": 59122 + }, + { + "icon_id": "9457346", + "name": "logo-game-controller-b", + "font_class": "logo-game-controller-b", + "unicode": "e6fd", + "unicode_decimal": 59133 + }, + { + "icon_id": "9457416", + "name": "ios-beer", + "font_class": "ios-beer", + "unicode": "e707", + "unicode_decimal": 59143 + }, + { + "icon_id": "9457424", + "name": "ios-cafe", + "font_class": "ios-cafe", + "unicode": "e709", + "unicode_decimal": 59145 + }, + { + "icon_id": "9457440", + "name": "ios-chatbubbles", + "font_class": "ios-chatbubbles", + "unicode": "e70a", + "unicode_decimal": 59146 + }, + { + "icon_id": "9457465", + "name": "ios-color-palette", + "font_class": "ios-color-palette", + "unicode": "e70e", + "unicode_decimal": 59150 + }, + { + "icon_id": "9457485", + "name": "ios-filing", + "font_class": "ios-filing", + "unicode": "e712", + "unicode_decimal": 59154 + }, + { + "icon_id": "9457494", + "name": "ios-finger-print", + "font_class": "ios-finger-print", + "unicode": "e713", + "unicode_decimal": 59155 + }, + { + "icon_id": "9457501", + "name": "ios-hand", + "font_class": "ios-hand", + "unicode": "e716", + "unicode_decimal": 59158 + }, + { + "icon_id": "9457504", + "name": "ios-flower", + "font_class": "ios-flower", + "unicode": "e714", + "unicode_decimal": 59156 + }, + { + "icon_id": "9457529", + "name": "ios-ice-cream", + "font_class": "ios-ice-cream", + "unicode": "e719", + "unicode_decimal": 59161 + }, + { + "icon_id": "9457539", + "name": "ios-grid", + "font_class": "ios-grid", + "unicode": "e71c", + "unicode_decimal": 59164 + }, + { + "icon_id": "9457540", + "name": "ios-mail-open", + "font_class": "ios-mail-open1", + "unicode": "e71d", + "unicode_decimal": 59165 + }, + { + "icon_id": "9457543", + "name": "ios-key", + "font_class": "ios-key", + "unicode": "e71e", + "unicode_decimal": 59166 + }, + { + "icon_id": "9457545", + "name": "ios-man", + "font_class": "ios-man", + "unicode": "e71f", + "unicode_decimal": 59167 + }, + { + "icon_id": "12387153", + "name": "美元", + "font_class": "meiyuan1", + "unicode": "e90d", + "unicode_decimal": 59661 + }, + { + "icon_id": "13030084", + "name": "自定义", + "font_class": "zidingyi", + "unicode": "e60d", + "unicode_decimal": 58893 + }, + { + "icon_id": "20587178", + "name": "刷新", + "font_class": "shuaxin", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "21242934", + "name": "会员", + "font_class": "huiyuan1", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "1250665", + "name": "圆", + "font_class": "yuan", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "7137863", + "name": "ios-airplane", + "font_class": "ios-airplane", + "unicode": "e852", + "unicode_decimal": 59474 + }, + { + "icon_id": "7137864", + "name": "ios-woman", + "font_class": "ios-woman", + "unicode": "e859", + "unicode_decimal": 59481 + }, + { + "icon_id": "7137869", + "name": "ios-aperture", + "font_class": "ios-aperture", + "unicode": "e866", + "unicode_decimal": 59494 + }, + { + "icon_id": "7137873", + "name": "ios-alarm", + "font_class": "ios-alarm", + "unicode": "e868", + "unicode_decimal": 59496 + }, + { + "icon_id": "7137875", + "name": "ios-arrow-dropdown", + "font_class": "ios-arrow-dropdown", + "unicode": "e869", + "unicode_decimal": 59497 + }, + { + "icon_id": "7137879", + "name": "ios-arrow-dropleft-c", + "font_class": "ios-arrow-dropleft-c", + "unicode": "e876", + "unicode_decimal": 59510 + }, + { + "icon_id": "7137880", + "name": "ios-arrow-dropleft", + "font_class": "ios-arrow-dropleft", + "unicode": "e87c", + "unicode_decimal": 59516 + }, + { + "icon_id": "7137881", + "name": "ios-arrow-dropup", + "font_class": "ios-arrow-dropup", + "unicode": "e87f", + "unicode_decimal": 59519 + }, + { + "icon_id": "7137882", + "name": "ios-arrow-dropright-", + "font_class": "ios-arrow-dropright-", + "unicode": "e880", + "unicode_decimal": 59520 + }, + { + "icon_id": "7137883", + "name": "ios-arrow-dropdown-c", + "font_class": "ios-arrow-dropdown-c", + "unicode": "e886", + "unicode_decimal": 59526 + }, + { + "icon_id": "7137886", + "name": "ios-arrow-dropup-cir", + "font_class": "ios-arrow-dropup-cir", + "unicode": "e88d", + "unicode_decimal": 59533 + }, + { + "icon_id": "7137887", + "name": "ios-arrow-dropright", + "font_class": "ios-arrow-dropright", + "unicode": "e890", + "unicode_decimal": 59536 + }, + { + "icon_id": "7137892", + "name": "ios-attach", + "font_class": "ios-attach", + "unicode": "e893", + "unicode_decimal": 59539 + }, + { + "icon_id": "7137893", + "name": "ios-at", + "font_class": "ios-at", + "unicode": "e894", + "unicode_decimal": 59540 + }, + { + "icon_id": "7137901", + "name": "ios-bed", + "font_class": "ios-bed", + "unicode": "e895", + "unicode_decimal": 59541 + }, + { + "icon_id": "7137903", + "name": "ios-battery-full", + "font_class": "ios-battery-full", + "unicode": "e896", + "unicode_decimal": 59542 + }, + { + "icon_id": "7137906", + "name": "ios-bookmarks", + "font_class": "ios-bookmarks", + "unicode": "e897", + "unicode_decimal": 59543 + }, + { + "icon_id": "7137926", + "name": "ios-bluetooth", + "font_class": "ios-bluetooth", + "unicode": "e898", + "unicode_decimal": 59544 + }, + { + "icon_id": "7137930", + "name": "ios-cellular", + "font_class": "ios-cellular", + "unicode": "e899", + "unicode_decimal": 59545 + }, + { + "icon_id": "7137971", + "name": "ios-cut", + "font_class": "ios-cut", + "unicode": "e89a", + "unicode_decimal": 59546 + }, + { + "icon_id": "7138027", + "name": "ios-leaf", + "font_class": "ios-leaf", + "unicode": "e89b", + "unicode_decimal": 59547 + }, + { + "icon_id": "7138043", + "name": "ios-mic", + "font_class": "ios-mic", + "unicode": "e89c", + "unicode_decimal": 59548 + }, + { + "icon_id": "7138045", + "name": "ios-mail-open", + "font_class": "ios-mail-open", + "unicode": "e89d", + "unicode_decimal": 59549 + }, + { + "icon_id": "7138078", + "name": "ios-partly-sunny", + "font_class": "ios-partly-sunny", + "unicode": "e8a0", + "unicode_decimal": 59552 + }, + { + "icon_id": "7138095", + "name": "ios-radio-button-on", + "font_class": "ios-radio-button-on", + "unicode": "e8a1", + "unicode_decimal": 59553 + }, + { + "icon_id": "7138098", + "name": "ios-radio-button-off", + "font_class": "ios-radio-button-off", + "unicode": "e8a2", + "unicode_decimal": 59554 + }, + { + "icon_id": "7138105", + "name": "ios-remove", + "font_class": "ios-remove", + "unicode": "e8a3", + "unicode_decimal": 59555 + }, + { + "icon_id": "7138112", + "name": "ios-remove-circle-ou", + "font_class": "ios-remove-circle-ou", + "unicode": "e8a4", + "unicode_decimal": 59556 + }, + { + "icon_id": "7138113", + "name": "ios-remove-circle", + "font_class": "ios-remove-circle", + "unicode": "e8a5", + "unicode_decimal": 59557 + }, + { + "icon_id": "7138118", + "name": "ios-rocket", + "font_class": "ios-rocket", + "unicode": "e8a6", + "unicode_decimal": 59558 + }, + { + "icon_id": "7138122", + "name": "ios-ribbon", + "font_class": "ios-ribbon", + "unicode": "e8a7", + "unicode_decimal": 59559 + }, + { + "icon_id": "7138128", + "name": "ios-star", + "font_class": "ios-star", + "unicode": "e8a8", + "unicode_decimal": 59560 + }, + { + "icon_id": "7138134", + "name": "ios-star-half", + "font_class": "ios-star-half", + "unicode": "e8a9", + "unicode_decimal": 59561 + }, + { + "icon_id": "7138135", + "name": "ios-star-outline", + "font_class": "ios-star-outline", + "unicode": "e8aa", + "unicode_decimal": 59562 + }, + { + "icon_id": "7138137", + "name": "ios-snow", + "font_class": "ios-snow", + "unicode": "e8ab", + "unicode_decimal": 59563 + }, + { + "icon_id": "7138138", + "name": "ios-stopwatch", + "font_class": "ios-stopwatch", + "unicode": "e8ac", + "unicode_decimal": 59564 + }, + { + "icon_id": "7138139", + "name": "ios-sunny", + "font_class": "ios-sunny", + "unicode": "e8ad", + "unicode_decimal": 59565 + }, + { + "icon_id": "7138160", + "name": "ios-unlock", + "font_class": "ios-unlock", + "unicode": "e8ae", + "unicode_decimal": 59566 + }, + { + "icon_id": "7138165", + "name": "ios-trophy", + "font_class": "ios-trophy", + "unicode": "e8af", + "unicode_decimal": 59567 + }, + { + "icon_id": "7138167", + "name": "ios-umbrella", + "font_class": "ios-umbrella", + "unicode": "e8b0", + "unicode_decimal": 59568 + }, + { + "icon_id": "7138168", + "name": "ios-videocam", + "font_class": "ios-videocam", + "unicode": "e8b1", + "unicode_decimal": 59569 + }, + { + "icon_id": "7138169", + "name": "ios-volume-high", + "font_class": "ios-volume-high", + "unicode": "e8b2", + "unicode_decimal": 59570 + }, + { + "icon_id": "7138170", + "name": "ios-water", + "font_class": "ios-water", + "unicode": "e8b3", + "unicode_decimal": 59571 + }, + { + "icon_id": "7138176", + "name": "ios-wifi", + "font_class": "ios-wifi", + "unicode": "e8b4", + "unicode_decimal": 59572 + }, + { + "icon_id": "7138213", + "name": "md-water", + "font_class": "md-water", + "unicode": "e8b5", + "unicode_decimal": 59573 + }, + { + "icon_id": "7138292", + "name": "md-checkbox", + "font_class": "md-checkbox", + "unicode": "e8b6", + "unicode_decimal": 59574 + }, + { + "icon_id": "7138295", + "name": "md-chatbubbles", + "font_class": "md-chatbubbles", + "unicode": "e8b7", + "unicode_decimal": 59575 + }, + { + "icon_id": "7138296", + "name": "md-chatboxes", + "font_class": "md-chatboxes", + "unicode": "e8b8", + "unicode_decimal": 59576 + }, + { + "icon_id": "7138301", + "name": "md-cloud-done", + "font_class": "md-cloud-done", + "unicode": "e8b9", + "unicode_decimal": 59577 + }, + { + "icon_id": "7138303", + "name": "md-cloud-upload", + "font_class": "md-cloud-upload", + "unicode": "e8ba", + "unicode_decimal": 59578 + }, + { + "icon_id": "7138310", + "name": "md-cloudy", + "font_class": "md-cloudy", + "unicode": "e8bb", + "unicode_decimal": 59579 + }, + { + "icon_id": "7138328", + "name": "md-contrast", + "font_class": "md-contrast", + "unicode": "e8bc", + "unicode_decimal": 59580 + }, + { + "icon_id": "7138332", + "name": "md-disc", + "font_class": "md-disc", + "unicode": "e8bd", + "unicode_decimal": 59581 + }, + { + "icon_id": "7138369", + "name": "md-heart-empty", + "font_class": "md-heart-empty", + "unicode": "e8be", + "unicode_decimal": 59582 + }, + { + "icon_id": "7138372", + "name": "md-heart", + "font_class": "md-heart", + "unicode": "e8bf", + "unicode_decimal": 59583 + }, + { + "icon_id": "7138374", + "name": "md-home", + "font_class": "md-home", + "unicode": "e8c0", + "unicode_decimal": 59584 + }, + { + "icon_id": "7138376", + "name": "md-mail-open", + "font_class": "md-mail-open", + "unicode": "e8c1", + "unicode_decimal": 59585 + }, + { + "icon_id": "7138391", + "name": "md-heart-half", + "font_class": "md-heart-half", + "unicode": "e8c2", + "unicode_decimal": 59586 + }, + { + "icon_id": "7138393", + "name": "md-person", + "font_class": "md-person", + "unicode": "e8c3", + "unicode_decimal": 59587 + }, + { + "icon_id": "7138405", + "name": "md-people", + "font_class": "md-people", + "unicode": "e8c4", + "unicode_decimal": 59588 + }, + { + "icon_id": "7138421", + "name": "md-more", + "font_class": "md-more", + "unicode": "e8c5", + "unicode_decimal": 59589 + }, + { + "icon_id": "7138431", + "name": "md-moon", + "font_class": "md-moon", + "unicode": "e8c6", + "unicode_decimal": 59590 + }, + { + "icon_id": "7138481", + "name": "md-pin", + "font_class": "md-pin", + "unicode": "e8c7", + "unicode_decimal": 59591 + }, + { + "icon_id": "577338", + "name": "更多", + "font_class": "gengduo", + "unicode": "e73a", + "unicode_decimal": 59194 + }, + { + "icon_id": "1420800", + "name": "IOS", + "font_class": "ios", + "unicode": "e60c", + "unicode_decimal": 58892 + }, + { + "icon_id": "1445619", + "name": "wifi-off", + "font_class": "wifi-off", + "unicode": "e93a", + "unicode_decimal": 59706 + }, + { + "icon_id": "3629124", + "name": "列表空空", + "font_class": "shiliangzhinengduixiang-", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "3977929", + "name": "微信支付", + "font_class": "weixinzhifu", + "unicode": "e605", + "unicode_decimal": 58885 + }, + { + "icon_id": "8338693", + "name": "银行卡", + "font_class": "yinhangqia", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "9306316", + "name": "云闪付", + "font_class": "yunshanfu", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "15989503", + "name": "头条样式", + "font_class": "toutiaoyangshi", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "18166694", + "name": "抖音", + "font_class": "douyin", + "unicode": "e8db", + "unicode_decimal": 59611 + }, + { + "icon_id": "18166716", + "name": "支付,支付宝", + "font_class": "alipay", + "unicode": "e8de", + "unicode_decimal": 59614 + }, + { + "icon_id": "24164616", + "name": "华为", + "font_class": "huawei", + "unicode": "e610", + "unicode_decimal": 58896 + }, + { + "icon_id": "167190", + "name": "链接", + "font_class": "lianjie", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "1185485", + "name": "微信", + "font_class": "weixin", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "6556747", + "name": "朋友圈", + "font_class": "pengyouquan", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "6756291", + "name": "微博", + "font_class": "weibo", + "unicode": "e608", + "unicode_decimal": 58888 + }, + { + "icon_id": "16286932", + "name": "QQ", + "font_class": "QQ", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "16322953", + "name": "小程序", + "font_class": "xiaochengxu", + "unicode": "e706", + "unicode_decimal": 59142 + }, + { + "icon_id": "6151036", + "name": "display-code", + "font_class": "display-code", + "unicode": "e792", + "unicode_decimal": 59282 + }, + { + "icon_id": "6151037", + "name": "display-arrow-right", + "font_class": "display-arrow-right", + "unicode": "e793", + "unicode_decimal": 59283 + }, + { + "icon_id": "6151038", + "name": "display-arrow-left", + "font_class": "display-arrow-left", + "unicode": "e794", + "unicode_decimal": 59284 + }, + { + "icon_id": "6151039", + "name": "laptop-error", + "font_class": "laptop-error", + "unicode": "e795", + "unicode_decimal": 59285 + }, + { + "icon_id": "6151040", + "name": "laptop-check", + "font_class": "laptop-check", + "unicode": "e796", + "unicode_decimal": 59286 + }, + { + "icon_id": "6151041", + "name": "laptop", + "font_class": "laptop", + "unicode": "e797", + "unicode_decimal": 59287 + }, + { + "icon_id": "6151050", + "name": "mobile-error", + "font_class": "mobile-error", + "unicode": "e798", + "unicode_decimal": 59288 + }, + { + "icon_id": "6151051", + "name": "mobile-check", + "font_class": "mobile-check", + "unicode": "e799", + "unicode_decimal": 59289 + }, + { + "icon_id": "6151052", + "name": "mobile-alt", + "font_class": "mobile-alt", + "unicode": "e79a", + "unicode_decimal": 59290 + }, + { + "icon_id": "6151059", + "name": "aliwangwang", + "font_class": "aliwangwang", + "unicode": "e79d", + "unicode_decimal": 59293 + }, + { + "icon_id": "6151060", + "name": "nail", + "font_class": "nail", + "unicode": "e79e", + "unicode_decimal": 59294 + }, + { + "icon_id": "6151061", + "name": "nail-fixed", + "font_class": "nail-fixed", + "unicode": "e79f", + "unicode_decimal": 59295 + }, + { + "icon_id": "6151070", + "name": "edit", + "font_class": "edit", + "unicode": "e7a0", + "unicode_decimal": 59296 + }, + { + "icon_id": "6151072", + "name": "dollar", + "font_class": "dollar", + "unicode": "e7a1", + "unicode_decimal": 59297 + }, + { + "icon_id": "6151080", + "name": "transanction", + "font_class": "transanction", + "unicode": "e7a2", + "unicode_decimal": 59298 + }, + { + "icon_id": "6151087", + "name": "filter-fill", + "font_class": "filter-fill", + "unicode": "e7a3", + "unicode_decimal": 59299 + }, + { + "icon_id": "6151089", + "name": "all-fill", + "font_class": "all-fill", + "unicode": "e7a4", + "unicode_decimal": 59300 + }, + { + "icon_id": "6151090", + "name": "database plus-fill", + "font_class": "databaseplus-fill", + "unicode": "e7a5", + "unicode_decimal": 59301 + }, + { + "icon_id": "6151091", + "name": "database-fill", + "font_class": "database-fill", + "unicode": "e7a6", + "unicode_decimal": 59302 + }, + { + "icon_id": "6151092", + "name": "comment lines-fill", + "font_class": "commentlines-fill", + "unicode": "e7a7", + "unicode_decimal": 59303 + }, + { + "icon_id": "6151093", + "name": "comment dots-fill", + "font_class": "commentdots-fill", + "unicode": "e7a8", + "unicode_decimal": 59304 + }, + { + "icon_id": "6151095", + "name": "paper plane-fill", + "font_class": "paperplane-fill", + "unicode": "e7a9", + "unicode_decimal": 59305 + }, + { + "icon_id": "6151096", + "name": "eye slash-fill", + "font_class": "eyeslash-fill", + "unicode": "e7aa", + "unicode_decimal": 59306 + }, + { + "icon_id": "6151097", + "name": "eye-fill", + "font_class": "eye-fill", + "unicode": "e7ab", + "unicode_decimal": 59307 + }, + { + "icon_id": "6151098", + "name": "lightbulb-fill", + "font_class": "lightbulb-fill", + "unicode": "e7ac", + "unicode_decimal": 59308 + }, + { + "icon_id": "6151099", + "name": "flag-fill", + "font_class": "flag-fill", + "unicode": "e7ad", + "unicode_decimal": 59309 + }, + { + "icon_id": "6151100", + "name": "tag-fill", + "font_class": "tag-fill", + "unicode": "e7ae", + "unicode_decimal": 59310 + }, + { + "icon_id": "6151101", + "name": "position-fill", + "font_class": "position-fill", + "unicode": "e7af", + "unicode_decimal": 59311 + }, + { + "icon_id": "6151102", + "name": "location-fill", + "font_class": "location-fill", + "unicode": "e7b0", + "unicode_decimal": 59312 + }, + { + "icon_id": "6151103", + "name": "map-fill", + "font_class": "map-fill", + "unicode": "e7b1", + "unicode_decimal": 59313 + }, + { + "icon_id": "6151105", + "name": "inbox in-fill", + "font_class": "inboxin-fill", + "unicode": "e7b2", + "unicode_decimal": 59314 + }, + { + "icon_id": "6151106", + "name": "box-fill", + "font_class": "box-fill", + "unicode": "e7b3", + "unicode_decimal": 59315 + }, + { + "icon_id": "6151108", + "name": "database set-fill", + "font_class": "databaseset-fill", + "unicode": "e7b4", + "unicode_decimal": 59316 + }, + { + "icon_id": "6151109", + "name": "layer group-fill", + "font_class": "layergroup-fill", + "unicode": "e7b5", + "unicode_decimal": 59317 + }, + { + "icon_id": "6151111", + "name": "cry-fill", + "font_class": "cry-fill", + "unicode": "e7b6", + "unicode_decimal": 59318 + }, + { + "icon_id": "6151113", + "name": "smile-fill", + "font_class": "smile-fill", + "unicode": "e7b7", + "unicode_decimal": 59319 + }, + { + "icon_id": "6151115", + "name": "unlock-fill", + "font_class": "unlock-fill", + "unicode": "e7b8", + "unicode_decimal": 59320 + }, + { + "icon_id": "6151117", + "name": "lock-fill", + "font_class": "lock-fill", + "unicode": "e7b9", + "unicode_decimal": 59321 + }, + { + "icon_id": "6151118", + "name": "align right-fill", + "font_class": "alignright-fill", + "unicode": "e7ba", + "unicode_decimal": 59322 + }, + { + "icon_id": "6151119", + "name": "align left-fill", + "font_class": "alignleft-fill", + "unicode": "e7bb", + "unicode_decimal": 59323 + }, + { + "icon_id": "6151120", + "name": "border bottom-fill", + "font_class": "borderbottom-fill", + "unicode": "e7bc", + "unicode_decimal": 59324 + }, + { + "icon_id": "6151121", + "name": "border top-fill", + "font_class": "bordertop-fill", + "unicode": "e7bd", + "unicode_decimal": 59325 + }, + { + "icon_id": "6151122", + "name": "align center-fill", + "font_class": "aligncenter-fill", + "unicode": "e7be", + "unicode_decimal": 59326 + }, + { + "icon_id": "32631406", + "name": "sort-down-copy", + "font_class": "sort-down-nogap-copy", + "unicode": "f167", + "unicode_decimal": 61799 + }, + { + "icon_id": "6151123", + "name": "border verticle-fill", + "font_class": "borderverticle-fill", + "unicode": "e7bf", + "unicode_decimal": 59327 + }, + { + "icon_id": "6151126", + "name": "pic center-fill", + "font_class": "piccenter-fill", + "unicode": "e7c0", + "unicode_decimal": 59328 + }, + { + "icon_id": "6151127", + "name": "pic side-fill", + "font_class": "picside-fill", + "unicode": "e7c1", + "unicode_decimal": 59329 + }, + { + "icon_id": "6151128", + "name": "folder open-fill", + "font_class": "folderopen-fill", + "unicode": "e7c2", + "unicode_decimal": 59330 + }, + { + "icon_id": "6151129", + "name": "folder plus-fill", + "font_class": "folderplus-fill", + "unicode": "e7c3", + "unicode_decimal": 59331 + }, + { + "icon_id": "6151130", + "name": "folder-fill", + "font_class": "folder-fill", + "unicode": "e7c4", + "unicode_decimal": 59332 + }, + { + "icon_id": "6151132", + "name": "file-SQL", + "font_class": "file-SQL", + "unicode": "e7c5", + "unicode_decimal": 59333 + }, + { + "icon_id": "6151133", + "name": "file plus-fill", + "font_class": "fileplus-fill", + "unicode": "e7c6", + "unicode_decimal": 59334 + }, + { + "icon_id": "6151134", + "name": "file-fill", + "font_class": "file-fill", + "unicode": "e7c7", + "unicode_decimal": 59335 + }, + { + "icon_id": "6151135", + "name": "copy-fill", + "font_class": "copy-fill", + "unicode": "e7c8", + "unicode_decimal": 59336 + }, + { + "icon_id": "6151136", + "name": "headset-fill", + "font_class": "headset-fill", + "unicode": "e7c9", + "unicode_decimal": 59337 + }, + { + "icon_id": "6151138", + "name": "phone-fill", + "font_class": "phone-fill", + "unicode": "e7ca", + "unicode_decimal": 59338 + }, + { + "icon_id": "6151139", + "name": "pause circle-fill", + "font_class": "pausecircle-fill", + "unicode": "e7cb", + "unicode_decimal": 59339 + }, + { + "icon_id": "6151140", + "name": "stop circle-fill", + "font_class": "stopcircle-fill", + "unicode": "e7cc", + "unicode_decimal": 59340 + }, + { + "icon_id": "6151141", + "name": "play circle-fill", + "font_class": "playcircle-fill", + "unicode": "e7cd", + "unicode_decimal": 59341 + }, + { + "icon_id": "6151143", + "name": "delete-fill", + "font_class": "delete-fill", + "unicode": "e7ce", + "unicode_decimal": 59342 + }, + { + "icon_id": "6151144", + "name": "picture-fill", + "font_class": "picture-fill", + "unicode": "e7cf", + "unicode_decimal": 59343 + }, + { + "icon_id": "6151145", + "name": "mail-fill", + "font_class": "mail-fill", + "unicode": "e7d0", + "unicode_decimal": 59344 + }, + { + "icon_id": "6151146", + "name": "heart-fill", + "font_class": "heart-fill", + "unicode": "e7d1", + "unicode_decimal": 59345 + }, + { + "icon_id": "6151147", + "name": "collection-fill", + "font_class": "collection-fill", + "unicode": "e7d2", + "unicode_decimal": 59346 + }, + { + "icon_id": "6151149", + "name": "user-group-fill", + "font_class": "user-group-fill", + "unicode": "e7d3", + "unicode_decimal": 59347 + }, + { + "icon_id": "6151150", + "name": "user plus-fill", + "font_class": "userplus-fill", + "unicode": "e7d4", + "unicode_decimal": 59348 + }, + { + "icon_id": "6151151", + "name": "user-fill", + "font_class": "user-fill", + "unicode": "e7d5", + "unicode_decimal": 59349 + }, + { + "icon_id": "6151152", + "name": "cog-fill", + "font_class": "cog-fill", + "unicode": "e7d6", + "unicode_decimal": 59350 + }, + { + "icon_id": "6151154", + "name": "clock-fill", + "font_class": "clock-fill", + "unicode": "e7d7", + "unicode_decimal": 59351 + }, + { + "icon_id": "6151155", + "name": "calendar alt-fill", + "font_class": "calendaralt-fill", + "unicode": "e7d8", + "unicode_decimal": 59352 + }, + { + "icon_id": "6151157", + "name": "cloud download-fill", + "font_class": "clouddownload-fill", + "unicode": "e7d9", + "unicode_decimal": 59353 + }, + { + "icon_id": "6151158", + "name": "cloud upload-fill", + "font_class": "cloudupload-fill", + "unicode": "e7da", + "unicode_decimal": 59354 + }, + { + "icon_id": "6151159", + "name": "exchange-fill", + "font_class": "exchange-fill", + "unicode": "e7db", + "unicode_decimal": 59355 + }, + { + "icon_id": "6151161", + "name": "info-circle-fill", + "font_class": "info-circle-fill", + "unicode": "e7dc", + "unicode_decimal": 59356 + }, + { + "icon_id": "6151162", + "name": "question-circle-fill", + "font_class": "question-circle-fill", + "unicode": "e7dd", + "unicode_decimal": 59357 + }, + { + "icon_id": "6151171", + "name": "exclamation circle-f", + "font_class": "exclamationcircle-f", + "unicode": "e7de", + "unicode_decimal": 59358 + }, + { + "icon_id": "6151173", + "name": "minus-circle-fill", + "font_class": "minus-circle-fill", + "unicode": "e7df", + "unicode_decimal": 59359 + }, + { + "icon_id": "6151174", + "name": "plus-circle-fill", + "font_class": "plus-circle-fill", + "unicode": "e7e0", + "unicode_decimal": 59360 + }, + { + "icon_id": "6151176", + "name": "times-circle-fill", + "font_class": "times-circle-fill", + "unicode": "e7e1", + "unicode_decimal": 59361 + }, + { + "icon_id": "6151177", + "name": "check-circle-fill", + "font_class": "check-circle-fill", + "unicode": "e7e2", + "unicode_decimal": 59362 + }, + { + "icon_id": "6151178", + "name": "compress alt-fill", + "font_class": "compressalt-fill", + "unicode": "e7e3", + "unicode_decimal": 59363 + }, + { + "icon_id": "6151181", + "name": "expand alt-fill", + "font_class": "expandalt-fill", + "unicode": "e7e4", + "unicode_decimal": 59364 + }, + { + "icon_id": "6151187", + "name": "filter", + "font_class": "filter", + "unicode": "e7e5", + "unicode_decimal": 59365 + }, + { + "icon_id": "6151188", + "name": "all", + "font_class": "all", + "unicode": "e7e6", + "unicode_decimal": 59366 + }, + { + "icon_id": "6151192", + "name": "database-plus", + "font_class": "database-plus", + "unicode": "e7e7", + "unicode_decimal": 59367 + }, + { + "icon_id": "6151193", + "name": "database", + "font_class": "database", + "unicode": "e7e8", + "unicode_decimal": 59368 + }, + { + "icon_id": "6151195", + "name": "comment-lines", + "font_class": "comment-lines", + "unicode": "e7e9", + "unicode_decimal": 59369 + }, + { + "icon_id": "6151196", + "name": "comment-dots", + "font_class": "comment-dots", + "unicode": "e7ea", + "unicode_decimal": 59370 + }, + { + "icon_id": "6151198", + "name": "paper-plane", + "font_class": "paper-plane", + "unicode": "e7eb", + "unicode_decimal": 59371 + }, + { + "icon_id": "6151208", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e7ec", + "unicode_decimal": 59372 + }, + { + "icon_id": "6151209", + "name": "eye", + "font_class": "eye", + "unicode": "e7ed", + "unicode_decimal": 59373 + }, + { + "icon_id": "6151210", + "name": "lightbulb", + "font_class": "lightbulb", + "unicode": "e7ee", + "unicode_decimal": 59374 + }, + { + "icon_id": "6151211", + "name": "flag", + "font_class": "flag", + "unicode": "e7ef", + "unicode_decimal": 59375 + }, + { + "icon_id": "6151212", + "name": "tag", + "font_class": "tag", + "unicode": "e7f0", + "unicode_decimal": 59376 + }, + { + "icon_id": "6151214", + "name": "position", + "font_class": "position", + "unicode": "e7f1", + "unicode_decimal": 59377 + }, + { + "icon_id": "6151215", + "name": "location", + "font_class": "location", + "unicode": "e7f2", + "unicode_decimal": 59378 + }, + { + "icon_id": "6151216", + "name": "map", + "font_class": "map", + "unicode": "e7f3", + "unicode_decimal": 59379 + }, + { + "icon_id": "6151218", + "name": "inbox-in", + "font_class": "inbox-in", + "unicode": "e7f4", + "unicode_decimal": 59380 + }, + { + "icon_id": "6151219", + "name": "box", + "font_class": "box", + "unicode": "e7f5", + "unicode_decimal": 59381 + }, + { + "icon_id": "6151221", + "name": "database-set", + "font_class": "database-set", + "unicode": "e7f6", + "unicode_decimal": 59382 + }, + { + "icon_id": "6151223", + "name": "layer-group", + "font_class": "layer-group", + "unicode": "e7f7", + "unicode_decimal": 59383 + }, + { + "icon_id": "6151224", + "name": "wind-cry", + "font_class": "wind-cry", + "unicode": "e7f8", + "unicode_decimal": 59384 + }, + { + "icon_id": "6151225", + "name": "wind-smile", + "font_class": "wind-smile", + "unicode": "e7f9", + "unicode_decimal": 59385 + }, + { + "icon_id": "6151227", + "name": "unlock", + "font_class": "unlock", + "unicode": "e7fa", + "unicode_decimal": 59386 + }, + { + "icon_id": "6151228", + "name": "lock", + "font_class": "lock", + "unicode": "e7fb", + "unicode_decimal": 59387 + }, + { + "icon_id": "6151230", + "name": "align-right", + "font_class": "align-right", + "unicode": "e7fc", + "unicode_decimal": 59388 + }, + { + "icon_id": "6151231", + "name": "align-left", + "font_class": "align-left", + "unicode": "e7fd", + "unicode_decimal": 59389 + }, + { + "icon_id": "6151232", + "name": "border-bottom", + "font_class": "border-bottom", + "unicode": "e7fe", + "unicode_decimal": 59390 + }, + { + "icon_id": "6151233", + "name": "border-top", + "font_class": "border-top", + "unicode": "e7ff", + "unicode_decimal": 59391 + }, + { + "icon_id": "6151234", + "name": "align-center", + "font_class": "align-center", + "unicode": "e800", + "unicode_decimal": 59392 + }, + { + "icon_id": "6151236", + "name": "border-verticle", + "font_class": "border-verticle", + "unicode": "e801", + "unicode_decimal": 59393 + }, + { + "icon_id": "6151237", + "name": "pic-center", + "font_class": "pic-center", + "unicode": "e802", + "unicode_decimal": 59394 + }, + { + "icon_id": "6151238", + "name": "pic-side", + "font_class": "pic-side", + "unicode": "e803", + "unicode_decimal": 59395 + }, + { + "icon_id": "6151239", + "name": "folder-open", + "font_class": "folder-open", + "unicode": "e804", + "unicode_decimal": 59396 + }, + { + "icon_id": "6151241", + "name": "folder-plus", + "font_class": "folder-plus", + "unicode": "e805", + "unicode_decimal": 59397 + }, + { + "icon_id": "6151242", + "name": "folder", + "font_class": "folder", + "unicode": "e806", + "unicode_decimal": 59398 + }, + { + "icon_id": "6151251", + "name": "file-SQL", + "font_class": "file-SQL1", + "unicode": "e807", + "unicode_decimal": 59399 + }, + { + "icon_id": "6151252", + "name": "file-plus", + "font_class": "file-plus", + "unicode": "e808", + "unicode_decimal": 59400 + }, + { + "icon_id": "6151253", + "name": "file", + "font_class": "file", + "unicode": "e809", + "unicode_decimal": 59401 + }, + { + "icon_id": "6151256", + "name": "copy", + "font_class": "copy", + "unicode": "e80a", + "unicode_decimal": 59402 + }, + { + "icon_id": "6151257", + "name": "headset", + "font_class": "headset", + "unicode": "e80b", + "unicode_decimal": 59403 + }, + { + "icon_id": "6151258", + "name": "phone", + "font_class": "phone", + "unicode": "e80c", + "unicode_decimal": 59404 + }, + { + "icon_id": "6151260", + "name": "pause circle", + "font_class": "pausecircle", + "unicode": "e80d", + "unicode_decimal": 59405 + }, + { + "icon_id": "6151261", + "name": "stop circle", + "font_class": "stopcircle", + "unicode": "e80e", + "unicode_decimal": 59406 + }, + { + "icon_id": "6151262", + "name": "play circle", + "font_class": "playcircle", + "unicode": "e80f", + "unicode_decimal": 59407 + }, + { + "icon_id": "6151263", + "name": "delete", + "font_class": "delete", + "unicode": "e810", + "unicode_decimal": 59408 + }, + { + "icon_id": "6151264", + "name": "picture", + "font_class": "picture", + "unicode": "e811", + "unicode_decimal": 59409 + }, + { + "icon_id": "6151265", + "name": "mail", + "font_class": "mail", + "unicode": "e812", + "unicode_decimal": 59410 + }, + { + "icon_id": "6151266", + "name": "like", + "font_class": "like", + "unicode": "e813", + "unicode_decimal": 59411 + }, + { + "icon_id": "6151267", + "name": "collection", + "font_class": "collection", + "unicode": "e814", + "unicode_decimal": 59412 + }, + { + "icon_id": "6151268", + "name": "user-group", + "font_class": "user-group", + "unicode": "e815", + "unicode_decimal": 59413 + }, + { + "icon_id": "6151270", + "name": "account-plus", + "font_class": "account-plus", + "unicode": "e816", + "unicode_decimal": 59414 + }, + { + "icon_id": "6151272", + "name": "account", + "font_class": "account", + "unicode": "e817", + "unicode_decimal": 59415 + }, + { + "icon_id": "6151273", + "name": "cog", + "font_class": "cog", + "unicode": "e818", + "unicode_decimal": 59416 + }, + { + "icon_id": "6151275", + "name": "clock", + "font_class": "clock", + "unicode": "e819", + "unicode_decimal": 59417 + }, + { + "icon_id": "6151276", + "name": "calendar-alt", + "font_class": "calendar-alt", + "unicode": "e81a", + "unicode_decimal": 59418 + }, + { + "icon_id": "6151277", + "name": "cloud download", + "font_class": "clouddownload", + "unicode": "e81b", + "unicode_decimal": 59419 + }, + { + "icon_id": "6151278", + "name": "cloud upload", + "font_class": "cloudupload", + "unicode": "e81c", + "unicode_decimal": 59420 + }, + { + "icon_id": "6151279", + "name": "exchange", + "font_class": "exchange", + "unicode": "e81d", + "unicode_decimal": 59421 + }, + { + "icon_id": "6151280", + "name": "info-circle", + "font_class": "info-circle", + "unicode": "e81e", + "unicode_decimal": 59422 + }, + { + "icon_id": "6151281", + "name": "question-circle", + "font_class": "question-circle", + "unicode": "e81f", + "unicode_decimal": 59423 + }, + { + "icon_id": "6151282", + "name": "exclamation-circle", + "font_class": "exclamation-circle", + "unicode": "e820", + "unicode_decimal": 59424 + }, + { + "icon_id": "6151283", + "name": "minus-circle", + "font_class": "minus-circle", + "unicode": "e821", + "unicode_decimal": 59425 + }, + { + "icon_id": "6151285", + "name": "plus-circle", + "font_class": "plus-circle", + "unicode": "e822", + "unicode_decimal": 59426 + }, + { + "icon_id": "6151286", + "name": "times-circle", + "font_class": "times-circle", + "unicode": "e823", + "unicode_decimal": 59427 + }, + { + "icon_id": "6151287", + "name": "check-circle", + "font_class": "check-circle", + "unicode": "e824", + "unicode_decimal": 59428 + }, + { + "icon_id": "6151288", + "name": "compress-alt", + "font_class": "compress-alt", + "unicode": "e825", + "unicode_decimal": 59429 + }, + { + "icon_id": "6151289", + "name": "expand-alt", + "font_class": "expand-alt", + "unicode": "e826", + "unicode_decimal": 59430 + }, + { + "icon_id": "6151290", + "name": "ban", + "font_class": "ban", + "unicode": "e827", + "unicode_decimal": 59431 + }, + { + "icon_id": "6151292", + "name": "minus", + "font_class": "minus", + "unicode": "e828", + "unicode_decimal": 59432 + }, + { + "icon_id": "6151293", + "name": "plus", + "font_class": "plus", + "unicode": "e829", + "unicode_decimal": 59433 + }, + { + "icon_id": "6151294", + "name": "times", + "font_class": "times", + "unicode": "e82a", + "unicode_decimal": 59434 + }, + { + "icon_id": "6151295", + "name": "check", + "font_class": "check", + "unicode": "e82b", + "unicode_decimal": 59435 + }, + { + "icon_id": "6151299", + "name": "search-minus", + "font_class": "search-minus", + "unicode": "e82c", + "unicode_decimal": 59436 + }, + { + "icon_id": "6151300", + "name": "search-plus", + "font_class": "search-plus", + "unicode": "e82d", + "unicode_decimal": 59437 + }, + { + "icon_id": "6151301", + "name": "search", + "font_class": "search", + "unicode": "e82e", + "unicode_decimal": 59438 + }, + { + "icon_id": "6151304", + "name": "reply", + "font_class": "reply", + "unicode": "e82f", + "unicode_decimal": 59439 + }, + { + "icon_id": "6151306", + "name": "undo", + "font_class": "undo", + "unicode": "e830", + "unicode_decimal": 59440 + }, + { + "icon_id": "6151307", + "name": "redo", + "font_class": "redo", + "unicode": "e831", + "unicode_decimal": 59441 + }, + { + "icon_id": "6151308", + "name": "external-link", + "font_class": "external-link", + "unicode": "e832", + "unicode_decimal": 59442 + }, + { + "icon_id": "6151309", + "name": "arrows-alt", + "font_class": "arrows-alt", + "unicode": "e833", + "unicode_decimal": 59443 + }, + { + "icon_id": "6151310", + "name": "indent", + "font_class": "indent", + "unicode": "e834", + "unicode_decimal": 59444 + }, + { + "icon_id": "6151311", + "name": "outdent", + "font_class": "outdent", + "unicode": "e835", + "unicode_decimal": 59445 + }, + { + "icon_id": "6151312", + "name": "sort-line", + "font_class": "sort-line", + "unicode": "e836", + "unicode_decimal": 59446 + }, + { + "icon_id": "6151314", + "name": "switch", + "font_class": "switch", + "unicode": "e837", + "unicode_decimal": 59447 + }, + { + "icon_id": "6151316", + "name": "wind-descending", + "font_class": "wind-descending", + "unicode": "e838", + "unicode_decimal": 59448 + }, + { + "icon_id": "6151317", + "name": "wind-ascending", + "font_class": "wind-ascending", + "unicode": "e839", + "unicode_decimal": 59449 + }, + { + "icon_id": "6151351", + "name": "download", + "font_class": "download", + "unicode": "e83a", + "unicode_decimal": 59450 + }, + { + "icon_id": "6151353", + "name": "upload", + "font_class": "upload", + "unicode": "e83b", + "unicode_decimal": 59451 + }, + { + "icon_id": "6151360", + "name": "arrow-to-bottom", + "font_class": "arrow-to-bottom", + "unicode": "e83c", + "unicode_decimal": 59452 + }, + { + "icon_id": "6151361", + "name": "arrow-to-top", + "font_class": "arrow-to-top", + "unicode": "e83d", + "unicode_decimal": 59453 + }, + { + "icon_id": "6151363", + "name": "long-arrow-down", + "font_class": "long-arrow-down", + "unicode": "e83e", + "unicode_decimal": 59454 + }, + { + "icon_id": "6151364", + "name": "long-arrow-up", + "font_class": "long-arrow-up", + "unicode": "e83f", + "unicode_decimal": 59455 + }, + { + "icon_id": "6151368", + "name": "arrow-right", + "font_class": "arrow-right", + "unicode": "e840", + "unicode_decimal": 59456 + }, + { + "icon_id": "6151370", + "name": "arrow-left", + "font_class": "arrow-left", + "unicode": "e841", + "unicode_decimal": 59457 + }, + { + "icon_id": "6151371", + "name": "sort", + "font_class": "sort", + "unicode": "e842", + "unicode_decimal": 59458 + }, + { + "icon_id": "6151377", + "name": "sort-down", + "font_class": "sort-down", + "unicode": "e843", + "unicode_decimal": 59459 + }, + { + "icon_id": "6151384", + "name": "sort-up", + "font_class": "sort-up", + "unicode": "e844", + "unicode_decimal": 59460 + }, + { + "icon_id": "6151385", + "name": "caret-right", + "font_class": "caret-right", + "unicode": "e845", + "unicode_decimal": 59461 + }, + { + "icon_id": "6151386", + "name": "caret-left", + "font_class": "caret-left", + "unicode": "e846", + "unicode_decimal": 59462 + }, + { + "icon_id": "6151387", + "name": "arrows-v", + "font_class": "arrows-v", + "unicode": "e847", + "unicode_decimal": 59463 + }, + { + "icon_id": "6151390", + "name": "angle- double-down", + "font_class": "angle-double-down", + "unicode": "e848", + "unicode_decimal": 59464 + }, + { + "icon_id": "6151391", + "name": "angle-double-up", + "font_class": "angle-double-up", + "unicode": "e849", + "unicode_decimal": 59465 + }, + { + "icon_id": "6151392", + "name": "angle-double-right", + "font_class": "angle-double-right", + "unicode": "e84a", + "unicode_decimal": 59466 + }, + { + "icon_id": "6151393", + "name": "angle-double-left", + "font_class": "angle-double-left", + "unicode": "e84b", + "unicode_decimal": 59467 + }, + { + "icon_id": "6151394", + "name": "angle-down", + "font_class": "angle-down", + "unicode": "e84c", + "unicode_decimal": 59468 + }, + { + "icon_id": "6151395", + "name": "angle-up", + "font_class": "angle-up", + "unicode": "e84d", + "unicode_decimal": 59469 + }, + { + "icon_id": "6151396", + "name": "angle-right", + "font_class": "angle-right", + "unicode": "e84e", + "unicode_decimal": 59470 + }, + { + "icon_id": "6151456", + "name": "angle-left", + "font_class": "angle-left", + "unicode": "e84f", + "unicode_decimal": 59471 + }, + { + "icon_id": "6168585", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e850", + "unicode_decimal": 59472 + }, + { + "icon_id": "6172713", + "name": "connection", + "font_class": "connection", + "unicode": "e851", + "unicode_decimal": 59473 + }, + { + "icon_id": "6172717", + "name": "training", + "font_class": "training", + "unicode": "e853", + "unicode_decimal": 59475 + }, + { + "icon_id": "6172721", + "name": "process", + "font_class": "process", + "unicode": "e854", + "unicode_decimal": 59476 + }, + { + "icon_id": "6172722", + "name": "news", + "font_class": "news", + "unicode": "e855", + "unicode_decimal": 59477 + }, + { + "icon_id": "6172724", + "name": "save", + "font_class": "save", + "unicode": "e856", + "unicode_decimal": 59478 + }, + { + "icon_id": "6172748", + "name": "print", + "font_class": "print", + "unicode": "e857", + "unicode_decimal": 59479 + }, + { + "icon_id": "6172751", + "name": "new-releases", + "font_class": "new-releases", + "unicode": "e858", + "unicode_decimal": 59480 + }, + { + "icon_id": "6172758", + "name": "release", + "font_class": "release", + "unicode": "e85a", + "unicode_decimal": 59482 + }, + { + "icon_id": "6172762", + "name": "alert", + "font_class": "alert", + "unicode": "e85b", + "unicode_decimal": 59483 + }, + { + "icon_id": "6172770", + "name": "backspace", + "font_class": "backspace", + "unicode": "e85c", + "unicode_decimal": 59484 + }, + { + "icon_id": "6172775", + "name": "gem", + "font_class": "gem", + "unicode": "e85d", + "unicode_decimal": 59485 + }, + { + "icon_id": "6172776", + "name": "integral", + "font_class": "integral", + "unicode": "e85e", + "unicode_decimal": 59486 + }, + { + "icon_id": "6172777", + "name": "star-circle", + "font_class": "star-circle", + "unicode": "e85f", + "unicode_decimal": 59487 + }, + { + "icon_id": "6172778", + "name": "user-circle", + "font_class": "user-circle", + "unicode": "e860", + "unicode_decimal": 59488 + }, + { + "icon_id": "6172783", + "name": "cloud-machine-fill", + "font_class": "cloud-machine-fill", + "unicode": "e861", + "unicode_decimal": 59489 + }, + { + "icon_id": "6172784", + "name": "cloud-machine", + "font_class": "cloud-machine", + "unicode": "e862", + "unicode_decimal": 59490 + }, + { + "icon_id": "6172785", + "name": "terminal-fill", + "font_class": "terminal-fill", + "unicode": "e863", + "unicode_decimal": 59491 + }, + { + "icon_id": "6172786", + "name": "terminal", + "font_class": "terminal", + "unicode": "e864", + "unicode_decimal": 59492 + }, + { + "icon_id": "6173016", + "name": "shopping-cart-fill", + "font_class": "shopping-cart-fill", + "unicode": "e865", + "unicode_decimal": 59493 + }, + { + "icon_id": "6228652", + "name": "resource", + "font_class": "resource", + "unicode": "e867", + "unicode_decimal": 59495 + }, + { + "icon_id": "6303226", + "name": "rank", + "font_class": "rank", + "unicode": "e86a", + "unicode_decimal": 59498 + }, + { + "icon_id": "6343820", + "name": "sync-alt", + "font_class": "sync-alt", + "unicode": "e86b", + "unicode_decimal": 59499 + }, + { + "icon_id": "6343821", + "name": "compass", + "font_class": "compass", + "unicode": "e86c", + "unicode_decimal": 59500 + }, + { + "icon_id": "6343822", + "name": "arrow-alt- from-top", + "font_class": "arrow-alt-from-top", + "unicode": "e86d", + "unicode_decimal": 59501 + }, + { + "icon_id": "6343823", + "name": "arrow-alt-from-botto", + "font_class": "arrow-alt-from-botto", + "unicode": "e86e", + "unicode_decimal": 59502 + }, + { + "icon_id": "6343824", + "name": "menu", + "font_class": "menu", + "unicode": "e86f", + "unicode_decimal": 59503 + }, + { + "icon_id": "6353291", + "name": "icon-drag", + "font_class": "icon-drag", + "unicode": "e870", + "unicode_decimal": 59504 + }, + { + "icon_id": "6353292", + "name": "early-warning", + "font_class": "early-warning", + "unicode": "e871", + "unicode_decimal": 59505 + }, + { + "icon_id": "6353293", + "name": "share", + "font_class": "share", + "unicode": "e872", + "unicode_decimal": 59506 + }, + { + "icon_id": "6353306", + "name": "share", + "font_class": "share1", + "unicode": "e873", + "unicode_decimal": 59507 + }, + { + "icon_id": "6861314", + "name": "management", + "font_class": "management-", + "unicode": "e874", + "unicode_decimal": 59508 + }, + { + "icon_id": "6863066", + "name": "accesskeys", + "font_class": "accesskeys", + "unicode": "e875", + "unicode_decimal": 59509 + }, + { + "icon_id": "7357537", + "name": "arrow-sort down-small", + "font_class": "arrow-sortdown-smal", + "unicode": "e877", + "unicode_decimal": 59511 + }, + { + "icon_id": "7410218", + "name": "minus-square-fill", + "font_class": "minus-square-fill", + "unicode": "e878", + "unicode_decimal": 59512 + }, + { + "icon_id": "7410219", + "name": "plus-square-fill", + "font_class": "plus-square-fill", + "unicode": "e879", + "unicode_decimal": 59513 + }, + { + "icon_id": "7410220", + "name": "minus-square", + "font_class": "minus-square", + "unicode": "e87a", + "unicode_decimal": 59514 + }, + { + "icon_id": "7410222", + "name": "plus-square", + "font_class": "plus-square", + "unicode": "e87b", + "unicode_decimal": 59515 + }, + { + "icon_id": "7906283", + "name": "step mode", + "font_class": "stepmode", + "unicode": "e87d", + "unicode_decimal": 59517 + }, + { + "icon_id": "7906284", + "name": "scrolling mode", + "font_class": "scrollingmode", + "unicode": "e87e", + "unicode_decimal": 59518 + }, + { + "icon_id": "8268337", + "name": "shopping cart", + "font_class": "shoppingcart", + "unicode": "e881", + "unicode_decimal": 59521 + }, + { + "icon_id": "8305716", + "name": "waiting-fill", + "font_class": "waiting-fill", + "unicode": "e882", + "unicode_decimal": 59522 + }, + { + "icon_id": "8305718", + "name": "waiting", + "font_class": "waiting", + "unicode": "e883", + "unicode_decimal": 59523 + }, + { + "icon_id": "8307796", + "name": "right-arrow-rect", + "font_class": "right-arrow-rect", + "unicode": "e884", + "unicode_decimal": 59524 + }, + { + "icon_id": "8307800", + "name": "left-arrow-rect", + "font_class": "left-arrow-rect", + "unicode": "e885", + "unicode_decimal": 59525 + }, + { + "icon_id": "8623603", + "name": "bell", + "font_class": "bell", + "unicode": "e887", + "unicode_decimal": 59527 + }, + { + "icon_id": "8762555", + "name": "structured data", + "font_class": "structured-data", + "unicode": "e888", + "unicode_decimal": 59528 + }, + { + "icon_id": "6150957", + "name": "drag", + "font_class": "drag", + "unicode": "e769", + "unicode_decimal": 59241 + }, + { + "icon_id": "8762556", + "name": "vector", + "font_class": "vector", + "unicode": "e889", + "unicode_decimal": 59529 + }, + { + "icon_id": "6150958", + "name": "ellipsis-v", + "font_class": "ellipsis-vertical", + "unicode": "e76a", + "unicode_decimal": 59242 + }, + { + "icon_id": "9009443", + "name": "NEW", + "font_class": "NEW-copy", + "unicode": "e88a", + "unicode_decimal": 59530 + }, + { + "icon_id": "6150959", + "name": "gallery-view", + "font_class": "gallery-view", + "unicode": "e76b", + "unicode_decimal": 59243 + }, + { + "icon_id": "9009475", + "name": "HOT", + "font_class": "HOT-copy", + "unicode": "e88b", + "unicode_decimal": 59531 + }, + { + "icon_id": "6150960", + "name": "WIFI", + "font_class": "WIFI", + "unicode": "e76c", + "unicode_decimal": 59244 + }, + { + "icon_id": "9066652", + "name": "home", + "font_class": "home", + "unicode": "e88c", + "unicode_decimal": 59532 + }, + { + "icon_id": "6150961", + "name": "bug-report", + "font_class": "bug-report", + "unicode": "e76d", + "unicode_decimal": 59245 + }, + { + "icon_id": "9340469", + "name": "monitoring", + "font_class": "monitoring", + "unicode": "e88e", + "unicode_decimal": 59534 + }, + { + "icon_id": "6150962", + "name": "qrcode", + "font_class": "qrcode", + "unicode": "e76e", + "unicode_decimal": 59246 + }, + { + "icon_id": "9340470", + "name": "diagnose", + "font_class": "diagnose", + "unicode": "e88f", + "unicode_decimal": 59535 + }, + { + "icon_id": "6150963", + "name": "scan", + "font_class": "scan", + "unicode": "e76f", + "unicode_decimal": 59247 + }, + { + "icon_id": "10273624", + "name": "loading", + "font_class": "loading", + "unicode": "e891", + "unicode_decimal": 59537 + }, + { + "icon_id": "6150964", + "name": "cut", + "font_class": "cut", + "unicode": "e770", + "unicode_decimal": 59248 + }, + { + "icon_id": "11307823", + "name": "Directory tree", + "font_class": "Directory-tree", + "unicode": "e892", + "unicode_decimal": 59538 + }, + { + "icon_id": "6150965", + "name": "gift", + "font_class": "gift", + "unicode": "e771", + "unicode_decimal": 59249 + }, + { + "icon_id": "12253601", + "name": "application", + "font_class": "application", + "unicode": "e89e", + "unicode_decimal": 59550 + }, + { + "icon_id": "6150966", + "name": "link", + "font_class": "link", + "unicode": "e772", + "unicode_decimal": 59250 + }, + { + "icon_id": "12253602", + "name": "application group", + "font_class": "applicationgroup", + "unicode": "e89f", + "unicode_decimal": 59551 + }, + { + "icon_id": "6150968", + "name": "poweroff", + "font_class": "poweroff", + "unicode": "e774", + "unicode_decimal": 59252 + }, + { + "icon_id": "6150969", + "name": "key", + "font_class": "key", + "unicode": "e775", + "unicode_decimal": 59253 + }, + { + "icon_id": "6150970", + "name": "safety-certificate", + "font_class": "safety-certificate", + "unicode": "e776", + "unicode_decimal": 59254 + }, + { + "icon_id": "6150971", + "name": "supervise", + "font_class": "supervise", + "unicode": "e777", + "unicode_decimal": 59255 + }, + { + "icon_id": "6151018", + "name": "tag-subscipt", + "font_class": "tag-subscipt", + "unicode": "e78a", + "unicode_decimal": 59274 + }, + { + "icon_id": "6151030", + "name": "chart-pie-alt", + "font_class": "chart-pie-alt", + "unicode": "e78c", + "unicode_decimal": 59276 + }, + { + "icon_id": "6151031", + "name": "chart-relation", + "font_class": "chart-relation", + "unicode": "e78d", + "unicode_decimal": 59277 + }, + { + "icon_id": "6151032", + "name": "chart-scatter-plot", + "font_class": "chart-scatter-plot", + "unicode": "e78e", + "unicode_decimal": 59278 + }, + { + "icon_id": "6151033", + "name": "chart-area", + "font_class": "chart-area", + "unicode": "e78f", + "unicode_decimal": 59279 + }, + { + "icon_id": "6151034", + "name": "chart-line", + "font_class": "chart-line", + "unicode": "e790", + "unicode_decimal": 59280 + }, + { + "icon_id": "6151035", + "name": "chart-bar", + "font_class": "chart-bar", + "unicode": "e791", + "unicode_decimal": 59281 + } + ] \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.css b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.css new file mode 100644 index 0000000..6e625ea --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.css @@ -0,0 +1,1615 @@ +@font-face { + font-family: "tmicon"; /* Project id 2660213 */ + src: + url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), + url('iconfont.ttf?t=1667376450105') format('truetype'); +} + +.tmicon { + font-family: "tmicon" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.tmicon-paypal:before { + content: "\e8c8"; +} + +.tmicon-google:before { + content: "\e8c9"; +} + +.tmicon-apple-pay:before { + content: "\f166"; +} + +.tmicon-Apple:before { + content: "\edd8"; +} + +.tmicon-google-pay:before { + content: "\ec04"; +} + +.tmicon-qiandai:before { + content: "\e600"; +} + +.tmicon-quan:before { + content: "\e601"; +} + +.tmicon-hongbao:before { + content: "\e6da"; +} + +.tmicon-tongzhifill:before { + content: "\e758"; +} + +.tmicon-renminbi3:before { + content: "\e73e"; +} + +.tmicon-toupiao:before { + content: "\e60e"; +} + +.tmicon-icon:before { + content: "\e658"; +} + +.tmicon-svggeshi-:before { + content: "\e65d"; +} + +.tmicon-meiyuan:before { + content: "\eb1a"; +} + +.tmicon-qiche:before { + content: "\e611"; +} + +.tmicon-tongzhi:before { + content: "\e612"; +} + +.tmicon-huiyuan:before { + content: "\e62f"; +} + +.tmicon-md-phone-portrait:before { + content: "\e6c2"; +} + +.tmicon-md-planet:before { + content: "\e6c3"; +} + +.tmicon-md-phone-landscape:before { + content: "\e6c4"; +} + +.tmicon-md-power:before { + content: "\e6c5"; +} + +.tmicon-md-redo:before { + content: "\e6c6"; +} + +.tmicon-md-rocket:before { + content: "\e6c7"; +} + +.tmicon-md-ribbon:before { + content: "\e6c8"; +} + +.tmicon-md-undo:before { + content: "\e6cb"; +} + +.tmicon-md-trending-down:before { + content: "\e6cc"; +} + +.tmicon-md-trending-up:before { + content: "\e6cd"; +} + +.tmicon-md-git-merge:before { + content: "\e6de"; +} + +.tmicon-md-female:before { + content: "\e6e2"; +} + +.tmicon-md-male:before { + content: "\e6e3"; +} + +.tmicon-md-heart-dislike:before { + content: "\e6e4"; +} + +.tmicon-md-heart1:before { + content: "\e6e7"; +} + +.tmicon-ios-text:before { + content: "\e6f1"; +} + +.tmicon-ios-rose:before { + content: "\e6f2"; +} + +.tmicon-logo-game-controller-b:before { + content: "\e6fd"; +} + +.tmicon-ios-beer:before { + content: "\e707"; +} + +.tmicon-ios-cafe:before { + content: "\e709"; +} + +.tmicon-ios-chatbubbles:before { + content: "\e70a"; +} + +.tmicon-ios-color-palette:before { + content: "\e70e"; +} + +.tmicon-ios-filing:before { + content: "\e712"; +} + +.tmicon-ios-finger-print:before { + content: "\e713"; +} + +.tmicon-ios-hand:before { + content: "\e716"; +} + +.tmicon-ios-flower:before { + content: "\e714"; +} + +.tmicon-ios-ice-cream:before { + content: "\e719"; +} + +.tmicon-ios-grid:before { + content: "\e71c"; +} + +.tmicon-ios-mail-open1:before { + content: "\e71d"; +} + +.tmicon-ios-key:before { + content: "\e71e"; +} + +.tmicon-ios-man:before { + content: "\e71f"; +} + +.tmicon-meiyuan1:before { + content: "\e90d"; +} + +.tmicon-zidingyi:before { + content: "\e60d"; +} + +.tmicon-shuaxin:before { + content: "\e6ce"; +} + +.tmicon-huiyuan1:before { + content: "\e646"; +} + +.tmicon-yuan:before { + content: "\e657"; +} + +.tmicon-ios-airplane:before { + content: "\e852"; +} + +.tmicon-ios-woman:before { + content: "\e859"; +} + +.tmicon-ios-aperture:before { + content: "\e866"; +} + +.tmicon-ios-alarm:before { + content: "\e868"; +} + +.tmicon-ios-arrow-dropdown:before { + content: "\e869"; +} + +.tmicon-ios-arrow-dropleft-c:before { + content: "\e876"; +} + +.tmicon-ios-arrow-dropleft:before { + content: "\e87c"; +} + +.tmicon-ios-arrow-dropup:before { + content: "\e87f"; +} + +.tmicon-ios-arrow-dropright-:before { + content: "\e880"; +} + +.tmicon-ios-arrow-dropdown-c:before { + content: "\e886"; +} + +.tmicon-ios-arrow-dropup-cir:before { + content: "\e88d"; +} + +.tmicon-ios-arrow-dropright:before { + content: "\e890"; +} + +.tmicon-ios-attach:before { + content: "\e893"; +} + +.tmicon-ios-at:before { + content: "\e894"; +} + +.tmicon-ios-bed:before { + content: "\e895"; +} + +.tmicon-ios-battery-full:before { + content: "\e896"; +} + +.tmicon-ios-bookmarks:before { + content: "\e897"; +} + +.tmicon-ios-bluetooth:before { + content: "\e898"; +} + +.tmicon-ios-cellular:before { + content: "\e899"; +} + +.tmicon-ios-cut:before { + content: "\e89a"; +} + +.tmicon-ios-leaf:before { + content: "\e89b"; +} + +.tmicon-ios-mic:before { + content: "\e89c"; +} + +.tmicon-ios-mail-open:before { + content: "\e89d"; +} + +.tmicon-ios-partly-sunny:before { + content: "\e8a0"; +} + +.tmicon-ios-radio-button-on:before { + content: "\e8a1"; +} + +.tmicon-ios-radio-button-off:before { + content: "\e8a2"; +} + +.tmicon-ios-remove:before { + content: "\e8a3"; +} + +.tmicon-ios-remove-circle-ou:before { + content: "\e8a4"; +} + +.tmicon-ios-remove-circle:before { + content: "\e8a5"; +} + +.tmicon-ios-rocket:before { + content: "\e8a6"; +} + +.tmicon-ios-ribbon:before { + content: "\e8a7"; +} + +.tmicon-ios-star:before { + content: "\e8a8"; +} + +.tmicon-ios-star-half:before { + content: "\e8a9"; +} + +.tmicon-ios-star-outline:before { + content: "\e8aa"; +} + +.tmicon-ios-snow:before { + content: "\e8ab"; +} + +.tmicon-ios-stopwatch:before { + content: "\e8ac"; +} + +.tmicon-ios-sunny:before { + content: "\e8ad"; +} + +.tmicon-ios-unlock:before { + content: "\e8ae"; +} + +.tmicon-ios-trophy:before { + content: "\e8af"; +} + +.tmicon-ios-umbrella:before { + content: "\e8b0"; +} + +.tmicon-ios-videocam:before { + content: "\e8b1"; +} + +.tmicon-ios-volume-high:before { + content: "\e8b2"; +} + +.tmicon-ios-water:before { + content: "\e8b3"; +} + +.tmicon-ios-wifi:before { + content: "\e8b4"; +} + +.tmicon-md-water:before { + content: "\e8b5"; +} + +.tmicon-md-checkbox:before { + content: "\e8b6"; +} + +.tmicon-md-chatbubbles:before { + content: "\e8b7"; +} + +.tmicon-md-chatboxes:before { + content: "\e8b8"; +} + +.tmicon-md-cloud-done:before { + content: "\e8b9"; +} + +.tmicon-md-cloud-upload:before { + content: "\e8ba"; +} + +.tmicon-md-cloudy:before { + content: "\e8bb"; +} + +.tmicon-md-contrast:before { + content: "\e8bc"; +} + +.tmicon-md-disc:before { + content: "\e8bd"; +} + +.tmicon-md-heart-empty:before { + content: "\e8be"; +} + +.tmicon-md-heart:before { + content: "\e8bf"; +} + +.tmicon-md-home:before { + content: "\e8c0"; +} + +.tmicon-md-mail-open:before { + content: "\e8c1"; +} + +.tmicon-md-heart-half:before { + content: "\e8c2"; +} + +.tmicon-md-person:before { + content: "\e8c3"; +} + +.tmicon-md-people:before { + content: "\e8c4"; +} + +.tmicon-md-more:before { + content: "\e8c5"; +} + +.tmicon-md-moon:before { + content: "\e8c6"; +} + +.tmicon-md-pin:before { + content: "\e8c7"; +} + +.tmicon-gengduo:before { + content: "\e73a"; +} + +.tmicon-ios:before { + content: "\e60c"; +} + +.tmicon-wifi-off:before { + content: "\e93a"; +} + +.tmicon-shiliangzhinengduixiang-:before { + content: "\e6ad"; +} + +.tmicon-weixinzhifu:before { + content: "\e605"; +} + +.tmicon-yinhangqia:before { + content: "\e6c9"; +} + +.tmicon-yunshanfu:before { + content: "\e68b"; +} + +.tmicon-toutiaoyangshi:before { + content: "\e622"; +} + +.tmicon-douyin:before { + content: "\e8db"; +} + +.tmicon-alipay:before { + content: "\e8de"; +} + +.tmicon-huawei:before { + content: "\e610"; +} + +.tmicon-lianjie:before { + content: "\e665"; +} + +.tmicon-weixin:before { + content: "\e63f"; +} + +.tmicon-pengyouquan:before { + content: "\e615"; +} + +.tmicon-weibo:before { + content: "\e608"; +} + +.tmicon-QQ:before { + content: "\e60f"; +} + +.tmicon-xiaochengxu:before { + content: "\e706"; +} + +.tmicon-display-code:before { + content: "\e792"; +} + +.tmicon-display-arrow-right:before { + content: "\e793"; +} + +.tmicon-display-arrow-left:before { + content: "\e794"; +} + +.tmicon-laptop-error:before { + content: "\e795"; +} + +.tmicon-laptop-check:before { + content: "\e796"; +} + +.tmicon-laptop:before { + content: "\e797"; +} + +.tmicon-mobile-error:before { + content: "\e798"; +} + +.tmicon-mobile-check:before { + content: "\e799"; +} + +.tmicon-mobile-alt:before { + content: "\e79a"; +} + +.tmicon-aliwangwang:before { + content: "\e79d"; +} + +.tmicon-nail:before { + content: "\e79e"; +} + +.tmicon-nail-fixed:before { + content: "\e79f"; +} + +.tmicon-edit:before { + content: "\e7a0"; +} + +.tmicon-dollar:before { + content: "\e7a1"; +} + +.tmicon-transanction:before { + content: "\e7a2"; +} + +.tmicon-filter-fill:before { + content: "\e7a3"; +} + +.tmicon-all-fill:before { + content: "\e7a4"; +} + +.tmicon-databaseplus-fill:before { + content: "\e7a5"; +} + +.tmicon-database-fill:before { + content: "\e7a6"; +} + +.tmicon-commentlines-fill:before { + content: "\e7a7"; +} + +.tmicon-commentdots-fill:before { + content: "\e7a8"; +} + +.tmicon-paperplane-fill:before { + content: "\e7a9"; +} + +.tmicon-eyeslash-fill:before { + content: "\e7aa"; +} + +.tmicon-eye-fill:before { + content: "\e7ab"; +} + +.tmicon-lightbulb-fill:before { + content: "\e7ac"; +} + +.tmicon-flag-fill:before { + content: "\e7ad"; +} + +.tmicon-tag-fill:before { + content: "\e7ae"; +} + +.tmicon-position-fill:before { + content: "\e7af"; +} + +.tmicon-location-fill:before { + content: "\e7b0"; +} + +.tmicon-map-fill:before { + content: "\e7b1"; +} + +.tmicon-inboxin-fill:before { + content: "\e7b2"; +} + +.tmicon-box-fill:before { + content: "\e7b3"; +} + +.tmicon-databaseset-fill:before { + content: "\e7b4"; +} + +.tmicon-layergroup-fill:before { + content: "\e7b5"; +} + +.tmicon-cry-fill:before { + content: "\e7b6"; +} + +.tmicon-smile-fill:before { + content: "\e7b7"; +} + +.tmicon-unlock-fill:before { + content: "\e7b8"; +} + +.tmicon-lock-fill:before { + content: "\e7b9"; +} + +.tmicon-alignright-fill:before { + content: "\e7ba"; +} + +.tmicon-alignleft-fill:before { + content: "\e7bb"; +} + +.tmicon-borderbottom-fill:before { + content: "\e7bc"; +} + +.tmicon-bordertop-fill:before { + content: "\e7bd"; +} + +.tmicon-aligncenter-fill:before { + content: "\e7be"; +} + +.tmicon-sort-down-nogap-copy:before { + content: "\f167"; +} + +.tmicon-borderverticle-fill:before { + content: "\e7bf"; +} + +.tmicon-piccenter-fill:before { + content: "\e7c0"; +} + +.tmicon-picside-fill:before { + content: "\e7c1"; +} + +.tmicon-folderopen-fill:before { + content: "\e7c2"; +} + +.tmicon-folderplus-fill:before { + content: "\e7c3"; +} + +.tmicon-folder-fill:before { + content: "\e7c4"; +} + +.tmicon-file-SQL:before { + content: "\e7c5"; +} + +.tmicon-fileplus-fill:before { + content: "\e7c6"; +} + +.tmicon-file-fill:before { + content: "\e7c7"; +} + +.tmicon-copy-fill:before { + content: "\e7c8"; +} + +.tmicon-headset-fill:before { + content: "\e7c9"; +} + +.tmicon-phone-fill:before { + content: "\e7ca"; +} + +.tmicon-pausecircle-fill:before { + content: "\e7cb"; +} + +.tmicon-stopcircle-fill:before { + content: "\e7cc"; +} + +.tmicon-playcircle-fill:before { + content: "\e7cd"; +} + +.tmicon-delete-fill:before { + content: "\e7ce"; +} + +.tmicon-picture-fill:before { + content: "\e7cf"; +} + +.tmicon-mail-fill:before { + content: "\e7d0"; +} + +.tmicon-heart-fill:before { + content: "\e7d1"; +} + +.tmicon-collection-fill:before { + content: "\e7d2"; +} + +.tmicon-user-group-fill:before { + content: "\e7d3"; +} + +.tmicon-userplus-fill:before { + content: "\e7d4"; +} + +.tmicon-user-fill:before { + content: "\e7d5"; +} + +.tmicon-cog-fill:before { + content: "\e7d6"; +} + +.tmicon-clock-fill:before { + content: "\e7d7"; +} + +.tmicon-calendaralt-fill:before { + content: "\e7d8"; +} + +.tmicon-clouddownload-fill:before { + content: "\e7d9"; +} + +.tmicon-cloudupload-fill:before { + content: "\e7da"; +} + +.tmicon-exchange-fill:before { + content: "\e7db"; +} + +.tmicon-info-circle-fill:before { + content: "\e7dc"; +} + +.tmicon-question-circle-fill:before { + content: "\e7dd"; +} + +.tmicon-exclamationcircle-f:before { + content: "\e7de"; +} + +.tmicon-minus-circle-fill:before { + content: "\e7df"; +} + +.tmicon-plus-circle-fill:before { + content: "\e7e0"; +} + +.tmicon-times-circle-fill:before { + content: "\e7e1"; +} + +.tmicon-check-circle-fill:before { + content: "\e7e2"; +} + +.tmicon-compressalt-fill:before { + content: "\e7e3"; +} + +.tmicon-expandalt-fill:before { + content: "\e7e4"; +} + +.tmicon-filter:before { + content: "\e7e5"; +} + +.tmicon-all:before { + content: "\e7e6"; +} + +.tmicon-database-plus:before { + content: "\e7e7"; +} + +.tmicon-database:before { + content: "\e7e8"; +} + +.tmicon-comment-lines:before { + content: "\e7e9"; +} + +.tmicon-comment-dots:before { + content: "\e7ea"; +} + +.tmicon-paper-plane:before { + content: "\e7eb"; +} + +.tmicon-eye-slash:before { + content: "\e7ec"; +} + +.tmicon-eye:before { + content: "\e7ed"; +} + +.tmicon-lightbulb:before { + content: "\e7ee"; +} + +.tmicon-flag:before { + content: "\e7ef"; +} + +.tmicon-tag:before { + content: "\e7f0"; +} + +.tmicon-position:before { + content: "\e7f1"; +} + +.tmicon-location:before { + content: "\e7f2"; +} + +.tmicon-map:before { + content: "\e7f3"; +} + +.tmicon-inbox-in:before { + content: "\e7f4"; +} + +.tmicon-box:before { + content: "\e7f5"; +} + +.tmicon-database-set:before { + content: "\e7f6"; +} + +.tmicon-layer-group:before { + content: "\e7f7"; +} + +.tmicon-wind-cry:before { + content: "\e7f8"; +} + +.tmicon-wind-smile:before { + content: "\e7f9"; +} + +.tmicon-unlock:before { + content: "\e7fa"; +} + +.tmicon-lock:before { + content: "\e7fb"; +} + +.tmicon-align-right:before { + content: "\e7fc"; +} + +.tmicon-align-left:before { + content: "\e7fd"; +} + +.tmicon-border-bottom:before { + content: "\e7fe"; +} + +.tmicon-border-top:before { + content: "\e7ff"; +} + +.tmicon-align-center:before { + content: "\e800"; +} + +.tmicon-border-verticle:before { + content: "\e801"; +} + +.tmicon-pic-center:before { + content: "\e802"; +} + +.tmicon-pic-side:before { + content: "\e803"; +} + +.tmicon-folder-open:before { + content: "\e804"; +} + +.tmicon-folder-plus:before { + content: "\e805"; +} + +.tmicon-folder:before { + content: "\e806"; +} + +.tmicon-file-SQL1:before { + content: "\e807"; +} + +.tmicon-file-plus:before { + content: "\e808"; +} + +.tmicon-file:before { + content: "\e809"; +} + +.tmicon-copy:before { + content: "\e80a"; +} + +.tmicon-headset:before { + content: "\e80b"; +} + +.tmicon-phone:before { + content: "\e80c"; +} + +.tmicon-pausecircle:before { + content: "\e80d"; +} + +.tmicon-stopcircle:before { + content: "\e80e"; +} + +.tmicon-playcircle:before { + content: "\e80f"; +} + +.tmicon-delete:before { + content: "\e810"; +} + +.tmicon-picture:before { + content: "\e811"; +} + +.tmicon-mail:before { + content: "\e812"; +} + +.tmicon-like:before { + content: "\e813"; +} + +.tmicon-collection:before { + content: "\e814"; +} + +.tmicon-user-group:before { + content: "\e815"; +} + +.tmicon-account-plus:before { + content: "\e816"; +} + +.tmicon-account:before { + content: "\e817"; +} + +.tmicon-cog:before { + content: "\e818"; +} + +.tmicon-clock:before { + content: "\e819"; +} + +.tmicon-calendar-alt:before { + content: "\e81a"; +} + +.tmicon-clouddownload:before { + content: "\e81b"; +} + +.tmicon-cloudupload:before { + content: "\e81c"; +} + +.tmicon-exchange:before { + content: "\e81d"; +} + +.tmicon-info-circle:before { + content: "\e81e"; +} + +.tmicon-question-circle:before { + content: "\e81f"; +} + +.tmicon-exclamation-circle:before { + content: "\e820"; +} + +.tmicon-minus-circle:before { + content: "\e821"; +} + +.tmicon-plus-circle:before { + content: "\e822"; +} + +.tmicon-times-circle:before { + content: "\e823"; +} + +.tmicon-check-circle:before { + content: "\e824"; +} + +.tmicon-compress-alt:before { + content: "\e825"; +} + +.tmicon-expand-alt:before { + content: "\e826"; +} + +.tmicon-ban:before { + content: "\e827"; +} + +.tmicon-minus:before { + content: "\e828"; +} + +.tmicon-plus:before { + content: "\e829"; +} + +.tmicon-times:before { + content: "\e82a"; +} + +.tmicon-check:before { + content: "\e82b"; +} + +.tmicon-search-minus:before { + content: "\e82c"; +} + +.tmicon-search-plus:before { + content: "\e82d"; +} + +.tmicon-search:before { + content: "\e82e"; +} + +.tmicon-reply:before { + content: "\e82f"; +} + +.tmicon-undo:before { + content: "\e830"; +} + +.tmicon-redo:before { + content: "\e831"; +} + +.tmicon-external-link:before { + content: "\e832"; +} + +.tmicon-arrows-alt:before { + content: "\e833"; +} + +.tmicon-indent:before { + content: "\e834"; +} + +.tmicon-outdent:before { + content: "\e835"; +} + +.tmicon-sort-line:before { + content: "\e836"; +} + +.tmicon-switch:before { + content: "\e837"; +} + +.tmicon-wind-descending:before { + content: "\e838"; +} + +.tmicon-wind-ascending:before { + content: "\e839"; +} + +.tmicon-download:before { + content: "\e83a"; +} + +.tmicon-upload:before { + content: "\e83b"; +} + +.tmicon-arrow-to-bottom:before { + content: "\e83c"; +} + +.tmicon-arrow-to-top:before { + content: "\e83d"; +} + +.tmicon-long-arrow-down:before { + content: "\e83e"; +} + +.tmicon-long-arrow-up:before { + content: "\e83f"; +} + +.tmicon-arrow-right:before { + content: "\e840"; +} + +.tmicon-arrow-left:before { + content: "\e841"; +} + +.tmicon-sort:before { + content: "\e842"; +} + +.tmicon-sort-down:before { + content: "\e843"; +} + +.tmicon-sort-up:before { + content: "\e844"; +} + +.tmicon-caret-right:before { + content: "\e845"; +} + +.tmicon-caret-left:before { + content: "\e846"; +} + +.tmicon-arrows-v:before { + content: "\e847"; +} + +.tmicon-angle-double-down:before { + content: "\e848"; +} + +.tmicon-angle-double-up:before { + content: "\e849"; +} + +.tmicon-angle-double-right:before { + content: "\e84a"; +} + +.tmicon-angle-double-left:before { + content: "\e84b"; +} + +.tmicon-angle-down:before { + content: "\e84c"; +} + +.tmicon-angle-up:before { + content: "\e84d"; +} + +.tmicon-angle-right:before { + content: "\e84e"; +} + +.tmicon-angle-left:before { + content: "\e84f"; +} + +.tmicon-paperclip:before { + content: "\e850"; +} + +.tmicon-connection:before { + content: "\e851"; +} + +.tmicon-training:before { + content: "\e853"; +} + +.tmicon-process:before { + content: "\e854"; +} + +.tmicon-news:before { + content: "\e855"; +} + +.tmicon-save:before { + content: "\e856"; +} + +.tmicon-print:before { + content: "\e857"; +} + +.tmicon-new-releases:before { + content: "\e858"; +} + +.tmicon-release:before { + content: "\e85a"; +} + +.tmicon-alert:before { + content: "\e85b"; +} + +.tmicon-backspace:before { + content: "\e85c"; +} + +.tmicon-gem:before { + content: "\e85d"; +} + +.tmicon-integral:before { + content: "\e85e"; +} + +.tmicon-star-circle:before { + content: "\e85f"; +} + +.tmicon-user-circle:before { + content: "\e860"; +} + +.tmicon-cloud-machine-fill:before { + content: "\e861"; +} + +.tmicon-cloud-machine:before { + content: "\e862"; +} + +.tmicon-terminal-fill:before { + content: "\e863"; +} + +.tmicon-terminal:before { + content: "\e864"; +} + +.tmicon-shopping-cart-fill:before { + content: "\e865"; +} + +.tmicon-resource:before { + content: "\e867"; +} + +.tmicon-rank:before { + content: "\e86a"; +} + +.tmicon-sync-alt:before { + content: "\e86b"; +} + +.tmicon-compass:before { + content: "\e86c"; +} + +.tmicon-arrow-alt-from-top:before { + content: "\e86d"; +} + +.tmicon-arrow-alt-from-botto:before { + content: "\e86e"; +} + +.tmicon-menu:before { + content: "\e86f"; +} + +.tmicon-icon-drag:before { + content: "\e870"; +} + +.tmicon-early-warning:before { + content: "\e871"; +} + +.tmicon-share:before { + content: "\e872"; +} + +.tmicon-share1:before { + content: "\e873"; +} + +.tmicon-management-:before { + content: "\e874"; +} + +.tmicon-accesskeys:before { + content: "\e875"; +} + +.tmicon-arrow-sortdown-smal:before { + content: "\e877"; +} + +.tmicon-minus-square-fill:before { + content: "\e878"; +} + +.tmicon-plus-square-fill:before { + content: "\e879"; +} + +.tmicon-minus-square:before { + content: "\e87a"; +} + +.tmicon-plus-square:before { + content: "\e87b"; +} + +.tmicon-stepmode:before { + content: "\e87d"; +} + +.tmicon-scrollingmode:before { + content: "\e87e"; +} + +.tmicon-shoppingcart:before { + content: "\e881"; +} + +.tmicon-waiting-fill:before { + content: "\e882"; +} + +.tmicon-waiting:before { + content: "\e883"; +} + +.tmicon-right-arrow-rect:before { + content: "\e884"; +} + +.tmicon-left-arrow-rect:before { + content: "\e885"; +} + +.tmicon-bell:before { + content: "\e887"; +} + +.tmicon-structured-data:before { + content: "\e888"; +} + +.tmicon-drag:before { + content: "\e769"; +} + +.tmicon-vector:before { + content: "\e889"; +} + +.tmicon-ellipsis-vertical:before { + content: "\e76a"; +} + +.tmicon-NEW-copy:before { + content: "\e88a"; +} + +.tmicon-gallery-view:before { + content: "\e76b"; +} + +.tmicon-HOT-copy:before { + content: "\e88b"; +} + +.tmicon-WIFI:before { + content: "\e76c"; +} + +.tmicon-home:before { + content: "\e88c"; +} + +.tmicon-bug-report:before { + content: "\e76d"; +} + +.tmicon-monitoring:before { + content: "\e88e"; +} + +.tmicon-qrcode:before { + content: "\e76e"; +} + +.tmicon-diagnose:before { + content: "\e88f"; +} + +.tmicon-scan:before { + content: "\e76f"; +} + +.tmicon-loading:before { + content: "\e891"; +} + +.tmicon-cut:before { + content: "\e770"; +} + +.tmicon-Directory-tree:before { + content: "\e892"; +} + +.tmicon-gift:before { + content: "\e771"; +} + +.tmicon-application:before { + content: "\e89e"; +} + +.tmicon-link:before { + content: "\e772"; +} + +.tmicon-applicationgroup:before { + content: "\e89f"; +} + +.tmicon-poweroff:before { + content: "\e774"; +} + +.tmicon-key:before { + content: "\e775"; +} + +.tmicon-safety-certificate:before { + content: "\e776"; +} + +.tmicon-supervise:before { + content: "\e777"; +} + +.tmicon-tag-subscipt:before { + content: "\e78a"; +} + +.tmicon-chart-pie-alt:before { + content: "\e78c"; +} + +.tmicon-chart-relation:before { + content: "\e78d"; +} + +.tmicon-chart-scatter-plot:before { + content: "\e78e"; +} + +.tmicon-chart-area:before { + content: "\e78f"; +} + +.tmicon-chart-line:before { + content: "\e790"; +} + +.tmicon-chart-bar:before { + content: "\e791"; +} + diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.js b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.js new file mode 100644 index 0000000..ae711c1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_2660213='',function(h){var l=(l=document.getElementsByTagName("script"))[l.length-1],i=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var c,a,o,m,t,v=function(l,i){i.parentNode.insertBefore(l,i)};if(i&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}c=function(){var l,i=document.createElement("div");i.innerHTML=h._iconfont_svg_string_2660213,(i=i.getElementsByTagName("svg")[0])&&(i.setAttribute("aria-hidden","true"),i.style.position="absolute",i.style.width=0,i.style.height=0,i.style.overflow="hidden",i=i,(l=document.body).firstChild?v(i,l.firstChild):l.appendChild(i))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),c()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(o=c,m=h.document,t=!1,s(),m.onreadystatechange=function(){"complete"==m.readyState&&(m.onreadystatechange=null,z())})}function z(){t||(t=!0,o())}function s(){try{m.documentElement.doScroll("left")}catch(l){return void setTimeout(s,50)}z()}}(window); \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.json b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.json new file mode 100644 index 0000000..bffed73 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.json @@ -0,0 +1,2809 @@ +{ + "id": "2660213", + "name": "tmui", + "font_family": "tmicon", + "css_prefix_text": "tmicon-", + "description": "", + "glyphs": [ + { + "icon_id": "400994", + "name": "paypal", + "font_class": "paypal", + "unicode": "e8c8", + "unicode_decimal": 59592 + }, + { + "icon_id": "4936951", + "name": "google", + "font_class": "google", + "unicode": "e8c9", + "unicode_decimal": 59593 + }, + { + "icon_id": "5634565", + "name": "apple-pay", + "font_class": "apple-pay", + "unicode": "f166", + "unicode_decimal": 61798 + }, + { + "icon_id": "6808509", + "name": "Apple", + "font_class": "Apple", + "unicode": "edd8", + "unicode_decimal": 60888 + }, + { + "icon_id": "27365105", + "name": "google-pay", + "font_class": "google-pay", + "unicode": "ec04", + "unicode_decimal": 60420 + }, + { + "icon_id": "1039", + "name": "钱袋", + "font_class": "qiandai", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "1431", + "name": "券", + "font_class": "quan", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "780044", + "name": "红包", + "font_class": "hongbao", + "unicode": "e6da", + "unicode_decimal": 59098 + }, + { + "icon_id": "577373", + "name": "通知-fill", + "font_class": "tongzhifill", + "unicode": "e758", + "unicode_decimal": 59224 + }, + { + "icon_id": "844648", + "name": "人民币3", + "font_class": "renminbi3", + "unicode": "e73e", + "unicode_decimal": 59198 + }, + { + "icon_id": "1240755", + "name": "投票", + "font_class": "toupiao", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "5117623", + "name": "票券-色块icon", + "font_class": "icon", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "5178379", + "name": "足球", + "font_class": "svggeshi-", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "5387627", + "name": "美元", + "font_class": "meiyuan", + "unicode": "eb1a", + "unicode_decimal": 60186 + }, + { + "icon_id": "7516900", + "name": "汽车", + "font_class": "qiche", + "unicode": "e611", + "unicode_decimal": 58897 + }, + { + "icon_id": "8023415", + "name": "通知", + "font_class": "tongzhi", + "unicode": "e612", + "unicode_decimal": 58898 + }, + { + "icon_id": "8575345", + "name": "会员", + "font_class": "huiyuan", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "9456772", + "name": "md-phone-portrait", + "font_class": "md-phone-portrait", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "9456777", + "name": "md-planet", + "font_class": "md-planet", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "9456779", + "name": "md-phone-landscape", + "font_class": "md-phone-landscape", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "9456788", + "name": "md-power", + "font_class": "md-power", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "9456798", + "name": "md-redo", + "font_class": "md-redo", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "9456808", + "name": "md-rocket", + "font_class": "md-rocket", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "9456819", + "name": "md-ribbon", + "font_class": "md-ribbon", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "9456835", + "name": "md-undo", + "font_class": "md-undo", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "9456837", + "name": "md-trending-down", + "font_class": "md-trending-down", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "9456851", + "name": "md-trending-up", + "font_class": "md-trending-up", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "9457020", + "name": "md-git-merge", + "font_class": "md-git-merge", + "unicode": "e6de", + "unicode_decimal": 59102 + }, + { + "icon_id": "9457071", + "name": "md-female", + "font_class": "md-female", + "unicode": "e6e2", + "unicode_decimal": 59106 + }, + { + "icon_id": "9457091", + "name": "md-male", + "font_class": "md-male", + "unicode": "e6e3", + "unicode_decimal": 59107 + }, + { + "icon_id": "9457108", + "name": "md-heart-dislike", + "font_class": "md-heart-dislike", + "unicode": "e6e4", + "unicode_decimal": 59108 + }, + { + "icon_id": "9457111", + "name": "md-heart", + "font_class": "md-heart1", + "unicode": "e6e7", + "unicode_decimal": 59111 + }, + { + "icon_id": "9457220", + "name": "ios-text", + "font_class": "ios-text", + "unicode": "e6f1", + "unicode_decimal": 59121 + }, + { + "icon_id": "9457232", + "name": "ios-rose", + "font_class": "ios-rose", + "unicode": "e6f2", + "unicode_decimal": 59122 + }, + { + "icon_id": "9457346", + "name": "logo-game-controller-b", + "font_class": "logo-game-controller-b", + "unicode": "e6fd", + "unicode_decimal": 59133 + }, + { + "icon_id": "9457416", + "name": "ios-beer", + "font_class": "ios-beer", + "unicode": "e707", + "unicode_decimal": 59143 + }, + { + "icon_id": "9457424", + "name": "ios-cafe", + "font_class": "ios-cafe", + "unicode": "e709", + "unicode_decimal": 59145 + }, + { + "icon_id": "9457440", + "name": "ios-chatbubbles", + "font_class": "ios-chatbubbles", + "unicode": "e70a", + "unicode_decimal": 59146 + }, + { + "icon_id": "9457465", + "name": "ios-color-palette", + "font_class": "ios-color-palette", + "unicode": "e70e", + "unicode_decimal": 59150 + }, + { + "icon_id": "9457485", + "name": "ios-filing", + "font_class": "ios-filing", + "unicode": "e712", + "unicode_decimal": 59154 + }, + { + "icon_id": "9457494", + "name": "ios-finger-print", + "font_class": "ios-finger-print", + "unicode": "e713", + "unicode_decimal": 59155 + }, + { + "icon_id": "9457501", + "name": "ios-hand", + "font_class": "ios-hand", + "unicode": "e716", + "unicode_decimal": 59158 + }, + { + "icon_id": "9457504", + "name": "ios-flower", + "font_class": "ios-flower", + "unicode": "e714", + "unicode_decimal": 59156 + }, + { + "icon_id": "9457529", + "name": "ios-ice-cream", + "font_class": "ios-ice-cream", + "unicode": "e719", + "unicode_decimal": 59161 + }, + { + "icon_id": "9457539", + "name": "ios-grid", + "font_class": "ios-grid", + "unicode": "e71c", + "unicode_decimal": 59164 + }, + { + "icon_id": "9457540", + "name": "ios-mail-open", + "font_class": "ios-mail-open1", + "unicode": "e71d", + "unicode_decimal": 59165 + }, + { + "icon_id": "9457543", + "name": "ios-key", + "font_class": "ios-key", + "unicode": "e71e", + "unicode_decimal": 59166 + }, + { + "icon_id": "9457545", + "name": "ios-man", + "font_class": "ios-man", + "unicode": "e71f", + "unicode_decimal": 59167 + }, + { + "icon_id": "12387153", + "name": "美元", + "font_class": "meiyuan1", + "unicode": "e90d", + "unicode_decimal": 59661 + }, + { + "icon_id": "13030084", + "name": "自定义", + "font_class": "zidingyi", + "unicode": "e60d", + "unicode_decimal": 58893 + }, + { + "icon_id": "20587178", + "name": "刷新", + "font_class": "shuaxin", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "21242934", + "name": "会员", + "font_class": "huiyuan1", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "1250665", + "name": "圆", + "font_class": "yuan", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "7137863", + "name": "ios-airplane", + "font_class": "ios-airplane", + "unicode": "e852", + "unicode_decimal": 59474 + }, + { + "icon_id": "7137864", + "name": "ios-woman", + "font_class": "ios-woman", + "unicode": "e859", + "unicode_decimal": 59481 + }, + { + "icon_id": "7137869", + "name": "ios-aperture", + "font_class": "ios-aperture", + "unicode": "e866", + "unicode_decimal": 59494 + }, + { + "icon_id": "7137873", + "name": "ios-alarm", + "font_class": "ios-alarm", + "unicode": "e868", + "unicode_decimal": 59496 + }, + { + "icon_id": "7137875", + "name": "ios-arrow-dropdown", + "font_class": "ios-arrow-dropdown", + "unicode": "e869", + "unicode_decimal": 59497 + }, + { + "icon_id": "7137879", + "name": "ios-arrow-dropleft-c", + "font_class": "ios-arrow-dropleft-c", + "unicode": "e876", + "unicode_decimal": 59510 + }, + { + "icon_id": "7137880", + "name": "ios-arrow-dropleft", + "font_class": "ios-arrow-dropleft", + "unicode": "e87c", + "unicode_decimal": 59516 + }, + { + "icon_id": "7137881", + "name": "ios-arrow-dropup", + "font_class": "ios-arrow-dropup", + "unicode": "e87f", + "unicode_decimal": 59519 + }, + { + "icon_id": "7137882", + "name": "ios-arrow-dropright-", + "font_class": "ios-arrow-dropright-", + "unicode": "e880", + "unicode_decimal": 59520 + }, + { + "icon_id": "7137883", + "name": "ios-arrow-dropdown-c", + "font_class": "ios-arrow-dropdown-c", + "unicode": "e886", + "unicode_decimal": 59526 + }, + { + "icon_id": "7137886", + "name": "ios-arrow-dropup-cir", + "font_class": "ios-arrow-dropup-cir", + "unicode": "e88d", + "unicode_decimal": 59533 + }, + { + "icon_id": "7137887", + "name": "ios-arrow-dropright", + "font_class": "ios-arrow-dropright", + "unicode": "e890", + "unicode_decimal": 59536 + }, + { + "icon_id": "7137892", + "name": "ios-attach", + "font_class": "ios-attach", + "unicode": "e893", + "unicode_decimal": 59539 + }, + { + "icon_id": "7137893", + "name": "ios-at", + "font_class": "ios-at", + "unicode": "e894", + "unicode_decimal": 59540 + }, + { + "icon_id": "7137901", + "name": "ios-bed", + "font_class": "ios-bed", + "unicode": "e895", + "unicode_decimal": 59541 + }, + { + "icon_id": "7137903", + "name": "ios-battery-full", + "font_class": "ios-battery-full", + "unicode": "e896", + "unicode_decimal": 59542 + }, + { + "icon_id": "7137906", + "name": "ios-bookmarks", + "font_class": "ios-bookmarks", + "unicode": "e897", + "unicode_decimal": 59543 + }, + { + "icon_id": "7137926", + "name": "ios-bluetooth", + "font_class": "ios-bluetooth", + "unicode": "e898", + "unicode_decimal": 59544 + }, + { + "icon_id": "7137930", + "name": "ios-cellular", + "font_class": "ios-cellular", + "unicode": "e899", + "unicode_decimal": 59545 + }, + { + "icon_id": "7137971", + "name": "ios-cut", + "font_class": "ios-cut", + "unicode": "e89a", + "unicode_decimal": 59546 + }, + { + "icon_id": "7138027", + "name": "ios-leaf", + "font_class": "ios-leaf", + "unicode": "e89b", + "unicode_decimal": 59547 + }, + { + "icon_id": "7138043", + "name": "ios-mic", + "font_class": "ios-mic", + "unicode": "e89c", + "unicode_decimal": 59548 + }, + { + "icon_id": "7138045", + "name": "ios-mail-open", + "font_class": "ios-mail-open", + "unicode": "e89d", + "unicode_decimal": 59549 + }, + { + "icon_id": "7138078", + "name": "ios-partly-sunny", + "font_class": "ios-partly-sunny", + "unicode": "e8a0", + "unicode_decimal": 59552 + }, + { + "icon_id": "7138095", + "name": "ios-radio-button-on", + "font_class": "ios-radio-button-on", + "unicode": "e8a1", + "unicode_decimal": 59553 + }, + { + "icon_id": "7138098", + "name": "ios-radio-button-off", + "font_class": "ios-radio-button-off", + "unicode": "e8a2", + "unicode_decimal": 59554 + }, + { + "icon_id": "7138105", + "name": "ios-remove", + "font_class": "ios-remove", + "unicode": "e8a3", + "unicode_decimal": 59555 + }, + { + "icon_id": "7138112", + "name": "ios-remove-circle-ou", + "font_class": "ios-remove-circle-ou", + "unicode": "e8a4", + "unicode_decimal": 59556 + }, + { + "icon_id": "7138113", + "name": "ios-remove-circle", + "font_class": "ios-remove-circle", + "unicode": "e8a5", + "unicode_decimal": 59557 + }, + { + "icon_id": "7138118", + "name": "ios-rocket", + "font_class": "ios-rocket", + "unicode": "e8a6", + "unicode_decimal": 59558 + }, + { + "icon_id": "7138122", + "name": "ios-ribbon", + "font_class": "ios-ribbon", + "unicode": "e8a7", + "unicode_decimal": 59559 + }, + { + "icon_id": "7138128", + "name": "ios-star", + "font_class": "ios-star", + "unicode": "e8a8", + "unicode_decimal": 59560 + }, + { + "icon_id": "7138134", + "name": "ios-star-half", + "font_class": "ios-star-half", + "unicode": "e8a9", + "unicode_decimal": 59561 + }, + { + "icon_id": "7138135", + "name": "ios-star-outline", + "font_class": "ios-star-outline", + "unicode": "e8aa", + "unicode_decimal": 59562 + }, + { + "icon_id": "7138137", + "name": "ios-snow", + "font_class": "ios-snow", + "unicode": "e8ab", + "unicode_decimal": 59563 + }, + { + "icon_id": "7138138", + "name": "ios-stopwatch", + "font_class": "ios-stopwatch", + "unicode": "e8ac", + "unicode_decimal": 59564 + }, + { + "icon_id": "7138139", + "name": "ios-sunny", + "font_class": "ios-sunny", + "unicode": "e8ad", + "unicode_decimal": 59565 + }, + { + "icon_id": "7138160", + "name": "ios-unlock", + "font_class": "ios-unlock", + "unicode": "e8ae", + "unicode_decimal": 59566 + }, + { + "icon_id": "7138165", + "name": "ios-trophy", + "font_class": "ios-trophy", + "unicode": "e8af", + "unicode_decimal": 59567 + }, + { + "icon_id": "7138167", + "name": "ios-umbrella", + "font_class": "ios-umbrella", + "unicode": "e8b0", + "unicode_decimal": 59568 + }, + { + "icon_id": "7138168", + "name": "ios-videocam", + "font_class": "ios-videocam", + "unicode": "e8b1", + "unicode_decimal": 59569 + }, + { + "icon_id": "7138169", + "name": "ios-volume-high", + "font_class": "ios-volume-high", + "unicode": "e8b2", + "unicode_decimal": 59570 + }, + { + "icon_id": "7138170", + "name": "ios-water", + "font_class": "ios-water", + "unicode": "e8b3", + "unicode_decimal": 59571 + }, + { + "icon_id": "7138176", + "name": "ios-wifi", + "font_class": "ios-wifi", + "unicode": "e8b4", + "unicode_decimal": 59572 + }, + { + "icon_id": "7138213", + "name": "md-water", + "font_class": "md-water", + "unicode": "e8b5", + "unicode_decimal": 59573 + }, + { + "icon_id": "7138292", + "name": "md-checkbox", + "font_class": "md-checkbox", + "unicode": "e8b6", + "unicode_decimal": 59574 + }, + { + "icon_id": "7138295", + "name": "md-chatbubbles", + "font_class": "md-chatbubbles", + "unicode": "e8b7", + "unicode_decimal": 59575 + }, + { + "icon_id": "7138296", + "name": "md-chatboxes", + "font_class": "md-chatboxes", + "unicode": "e8b8", + "unicode_decimal": 59576 + }, + { + "icon_id": "7138301", + "name": "md-cloud-done", + "font_class": "md-cloud-done", + "unicode": "e8b9", + "unicode_decimal": 59577 + }, + { + "icon_id": "7138303", + "name": "md-cloud-upload", + "font_class": "md-cloud-upload", + "unicode": "e8ba", + "unicode_decimal": 59578 + }, + { + "icon_id": "7138310", + "name": "md-cloudy", + "font_class": "md-cloudy", + "unicode": "e8bb", + "unicode_decimal": 59579 + }, + { + "icon_id": "7138328", + "name": "md-contrast", + "font_class": "md-contrast", + "unicode": "e8bc", + "unicode_decimal": 59580 + }, + { + "icon_id": "7138332", + "name": "md-disc", + "font_class": "md-disc", + "unicode": "e8bd", + "unicode_decimal": 59581 + }, + { + "icon_id": "7138369", + "name": "md-heart-empty", + "font_class": "md-heart-empty", + "unicode": "e8be", + "unicode_decimal": 59582 + }, + { + "icon_id": "7138372", + "name": "md-heart", + "font_class": "md-heart", + "unicode": "e8bf", + "unicode_decimal": 59583 + }, + { + "icon_id": "7138374", + "name": "md-home", + "font_class": "md-home", + "unicode": "e8c0", + "unicode_decimal": 59584 + }, + { + "icon_id": "7138376", + "name": "md-mail-open", + "font_class": "md-mail-open", + "unicode": "e8c1", + "unicode_decimal": 59585 + }, + { + "icon_id": "7138391", + "name": "md-heart-half", + "font_class": "md-heart-half", + "unicode": "e8c2", + "unicode_decimal": 59586 + }, + { + "icon_id": "7138393", + "name": "md-person", + "font_class": "md-person", + "unicode": "e8c3", + "unicode_decimal": 59587 + }, + { + "icon_id": "7138405", + "name": "md-people", + "font_class": "md-people", + "unicode": "e8c4", + "unicode_decimal": 59588 + }, + { + "icon_id": "7138421", + "name": "md-more", + "font_class": "md-more", + "unicode": "e8c5", + "unicode_decimal": 59589 + }, + { + "icon_id": "7138431", + "name": "md-moon", + "font_class": "md-moon", + "unicode": "e8c6", + "unicode_decimal": 59590 + }, + { + "icon_id": "7138481", + "name": "md-pin", + "font_class": "md-pin", + "unicode": "e8c7", + "unicode_decimal": 59591 + }, + { + "icon_id": "577338", + "name": "更多", + "font_class": "gengduo", + "unicode": "e73a", + "unicode_decimal": 59194 + }, + { + "icon_id": "1420800", + "name": "IOS", + "font_class": "ios", + "unicode": "e60c", + "unicode_decimal": 58892 + }, + { + "icon_id": "1445619", + "name": "wifi-off", + "font_class": "wifi-off", + "unicode": "e93a", + "unicode_decimal": 59706 + }, + { + "icon_id": "3629124", + "name": "列表空空", + "font_class": "shiliangzhinengduixiang-", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "3977929", + "name": "微信支付", + "font_class": "weixinzhifu", + "unicode": "e605", + "unicode_decimal": 58885 + }, + { + "icon_id": "8338693", + "name": "银行卡", + "font_class": "yinhangqia", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "9306316", + "name": "云闪付", + "font_class": "yunshanfu", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "15989503", + "name": "头条样式", + "font_class": "toutiaoyangshi", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "18166694", + "name": "抖音", + "font_class": "douyin", + "unicode": "e8db", + "unicode_decimal": 59611 + }, + { + "icon_id": "18166716", + "name": "支付,支付宝", + "font_class": "alipay", + "unicode": "e8de", + "unicode_decimal": 59614 + }, + { + "icon_id": "24164616", + "name": "华为", + "font_class": "huawei", + "unicode": "e610", + "unicode_decimal": 58896 + }, + { + "icon_id": "167190", + "name": "链接", + "font_class": "lianjie", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "1185485", + "name": "微信", + "font_class": "weixin", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "6556747", + "name": "朋友圈", + "font_class": "pengyouquan", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "6756291", + "name": "微博", + "font_class": "weibo", + "unicode": "e608", + "unicode_decimal": 58888 + }, + { + "icon_id": "16286932", + "name": "QQ", + "font_class": "QQ", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "16322953", + "name": "小程序", + "font_class": "xiaochengxu", + "unicode": "e706", + "unicode_decimal": 59142 + }, + { + "icon_id": "6151036", + "name": "display-code", + "font_class": "display-code", + "unicode": "e792", + "unicode_decimal": 59282 + }, + { + "icon_id": "6151037", + "name": "display-arrow-right", + "font_class": "display-arrow-right", + "unicode": "e793", + "unicode_decimal": 59283 + }, + { + "icon_id": "6151038", + "name": "display-arrow-left", + "font_class": "display-arrow-left", + "unicode": "e794", + "unicode_decimal": 59284 + }, + { + "icon_id": "6151039", + "name": "laptop-error", + "font_class": "laptop-error", + "unicode": "e795", + "unicode_decimal": 59285 + }, + { + "icon_id": "6151040", + "name": "laptop-check", + "font_class": "laptop-check", + "unicode": "e796", + "unicode_decimal": 59286 + }, + { + "icon_id": "6151041", + "name": "laptop", + "font_class": "laptop", + "unicode": "e797", + "unicode_decimal": 59287 + }, + { + "icon_id": "6151050", + "name": "mobile-error", + "font_class": "mobile-error", + "unicode": "e798", + "unicode_decimal": 59288 + }, + { + "icon_id": "6151051", + "name": "mobile-check", + "font_class": "mobile-check", + "unicode": "e799", + "unicode_decimal": 59289 + }, + { + "icon_id": "6151052", + "name": "mobile-alt", + "font_class": "mobile-alt", + "unicode": "e79a", + "unicode_decimal": 59290 + }, + { + "icon_id": "6151059", + "name": "aliwangwang", + "font_class": "aliwangwang", + "unicode": "e79d", + "unicode_decimal": 59293 + }, + { + "icon_id": "6151060", + "name": "nail", + "font_class": "nail", + "unicode": "e79e", + "unicode_decimal": 59294 + }, + { + "icon_id": "6151061", + "name": "nail-fixed", + "font_class": "nail-fixed", + "unicode": "e79f", + "unicode_decimal": 59295 + }, + { + "icon_id": "6151070", + "name": "edit", + "font_class": "edit", + "unicode": "e7a0", + "unicode_decimal": 59296 + }, + { + "icon_id": "6151072", + "name": "dollar", + "font_class": "dollar", + "unicode": "e7a1", + "unicode_decimal": 59297 + }, + { + "icon_id": "6151080", + "name": "transanction", + "font_class": "transanction", + "unicode": "e7a2", + "unicode_decimal": 59298 + }, + { + "icon_id": "6151087", + "name": "filter-fill", + "font_class": "filter-fill", + "unicode": "e7a3", + "unicode_decimal": 59299 + }, + { + "icon_id": "6151089", + "name": "all-fill", + "font_class": "all-fill", + "unicode": "e7a4", + "unicode_decimal": 59300 + }, + { + "icon_id": "6151090", + "name": "database plus-fill", + "font_class": "databaseplus-fill", + "unicode": "e7a5", + "unicode_decimal": 59301 + }, + { + "icon_id": "6151091", + "name": "database-fill", + "font_class": "database-fill", + "unicode": "e7a6", + "unicode_decimal": 59302 + }, + { + "icon_id": "6151092", + "name": "comment lines-fill", + "font_class": "commentlines-fill", + "unicode": "e7a7", + "unicode_decimal": 59303 + }, + { + "icon_id": "6151093", + "name": "comment dots-fill", + "font_class": "commentdots-fill", + "unicode": "e7a8", + "unicode_decimal": 59304 + }, + { + "icon_id": "6151095", + "name": "paper plane-fill", + "font_class": "paperplane-fill", + "unicode": "e7a9", + "unicode_decimal": 59305 + }, + { + "icon_id": "6151096", + "name": "eye slash-fill", + "font_class": "eyeslash-fill", + "unicode": "e7aa", + "unicode_decimal": 59306 + }, + { + "icon_id": "6151097", + "name": "eye-fill", + "font_class": "eye-fill", + "unicode": "e7ab", + "unicode_decimal": 59307 + }, + { + "icon_id": "6151098", + "name": "lightbulb-fill", + "font_class": "lightbulb-fill", + "unicode": "e7ac", + "unicode_decimal": 59308 + }, + { + "icon_id": "6151099", + "name": "flag-fill", + "font_class": "flag-fill", + "unicode": "e7ad", + "unicode_decimal": 59309 + }, + { + "icon_id": "6151100", + "name": "tag-fill", + "font_class": "tag-fill", + "unicode": "e7ae", + "unicode_decimal": 59310 + }, + { + "icon_id": "6151101", + "name": "position-fill", + "font_class": "position-fill", + "unicode": "e7af", + "unicode_decimal": 59311 + }, + { + "icon_id": "6151102", + "name": "location-fill", + "font_class": "location-fill", + "unicode": "e7b0", + "unicode_decimal": 59312 + }, + { + "icon_id": "6151103", + "name": "map-fill", + "font_class": "map-fill", + "unicode": "e7b1", + "unicode_decimal": 59313 + }, + { + "icon_id": "6151105", + "name": "inbox in-fill", + "font_class": "inboxin-fill", + "unicode": "e7b2", + "unicode_decimal": 59314 + }, + { + "icon_id": "6151106", + "name": "box-fill", + "font_class": "box-fill", + "unicode": "e7b3", + "unicode_decimal": 59315 + }, + { + "icon_id": "6151108", + "name": "database set-fill", + "font_class": "databaseset-fill", + "unicode": "e7b4", + "unicode_decimal": 59316 + }, + { + "icon_id": "6151109", + "name": "layer group-fill", + "font_class": "layergroup-fill", + "unicode": "e7b5", + "unicode_decimal": 59317 + }, + { + "icon_id": "6151111", + "name": "cry-fill", + "font_class": "cry-fill", + "unicode": "e7b6", + "unicode_decimal": 59318 + }, + { + "icon_id": "6151113", + "name": "smile-fill", + "font_class": "smile-fill", + "unicode": "e7b7", + "unicode_decimal": 59319 + }, + { + "icon_id": "6151115", + "name": "unlock-fill", + "font_class": "unlock-fill", + "unicode": "e7b8", + "unicode_decimal": 59320 + }, + { + "icon_id": "6151117", + "name": "lock-fill", + "font_class": "lock-fill", + "unicode": "e7b9", + "unicode_decimal": 59321 + }, + { + "icon_id": "6151118", + "name": "align right-fill", + "font_class": "alignright-fill", + "unicode": "e7ba", + "unicode_decimal": 59322 + }, + { + "icon_id": "6151119", + "name": "align left-fill", + "font_class": "alignleft-fill", + "unicode": "e7bb", + "unicode_decimal": 59323 + }, + { + "icon_id": "6151120", + "name": "border bottom-fill", + "font_class": "borderbottom-fill", + "unicode": "e7bc", + "unicode_decimal": 59324 + }, + { + "icon_id": "6151121", + "name": "border top-fill", + "font_class": "bordertop-fill", + "unicode": "e7bd", + "unicode_decimal": 59325 + }, + { + "icon_id": "6151122", + "name": "align center-fill", + "font_class": "aligncenter-fill", + "unicode": "e7be", + "unicode_decimal": 59326 + }, + { + "icon_id": "32631406", + "name": "sort-down-copy", + "font_class": "sort-down-nogap-copy", + "unicode": "f167", + "unicode_decimal": 61799 + }, + { + "icon_id": "6151123", + "name": "border verticle-fill", + "font_class": "borderverticle-fill", + "unicode": "e7bf", + "unicode_decimal": 59327 + }, + { + "icon_id": "6151126", + "name": "pic center-fill", + "font_class": "piccenter-fill", + "unicode": "e7c0", + "unicode_decimal": 59328 + }, + { + "icon_id": "6151127", + "name": "pic side-fill", + "font_class": "picside-fill", + "unicode": "e7c1", + "unicode_decimal": 59329 + }, + { + "icon_id": "6151128", + "name": "folder open-fill", + "font_class": "folderopen-fill", + "unicode": "e7c2", + "unicode_decimal": 59330 + }, + { + "icon_id": "6151129", + "name": "folder plus-fill", + "font_class": "folderplus-fill", + "unicode": "e7c3", + "unicode_decimal": 59331 + }, + { + "icon_id": "6151130", + "name": "folder-fill", + "font_class": "folder-fill", + "unicode": "e7c4", + "unicode_decimal": 59332 + }, + { + "icon_id": "6151132", + "name": "file-SQL", + "font_class": "file-SQL", + "unicode": "e7c5", + "unicode_decimal": 59333 + }, + { + "icon_id": "6151133", + "name": "file plus-fill", + "font_class": "fileplus-fill", + "unicode": "e7c6", + "unicode_decimal": 59334 + }, + { + "icon_id": "6151134", + "name": "file-fill", + "font_class": "file-fill", + "unicode": "e7c7", + "unicode_decimal": 59335 + }, + { + "icon_id": "6151135", + "name": "copy-fill", + "font_class": "copy-fill", + "unicode": "e7c8", + "unicode_decimal": 59336 + }, + { + "icon_id": "6151136", + "name": "headset-fill", + "font_class": "headset-fill", + "unicode": "e7c9", + "unicode_decimal": 59337 + }, + { + "icon_id": "6151138", + "name": "phone-fill", + "font_class": "phone-fill", + "unicode": "e7ca", + "unicode_decimal": 59338 + }, + { + "icon_id": "6151139", + "name": "pause circle-fill", + "font_class": "pausecircle-fill", + "unicode": "e7cb", + "unicode_decimal": 59339 + }, + { + "icon_id": "6151140", + "name": "stop circle-fill", + "font_class": "stopcircle-fill", + "unicode": "e7cc", + "unicode_decimal": 59340 + }, + { + "icon_id": "6151141", + "name": "play circle-fill", + "font_class": "playcircle-fill", + "unicode": "e7cd", + "unicode_decimal": 59341 + }, + { + "icon_id": "6151143", + "name": "delete-fill", + "font_class": "delete-fill", + "unicode": "e7ce", + "unicode_decimal": 59342 + }, + { + "icon_id": "6151144", + "name": "picture-fill", + "font_class": "picture-fill", + "unicode": "e7cf", + "unicode_decimal": 59343 + }, + { + "icon_id": "6151145", + "name": "mail-fill", + "font_class": "mail-fill", + "unicode": "e7d0", + "unicode_decimal": 59344 + }, + { + "icon_id": "6151146", + "name": "heart-fill", + "font_class": "heart-fill", + "unicode": "e7d1", + "unicode_decimal": 59345 + }, + { + "icon_id": "6151147", + "name": "collection-fill", + "font_class": "collection-fill", + "unicode": "e7d2", + "unicode_decimal": 59346 + }, + { + "icon_id": "6151149", + "name": "user-group-fill", + "font_class": "user-group-fill", + "unicode": "e7d3", + "unicode_decimal": 59347 + }, + { + "icon_id": "6151150", + "name": "user plus-fill", + "font_class": "userplus-fill", + "unicode": "e7d4", + "unicode_decimal": 59348 + }, + { + "icon_id": "6151151", + "name": "user-fill", + "font_class": "user-fill", + "unicode": "e7d5", + "unicode_decimal": 59349 + }, + { + "icon_id": "6151152", + "name": "cog-fill", + "font_class": "cog-fill", + "unicode": "e7d6", + "unicode_decimal": 59350 + }, + { + "icon_id": "6151154", + "name": "clock-fill", + "font_class": "clock-fill", + "unicode": "e7d7", + "unicode_decimal": 59351 + }, + { + "icon_id": "6151155", + "name": "calendar alt-fill", + "font_class": "calendaralt-fill", + "unicode": "e7d8", + "unicode_decimal": 59352 + }, + { + "icon_id": "6151157", + "name": "cloud download-fill", + "font_class": "clouddownload-fill", + "unicode": "e7d9", + "unicode_decimal": 59353 + }, + { + "icon_id": "6151158", + "name": "cloud upload-fill", + "font_class": "cloudupload-fill", + "unicode": "e7da", + "unicode_decimal": 59354 + }, + { + "icon_id": "6151159", + "name": "exchange-fill", + "font_class": "exchange-fill", + "unicode": "e7db", + "unicode_decimal": 59355 + }, + { + "icon_id": "6151161", + "name": "info-circle-fill", + "font_class": "info-circle-fill", + "unicode": "e7dc", + "unicode_decimal": 59356 + }, + { + "icon_id": "6151162", + "name": "question-circle-fill", + "font_class": "question-circle-fill", + "unicode": "e7dd", + "unicode_decimal": 59357 + }, + { + "icon_id": "6151171", + "name": "exclamation circle-f", + "font_class": "exclamationcircle-f", + "unicode": "e7de", + "unicode_decimal": 59358 + }, + { + "icon_id": "6151173", + "name": "minus-circle-fill", + "font_class": "minus-circle-fill", + "unicode": "e7df", + "unicode_decimal": 59359 + }, + { + "icon_id": "6151174", + "name": "plus-circle-fill", + "font_class": "plus-circle-fill", + "unicode": "e7e0", + "unicode_decimal": 59360 + }, + { + "icon_id": "6151176", + "name": "times-circle-fill", + "font_class": "times-circle-fill", + "unicode": "e7e1", + "unicode_decimal": 59361 + }, + { + "icon_id": "6151177", + "name": "check-circle-fill", + "font_class": "check-circle-fill", + "unicode": "e7e2", + "unicode_decimal": 59362 + }, + { + "icon_id": "6151178", + "name": "compress alt-fill", + "font_class": "compressalt-fill", + "unicode": "e7e3", + "unicode_decimal": 59363 + }, + { + "icon_id": "6151181", + "name": "expand alt-fill", + "font_class": "expandalt-fill", + "unicode": "e7e4", + "unicode_decimal": 59364 + }, + { + "icon_id": "6151187", + "name": "filter", + "font_class": "filter", + "unicode": "e7e5", + "unicode_decimal": 59365 + }, + { + "icon_id": "6151188", + "name": "all", + "font_class": "all", + "unicode": "e7e6", + "unicode_decimal": 59366 + }, + { + "icon_id": "6151192", + "name": "database-plus", + "font_class": "database-plus", + "unicode": "e7e7", + "unicode_decimal": 59367 + }, + { + "icon_id": "6151193", + "name": "database", + "font_class": "database", + "unicode": "e7e8", + "unicode_decimal": 59368 + }, + { + "icon_id": "6151195", + "name": "comment-lines", + "font_class": "comment-lines", + "unicode": "e7e9", + "unicode_decimal": 59369 + }, + { + "icon_id": "6151196", + "name": "comment-dots", + "font_class": "comment-dots", + "unicode": "e7ea", + "unicode_decimal": 59370 + }, + { + "icon_id": "6151198", + "name": "paper-plane", + "font_class": "paper-plane", + "unicode": "e7eb", + "unicode_decimal": 59371 + }, + { + "icon_id": "6151208", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e7ec", + "unicode_decimal": 59372 + }, + { + "icon_id": "6151209", + "name": "eye", + "font_class": "eye", + "unicode": "e7ed", + "unicode_decimal": 59373 + }, + { + "icon_id": "6151210", + "name": "lightbulb", + "font_class": "lightbulb", + "unicode": "e7ee", + "unicode_decimal": 59374 + }, + { + "icon_id": "6151211", + "name": "flag", + "font_class": "flag", + "unicode": "e7ef", + "unicode_decimal": 59375 + }, + { + "icon_id": "6151212", + "name": "tag", + "font_class": "tag", + "unicode": "e7f0", + "unicode_decimal": 59376 + }, + { + "icon_id": "6151214", + "name": "position", + "font_class": "position", + "unicode": "e7f1", + "unicode_decimal": 59377 + }, + { + "icon_id": "6151215", + "name": "location", + "font_class": "location", + "unicode": "e7f2", + "unicode_decimal": 59378 + }, + { + "icon_id": "6151216", + "name": "map", + "font_class": "map", + "unicode": "e7f3", + "unicode_decimal": 59379 + }, + { + "icon_id": "6151218", + "name": "inbox-in", + "font_class": "inbox-in", + "unicode": "e7f4", + "unicode_decimal": 59380 + }, + { + "icon_id": "6151219", + "name": "box", + "font_class": "box", + "unicode": "e7f5", + "unicode_decimal": 59381 + }, + { + "icon_id": "6151221", + "name": "database-set", + "font_class": "database-set", + "unicode": "e7f6", + "unicode_decimal": 59382 + }, + { + "icon_id": "6151223", + "name": "layer-group", + "font_class": "layer-group", + "unicode": "e7f7", + "unicode_decimal": 59383 + }, + { + "icon_id": "6151224", + "name": "wind-cry", + "font_class": "wind-cry", + "unicode": "e7f8", + "unicode_decimal": 59384 + }, + { + "icon_id": "6151225", + "name": "wind-smile", + "font_class": "wind-smile", + "unicode": "e7f9", + "unicode_decimal": 59385 + }, + { + "icon_id": "6151227", + "name": "unlock", + "font_class": "unlock", + "unicode": "e7fa", + "unicode_decimal": 59386 + }, + { + "icon_id": "6151228", + "name": "lock", + "font_class": "lock", + "unicode": "e7fb", + "unicode_decimal": 59387 + }, + { + "icon_id": "6151230", + "name": "align-right", + "font_class": "align-right", + "unicode": "e7fc", + "unicode_decimal": 59388 + }, + { + "icon_id": "6151231", + "name": "align-left", + "font_class": "align-left", + "unicode": "e7fd", + "unicode_decimal": 59389 + }, + { + "icon_id": "6151232", + "name": "border-bottom", + "font_class": "border-bottom", + "unicode": "e7fe", + "unicode_decimal": 59390 + }, + { + "icon_id": "6151233", + "name": "border-top", + "font_class": "border-top", + "unicode": "e7ff", + "unicode_decimal": 59391 + }, + { + "icon_id": "6151234", + "name": "align-center", + "font_class": "align-center", + "unicode": "e800", + "unicode_decimal": 59392 + }, + { + "icon_id": "6151236", + "name": "border-verticle", + "font_class": "border-verticle", + "unicode": "e801", + "unicode_decimal": 59393 + }, + { + "icon_id": "6151237", + "name": "pic-center", + "font_class": "pic-center", + "unicode": "e802", + "unicode_decimal": 59394 + }, + { + "icon_id": "6151238", + "name": "pic-side", + "font_class": "pic-side", + "unicode": "e803", + "unicode_decimal": 59395 + }, + { + "icon_id": "6151239", + "name": "folder-open", + "font_class": "folder-open", + "unicode": "e804", + "unicode_decimal": 59396 + }, + { + "icon_id": "6151241", + "name": "folder-plus", + "font_class": "folder-plus", + "unicode": "e805", + "unicode_decimal": 59397 + }, + { + "icon_id": "6151242", + "name": "folder", + "font_class": "folder", + "unicode": "e806", + "unicode_decimal": 59398 + }, + { + "icon_id": "6151251", + "name": "file-SQL", + "font_class": "file-SQL1", + "unicode": "e807", + "unicode_decimal": 59399 + }, + { + "icon_id": "6151252", + "name": "file-plus", + "font_class": "file-plus", + "unicode": "e808", + "unicode_decimal": 59400 + }, + { + "icon_id": "6151253", + "name": "file", + "font_class": "file", + "unicode": "e809", + "unicode_decimal": 59401 + }, + { + "icon_id": "6151256", + "name": "copy", + "font_class": "copy", + "unicode": "e80a", + "unicode_decimal": 59402 + }, + { + "icon_id": "6151257", + "name": "headset", + "font_class": "headset", + "unicode": "e80b", + "unicode_decimal": 59403 + }, + { + "icon_id": "6151258", + "name": "phone", + "font_class": "phone", + "unicode": "e80c", + "unicode_decimal": 59404 + }, + { + "icon_id": "6151260", + "name": "pause circle", + "font_class": "pausecircle", + "unicode": "e80d", + "unicode_decimal": 59405 + }, + { + "icon_id": "6151261", + "name": "stop circle", + "font_class": "stopcircle", + "unicode": "e80e", + "unicode_decimal": 59406 + }, + { + "icon_id": "6151262", + "name": "play circle", + "font_class": "playcircle", + "unicode": "e80f", + "unicode_decimal": 59407 + }, + { + "icon_id": "6151263", + "name": "delete", + "font_class": "delete", + "unicode": "e810", + "unicode_decimal": 59408 + }, + { + "icon_id": "6151264", + "name": "picture", + "font_class": "picture", + "unicode": "e811", + "unicode_decimal": 59409 + }, + { + "icon_id": "6151265", + "name": "mail", + "font_class": "mail", + "unicode": "e812", + "unicode_decimal": 59410 + }, + { + "icon_id": "6151266", + "name": "like", + "font_class": "like", + "unicode": "e813", + "unicode_decimal": 59411 + }, + { + "icon_id": "6151267", + "name": "collection", + "font_class": "collection", + "unicode": "e814", + "unicode_decimal": 59412 + }, + { + "icon_id": "6151268", + "name": "user-group", + "font_class": "user-group", + "unicode": "e815", + "unicode_decimal": 59413 + }, + { + "icon_id": "6151270", + "name": "account-plus", + "font_class": "account-plus", + "unicode": "e816", + "unicode_decimal": 59414 + }, + { + "icon_id": "6151272", + "name": "account", + "font_class": "account", + "unicode": "e817", + "unicode_decimal": 59415 + }, + { + "icon_id": "6151273", + "name": "cog", + "font_class": "cog", + "unicode": "e818", + "unicode_decimal": 59416 + }, + { + "icon_id": "6151275", + "name": "clock", + "font_class": "clock", + "unicode": "e819", + "unicode_decimal": 59417 + }, + { + "icon_id": "6151276", + "name": "calendar-alt", + "font_class": "calendar-alt", + "unicode": "e81a", + "unicode_decimal": 59418 + }, + { + "icon_id": "6151277", + "name": "cloud download", + "font_class": "clouddownload", + "unicode": "e81b", + "unicode_decimal": 59419 + }, + { + "icon_id": "6151278", + "name": "cloud upload", + "font_class": "cloudupload", + "unicode": "e81c", + "unicode_decimal": 59420 + }, + { + "icon_id": "6151279", + "name": "exchange", + "font_class": "exchange", + "unicode": "e81d", + "unicode_decimal": 59421 + }, + { + "icon_id": "6151280", + "name": "info-circle", + "font_class": "info-circle", + "unicode": "e81e", + "unicode_decimal": 59422 + }, + { + "icon_id": "6151281", + "name": "question-circle", + "font_class": "question-circle", + "unicode": "e81f", + "unicode_decimal": 59423 + }, + { + "icon_id": "6151282", + "name": "exclamation-circle", + "font_class": "exclamation-circle", + "unicode": "e820", + "unicode_decimal": 59424 + }, + { + "icon_id": "6151283", + "name": "minus-circle", + "font_class": "minus-circle", + "unicode": "e821", + "unicode_decimal": 59425 + }, + { + "icon_id": "6151285", + "name": "plus-circle", + "font_class": "plus-circle", + "unicode": "e822", + "unicode_decimal": 59426 + }, + { + "icon_id": "6151286", + "name": "times-circle", + "font_class": "times-circle", + "unicode": "e823", + "unicode_decimal": 59427 + }, + { + "icon_id": "6151287", + "name": "check-circle", + "font_class": "check-circle", + "unicode": "e824", + "unicode_decimal": 59428 + }, + { + "icon_id": "6151288", + "name": "compress-alt", + "font_class": "compress-alt", + "unicode": "e825", + "unicode_decimal": 59429 + }, + { + "icon_id": "6151289", + "name": "expand-alt", + "font_class": "expand-alt", + "unicode": "e826", + "unicode_decimal": 59430 + }, + { + "icon_id": "6151290", + "name": "ban", + "font_class": "ban", + "unicode": "e827", + "unicode_decimal": 59431 + }, + { + "icon_id": "6151292", + "name": "minus", + "font_class": "minus", + "unicode": "e828", + "unicode_decimal": 59432 + }, + { + "icon_id": "6151293", + "name": "plus", + "font_class": "plus", + "unicode": "e829", + "unicode_decimal": 59433 + }, + { + "icon_id": "6151294", + "name": "times", + "font_class": "times", + "unicode": "e82a", + "unicode_decimal": 59434 + }, + { + "icon_id": "6151295", + "name": "check", + "font_class": "check", + "unicode": "e82b", + "unicode_decimal": 59435 + }, + { + "icon_id": "6151299", + "name": "search-minus", + "font_class": "search-minus", + "unicode": "e82c", + "unicode_decimal": 59436 + }, + { + "icon_id": "6151300", + "name": "search-plus", + "font_class": "search-plus", + "unicode": "e82d", + "unicode_decimal": 59437 + }, + { + "icon_id": "6151301", + "name": "search", + "font_class": "search", + "unicode": "e82e", + "unicode_decimal": 59438 + }, + { + "icon_id": "6151304", + "name": "reply", + "font_class": "reply", + "unicode": "e82f", + "unicode_decimal": 59439 + }, + { + "icon_id": "6151306", + "name": "undo", + "font_class": "undo", + "unicode": "e830", + "unicode_decimal": 59440 + }, + { + "icon_id": "6151307", + "name": "redo", + "font_class": "redo", + "unicode": "e831", + "unicode_decimal": 59441 + }, + { + "icon_id": "6151308", + "name": "external-link", + "font_class": "external-link", + "unicode": "e832", + "unicode_decimal": 59442 + }, + { + "icon_id": "6151309", + "name": "arrows-alt", + "font_class": "arrows-alt", + "unicode": "e833", + "unicode_decimal": 59443 + }, + { + "icon_id": "6151310", + "name": "indent", + "font_class": "indent", + "unicode": "e834", + "unicode_decimal": 59444 + }, + { + "icon_id": "6151311", + "name": "outdent", + "font_class": "outdent", + "unicode": "e835", + "unicode_decimal": 59445 + }, + { + "icon_id": "6151312", + "name": "sort-line", + "font_class": "sort-line", + "unicode": "e836", + "unicode_decimal": 59446 + }, + { + "icon_id": "6151314", + "name": "switch", + "font_class": "switch", + "unicode": "e837", + "unicode_decimal": 59447 + }, + { + "icon_id": "6151316", + "name": "wind-descending", + "font_class": "wind-descending", + "unicode": "e838", + "unicode_decimal": 59448 + }, + { + "icon_id": "6151317", + "name": "wind-ascending", + "font_class": "wind-ascending", + "unicode": "e839", + "unicode_decimal": 59449 + }, + { + "icon_id": "6151351", + "name": "download", + "font_class": "download", + "unicode": "e83a", + "unicode_decimal": 59450 + }, + { + "icon_id": "6151353", + "name": "upload", + "font_class": "upload", + "unicode": "e83b", + "unicode_decimal": 59451 + }, + { + "icon_id": "6151360", + "name": "arrow-to-bottom", + "font_class": "arrow-to-bottom", + "unicode": "e83c", + "unicode_decimal": 59452 + }, + { + "icon_id": "6151361", + "name": "arrow-to-top", + "font_class": "arrow-to-top", + "unicode": "e83d", + "unicode_decimal": 59453 + }, + { + "icon_id": "6151363", + "name": "long-arrow-down", + "font_class": "long-arrow-down", + "unicode": "e83e", + "unicode_decimal": 59454 + }, + { + "icon_id": "6151364", + "name": "long-arrow-up", + "font_class": "long-arrow-up", + "unicode": "e83f", + "unicode_decimal": 59455 + }, + { + "icon_id": "6151368", + "name": "arrow-right", + "font_class": "arrow-right", + "unicode": "e840", + "unicode_decimal": 59456 + }, + { + "icon_id": "6151370", + "name": "arrow-left", + "font_class": "arrow-left", + "unicode": "e841", + "unicode_decimal": 59457 + }, + { + "icon_id": "6151371", + "name": "sort", + "font_class": "sort", + "unicode": "e842", + "unicode_decimal": 59458 + }, + { + "icon_id": "6151377", + "name": "sort-down", + "font_class": "sort-down", + "unicode": "e843", + "unicode_decimal": 59459 + }, + { + "icon_id": "6151384", + "name": "sort-up", + "font_class": "sort-up", + "unicode": "e844", + "unicode_decimal": 59460 + }, + { + "icon_id": "6151385", + "name": "caret-right", + "font_class": "caret-right", + "unicode": "e845", + "unicode_decimal": 59461 + }, + { + "icon_id": "6151386", + "name": "caret-left", + "font_class": "caret-left", + "unicode": "e846", + "unicode_decimal": 59462 + }, + { + "icon_id": "6151387", + "name": "arrows-v", + "font_class": "arrows-v", + "unicode": "e847", + "unicode_decimal": 59463 + }, + { + "icon_id": "6151390", + "name": "angle- double-down", + "font_class": "angle-double-down", + "unicode": "e848", + "unicode_decimal": 59464 + }, + { + "icon_id": "6151391", + "name": "angle-double-up", + "font_class": "angle-double-up", + "unicode": "e849", + "unicode_decimal": 59465 + }, + { + "icon_id": "6151392", + "name": "angle-double-right", + "font_class": "angle-double-right", + "unicode": "e84a", + "unicode_decimal": 59466 + }, + { + "icon_id": "6151393", + "name": "angle-double-left", + "font_class": "angle-double-left", + "unicode": "e84b", + "unicode_decimal": 59467 + }, + { + "icon_id": "6151394", + "name": "angle-down", + "font_class": "angle-down", + "unicode": "e84c", + "unicode_decimal": 59468 + }, + { + "icon_id": "6151395", + "name": "angle-up", + "font_class": "angle-up", + "unicode": "e84d", + "unicode_decimal": 59469 + }, + { + "icon_id": "6151396", + "name": "angle-right", + "font_class": "angle-right", + "unicode": "e84e", + "unicode_decimal": 59470 + }, + { + "icon_id": "6151456", + "name": "angle-left", + "font_class": "angle-left", + "unicode": "e84f", + "unicode_decimal": 59471 + }, + { + "icon_id": "6168585", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e850", + "unicode_decimal": 59472 + }, + { + "icon_id": "6172713", + "name": "connection", + "font_class": "connection", + "unicode": "e851", + "unicode_decimal": 59473 + }, + { + "icon_id": "6172717", + "name": "training", + "font_class": "training", + "unicode": "e853", + "unicode_decimal": 59475 + }, + { + "icon_id": "6172721", + "name": "process", + "font_class": "process", + "unicode": "e854", + "unicode_decimal": 59476 + }, + { + "icon_id": "6172722", + "name": "news", + "font_class": "news", + "unicode": "e855", + "unicode_decimal": 59477 + }, + { + "icon_id": "6172724", + "name": "save", + "font_class": "save", + "unicode": "e856", + "unicode_decimal": 59478 + }, + { + "icon_id": "6172748", + "name": "print", + "font_class": "print", + "unicode": "e857", + "unicode_decimal": 59479 + }, + { + "icon_id": "6172751", + "name": "new-releases", + "font_class": "new-releases", + "unicode": "e858", + "unicode_decimal": 59480 + }, + { + "icon_id": "6172758", + "name": "release", + "font_class": "release", + "unicode": "e85a", + "unicode_decimal": 59482 + }, + { + "icon_id": "6172762", + "name": "alert", + "font_class": "alert", + "unicode": "e85b", + "unicode_decimal": 59483 + }, + { + "icon_id": "6172770", + "name": "backspace", + "font_class": "backspace", + "unicode": "e85c", + "unicode_decimal": 59484 + }, + { + "icon_id": "6172775", + "name": "gem", + "font_class": "gem", + "unicode": "e85d", + "unicode_decimal": 59485 + }, + { + "icon_id": "6172776", + "name": "integral", + "font_class": "integral", + "unicode": "e85e", + "unicode_decimal": 59486 + }, + { + "icon_id": "6172777", + "name": "star-circle", + "font_class": "star-circle", + "unicode": "e85f", + "unicode_decimal": 59487 + }, + { + "icon_id": "6172778", + "name": "user-circle", + "font_class": "user-circle", + "unicode": "e860", + "unicode_decimal": 59488 + }, + { + "icon_id": "6172783", + "name": "cloud-machine-fill", + "font_class": "cloud-machine-fill", + "unicode": "e861", + "unicode_decimal": 59489 + }, + { + "icon_id": "6172784", + "name": "cloud-machine", + "font_class": "cloud-machine", + "unicode": "e862", + "unicode_decimal": 59490 + }, + { + "icon_id": "6172785", + "name": "terminal-fill", + "font_class": "terminal-fill", + "unicode": "e863", + "unicode_decimal": 59491 + }, + { + "icon_id": "6172786", + "name": "terminal", + "font_class": "terminal", + "unicode": "e864", + "unicode_decimal": 59492 + }, + { + "icon_id": "6173016", + "name": "shopping-cart-fill", + "font_class": "shopping-cart-fill", + "unicode": "e865", + "unicode_decimal": 59493 + }, + { + "icon_id": "6228652", + "name": "resource", + "font_class": "resource", + "unicode": "e867", + "unicode_decimal": 59495 + }, + { + "icon_id": "6303226", + "name": "rank", + "font_class": "rank", + "unicode": "e86a", + "unicode_decimal": 59498 + }, + { + "icon_id": "6343820", + "name": "sync-alt", + "font_class": "sync-alt", + "unicode": "e86b", + "unicode_decimal": 59499 + }, + { + "icon_id": "6343821", + "name": "compass", + "font_class": "compass", + "unicode": "e86c", + "unicode_decimal": 59500 + }, + { + "icon_id": "6343822", + "name": "arrow-alt- from-top", + "font_class": "arrow-alt-from-top", + "unicode": "e86d", + "unicode_decimal": 59501 + }, + { + "icon_id": "6343823", + "name": "arrow-alt-from-botto", + "font_class": "arrow-alt-from-botto", + "unicode": "e86e", + "unicode_decimal": 59502 + }, + { + "icon_id": "6343824", + "name": "menu", + "font_class": "menu", + "unicode": "e86f", + "unicode_decimal": 59503 + }, + { + "icon_id": "6353291", + "name": "icon-drag", + "font_class": "icon-drag", + "unicode": "e870", + "unicode_decimal": 59504 + }, + { + "icon_id": "6353292", + "name": "early-warning", + "font_class": "early-warning", + "unicode": "e871", + "unicode_decimal": 59505 + }, + { + "icon_id": "6353293", + "name": "share", + "font_class": "share", + "unicode": "e872", + "unicode_decimal": 59506 + }, + { + "icon_id": "6353306", + "name": "share", + "font_class": "share1", + "unicode": "e873", + "unicode_decimal": 59507 + }, + { + "icon_id": "6861314", + "name": "management", + "font_class": "management-", + "unicode": "e874", + "unicode_decimal": 59508 + }, + { + "icon_id": "6863066", + "name": "accesskeys", + "font_class": "accesskeys", + "unicode": "e875", + "unicode_decimal": 59509 + }, + { + "icon_id": "7357537", + "name": "arrow-sort down-small", + "font_class": "arrow-sortdown-smal", + "unicode": "e877", + "unicode_decimal": 59511 + }, + { + "icon_id": "7410218", + "name": "minus-square-fill", + "font_class": "minus-square-fill", + "unicode": "e878", + "unicode_decimal": 59512 + }, + { + "icon_id": "7410219", + "name": "plus-square-fill", + "font_class": "plus-square-fill", + "unicode": "e879", + "unicode_decimal": 59513 + }, + { + "icon_id": "7410220", + "name": "minus-square", + "font_class": "minus-square", + "unicode": "e87a", + "unicode_decimal": 59514 + }, + { + "icon_id": "7410222", + "name": "plus-square", + "font_class": "plus-square", + "unicode": "e87b", + "unicode_decimal": 59515 + }, + { + "icon_id": "7906283", + "name": "step mode", + "font_class": "stepmode", + "unicode": "e87d", + "unicode_decimal": 59517 + }, + { + "icon_id": "7906284", + "name": "scrolling mode", + "font_class": "scrollingmode", + "unicode": "e87e", + "unicode_decimal": 59518 + }, + { + "icon_id": "8268337", + "name": "shopping cart", + "font_class": "shoppingcart", + "unicode": "e881", + "unicode_decimal": 59521 + }, + { + "icon_id": "8305716", + "name": "waiting-fill", + "font_class": "waiting-fill", + "unicode": "e882", + "unicode_decimal": 59522 + }, + { + "icon_id": "8305718", + "name": "waiting", + "font_class": "waiting", + "unicode": "e883", + "unicode_decimal": 59523 + }, + { + "icon_id": "8307796", + "name": "right-arrow-rect", + "font_class": "right-arrow-rect", + "unicode": "e884", + "unicode_decimal": 59524 + }, + { + "icon_id": "8307800", + "name": "left-arrow-rect", + "font_class": "left-arrow-rect", + "unicode": "e885", + "unicode_decimal": 59525 + }, + { + "icon_id": "8623603", + "name": "bell", + "font_class": "bell", + "unicode": "e887", + "unicode_decimal": 59527 + }, + { + "icon_id": "8762555", + "name": "structured data", + "font_class": "structured-data", + "unicode": "e888", + "unicode_decimal": 59528 + }, + { + "icon_id": "6150957", + "name": "drag", + "font_class": "drag", + "unicode": "e769", + "unicode_decimal": 59241 + }, + { + "icon_id": "8762556", + "name": "vector", + "font_class": "vector", + "unicode": "e889", + "unicode_decimal": 59529 + }, + { + "icon_id": "6150958", + "name": "ellipsis-v", + "font_class": "ellipsis-vertical", + "unicode": "e76a", + "unicode_decimal": 59242 + }, + { + "icon_id": "9009443", + "name": "NEW", + "font_class": "NEW-copy", + "unicode": "e88a", + "unicode_decimal": 59530 + }, + { + "icon_id": "6150959", + "name": "gallery-view", + "font_class": "gallery-view", + "unicode": "e76b", + "unicode_decimal": 59243 + }, + { + "icon_id": "9009475", + "name": "HOT", + "font_class": "HOT-copy", + "unicode": "e88b", + "unicode_decimal": 59531 + }, + { + "icon_id": "6150960", + "name": "WIFI", + "font_class": "WIFI", + "unicode": "e76c", + "unicode_decimal": 59244 + }, + { + "icon_id": "9066652", + "name": "home", + "font_class": "home", + "unicode": "e88c", + "unicode_decimal": 59532 + }, + { + "icon_id": "6150961", + "name": "bug-report", + "font_class": "bug-report", + "unicode": "e76d", + "unicode_decimal": 59245 + }, + { + "icon_id": "9340469", + "name": "monitoring", + "font_class": "monitoring", + "unicode": "e88e", + "unicode_decimal": 59534 + }, + { + "icon_id": "6150962", + "name": "qrcode", + "font_class": "qrcode", + "unicode": "e76e", + "unicode_decimal": 59246 + }, + { + "icon_id": "9340470", + "name": "diagnose", + "font_class": "diagnose", + "unicode": "e88f", + "unicode_decimal": 59535 + }, + { + "icon_id": "6150963", + "name": "scan", + "font_class": "scan", + "unicode": "e76f", + "unicode_decimal": 59247 + }, + { + "icon_id": "10273624", + "name": "loading", + "font_class": "loading", + "unicode": "e891", + "unicode_decimal": 59537 + }, + { + "icon_id": "6150964", + "name": "cut", + "font_class": "cut", + "unicode": "e770", + "unicode_decimal": 59248 + }, + { + "icon_id": "11307823", + "name": "Directory tree", + "font_class": "Directory-tree", + "unicode": "e892", + "unicode_decimal": 59538 + }, + { + "icon_id": "6150965", + "name": "gift", + "font_class": "gift", + "unicode": "e771", + "unicode_decimal": 59249 + }, + { + "icon_id": "12253601", + "name": "application", + "font_class": "application", + "unicode": "e89e", + "unicode_decimal": 59550 + }, + { + "icon_id": "6150966", + "name": "link", + "font_class": "link", + "unicode": "e772", + "unicode_decimal": 59250 + }, + { + "icon_id": "12253602", + "name": "application group", + "font_class": "applicationgroup", + "unicode": "e89f", + "unicode_decimal": 59551 + }, + { + "icon_id": "6150968", + "name": "poweroff", + "font_class": "poweroff", + "unicode": "e774", + "unicode_decimal": 59252 + }, + { + "icon_id": "6150969", + "name": "key", + "font_class": "key", + "unicode": "e775", + "unicode_decimal": 59253 + }, + { + "icon_id": "6150970", + "name": "safety-certificate", + "font_class": "safety-certificate", + "unicode": "e776", + "unicode_decimal": 59254 + }, + { + "icon_id": "6150971", + "name": "supervise", + "font_class": "supervise", + "unicode": "e777", + "unicode_decimal": 59255 + }, + { + "icon_id": "6151018", + "name": "tag-subscipt", + "font_class": "tag-subscipt", + "unicode": "e78a", + "unicode_decimal": 59274 + }, + { + "icon_id": "6151030", + "name": "chart-pie-alt", + "font_class": "chart-pie-alt", + "unicode": "e78c", + "unicode_decimal": 59276 + }, + { + "icon_id": "6151031", + "name": "chart-relation", + "font_class": "chart-relation", + "unicode": "e78d", + "unicode_decimal": 59277 + }, + { + "icon_id": "6151032", + "name": "chart-scatter-plot", + "font_class": "chart-scatter-plot", + "unicode": "e78e", + "unicode_decimal": 59278 + }, + { + "icon_id": "6151033", + "name": "chart-area", + "font_class": "chart-area", + "unicode": "e78f", + "unicode_decimal": 59279 + }, + { + "icon_id": "6151034", + "name": "chart-line", + "font_class": "chart-line", + "unicode": "e790", + "unicode_decimal": 59280 + }, + { + "icon_id": "6151035", + "name": "chart-bar", + "font_class": "chart-bar", + "unicode": "e791", + "unicode_decimal": 59281 + } + ] +} diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.ttf b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.ttf new file mode 100644 index 0000000..0d70172 Binary files /dev/null and b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.ttf differ diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.woff b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.woff new file mode 100644 index 0000000..92690d9 Binary files /dev/null and b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.woff differ diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.woff2 b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.woff2 new file mode 100644 index 0000000..1b7550e Binary files /dev/null and b/uni_modules/UniDevTools/src/tmui/tool/tmicon/iconfont.woff2 differ diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/tmicon.css b/uni_modules/UniDevTools/src/tmui/tool/tmicon/tmicon.css new file mode 100644 index 0000000..f6ac0a2 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/tmicon.css @@ -0,0 +1,1615 @@ +@font-face { + font-family: "tmicon"; /* Project id 2660213 */ + src: + url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'); +} + +.tmicon { + font-family: "tmicon" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.tmicon-paypal:before { + content: "\e8c8"; +} + +.tmicon-google:before { + content: "\e8c9"; +} + +.tmicon-apple-pay:before { + content: "\f166"; +} + +.tmicon-Apple:before { + content: "\edd8"; +} + +.tmicon-google-pay:before { + content: "\ec04"; +} + +.tmicon-qiandai:before { + content: "\e600"; +} + +.tmicon-quan:before { + content: "\e601"; +} + +.tmicon-hongbao:before { + content: "\e6da"; +} + +.tmicon-tongzhifill:before { + content: "\e758"; +} + +.tmicon-renminbi3:before { + content: "\e73e"; +} + +.tmicon-toupiao:before { + content: "\e60e"; +} + +.tmicon-icon:before { + content: "\e658"; +} + +.tmicon-svggeshi-:before { + content: "\e65d"; +} + +.tmicon-meiyuan:before { + content: "\eb1a"; +} + +.tmicon-qiche:before { + content: "\e611"; +} + +.tmicon-tongzhi:before { + content: "\e612"; +} + +.tmicon-huiyuan:before { + content: "\e62f"; +} + +.tmicon-md-phone-portrait:before { + content: "\e6c2"; +} + +.tmicon-md-planet:before { + content: "\e6c3"; +} + +.tmicon-md-phone-landscape:before { + content: "\e6c4"; +} + +.tmicon-md-power:before { + content: "\e6c5"; +} + +.tmicon-md-redo:before { + content: "\e6c6"; +} + +.tmicon-md-rocket:before { + content: "\e6c7"; +} + +.tmicon-md-ribbon:before { + content: "\e6c8"; +} + +.tmicon-md-undo:before { + content: "\e6cb"; +} + +.tmicon-md-trending-down:before { + content: "\e6cc"; +} + +.tmicon-md-trending-up:before { + content: "\e6cd"; +} + +.tmicon-md-git-merge:before { + content: "\e6de"; +} + +.tmicon-md-female:before { + content: "\e6e2"; +} + +.tmicon-md-male:before { + content: "\e6e3"; +} + +.tmicon-md-heart-dislike:before { + content: "\e6e4"; +} + +.tmicon-md-heart1:before { + content: "\e6e7"; +} + +.tmicon-ios-text:before { + content: "\e6f1"; +} + +.tmicon-ios-rose:before { + content: "\e6f2"; +} + +.tmicon-logo-game-controller-b:before { + content: "\e6fd"; +} + +.tmicon-ios-beer:before { + content: "\e707"; +} + +.tmicon-ios-cafe:before { + content: "\e709"; +} + +.tmicon-ios-chatbubbles:before { + content: "\e70a"; +} + +.tmicon-ios-color-palette:before { + content: "\e70e"; +} + +.tmicon-ios-filing:before { + content: "\e712"; +} + +.tmicon-ios-finger-print:before { + content: "\e713"; +} + +.tmicon-ios-hand:before { + content: "\e716"; +} + +.tmicon-ios-flower:before { + content: "\e714"; +} + +.tmicon-ios-ice-cream:before { + content: "\e719"; +} + +.tmicon-ios-grid:before { + content: "\e71c"; +} + +.tmicon-ios-mail-open1:before { + content: "\e71d"; +} + +.tmicon-ios-key:before { + content: "\e71e"; +} + +.tmicon-ios-man:before { + content: "\e71f"; +} + +.tmicon-meiyuan1:before { + content: "\e90d"; +} + +.tmicon-zidingyi:before { + content: "\e60d"; +} + +.tmicon-shuaxin:before { + content: "\e6ce"; +} + +.tmicon-huiyuan1:before { + content: "\e646"; +} + +.tmicon-yuan:before { + content: "\e657"; +} + +.tmicon-ios-airplane:before { + content: "\e852"; +} + +.tmicon-ios-woman:before { + content: "\e859"; +} + +.tmicon-ios-aperture:before { + content: "\e866"; +} + +.tmicon-ios-alarm:before { + content: "\e868"; +} + +.tmicon-ios-arrow-dropdown:before { + content: "\e869"; +} + +.tmicon-ios-arrow-dropleft-c:before { + content: "\e876"; +} + +.tmicon-ios-arrow-dropleft:before { + content: "\e87c"; +} + +.tmicon-ios-arrow-dropup:before { + content: "\e87f"; +} + +.tmicon-ios-arrow-dropright-:before { + content: "\e880"; +} + +.tmicon-ios-arrow-dropdown-c:before { + content: "\e886"; +} + +.tmicon-ios-arrow-dropup-cir:before { + content: "\e88d"; +} + +.tmicon-ios-arrow-dropright:before { + content: "\e890"; +} + +.tmicon-ios-attach:before { + content: "\e893"; +} + +.tmicon-ios-at:before { + content: "\e894"; +} + +.tmicon-ios-bed:before { + content: "\e895"; +} + +.tmicon-ios-battery-full:before { + content: "\e896"; +} + +.tmicon-ios-bookmarks:before { + content: "\e897"; +} + +.tmicon-ios-bluetooth:before { + content: "\e898"; +} + +.tmicon-ios-cellular:before { + content: "\e899"; +} + +.tmicon-ios-cut:before { + content: "\e89a"; +} + +.tmicon-ios-leaf:before { + content: "\e89b"; +} + +.tmicon-ios-mic:before { + content: "\e89c"; +} + +.tmicon-ios-mail-open:before { + content: "\e89d"; +} + +.tmicon-ios-partly-sunny:before { + content: "\e8a0"; +} + +.tmicon-ios-radio-button-on:before { + content: "\e8a1"; +} + +.tmicon-ios-radio-button-off:before { + content: "\e8a2"; +} + +.tmicon-ios-remove:before { + content: "\e8a3"; +} + +.tmicon-ios-remove-circle-ou:before { + content: "\e8a4"; +} + +.tmicon-ios-remove-circle:before { + content: "\e8a5"; +} + +.tmicon-ios-rocket:before { + content: "\e8a6"; +} + +.tmicon-ios-ribbon:before { + content: "\e8a7"; +} + +.tmicon-ios-star:before { + content: "\e8a8"; +} + +.tmicon-ios-star-half:before { + content: "\e8a9"; +} + +.tmicon-ios-star-outline:before { + content: "\e8aa"; +} + +.tmicon-ios-snow:before { + content: "\e8ab"; +} + +.tmicon-ios-stopwatch:before { + content: "\e8ac"; +} + +.tmicon-ios-sunny:before { + content: "\e8ad"; +} + +.tmicon-ios-unlock:before { + content: "\e8ae"; +} + +.tmicon-ios-trophy:before { + content: "\e8af"; +} + +.tmicon-ios-umbrella:before { + content: "\e8b0"; +} + +.tmicon-ios-videocam:before { + content: "\e8b1"; +} + +.tmicon-ios-volume-high:before { + content: "\e8b2"; +} + +.tmicon-ios-water:before { + content: "\e8b3"; +} + +.tmicon-ios-wifi:before { + content: "\e8b4"; +} + +.tmicon-md-water:before { + content: "\e8b5"; +} + +.tmicon-md-checkbox:before { + content: "\e8b6"; +} + +.tmicon-md-chatbubbles:before { + content: "\e8b7"; +} + +.tmicon-md-chatboxes:before { + content: "\e8b8"; +} + +.tmicon-md-cloud-done:before { + content: "\e8b9"; +} + +.tmicon-md-cloud-upload:before { + content: "\e8ba"; +} + +.tmicon-md-cloudy:before { + content: "\e8bb"; +} + +.tmicon-md-contrast:before { + content: "\e8bc"; +} + +.tmicon-md-disc:before { + content: "\e8bd"; +} + +.tmicon-md-heart-empty:before { + content: "\e8be"; +} + +.tmicon-md-heart:before { + content: "\e8bf"; +} + +.tmicon-md-home:before { + content: "\e8c0"; +} + +.tmicon-md-mail-open:before { + content: "\e8c1"; +} + +.tmicon-md-heart-half:before { + content: "\e8c2"; +} + +.tmicon-md-person:before { + content: "\e8c3"; +} + +.tmicon-md-people:before { + content: "\e8c4"; +} + +.tmicon-md-more:before { + content: "\e8c5"; +} + +.tmicon-md-moon:before { + content: "\e8c6"; +} + +.tmicon-md-pin:before { + content: "\e8c7"; +} + +.tmicon-gengduo:before { + content: "\e73a"; +} + +.tmicon-ios:before { + content: "\e60c"; +} + +.tmicon-wifi-off:before { + content: "\e93a"; +} + +.tmicon-shiliangzhinengduixiang-:before { + content: "\e6ad"; +} + +.tmicon-weixinzhifu:before { + content: "\e605"; +} + +.tmicon-yinhangqia:before { + content: "\e6c9"; +} + +.tmicon-yunshanfu:before { + content: "\e68b"; +} + +.tmicon-toutiaoyangshi:before { + content: "\e622"; +} + +.tmicon-douyin:before { + content: "\e8db"; +} + +.tmicon-alipay:before { + content: "\e8de"; +} + +.tmicon-huawei:before { + content: "\e610"; +} + +.tmicon-lianjie:before { + content: "\e665"; +} + +.tmicon-weixin:before { + content: "\e63f"; +} + +.tmicon-pengyouquan:before { + content: "\e615"; +} + +.tmicon-weibo:before { + content: "\e608"; +} + +.tmicon-QQ:before { + content: "\e60f"; +} + +.tmicon-xiaochengxu:before { + content: "\e706"; +} + +.tmicon-display-code:before { + content: "\e792"; +} + +.tmicon-display-arrow-right:before { + content: "\e793"; +} + +.tmicon-display-arrow-left:before { + content: "\e794"; +} + +.tmicon-laptop-error:before { + content: "\e795"; +} + +.tmicon-laptop-check:before { + content: "\e796"; +} + +.tmicon-laptop:before { + content: "\e797"; +} + +.tmicon-mobile-error:before { + content: "\e798"; +} + +.tmicon-mobile-check:before { + content: "\e799"; +} + +.tmicon-mobile-alt:before { + content: "\e79a"; +} + +.tmicon-aliwangwang:before { + content: "\e79d"; +} + +.tmicon-nail:before { + content: "\e79e"; +} + +.tmicon-nail-fixed:before { + content: "\e79f"; +} + +.tmicon-edit:before { + content: "\e7a0"; +} + +.tmicon-dollar:before { + content: "\e7a1"; +} + +.tmicon-transanction:before { + content: "\e7a2"; +} + +.tmicon-filter-fill:before { + content: "\e7a3"; +} + +.tmicon-all-fill:before { + content: "\e7a4"; +} + +.tmicon-databaseplus-fill:before { + content: "\e7a5"; +} + +.tmicon-database-fill:before { + content: "\e7a6"; +} + +.tmicon-commentlines-fill:before { + content: "\e7a7"; +} + +.tmicon-commentdots-fill:before { + content: "\e7a8"; +} + +.tmicon-paperplane-fill:before { + content: "\e7a9"; +} + +.tmicon-eyeslash-fill:before { + content: "\e7aa"; +} + +.tmicon-eye-fill:before { + content: "\e7ab"; +} + +.tmicon-lightbulb-fill:before { + content: "\e7ac"; +} + +.tmicon-flag-fill:before { + content: "\e7ad"; +} + +.tmicon-tag-fill:before { + content: "\e7ae"; +} + +.tmicon-position-fill:before { + content: "\e7af"; +} + +.tmicon-location-fill:before { + content: "\e7b0"; +} + +.tmicon-map-fill:before { + content: "\e7b1"; +} + +.tmicon-inboxin-fill:before { + content: "\e7b2"; +} + +.tmicon-box-fill:before { + content: "\e7b3"; +} + +.tmicon-databaseset-fill:before { + content: "\e7b4"; +} + +.tmicon-layergroup-fill:before { + content: "\e7b5"; +} + +.tmicon-cry-fill:before { + content: "\e7b6"; +} + +.tmicon-smile-fill:before { + content: "\e7b7"; +} + +.tmicon-unlock-fill:before { + content: "\e7b8"; +} + +.tmicon-lock-fill:before { + content: "\e7b9"; +} + +.tmicon-alignright-fill:before { + content: "\e7ba"; +} + +.tmicon-alignleft-fill:before { + content: "\e7bb"; +} + +.tmicon-borderbottom-fill:before { + content: "\e7bc"; +} + +.tmicon-bordertop-fill:before { + content: "\e7bd"; +} + +.tmicon-aligncenter-fill:before { + content: "\e7be"; +} + +.tmicon-sort-down-nogap-copy:before { + content: "\f167"; +} + +.tmicon-borderverticle-fill:before { + content: "\e7bf"; +} + +.tmicon-piccenter-fill:before { + content: "\e7c0"; +} + +.tmicon-picside-fill:before { + content: "\e7c1"; +} + +.tmicon-folderopen-fill:before { + content: "\e7c2"; +} + +.tmicon-folderplus-fill:before { + content: "\e7c3"; +} + +.tmicon-folder-fill:before { + content: "\e7c4"; +} + +.tmicon-file-SQL:before { + content: "\e7c5"; +} + +.tmicon-fileplus-fill:before { + content: "\e7c6"; +} + +.tmicon-file-fill:before { + content: "\e7c7"; +} + +.tmicon-copy-fill:before { + content: "\e7c8"; +} + +.tmicon-headset-fill:before { + content: "\e7c9"; +} + +.tmicon-phone-fill:before { + content: "\e7ca"; +} + +.tmicon-pausecircle-fill:before { + content: "\e7cb"; +} + +.tmicon-stopcircle-fill:before { + content: "\e7cc"; +} + +.tmicon-playcircle-fill:before { + content: "\e7cd"; +} + +.tmicon-delete-fill:before { + content: "\e7ce"; +} + +.tmicon-picture-fill:before { + content: "\e7cf"; +} + +.tmicon-mail-fill:before { + content: "\e7d0"; +} + +.tmicon-heart-fill:before { + content: "\e7d1"; +} + +.tmicon-collection-fill:before { + content: "\e7d2"; +} + +.tmicon-user-group-fill:before { + content: "\e7d3"; +} + +.tmicon-userplus-fill:before { + content: "\e7d4"; +} + +.tmicon-user-fill:before { + content: "\e7d5"; +} + +.tmicon-cog-fill:before { + content: "\e7d6"; +} + +.tmicon-clock-fill:before { + content: "\e7d7"; +} + +.tmicon-calendaralt-fill:before { + content: "\e7d8"; +} + +.tmicon-clouddownload-fill:before { + content: "\e7d9"; +} + +.tmicon-cloudupload-fill:before { + content: "\e7da"; +} + +.tmicon-exchange-fill:before { + content: "\e7db"; +} + +.tmicon-info-circle-fill:before { + content: "\e7dc"; +} + +.tmicon-question-circle-fill:before { + content: "\e7dd"; +} + +.tmicon-exclamationcircle-f:before { + content: "\e7de"; +} + +.tmicon-minus-circle-fill:before { + content: "\e7df"; +} + +.tmicon-plus-circle-fill:before { + content: "\e7e0"; +} + +.tmicon-times-circle-fill:before { + content: "\e7e1"; +} + +.tmicon-check-circle-fill:before { + content: "\e7e2"; +} + +.tmicon-compressalt-fill:before { + content: "\e7e3"; +} + +.tmicon-expandalt-fill:before { + content: "\e7e4"; +} + +.tmicon-filter:before { + content: "\e7e5"; +} + +.tmicon-all:before { + content: "\e7e6"; +} + +.tmicon-database-plus:before { + content: "\e7e7"; +} + +.tmicon-database:before { + content: "\e7e8"; +} + +.tmicon-comment-lines:before { + content: "\e7e9"; +} + +.tmicon-comment-dots:before { + content: "\e7ea"; +} + +.tmicon-paper-plane:before { + content: "\e7eb"; +} + +.tmicon-eye-slash:before { + content: "\e7ec"; +} + +.tmicon-eye:before { + content: "\e7ed"; +} + +.tmicon-lightbulb:before { + content: "\e7ee"; +} + +.tmicon-flag:before { + content: "\e7ef"; +} + +.tmicon-tag:before { + content: "\e7f0"; +} + +.tmicon-position:before { + content: "\e7f1"; +} + +.tmicon-location:before { + content: "\e7f2"; +} + +.tmicon-map:before { + content: "\e7f3"; +} + +.tmicon-inbox-in:before { + content: "\e7f4"; +} + +.tmicon-box:before { + content: "\e7f5"; +} + +.tmicon-database-set:before { + content: "\e7f6"; +} + +.tmicon-layer-group:before { + content: "\e7f7"; +} + +.tmicon-wind-cry:before { + content: "\e7f8"; +} + +.tmicon-wind-smile:before { + content: "\e7f9"; +} + +.tmicon-unlock:before { + content: "\e7fa"; +} + +.tmicon-lock:before { + content: "\e7fb"; +} + +.tmicon-align-right:before { + content: "\e7fc"; +} + +.tmicon-align-left:before { + content: "\e7fd"; +} + +.tmicon-border-bottom:before { + content: "\e7fe"; +} + +.tmicon-border-top:before { + content: "\e7ff"; +} + +.tmicon-align-center:before { + content: "\e800"; +} + +.tmicon-border-verticle:before { + content: "\e801"; +} + +.tmicon-pic-center:before { + content: "\e802"; +} + +.tmicon-pic-side:before { + content: "\e803"; +} + +.tmicon-folder-open:before { + content: "\e804"; +} + +.tmicon-folder-plus:before { + content: "\e805"; +} + +.tmicon-folder:before { + content: "\e806"; +} + +.tmicon-file-SQL1:before { + content: "\e807"; +} + +.tmicon-file-plus:before { + content: "\e808"; +} + +.tmicon-file:before { + content: "\e809"; +} + +.tmicon-copy:before { + content: "\e80a"; +} + +.tmicon-headset:before { + content: "\e80b"; +} + +.tmicon-phone:before { + content: "\e80c"; +} + +.tmicon-pausecircle:before { + content: "\e80d"; +} + +.tmicon-stopcircle:before { + content: "\e80e"; +} + +.tmicon-playcircle:before { + content: "\e80f"; +} + +.tmicon-delete:before { + content: "\e810"; +} + +.tmicon-picture:before { + content: "\e811"; +} + +.tmicon-mail:before { + content: "\e812"; +} + +.tmicon-like:before { + content: "\e813"; +} + +.tmicon-collection:before { + content: "\e814"; +} + +.tmicon-user-group:before { + content: "\e815"; +} + +.tmicon-account-plus:before { + content: "\e816"; +} + +.tmicon-account:before { + content: "\e817"; +} + +.tmicon-cog:before { + content: "\e818"; +} + +.tmicon-clock:before { + content: "\e819"; +} + +.tmicon-calendar-alt:before { + content: "\e81a"; +} + +.tmicon-clouddownload:before { + content: "\e81b"; +} + +.tmicon-cloudupload:before { + content: "\e81c"; +} + +.tmicon-exchange:before { + content: "\e81d"; +} + +.tmicon-info-circle:before { + content: "\e81e"; +} + +.tmicon-question-circle:before { + content: "\e81f"; +} + +.tmicon-exclamation-circle:before { + content: "\e820"; +} + +.tmicon-minus-circle:before { + content: "\e821"; +} + +.tmicon-plus-circle:before { + content: "\e822"; +} + +.tmicon-times-circle:before { + content: "\e823"; +} + +.tmicon-check-circle:before { + content: "\e824"; +} + +.tmicon-compress-alt:before { + content: "\e825"; +} + +.tmicon-expand-alt:before { + content: "\e826"; +} + +.tmicon-ban:before { + content: "\e827"; +} + +.tmicon-minus:before { + content: "\e828"; +} + +.tmicon-plus:before { + content: "\e829"; +} + +.tmicon-times:before { + content: "\e82a"; +} + +.tmicon-check:before { + content: "\e82b"; +} + +.tmicon-search-minus:before { + content: "\e82c"; +} + +.tmicon-search-plus:before { + content: "\e82d"; +} + +.tmicon-search:before { + content: "\e82e"; +} + +.tmicon-reply:before { + content: "\e82f"; +} + +.tmicon-undo:before { + content: "\e830"; +} + +.tmicon-redo:before { + content: "\e831"; +} + +.tmicon-external-link:before { + content: "\e832"; +} + +.tmicon-arrows-alt:before { + content: "\e833"; +} + +.tmicon-indent:before { + content: "\e834"; +} + +.tmicon-outdent:before { + content: "\e835"; +} + +.tmicon-sort-line:before { + content: "\e836"; +} + +.tmicon-switch:before { + content: "\e837"; +} + +.tmicon-wind-descending:before { + content: "\e838"; +} + +.tmicon-wind-ascending:before { + content: "\e839"; +} + +.tmicon-download:before { + content: "\e83a"; +} + +.tmicon-upload:before { + content: "\e83b"; +} + +.tmicon-arrow-to-bottom:before { + content: "\e83c"; +} + +.tmicon-arrow-to-top:before { + content: "\e83d"; +} + +.tmicon-long-arrow-down:before { + content: "\e83e"; +} + +.tmicon-long-arrow-up:before { + content: "\e83f"; +} + +.tmicon-arrow-right:before { + content: "\e840"; +} + +.tmicon-arrow-left:before { + content: "\e841"; +} + +.tmicon-sort:before { + content: "\e842"; +} + +.tmicon-sort-down:before { + content: "\e843"; +} + +.tmicon-sort-up:before { + content: "\e844"; +} + +.tmicon-caret-right:before { + content: "\e845"; +} + +.tmicon-caret-left:before { + content: "\e846"; +} + +.tmicon-arrows-v:before { + content: "\e847"; +} + +.tmicon-angle-double-down:before { + content: "\e848"; +} + +.tmicon-angle-double-up:before { + content: "\e849"; +} + +.tmicon-angle-double-right:before { + content: "\e84a"; +} + +.tmicon-angle-double-left:before { + content: "\e84b"; +} + +.tmicon-angle-down:before { + content: "\e84c"; +} + +.tmicon-angle-up:before { + content: "\e84d"; +} + +.tmicon-angle-right:before { + content: "\e84e"; +} + +.tmicon-angle-left:before { + content: "\e84f"; +} + +.tmicon-paperclip:before { + content: "\e850"; +} + +.tmicon-connection:before { + content: "\e851"; +} + +.tmicon-training:before { + content: "\e853"; +} + +.tmicon-process:before { + content: "\e854"; +} + +.tmicon-news:before { + content: "\e855"; +} + +.tmicon-save:before { + content: "\e856"; +} + +.tmicon-print:before { + content: "\e857"; +} + +.tmicon-new-releases:before { + content: "\e858"; +} + +.tmicon-release:before { + content: "\e85a"; +} + +.tmicon-alert:before { + content: "\e85b"; +} + +.tmicon-backspace:before { + content: "\e85c"; +} + +.tmicon-gem:before { + content: "\e85d"; +} + +.tmicon-integral:before { + content: "\e85e"; +} + +.tmicon-star-circle:before { + content: "\e85f"; +} + +.tmicon-user-circle:before { + content: "\e860"; +} + +.tmicon-cloud-machine-fill:before { + content: "\e861"; +} + +.tmicon-cloud-machine:before { + content: "\e862"; +} + +.tmicon-terminal-fill:before { + content: "\e863"; +} + +.tmicon-terminal:before { + content: "\e864"; +} + +.tmicon-shopping-cart-fill:before { + content: "\e865"; +} + +.tmicon-resource:before { + content: "\e867"; +} + +.tmicon-rank:before { + content: "\e86a"; +} + +.tmicon-sync-alt:before { + content: "\e86b"; +} + +.tmicon-compass:before { + content: "\e86c"; +} + +.tmicon-arrow-alt-from-top:before { + content: "\e86d"; +} + +.tmicon-arrow-alt-from-botto:before { + content: "\e86e"; +} + +.tmicon-menu:before { + content: "\e86f"; +} + +.tmicon-icon-drag:before { + content: "\e870"; +} + +.tmicon-early-warning:before { + content: "\e871"; +} + +.tmicon-share:before { + content: "\e872"; +} + +.tmicon-share1:before { + content: "\e873"; +} + +.tmicon-management-:before { + content: "\e874"; +} + +.tmicon-accesskeys:before { + content: "\e875"; +} + +.tmicon-arrow-sortdown-smal:before { + content: "\e877"; +} + +.tmicon-minus-square-fill:before { + content: "\e878"; +} + +.tmicon-plus-square-fill:before { + content: "\e879"; +} + +.tmicon-minus-square:before { + content: "\e87a"; +} + +.tmicon-plus-square:before { + content: "\e87b"; +} + +.tmicon-stepmode:before { + content: "\e87d"; +} + +.tmicon-scrollingmode:before { + content: "\e87e"; +} + +.tmicon-shoppingcart:before { + content: "\e881"; +} + +.tmicon-waiting-fill:before { + content: "\e882"; +} + +.tmicon-waiting:before { + content: "\e883"; +} + +.tmicon-right-arrow-rect:before { + content: "\e884"; +} + +.tmicon-left-arrow-rect:before { + content: "\e885"; +} + +.tmicon-bell:before { + content: "\e887"; +} + +.tmicon-structured-data:before { + content: "\e888"; +} + +.tmicon-drag:before { + content: "\e769"; +} + +.tmicon-vector:before { + content: "\e889"; +} + +.tmicon-ellipsis-vertical:before { + content: "\e76a"; +} + +.tmicon-NEW-copy:before { + content: "\e88a"; +} + +.tmicon-gallery-view:before { + content: "\e76b"; +} + +.tmicon-HOT-copy:before { + content: "\e88b"; +} + +.tmicon-WIFI:before { + content: "\e76c"; +} + +.tmicon-home:before { + content: "\e88c"; +} + +.tmicon-bug-report:before { + content: "\e76d"; +} + +.tmicon-monitoring:before { + content: "\e88e"; +} + +.tmicon-qrcode:before { + content: "\e76e"; +} + +.tmicon-diagnose:before { + content: "\e88f"; +} + +.tmicon-scan:before { + content: "\e76f"; +} + +.tmicon-loading:before { + content: "\e891"; +} + +.tmicon-cut:before { + content: "\e770"; +} + +.tmicon-Directory-tree:before { + content: "\e892"; +} + +.tmicon-gift:before { + content: "\e771"; +} + +.tmicon-application:before { + content: "\e89e"; +} + +.tmicon-link:before { + content: "\e772"; +} + +.tmicon-applicationgroup:before { + content: "\e89f"; +} + +.tmicon-poweroff:before { + content: "\e774"; +} + +.tmicon-key:before { + content: "\e775"; +} + +.tmicon-safety-certificate:before { + content: "\e776"; +} + +.tmicon-supervise:before { + content: "\e777"; +} + +.tmicon-tag-subscipt:before { + content: "\e78a"; +} + +.tmicon-chart-pie-alt:before { + content: "\e78c"; +} + +.tmicon-chart-relation:before { + content: "\e78d"; +} + +.tmicon-chart-scatter-plot:before { + content: "\e78e"; +} + +.tmicon-chart-area:before { + content: "\e78f"; +} + +.tmicon-chart-line:before { + content: "\e790"; +} + +.tmicon-chart-bar:before { + content: "\e791"; +} + + diff --git a/uni_modules/UniDevTools/src/tmui/tool/tmicon/tmicon.min.css b/uni_modules/UniDevTools/src/tmui/tool/tmicon/tmicon.min.css new file mode 100644 index 0000000..1fef5ce --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/tmicon/tmicon.min.css @@ -0,0 +1 @@ +@font-face{font-family:tmicon;src:url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff')}.tmicon{font-family:tmicon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tmicon-paypal:before{content:"\e8c8"}.tmicon-google:before{content:"\e8c9"}.tmicon-apple-pay:before{content:"\f166"}.tmicon-Apple:before{content:"\edd8"}.tmicon-google-pay:before{content:"\ec04"}.tmicon-qiandai:before{content:"\e600"}.tmicon-quan:before{content:"\e601"}.tmicon-hongbao:before{content:"\e6da"}.tmicon-tongzhifill:before{content:"\e758"}.tmicon-renminbi3:before{content:"\e73e"}.tmicon-toupiao:before{content:"\e60e"}.tmicon-icon:before{content:"\e658"}.tmicon-svggeshi-:before{content:"\e65d"}.tmicon-meiyuan:before{content:"\eb1a"}.tmicon-qiche:before{content:"\e611"}.tmicon-tongzhi:before{content:"\e612"}.tmicon-huiyuan:before{content:"\e62f"}.tmicon-md-phone-portrait:before{content:"\e6c2"}.tmicon-md-planet:before{content:"\e6c3"}.tmicon-md-phone-landscape:before{content:"\e6c4"}.tmicon-md-power:before{content:"\e6c5"}.tmicon-md-redo:before{content:"\e6c6"}.tmicon-md-rocket:before{content:"\e6c7"}.tmicon-md-ribbon:before{content:"\e6c8"}.tmicon-md-undo:before{content:"\e6cb"}.tmicon-md-trending-down:before{content:"\e6cc"}.tmicon-md-trending-up:before{content:"\e6cd"}.tmicon-md-git-merge:before{content:"\e6de"}.tmicon-md-female:before{content:"\e6e2"}.tmicon-md-male:before{content:"\e6e3"}.tmicon-md-heart-dislike:before{content:"\e6e4"}.tmicon-md-heart1:before{content:"\e6e7"}.tmicon-ios-text:before{content:"\e6f1"}.tmicon-ios-rose:before{content:"\e6f2"}.tmicon-logo-game-controller-b:before{content:"\e6fd"}.tmicon-ios-beer:before{content:"\e707"}.tmicon-ios-cafe:before{content:"\e709"}.tmicon-ios-chatbubbles:before{content:"\e70a"}.tmicon-ios-color-palette:before{content:"\e70e"}.tmicon-ios-filing:before{content:"\e712"}.tmicon-ios-finger-print:before{content:"\e713"}.tmicon-ios-hand:before{content:"\e716"}.tmicon-ios-flower:before{content:"\e714"}.tmicon-ios-ice-cream:before{content:"\e719"}.tmicon-ios-grid:before{content:"\e71c"}.tmicon-ios-mail-open1:before{content:"\e71d"}.tmicon-ios-key:before{content:"\e71e"}.tmicon-ios-man:before{content:"\e71f"}.tmicon-meiyuan1:before{content:"\e90d"}.tmicon-zidingyi:before{content:"\e60d"}.tmicon-shuaxin:before{content:"\e6ce"}.tmicon-huiyuan1:before{content:"\e646"}.tmicon-yuan:before{content:"\e657"}.tmicon-ios-airplane:before{content:"\e852"}.tmicon-ios-woman:before{content:"\e859"}.tmicon-ios-aperture:before{content:"\e866"}.tmicon-ios-alarm:before{content:"\e868"}.tmicon-ios-arrow-dropdown:before{content:"\e869"}.tmicon-ios-arrow-dropleft-c:before{content:"\e876"}.tmicon-ios-arrow-dropleft:before{content:"\e87c"}.tmicon-ios-arrow-dropup:before{content:"\e87f"}.tmicon-ios-arrow-dropright-:before{content:"\e880"}.tmicon-ios-arrow-dropdown-c:before{content:"\e886"}.tmicon-ios-arrow-dropup-cir:before{content:"\e88d"}.tmicon-ios-arrow-dropright:before{content:"\e890"}.tmicon-ios-attach:before{content:"\e893"}.tmicon-ios-at:before{content:"\e894"}.tmicon-ios-bed:before{content:"\e895"}.tmicon-ios-battery-full:before{content:"\e896"}.tmicon-ios-bookmarks:before{content:"\e897"}.tmicon-ios-bluetooth:before{content:"\e898"}.tmicon-ios-cellular:before{content:"\e899"}.tmicon-ios-cut:before{content:"\e89a"}.tmicon-ios-leaf:before{content:"\e89b"}.tmicon-ios-mic:before{content:"\e89c"}.tmicon-ios-mail-open:before{content:"\e89d"}.tmicon-ios-partly-sunny:before{content:"\e8a0"}.tmicon-ios-radio-button-on:before{content:"\e8a1"}.tmicon-ios-radio-button-off:before{content:"\e8a2"}.tmicon-ios-remove:before{content:"\e8a3"}.tmicon-ios-remove-circle-ou:before{content:"\e8a4"}.tmicon-ios-remove-circle:before{content:"\e8a5"}.tmicon-ios-rocket:before{content:"\e8a6"}.tmicon-ios-ribbon:before{content:"\e8a7"}.tmicon-ios-star:before{content:"\e8a8"}.tmicon-ios-star-half:before{content:"\e8a9"}.tmicon-ios-star-outline:before{content:"\e8aa"}.tmicon-ios-snow:before{content:"\e8ab"}.tmicon-ios-stopwatch:before{content:"\e8ac"}.tmicon-ios-sunny:before{content:"\e8ad"}.tmicon-ios-unlock:before{content:"\e8ae"}.tmicon-ios-trophy:before{content:"\e8af"}.tmicon-ios-umbrella:before{content:"\e8b0"}.tmicon-ios-videocam:before{content:"\e8b1"}.tmicon-ios-volume-high:before{content:"\e8b2"}.tmicon-ios-water:before{content:"\e8b3"}.tmicon-ios-wifi:before{content:"\e8b4"}.tmicon-md-water:before{content:"\e8b5"}.tmicon-md-checkbox:before{content:"\e8b6"}.tmicon-md-chatbubbles:before{content:"\e8b7"}.tmicon-md-chatboxes:before{content:"\e8b8"}.tmicon-md-cloud-done:before{content:"\e8b9"}.tmicon-md-cloud-upload:before{content:"\e8ba"}.tmicon-md-cloudy:before{content:"\e8bb"}.tmicon-md-contrast:before{content:"\e8bc"}.tmicon-md-disc:before{content:"\e8bd"}.tmicon-md-heart-empty:before{content:"\e8be"}.tmicon-md-heart:before{content:"\e8bf"}.tmicon-md-home:before{content:"\e8c0"}.tmicon-md-mail-open:before{content:"\e8c1"}.tmicon-md-heart-half:before{content:"\e8c2"}.tmicon-md-person:before{content:"\e8c3"}.tmicon-md-people:before{content:"\e8c4"}.tmicon-md-more:before{content:"\e8c5"}.tmicon-md-moon:before{content:"\e8c6"}.tmicon-md-pin:before{content:"\e8c7"}.tmicon-gengduo:before{content:"\e73a"}.tmicon-ios:before{content:"\e60c"}.tmicon-wifi-off:before{content:"\e93a"}.tmicon-shiliangzhinengduixiang-:before{content:"\e6ad"}.tmicon-weixinzhifu:before{content:"\e605"}.tmicon-yinhangqia:before{content:"\e6c9"}.tmicon-yunshanfu:before{content:"\e68b"}.tmicon-toutiaoyangshi:before{content:"\e622"}.tmicon-douyin:before{content:"\e8db"}.tmicon-alipay:before{content:"\e8de"}.tmicon-huawei:before{content:"\e610"}.tmicon-lianjie:before{content:"\e665"}.tmicon-weixin:before{content:"\e63f"}.tmicon-pengyouquan:before{content:"\e615"}.tmicon-weibo:before{content:"\e608"}.tmicon-QQ:before{content:"\e60f"}.tmicon-xiaochengxu:before{content:"\e706"}.tmicon-display-code:before{content:"\e792"}.tmicon-display-arrow-right:before{content:"\e793"}.tmicon-display-arrow-left:before{content:"\e794"}.tmicon-laptop-error:before{content:"\e795"}.tmicon-laptop-check:before{content:"\e796"}.tmicon-laptop:before{content:"\e797"}.tmicon-mobile-error:before{content:"\e798"}.tmicon-mobile-check:before{content:"\e799"}.tmicon-mobile-alt:before{content:"\e79a"}.tmicon-aliwangwang:before{content:"\e79d"}.tmicon-nail:before{content:"\e79e"}.tmicon-nail-fixed:before{content:"\e79f"}.tmicon-edit:before{content:"\e7a0"}.tmicon-dollar:before{content:"\e7a1"}.tmicon-transanction:before{content:"\e7a2"}.tmicon-filter-fill:before{content:"\e7a3"}.tmicon-all-fill:before{content:"\e7a4"}.tmicon-databaseplus-fill:before{content:"\e7a5"}.tmicon-database-fill:before{content:"\e7a6"}.tmicon-commentlines-fill:before{content:"\e7a7"}.tmicon-commentdots-fill:before{content:"\e7a8"}.tmicon-paperplane-fill:before{content:"\e7a9"}.tmicon-eyeslash-fill:before{content:"\e7aa"}.tmicon-eye-fill:before{content:"\e7ab"}.tmicon-lightbulb-fill:before{content:"\e7ac"}.tmicon-flag-fill:before{content:"\e7ad"}.tmicon-tag-fill:before{content:"\e7ae"}.tmicon-position-fill:before{content:"\e7af"}.tmicon-location-fill:before{content:"\e7b0"}.tmicon-map-fill:before{content:"\e7b1"}.tmicon-inboxin-fill:before{content:"\e7b2"}.tmicon-box-fill:before{content:"\e7b3"}.tmicon-databaseset-fill:before{content:"\e7b4"}.tmicon-layergroup-fill:before{content:"\e7b5"}.tmicon-cry-fill:before{content:"\e7b6"}.tmicon-smile-fill:before{content:"\e7b7"}.tmicon-unlock-fill:before{content:"\e7b8"}.tmicon-lock-fill:before{content:"\e7b9"}.tmicon-alignright-fill:before{content:"\e7ba"}.tmicon-alignleft-fill:before{content:"\e7bb"}.tmicon-borderbottom-fill:before{content:"\e7bc"}.tmicon-bordertop-fill:before{content:"\e7bd"}.tmicon-aligncenter-fill:before{content:"\e7be"}.tmicon-sort-down-nogap-copy:before{content:"\f167"}.tmicon-borderverticle-fill:before{content:"\e7bf"}.tmicon-piccenter-fill:before{content:"\e7c0"}.tmicon-picside-fill:before{content:"\e7c1"}.tmicon-folderopen-fill:before{content:"\e7c2"}.tmicon-folderplus-fill:before{content:"\e7c3"}.tmicon-folder-fill:before{content:"\e7c4"}.tmicon-file-SQL:before{content:"\e7c5"}.tmicon-fileplus-fill:before{content:"\e7c6"}.tmicon-file-fill:before{content:"\e7c7"}.tmicon-copy-fill:before{content:"\e7c8"}.tmicon-headset-fill:before{content:"\e7c9"}.tmicon-phone-fill:before{content:"\e7ca"}.tmicon-pausecircle-fill:before{content:"\e7cb"}.tmicon-stopcircle-fill:before{content:"\e7cc"}.tmicon-playcircle-fill:before{content:"\e7cd"}.tmicon-delete-fill:before{content:"\e7ce"}.tmicon-picture-fill:before{content:"\e7cf"}.tmicon-mail-fill:before{content:"\e7d0"}.tmicon-heart-fill:before{content:"\e7d1"}.tmicon-collection-fill:before{content:"\e7d2"}.tmicon-user-group-fill:before{content:"\e7d3"}.tmicon-userplus-fill:before{content:"\e7d4"}.tmicon-user-fill:before{content:"\e7d5"}.tmicon-cog-fill:before{content:"\e7d6"}.tmicon-clock-fill:before{content:"\e7d7"}.tmicon-calendaralt-fill:before{content:"\e7d8"}.tmicon-clouddownload-fill:before{content:"\e7d9"}.tmicon-cloudupload-fill:before{content:"\e7da"}.tmicon-exchange-fill:before{content:"\e7db"}.tmicon-info-circle-fill:before{content:"\e7dc"}.tmicon-question-circle-fill:before{content:"\e7dd"}.tmicon-exclamationcircle-f:before{content:"\e7de"}.tmicon-minus-circle-fill:before{content:"\e7df"}.tmicon-plus-circle-fill:before{content:"\e7e0"}.tmicon-times-circle-fill:before{content:"\e7e1"}.tmicon-check-circle-fill:before{content:"\e7e2"}.tmicon-compressalt-fill:before{content:"\e7e3"}.tmicon-expandalt-fill:before{content:"\e7e4"}.tmicon-filter:before{content:"\e7e5"}.tmicon-all:before{content:"\e7e6"}.tmicon-database-plus:before{content:"\e7e7"}.tmicon-database:before{content:"\e7e8"}.tmicon-comment-lines:before{content:"\e7e9"}.tmicon-comment-dots:before{content:"\e7ea"}.tmicon-paper-plane:before{content:"\e7eb"}.tmicon-eye-slash:before{content:"\e7ec"}.tmicon-eye:before{content:"\e7ed"}.tmicon-lightbulb:before{content:"\e7ee"}.tmicon-flag:before{content:"\e7ef"}.tmicon-tag:before{content:"\e7f0"}.tmicon-position:before{content:"\e7f1"}.tmicon-location:before{content:"\e7f2"}.tmicon-map:before{content:"\e7f3"}.tmicon-inbox-in:before{content:"\e7f4"}.tmicon-box:before{content:"\e7f5"}.tmicon-database-set:before{content:"\e7f6"}.tmicon-layer-group:before{content:"\e7f7"}.tmicon-wind-cry:before{content:"\e7f8"}.tmicon-wind-smile:before{content:"\e7f9"}.tmicon-unlock:before{content:"\e7fa"}.tmicon-lock:before{content:"\e7fb"}.tmicon-align-right:before{content:"\e7fc"}.tmicon-align-left:before{content:"\e7fd"}.tmicon-border-bottom:before{content:"\e7fe"}.tmicon-border-top:before{content:"\e7ff"}.tmicon-align-center:before{content:"\e800"}.tmicon-border-verticle:before{content:"\e801"}.tmicon-pic-center:before{content:"\e802"}.tmicon-pic-side:before{content:"\e803"}.tmicon-folder-open:before{content:"\e804"}.tmicon-folder-plus:before{content:"\e805"}.tmicon-folder:before{content:"\e806"}.tmicon-file-SQL1:before{content:"\e807"}.tmicon-file-plus:before{content:"\e808"}.tmicon-file:before{content:"\e809"}.tmicon-copy:before{content:"\e80a"}.tmicon-headset:before{content:"\e80b"}.tmicon-phone:before{content:"\e80c"}.tmicon-pausecircle:before{content:"\e80d"}.tmicon-stopcircle:before{content:"\e80e"}.tmicon-playcircle:before{content:"\e80f"}.tmicon-delete:before{content:"\e810"}.tmicon-picture:before{content:"\e811"}.tmicon-mail:before{content:"\e812"}.tmicon-like:before{content:"\e813"}.tmicon-collection:before{content:"\e814"}.tmicon-user-group:before{content:"\e815"}.tmicon-account-plus:before{content:"\e816"}.tmicon-account:before{content:"\e817"}.tmicon-cog:before{content:"\e818"}.tmicon-clock:before{content:"\e819"}.tmicon-calendar-alt:before{content:"\e81a"}.tmicon-clouddownload:before{content:"\e81b"}.tmicon-cloudupload:before{content:"\e81c"}.tmicon-exchange:before{content:"\e81d"}.tmicon-info-circle:before{content:"\e81e"}.tmicon-question-circle:before{content:"\e81f"}.tmicon-exclamation-circle:before{content:"\e820"}.tmicon-minus-circle:before{content:"\e821"}.tmicon-plus-circle:before{content:"\e822"}.tmicon-times-circle:before{content:"\e823"}.tmicon-check-circle:before{content:"\e824"}.tmicon-compress-alt:before{content:"\e825"}.tmicon-expand-alt:before{content:"\e826"}.tmicon-ban:before{content:"\e827"}.tmicon-minus:before{content:"\e828"}.tmicon-plus:before{content:"\e829"}.tmicon-times:before{content:"\e82a"}.tmicon-check:before{content:"\e82b"}.tmicon-search-minus:before{content:"\e82c"}.tmicon-search-plus:before{content:"\e82d"}.tmicon-search:before{content:"\e82e"}.tmicon-reply:before{content:"\e82f"}.tmicon-undo:before{content:"\e830"}.tmicon-redo:before{content:"\e831"}.tmicon-external-link:before{content:"\e832"}.tmicon-arrows-alt:before{content:"\e833"}.tmicon-indent:before{content:"\e834"}.tmicon-outdent:before{content:"\e835"}.tmicon-sort-line:before{content:"\e836"}.tmicon-switch:before{content:"\e837"}.tmicon-wind-descending:before{content:"\e838"}.tmicon-wind-ascending:before{content:"\e839"}.tmicon-download:before{content:"\e83a"}.tmicon-upload:before{content:"\e83b"}.tmicon-arrow-to-bottom:before{content:"\e83c"}.tmicon-arrow-to-top:before{content:"\e83d"}.tmicon-long-arrow-down:before{content:"\e83e"}.tmicon-long-arrow-up:before{content:"\e83f"}.tmicon-arrow-right:before{content:"\e840"}.tmicon-arrow-left:before{content:"\e841"}.tmicon-sort:before{content:"\e842"}.tmicon-sort-down:before{content:"\e843"}.tmicon-sort-up:before{content:"\e844"}.tmicon-caret-right:before{content:"\e845"}.tmicon-caret-left:before{content:"\e846"}.tmicon-arrows-v:before{content:"\e847"}.tmicon-angle-double-down:before{content:"\e848"}.tmicon-angle-double-up:before{content:"\e849"}.tmicon-angle-double-right:before{content:"\e84a"}.tmicon-angle-double-left:before{content:"\e84b"}.tmicon-angle-down:before{content:"\e84c"}.tmicon-angle-up:before{content:"\e84d"}.tmicon-angle-right:before{content:"\e84e"}.tmicon-angle-left:before{content:"\e84f"}.tmicon-paperclip:before{content:"\e850"}.tmicon-connection:before{content:"\e851"}.tmicon-training:before{content:"\e853"}.tmicon-process:before{content:"\e854"}.tmicon-news:before{content:"\e855"}.tmicon-save:before{content:"\e856"}.tmicon-print:before{content:"\e857"}.tmicon-new-releases:before{content:"\e858"}.tmicon-release:before{content:"\e85a"}.tmicon-alert:before{content:"\e85b"}.tmicon-backspace:before{content:"\e85c"}.tmicon-gem:before{content:"\e85d"}.tmicon-integral:before{content:"\e85e"}.tmicon-star-circle:before{content:"\e85f"}.tmicon-user-circle:before{content:"\e860"}.tmicon-cloud-machine-fill:before{content:"\e861"}.tmicon-cloud-machine:before{content:"\e862"}.tmicon-terminal-fill:before{content:"\e863"}.tmicon-terminal:before{content:"\e864"}.tmicon-shopping-cart-fill:before{content:"\e865"}.tmicon-resource:before{content:"\e867"}.tmicon-rank:before{content:"\e86a"}.tmicon-sync-alt:before{content:"\e86b"}.tmicon-compass:before{content:"\e86c"}.tmicon-arrow-alt-from-top:before{content:"\e86d"}.tmicon-arrow-alt-from-botto:before{content:"\e86e"}.tmicon-menu:before{content:"\e86f"}.tmicon-icon-drag:before{content:"\e870"}.tmicon-early-warning:before{content:"\e871"}.tmicon-share:before{content:"\e872"}.tmicon-share1:before{content:"\e873"}.tmicon-management-:before{content:"\e874"}.tmicon-accesskeys:before{content:"\e875"}.tmicon-arrow-sortdown-smal:before{content:"\e877"}.tmicon-minus-square-fill:before{content:"\e878"}.tmicon-plus-square-fill:before{content:"\e879"}.tmicon-minus-square:before{content:"\e87a"}.tmicon-plus-square:before{content:"\e87b"}.tmicon-stepmode:before{content:"\e87d"}.tmicon-scrollingmode:before{content:"\e87e"}.tmicon-shoppingcart:before{content:"\e881"}.tmicon-waiting-fill:before{content:"\e882"}.tmicon-waiting:before{content:"\e883"}.tmicon-right-arrow-rect:before{content:"\e884"}.tmicon-left-arrow-rect:before{content:"\e885"}.tmicon-bell:before{content:"\e887"}.tmicon-structured-data:before{content:"\e888"}.tmicon-drag:before{content:"\e769"}.tmicon-vector:before{content:"\e889"}.tmicon-ellipsis-vertical:before{content:"\e76a"}.tmicon-NEW-copy:before{content:"\e88a"}.tmicon-gallery-view:before{content:"\e76b"}.tmicon-HOT-copy:before{content:"\e88b"}.tmicon-WIFI:before{content:"\e76c"}.tmicon-home:before{content:"\e88c"}.tmicon-bug-report:before{content:"\e76d"}.tmicon-monitoring:before{content:"\e88e"}.tmicon-qrcode:before{content:"\e76e"}.tmicon-diagnose:before{content:"\e88f"}.tmicon-scan:before{content:"\e76f"}.tmicon-loading:before{content:"\e891"}.tmicon-cut:before{content:"\e770"}.tmicon-Directory-tree:before{content:"\e892"}.tmicon-gift:before{content:"\e771"}.tmicon-application:before{content:"\e89e"}.tmicon-link:before{content:"\e772"}.tmicon-applicationgroup:before{content:"\e89f"}.tmicon-poweroff:before{content:"\e774"}.tmicon-key:before{content:"\e775"}.tmicon-safety-certificate:before{content:"\e776"}.tmicon-supervise:before{content:"\e777"}.tmicon-tag-subscipt:before{content:"\e78a"}.tmicon-chart-pie-alt:before{content:"\e78c"}.tmicon-chart-relation:before{content:"\e78d"}.tmicon-chart-scatter-plot:before{content:"\e78e"}.tmicon-chart-area:before{content:"\e78f"}.tmicon-chart-line:before{content:"\e790"}.tmicon-chart-bar:before{content:"\e791"} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useFetch.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useFetch.ts new file mode 100644 index 0000000..91f9449 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useFetch.ts @@ -0,0 +1,145 @@ + +import { fetchNet } from '../lib/fetch'; +import { isReactive, isRef, ref, Ref, ReactiveEffect, watch } from "vue" + +export const useFetch = (url : string, config ?: Ref | Tmui.fetchNetConfigType | ReactiveEffect) => { + //是否加载中 + let loading = ref(false); + //是否从未开始渲染过 + let pending = ref(true) + //是否访问错误 + let error = ref(false) + //数据集, + let data = ref(undefined) + + //是否空状态。对refresh没有用,会被清空为false,适合列表为空时没有更多数据会禁止getData请求,但通过refresh来重新加载。 + let empty = ref(false) + + let watchRefresh = getRealDataConfig()?.watchRefresh ?? false; + let showLoading = getRealDataConfig()?.showLoading ?? true; + + let tid : any = null; + + function getRealDataConfig() { + if (isReactive(config)) { + return uni.$tm.u.deepClone(config) + } + if (isRef(config)) { + return uni.$tm.u.deepClone(config.value) + } + return config + } + //重新刷新接口请求 + async function refresh() { + loading.value = false; + error.value = false; + // data.value = undefined; + empty.value = false; + await rq(); + } + function toast(msg : string, err : boolean, cfg : Tmui.fetchNetConfigType) { + return new Promise((res, rej) => { + if (cfg.showToast) { + if ( + cfg.toast == 'success' && !err || + cfg.toast == 'fail' && err || + cfg.toast == 'all' + ) { + uni.showToast({ + title: msg, + icon: "none", + mask: true + }) + setTimeout(function () { + res(true) + }, 1200); + } else { + res(true) + } + + } else { + res(true) + } + }); + } + //请求数据。 + async function rq() { + if (loading.value || empty.value) return Promise.resolve(true); + error.value = false; + loading.value = true; + + if (showLoading) { + uni.showLoading({ + title: "...", + mask: true, + icon: 'none' + }) + } + let cfg : Tmui.fetchNetConfigType = getRealDataConfig() || {}; + cfg = { showToast: true, toastKey: 'msg', toast: 'all', ...cfg }; + let errmsg = ""; + let newdata = await fetchNet.request({ + url: url, + ...cfg + }).catch(err => { + error.value = true; + errmsg = typeof err == 'object' ? JSON.stringify(err) : err + }).finally(() => { + loading.value = false; + pending.value = false; + uni.hideLoading(); + }) + if (!newdata) return toast(errmsg || "网络错误", false, cfg); + if (newdata.statusCode !== (cfg?.statusCode || 200)) { + error.value = true; + return toast(newdata.errMsg || "网络错误", false, cfg) + } + let d = newdata.data; + if (Array.isArray(cfg?.pick)) { + let pd = cfg.pick; + + if (typeof d !== 'object') { + data.value = d; + return toast("操作成功", true, cfg) + } + + let td : { [key : string] : any } = {}; + for (let key in d) { + if (pd.includes(key)) { + td[key] = d[key]; + } + } + + data.value = td; + return toast(d[cfg.toastKey] || "操作成功", true, cfg) + } + data.value = newdata; + return toast(typeof d === 'object' ? d[cfg.toastKey] || "操作成功" : "操作成功", true, cfg) + } + if ((isReactive(config) || isRef(config)) && watchRefresh) { + watch(config, () => { + if (pending.value) return; + if (tid === null) { + refresh() + tid = setTimeout(function () { }, 100); + } else { + clearTimeout(tid) + tid = setTimeout(function () { + refresh() + }, 100); + } + + }, { deep: true }) + } + + + return { + loading, + error, + data, + pending, + refresh, + getData: async () => await rq(), + empty + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useGetImage.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useGetImage.ts new file mode 100644 index 0000000..08c502f --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useGetImage.ts @@ -0,0 +1,19 @@ +/**随机获取图片 */ +export const useGetImage = function () { + /**随机取得一张图片 */ + function getRandomImage(width:number=500) { + return `https://store.tmui.design/api_v2/public/random_picture?random=${(Math.random() * 100).toFixed(0)}&width=${width}` + } + /**获取图片列表,row为数量,每次的最大值为14 */ + function getImageList(row: number,width:number=500) { + if (row >= 14) { + row = 14; + } + return `https://store.tmui.design/api_v2/public/random_picture?random=1&row=${row}&width=${width}` + } + + return { + getRandomImage, + getImageList, + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useSize.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useSize.ts new file mode 100644 index 0000000..8f1f0cb --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useSize.ts @@ -0,0 +1,79 @@ +import { onResize } from "@dcloudio/uni-app"; +import { reactive, getCurrentInstance, onMounted, ref, ComponentPublicInstance } from "vue" + +interface elementSizeType { + left : number, + top : number, + bottom : number, + right : number, + width : number, + height : number, + id : string, + dataset : { + [key : string] : any + } +} +/** + * 获取元素的尺寸,只能在生命期内使用 + * select:需要查询的选择器,可以是.class,或者#id, + * isAll:是否查询该节点所有元素,默认为单个。 + * return {size>,allSize>},解构出来的值,需要使用.value来访问。 + * */ +export const useElementSize = (select : string, isAll : boolean = false) => { + const proxy = getCurrentInstance()?.proxy ?? null; + let elementSize = ref({ + left: 0, + top: 0, + bottom: 0, + right: 0, + width: 0, + height: 0, + dataset: {}, + id: "" + }); + + let elementSIzeList = ref([]); + + function init() { + if (isAll) { + uni.createSelectorQuery() + .in(proxy) + .selectAll(select) + .boundingClientRect() + .exec((res) => { + elementSIzeList.value = [...res[0]] + if (elementSIzeList.value?.length > 0) { + elementSize.value = elementSIzeList.value[0] + } + }) + } else { + uni.createSelectorQuery() + .in(proxy) + .select(select) + .boundingClientRect() + .exec((res) => { + if (res && Array.isArray(res) && res?.length > 0) { + elementSize.value = res[0] + } + }) + } + } + + onMounted(() => { + setTimeout(function () { + init() + }, 50); + }) + + onResize(() => { + setTimeout(function () { + init() + }, 50); + }) + + + return { + size: elementSize, + allSize: elementSIzeList, + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useTheme.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useTheme.ts new file mode 100644 index 0000000..0c2225b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useTheme.ts @@ -0,0 +1,169 @@ +import { ComputedRef, Ref, computed, reactive, ref, watchEffect, getCurrentInstance, nextTick } from "vue"; +import { valToMarginAr, valToRoundStrClass } from "../function/util"; +import { cssstyle, tmVuetify, cssDirectionType, linearDirectionType, linearDeep } from '../lib/interface' +import colors from '../theme/theme'; + +/** + * 计算tmui主题属性 + */ +export default (props : ComputedRef, store : ComputedRef) => { + let dark = ref(false); + let isNvue = ref(false) + // #ifdef APP-NVUE + isNvue.value = true + // #endif + let customCSSStyle = ref({}) + let parentClass = ref("") + let transparent = ref(false) + let blur = ref(false) + let customClass = ref("") + let margin = ref([]) + let padding = ref([]) + let round = ref("") + let theme = ref(computedTheme(props.value, dark.value, store.value)) + let customThemeConfig = {}; + watchEffect(() => { + const followDark = props.value.followDark; + let lsdark = props.value.dark; + if (followDark) { + lsdark = store.value.dark; + } + + dark.value = lsdark; + + + if (store.value.os == 'android' && isNvue.value) { + blur.value = false + } else { + blur.value = props.value?.blur ?? false; + } + + + // 计算样式。 + customCSSStyle.value = computedStyle(props.value?._style) + parentClass.value = props.value?.parenClass || props.value?.parentClass || ""; + transparent.value = (props.value?.transprent ?? props.value?.transparent) || false; + customClass.value = computedClas(props.value?._class ?? ""); + margin.value = valToMarginAr(props.value?.margin ?? null) + padding.value = valToMarginAr(props.value?.padding ?? null) + round.value = valToRoundStrClass(props.value?.round ?? "") + theme.value = computedTheme({ ...props.value, ...customThemeConfig }, dark.value, store.value) + + + }) + + + + return { + dark, + isNvue, + round, + padding, + margin, + customCSSStyle, + theme: (config : any = {}) => { + for(let key in config){ + /**如果自定的数据为null,表示为自动,不采用。如果非null就采用自定义的配置。 */ + if(config[key]!==null){ + // @ts-ignore + customThemeConfig[key] = config[key] + } + } + return theme; + }, + customClass, + parentClass, + transparent, + _props: props, + proxy: getCurrentInstance()?.proxy ?? null, + blur + } + +} + + + +function computedStyle(_style : any) { + if (typeof _style == 'string') { + let p = _style.split(";"); + let k = p.map(el => { + el = el.replace(";", ""); + let node : any = {}; + let idx = el.split(":"); + node[idx[0]] = idx[1]; + return node; + }) + let kl = {}; + k.forEach(el => { + kl = { ...kl, ...el } + }) + return kl; + } + if (typeof _style == 'object' && !Array.isArray(_style)) { + return _style; + } + if (typeof _style == 'object' && Array.isArray(_style)) { + let kl = {}; + _style.forEach(el => { + kl = { ...kl, ...el } + }) + return kl; + } + return {}; +} + +function computedClas(_class : string | string[]) : string { + if (typeof _class == 'string') { + return _class + } + if (Array.isArray(_class)) { + return _class.join(' '); + } + return ''; +} + + +function computedTheme(props : any, dark : boolean, store : any) : cssstyle { + const color = props.color; + const border = props.border; + const shadow = props.shadow; + const round = props.round; + const outlined = props.outlined; + const text = props.text; + const borderStyle = props.borderStyle; + const borderDirection = props.borderDirection; + const linear = props.linear; + const linearDeep = props.linearDeep; + const blur = props.blur; + var borderColor = props?.borderColor ?? ''; + var theme = new colors.themeColors(store.colorList); + if (colors.isCssColor(color) && !theme.hasColors(color)) { + // console.error('不支持自定义组件上的颜色值,请在theme/theme.js中添加自定义的颜色值为主题。当前已切换为primary主题。'); + theme = new colors.themeColors(theme.add(color, color)); + } + let defaultColorName = color || 'primary'; + + if (props?.followTheme == true && store.color) { + defaultColorName = store.color; + borderColor = "" + } + + let c = theme.getTheme({ + colorname: defaultColorName, + dark, + borderWidth: border, + shadow: parseInt(String(shadow)), + round: parseInt(String(round)), + outlined, + text, + borderStyle: borderStyle, + borderDirection: borderDirection, + linearDirection: linear, + linearDeep: linearDeep, + blur, + borderColor: borderColor + }); + + return c; + +}; \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useTimer.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useTimer.ts new file mode 100644 index 0000000..59b5512 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useTimer.ts @@ -0,0 +1,207 @@ +//倒计时 +import { ref, computed, ComputedRef, watch } from 'vue'; + +interface TimerOptions { + totalTime : number; // 总时间,单位毫秒 + unit ?: 'ms' | 'ss' | 'mm' | 'hh' | 'dd'; // 时间单位,默认为毫秒 + format ?: string; // 时间格式,例如 'yy年dd天 hh时mm分ss秒ms毫秒' +} + +interface FormattedTime { + year : number; + day : number; + hour : number; + minute : number; + second : number; + millisecond : number; +} + +interface TimerState { + times : ComputedRef; + formattedTime : ComputedRef<(format ?: string) => string>; + timeObj : ComputedRef; // 新增 timeObj 属性 + /**0暂停中,1,运行中,-1从未开始运行过 */ + status : ComputedRef<0 | 1 | -1>; + start : () => void; + stop : () => void; + restart : () => void; + beforeStart : (call : () => void) => void; + timeEnd : (call : () => void) => void; + change : (call : (n : number) => void) => void; +} +/** + * 倒计时 + * @description 方便计时操作。 + */ +export function useTimer(options : TimerOptions) : TimerState { + const { totalTime, unit = 'ms', format = '' } = options; + + const times = ref(calculateRemainingTime()); + + const status = ref<-1 | 0 | 1>(-1); // 'not_started', 'running', 'paused' + + let _beforeStart = () => { }; + let _timeEnd = () => { }; + let _change = (n : number) => { }; + + let timerInterval = 50; // 定时器间隔,单位毫秒 + if (unit != 'ms') { + timerInterval = 1000 + } + let timer : NodeJS.Timeout | null = null; + let animationFrameId : number | null = null; // 用于存储 requestAnimationFrame 的 ID + + const timeFomartValue = computed(() => { + switch (unit) { + case 'ms': + return times.value; + case 'ss': + return Math.floor(times.value / 1000); + case 'mm': + return Math.floor(times.value / 60000); + case 'hh': + return Math.floor(times.value / 3600000); + case 'dd': + return Math.floor(times.value / 86400000); + default: + return times.value; + } + }) + // #ifndef H5 + const start = () => { + if (status.value === -1 || status.value === 0) { + status.value = 1; + _beforeStart(); + timer = setInterval(() => { + times.value -= timerInterval; + if (times.value >= 0) { + _change(timeFomartValue.value) + } + if (times.value <= 0) { + times.value = 0; + stop(); + } + }, timerInterval); + } + }; + // #endif + // #ifdef H5 + const start = () => { + if (status.value === -1 || status.value === 0) { + status.value = 1; + _beforeStart(); + console.log(timeFomartValue.value) + let lastTime = performance.now() - timerInterval; + const update = (currentTime : number) => { + const deltaTime = currentTime - lastTime; + if (deltaTime >= timerInterval) { + lastTime = currentTime; + const p = times.value - timerInterval + times.value = Number(p.toFixed(0)) + + if (times.value >= 0) { + _change(timeFomartValue.value) + } + if (times.value <= 0) { + times.value = 0; + stop(); + } + } + if (status.value === 1) { + animationFrameId = requestAnimationFrame(update); + } + }; + + animationFrameId = requestAnimationFrame(update); + } + }; + // #endif + const stop = () => { + if (timer !== null) { + clearInterval(timer); + timer = null; + } + if (animationFrameId !== null) { + cancelAnimationFrame(animationFrameId); // 取消动画帧请求 + animationFrameId = null; + } + status.value = 0; + _timeEnd(); + }; + + const restart = () => { + stop(); + times.value = calculateRemainingTime(); + start(); + }; + + // 监听 totalTime 和 unit 变化,重新计算 times + watch([() => options.totalTime, () => options.unit], () => { + times.value = calculateRemainingTime(); + }); + + function beforeStart(call : () => void) { + _beforeStart = call; + } + function timeEnd(call : () => void) { + _timeEnd = call; + } + function change(call : (n : number) => void) { + _change = call; + } + + function calculateRemainingTime() : number { + switch (unit) { + case 'ms': + return totalTime; + case 'ss': + return totalTime * 1000; + case 'mm': + return totalTime * 60000; + case 'hh': + return totalTime * 3600000; + case 'dd': + return totalTime * 86400000; + default: + return totalTime; + } + }; + + const formatTime = (time : number) : FormattedTime => { + const years = Math.floor(time / (1000 * 60 * 60 * 24 * 365)); // 计算年份 + const days = Math.floor((time % (1000 * 60 * 60 * 24 * 365)) / (1000 * 60 * 60 * 24)); + const hours = Math.floor((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + const minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60)); + const seconds = Math.floor((time % (1000 * 60)) / 1000); + const milliseconds = time % 1000; + return { year: years, day: days, hour: hours, minute: minutes, second: seconds, millisecond: milliseconds }; + }; + + const formattedTime = computed(() => { + let p = formatTime(times.value); + return (temForamt ?: string) => { + let fat = temForamt || format + return fat + .replace('yy', String(p.year)) + .replace('dd', String(p.day)) + .replace('hh', String(p.hour)) + .replace('mm', String(p.minute)) + .replace('ss', String(p.second)) + .replace('ms', String(p.millisecond)) + } + }); + const timeObj = computed(() => formatTime(times.value)); // 计算 timeObj + + return { + times: timeFomartValue, + formattedTime, + timeObj, + status: computed(() => status.value), + start, + stop, + restart, + beforeStart, + timeEnd, + change + }; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useTouchFinger.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useTouchFinger.ts new file mode 100644 index 0000000..3f5c8d8 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useTouchFinger.ts @@ -0,0 +1,305 @@ +import { ref, reactive } from 'vue'; +interface positionType { + x: number | null, + y: number | null +} + +/** + * 触摸事件 + * @example + ``` + import { useTouchFinger } from '@/tmui/tool/useFun/useTouchFinger' + const {touchstart,touchmove,touchend,touchcancel,addEventListener,direction,deltaXY,preTapPosition,angle,scale } = useTouchFinger(); + + addEventListener('rotate',(evt)=>{ + console.log(direction.value) + }) + ``` + */ +export const useTouchFinger = () => { + const x1 = ref(null) + const x2 = ref(null) + const y1 = ref(null) + const y2 = ref(null) + //当前点击的位置 + const preTapPosition = reactive({ x: null, y: null }); + const preV = reactive({ x: null, y: null }); + //计算的距离是相对上一次移动的距离。 + const deltaXY = reactive({ x: null, y: null }); + //计算的位置是相对上次触摸开始的位置,位置以当前元素在相对父级左上角开始的位置。 + const positionXY = reactive({ x: 0, y: 0 }); + + const pinchStartLen = ref(0); + const scale = ref(1); + const angle = ref(0); + const direction = ref<"" | "Left" | "Right" | "Up" | "Down">(""); + const testScale = ref(0) + + + let delta = 0; + let last = 0; + let now = 0; + let isDoubleTap = false; + let tapTimeout: any = NaN; + let singleTapTimeout: any = NaN; + let longTapTimeout: any = NaN; + let swipeTimeout: any = NaN; + const zoomFactor = 0.55; // 缩放速率 + const zoomFactorAb = 0.03; // 旋转速率 + // 点按 + let tap = (evt: TouchEvent) => { } + //双指捏合 + let pinch = (evt: TouchEvent) => { } + //双指撮合旋转 + let rotate = (evt: TouchEvent) => { } + let touchStart = (evt: TouchEvent) => { } + let touchMove = (evt: TouchEvent) => { } + let touchEnd = (evt: TouchEvent) => { } + let touchCancel = (evt: TouchEvent) => { } + //手指按住移动 + let pressMove = (evt: TouchEvent) => { } + //双击 + let doubleTap = (evt: TouchEvent) => { } + //长按 + let longTap = (evt: TouchEvent) => { } + //手指滑动 + let swipe = (evt: TouchEvent) => { } + //单击 + let singleTap = (evt: TouchEvent) => { } + //一个手指以上触发 + let multipointStart = (evt: TouchEvent) => { } + //一个手指以上触发结束 + let multipointEnd = (evt: TouchEvent) => { } + + function start(evt: TouchEvent) { + if (!evt.touches) return; + touchStart(evt) + now = Date.now(); + x1.value = evt.touches[0].pageX; + y1.value = evt.touches[0].pageY; + delta = now - (last || now); + if(x1.value===null) x1.value = 0 + if(y1.value===null) y1.value = 0 + if (preTapPosition.x !== null && preTapPosition.y !== null) { + isDoubleTap = (delta > 0 && delta <= 250 && Math.abs(preTapPosition.x - x1.value) < 30 && Math.abs(preTapPosition.y - y1.value) < 30); + } + preTapPosition.x = x1.value; + preTapPosition.y = y1.value; + last = now; + let len = evt.touches.length; + + if (len > 1) { + cancelLongTap(); + cancelSingleTap(); + + let otx = evt.touches[1].pageX; + let oty = evt.touches[1].pageY; + let v = { x: otx - x1.value, y: oty - y1.value }; + preV.x = v.x; + preV.y = v.y; + + pinchStartLen.value = getLen(preV); + multipointStart(evt) + } + longTapTimeout = setTimeout(function () { + longTap(evt); + }, 750); + + + } + function move(evt: TouchEvent) { + if (!evt.touches) return; + let len = evt.touches.length, + currentX = evt.touches[0].pageX, + currentY = evt.touches[0].pageY; + isDoubleTap = false; + if (len > 1) { + let otx = evt.touches[1].pageX; + let oty = evt.touches[1].pageY; + let v = { x: otx - currentX, y: oty - currentY }; + + if (preV.x !== null) { + if (pinchStartLen.value > 0) { + let temsc = (getLen(v) / pinchStartLen.value); + // 计算缩放比例 + const deltaScale = (temsc - 1) * zoomFactor + scale.value; + scale.value = Math.max(deltaScale,0.1) + + pinch(evt); + } + let testjd = getRotateAngle(v, preV); + angle.value = Math.floor((testjd - 1) * zoomFactorAb) + angle.value; + pinchStartLen.value = getLen(v); + rotate(evt); + } + preV.x = v.x; + preV.y = v.y; + } else { + if (x2.value !== null && y2.value !== null) { + deltaXY.x = currentX - x2.value; + deltaXY.y = currentY - y2.value; + + } else { + deltaXY.x = 0; + deltaXY.y = 0; + } + pressMove(evt); + } + + touchMove(evt); + + cancelLongTap(); + x2.value = currentX; + y2.value = currentY; + if (len > 1) { + evt?.preventDefault(); + } + + } + function end(evt: TouchEvent) { + if (!evt.changedTouches) return; + cancelLongTap(); + if (evt.touches.length < 2) { + multipointEnd(evt); + } + touchEnd(evt); + if(x1.value===null) x1.value = 0 + if(x2.value===null) x2.value = 0 + if(y1.value===null) y1.value = 0 + if(y2.value===null) y2.value = 0 + //swipe + if ((x2.value && Math.abs(x1.value - x2.value) > 30) || + (y2.value && Math.abs(y1.value - y2.value) > 30)) { + direction.value = swipeDirection(x1.value, x2.value, y1.value, y2.value); + swipeTimeout = setTimeout(function () { + swipe(evt); + }, 0) + } else { + tapTimeout = setTimeout(function () { + tap(evt); + if (isDoubleTap) { + doubleTap(evt); + scale.value = 1; + angle.value = 0 + clearTimeout(singleTapTimeout); + isDoubleTap = false; + } + }, 0) + if (!isDoubleTap) { + singleTapTimeout = setTimeout(function () { + singleTap(evt); + }, 250); + } + } + + preV.x = 0; + preV.y = 0; + // scale.value = 1; + pinchStartLen.value = 0; + x1.value = x2.value = y1.value = y2.value = null; + } + + function bind( + type: "tap" | "pinch" | "rotate" | "touchStart" | "touchMove" | "touchEnd" | "touchCancel" + | "pressMove" | "doubleTap" | "longTap" | "swipe" | "singleTap" | "multipointStart" | "multipointEnd", + call: (evt: TouchEvent) => void + ) { + if (type == 'tap') tap = call; + if (type == 'pinch') pinch = call; + if (type == 'rotate') rotate = call; + if (type == 'touchStart') touchStart = call; + if (type == 'touchMove') touchMove = call; + if (type == 'touchEnd') touchEnd = call; + if (type == 'touchCancel') touchCancel = call; + if (type == 'pressMove') pressMove = call; + if (type == 'doubleTap') doubleTap = call; + if (type == 'longTap') longTap = call; + if (type == 'swipe') swipe = call; + if (type == 'singleTap') singleTap = call; + if (type == 'multipointStart') multipointStart = call; + if (type == 'multipointEnd') multipointEnd = call; + } + function swipeDirection(x1: number, x2: number, y1: number, y2: number) { + return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down') + } + + function getLen(v: positionType) { + if(v.x===null||v.y===null) return 0 + + return Math.hypot(v.x,v.y) + + + // return Math.sqrt(v.x * v.x + v.y * v.y); + } + + function dot(v1: positionType, v2: positionType) { + if(v1.x===null||v1.y===null||v2.x===null||v2.y===null) return 0 + return v1.x * v2.x + v1.y * v2.y; + } + + function getAngle(v1: positionType, v2: positionType) { + + let mr = getLen(v1) * getLen(v2); + if (mr === 0) return 0; + let r = dot(v1, v2) / mr; + if (r > 1) r = 1; + let jd = Math.acos(r); + jd = jd * (180 / Math.PI); + return (jd + 360) % 360;; + } + + function cross(v1: positionType, v2: positionType) { + if(v1.x===null||v1.y===null||v2.x===null||v2.y===null) return 0 + return v1.x * v2.y - v2.x * v1.y; + } + + function getRotateAngle(v1: positionType, v2: positionType) { + let angle = getAngle(v1, v2); + if (cross(v1, v2) > 0) { + angle *= -1; + } + + return angle * 180 / Math.PI; + } + + + function cancel(evt: TouchEvent) { + clearTimeout(singleTapTimeout); + clearTimeout(tapTimeout); + clearTimeout(longTapTimeout); + clearTimeout(swipeTimeout); + touchCancel(evt); + + } + + function cancelLongTap() { + clearTimeout(longTapTimeout); + } + + function cancelSingleTap() { + clearTimeout(singleTapTimeout); + } + + + return { + + touchstart: start, + touchmove: move, + touchend: end, + touchcancel: cancel, + addEventListener: bind, + deltaXY, + pinchStartLen, + scale, + angle, + direction, + preTapPosition, + testScale + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useUploadFile.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useUploadFile.ts new file mode 100644 index 0000000..7316b5b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useUploadFile.ts @@ -0,0 +1,655 @@ +import { reactive, ref, watchEffect } from "vue" +/** + * 文件上传HOOKS + * 只限h5,微信,qq使用。其它平台请自己修改实现。 + * @description 鉴于大家可能需要只是上传功能,可能界面需要自己定制,那么这个hooks函数将提升你的效率。你仅需要专注于界面设计,其它的交给本函数。 + * @author tmui|tmzdy|https://tmui.design + * @version 1.0.0 + * 2023-10-7 22:51:00 by tmui + * @copyright 本代码只允许跟随tmui组件库发布。如果需要其它地方合并使用,请保留此注释版权信息。 + */ + +//文件对象结构 +export interface FILE_TYPE { + url: string,//当前显示的图片地址,这是个本地临时地址。待上传前,成功后会替换服务器地址。 + status?: string,//上传状态文本 + progress?: number,//当前文件上传的进度 + uid?: string | number,//文件唯一标识id + statusCode?: STATUS_CODE,//文件状态 + response?: any,//上传成功后的回调数据。 + name?: string,//文件名称 + size?: number,//文件大小字节单位 + FILE?: any,//文件对象。 + [key: string]: any +} + +//文件上传的状态值 +export enum STATUS_CODE { + //待上传 + upload = 0, + //上传中 + uploading = 1, + //上传失败 + fail = 2, + //上传成功 + success = 3, + //超过大小限制 + max = 4, +} +export interface USE_UPLOAD_FILE_CONFIG_TYPE { + /**media表示只允许图片或者视频选择,file表示允许任意文件,但只支持h5,微信平台 */ + uploadType:"media"|"file", + maxCount: number,//一次选择文件最大数量。 + extension: string[],//文件选择的类型。 + type: "all" | "image" | "video" | "file" | undefined, + /**只对h5 */ + sourceType: Array<'album' | 'camera'>, + maxSize: number,//每一个文件上传的最大尺寸,默认为10mb + hostUrl: string,//上传文件的服务器地址 + autoUpload: boolean, + header: { [key: string]: any },//头部参数。 + formData: { [key: string]: any },//额外的表单数据。 + formName: string, + code: number,//服务器响应码,如果不为此码,表示上传失败。 + maxDuration:number,//如果选择的类型是视频,可以定制此拍摄的最大时长。仅uploadType为media时有效 + sizeType:Array<'original'|'compressed'>,//仅对 mediaType 为 image 时有效,是否压缩所选文件,仅uploadType为media时有效 + camera:'back'|'front',//仅在 sourceType 为 camera 时生效,使用前置或后置摄像头,仅uploadType为media时有效 + mediaType:Array<'image'|'video'>,//注意当uploadType=media时,如果是微信,抖音,飞书这里可以为当前正常类型值;如果是其它平台:只取数组中第一个值,比如要选择图片设置为["image"],视频:["video"],仅uploadType为media时有效 + +} +export function getUid(length = 3) { + return Number(Number(Math.random().toString().substr(3, length) + Date.now()).toString(8)); +} +export const useUploadFile = (cfg:USE_UPLOAD_FILE_CONFIG_TYPE|null) => { + const config = ref({ + uploadType:'file', + extension: [], + type: "all", + sourceType: ['album', 'camera'], + maxSize: 10 * 1024 * 1024,//每一个文件上传的最大尺寸,默认为10mb + maxCount: 9,//一次选择文件最大数量。 + // 测试地址:https://mockapi.eolink.com/tNYKNA7ac71aa90bcbe83c5815871a5b419601e96a5524d/upload + hostUrl: "",//上传文件的服务器地址 + autoUpload: true, + header: Object,//头部参数。 + formData: {},//额外的表单数据。 + formName: 'file', + code: 200, + maxDuration:20, + sizeType:['original', 'compressed'], + camera:'back', + mediaType:['image','video'] + }) + config.value = uni.$tm.u.deepObjectMerge(config.value, cfg || {}); + //文件列表。 + const list = ref([]) + //当前是否正在上传中,true表示上传中,false表示中断/或者未开始上传中。 + const uploading = ref(false); + //当前上传的索引位置。 + const activeIndex = ref(0) + //是否中断上传。 + let isStopUpload = false; + //是否已经超过了限制数量 + let isLimitCount = ref(false) + + let uploadTask: UniApp.UploadTask|null = null; + + /** + * 选择文件前执行 + * @param cfg 全局参数,可以修改 + * @return {USE_UPLOAD_FILE_CONFIG_TYPE|null} 需要返回配置,如果不想修改返回null即可。 + */ + let beforeChooseFile = (cfg: USE_UPLOAD_FILE_CONFIG_TYPE | null = null) => { + + return cfg + } + /** + * 选择文件后执行 + * @param files 选择后的文件列表对象, + * @return {FILE_TYPE[]} 必须要返回文件列表,可以在这里修改待上传的文件列表地址。 + */ + let chooseFileAfter = (files: FILE_TYPE[]) => { + return files + } + + /** + * 所有文件上传结束时触发。 + * @param files 当前上传的文件列表 + */ + let uploadComplete = (files: FILE_TYPE[]) => { + + } + + /** + * 某一个文件上传结束时触发,不管失败与否都会触发。 + * @param file 当前上传的文件 + * @param files 当前上传的文件列表 + */ + let complete = (file: FILE_TYPE, files: FILE_TYPE[]) => { + + } + /** + * 某一个文件上传失败时触发 + * @param file 当前上传的文件 + * @param files 当前上传的文件列表 + */ + let fail = (file: FILE_TYPE, files: FILE_TYPE[]) => { + + } + + /** + * 某一个文件上传成功时触发 + * @param file 当前上传的文件 + * @param files 当前上传的文件列表 + * @returns {FILE_TYPE} 需要返回本文件 + */ + let success = (file: FILE_TYPE, files: FILE_TYPE[]) => { + + } + /** + * 某一个文件上传成功后触发 + * @param file 当前上传的文件 + * @param files 当前上传的文件列表 + * @returns {FILE_TYPE} 需要返回本文件,你可以在此修改文件的statusCode,status状态等,将会最终影响文件是否真的上传成功或者修改返回值等等。 + */ + let successAfter = (file: FILE_TYPE, files: FILE_TYPE[]) => { + + return file; + } + + /** + * 任意一个文件上传前触发 + * @param file 当前上传的文件 + * @param files 当前上传的文件列表 + * @returns {boolean} 如果返回true将继续上传,如果返回false将阻止本次上传并设置为该文件为上传失败,然后接着上传下一个文件。 + */ + let beforeFileStart = (file: FILE_TYPE, files: FILE_TYPE[]):Promise|boolean => { + + return true; + } + + /** + * 开始上传前触发 + * @param cfg 当前上传文件的配置表 + * @returns {boolean} 如果返回false将中止本次整体的上传。 + */ + let beforeStart = (cfg:USE_UPLOAD_FILE_CONFIG_TYPE):Promise|boolean => { + + return true; + } + /** + * 删除前触发 + * @param file 当前上传文件 + * @returns {boolean} 如果返回false将不允许删除 + */ + let beforeRemove = (file: FILE_TYPE):Promise|boolean => { + return true; + } + + /** + * 任意事件变动触发,管是中断,上传结束,失败等都会触发。 + * @param file 变动的文件,可能为null + */ + let change = (file: FILE_TYPE|null) => { + + } + + + + + + /** + * 选择文件 + */ + function choose(type:"file"|"media" = 'file'): Promise { + if (list.value.length >= config.value.maxCount) { + uni.showToast({ title: "超过上传数量", icon: "none", mask: true }); + return Promise.reject("超过上传数量"); + } + //执行上传的勾子。 + let temconfig = beforeChooseFile(uni.$tm.u.deepClone(config.value)); + config.value = uni.$tm.u.deepObjectMerge(config.value, temconfig || {}); + let cfg = { + count: config.value.maxCount, + extension: config.value.extension, + type: config.value.type, + mediaType:config.value.mediaType, + sourceType:config.value.sourceType, + maxDuration:config.value.maxDuration, + sizeType:config.value.sizeType, + camera:config.value.camera, + } + if (typeof cfg.extension === 'undefined' || !cfg.extension || cfg.extension?.length === 0) { + delete cfg.extension; + } + + return new Promise((resolve, rejects) => { + let apiName = uni?.chooseFile; + let ischooseVideo = false; + // #ifdef MP-WEIXIN || MP-QQ + apiName = uni?.chooseMessageFile + // #endif + // #ifdef H5 + apiName = uni?.chooseFile; + // #endif + + if(config.value.uploadType == 'media'){ + + // #ifdef MP-WEIXIN || MP-JD || MP-TOUTIAO || MP-LARK + apiName = uni?.chooseMedia; + // #endif + // #ifndef MP-WEIXIN || MP-JD || MP-TOUTIAO || MP-LARK + if(!config.value.mediaType[0]||config.value.mediaType[0]==='image'){ + apiName = uni?.chooseImage; + }else if(config.value.mediaType[0]==='video'){ + apiName = uni?.chooseVideo; + ischooseVideo=true; + } + // #endif + + + } + + console.log(apiName) + if(!apiName){ + uni.showModal({ + title:"警告", + content:"当前只支持微信,QQ,webPC或者H5平台,其它平台不支持文件上传", + showCancel:false, + confirm:"懂了", + }) + return; + } + // @ts-ignore + apiName({ + ...cfg, + fail(result) { + uni.showToast({ title: typeof result == 'object' ? JSON.stringify(result) : result, icon: "none", mask: true }); + rejects(typeof result == 'object' ? JSON.stringify(result) : result) + }, + success(res) { + let temFiles = res?.tempFiles; + console.log(res) + let temlist: any[] = []; + if (Array.isArray(temFiles)) { + temFiles.forEach(ele => { + + temlist.push({ + uid: getUid(4), + url: ele.path, + progress: 0, + statusCode: ele.size > config.value.maxSize ? STATUS_CODE.max : STATUS_CODE.upload, + status: ele.size > config.value.maxSize ? '超过大小' : '待上传', + response: null, + name: ele.name, + FILE: ele + }) + }); + } else { + + if(ischooseVideo){ + temFiles = { + file:res.tempFile, + name:res.name, + size:res.size, + path:res.tempFilePath + } + } + + temlist.push({ + uid: getUid(4), + url: temFiles.path, + progress: 0, + statusCode: temFiles.size > config.value.maxSize ? STATUS_CODE.max : STATUS_CODE.upload, + status: temFiles.size > config.value.maxSize ? '超过大小' : '待上传', + response: null, + name: temFiles.name, + FILE: ischooseVideo?temFiles.file:temFiles + }) + } + let syuCount = Math.max(config.value.maxCount - list.value.length, 0) + temlist = [...temlist.slice(0, syuCount)] + temlist = chooseFileAfter(temlist); + list.value.push(...temlist) + if(config.value.autoUpload){ + start(); + } + resolve([...temlist]) + } + }) + }) + } + /** + * 删除指定文件 + * @param file 可以是索引或者文件FILE_TYPE对象 + */ + async function remove(file: number | FILE_TYPE) { + let removeIndex = null; + if (typeof file === 'number') { + removeIndex = file; + } else { + let uid = file.uid; + let index = list.value.findIndex(ele => ele.uid === uid); + if (index > -1) { + removeIndex = index; + + } + } + if (typeof removeIndex === null) { + uni.showToast({ title: "删除失败,无对应文件", icon: "none", mask: true }); + return; + } + if (typeof removeIndex === 'number') { + if (!list.value[removeIndex]) { + uni.showToast({ title: "删除失败,无对应文件", icon: "none", mask: true }); + return; + } + //是否允许删除 + let isDel = true; + if(beforeRemove instanceof Promise){ + isDel = await beforeRemove(uni.$tm.u.deepClone(list.value[removeIndex])); + }else{ + isDel = beforeRemove(uni.$tm.u.deepClone(list.value[removeIndex])); + } + if(isDel){ + if(uploading.value){ + uni.showToast({ title: "上传中,暂无法操作", icon: "none", mask: true }); + return; + } + list.value.splice(removeIndex, 1); + change(uni.$tm.u.deepClone(list.value[removeIndex])) + }else{ + uni.showToast({ title: "删除失败,不允许", icon: "none", mask: true }); + return; + } + } + + + } + /** + * 添加已有(上传文件) + * 通常是服务器返回时的数据,用来返选用。 + * @param files 需要添加的静态文件 + */ + function addFile(files: string | FILE_TYPE | FILE_TYPE[] | string[] | Array) { + let temList: any[] = []; + if (typeof files === 'string') { + temList.push({ + uid: getUid(4), + url: files, + progress: 100, + statusCode: STATUS_CODE.success, + status: '已上传', + response: JSON.stringify({ code: 0, msg: "上传成功", data: files }), + name: files, + FILE: null + }) + + } else if (typeof files === 'object') { + if (Array.isArray(files)) { + files.forEach(el => { + if (typeof el === 'string') { + temList.push({ + uid: getUid(4), + url: el, + progress: 100, + statusCode: STATUS_CODE.success, + status: '已上传', + response: JSON.stringify({ code: 0, msg: "上传成功", data: el }), + name: el, + FILE: null + }) + } else if (typeof el === 'object') { + const indexNow = list.value.findIndex(el=>el.uid===files?.uid) + if(indexNow==-1){ + temList.push({ + uid: getUid(4), + progress: 100, + statusCode: STATUS_CODE.success, + status: '已上传', + response: JSON.stringify(el?.response ?? { code: 0, msg: "上传成功", data: el }), + name: files, + FILE: null, + ...files + }) + } + + } + }) + } else { + const indexNow = list.value.findIndex(el=>el.uid===files?.uid) + if(indexNow==-1){ + temList.push({ + uid: getUid(4), + progress: 100, + statusCode: STATUS_CODE.success, + status: '已上传', + response: JSON.stringify(files?.response ?? { code: 0, msg: "上传成功", data: files }), + name: files, + FILE: null, + ...files + }) + } + + } + } + + list.value.push(...temList); + } + + /** + * 停止当前的上传 + */ + function stop() { + isStopUpload = true; + uploading.value = false; + uploadTask?.abort(); + change(null) + } + + /** + * 清空文件 + * @param type {"fail"|"success"|"all" } 清除文件类型 + */ + function clearFile(type:"fail"|"success"|"all" = "all"){ + if(uploading.value){ + uni.showToast({ title: "任务进行中", icon: "none", mask: true }); + return; + } + list.value = []; + change(null) + } + + /** + * 获取文件 + * @param type {"fail"|"success"|"all" } 获取当前所有文件时的筛选条件 + */ + function getFile(type:"fail"|"success"|"all" = "success"){ + let temp = uni.$tm.u.deepClone(list.value); + let temlist:FILE_TYPE[] = []; + temp.forEach(el=>{ + if(type == 'all'){ + temlist.push(el) + }else if(type == 'fail'){ + if(el.statusCode == STATUS_CODE.fail || el.statusCode == STATUS_CODE.max){ + temlist.push(el) + } + }else if(type == 'success'){ + if(el.statusCode == STATUS_CODE.success){ + temlist.push(el) + } + } + }) + + return temlist; + } + + async function start() { + if (list.value.length <= 0) { + uni.showToast({ title: "没有文件可上传", icon: "none", mask: true }); + return; + } + // await beforeStart(uni.$tm.u.deepClone(config.value)); + let isupload = true + if(beforeStart instanceof Promise ){ + isupload = await beforeStart(uni.$tm.u.deepClone(config.value)); + }else{ + // @ts-ignore + isupload = beforeStart(uni.$tm.u.deepClone(config.value)); + } + if (uploading.value || !isupload) return; + uploading.value = true; + activeIndex.value = 0; + isStopUpload = false; + change(null) + _upload(); + } + + async function _upload() { + if (isStopUpload) return; + let nowItem = reactive(list.value[activeIndex.value]) + //上结束 + if (!nowItem || typeof nowItem === 'undefined') { + uploading.value = false; + uploadComplete(uni.$tm.u.deepClone(list.value)) + change(null) + return; + } + + + //成功,超过大小,上传中需要跳过上传直接下一个文件。 + if(nowItem.statusCode == STATUS_CODE.success || nowItem.statusCode == STATUS_CODE.max || nowItem.statusCode == STATUS_CODE.uploading){ + activeIndex.value+=1; + change(uni.$tm.u.deepClone(nowItem)) + _upload(); + return; + } + + //是否允许本次上传。 + let isupload = true + // 执行上传前项目的勾子。 + if(beforeFileStart instanceof Promise ){ + isupload = await beforeFileStart(uni.$tm.u.deepClone(nowItem),uni.$tm.u.deepClone(list.value)); + }else{ + // @ts-ignore + isupload = beforeFileStart(uni.$tm.u.deepClone(nowItem),uni.$tm.u.deepClone(list.value)); + } + //跳过本次上传。 + if(!isupload){ + nowItem.status = "请更换文件"; + nowItem.statusCode = STATUS_CODE.fail; + activeIndex.value+=1; + change(uni.$tm.u.deepClone(nowItem)) + _upload(); + return; + } + + //正式进入上传阶段。 + nowItem.status = "上传中.." + nowItem.statusCode = STATUS_CODE.uploading; + + + uploadTask = uni.uploadFile({ + url:config.value.hostUrl, + name:config.value.formName||"file", + filePath:nowItem.url, + header:config.value.header||{}, + formData:{name:nowItem.name,...config.value.formData}, + fail(result) { + nowItem.status = "上传失败"; + nowItem.statusCode = STATUS_CODE.fail; + uni.showToast({ title: "上传失败", icon: "none", mask: true }); + fail(uni.$tm.u.deepClone(nowItem),uni.$tm.u.deepClone(list.value)); + activeIndex.value+=1; + }, + success(result) { + if(result.statusCode !==config.value.code){ + nowItem.status = "上传失败"; + nowItem.statusCode = STATUS_CODE.fail; + uni.showToast({ title: result.errMsg, icon: "none", mask: true }); + fail(uni.$tm.u.deepClone(nowItem),uni.$tm.u.deepClone(list.value)); + activeIndex.value+=1; + return; + } + let temp = uni.$tm.u.deepClone(nowItem); + temp.status = "上传成功"; + temp.statusCode = STATUS_CODE.success; + temp.progress = 100; + temp.response = result.data; + let chuliitem = successAfter(temp,uni.$tm.u.deepClone(list.value)) + for(let key in chuliitem){ + nowItem[key] = chuliitem[key]; + } + success(uni.$tm.u.deepClone(nowItem),uni.$tm.u.deepClone(list.value)) + activeIndex.value+=1; + + }, + complete(result) { + complete(uni.$tm.u.deepClone(nowItem),uni.$tm.u.deepClone(list.value)); + change(uni.$tm.u.deepClone(nowItem)) + if (isStopUpload) return + _upload(); + }, + }) + + uploadTask.onProgressUpdate((result)=>{ + nowItem.progress = result.progress; + nowItem.statusCode = STATUS_CODE.uploading; + nowItem.status = "进度:"+parseInt(result.progress.toFixed(1))+"%"; + }) + + } + /** 添加事件函数 */ + function addEventListener( + type:'change'|'beforeRemove'|'beforeStart'|'beforeFileStart'|'successAfter'|'success'|'fail'|'complete'|'uploadComplete'|'chooseFileAfter', + Fun:any + ){ + if(type == 'change'){ + change = Fun; + }else if(type == 'beforeRemove'){ + beforeRemove = Fun; + }else if(type == 'beforeStart'){ + beforeStart = Fun; + }else if(type == 'beforeFileStart'){ + beforeFileStart = Fun; + }else if(type == 'successAfter'){ + successAfter = Fun; + }else if(type == 'success'){ + success = Fun; + }else if(type == 'fail'){ + fail = Fun; + }else if(type == 'complete'){ + complete = Fun; + }else if(type == 'uploadComplete'){ + uploadComplete = Fun; + }else if(type == 'chooseFileAfter'){ + chooseFileAfter = Fun; + } + } + + + + watchEffect(()=>{ + if(list.value.length>=config.value.maxCount){ + isLimitCount.value = true; + }else{ + isLimitCount.value = false; + } + }) + + return { + config, + choose, + files: list, + remove, + addFile, + start, + stop, + clearFile, + getFile, + uploading, + activeIndex, + isLimitCount, + addEventListener + } +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/useFun/useWindowInfo.ts b/uni_modules/UniDevTools/src/tmui/tool/useFun/useWindowInfo.ts new file mode 100644 index 0000000..0962bc1 --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/useFun/useWindowInfo.ts @@ -0,0 +1,52 @@ +import { onMounted, reactive } from "vue" +/** + * 获取当前窗口尺寸信息 + */ +export const useWindowInfo = () => { + + let winSize = reactive({ + top:0, + topSafe: 0, + width: uni.upx2px(750), + height: uni.upx2px(750), + statusBar: 24, + navigatorBar: 44, + bottomSafe: 0, + nvue:false, + // 是否存在系统自带的状态栏,针对h5优化。 + h5IsSystemBar:true + }) + // #ifdef APP-NVUE + winSize.nvue = true; + // #endif + + function init(){ + let sysinfo = uni.getSystemInfoSync(); + winSize.topSafe = (sysinfo?.statusBarHeight??24) + (sysinfo?.navigationBarHeight??44); + winSize.width = sysinfo?.windowWidth??uni.upx2px(750); + winSize.height = sysinfo?.windowHeight??uni.upx2px(750); + // #ifdef H5 + winSize.height = window.innerHeight; + let ele = document.querySelector(".uni-page-head") as HTMLElement|null; + if(ele){ + winSize.top = 44 + winSize.h5IsSystemBar = true + ele.style.zIndex='400' + }else{ + winSize.h5IsSystemBar = false + } + // #endif + winSize.statusBar = sysinfo?.statusBarHeight??24; + winSize.navigatorBar = sysinfo?.navigationBarHeight??44; + winSize.bottomSafe = sysinfo.safeAreaInsets?.bottom??0 + + } + init(); + onMounted(()=>{ + setTimeout(() => { + init(); + }, 0); + }) + + return winSize; +} \ No newline at end of file diff --git a/uni_modules/UniDevTools/src/tmui/tool/vitePlugs/tmuiCss.ts b/uni_modules/UniDevTools/src/tmui/tool/vitePlugs/tmuiCss.ts new file mode 100644 index 0000000..3709a3b --- /dev/null +++ b/uni_modules/UniDevTools/src/tmui/tool/vitePlugs/tmuiCss.ts @@ -0,0 +1,56 @@ +/** + * 作者 tmui | https://tmui.design + * 版权:本插件只服务于tmui组件库,不得移植复制到任何地方使用,侵权必究. + */ +import { normalizePath } from 'vite' +import {path} from "path" +import * as file from "fs" +export default function(opts?:any){ + return { + name:"tmui-vite-css", + // 该插件在 plugin-vue 插件之前执行,这样就可以直接解析到原模板文件 + enforce: 'pre', + handleHotUpdate({file,modules,read}){ + + }, + // 代码转译,这个函数的功能类似于 `webpack` 的 `loader` + transform(code:string, id:string, opt) { + + const rule = /\.[n]{0,}vue$/; + const customRule = /\/g; + if (!rule.test(id)) return code; + let fpath = normalizePath(id).toLocaleLowerCase(); + //只处理页面。 + if(fpath.indexOf('tmui/components')>-1) return; + //过滤不处理的特殊文件 + if(checkFileisTmui(id)) return code; + const nodelistStringtag = code.match(customRule) + + // console.log(nodelistStringtag) + if(!nodelistStringtag) return; + /** 正则color属性。 */ + let attrRule = /\s(color)=([\s]{0,}".*")|\s(color)[\s]{0,}=[\s]{0,}('.*')/g + nodelistStringtag.forEach(el=>{ + el.match(attrRule) + }) + + return code; + } + } +} + + +function checkFileisTmui(filepath:string){ + let autoColorCom = [ + 'app.vue', + ] + filepath = normalizePath(filepath).toLocaleLowerCase() + let filename = filepath.substring(filepath.lastIndexOf('/')+1); + return autoColorCom.includes(filename) +} + +function getFileName(id:string){ + let filepath = normalizePath(id) + let filename = filepath.substring(filepath.lastIndexOf('/')+1); + return filename +} diff --git a/uni_modules/UniDevTools/src/uni.scss b/uni_modules/UniDevTools/src/uni.scss new file mode 100644 index 0000000..e69de29 diff --git a/uni_modules/UniDevTools/tsconfig.json b/uni_modules/UniDevTools/tsconfig.json new file mode 100644 index 0000000..5ad7c54 --- /dev/null +++ b/uni_modules/UniDevTools/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "types": ["@dcloudio/types"], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "./src/*.vue", + "./src/**/*.vue", + "./src/*.nvue", + "./src/**/*.nvue", + "./src/*.ts", + "./src/*.d.ts", + "./src/**/*.ts" + ] +} diff --git a/uni_modules/UniDevTools/vite.config.ts b/uni_modules/UniDevTools/vite.config.ts new file mode 100644 index 0000000..12c94ea --- /dev/null +++ b/uni_modules/UniDevTools/vite.config.ts @@ -0,0 +1,34 @@ +import { defineConfig } from "vite"; +import uni from "@dcloudio/vite-plugin-uni"; +import vueJsx from "@vitejs/plugin-vue-jsx"; +import { resolve } from "path" +// import Components from 'unplugin-vue-components/vite' +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + target: "es6" + }, + resolve: { + alias: [ + { + find: "@", + replacement: resolve(__dirname, 'src') + } + ] + }, + server: { + port: 1314, + // 选项写法 + proxy: { + '/pag': { + target: 'https://cdn.tmui.design', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '/api') + }, + } + }, + plugins: [ + uni(), + vueJsx() + ] +}); diff --git a/uni_modules/uni-badge/changelog.md b/uni_modules/uni-badge/changelog.md new file mode 100644 index 0000000..e352c60 --- /dev/null +++ b/uni_modules/uni-badge/changelog.md @@ -0,0 +1,33 @@ +## 1.2.2(2023-01-28) +- 修复 运行/打包 控制台警告问题 +## 1.2.1(2022-09-05) +- 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-badge](https://uniapp.dcloud.io/component/uniui/uni-badge) +## 1.1.7(2021-11-08) +- 优化 升级ui +- 修改 size 属性默认值调整为 small +- 修改 type 属性,默认值调整为 error,info 替换 default +## 1.1.6(2021-09-22) +- 修复 在字节小程序上样式不生效的 bug +## 1.1.5(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.4(2021-07-29) +- 修复 去掉 nvue 不支持css 的 align-self 属性,nvue 下不暂支持 absolute 属性 +## 1.1.3(2021-06-24) +- 优化 示例项目 +## 1.1.1(2021-05-12) +- 新增 组件示例地址 +## 1.1.0(2021-05-12) +- 新增 uni-badge 的 absolute 属性,支持定位 +- 新增 uni-badge 的 offset 属性,支持定位偏移 +- 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +## 1.0.7(2021-05-07) +- 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- 新增 uni-badge 属性 custom-style, 支持自定义样式 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-badge/components/uni-badge/uni-badge.vue b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue new file mode 100644 index 0000000..956354b --- /dev/null +++ b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/uni_modules/uni-badge/package.json b/uni_modules/uni-badge/package.json new file mode 100644 index 0000000..b0bac93 --- /dev/null +++ b/uni_modules/uni-badge/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-badge", + "displayName": "uni-badge 数字角标", + "version": "1.2.2", + "description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。", + "keywords": [ + "", + "badge", + "uni-ui", + "uniui", + "数字角标", + "徽章" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-badge/readme.md b/uni_modules/uni-badge/readme.md new file mode 100644 index 0000000..bdf175d --- /dev/null +++ b/uni_modules/uni-badge/readme.md @@ -0,0 +1,10 @@ +## Badge 数字角标 +> **组件名:uni-badge** +> 代码块: `uBadge` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-badge) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-breadcrumb/changelog.md b/uni_modules/uni-breadcrumb/changelog.md new file mode 100644 index 0000000..209e5c5 --- /dev/null +++ b/uni_modules/uni-breadcrumb/changelog.md @@ -0,0 +1,6 @@ +## 0.1.2(2022-06-08) +- 修复 微信小程序 separator 不显示的Bug +## 0.1.1(2022-06-02) +- 新增 支持 uni.scss 修改颜色 +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue new file mode 100644 index 0000000..420aaf5 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue @@ -0,0 +1,126 @@ + + + diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue new file mode 100644 index 0000000..81fb63e --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue @@ -0,0 +1,46 @@ + + + diff --git a/uni_modules/uni-breadcrumb/package.json b/uni_modules/uni-breadcrumb/package.json new file mode 100644 index 0000000..0a04e50 --- /dev/null +++ b/uni_modules/uni-breadcrumb/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-breadcrumb", + "displayName": "uni-breadcrumb 面包屑", + "version": "0.1.2", + "description": "Breadcrumb 面包屑", + "keywords": [ + "uni-breadcrumb", + "breadcrumb", + "uni-ui", + "面包屑导航", + "面包屑" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/uni-breadcrumb/readme.md b/uni_modules/uni-breadcrumb/readme.md new file mode 100644 index 0000000..6976b8d --- /dev/null +++ b/uni_modules/uni-breadcrumb/readme.md @@ -0,0 +1,66 @@ + +## breadcrumb 面包屑导航 +> **组件名:uni-breadcrumb** +> 代码块: `ubreadcrumb` + +显示当前页面的路径,快速返回之前的任意页面。 + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + {{route.name}} + +``` + +```js +export default { + name: "uni-stat-breadcrumb", + data() { + return { + routes: [{ + to: '/A', + name: 'A页面' + }, { + to: '/B', + name: 'B页面' + }, { + to: '/C', + name: 'C页面' + }] + }; + } + } +``` + + +## API + +### Breadcrumb Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|separator |String |斜杠'/' |分隔符 | +|separatorClass |String | |图标分隔符 class | + +### Breadcrumb Item Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|to |String | |路由跳转页面路径 | +|replace|Boolean | |在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) | + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb) \ No newline at end of file diff --git a/uni_modules/uni-calendar/changelog.md b/uni_modules/uni-calendar/changelog.md new file mode 100644 index 0000000..a728bb8 --- /dev/null +++ b/uni_modules/uni-calendar/changelog.md @@ -0,0 +1,28 @@ +## 1.4.11(2024-01-10) +- 修复 回到今天时,月份显示不一致问题 +## 1.4.10(2023-04-10) +- 修复 某些情况 monthSwitch 未触发的Bug +## 1.4.9(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 1.4.8(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/161964) +## 1.4.7(2022-09-16) +- 优化 支持使用 uni-scss 控制主题色 +## 1.4.6(2022-09-08) +- 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件的Bug +## 1.4.5(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.4(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.3(2021-09-22) +- 修复 startDate、 endDate 属性失效的Bug +## 1.4.2(2021-08-24) +- 新增 支持国际化 +## 1.4.1(2021-08-05) +- 修复 弹出层被 tabbar 遮盖的Bug +## 1.4.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.3.16(2021-05-12) +- 新增 组件示例地址 +## 1.3.15(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-calendar/components/uni-calendar/calendar.js b/uni_modules/uni-calendar/components/uni-calendar/calendar.js new file mode 100644 index 0000000..b8d7d6f --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json new file mode 100644 index 0000000..fcbd13c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "ok", + "uni-calender.cancel": "cancel", + "uni-calender.today": "today", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json new file mode 100644 index 0000000..1ca43de --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "确定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json new file mode 100644 index 0000000..e0fe33b --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "確定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue new file mode 100644 index 0000000..a54135e --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue new file mode 100644 index 0000000..0beebfb --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue @@ -0,0 +1,567 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/util.js b/uni_modules/uni-calendar/components/uni-calendar/util.js new file mode 100644 index 0000000..5ec8a92 --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/util.js @@ -0,0 +1,360 @@ +import CALENDAR from './calendar.js' + +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31 && AddDayCount>0) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + const preMonth = dd.getMonth() + dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期 + const nextMonth = dd.getMonth() + // 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount)) + } + // 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount)) + } + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + lunar: this.getlunar(full.year, full.month - 1, beforeDate), + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate), + afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate), + month: full.month, + lunar: this.getlunar(full.year, full.month, i), + disable: !(disableBefore && disableAfter), + isDay + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + lunar: this.getlunar(full.year, Number(full.month) + 1, i), + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + /** + * 计算阴历日期显示 + */ + getlunar(year, month, date) { + return CALENDAR.solar2lunar(year, month, date) + } + /** + * 设置打点 + */ + setSelectInfo(data, value) { + this.selected = value + this._getWeek(data) + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (before && after) { + this.multipleStatus.before = '' + this.multipleStatus.after = '' + this.multipleStatus.data = [] + } else { + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + } + this._getWeek(fullDate) + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + year, + month + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-calendar/package.json b/uni_modules/uni-calendar/package.json new file mode 100644 index 0000000..bceaed3 --- /dev/null +++ b/uni_modules/uni-calendar/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-calendar", + "displayName": "uni-calendar 日历", + "version": "1.4.11", + "description": "日历组件", + "keywords": [ + "uni-ui", + "uniui", + "日历", + "", + "打卡", + "日历选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-calendar/readme.md b/uni_modules/uni-calendar/readme.md new file mode 100644 index 0000000..4e1748c --- /dev/null +++ b/uni_modules/uni-calendar/readme.md @@ -0,0 +1,103 @@ + + +## Calendar 日历 +> **组件名:uni-calendar** +> 代码块: `uCalendar` + + +日历组件 + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js) +> - 仅支持自定义组件模式 +> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date() +> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意 +> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动 + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + + +``` + +### 通过方法打开日历 + +需要设置 `insert` 为 `false` + +```html + + + + +``` + +```javascript + +export default { + data() { + return {}; + }, + methods: { + open(){ + this.$refs.calendar.open(); + }, + confirm(e) { + console.log(e); + } + } +}; + +``` + + +## API + +### Calendar Props + +| 属性名 | 类型 | 默认值| 说明 | +| - | - | - | - | +| date | String |- | 自定义当前时间,默认为今天 | +| lunar | Boolean | false | 显示农历 | +| startDate | String |- | 日期选择范围-开始日期 | +| endDate | String |- | 日期选择范围-结束日期 | +| range | Boolean | false | 范围选择 | +| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 | +|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 | +| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] | +|showMonth | Boolean | true | 是否显示月份为背景 | + +### Calendar Events + +| 事件名 | 说明 |返回值| +| - | - | - | +| open | 弹出日历组件,`insert :false` 时生效|- | + + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar) diff --git a/uni_modules/uni-card/changelog.md b/uni_modules/uni-card/changelog.md new file mode 100644 index 0000000..c3cd8c4 --- /dev/null +++ b/uni_modules/uni-card/changelog.md @@ -0,0 +1,26 @@ +## 1.3.1(2021-12-20) +- 修复 在vue页面下略缩图显示不正常的bug +## 1.3.0(2021-11-19) +- 重构插槽的用法 ,header 替换为 title +- 新增 actions 插槽 +- 新增 cover 封面图属性和插槽 +- 新增 padding 内容默认内边距离 +- 新增 margin 卡片默认外边距离 +- 新增 spacing 卡片默认内边距 +- 新增 shadow 卡片阴影属性 +- 取消 mode 属性,可使用组合插槽代替 +- 取消 note 属性 ,使用actions插槽代替 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-card](https://uniapp.dcloud.io/component/uniui/uni-card) +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-07-01) +- 优化 图文卡片无图片加载时,提供占位图标 +- 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- 修复 thumbnail 不存在仍然占位的 bug +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-card/components/uni-card/uni-card.vue b/uni_modules/uni-card/components/uni-card/uni-card.vue new file mode 100644 index 0000000..38cf594 --- /dev/null +++ b/uni_modules/uni-card/components/uni-card/uni-card.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/uni_modules/uni-card/package.json b/uni_modules/uni-card/package.json new file mode 100644 index 0000000..f16224d --- /dev/null +++ b/uni_modules/uni-card/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-card", + "displayName": "uni-card 卡片", + "version": "1.3.1", + "description": "Card 组件,提供常见的卡片样式。", + "keywords": [ + "uni-ui", + "uniui", + "card", + "", + "卡片" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-card/readme.md b/uni_modules/uni-card/readme.md new file mode 100644 index 0000000..7434e71 --- /dev/null +++ b/uni_modules/uni-card/readme.md @@ -0,0 +1,12 @@ + + +## Card 卡片 +> **组件名:uni-card** +> 代码块: `uCard` + +卡片视图组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-collapse/changelog.md b/uni_modules/uni-collapse/changelog.md new file mode 100644 index 0000000..455308a --- /dev/null +++ b/uni_modules/uni-collapse/changelog.md @@ -0,0 +1,38 @@ +## 1.4.4(2024-03-20) +- 修复 titleBorder类型修正 +## 1.4.3(2022-01-25) +- 修复 初始化的时候 ,open 属性失效的bug +## 1.4.2(2022-01-21) +- 修复 微信小程序resize后组件收起的bug +## 1.4.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse) +## 1.3.3(2021-08-17) +- 优化 show-arrow 属性默认为true +## 1.3.2(2021-08-17) +- 新增 show-arrow 属性,控制是否显示右侧箭头 +## 1.3.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.3.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.2(2021-07-21) +- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +## 1.2.1(2021-07-21) +- 优化 组件示例 +## 1.2.0(2021-07-21) +- 新增 组件折叠动画 +- 新增 value\v-model 属性 ,动态修改面板折叠状态 +- 新增 title 插槽 ,可定义面板标题 +- 新增 border 属性 ,显示隐藏面板内容分隔线 +- 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- 修复 resize 方法失效的Bug +- 修复 change 事件返回参数不正确的Bug +- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.1.5(2021-02-05) +- 调整为uni_modules目录规范 \ No newline at end of file diff --git a/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue new file mode 100644 index 0000000..2f0862e --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue @@ -0,0 +1,402 @@ + + + + + diff --git a/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue new file mode 100644 index 0000000..384c39a --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue @@ -0,0 +1,147 @@ + + + diff --git a/uni_modules/uni-collapse/package.json b/uni_modules/uni-collapse/package.json new file mode 100644 index 0000000..65c5c2e --- /dev/null +++ b/uni_modules/uni-collapse/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-collapse", + "displayName": "uni-collapse 折叠面板", + "version": "1.4.4", + "description": "Collapse 组件,可以折叠 / 展开的内容区域。", + "keywords": [ + "uni-ui", + "折叠", + "折叠面板", + "手风琴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-collapse/readme.md b/uni_modules/uni-collapse/readme.md new file mode 100644 index 0000000..bc758eb --- /dev/null +++ b/uni_modules/uni-collapse/readme.md @@ -0,0 +1,12 @@ + + +## Collapse 折叠面板 +> **组件名:uni-collapse** +> 代码块: `uCollapse` +> 关联组件:`uni-collapse-item`、`uni-icons`。 + + +折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-combox/changelog.md b/uni_modules/uni-combox/changelog.md new file mode 100644 index 0000000..23c2748 --- /dev/null +++ b/uni_modules/uni-combox/changelog.md @@ -0,0 +1,15 @@ +## 1.0.1(2021-11-23) +- 优化 label、label-width 属性 +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox) +## 0.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.6(2021-05-12) +- 新增 组件示例地址 +## 0.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 0.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue new file mode 100644 index 0000000..d4cb79d --- /dev/null +++ b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/uni_modules/uni-combox/package.json b/uni_modules/uni-combox/package.json new file mode 100644 index 0000000..4a05c3f --- /dev/null +++ b/uni_modules/uni-combox/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-combox", + "displayName": "uni-combox 组合框", + "version": "1.0.1", + "description": "可以选择也可以输入的表单项 ", + "keywords": [ + "uni-ui", + "uniui", + "combox", + "组合框", + "select" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-combox/readme.md b/uni_modules/uni-combox/readme.md new file mode 100644 index 0000000..ffa2cc8 --- /dev/null +++ b/uni_modules/uni-combox/readme.md @@ -0,0 +1,11 @@ + + +## Combox 组合框 +> **组件名:uni-combox** +> 代码块: `uCombox` + + +组合框组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-countdown/changelog.md b/uni_modules/uni-countdown/changelog.md new file mode 100644 index 0000000..16fc324 --- /dev/null +++ b/uni_modules/uni-countdown/changelog.md @@ -0,0 +1,26 @@ +## 1.2.3(2024-02-20) +- 新增 支持控制小时,分钟的显隐:showHour showMinute +## 1.2.2(2022-01-19) +- 修复 在微信小程序中样式不生效的bug +## 1.2.1(2022-01-18) +- 新增 update 方法 ,在动态更新时间后,刷新组件 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown) +## 1.1.3(2021-10-18) +- 重构 +- 新增 font-size 支持自定义字体大小 +## 1.1.2(2021-08-24) +- 新增 支持国际化 +## 1.1.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-06-18) +- 修复 uni-countdown 重复赋值跳两秒的 bug +## 1.0.4(2021-05-12) +- 新增 组件示例地址 +## 1.0.3(2021-05-08) +- 修复 uni-countdown 不能控制倒计时的 bug +## 1.0.2(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json new file mode 100644 index 0000000..06309cb --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "day", + "uni-countdown.h": "h", + "uni-countdown.m": "m", + "uni-countdown.s": "s" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json new file mode 100644 index 0000000..358cdd1 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "时", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json new file mode 100644 index 0000000..e5a63de --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "時", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue new file mode 100644 index 0000000..1e28dda --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue @@ -0,0 +1,281 @@ + + + diff --git a/uni_modules/uni-countdown/package.json b/uni_modules/uni-countdown/package.json new file mode 100644 index 0000000..6622074 --- /dev/null +++ b/uni_modules/uni-countdown/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-countdown", + "displayName": "uni-countdown 倒计时", + "version": "1.2.3", + "description": "CountDown 倒计时组件", + "keywords": [ + "uni-ui", + "uniui", + "countdown", + "倒计时" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-countdown/readme.md b/uni_modules/uni-countdown/readme.md new file mode 100644 index 0000000..4bcb1aa --- /dev/null +++ b/uni_modules/uni-countdown/readme.md @@ -0,0 +1,10 @@ + + +## CountDown 倒计时 +> **组件名:uni-countdown** +> 代码块: `uCountDown` + +倒计时组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-checkbox/changelog.md b/uni_modules/uni-data-checkbox/changelog.md new file mode 100644 index 0000000..b475fcb --- /dev/null +++ b/uni_modules/uni-data-checkbox/changelog.md @@ -0,0 +1,49 @@ +## 1.0.5(2024-03-20) +- 修复 单选模式下选中样式不生效的bug +## 1.0.4(2024-01-27) +- 修复 修复错别字chagne为change +## 1.0.3(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.2(2022-06-30) +- 优化 在 uni-forms 中的依赖注入方式 +## 1.0.1(2022-02-07) +- 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-checkbox](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +## 0.2.5(2021-08-23) +- 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +## 0.2.4(2021-08-17) +- 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +## 0.2.3(2021-08-11) +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +## 0.2.2(2021-07-30) +- 优化 在uni-forms组件,与label不对齐的问题 +## 0.2.1(2021-07-27) +- 修复 单选默认值为0不能选中的Bug +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.11(2021-07-06) +- 优化 删除无用日志 +## 0.1.10(2021-07-05) +- 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +## 0.1.9(2021-07-05) +- 修复 nvue 黑框样式问题 +## 0.1.8(2021-06-28) +- 修复 selectedTextColor 属性不生效的Bug +## 0.1.7(2021-06-02) +- 新增 map 属性,可以方便映射text/value属性 +## 0.1.6(2021-05-26) +- 修复 不关联服务空间的情况下组件报错的Bug +## 0.1.5(2021-05-12) +- 新增 组件示例地址 +## 0.1.4(2021-04-09) +- 修复 nvue 下无法选中的问题 +## 0.1.3(2021-03-22) +- 新增 disabled属性 +## 0.1.2(2021-02-24) +- 优化 默认颜色显示 +## 0.1.1(2021-02-24) +- 新增 支持nvue +## 0.1.0(2021-02-18) +- “暂无数据”显示居中 diff --git a/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue new file mode 100644 index 0000000..81d3f07 --- /dev/null +++ b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue @@ -0,0 +1,849 @@ + + + + + diff --git a/uni_modules/uni-data-checkbox/package.json b/uni_modules/uni-data-checkbox/package.json new file mode 100644 index 0000000..fc15e8b --- /dev/null +++ b/uni_modules/uni-data-checkbox/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-data-checkbox", + "displayName": "uni-data-checkbox 数据选择器", + "version": "1.0.5", + "description": "通过数据驱动的单选框和复选框", + "keywords": [ + "uni-ui", + "checkbox", + "单选", + "多选", + "单选多选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more","uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-checkbox/readme.md b/uni_modules/uni-data-checkbox/readme.md new file mode 100644 index 0000000..6eb253d --- /dev/null +++ b/uni_modules/uni-data-checkbox/readme.md @@ -0,0 +1,18 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能 +2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验 +3. 本组件合并了单选多选 +4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性 + +在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-picker/changelog.md b/uni_modules/uni-data-picker/changelog.md new file mode 100644 index 0000000..8aaad24 --- /dev/null +++ b/uni_modules/uni-data-picker/changelog.md @@ -0,0 +1,77 @@ +## 2.0.0(2023-12-14) +- 新增 支持 uni-app-x +## 1.1.2(2023-04-11) +- 修复 更改 modelValue 报错的 bug +- 修复 v-for 未使用 key 值控制台 warning +## 1.1.1(2023-02-21) +- 修复代码合并时引发 value 属性为空时不渲染数据的问题 +## 1.1.0(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.9(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.8(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.7(2022-07-06) +- 优化 pc端图标位置不正确的问题 +## 1.0.6(2022-07-05) +- 优化 显示样式 +## 1.0.5(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.0.4(2022-04-19) +- 修复 字节小程序 本地数据无法选择下一级的Bug +## 1.0.3(2022-02-25) +- 修复 nvue 不支持的 v-show 的 bug +## 1.0.2(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.0.1(2021-11-23) +- 修复 由上个版本引发的map、v-model等属性不生效的bug +## 1.0.0(2021-11-19) +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-picker](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +## 0.4.9(2021-10-28) +- 修复 VUE2 v-model 概率无效的 bug +## 0.4.8(2021-10-27) +- 修复 v-model 概率无效的 bug +## 0.4.7(2021-10-25) +- 新增 属性 spaceInfo 服务空间配置 HBuilderX 3.2.11+ +- 修复 树型 uniCloud 数据类型为 int 时报错的 bug +## 0.4.6(2021-10-19) +- 修复 非 VUE3 v-model 为 0 时无法选中的 bug +## 0.4.5(2021-09-26) +- 新增 清除已选项的功能(通过 clearIcon 属性配置是否显示按钮),同时提供 clear 方法以供调用,二者等效 +- 修复 readonly 为 true 时报错的 bug +## 0.4.4(2021-09-26) +- 修复 上一版本造成的 map 属性失效的 bug +- 新增 ellipsis 属性,支持配置 tab 选项长度过长时是否自动省略 +## 0.4.3(2021-09-24) +- 修复 某些情况下级联未触发的 bug +## 0.4.2(2021-09-23) +- 新增 提供 show 和 hide 方法,开发者可以通过 ref 调用 +- 新增 选项内容过长自动添加省略号 +## 0.4.1(2021-09-15) +- 新增 map 属性 字段映射,将 text/value 映射到数据中的其他字段 +## 0.4.0(2021-07-13) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.3.5(2021-06-04) +- 修复 无法加载云端数据的问题 +## 0.3.4(2021-05-28) +- 修复 v-model 无效问题 +- 修复 loaddata 为空数据组时加载时间过长问题 +- 修复 上个版本引出的本地数据无法选择带有 children 的 2 级节点 +## 0.3.3(2021-05-12) +- 新增 组件示例地址 +## 0.3.2(2021-04-22) +- 修复 非树形数据有 where 属性查询报错的问题 +## 0.3.1(2021-04-15) +- 修复 本地数据概率无法回显时问题 +## 0.3.0(2021-04-07) +- 新增 支持云端非树形表结构数据 +- 修复 根节点 parent_field 字段等于 null 时选择界面错乱问题 +## 0.2.0(2021-03-15) +- 修复 nodeclick、popupopened、popupclosed 事件无法触发的问题 +## 0.1.9(2021-03-09) +- 修复 微信小程序某些情况下无法选择的问题 +## 0.1.8(2021-02-05) +- 优化 部分样式在 nvue 上的兼容表现 +## 0.1.7(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.uvue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.uvue new file mode 100644 index 0000000..82031e1 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.uvue @@ -0,0 +1,380 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue new file mode 100644 index 0000000..179a4e0 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue @@ -0,0 +1,551 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/loading.uts b/uni_modules/uni-data-picker/components/uni-data-pickerview/loading.uts new file mode 100644 index 0000000..baa0dff --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/loading.uts @@ -0,0 +1 @@ +export const imgbase : string = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzlBMzU3OTlEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzlBMzU3OUFEOUM0MTFFOUI0NTZDNERBQURBQzI4RkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDOUEzNTc5N0Q5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDOUEzNTc5OEQ5QzQxMUU5QjQ1NkM0REFBREFDMjhGRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pt+ALSwAAA6CSURBVHja1FsLkFZV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' \ No newline at end of file diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js new file mode 100644 index 0000000..cfae22a --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js @@ -0,0 +1,622 @@ +export default { + props: { + localdata: { + type: [Array, Object], + default () { + return [] + } + }, + spaceInfo: { + type: Object, + default () { + return {} + } + }, + collection: { + type: String, + default: '' + }, + action: { + type: String, + default: '' + }, + field: { + type: String, + default: '' + }, + orderby: { + type: String, + default: '' + }, + where: { + type: [String, Object], + default: '' + }, + pageData: { + type: String, + default: 'add' + }, + pageCurrent: { + type: Number, + default: 1 + }, + pageSize: { + type: Number, + default: 500 + }, + getcount: { + type: [Boolean, String], + default: false + }, + getone: { + type: [Boolean, String], + default: false + }, + gettree: { + type: [Boolean, String], + default: false + }, + manual: { + type: Boolean, + default: false + }, + value: { + type: [Array, String, Number], + default () { + return [] + } + }, + modelValue: { + type: [Array, String, Number], + default () { + return [] + } + }, + preload: { + type: Boolean, + default: false + }, + stepSearh: { + type: Boolean, + default: true + }, + selfField: { + type: String, + default: '' + }, + parentField: { + type: String, + default: '' + }, + multiple: { + type: Boolean, + default: false + }, + map: { + type: Object, + default () { + return { + text: "text", + value: "value" + } + } + } + }, + data() { + return { + loading: false, + errorMessage: '', + loadMore: { + contentdown: '', + contentrefresh: '', + contentnomore: '' + }, + dataList: [], + selected: [], + selectedIndex: 0, + page: { + current: this.pageCurrent, + size: this.pageSize, + count: 0 + } + } + }, + computed: { + isLocalData() { + return !this.collection.length; + }, + isCloudData() { + return this.collection.length > 0; + }, + isCloudDataList() { + return (this.isCloudData && (!this.parentField && !this.selfField)); + }, + isCloudDataTree() { + return (this.isCloudData && this.parentField && this.selfField); + }, + dataValue() { + let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || + this.modelValue !== undefined); + return isModelValue ? this.modelValue : this.value; + }, + hasValue() { + if (typeof this.dataValue === 'number') { + return true + } + return (this.dataValue != null) && (this.dataValue.length > 0) + } + }, + created() { + this.$watch(() => { + var al = []; + ['pageCurrent', + 'pageSize', + 'spaceInfo', + 'value', + 'modelValue', + 'localdata', + 'collection', + 'action', + 'field', + 'orderby', + 'where', + 'getont', + 'getcount', + 'gettree' + ].forEach(key => { + al.push(this[key]) + }); + return al + }, (newValue, oldValue) => { + let needReset = false + for (let i = 2; i < newValue.length; i++) { + if (newValue[i] != oldValue[i]) { + needReset = true + break + } + } + if (newValue[0] != oldValue[0]) { + this.page.current = this.pageCurrent + } + this.page.size = this.pageSize + + this.onPropsChange() + }) + this._treeData = [] + }, + methods: { + onPropsChange() { + this._treeData = []; + }, + + // 填充 pickview 数据 + async loadData() { + if (this.isLocalData) { + this.loadLocalData(); + } else if (this.isCloudDataList) { + this.loadCloudDataList(); + } else if (this.isCloudDataTree) { + this.loadCloudDataTree(); + } + }, + + // 加载本地数据 + async loadLocalData() { + this._treeData = []; + this._extractTree(this.localdata, this._treeData); + + let inputValue = this.dataValue; + if (inputValue === undefined) { + return; + } + + if (Array.isArray(inputValue)) { + inputValue = inputValue[inputValue.length - 1]; + if (typeof inputValue === 'object' && inputValue[this.map.value]) { + inputValue = inputValue[this.map.value]; + } + } + + this.selected = this._findNodePath(inputValue, this.localdata); + }, + + // 加载 Cloud 数据 (单列) + async loadCloudDataList() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let response = await this.getCommand(); + let responseData = response.result.data; + + this._treeData = responseData; + + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (树形) + async loadCloudDataTree() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataTreeWhere() + }; + if (this.gettree) { + commandOptions.startwith = `${this.selfField}=='${this.dataValue}'`; + } + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + this._treeData = responseData; + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (节点) + async loadCloudDataNode(callback) { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataNodeWhere() + }; + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + callback(responseData); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 回显 Cloud 数据 + getCloudDataValue() { + if (this.isCloudDataList) { + return this.getCloudDataListValue(); + } + + if (this.isCloudDataTree) { + return this.getCloudDataTreeValue(); + } + }, + + // 回显 Cloud 数据 (单列) + getCloudDataListValue() { + // 根据 field's as value标识匹配 where 条件 + let where = []; + let whereField = this._getForeignKeyByField(); + if (whereField) { + where.push(`${whereField} == '${this.dataValue}'`) + } + + where = where.join(' || '); + + if (this.where) { + where = `(${this.where}) && (${where})` + } + + return this.getCommand({ + field: this._cloudDataPostField(), + where + }).then((res) => { + this.selected = res.result.data; + return res.result.data; + }); + }, + + // 回显 Cloud 数据 (树形) + getCloudDataTreeValue() { + return this.getCommand({ + field: this._cloudDataPostField(), + getTreePath: { + startWith: `${this.selfField}=='${this.dataValue}'` + } + }).then((res) => { + let treePath = []; + this._extractTreePath(res.result.data, treePath); + this.selected = treePath; + return treePath; + }); + }, + + getCommand(options = {}) { + /* eslint-disable no-undef */ + let db = uniCloud.database(this.spaceInfo) + + const action = options.action || this.action + if (action) { + db = db.action(action) + } + + const collection = options.collection || this.collection + db = db.collection(collection) + + const where = options.where || this.where + if (!(!where || !Object.keys(where).length)) { + db = db.where(where) + } + + const field = options.field || this.field + if (field) { + db = db.field(field) + } + + const orderby = options.orderby || this.orderby + if (orderby) { + db = db.orderBy(orderby) + } + + const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current + const size = options.pageSize !== undefined ? options.pageSize : this.page.size + const getCount = options.getcount !== undefined ? options.getcount : this.getcount + const getTree = options.gettree !== undefined ? options.gettree : this.gettree + + const getOptions = { + getCount, + getTree + } + if (options.getTreePath) { + getOptions.getTreePath = options.getTreePath + } + + db = db.skip(size * (current - 1)).limit(size).get(getOptions) + + return db + }, + + _cloudDataPostField() { + let fields = [this.field]; + if (this.parentField) { + fields.push(`${this.parentField} as parent_value`); + } + return fields.join(','); + }, + + _cloudDataTreeWhere() { + let result = [] + let selected = this.selected + let parentField = this.parentField + if (parentField) { + result.push(`${parentField} == null || ${parentField} == ""`) + } + if (selected.length) { + for (var i = 0; i < selected.length - 1; i++) { + result.push(`${parentField} == '${selected[i].value}'`) + } + } + + let where = [] + if (this.where) { + where.push(`(${this.where})`) + } + + if (result.length) { + where.push(`(${result.join(' || ')})`) + } + + return where.join(' && ') + }, + + _cloudDataNodeWhere() { + let where = [] + let selected = this.selected; + if (selected.length) { + where.push(`${this.parentField} == '${selected[selected.length - 1].value}'`); + } + + where = where.join(' || '); + + if (this.where) { + return `(${this.where}) && (${where})` + } + + return where + }, + + _getWhereByForeignKey() { + let result = [] + let whereField = this._getForeignKeyByField(); + if (whereField) { + result.push(`${whereField} == '${this.dataValue}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + + _getForeignKeyByField() { + let fields = this.field.split(','); + let whereField = null; + for (let i = 0; i < fields.length; i++) { + const items = fields[i].split('as'); + if (items.length < 2) { + continue; + } + if (items[1].trim() === 'value') { + whereField = items[0].trim(); + break; + } + } + return whereField; + }, + + _updateBindData(node) { + const { + dataList, + hasNodes + } = this._filterData(this._treeData, this.selected) + + let isleaf = this._stepSearh === false && !hasNodes + + if (node) { + node.isleaf = isleaf + } + + this.dataList = dataList + this.selectedIndex = dataList.length - 1 + + if (!isleaf && this.selected.length < dataList.length) { + this.selected.push({ + value: null, + text: "请选择" + }) + } + + return { + isleaf, + hasNodes + } + }, + + _updateSelected() { + let dl = this.dataList + let sl = this.selected + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < sl.length; i++) { + let value = sl[i].value + let dl2 = dl[i] + for (let j = 0; j < dl2.length; j++) { + let item2 = dl2[j] + if (item2[valueField] === value) { + sl[i].text = item2[textField] + break + } + } + } + }, + + _filterData(data, paths) { + let dataList = [] + let hasNodes = true + + dataList.push(data.filter((item) => { + return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '') + })) + for (let i = 0; i < paths.length; i++) { + let value = paths[i].value + let nodes = data.filter((item) => { + return item.parent_value === value + }) + + if (nodes.length) { + dataList.push(nodes) + } else { + hasNodes = false + } + } + + return { + dataList, + hasNodes + } + }, + + _extractTree(nodes, result, parent_value) { + let list = result || [] + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + if (parent_value !== null && parent_value !== undefined && parent_value !== '') { + child.parent_value = parent_value + } + result.push(child) + + let children = node.children + if (children) { + this._extractTree(children, result, node[valueField]) + } + } + }, + + _extractTreePath(nodes, result) { + let list = result || [] + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + result.push(child) + + let children = node.children + if (children) { + this._extractTreePath(children, result) + } + } + }, + + _findNodePath(key, nodes, path = []) { + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + let children = node.children + let text = node[textField] + let value = node[valueField] + + path.push({ + value, + text + }) + + if (value === key) { + return path + } + + if (children) { + const p = this._findNodePath(key, children, path) + if (p.length) { + return p + } + } + + path.pop() + } + return [] + } + } +} diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.uts b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.uts new file mode 100644 index 0000000..372795d --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.uts @@ -0,0 +1,693 @@ +export type PaginationType = { + current : number, + size : number, + count : number +} + +export type LoadMoreType = { + contentdown : string, + contentrefresh : string, + contentnomore : string +} + +export type SelectedItemType = { + name : string, + value : string, +} + +export type GetCommandOptions = { + collection ?: UTSJSONObject, + field ?: string, + orderby ?: string, + where ?: any, + pageData ?: string, + pageCurrent ?: number, + pageSize ?: number, + getCount ?: boolean, + getTree ?: any, + getTreePath ?: UTSJSONObject, + startwith ?: string, + limitlevel ?: number, + groupby ?: string, + groupField ?: string, + distinct ?: boolean, + pageIndistinct ?: boolean, + foreignKey ?: string, + loadtime ?: string, + manual ?: boolean +} + +const DefaultSelectedNode = { + text: '请选择', + value: '' +} + +export const dataPicker = defineMixin({ + props: { + localdata: { + type: Array as PropType>, + default: [] as Array + }, + collection: { + type: Object, + default: '' + }, + field: { + type: String, + default: '' + }, + orderby: { + type: String, + default: '' + }, + where: { + type: Object, + default: '' + }, + pageData: { + type: String, + default: 'add' + }, + pageCurrent: { + type: Number, + default: 1 + }, + pageSize: { + type: Number, + default: 20 + }, + getcount: { + type: Boolean, + default: false + }, + gettree: { + type: Object, + default: '' + }, + gettreepath: { + type: Object, + default: '' + }, + startwith: { + type: String, + default: '' + }, + limitlevel: { + type: Number, + default: 10 + }, + groupby: { + type: String, + default: '' + }, + groupField: { + type: String, + default: '' + }, + distinct: { + type: Boolean, + default: false + }, + pageIndistinct: { + type: Boolean, + default: false + }, + foreignKey: { + type: String, + default: '' + }, + loadtime: { + type: String, + default: 'auto' + }, + manual: { + type: Boolean, + default: false + }, + preload: { + type: Boolean, + default: false + }, + stepSearh: { + type: Boolean, + default: true + }, + selfField: { + type: String, + default: '' + }, + parentField: { + type: String, + default: '' + }, + multiple: { + type: Boolean, + default: false + }, + value: { + type: Object, + default: '' + }, + modelValue: { + type: Object, + default: '' + }, + defaultProps: { + type: Object as PropType, + } + }, + data() { + return { + loading: false, + error: null as UniCloudError | null, + treeData: [] as Array, + selectedIndex: 0, + selectedNodes: [] as Array, + selectedPages: [] as Array[], + selectedValue: '', + selectedPaths: [] as Array, + pagination: { + current: 1, + size: 20, + count: 0 + } as PaginationType + } + }, + computed: { + mappingTextName() : string { + // TODO + return (this.defaultProps != null) ? this.defaultProps!.getString('text', 'text') : 'text' + }, + mappingValueName() : string { + // TODO + return (this.defaultProps != null) ? this.defaultProps!.getString('value', 'value') : 'value' + }, + currentDataList() : Array { + if (this.selectedIndex > this.selectedPages.length - 1) { + return [] as Array + } + return this.selectedPages[this.selectedIndex] + }, + isLocalData() : boolean { + return this.localdata.length > 0 + }, + isCloudData() : boolean { + return this._checkIsNotNull(this.collection) + }, + isCloudDataList() : boolean { + return (this.isCloudData && (this.parentField.length == 0 && this.selfField.length == 0)) + }, + isCloudDataTree() : boolean { + return (this.isCloudData && this.parentField.length > 0 && this.selfField.length > 0) + }, + dataValue() : any { + return this.hasModelValue ? this.modelValue : this.value + }, + hasCloudTreeData() : boolean { + return this.treeData.length > 0 + }, + hasModelValue() : boolean { + if (typeof this.modelValue == 'string') { + const valueString = this.modelValue as string + return (valueString.length > 0) + } else if (Array.isArray(this.modelValue)) { + const valueArray = this.modelValue as Array + return (valueArray.length > 0) + } + return false + }, + hasCloudDataValue() : boolean { + if (typeof this.dataValue == 'string') { + const valueString = this.dataValue as string + return (valueString.length > 0) + } + return false + } + }, + created() { + this.pagination.current = this.pageCurrent + this.pagination.size = this.pageSize + + this.$watch( + () : any => [ + this.pageCurrent, + this.pageSize, + this.localdata, + this.value, + this.collection, + this.field, + this.getcount, + this.orderby, + this.where, + this.groupby, + this.groupField, + this.distinct + ], + (newValue : Array, oldValue : Array) => { + this.pagination.size = this.pageSize + if (newValue[0] !== oldValue[0]) { + this.pagination.current = this.pageCurrent + } + + this.onPropsChange() + } + ) + }, + methods: { + onPropsChange() { + this.selectedIndex = 0 + this.treeData.length = 0 + this.selectedNodes.length = 0 + this.selectedPages.length = 0 + this.selectedPaths.length = 0 + + // 加载数据 + this.$nextTick(() => { + this.loadData() + }) + }, + + onTabSelect(index : number) { + this.selectedIndex = index + }, + + onNodeClick(nodeData : UTSJSONObject) { + if (nodeData.getBoolean('disable', false)) { + return + } + + const isLeaf = this._checkIsLeafNode(nodeData) + + this._trimSelectedNodes(nodeData) + + this.$emit('nodeclick', nodeData) + + if (this.isLocalData) { + if (isLeaf || !this._checkHasChildren(nodeData)) { + this.onFinish() + } + } else if (this.isCloudDataList) { + this.onFinish() + } else if (this.isCloudDataTree) { + if (isLeaf) { + this.onFinish() + } else if (!this._checkHasChildren(nodeData)) { + // 尝试请求一次,如果没有返回数据标记为叶子节点 + this.loadCloudDataNode(nodeData) + } + } + }, + + getChangeNodes(): Array { + const nodes: Array = [] + this.selectedNodes.forEach((node : UTSJSONObject) => { + const newNode: UTSJSONObject = {} + newNode[this.mappingTextName] = node.getString(this.mappingTextName) + newNode[this.mappingValueName] = node.getString(this.mappingValueName) + nodes.push(newNode) + }) + return nodes + }, + + onFinish() { }, + + // 加载数据(自动判定环境) + loadData() { + if (this.isLocalData) { + this.loadLocalData() + } else if (this.isCloudDataList) { + this.loadCloudDataList() + } else if (this.isCloudDataTree) { + this.loadCloudDataTree() + } + }, + + // 加载本地数据 + loadLocalData() { + this.treeData = this.localdata + if (Array.isArray(this.dataValue)) { + const value = this.dataValue as Array + this.selectedPaths = value.slice(0) + this._pushSelectedTreeNodes(value, this.localdata) + } else { + this._pushSelectedNodes(this.localdata) + } + }, + + // 加载 Cloud 数据 (单列) + loadCloudDataList() { + this._loadCloudData(null, (data : Array) => { + this.treeData = data + this._pushSelectedNodes(data) + }) + }, + + // 加载 Cloud 数据 (树形) + loadCloudDataTree() { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataTreeWhere(), + getTree: true + } as GetCommandOptions + if (this._checkIsNotNull(this.gettree)) { + commandOptions.startwith = `${this.selfField}=='${this.dataValue as string}'` + } + this._loadCloudData(commandOptions, (data : Array) => { + this.treeData = data + if (this.selectedPaths.length > 0) { + this._pushSelectedTreeNodes(this.selectedPaths, data) + } else { + this._pushSelectedNodes(data) + } + }) + }, + + // 加载 Cloud 数据 (节点) + loadCloudDataNode(nodeData : UTSJSONObject) { + const commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataNodeWhere() + } as GetCommandOptions + this._loadCloudData(commandOptions, (data : Array) => { + nodeData['children'] = data + if (data.length == 0) { + nodeData['isleaf'] = true + this.onFinish() + } else { + this._pushSelectedNodes(data) + } + }) + }, + + // 回显 Cloud Tree Path + loadCloudDataPath() { + if (!this.hasCloudDataValue) { + return + } + + const command : GetCommandOptions = {} + + // 单列 + if (this.isCloudDataList) { + // 根据 field's as value标识匹配 where 条件 + let where : Array = []; + let whereField = this._getForeignKeyByField(); + if (whereField.length > 0) { + where.push(`${whereField} == '${this.dataValue as string}'`) + } + + let whereString = where.join(' || ') + if (this._checkIsNotNull(this.where)) { + whereString = `(${this.where}) && (${whereString})` + } + + command.field = this._cloudDataPostField() + command.where = whereString + } + + // 树形 + if (this.isCloudDataTree) { + command.field = this._cloudDataPostField() + command.getTreePath = { + startWith: `${this.selfField}=='${this.dataValue as string}'` + } + } + + this._loadCloudData(command, (data : Array) => { + this._extractTreePath(data, this.selectedPaths) + }) + }, + + _loadCloudData(options ?: GetCommandOptions, callback ?: ((data : Array) => void)) { + if (this.loading) { + return + } + this.loading = true + + this.error = null + + this._getCommand(options).then((response : UniCloudDBGetResult) => { + callback?.(response.data) + }).catch((err : any | null) => { + this.error = err as UniCloudError + }).finally(() => { + this.loading = false + }) + }, + + _cloudDataPostField() : string { + let fields = [this.field]; + if (this.parentField.length > 0) { + fields.push(`${this.parentField} as parent_value`) + } + return fields.join(',') + }, + + _cloudDataTreeWhere() : string { + let result : Array = [] + let selectedNodes = this.selectedNodes.length > 0 ? this.selectedNodes : this.selectedPaths + let parentField = this.parentField + if (parentField.length > 0) { + result.push(`${parentField} == null || ${parentField} == ""`) + } + if (selectedNodes.length > 0) { + for (var i = 0; i < selectedNodes.length - 1; i++) { + const parentFieldValue = selectedNodes[i].getString('value', '') + result.push(`${parentField} == '${parentFieldValue}'`) + } + } + + let where : Array = [] + if (this._checkIsNotNull(this.where)) { + where.push(`(${this.where as string})`) + } + + if (result.length > 0) { + where.push(`(${result.join(' || ')})`) + } + + return where.join(' && ') + }, + + _cloudDataNodeWhere() : string { + const where : Array = [] + if (this.selectedNodes.length > 0) { + const value = this.selectedNodes[this.selectedNodes.length - 1].getString('value', '') + where.push(`${this.parentField} == '${value}'`) + } + + let whereString = where.join(' || ') + if (this._checkIsNotNull(this.where)) { + return `(${this.where as string}) && (${whereString})` + } + + return whereString + }, + + _getWhereByForeignKey() : string { + let result : Array = [] + let whereField = this._getForeignKeyByField(); + if (whereField.length > 0) { + result.push(`${whereField} == '${this.dataValue as string}'`) + } + + if (this._checkIsNotNull(this.where)) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + + _getForeignKeyByField() : string { + const fields = this.field.split(',') + let whereField = '' + for (let i = 0; i < fields.length; i++) { + const items = fields[i].split('as') + if (items.length < 2) { + continue + } + if (items[1].trim() === 'value') { + whereField = items[0].trim() + break + } + } + return whereField + }, + + _getCommand(options ?: GetCommandOptions) : Promise { + let db = uniCloud.databaseForJQL() + + let collection = Array.isArray(this.collection) ? db.collection(...(this.collection as Array)) : db.collection(this.collection) + + let filter : UniCloudDBFilter | null = null + if (this.foreignKey.length > 0) { + filter = collection.foreignKey(this.foreignKey) + } + + const where : any = options?.where ?? this.where + if (typeof where == 'string') { + const whereString = where as string + if (whereString.length > 0) { + filter = (filter != null) ? filter.where(where) : collection.where(where) + } + } else { + filter = (filter != null) ? filter.where(where) : collection.where(where) + } + + let query : UniCloudDBQuery | null = null + if (this.field.length > 0) { + query = (filter != null) ? filter.field(this.field) : collection.field(this.field) + } + if (this.groupby.length > 0) { + if (query != null) { + query = query.groupBy(this.groupby) + } else if (filter != null) { + query = filter.groupBy(this.groupby) + } + } + if (this.groupField.length > 0) { + if (query != null) { + query = query.groupField(this.groupField) + } else if (filter != null) { + query = filter.groupField(this.groupField) + } + } + if (this.distinct == true) { + if (query != null) { + query = query.distinct(this.field) + } else if (filter != null) { + query = filter.distinct(this.field) + } + } + if (this.orderby.length > 0) { + if (query != null) { + query = query.orderBy(this.orderby) + } else if (filter != null) { + query = filter.orderBy(this.orderby) + } + } + + const size = this.pagination.size + const current = this.pagination.current + if (query != null) { + query = query.skip(size * (current - 1)).limit(size) + } else if (filter != null) { + query = filter.skip(size * (current - 1)).limit(size) + } else { + query = collection.skip(size * (current - 1)).limit(size) + } + + const getOptions = {} + const treeOptions = { + limitLevel: this.limitlevel, + startWith: this.startwith + } + if (this.getcount == true) { + getOptions['getCount'] = this.getcount + } + + const getTree : any = options?.getTree ?? this.gettree + if (typeof getTree == 'string') { + const getTreeString = getTree as string + if (getTreeString.length > 0) { + getOptions['getTree'] = treeOptions + } + } else if (typeof getTree == 'object') { + getOptions['getTree'] = treeOptions + } else { + getOptions['getTree'] = getTree + } + + const getTreePath = options?.getTreePath ?? this.gettreepath + if (typeof getTreePath == 'string') { + const getTreePathString = getTreePath as string + if (getTreePathString.length > 0) { + getOptions['getTreePath'] = getTreePath + } + } else { + getOptions['getTreePath'] = getTreePath + } + + return query.get(getOptions) + }, + + _checkIsNotNull(value : any) : boolean { + if (typeof value == 'string') { + const valueString = value as string + return (valueString.length > 0) + } else if (value instanceof UTSJSONObject) { + return true + } + return false + }, + + _checkIsLeafNode(nodeData : UTSJSONObject) : boolean { + if (this.selectedIndex >= this.limitlevel) { + return true + } + + if (nodeData.getBoolean('isleaf', false)) { + return true + } + + return false + }, + + _checkHasChildren(nodeData : UTSJSONObject) : boolean { + const children = nodeData.getArray('children') ?? ([] as Array) + return children.length > 0 + }, + + _pushSelectedNodes(nodes : Array) { + this.selectedNodes.push(DefaultSelectedNode) + this.selectedPages.push(nodes) + this.selectedIndex = this.selectedPages.length - 1 + }, + + _trimSelectedNodes(nodeData : UTSJSONObject) { + this.selectedNodes.splice(this.selectedIndex) + this.selectedNodes.push(nodeData) + + if (this.selectedPages.length > 0) { + this.selectedPages.splice(this.selectedIndex + 1) + } + + const children = nodeData.getArray('children') ?? ([] as Array) + if (children.length > 0) { + this.selectedNodes.push(DefaultSelectedNode) + this.selectedPages.push(children) + } + + this.selectedIndex = this.selectedPages.length - 1 + }, + + _pushSelectedTreeNodes(paths : Array, nodes : Array) { + let children : Array = nodes + paths.forEach((node : UTSJSONObject) => { + const findNode = children.find((item : UTSJSONObject) : boolean => { + return (item.getString(this.mappingValueName) == node.getString(this.mappingValueName)) + }) + if (findNode != null) { + this.selectedPages.push(children) + this.selectedNodes.push(node) + children = findNode.getArray('children') ?? ([] as Array) + } + }) + this.selectedIndex = this.selectedPages.length - 1 + }, + + _extractTreePath(nodes : Array, result : Array) { + if (nodes.length == 0) { + return + } + + const node = nodes[0] + result.push(node) + + const children = node.getArray('children') + if (Array.isArray(children) && children!.length > 0) { + this._extractTreePath(children, result) + } + } + } +}) diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.css b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.css new file mode 100644 index 0000000..39fe1c3 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.css @@ -0,0 +1,76 @@ +.uni-data-pickerview { + position: relative; + flex-direction: column; + overflow: hidden; +} + +.loading-cover { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + align-items: center; + justify-content: center; + background-color: rgba(150, 150, 150, .1); +} + +.error { + background-color: #fff; + padding: 15px; +} + +.error-text { + color: #DD524D; +} + +.selected-node-list { + flex-direction: row; + flex-wrap: nowrap; +} + +.selected-node-item { + margin-left: 10px; + margin-right: 10px; + padding: 8px 10px 8px 10px; + border-bottom: 2px solid transparent; +} + +.selected-node-item-active { + color: #007aff; + border-bottom-color: #007aff; +} + +.list-view { + flex: 1; +} + +.list-item { + flex-direction: row; + justify-content: space-between; + padding: 12px 15px; + border-bottom: 1px solid #f0f0f0; +} + +.item-text { + color: #333333; +} + +.item-text-disabled { + opacity: .5; +} + +.item-text-overflow { + overflow: hidden; +} + +.check { + margin-right: 5px; + border: 2px solid #007aff; + border-left: 0; + border-top: 0; + height: 12px; + width: 6px; + transform-origin: center; + transform: rotate(45deg); +} diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.uvue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.uvue new file mode 100644 index 0000000..f4780f3 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.uvue @@ -0,0 +1,69 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue new file mode 100644 index 0000000..6ebced9 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/uni_modules/uni-data-picker/package.json b/uni_modules/uni-data-picker/package.json new file mode 100644 index 0000000..a508162 --- /dev/null +++ b/uni_modules/uni-data-picker/package.json @@ -0,0 +1,91 @@ +{ + "id": "uni-data-picker", + "displayName": "uni-data-picker 数据驱动的picker选择器", + "version": "2.0.0", + "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景", + "keywords": [ + "uni-ui", + "uniui", + "picker", + "级联", + "省市区", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-load-more", + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y", + "app-uvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-picker/readme.md b/uni_modules/uni-data-picker/readme.md new file mode 100644 index 0000000..19dd0e8 --- /dev/null +++ b/uni_modules/uni-data-picker/readme.md @@ -0,0 +1,22 @@ +## DataPicker 级联选择 +> **组件名:uni-data-picker** +> 代码块: `uDataPicker` +> 关联组件:`uni-data-pickerview`、`uni-load-more`。 + + +`` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。 + +支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 + +候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。 + +`` 组件尤其适用于地址选择、分类选择等选择类。 + +`` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。 + +`` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。 + +在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-select/changelog.md b/uni_modules/uni-data-select/changelog.md new file mode 100644 index 0000000..016e3d2 --- /dev/null +++ b/uni_modules/uni-data-select/changelog.md @@ -0,0 +1,39 @@ +## 1.0.8(2024-03-28) +- 修复 在vue2下:style动态绑定导致编译失败的bug +## 1.0.7(2024-01-20) +- 修复 长文本回显超过容器的bug,超过容器部分显示省略号 +## 1.0.6(2023-04-12) +- 修复 微信小程序点击时会改变背景颜色的 bug +## 1.0.5(2023-02-03) +- 修复 禁用时会显示清空按钮 +## 1.0.4(2023-02-02) +- 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +## 1.0.3(2023-01-16) +- 修复 不关联服务空间报错的问题 +## 1.0.2(2023-01-14) +- 新增 属性 `format` 可用于格式化显示选项内容 +## 1.0.1(2022-12-06) +- 修复 当where变化时,数据不会自动更新的问题 +## 0.1.9(2022-09-05) +- 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +## 0.1.8(2022-08-29) +- 修复 点击的位置不准确 +## 0.1.7(2022-08-12) +- 新增 支持 disabled 属性 +## 0.1.6(2022-07-06) +- 修复 pc端宽度异常的bug +## 0.1.5 +- 修复 pc端宽度异常的bug +## 0.1.4(2022-07-05) +- 优化 显示样式 +## 0.1.3(2022-06-02) +- 修复 localdata 赋值不生效的 bug +- 新增 支持 uni.scss 修改颜色 +- 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +## 0.1.2(2022-05-08) +- 修复 当 value 为 0 时选择不生效的 bug +## 0.1.1(2022-05-07) +- 新增 记住上次的选项(仅 collection 存在时有效) +## 0.1.0(2022-04-22) +- 初始化 diff --git a/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue new file mode 100644 index 0000000..edab65a --- /dev/null +++ b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue @@ -0,0 +1,562 @@ + + + + + diff --git a/uni_modules/uni-data-select/package.json b/uni_modules/uni-data-select/package.json new file mode 100644 index 0000000..5864594 --- /dev/null +++ b/uni_modules/uni-data-select/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-data-select", + "displayName": "uni-data-select 下拉框选择器", + "version": "1.0.8", + "description": "通过数据驱动的下拉框选择器", + "keywords": [ + "uni-ui", + "select", + "uni-data-select", + "下拉框", + "下拉选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "u", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-select/readme.md b/uni_modules/uni-data-select/readme.md new file mode 100644 index 0000000..eb58de3 --- /dev/null +++ b/uni_modules/uni-data-select/readme.md @@ -0,0 +1,8 @@ +## DataSelect 下拉框选择器 +> **组件名:uni-data-select** +> 代码块: `uDataSelect` + +当选项过多时,使用下拉菜单展示并选择内容 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-select) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-dateformat/changelog.md b/uni_modules/uni-dateformat/changelog.md new file mode 100644 index 0000000..d551d7b --- /dev/null +++ b/uni_modules/uni-dateformat/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +## 0.0.5(2021-07-08) +- 调整 默认时间不再是当前时间,而是显示'-'字符 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 +- 修复 iOS 平台日期格式化出错的问题 diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js new file mode 100644 index 0000000..e00d559 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js @@ -0,0 +1,200 @@ +// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型 +function pad(str, length = 2) { + str += '' + while (str.length < length) { + str = '0' + str + } + return str.slice(-length) +} + +const parser = { + yyyy: (dateObj) => { + return pad(dateObj.year, 4) + }, + yy: (dateObj) => { + return pad(dateObj.year) + }, + MM: (dateObj) => { + return pad(dateObj.month) + }, + M: (dateObj) => { + return dateObj.month + }, + dd: (dateObj) => { + return pad(dateObj.day) + }, + d: (dateObj) => { + return dateObj.day + }, + hh: (dateObj) => { + return pad(dateObj.hour) + }, + h: (dateObj) => { + return dateObj.hour + }, + mm: (dateObj) => { + return pad(dateObj.minute) + }, + m: (dateObj) => { + return dateObj.minute + }, + ss: (dateObj) => { + return pad(dateObj.second) + }, + s: (dateObj) => { + return dateObj.second + }, + SSS: (dateObj) => { + return pad(dateObj.millisecond, 3) + }, + S: (dateObj) => { + return dateObj.millisecond + }, +} + +// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12 +function getDate(time) { + if (time instanceof Date) { + return time + } + switch (typeof time) { + case 'string': + { + // 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000 + if (time.indexOf('T') > -1) { + return new Date(time) + } + return new Date(time.replace(/-/g, '/')) + } + default: + return new Date(time) + } +} + +export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') { + if (!date && date !== 0) { + return '' + } + date = getDate(date) + const dateObj = { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + millisecond: date.getMilliseconds() + } + const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/ + let flag = true + let result = format + while (flag) { + flag = false + result = result.replace(tokenRegExp, function(matched) { + flag = true + return parser[matched](dateObj) + }) + } + return result +} + +export function friendlyDate(time, { + locale = 'zh', + threshold = [60000, 3600000], + format = 'yyyy/MM/dd hh:mm:ss' +}) { + if (time === '-') { + return time + } + if (!time && time !== 0) { + return '' + } + const localeText = { + zh: { + year: '年', + month: '月', + day: '天', + hour: '小时', + minute: '分钟', + second: '秒', + ago: '前', + later: '后', + justNow: '刚刚', + soon: '马上', + template: '{num}{unit}{suffix}' + }, + en: { + year: 'year', + month: 'month', + day: 'day', + hour: 'hour', + minute: 'minute', + second: 'second', + ago: 'ago', + later: 'later', + justNow: 'just now', + soon: 'soon', + template: '{num} {unit} {suffix}' + } + } + const text = localeText[locale] || localeText.zh + let date = getDate(time) + let ms = date.getTime() - Date.now() + let absMs = Math.abs(ms) + if (absMs < threshold[0]) { + return ms < 0 ? text.justNow : text.soon + } + if (absMs >= threshold[1]) { + return formatDate(date, format) + } + let num + let unit + let suffix = text.later + if (ms < 0) { + suffix = text.ago + ms = -ms + } + const seconds = Math.floor((ms) / 1000) + const minutes = Math.floor(seconds / 60) + const hours = Math.floor(minutes / 60) + const days = Math.floor(hours / 24) + const months = Math.floor(days / 30) + const years = Math.floor(months / 12) + switch (true) { + case years > 0: + num = years + unit = text.year + break + case months > 0: + num = months + unit = text.month + break + case days > 0: + num = days + unit = text.day + break + case hours > 0: + num = hours + unit = text.hour + break + case minutes > 0: + num = minutes + unit = text.minute + break + default: + num = seconds + unit = text.second + break + } + + if (locale === 'en') { + if (num === 1) { + num = 'a' + } else { + unit += 's' + } + } + + return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g, + suffix) +} diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue new file mode 100644 index 0000000..c5ed030 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/uni_modules/uni-dateformat/package.json b/uni_modules/uni-dateformat/package.json new file mode 100644 index 0000000..786a670 --- /dev/null +++ b/uni_modules/uni-dateformat/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-dateformat", + "displayName": "uni-dateformat 日期格式化", + "version": "1.0.0", + "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式", + "keywords": [ + "uni-ui", + "uniui", + "日期格式化", + "时间格式化", + "格式化时间", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-dateformat/readme.md b/uni_modules/uni-dateformat/readme.md new file mode 100644 index 0000000..37ddb6e --- /dev/null +++ b/uni_modules/uni-dateformat/readme.md @@ -0,0 +1,11 @@ + + +### DateFormat 日期格式化 +> **组件名:uni-dateformat** +> 代码块: `uDateformat` + + +日期格式化组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..8798e93 --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,160 @@ +## 2.2.34(2024-04-24) +- 新增 日期点击事件,在点击日期时会触发该事件。 +## 2.2.33(2024-04-15) +- 修复 抖音小程序事件传递失效bug +## 2.2.32(2024-02-20) +- 修复 日历的close事件触发异常的bug [详情](https://github.com/dcloudio/uni-ui/issues/844) +## 2.2.31(2024-02-20) +- 修复 h5平台 右边日历的月份默认+1的bug [详情](https://github.com/dcloudio/uni-ui/issues/841) +## 2.2.30(2024-01-31) +- 修复 隐藏“秒”时,在IOS15及以下版本时出现 结束时间在开始时间之前 的bug [详情](https://github.com/dcloudio/uni-ui/issues/788) +## 2.2.29(2024-01-20) +- 新增 show事件,弹窗弹出时触发该事件 [详情](https://github.com/dcloudio/uni-app/issues/4694) +## 2.2.28(2024-01-18) +- 去除 noChange事件,当进行日期范围选择时,若只选了一天,则开始结束日期都为同一天 [详情](https://github.com/dcloudio/uni-ui/issues/815) +## 2.2.27(2024-01-10) +- 优化 增加noChange事件,当进行日期范围选择时,若有空值,则触发该事件 [详情](https://github.com/dcloudio/uni-ui/issues/815) +## 2.2.26(2024-01-08) +- 修复 字节小程序时间选择范围器失效问题 [详情](https://github.com/dcloudio/uni-ui/issues/834) +## 2.2.25(2023-10-18) +- 修复 PC端初次修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737) +## 2.2.24(2023-06-02) +- 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146) +- 优化 当前月可以选择上月、下月的日期的Bug +## 2.2.23(2023-05-02) +- 修复 部分情况修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737) +- 修复 部分平台及设备第一次点击无法显示弹框的Bug +- 修复 ios 日期格式未补零显示及使用异常的Bug [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.22(2023-03-30) +- 修复 日历 picker 修改年月后,自动选中当月1日的Bug [详情](https://ask.dcloud.net.cn/question/165937) +- 修复 小程序端 低版本 ios NaN的Bug [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.21(2023-02-20) +- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +## 2.2.20(2023-02-17) +- 优化 值为空依然选中当天问题 +- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- 优化 字节小程序日期时间范围选择,底部日期换行的Bug +## 2.2.19(2023-02-09) +- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +## 2.2.18(2023-02-08) +- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- 优化 PC端输入日期格式错误时返回当前日期时间 +- 优化 PC端输入日期时间超出 start、end 限制的Bug +- 优化 移动端日期时间范围用法时间展示不完整问题 +## 2.2.17(2023-02-04) +- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- 修复 vue3 time-picker 无法显示绑定时分秒的Bug +## 2.2.16(2023-02-02) +- 修复 字节小程序报错的Bug +## 2.2.15(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 2.2.14(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033) +## 2.2.13(2023-01-10) +- 修复 多次加载组件造成内存占用的Bug +## 2.2.12(2022-12-01) +- 修复 vue3 下 i18n 国际化初始值不正确的Bug +## 2.2.11(2022-09-19) +- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861) +## 2.2.10(2022-09-19) +- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的Bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化的Bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的Bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的Bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的Bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug +## 2.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的Bug +- 修复 单选赋默认值时,赋值日期未高亮的Bug +- 修复 赋默认值时,移动端未正确显示时间的Bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的Bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的Bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的Bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的Bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的Bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的Bug +- 修复 start 和 end 不能动态赋值的Bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的Bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的Bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的Bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的Bug +- 修复 chang事件触发2次的Bug +- 修复 分、秒 end 范围错误的Bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..dba9887 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..0f9e121 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,947 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..024f22f --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select date and time", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..1817692 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,940 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..11fc45a --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1057 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..01802fa --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,421 @@ +class Calendar { + constructor({ + selected, + startDate, + endDate, + range, + } = {}) { + // 当前日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 起始时间 + this.startDate = startDate + // 终止时间 + this.endDate = endDate + // 是否范围选择 + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + setStartDate(startDate) { + this.startDate = startDate + } + + setEndDate(endDate) { + this.endDate = endDate + } + + getPreMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if (oldMonth !== 0 && newMonth - oldMonth === 0) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if (newMonth - oldMonth > 1) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + + /** + * 获取指定格式Date对象 + */ + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + return { + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() + } + } + + /** + * 获取上一个月日期集合 + */ + getPreMonthDays(amount, dateObj) { + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month - 1 + result.push({ + date: new Date(dateObj.year, month, -i).getDate(), + month, + disable: true + }) + } + return result + } + /** + * 获取本月日期集合 + */ + getCurrentMonthDays(amount, dateObj) { + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate + // 获取打点信息 + const info = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + disableBefore = dateCompare(this.startDate, currentDate) + } + + if (this.endDate) { + disableAfter = dateCompare(currentDate, this.endDate) + } + + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + month: dateObj.month, + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare( + currentDate, this.endDate)), + isToday, + userChecked: false, + extraInfo: info + }) + } + return result + } + /** + * 获取下一个月日期集合 + */ + _getNextMonthDays(amount, dateObj) { + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + result.push({ + date: i, + month, + disable: true + }) + } + return result + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + + return this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + if (!this.range) return + + let { + before, + after + } = this.multipleStatus + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.multipleStatus.after = undefined; + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this.getWeeks(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + //抖音小程序点击会触发hover事件,需要避免一下 + // #ifndef MP-TOUTIAO + if (!this.range || this.lastHover) return + const { + before + } = this.multipleStatus + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this.getWeeks(fullDate) + // #endif + + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this.getWeeks(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this.getWeeks(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + getWeeks(dateData) { + const { + year, + month, + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if (!weeks[index]) { + weeks[index] = new Array(7) + } + weeks[index][i % 7] = calendarDays[i] + } + + this.calendar = calendarDays + this.weeks = weeks + } +} + +function getDateTime(date, hideSecond) { + return `${getDate(date)} ${getTime(date, hideSecond)}` +} + +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond) { + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if (num < 10) { + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(startDate)) + endDate = new Date(fixIosDateFormat(endDate)) + return startDate <= endDate +} + +function checkDate(date) { + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} +//ios低版本15及以下,无法匹配 没有 ’秒‘ 时的情况,所以需要在末尾 秒 加上 问号 +const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?)?$/; + +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export { + Calendar, + getDateTime, + getDate, + getTime, + addZero, + getDefaultSecond, + dateCompare, + checkDate, + fixIosDateFormat +} diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..4d1b05c --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.34", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-drawer/changelog.md b/uni_modules/uni-drawer/changelog.md new file mode 100644 index 0000000..6d2488c --- /dev/null +++ b/uni_modules/uni-drawer/changelog.md @@ -0,0 +1,13 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer) +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-drawer/components/uni-drawer/keypress.js b/uni_modules/uni-drawer/components/uni-drawer/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue new file mode 100644 index 0000000..2471521 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/uni_modules/uni-drawer/package.json b/uni_modules/uni-drawer/package.json new file mode 100644 index 0000000..dd056e4 --- /dev/null +++ b/uni_modules/uni-drawer/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-drawer", + "displayName": "uni-drawer 抽屉", + "version": "1.2.1", + "description": "抽屉式导航,用于展示侧滑菜单,侧滑导航。", + "keywords": [ + "uni-ui", + "uniui", + "drawer", + "抽屉", + "侧滑导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-drawer/readme.md b/uni_modules/uni-drawer/readme.md new file mode 100644 index 0000000..dcf6e6b --- /dev/null +++ b/uni_modules/uni-drawer/readme.md @@ -0,0 +1,10 @@ + + +## Drawer 抽屉 +> **组件名:uni-drawer** +> 代码块: `uDrawer` + +抽屉侧滑菜单。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-easyinput/changelog.md b/uni_modules/uni-easyinput/changelog.md new file mode 100644 index 0000000..6677b07 --- /dev/null +++ b/uni_modules/uni-easyinput/changelog.md @@ -0,0 +1,113 @@ +## 1.1.18(2024-04-11) +- 修复 easyinput组件双向绑定问题 +## 1.1.17(2024-03-28) +- 修复 在头条小程序下丢失事件绑定的问题 +## 1.1.16(2024-03-20) +- 修复 在密码输入情况下 清除和小眼睛覆盖bug 在edge浏览器下显示双眼睛bug +## 1.1.15(2024-02-21) +- 新增 左侧插槽:left +## 1.1.14(2024-02-19) +- 修复 onBlur的emit传值错误 +## 1.1.12(2024-01-29) +- 补充 adjust-position文档属性补充 +## 1.1.11(2024-01-29) +- 补充 adjust-position属性传递值:(Boolean)当键盘弹起时,是否自动上推页面 +## 1.1.10(2024-01-22) +- 去除 移除无用的log输出 +## 1.1.9(2023-04-11) +- 修复 vue3 下 keyboardheightchange 事件报错的bug +## 1.1.8(2023-03-29) +- 优化 trim 属性默认值 +## 1.1.7(2023-03-29) +- 新增 cursor-spacing 属性 +## 1.1.6(2023-01-28) +- 新增 keyboardheightchange 事件,可监听键盘高度变化 +## 1.1.5(2022-11-29) +- 优化 主题样式 +## 1.1.4(2022-10-27) +- 修复 props 中背景颜色无默认值的bug +## 1.1.0(2022-06-30) + +- 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- 新增 clear 事件,点击右侧叉号图标触发 +- 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 + +## 1.0.5(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.4(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.3(2022-05-20) + +- 修复 关闭图标某些情况下无法取消的 bug + +## 1.0.2(2022-04-12) + +- 修复 默认值不生效的 bug + +## 1.0.1(2022-04-02) + +- 修复 value 不能为 0 的 bug + +## 1.0.0(2021-11-19) + +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-easyinput](https://uniapp.dcloud.io/component/uniui/uni-easyinput) + +## 0.1.4(2021-08-20) + +- 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug + +## 0.1.3(2021-08-11) + +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 + +## 0.1.2(2021-07-30) + +- 优化 vue3 下事件警告的问题 + +## 0.1.1 + +- 优化 errorMessage 属性支持 Boolean 类型 + +## 0.1.0(2021-07-13) + +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) + +## 0.0.16(2021-06-29) + +- 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug + +## 0.0.15(2021-06-21) + +- 修复 passwordIcon 属性拼写错误的 bug + +## 0.0.14(2021-06-18) + +- 新增 passwordIcon 属性,当 type=password 时是否显示小眼睛图标 +- 修复 confirmType 属性不生效的问题 + +## 0.0.13(2021-06-04) + +- 修复 disabled 状态可清出内容的 bug + +## 0.0.12(2021-05-12) + +- 新增 组件示例地址 + +## 0.0.11(2021-05-07) + +- 修复 input-border 属性不生效的问题 + +## 0.0.10(2021-04-30) + +- 修复 ios 遮挡文字、显示一半的问题 + +## 0.0.9(2021-02-05) + +- 调整为 uni_modules 目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/uni_modules/uni-easyinput/components/uni-easyinput/common.js new file mode 100644 index 0000000..fde8d3c --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/common.js @@ -0,0 +1,54 @@ +/** + * @desc 函数防抖 + * @param func 目标函数 + * @param wait 延迟执行毫秒数 + * @param immediate true - 立即执行, false - 延迟执行 + */ +export const debounce = function(func, wait = 1000, immediate = true) { + let timer; + return function() { + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } +} +/** + * @desc 函数节流 + * @param func 函数 + * @param wait 延迟执行毫秒数 + * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 + */ +export const throttle = (func, wait = 1000, type = 1) => { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } +} diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue new file mode 100644 index 0000000..d41411b --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue @@ -0,0 +1,693 @@ + + + + + diff --git a/uni_modules/uni-easyinput/package.json b/uni_modules/uni-easyinput/package.json new file mode 100644 index 0000000..62bbff5 --- /dev/null +++ b/uni_modules/uni-easyinput/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-easyinput", + "displayName": "uni-easyinput 增强输入框", + "version": "1.1.18", + "description": "Easyinput 组件是对原生input组件的增强", + "keywords": [ + "uni-ui", + "uniui", + "input", + "uni-easyinput", + "输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-easyinput/readme.md b/uni_modules/uni-easyinput/readme.md new file mode 100644 index 0000000..f1faf8f --- /dev/null +++ b/uni_modules/uni-easyinput/readme.md @@ -0,0 +1,11 @@ + + +### Easyinput 增强输入框 +> **组件名:uni-easyinput** +> 代码块: `uEasyinput` + + +easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fab/changelog.md b/uni_modules/uni-fab/changelog.md new file mode 100644 index 0000000..9bd4729 --- /dev/null +++ b/uni_modules/uni-fab/changelog.md @@ -0,0 +1,23 @@ +## 1.2.5(2023-03-29) +- 新增 pattern.icon 属性,可自定义图标 +## 1.2.4(2022-09-07) +小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +## 1.2.3(2022-09-05) +- 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +## 1.2.2(2021-12-29) +- 更新 组件依赖 +## 1.2.1(2021-11-19) +- 修复 阴影颜色不正确的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 按钮背景色调整 +- 优化 兼容pc端 diff --git a/uni_modules/uni-fab/components/uni-fab/uni-fab.vue b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue new file mode 100644 index 0000000..dfa65c1 --- /dev/null +++ b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue @@ -0,0 +1,491 @@ + + + + + diff --git a/uni_modules/uni-fab/package.json b/uni_modules/uni-fab/package.json new file mode 100644 index 0000000..18c0810 --- /dev/null +++ b/uni_modules/uni-fab/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-fab", + "displayName": "uni-fab 悬浮按钮", + "version": "1.2.5", + "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。", + "keywords": [ + "uni-ui", + "uniui", + "按钮", + "悬浮按钮", + "fab" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fab/readme.md b/uni_modules/uni-fab/readme.md new file mode 100644 index 0000000..9a444e8 --- /dev/null +++ b/uni_modules/uni-fab/readme.md @@ -0,0 +1,9 @@ +## Fab 悬浮按钮 +> **组件名:uni-fab** +> 代码块: `uFab` + + +点击可展开一个图形按钮菜单 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fav/changelog.md b/uni_modules/uni-fav/changelog.md new file mode 100644 index 0000000..d8a08d4 --- /dev/null +++ b/uni_modules/uni-fav/changelog.md @@ -0,0 +1,19 @@ +## 1.2.1(2022-05-30) +- 新增 stat 属性 ,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 组件示例地址 +## 1.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.3(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/uni_modules/uni-fav/components/uni-fav/i18n/en.json new file mode 100644 index 0000000..9a0759e --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "collect", + "uni-fav.collected": "collected" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/uni_modules/uni-fav/components/uni-fav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..d2c58df --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/uni_modules/uni-fav/package.json b/uni_modules/uni-fav/package.json new file mode 100644 index 0000000..cc14697 --- /dev/null +++ b/uni_modules/uni-fav/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-fav", + "displayName": "uni-fav 收藏按钮", + "version": "1.2.1", + "description": " Fav 收藏组件,可自定义颜色、大小。", + "keywords": [ + "fav", + "uni-ui", + "uniui", + "收藏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fav/readme.md b/uni_modules/uni-fav/readme.md new file mode 100644 index 0000000..4de125d --- /dev/null +++ b/uni_modules/uni-fav/readme.md @@ -0,0 +1,10 @@ + + +## Fav 收藏按钮 +> **组件名:uni-fav** +> 代码块: `uFav` + +用于收藏功能,可点击切换选中、不选中的状态。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-file-picker/changelog.md b/uni_modules/uni-file-picker/changelog.md new file mode 100644 index 0000000..81e43b9 --- /dev/null +++ b/uni_modules/uni-file-picker/changelog.md @@ -0,0 +1,75 @@ +## 1.0.8(2024-03-20) +- 补充 删除文件时返回文件下标 +## 1.0.7(2024-02-21) +- 新增 微信小程序选择视频时改用chooseMedia,并返回视频缩略图 +## 1.0.6(2024-01-06) +- 新增 微信小程序不再调用chooseImage,而是调用chooseMedia +## 1.0.5(2024-01-03) +- 新增 上传文件至云存储携带本地文件名称 +## 1.0.4(2023-03-29) +- 修复 手动上传删除一个文件后不能再上传的bug +## 1.0.3(2022-12-19) +- 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.0.2(2022-07-04) +- 修复 在uni-forms下样式不生效的bug +## 1.0.1(2021-11-23) +- 修复 参数为对象的情况下,url在某些情况显示错误的bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-file-picker](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +## 0.2.16(2021-11-08) +- 修复 传入空对象 ,显示错误的Bug +## 0.2.15(2021-08-30) +- 修复 return-type="object" 时且存在v-model时,无法删除文件的Bug +## 0.2.14(2021-08-23) +- 新增 参数中返回 fileID 字段 +## 0.2.13(2021-08-23) +- 修复 腾讯云传入fileID 不能回显的bug +- 修复 选择图片后,不能放大的问题 +## 0.2.12(2021-08-17) +- 修复 由于 0.2.11 版本引起的不能回显图片的Bug +## 0.2.11(2021-08-16) +- 新增 clearFiles(index) 方法,可以手动删除指定文件 +- 修复 v-model 值设为 null 报错的Bug +## 0.2.10(2021-08-13) +- 修复 return-type="object" 时,无法删除文件的Bug +## 0.2.9(2021-08-03) +- 修复 auto-upload 属性失效的Bug +## 0.2.8(2021-07-31) +- 修复 fileExtname属性不指定值报错的Bug +## 0.2.7(2021-07-31) +- 修复 在某种场景下图片不回显的Bug +## 0.2.6(2021-07-30) +- 修复 return-type为object下,返回值不正确的Bug +## 0.2.5(2021-07-30) +- 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +## 0.2.3(2021-07-28) +- 优化 调整示例代码 +## 0.2.2(2021-07-27) +- 修复 vue3 下赋值错误的Bug +- 优化 h5平台下上传文件导致页面卡死的问题 +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.1(2021-07-02) +- 修复 sourceType 缺少默认值导致 ios 无法选择文件 +## 0.1.0(2021-06-30) +- 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +## 0.0.11(2021-06-30) +- 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +## 0.0.10(2021-06-29) +- 优化 文件上传后进度条消失时机 +## 0.0.9(2021-06-29) +- 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +## 0.0.8(2021-06-15) +- 修复 删除文件时无法触发 v-model 的Bug +## 0.0.7(2021-05-12) +- 新增 组件示例地址 +## 0.0.6(2021-04-09) +- 修复 选择的文件非 file-extname 字段指定的扩展名报错的Bug +## 0.0.5(2021-04-09) +- 优化 更新组件示例 +## 0.0.4(2021-04-09) +- 优化 file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 微信小程序不指定 fileExtname 属性选择失败的Bug diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js new file mode 100644 index 0000000..9c6bcdf --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js @@ -0,0 +1,287 @@ +'use strict'; + +const ERR_MSG_OK = 'chooseAndUploadFile:ok'; +const ERR_MSG_FAIL = 'chooseAndUploadFile:fail'; + +function chooseImage(opts) { + const { + count, + sizeType = ['original', 'compressed'], + sourceType, + extension + } = opts + return new Promise((resolve, reject) => { + // 微信由于旧接口不再维护,针对微信小程序平台改用chooseMedia接口 + // #ifdef MP-WEIXIN + uni.chooseMedia({ + count, + sizeType, + sourceType, + mediaType: ['image'], + extension, + success(res) { + res.tempFiles.forEach(item => { + item.path = item.tempFilePath; + }) + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }) + // #endif + // #ifndef MP-WEIXIN + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }); + // #endif + + }); +} + +function chooseVideo(opts) { + const { + count, + camera, + compressed, + maxDuration, + sourceType, + extension + } = opts; + return new Promise((resolve, reject) => { + // 微信由于旧接口不再维护,针对微信小程序平台改用chooseMedia接口 + // #ifdef MP-WEIXIN + uni.chooseMedia({ + count, + compressed, + maxDuration, + sourceType, + extension, + mediaType: ['video'], + success(res) { + const { + tempFiles, + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFiles: tempFiles.map(item => { + return { + name: item.name || '', + path: item.tempFilePath, + thumbTempFilePath: item.thumbTempFilePath, + size:item.size, + type: (res.tempFile && res.tempFile.type) || '', + width:item.width, + height:item.height, + duration:item.duration, + fileType: 'video', + cloudPath: '', + } + }), + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }) + // #endif + // #ifndef MP-WEIXIN + uni.chooseVideo({ + camera, + compressed, + maxDuration, + sourceType, + extension, + success(res) { + const { + tempFilePath, + duration, + size, + height, + width + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFilePaths: [tempFilePath], + tempFiles: [{ + name: (res.tempFile && res.tempFile.name) || '', + path: tempFilePath, + size, + type: (res.tempFile && res.tempFile.type) || '', + width, + height, + duration, + fileType: 'video', + cloudPath: '', + }, ], + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }); + // #endif + }); +} + +function chooseAll(opts) { + const { + count, + extension + } = opts; + return new Promise((resolve, reject) => { + let chooseFile = uni.chooseFile; + if (typeof wx !== 'undefined' && + typeof wx.chooseMessageFile === 'function') { + chooseFile = wx.chooseMessageFile; + } + if (typeof chooseFile !== 'function') { + return reject({ + errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。', + }); + } + chooseFile({ + type: 'all', + count, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res)); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function normalizeChooseAndUploadFileRes(res, fileType) { + res.tempFiles.forEach((item, index) => { + if (!item.name) { + item.name = item.path.substring(item.path.lastIndexOf('/') + 1); + } + if (fileType) { + item.fileType = fileType; + } + item.cloudPath = + Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.')); + }); + if (!res.tempFilePaths) { + res.tempFilePaths = res.tempFiles.map((file) => file.path); + } + return res; +} + +function uploadCloudFiles(files, max = 5, onUploadProgress) { + files = JSON.parse(JSON.stringify(files)) + const len = files.length + let count = 0 + let self = this + return new Promise(resolve => { + while (count < max) { + next() + } + + function next() { + let cur = count++ + if (cur >= len) { + !files.find(item => !item.url && !item.errMsg) && resolve(files) + return + } + const fileItem = files[cur] + const index = self.files.findIndex(v => v.uuid === fileItem.uuid) + fileItem.url = '' + delete fileItem.errMsg + + uniCloud + .uploadFile({ + filePath: fileItem.path, + cloudPath: fileItem.cloudPath, + fileType: fileItem.fileType, + onUploadProgress: res => { + res.index = index + onUploadProgress && onUploadProgress(res) + } + }) + .then(res => { + fileItem.url = res.fileID + fileItem.index = index + if (cur < len) { + next() + } + }) + .catch(res => { + fileItem.errMsg = res.errMsg || res.message + fileItem.index = index + if (cur < len) { + next() + } + }) + } + }) +} + + + + + +function uploadFiles(choosePromise, { + onChooseFile, + onUploadProgress +}) { + return choosePromise + .then((res) => { + if (onChooseFile) { + const customChooseRes = onChooseFile(res); + if (typeof customChooseRes !== 'undefined') { + return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ? + res : chooseRes); + } + } + return res; + }) + .then((res) => { + if (res === false) { + return { + errMsg: ERR_MSG_OK, + tempFilePaths: [], + tempFiles: [], + }; + } + return res + }) +} + +function chooseAndUploadFile(opts = { + type: 'all' +}) { + if (opts.type === 'image') { + return uploadFiles(chooseImage(opts), opts); + } else if (opts.type === 'video') { + return uploadFiles(chooseVideo(opts), opts); + } + return uploadFiles(chooseAll(opts), opts); +} + +export { + chooseAndUploadFile, + uploadCloudFiles +}; diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue new file mode 100644 index 0000000..fb83f63 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue @@ -0,0 +1,678 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue new file mode 100644 index 0000000..625d92e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue new file mode 100644 index 0000000..2a29bc2 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js new file mode 100644 index 0000000..1bc9259 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js @@ -0,0 +1,110 @@ +/** + * 获取文件名和后缀 + * @param {String} name + */ +export const get_file_ext = (name) => { + const last_len = name.lastIndexOf('.') + const len = name.length + return { + name: name.substring(0, last_len), + ext: name.substring(last_len + 1, len) + } +} + +/** + * 获取扩展名 + * @param {Array} fileExtname + */ +export const get_extname = (fileExtname) => { + if (!Array.isArray(fileExtname)) { + let extname = fileExtname.replace(/(\[|\])/g, '') + return extname.split(',') + } else { + return fileExtname + } + return [] +} + +/** + * 获取文件和检测是否可选 + */ +export const get_files_and_is_max = (res, _extname) => { + let filePaths = [] + let files = [] + if(!_extname || _extname.length === 0){ + return { + filePaths, + files + } + } + res.tempFiles.forEach(v => { + let fileFullName = get_file_ext(v.name) + const extname = fileFullName.ext.toLowerCase() + if (_extname.indexOf(extname) !== -1) { + files.push(v) + filePaths.push(v.path) + } + }) + if (files.length !== res.tempFiles.length) { + uni.showToast({ + title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`, + icon: 'none', + duration: 5000 + }) + } + + return { + filePaths, + files + } +} + + +/** + * 获取图片信息 + * @param {Object} filepath + */ +export const get_file_info = (filepath) => { + return new Promise((resolve, reject) => { + uni.getImageInfo({ + src: filepath, + success(res) { + resolve(res) + }, + fail(err) { + reject(err) + } + }) + }) +} +/** + * 获取封装数据 + */ +export const get_file_data = async (files, type = 'image') => { + // 最终需要上传数据库的数据 + let fileFullName = get_file_ext(files.name) + const extname = fileFullName.ext.toLowerCase() + let filedata = { + name: files.name, + uuid: files.uuid, + extname: extname || '', + cloudPath: files.cloudPath, + fileType: files.fileType, + thumbTempFilePath: files.thumbTempFilePath, + url: files.path || files.path, + size: files.size, //单位是字节 + image: {}, + path: files.path, + video: {} + } + if (type === 'image') { + const imageinfo = await get_file_info(files.path) + delete filedata.video + filedata.image.width = imageinfo.width + filedata.image.height = imageinfo.height + filedata.image.location = imageinfo.path + } else { + delete filedata.image + } + return filedata +} diff --git a/uni_modules/uni-file-picker/package.json b/uni_modules/uni-file-picker/package.json new file mode 100644 index 0000000..004d330 --- /dev/null +++ b/uni_modules/uni-file-picker/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-file-picker", + "displayName": "uni-file-picker 文件选择上传", + "version": "1.0.8", + "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间", + "keywords": [ + "uni-ui", + "uniui", + "图片上传", + "文件上传" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-file-picker/readme.md b/uni_modules/uni-file-picker/readme.md new file mode 100644 index 0000000..c8399a5 --- /dev/null +++ b/uni_modules/uni-file-picker/readme.md @@ -0,0 +1,11 @@ + +## FilePicker 文件选择上传 + +> **组件名:uni-file-picker** +> 代码块: `uFilePicker` + + +文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-forms/changelog.md b/uni_modules/uni-forms/changelog.md new file mode 100644 index 0000000..3d998bc --- /dev/null +++ b/uni_modules/uni-forms/changelog.md @@ -0,0 +1,94 @@ +## 1.4.10(2023-11-03) +- 优化 labelWidth 描述错误 +## 1.4.9(2023-02-10) +- 修复 required 参数无法动态绑定 +## 1.4.8(2022-08-23) +- 优化 根据 rules 自动添加 required 的问题 +## 1.4.7(2022-08-22) +- 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +## 1.4.6(2022-07-13) +- 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug +## 1.4.5(2022-07-05) +- 新增 更多表单示例 +- 优化 子表单组件过期提示的问题 +- 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +## 1.4.4(2022-07-04) +- 更新 删除组件日志 +## 1.4.3(2022-07-04) +- 修复 由 1.4.0 引发的 label 插槽不生效的bug +## 1.4.2(2022-07-04) +- 修复 子组件找不到 setValue 报错的bug +## 1.4.1(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.4.0(2022-06-30) +- 【重要】组件逻辑重构,部分用法用旧版本不兼容,请注意兼容问题 +- 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- 优化 动态表单校验方式,废弃拼接name的方式 +## 1.3.3(2022-06-22) +- 修复 表单校验顺序无序问题 +## 1.3.2(2021-12-09) +- +## 1.3.1(2021-11-19) +- 修复 label 插槽不生效的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-forms](https://uniapp.dcloud.io/component/uniui/uni-forms) +## 1.2.7(2021-08-13) +- 修复 没有添加校验规则的字段依然报错的Bug +## 1.2.6(2021-08-11) +- 修复 重置表单错误信息无法清除的问题 +## 1.2.5(2021-08-11) +- 优化 组件文档 +## 1.2.4(2021-08-11) +- 修复 表单验证只生效一次的问题 +## 1.2.3(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.2(2021-07-26) +- 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- 修复 1.2.1 引起的示例在小程序平台报错的Bug +## 1.2.1(2021-07-22) +- 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- 修复 不指定name属性时,运行报错的Bug +- 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- 优化 组件示例,新增动态校验示例代码 +- 优化 组件文档,使用方式更清晰 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-06-25) +- 修复 pattern 属性在微信小程序平台无效的问题 +## 1.1.1(2021-06-22) +- 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +## 1.1.0(2021-06-22) +- 修复 只写setRules方法而导致校验不生效的Bug +- 修复 由上个办法引发的错误提示文字错位的Bug +## 1.0.48(2021-06-21) +- 修复 不设置 label 属性 ,无法设置label插槽的问题 +## 1.0.47(2021-06-21) +- 修复 不设置label属性,label-width属性不生效的bug +- 修复 setRules 方法与rules属性冲突的问题 +## 1.0.46(2021-06-04) +- 修复 动态删减数据导致报错的问题 +## 1.0.45(2021-06-04) +- 新增 modelValue 属性 ,value 即将废弃 +## 1.0.44(2021-06-02) +- 新增 uni-forms-item 可以设置单独的 rules +- 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- 优化 submit 事件重命名为 validate +## 1.0.43(2021-05-12) +- 新增 组件示例地址 +## 1.0.42(2021-04-30) +- 修复 自定义检验器失效的问题 +## 1.0.41(2021-03-05) +- 更新 校验器 +- 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug +## 1.0.40(2021-03-04) +- 修复 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +## 1.0.39(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 校验器传入 int 等类型 ,返回String类型的Bug diff --git a/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue new file mode 100644 index 0000000..0aef9cc --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue @@ -0,0 +1,627 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue new file mode 100644 index 0000000..9bb9ae7 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/utils.js b/uni_modules/uni-forms/components/uni-forms/utils.js new file mode 100644 index 0000000..6da2421 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/utils.js @@ -0,0 +1,293 @@ +/** + * 简单处理对象拷贝 + * @param {Obejct} 被拷贝对象 + * @@return {Object} 拷贝对象 + */ +export const deepCopy = (val) => { + return JSON.parse(JSON.stringify(val)) +} +/** + * 过滤数字类型 + * @param {String} format 数字类型 + * @@return {Boolean} 返回是否为数字类型 + */ +export const typeFilter = (format) => { + return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp'; +} + +/** + * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined + * @param {String} key 字段名 + * @param {any} value 字段值 + * @param {Object} rules 表单校验规则 + */ +export const getValue = (key, value, rules) => { + const isRuleNumType = rules.find(val => val.format && typeFilter(val.format)); + const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool'); + // 输入类型为 number + if (!!isRuleNumType) { + if (!value && value !== 0) { + value = null + } else { + value = isNumber(Number(value)) ? Number(value) : value + } + } + + // 输入类型为 boolean + if (!!isRuleBoolType) { + value = isBoolean(value) ? value : false + } + + return value; +} + +/** + * 获取表单数据 + * @param {String|Array} name 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + * @param {any} value 需要设置的值 + */ +export const setDataValue = (field, formdata, value) => { + formdata[field] = value + return value || '' +} + +/** + * 获取表单数据 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + */ +export const getDataValue = (field, data) => { + return objGet(data, field) +} + +/** + * 获取表单类型 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + */ +export const getDataValueType = (field, data) => { + const value = getDataValue(field, data) + return { + type: type(value), + value + } +} + +/** + * 获取表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const realName = (name, data = {}) => { + const base_name = _basePath(name) + if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) { + const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_') + return realname + } + return base_name[0] || name +} + +/** + * 判断是否表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const isRealName = (name) => { + const reg = /^_formdata_#*/ + return reg.test(name) +} + +/** + * 获取表单数据的原始格式 + * @@return {Object|Array} object 需要解析的数据 + */ +export const rawData = (object = {}, name) => { + let newData = JSON.parse(JSON.stringify(object)) + let formData = {} + for(let i in newData){ + let path = name2arr(i) + objSet(formData,path,newData[i]) + } + return formData +} + +/** + * 真实name还原为 array + * @param {*} name + */ +export const name2arr = (name) => { + let field = name.replace('_formdata_#', '') + field = field.split('#').map(v => (isNumber(v) ? Number(v) : v)) + return field +} + +/** + * 对象中设置值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} value 需要设置的值 + */ +export const objSet = (object, path, value) => { + if (typeof object !== 'object') return object; + _basePath(path).reduce((o, k, i, _) => { + if (i === _.length - 1) { + // 若遍历结束直接赋值 + o[k] = value + return null + } else if (k in o) { + // 若存在对应路径,则返回找到的对象,进行下一次遍历 + return o[k] + } else { + // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象 + o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {} + return o[k] + } + }, object) + // 返回object + return object; +} + +// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用 +function _basePath(path) { + // 若是数组,则直接返回 + if (Array.isArray(path)) return path + // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']' + return path.replace(/\[/g, '.').replace(/\]/g, '').split('.') +} + +/** + * 从对象中获取值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} defaultVal 如果无法从调用链中获取值的默认值 + */ +export const objGet = (object, path, defaultVal = 'undefined') => { + // 先将path处理成统一格式 + let newPath = _basePath(path) + // 递归处理,返回最后结果 + let val = newPath.reduce((o, k) => { + return (o || {})[k] + }, object); + return !val || val !== undefined ? val : defaultVal +} + + +/** + * 是否为 number 类型 + * @param {any} num 需要判断的值 + * @return {Boolean} 是否为 number + */ +export const isNumber = (num) => { + return !isNaN(Number(num)) +} + +/** + * 是否为 boolean 类型 + * @param {any} bool 需要判断的值 + * @return {Boolean} 是否为 boolean + */ +export const isBoolean = (bool) => { + return (typeof bool === 'boolean') +} +/** + * 是否有必填字段 + * @param {Object} rules 规则 + * @return {Boolean} 是否有必填字段 + */ +export const isRequiredField = (rules) => { + let isNoField = false; + for (let i = 0; i < rules.length; i++) { + const ruleData = rules[i]; + if (ruleData.required) { + isNoField = true; + break; + } + } + return isNoField; +} + + +/** + * 获取数据类型 + * @param {Any} obj 需要获取数据类型的值 + */ +export const type = (obj) => { + var class2type = {}; + + // 生成class2type映射 + "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) { + class2type["[object " + item + "]"] = item.toLowerCase(); + }) + if (obj == null) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[Object.prototype.toString.call(obj)] || "object" : + typeof obj; +} + +/** + * 判断两个值是否相等 + * @param {any} a 值 + * @param {any} b 值 + * @return {Boolean} 是否相等 + */ +export const isEqual = (a, b) => { + //如果a和b本来就全等 + if (a === b) { + //判断是否为0和-0 + return a !== 0 || 1 / a === 1 / b; + } + //判断是否为null和undefined + if (a == null || b == null) { + return a === b; + } + //接下来判断a和b的数据类型 + var classNameA = toString.call(a), + classNameB = toString.call(b); + //如果数据类型不相等,则返回false + if (classNameA !== classNameB) { + return false; + } + //如果数据类型相等,再根据不同数据类型分别判断 + switch (classNameA) { + case '[object RegExp]': + case '[object String]': + //进行字符串转换比较 + return '' + a === '' + b; + case '[object Number]': + //进行数字转换比较,判断是否为NaN + if (+a !== +a) { + return +b !== +b; + } + //判断是否为0或-0 + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + return +a === +b; + } + //如果是对象类型 + if (classNameA == '[object Object]') { + //获取a和b的属性长度 + var propsA = Object.getOwnPropertyNames(a), + propsB = Object.getOwnPropertyNames(b); + if (propsA.length != propsB.length) { + return false; + } + for (var i = 0; i < propsA.length; i++) { + var propName = propsA[i]; + //如果对应属性对应值不相等,则返回false + if (a[propName] !== b[propName]) { + return false; + } + } + return true; + } + //如果是数组类型 + if (classNameA == '[object Array]') { + if (a.toString() == b.toString()) { + return true; + } + return false; + } +} diff --git a/uni_modules/uni-forms/components/uni-forms/validate.js b/uni_modules/uni-forms/components/uni-forms/validate.js new file mode 100644 index 0000000..1834c6c --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/validate.js @@ -0,0 +1,486 @@ +var pattern = { + email: /^\S+?@\S+?\.\S+?$/, + idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, + url: new RegExp( + "^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", + 'i') +}; + +const FORMAT_MAPPING = { + "int": 'integer', + "bool": 'boolean', + "double": 'number', + "long": 'number', + "password": 'string' + // "fileurls": 'array' +} + +function formatMessage(args, resources = '') { + var defaultMessage = ['label'] + defaultMessage.forEach((item) => { + if (args[item] === undefined) { + args[item] = '' + } + }) + + let str = resources + for (let key in args) { + let reg = new RegExp('{' + key + '}') + str = str.replace(reg, args[key]) + } + return str +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (typeof value === 'string' && !value) { + return true; + } + + if (Array.isArray(value) && !value.length) { + return true; + } + + if (type === 'object' && !Object.keys(value).length) { + return true; + } + + return false; +} + +const types = { + integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + string(value) { + return typeof value === 'string'; + }, + number(value) { + if (isNaN(value)) { + return false; + } + return typeof value === 'number'; + }, + "boolean": function(value) { + return typeof value === 'boolean'; + }, + "float": function(value) { + return types.number(value) && !types.integer(value); + }, + array(value) { + return Array.isArray(value); + }, + object(value) { + return typeof value === 'object' && !types.array(value); + }, + date(value) { + return value instanceof Date; + }, + timestamp(value) { + if (!this.integer(value) || Math.abs(value).toString().length > 16) { + return false + } + return true; + }, + file(value) { + return typeof value.url === 'string'; + }, + email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + pattern(reg, value) { + try { + return new RegExp(reg).test(value); + } catch (e) { + return false; + } + }, + method(value) { + return typeof value === 'function'; + }, + idcard(value) { + return typeof value === 'string' && !!value.match(pattern.idcard); + }, + 'url-https'(value) { + return this.url(value) && value.startsWith('https://'); + }, + 'url-scheme'(value) { + return value.startsWith('://'); + }, + 'url-web'(value) { + return false; + } +} + +class RuleValidator { + + constructor(message) { + this._message = message + } + + async validateRule(fieldKey, fieldValue, value, data, allData) { + var result = null + + let rules = fieldValue.rules + + let hasRequired = rules.findIndex((item) => { + return item.required + }) + if (hasRequired < 0) { + if (value === null || value === undefined) { + return result + } + if (typeof value === 'string' && !value.length) { + return result + } + } + + var message = this._message + + if (rules === undefined) { + return message['default'] + } + + for (var i = 0; i < rules.length; i++) { + let rule = rules[i] + let vt = this._getValidateType(rule) + + Object.assign(rule, { + label: fieldValue.label || `["${fieldKey}"]` + }) + + if (RuleValidatorHelper[vt]) { + result = RuleValidatorHelper[vt](rule, value, message) + if (result != null) { + break + } + } + + if (rule.validateExpr) { + let now = Date.now() + let resultExpr = rule.validateExpr(value, allData, now) + if (resultExpr === false) { + result = this._getMessage(rule, rule.errorMessage || this._message['default']) + break + } + } + + if (rule.validateFunction) { + result = await this.validateFunction(rule, value, data, allData, vt) + if (result !== null) { + break + } + } + } + + if (result !== null) { + result = message.TAG + result + } + + return result + } + + async validateFunction(rule, value, data, allData, vt) { + let result = null + try { + let callbackMessage = null + const res = await rule.validateFunction(rule, value, allData || data, (message) => { + callbackMessage = message + }) + if (callbackMessage || (typeof res === 'string' && res) || res === false) { + result = this._getMessage(rule, callbackMessage || res, vt) + } + } catch (e) { + result = this._getMessage(rule, e.message, vt) + } + return result + } + + _getMessage(rule, message, vt) { + return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default']) + } + + _getValidateType(rule) { + var result = '' + if (rule.required) { + result = 'required' + } else if (rule.format) { + result = 'format' + } else if (rule.arrayType) { + result = 'arrayTypeFormat' + } else if (rule.range) { + result = 'range' + } else if (rule.maximum !== undefined || rule.minimum !== undefined) { + result = 'rangeNumber' + } else if (rule.maxLength !== undefined || rule.minLength !== undefined) { + result = 'rangeLength' + } else if (rule.pattern) { + result = 'pattern' + } else if (rule.validateFunction) { + result = 'validateFunction' + } + return result + } +} + +const RuleValidatorHelper = { + required(rule, value, message) { + if (rule.required && isEmptyValue(value, rule.format || typeof value)) { + return formatMessage(rule, rule.errorMessage || message.required); + } + + return null + }, + + range(rule, value, message) { + const { + range, + errorMessage + } = rule; + + let list = new Array(range.length); + for (let i = 0; i < range.length; i++) { + const item = range[i]; + if (types.object(item) && item.value !== undefined) { + list[i] = item.value; + } else { + list[i] = item; + } + } + + let result = false + if (Array.isArray(value)) { + result = (new Set(value.concat(list)).size === list.length); + } else { + if (list.indexOf(value) > -1) { + result = true; + } + } + + if (!result) { + return formatMessage(rule, errorMessage || message['enum']); + } + + return null + }, + + rangeNumber(rule, value, message) { + if (!types.number(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let { + minimum, + maximum, + exclusiveMinimum, + exclusiveMaximum + } = rule; + let min = exclusiveMinimum ? value <= minimum : value < minimum; + let max = exclusiveMaximum ? value >= maximum : value > maximum; + + if (minimum !== undefined && min) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ? + 'exclusiveMinimum' : 'minimum' + ]) + } else if (maximum !== undefined && max) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ? + 'exclusiveMaximum' : 'maximum' + ]) + } else if (minimum !== undefined && maximum !== undefined && (min || max)) { + return formatMessage(rule, rule.errorMessage || message['number'].range) + } + + return null + }, + + rangeLength(rule, value, message) { + if (!types.string(value) && !types.array(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let min = rule.minLength; + let max = rule.maxLength; + let val = value.length; + + if (min !== undefined && val < min) { + return formatMessage(rule, rule.errorMessage || message['length'].minLength) + } else if (max !== undefined && val > max) { + return formatMessage(rule, rule.errorMessage || message['length'].maxLength) + } else if (min !== undefined && max !== undefined && (val < min || val > max)) { + return formatMessage(rule, rule.errorMessage || message['length'].range) + } + + return null + }, + + pattern(rule, value, message) { + if (!types['pattern'](rule.pattern, value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + return null + }, + + format(rule, value, message) { + var customTypes = Object.keys(types); + var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType); + + if (customTypes.indexOf(format) > -1) { + if (!types[format](value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + } + + return null + }, + + arrayTypeFormat(rule, value, message) { + if (!Array.isArray(value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + + for (let i = 0; i < value.length; i++) { + const element = value[i]; + let formatResult = this.format(rule, element, message) + if (formatResult !== null) { + return formatResult + } + } + + return null + } +} + +class SchemaValidator extends RuleValidator { + + constructor(schema, options) { + super(SchemaValidator.message); + + this._schema = schema + this._options = options || null + } + + updateSchema(schema) { + this._schema = schema + } + + async validate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, false, allData) + } + return result.length ? result[0] : null + } + + async validateAll(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, true, allData) + } + return result + } + + async validateUpdate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidateUpdate(data, false, allData) + } + return result.length ? result[0] : null + } + + async invokeValidate(data, all, allData) { + let result = [] + let schema = this._schema + for (let key in schema) { + let value = schema[key] + let errorMessage = await this.validateRule(key, value, data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + async invokeValidateUpdate(data, all, allData) { + let result = [] + for (let key in data) { + let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + _checkFieldInSchema(data) { + var keys = Object.keys(data) + var keys2 = Object.keys(this._schema) + if (new Set(keys.concat(keys2)).size === keys2.length) { + return '' + } + + var noExistFields = keys.filter((key) => { + return keys2.indexOf(key) < 0; + }) + var errorMessage = formatMessage({ + field: JSON.stringify(noExistFields) + }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid']) + return [{ + key: 'invalid', + errorMessage + }] + } +} + +function Message() { + return { + TAG: "", + default: '验证错误', + defaultInvalid: '提交的字段{field}在数据库中并不存在', + validateFunction: '验证无效', + required: '{label}必填', + 'enum': '{label}超出范围', + timestamp: '{label}格式无效', + whitespace: '{label}不能为空', + typeError: '{label}类型无效', + date: { + format: '{label}日期{value}格式无效', + parse: '{label}日期无法解析,{value}无效', + invalid: '{label}日期{value}无效' + }, + length: { + minLength: '{label}长度不能少于{minLength}', + maxLength: '{label}长度不能超过{maxLength}', + range: '{label}必须介于{minLength}和{maxLength}之间' + }, + number: { + minimum: '{label}不能小于{minimum}', + maximum: '{label}不能大于{maximum}', + exclusiveMinimum: '{label}不能小于等于{minimum}', + exclusiveMaximum: '{label}不能大于等于{maximum}', + range: '{label}必须介于{minimum}and{maximum}之间' + }, + pattern: { + mismatch: '{label}格式不匹配' + } + }; +} + + +SchemaValidator.message = new Message(); + +export default SchemaValidator diff --git a/uni_modules/uni-forms/package.json b/uni_modules/uni-forms/package.json new file mode 100644 index 0000000..464b4e6 --- /dev/null +++ b/uni_modules/uni-forms/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-forms", + "displayName": "uni-forms 表单", + "version": "1.4.10", + "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "keywords": [ + "uni-ui", + "表单", + "校验", + "表单校验", + "表单验证" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-forms/readme.md b/uni_modules/uni-forms/readme.md new file mode 100644 index 0000000..63d5a04 --- /dev/null +++ b/uni_modules/uni-forms/readme.md @@ -0,0 +1,23 @@ + + +## Forms 表单 + +> **组件名:uni-forms** +> 代码块: `uForms`、`uni-forms-item` +> 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。 + + +uni-app的内置组件已经有了 `
`组件,用于提交表单内容。 + +然而几乎每个表单都需要做表单验证,为了方便做表单验证,减少重复开发,`uni ui` 又基于 ``组件封装了 ``组件,内置了表单验证功能。 + +`` 提供了 `rules`属性来描述校验规则、``子组件来包裹具体的表单项,以及给原生或三方组件提供了 `binddata()` 来设置表单值。 + +每个要校验的表单项,不管input还是checkbox,都必须放在``组件中,且一个``组件只能放置一个表单项。 + +``组件内部预留了显示error message的区域,默认是在表单项的底部。 + +另外,``组件下面的各个表单项,可以通过``包裹为不同的分组。同一``下的不同表单项目将聚拢在一起,同其他group保持垂直间距。``仅影响视觉效果。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-forms) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-goods-nav/changelog.md b/uni_modules/uni-goods-nav/changelog.md new file mode 100644 index 0000000..c6264c6 --- /dev/null +++ b/uni_modules/uni-goods-nav/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json new file mode 100644 index 0000000..dcdba41 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "shop", + "uni-goods-nav.options.cart": "cart", + "uni-goods-nav.buttonGroup.addToCart": "add to cart", + "uni-goods-nav.buttonGroup.buyNow": "buy now" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json new file mode 100644 index 0000000..48ee344 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店铺", + "uni-goods-nav.options.cart": "购物车", + "uni-goods-nav.buttonGroup.addToCart": "加入购物车", + "uni-goods-nav.buttonGroup.buyNow": "立即购买" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json new file mode 100644 index 0000000..d0a0255 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店鋪", + "uni-goods-nav.options.cart": "購物車", + "uni-goods-nav.buttonGroup.addToCart": "加入購物車", + "uni-goods-nav.buttonGroup.buyNow": "立即購買" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue new file mode 100644 index 0000000..e79a0fa --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/uni_modules/uni-goods-nav/package.json b/uni_modules/uni-goods-nav/package.json new file mode 100644 index 0000000..636e45e --- /dev/null +++ b/uni_modules/uni-goods-nav/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-goods-nav", + "displayName": "uni-goods-nav 商品导航", + "version": "1.2.1", + "description": "商品导航组件主要用于电商类应用底部导航,可自定义加入购物车,购买等操作", + "keywords": [ + "uni-ui", + "uniui", + "商品导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-goods-nav/readme.md b/uni_modules/uni-goods-nav/readme.md new file mode 100644 index 0000000..07df93f --- /dev/null +++ b/uni_modules/uni-goods-nav/readme.md @@ -0,0 +1,10 @@ + + +## GoodsNav 商品导航 +> **组件名:uni-goods-nav** +> 代码块: `uGoodsNav` + +商品加入购物车,立即购买等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-grid/changelog.md b/uni_modules/uni-grid/changelog.md new file mode 100644 index 0000000..d301166 --- /dev/null +++ b/uni_modules/uni-grid/changelog.md @@ -0,0 +1,13 @@ +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid) +## 1.3.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.3.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.3.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.4(2021-05-12) +- 新增 组件示例地址 +## 1.2.3(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue new file mode 100644 index 0000000..19c08d7 --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uni-grid/components/uni-grid/uni-grid.vue b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue new file mode 100644 index 0000000..0edc7ff --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/uni_modules/uni-grid/package.json b/uni_modules/uni-grid/package.json new file mode 100644 index 0000000..ccb2c91 --- /dev/null +++ b/uni_modules/uni-grid/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-grid", + "displayName": "uni-grid 宫格", + "version": "1.4.0", + "description": "Grid 宫格组件,提供移动端常见的宫格布局,如九宫格。", + "keywords": [ + "uni-ui", + "uniui", + "九宫格", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-grid/readme.md b/uni_modules/uni-grid/readme.md new file mode 100644 index 0000000..0aa44cc --- /dev/null +++ b/uni_modules/uni-grid/readme.md @@ -0,0 +1,11 @@ + + +## Grid 宫格 +> **组件名:uni-grid** +> 代码块: `uGrid` + + +宫格组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-group/changelog.md b/uni_modules/uni-group/changelog.md new file mode 100644 index 0000000..a7024fd --- /dev/null +++ b/uni_modules/uni-group/changelog.md @@ -0,0 +1,16 @@ +## 1.2.2(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group) +## 1.1.7(2021-11-08) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 优化 组件文档 +## 1.0.3(2021-05-12) +- 新增 组件示例地址 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-group/components/uni-group/uni-group.vue b/uni_modules/uni-group/components/uni-group/uni-group.vue new file mode 100644 index 0000000..3425ecd --- /dev/null +++ b/uni_modules/uni-group/components/uni-group/uni-group.vue @@ -0,0 +1,134 @@ + + + + diff --git a/uni_modules/uni-group/package.json b/uni_modules/uni-group/package.json new file mode 100644 index 0000000..ea00a08 --- /dev/null +++ b/uni_modules/uni-group/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-group", + "displayName": "uni-group 分组", + "version": "1.2.2", + "description": "分组组件可用于将组件用于分组,添加间隔,以产生明显的区块", + "keywords": [ + "uni-ui", + "uniui", + "group", + "分组", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-group/readme.md b/uni_modules/uni-group/readme.md new file mode 100644 index 0000000..bae67f4 --- /dev/null +++ b/uni_modules/uni-group/readme.md @@ -0,0 +1,9 @@ + +## Group 分组 +> **组件名:uni-group** +> 代码块: `uGroup` + +分组组件可用于将组件分组,添加间隔,以产生明显的区块。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..620ab02 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,40 @@ +## 2.0.9(2024-01-12) +fix: 修复图标大小默认值错误的问题 +## 2.0.8(2023-12-14) +- 修复 项目未使用 ts 情况下,打包报错的bug +## 2.0.7(2023-12-14) +- 修复 size 属性为 string 时,不加单位导致尺寸异常的bug +## 2.0.6(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.5(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.4(2023-12-06) +- 优化 uni-app x 下示例项目图标排序 +## 2.0.3(2023-12-06) +- 修复 nvue下引入组件报错的bug +## 2.0.2(2023-12-05) +-优化 size 属性支持单位 +## 2.0.1(2023-12-05) +- 新增 uni-app x 支持定义图标 +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue b/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue new file mode 100644 index 0000000..398678e --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..7da5356 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..0a6b6fe --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,664 @@ + +.uniui-cart-filled:before { + content: "\e6d0"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-arrowthinleft:before { + content: "\e6d2"; +} + +.uniui-arrowthinup:before { + content: "\e6d3"; +} + +.uniui-arrowthindown:before { + content: "\e6d4"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthinright:before { + content: "\e6d1"; +} + +.uniui-down:before { + content: "\e6b8"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowright:before { + content: "\e6d5"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-up:before { + content: "\e6b6"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowup:before { + content: "\e6d6"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..14696d0 Binary files /dev/null and b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts b/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts new file mode 100644 index 0000000..98e93aa --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts @@ -0,0 +1,664 @@ + +export type IconsData = { + id : string + name : string + font_family : string + css_prefix_text : string + description : string + glyphs : Array +} + +export type IconsDataItem = { + font_class : string + unicode : string +} + + +export const fontData = [ + { + "font_class": "arrow-down", + "unicode": "\ue6be" + }, + { + "font_class": "arrow-left", + "unicode": "\ue6bc" + }, + { + "font_class": "arrow-right", + "unicode": "\ue6bb" + }, + { + "font_class": "arrow-up", + "unicode": "\ue6bd" + }, + { + "font_class": "auth", + "unicode": "\ue6ab" + }, + { + "font_class": "auth-filled", + "unicode": "\ue6cc" + }, + { + "font_class": "back", + "unicode": "\ue6b9" + }, + { + "font_class": "bars", + "unicode": "\ue627" + }, + { + "font_class": "calendar", + "unicode": "\ue6a0" + }, + { + "font_class": "calendar-filled", + "unicode": "\ue6c0" + }, + { + "font_class": "camera", + "unicode": "\ue65a" + }, + { + "font_class": "camera-filled", + "unicode": "\ue658" + }, + { + "font_class": "cart", + "unicode": "\ue631" + }, + { + "font_class": "cart-filled", + "unicode": "\ue6d0" + }, + { + "font_class": "chat", + "unicode": "\ue65d" + }, + { + "font_class": "chat-filled", + "unicode": "\ue659" + }, + { + "font_class": "chatboxes", + "unicode": "\ue696" + }, + { + "font_class": "chatboxes-filled", + "unicode": "\ue692" + }, + { + "font_class": "chatbubble", + "unicode": "\ue697" + }, + { + "font_class": "chatbubble-filled", + "unicode": "\ue694" + }, + { + "font_class": "checkbox", + "unicode": "\ue62b" + }, + { + "font_class": "checkbox-filled", + "unicode": "\ue62c" + }, + { + "font_class": "checkmarkempty", + "unicode": "\ue65c" + }, + { + "font_class": "circle", + "unicode": "\ue65b" + }, + { + "font_class": "circle-filled", + "unicode": "\ue65e" + }, + { + "font_class": "clear", + "unicode": "\ue66d" + }, + { + "font_class": "close", + "unicode": "\ue673" + }, + { + "font_class": "closeempty", + "unicode": "\ue66c" + }, + { + "font_class": "cloud-download", + "unicode": "\ue647" + }, + { + "font_class": "cloud-download-filled", + "unicode": "\ue646" + }, + { + "font_class": "cloud-upload", + "unicode": "\ue645" + }, + { + "font_class": "cloud-upload-filled", + "unicode": "\ue648" + }, + { + "font_class": "color", + "unicode": "\ue6cf" + }, + { + "font_class": "color-filled", + "unicode": "\ue6c9" + }, + { + "font_class": "compose", + "unicode": "\ue67f" + }, + { + "font_class": "contact", + "unicode": "\ue693" + }, + { + "font_class": "contact-filled", + "unicode": "\ue695" + }, + { + "font_class": "down", + "unicode": "\ue6b8" + }, + { + "font_class": "bottom", + "unicode": "\ue6b8" + }, + { + "font_class": "download", + "unicode": "\ue68d" + }, + { + "font_class": "download-filled", + "unicode": "\ue681" + }, + { + "font_class": "email", + "unicode": "\ue69e" + }, + { + "font_class": "email-filled", + "unicode": "\ue69a" + }, + { + "font_class": "eye", + "unicode": "\ue651" + }, + { + "font_class": "eye-filled", + "unicode": "\ue66a" + }, + { + "font_class": "eye-slash", + "unicode": "\ue6b3" + }, + { + "font_class": "eye-slash-filled", + "unicode": "\ue6b4" + }, + { + "font_class": "fire", + "unicode": "\ue6a1" + }, + { + "font_class": "fire-filled", + "unicode": "\ue6c5" + }, + { + "font_class": "flag", + "unicode": "\ue65f" + }, + { + "font_class": "flag-filled", + "unicode": "\ue660" + }, + { + "font_class": "folder-add", + "unicode": "\ue6a9" + }, + { + "font_class": "folder-add-filled", + "unicode": "\ue6c8" + }, + { + "font_class": "font", + "unicode": "\ue6a3" + }, + { + "font_class": "forward", + "unicode": "\ue6ba" + }, + { + "font_class": "gear", + "unicode": "\ue664" + }, + { + "font_class": "gear-filled", + "unicode": "\ue661" + }, + { + "font_class": "gift", + "unicode": "\ue6a4" + }, + { + "font_class": "gift-filled", + "unicode": "\ue6c4" + }, + { + "font_class": "hand-down", + "unicode": "\ue63d" + }, + { + "font_class": "hand-down-filled", + "unicode": "\ue63c" + }, + { + "font_class": "hand-up", + "unicode": "\ue63f" + }, + { + "font_class": "hand-up-filled", + "unicode": "\ue63e" + }, + { + "font_class": "headphones", + "unicode": "\ue630" + }, + { + "font_class": "heart", + "unicode": "\ue639" + }, + { + "font_class": "heart-filled", + "unicode": "\ue641" + }, + { + "font_class": "help", + "unicode": "\ue679" + }, + { + "font_class": "help-filled", + "unicode": "\ue674" + }, + { + "font_class": "home", + "unicode": "\ue662" + }, + { + "font_class": "home-filled", + "unicode": "\ue663" + }, + { + "font_class": "image", + "unicode": "\ue670" + }, + { + "font_class": "image-filled", + "unicode": "\ue678" + }, + { + "font_class": "images", + "unicode": "\ue650" + }, + { + "font_class": "images-filled", + "unicode": "\ue64b" + }, + { + "font_class": "info", + "unicode": "\ue669" + }, + { + "font_class": "info-filled", + "unicode": "\ue649" + }, + { + "font_class": "left", + "unicode": "\ue6b7" + }, + { + "font_class": "link", + "unicode": "\ue6a5" + }, + { + "font_class": "list", + "unicode": "\ue644" + }, + { + "font_class": "location", + "unicode": "\ue6ae" + }, + { + "font_class": "location-filled", + "unicode": "\ue6af" + }, + { + "font_class": "locked", + "unicode": "\ue66b" + }, + { + "font_class": "locked-filled", + "unicode": "\ue668" + }, + { + "font_class": "loop", + "unicode": "\ue633" + }, + { + "font_class": "mail-open", + "unicode": "\ue643" + }, + { + "font_class": "mail-open-filled", + "unicode": "\ue63a" + }, + { + "font_class": "map", + "unicode": "\ue667" + }, + { + "font_class": "map-filled", + "unicode": "\ue666" + }, + { + "font_class": "map-pin", + "unicode": "\ue6ad" + }, + { + "font_class": "map-pin-ellipse", + "unicode": "\ue6ac" + }, + { + "font_class": "medal", + "unicode": "\ue6a2" + }, + { + "font_class": "medal-filled", + "unicode": "\ue6c3" + }, + { + "font_class": "mic", + "unicode": "\ue671" + }, + { + "font_class": "mic-filled", + "unicode": "\ue677" + }, + { + "font_class": "micoff", + "unicode": "\ue67e" + }, + { + "font_class": "micoff-filled", + "unicode": "\ue6b0" + }, + { + "font_class": "minus", + "unicode": "\ue66f" + }, + { + "font_class": "minus-filled", + "unicode": "\ue67d" + }, + { + "font_class": "more", + "unicode": "\ue64d" + }, + { + "font_class": "more-filled", + "unicode": "\ue64e" + }, + { + "font_class": "navigate", + "unicode": "\ue66e" + }, + { + "font_class": "navigate-filled", + "unicode": "\ue67a" + }, + { + "font_class": "notification", + "unicode": "\ue6a6" + }, + { + "font_class": "notification-filled", + "unicode": "\ue6c1" + }, + { + "font_class": "paperclip", + "unicode": "\ue652" + }, + { + "font_class": "paperplane", + "unicode": "\ue672" + }, + { + "font_class": "paperplane-filled", + "unicode": "\ue675" + }, + { + "font_class": "person", + "unicode": "\ue699" + }, + { + "font_class": "person-filled", + "unicode": "\ue69d" + }, + { + "font_class": "personadd", + "unicode": "\ue69f" + }, + { + "font_class": "personadd-filled", + "unicode": "\ue698" + }, + { + "font_class": "personadd-filled-copy", + "unicode": "\ue6d1" + }, + { + "font_class": "phone", + "unicode": "\ue69c" + }, + { + "font_class": "phone-filled", + "unicode": "\ue69b" + }, + { + "font_class": "plus", + "unicode": "\ue676" + }, + { + "font_class": "plus-filled", + "unicode": "\ue6c7" + }, + { + "font_class": "plusempty", + "unicode": "\ue67b" + }, + { + "font_class": "pulldown", + "unicode": "\ue632" + }, + { + "font_class": "pyq", + "unicode": "\ue682" + }, + { + "font_class": "qq", + "unicode": "\ue680" + }, + { + "font_class": "redo", + "unicode": "\ue64a" + }, + { + "font_class": "redo-filled", + "unicode": "\ue655" + }, + { + "font_class": "refresh", + "unicode": "\ue657" + }, + { + "font_class": "refresh-filled", + "unicode": "\ue656" + }, + { + "font_class": "refreshempty", + "unicode": "\ue6bf" + }, + { + "font_class": "reload", + "unicode": "\ue6b2" + }, + { + "font_class": "right", + "unicode": "\ue6b5" + }, + { + "font_class": "scan", + "unicode": "\ue62a" + }, + { + "font_class": "search", + "unicode": "\ue654" + }, + { + "font_class": "settings", + "unicode": "\ue653" + }, + { + "font_class": "settings-filled", + "unicode": "\ue6ce" + }, + { + "font_class": "shop", + "unicode": "\ue62f" + }, + { + "font_class": "shop-filled", + "unicode": "\ue6cd" + }, + { + "font_class": "smallcircle", + "unicode": "\ue67c" + }, + { + "font_class": "smallcircle-filled", + "unicode": "\ue665" + }, + { + "font_class": "sound", + "unicode": "\ue684" + }, + { + "font_class": "sound-filled", + "unicode": "\ue686" + }, + { + "font_class": "spinner-cycle", + "unicode": "\ue68a" + }, + { + "font_class": "staff", + "unicode": "\ue6a7" + }, + { + "font_class": "staff-filled", + "unicode": "\ue6cb" + }, + { + "font_class": "star", + "unicode": "\ue688" + }, + { + "font_class": "star-filled", + "unicode": "\ue68f" + }, + { + "font_class": "starhalf", + "unicode": "\ue683" + }, + { + "font_class": "trash", + "unicode": "\ue687" + }, + { + "font_class": "trash-filled", + "unicode": "\ue685" + }, + { + "font_class": "tune", + "unicode": "\ue6aa" + }, + { + "font_class": "tune-filled", + "unicode": "\ue6ca" + }, + { + "font_class": "undo", + "unicode": "\ue64f" + }, + { + "font_class": "undo-filled", + "unicode": "\ue64c" + }, + { + "font_class": "up", + "unicode": "\ue6b6" + }, + { + "font_class": "top", + "unicode": "\ue6b6" + }, + { + "font_class": "upload", + "unicode": "\ue690" + }, + { + "font_class": "upload-filled", + "unicode": "\ue68e" + }, + { + "font_class": "videocam", + "unicode": "\ue68c" + }, + { + "font_class": "videocam-filled", + "unicode": "\ue689" + }, + { + "font_class": "vip", + "unicode": "\ue6a8" + }, + { + "font_class": "vip-filled", + "unicode": "\ue6c6" + }, + { + "font_class": "wallet", + "unicode": "\ue6b1" + }, + { + "font_class": "wallet-filled", + "unicode": "\ue6c2" + }, + { + "font_class": "weibo", + "unicode": "\ue68b" + }, + { + "font_class": "weixin", + "unicode": "\ue691" + } +] as IconsDataItem[] + +// export const fontData = JSON.parse(fontDataJson) diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js b/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js new file mode 100644 index 0000000..1cd11e1 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js @@ -0,0 +1,649 @@ + +export const fontData = [ + { + "font_class": "arrow-down", + "unicode": "\ue6be" + }, + { + "font_class": "arrow-left", + "unicode": "\ue6bc" + }, + { + "font_class": "arrow-right", + "unicode": "\ue6bb" + }, + { + "font_class": "arrow-up", + "unicode": "\ue6bd" + }, + { + "font_class": "auth", + "unicode": "\ue6ab" + }, + { + "font_class": "auth-filled", + "unicode": "\ue6cc" + }, + { + "font_class": "back", + "unicode": "\ue6b9" + }, + { + "font_class": "bars", + "unicode": "\ue627" + }, + { + "font_class": "calendar", + "unicode": "\ue6a0" + }, + { + "font_class": "calendar-filled", + "unicode": "\ue6c0" + }, + { + "font_class": "camera", + "unicode": "\ue65a" + }, + { + "font_class": "camera-filled", + "unicode": "\ue658" + }, + { + "font_class": "cart", + "unicode": "\ue631" + }, + { + "font_class": "cart-filled", + "unicode": "\ue6d0" + }, + { + "font_class": "chat", + "unicode": "\ue65d" + }, + { + "font_class": "chat-filled", + "unicode": "\ue659" + }, + { + "font_class": "chatboxes", + "unicode": "\ue696" + }, + { + "font_class": "chatboxes-filled", + "unicode": "\ue692" + }, + { + "font_class": "chatbubble", + "unicode": "\ue697" + }, + { + "font_class": "chatbubble-filled", + "unicode": "\ue694" + }, + { + "font_class": "checkbox", + "unicode": "\ue62b" + }, + { + "font_class": "checkbox-filled", + "unicode": "\ue62c" + }, + { + "font_class": "checkmarkempty", + "unicode": "\ue65c" + }, + { + "font_class": "circle", + "unicode": "\ue65b" + }, + { + "font_class": "circle-filled", + "unicode": "\ue65e" + }, + { + "font_class": "clear", + "unicode": "\ue66d" + }, + { + "font_class": "close", + "unicode": "\ue673" + }, + { + "font_class": "closeempty", + "unicode": "\ue66c" + }, + { + "font_class": "cloud-download", + "unicode": "\ue647" + }, + { + "font_class": "cloud-download-filled", + "unicode": "\ue646" + }, + { + "font_class": "cloud-upload", + "unicode": "\ue645" + }, + { + "font_class": "cloud-upload-filled", + "unicode": "\ue648" + }, + { + "font_class": "color", + "unicode": "\ue6cf" + }, + { + "font_class": "color-filled", + "unicode": "\ue6c9" + }, + { + "font_class": "compose", + "unicode": "\ue67f" + }, + { + "font_class": "contact", + "unicode": "\ue693" + }, + { + "font_class": "contact-filled", + "unicode": "\ue695" + }, + { + "font_class": "down", + "unicode": "\ue6b8" + }, + { + "font_class": "bottom", + "unicode": "\ue6b8" + }, + { + "font_class": "download", + "unicode": "\ue68d" + }, + { + "font_class": "download-filled", + "unicode": "\ue681" + }, + { + "font_class": "email", + "unicode": "\ue69e" + }, + { + "font_class": "email-filled", + "unicode": "\ue69a" + }, + { + "font_class": "eye", + "unicode": "\ue651" + }, + { + "font_class": "eye-filled", + "unicode": "\ue66a" + }, + { + "font_class": "eye-slash", + "unicode": "\ue6b3" + }, + { + "font_class": "eye-slash-filled", + "unicode": "\ue6b4" + }, + { + "font_class": "fire", + "unicode": "\ue6a1" + }, + { + "font_class": "fire-filled", + "unicode": "\ue6c5" + }, + { + "font_class": "flag", + "unicode": "\ue65f" + }, + { + "font_class": "flag-filled", + "unicode": "\ue660" + }, + { + "font_class": "folder-add", + "unicode": "\ue6a9" + }, + { + "font_class": "folder-add-filled", + "unicode": "\ue6c8" + }, + { + "font_class": "font", + "unicode": "\ue6a3" + }, + { + "font_class": "forward", + "unicode": "\ue6ba" + }, + { + "font_class": "gear", + "unicode": "\ue664" + }, + { + "font_class": "gear-filled", + "unicode": "\ue661" + }, + { + "font_class": "gift", + "unicode": "\ue6a4" + }, + { + "font_class": "gift-filled", + "unicode": "\ue6c4" + }, + { + "font_class": "hand-down", + "unicode": "\ue63d" + }, + { + "font_class": "hand-down-filled", + "unicode": "\ue63c" + }, + { + "font_class": "hand-up", + "unicode": "\ue63f" + }, + { + "font_class": "hand-up-filled", + "unicode": "\ue63e" + }, + { + "font_class": "headphones", + "unicode": "\ue630" + }, + { + "font_class": "heart", + "unicode": "\ue639" + }, + { + "font_class": "heart-filled", + "unicode": "\ue641" + }, + { + "font_class": "help", + "unicode": "\ue679" + }, + { + "font_class": "help-filled", + "unicode": "\ue674" + }, + { + "font_class": "home", + "unicode": "\ue662" + }, + { + "font_class": "home-filled", + "unicode": "\ue663" + }, + { + "font_class": "image", + "unicode": "\ue670" + }, + { + "font_class": "image-filled", + "unicode": "\ue678" + }, + { + "font_class": "images", + "unicode": "\ue650" + }, + { + "font_class": "images-filled", + "unicode": "\ue64b" + }, + { + "font_class": "info", + "unicode": "\ue669" + }, + { + "font_class": "info-filled", + "unicode": "\ue649" + }, + { + "font_class": "left", + "unicode": "\ue6b7" + }, + { + "font_class": "link", + "unicode": "\ue6a5" + }, + { + "font_class": "list", + "unicode": "\ue644" + }, + { + "font_class": "location", + "unicode": "\ue6ae" + }, + { + "font_class": "location-filled", + "unicode": "\ue6af" + }, + { + "font_class": "locked", + "unicode": "\ue66b" + }, + { + "font_class": "locked-filled", + "unicode": "\ue668" + }, + { + "font_class": "loop", + "unicode": "\ue633" + }, + { + "font_class": "mail-open", + "unicode": "\ue643" + }, + { + "font_class": "mail-open-filled", + "unicode": "\ue63a" + }, + { + "font_class": "map", + "unicode": "\ue667" + }, + { + "font_class": "map-filled", + "unicode": "\ue666" + }, + { + "font_class": "map-pin", + "unicode": "\ue6ad" + }, + { + "font_class": "map-pin-ellipse", + "unicode": "\ue6ac" + }, + { + "font_class": "medal", + "unicode": "\ue6a2" + }, + { + "font_class": "medal-filled", + "unicode": "\ue6c3" + }, + { + "font_class": "mic", + "unicode": "\ue671" + }, + { + "font_class": "mic-filled", + "unicode": "\ue677" + }, + { + "font_class": "micoff", + "unicode": "\ue67e" + }, + { + "font_class": "micoff-filled", + "unicode": "\ue6b0" + }, + { + "font_class": "minus", + "unicode": "\ue66f" + }, + { + "font_class": "minus-filled", + "unicode": "\ue67d" + }, + { + "font_class": "more", + "unicode": "\ue64d" + }, + { + "font_class": "more-filled", + "unicode": "\ue64e" + }, + { + "font_class": "navigate", + "unicode": "\ue66e" + }, + { + "font_class": "navigate-filled", + "unicode": "\ue67a" + }, + { + "font_class": "notification", + "unicode": "\ue6a6" + }, + { + "font_class": "notification-filled", + "unicode": "\ue6c1" + }, + { + "font_class": "paperclip", + "unicode": "\ue652" + }, + { + "font_class": "paperplane", + "unicode": "\ue672" + }, + { + "font_class": "paperplane-filled", + "unicode": "\ue675" + }, + { + "font_class": "person", + "unicode": "\ue699" + }, + { + "font_class": "person-filled", + "unicode": "\ue69d" + }, + { + "font_class": "personadd", + "unicode": "\ue69f" + }, + { + "font_class": "personadd-filled", + "unicode": "\ue698" + }, + { + "font_class": "personadd-filled-copy", + "unicode": "\ue6d1" + }, + { + "font_class": "phone", + "unicode": "\ue69c" + }, + { + "font_class": "phone-filled", + "unicode": "\ue69b" + }, + { + "font_class": "plus", + "unicode": "\ue676" + }, + { + "font_class": "plus-filled", + "unicode": "\ue6c7" + }, + { + "font_class": "plusempty", + "unicode": "\ue67b" + }, + { + "font_class": "pulldown", + "unicode": "\ue632" + }, + { + "font_class": "pyq", + "unicode": "\ue682" + }, + { + "font_class": "qq", + "unicode": "\ue680" + }, + { + "font_class": "redo", + "unicode": "\ue64a" + }, + { + "font_class": "redo-filled", + "unicode": "\ue655" + }, + { + "font_class": "refresh", + "unicode": "\ue657" + }, + { + "font_class": "refresh-filled", + "unicode": "\ue656" + }, + { + "font_class": "refreshempty", + "unicode": "\ue6bf" + }, + { + "font_class": "reload", + "unicode": "\ue6b2" + }, + { + "font_class": "right", + "unicode": "\ue6b5" + }, + { + "font_class": "scan", + "unicode": "\ue62a" + }, + { + "font_class": "search", + "unicode": "\ue654" + }, + { + "font_class": "settings", + "unicode": "\ue653" + }, + { + "font_class": "settings-filled", + "unicode": "\ue6ce" + }, + { + "font_class": "shop", + "unicode": "\ue62f" + }, + { + "font_class": "shop-filled", + "unicode": "\ue6cd" + }, + { + "font_class": "smallcircle", + "unicode": "\ue67c" + }, + { + "font_class": "smallcircle-filled", + "unicode": "\ue665" + }, + { + "font_class": "sound", + "unicode": "\ue684" + }, + { + "font_class": "sound-filled", + "unicode": "\ue686" + }, + { + "font_class": "spinner-cycle", + "unicode": "\ue68a" + }, + { + "font_class": "staff", + "unicode": "\ue6a7" + }, + { + "font_class": "staff-filled", + "unicode": "\ue6cb" + }, + { + "font_class": "star", + "unicode": "\ue688" + }, + { + "font_class": "star-filled", + "unicode": "\ue68f" + }, + { + "font_class": "starhalf", + "unicode": "\ue683" + }, + { + "font_class": "trash", + "unicode": "\ue687" + }, + { + "font_class": "trash-filled", + "unicode": "\ue685" + }, + { + "font_class": "tune", + "unicode": "\ue6aa" + }, + { + "font_class": "tune-filled", + "unicode": "\ue6ca" + }, + { + "font_class": "undo", + "unicode": "\ue64f" + }, + { + "font_class": "undo-filled", + "unicode": "\ue64c" + }, + { + "font_class": "up", + "unicode": "\ue6b6" + }, + { + "font_class": "top", + "unicode": "\ue6b6" + }, + { + "font_class": "upload", + "unicode": "\ue690" + }, + { + "font_class": "upload-filled", + "unicode": "\ue68e" + }, + { + "font_class": "videocam", + "unicode": "\ue68c" + }, + { + "font_class": "videocam-filled", + "unicode": "\ue689" + }, + { + "font_class": "vip", + "unicode": "\ue6a8" + }, + { + "font_class": "vip-filled", + "unicode": "\ue6c6" + }, + { + "font_class": "wallet", + "unicode": "\ue6b1" + }, + { + "font_class": "wallet-filled", + "unicode": "\ue6c2" + }, + { + "font_class": "weibo", + "unicode": "\ue68b" + }, + { + "font_class": "weixin", + "unicode": "\ue691" + } +] + +// export const fontData = JSON.parse(fontDataJson) diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..397be83 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "2.0.9", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y", + "app-uvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-indexed-list/changelog.md b/uni_modules/uni-indexed-list/changelog.md new file mode 100644 index 0000000..08fa71c --- /dev/null +++ b/uni_modules/uni-indexed-list/changelog.md @@ -0,0 +1,17 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue new file mode 100644 index 0000000..19284bd --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue new file mode 100644 index 0000000..ee3a7ec --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue @@ -0,0 +1,367 @@ + + + diff --git a/uni_modules/uni-indexed-list/package.json b/uni_modules/uni-indexed-list/package.json new file mode 100644 index 0000000..125c0e7 --- /dev/null +++ b/uni_modules/uni-indexed-list/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-indexed-list", + "displayName": "uni-indexed-list 索引列表", + "version": "1.2.1", + "description": "索引列表组件,右侧带索引的列表,方便快速定位到具体内容,通常用于城市/机场选择等场景", + "keywords": [ + "uni-ui", + "索引列表", + "索引", + "列表" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-indexed-list/readme.md b/uni_modules/uni-indexed-list/readme.md new file mode 100644 index 0000000..44ad84b --- /dev/null +++ b/uni_modules/uni-indexed-list/readme.md @@ -0,0 +1,11 @@ + + +## IndexedList 索引列表 +> **组件名:uni-indexed-list** +> 代码块: `uIndexedList` + + +用于展示索引列表。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-link/changelog.md b/uni_modules/uni-link/changelog.md new file mode 100644 index 0000000..2cfbf59 --- /dev/null +++ b/uni_modules/uni-link/changelog.md @@ -0,0 +1,17 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-link](https://uniapp.dcloud.io/component/uniui/uni-link) +## 1.1.7(2021-11-08) +## 0.0.7(2021-09-03) +- 修复 在 nvue 下不显示的 bug +## 0.0.6(2021-07-30) +- 新增 支持自定义插槽 +## 0.0.5(2021-06-21) +- 新增 download 属性,H5平台下载文件名 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-03-09) +- 新增 href 属性支持 tel:|mailto: + +## 0.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-link/components/uni-link/uni-link.vue b/uni_modules/uni-link/components/uni-link/uni-link.vue new file mode 100644 index 0000000..27c5468 --- /dev/null +++ b/uni_modules/uni-link/components/uni-link/uni-link.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uni-link/package.json b/uni_modules/uni-link/package.json new file mode 100644 index 0000000..77b1986 --- /dev/null +++ b/uni_modules/uni-link/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-link", + "displayName": "uni-link 超链接", + "version": "1.0.0", + "description": "uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打", + "keywords": [ + "uni-ui", + "uniui", + "link", + "超链接", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-link/readme.md b/uni_modules/uni-link/readme.md new file mode 100644 index 0000000..7f09e94 --- /dev/null +++ b/uni_modules/uni-link/readme.md @@ -0,0 +1,11 @@ + + +## Link 链接 +> **组件名:uni-link** +> 代码块: `uLink` + + +uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-link) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-list/changelog.md b/uni_modules/uni-list/changelog.md new file mode 100644 index 0000000..8254a18 --- /dev/null +++ b/uni_modules/uni-list/changelog.md @@ -0,0 +1,46 @@ +## 1.2.14(2023-04-14) +- 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +## 1.2.13(2023-03-03) +- uni-list-chat 新增 支持具名插槽`header` +## 1.2.12(2023-02-01) +- 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +## 1.2.11(2023-01-31) +- 修复 无反馈效果呈现的bug +## 1.2.9(2022-11-22) +- 修复 uni-list-chat 在vue3下跳转报错的bug +## 1.2.8(2022-11-21) +- 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +## 1.2.7(2022-11-21) +- 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +## 1.2.6(2022-11-18) +- 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +## 1.2.5(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +## 1.2.4(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +## 1.2.3(2022-11-14) +- uni-list-chat 新增 avatar 支持 fileId +## 1.2.2(2022-11-11) +- uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +## 1.2.1(2022-03-30) +- 删除无用文件 +## 1.2.0(2021-11-23) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-list](https://uniapp.dcloud.io/component/uniui/uni-list) +## 1.1.3(2021-08-30) +- 修复 在vue3中to属性在发行应用的时候报错的bug +## 1.1.2(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.1(2021-07-21) +- 修复 与其他组件嵌套使用时,点击失效的Bug +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.17(2021-05-12) +- 新增 组件示例地址 +## 1.0.16(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.15(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 uni-list-chat 角标显示不正常的问题 diff --git a/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue new file mode 100644 index 0000000..b9349c2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss new file mode 100644 index 0000000..311f8d9 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss @@ -0,0 +1,58 @@ +/** + * 这里是 uni-list 组件内置的常用样式变量 + * 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码 + * + */ + +// 背景色 +$background-color : #fff; +// 分割线颜色 +$divide-line-color : #e5e5e5; + +// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像 +// nvue 页面不支持修改头像大小 +$avatar-width : 45px ; + +// 头像边框 +$avatar-border-radius: 5px; +$avatar-border-color: #eee; +$avatar-border-width: 1px; + +// 标题文字样式 +$title-size : 16px; +$title-color : #3b4144; +$title-weight : normal; + +// 描述文字样式 +$note-size : 12px; +$note-color : #999; +$note-weight : normal; + +// 右侧额外内容默认样式 +$right-text-size : 12px; +$right-text-color : #999; +$right-text-weight : normal; + +// 角标样式 +// nvue 页面不支持修改圆点位置以及大小 +// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动 +$badge-left: 0px; +$badge-top: 0px; + +// 显示圆点时,圆点大小 +$dot-width: 10px; +$dot-height: 10px; + +// 显示角标时,角标大小和字体大小 +$badge-size : 18px; +$badge-font : 12px; +// 显示角标时,角标前景色 +$badge-color : #fff; +// 显示角标时,角标背景色 +$badge-background-color : #ff5a5f; +// 显示角标时,角标左右间距 +$badge-space : 6px; + +// 状态样式 +// 选中颜色 +$hover : #f5f5f5; diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue new file mode 100644 index 0000000..d49fd7c --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue @@ -0,0 +1,593 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue new file mode 100644 index 0000000..6402508 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue @@ -0,0 +1,534 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uni-list/components/uni-list/uni-list.vue b/uni_modules/uni-list/components/uni-list/uni-list.vue new file mode 100644 index 0000000..6ef5972 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-list.vue @@ -0,0 +1,123 @@ + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.vue b/uni_modules/uni-list/components/uni-list/uni-refresh.vue new file mode 100644 index 0000000..3b4c5a2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.wxs b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs new file mode 100644 index 0000000..818a6b7 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs @@ -0,0 +1,87 @@ +var pullDown = { + threshold: 95, + maxHeight: 200, + callRefresh: 'onrefresh', + callPullingDown: 'onpullingdown', + refreshSelector: '.uni-refresh' +}; + +function ready(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + state.canPullDown = newValue; + // console.log(newValue); +} + +function touchStart(e, instance) { + var state = instance.getState(); + state.refreshInstance = instance.selectComponent(pullDown.refreshSelector); + state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined); + if (!state.canPullDown) { + return + } + + // console.log("touchStart"); + + state.height = 0; + state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY; + state.refreshInstance.setStyle({ + 'height': 0 + }); + state.refreshInstance.callMethod("onchange", true); +} + +function touchMove(e, ownerInstance) { + var instance = e.instance; + var state = instance.getState(); + if (!state.canPullDown) { + return + } + + var oldHeight = state.height; + var endY = e.touches[0].pageY || e.changedTouches[0].pageY; + var height = endY - state.touchStartY; + if (height > pullDown.maxHeight) { + return; + } + + var refreshInstance = state.refreshInstance; + refreshInstance.setStyle({ + 'height': height + 'px' + }); + + height = height < pullDown.maxHeight ? height : pullDown.maxHeight; + state.height = height; + refreshInstance.callMethod(pullDown.callPullingDown, { + height: height + }); +} + +function touchEnd(e, ownerInstance) { + var state = e.instance.getState(); + if (!state.canPullDown) { + return + } + + state.refreshInstance.callMethod("onchange", false); + + var refreshInstance = state.refreshInstance; + if (state.height > pullDown.threshold) { + refreshInstance.callMethod(pullDown.callRefresh); + return; + } + + refreshInstance.setStyle({ + 'height': 0 + }); +} + +function propObserver(newValue, oldValue, instance) { + pullDown = newValue; +} + +module.exports = { + touchmove: touchMove, + touchstart: touchStart, + touchend: touchEnd, + propObserver: propObserver +} diff --git a/uni_modules/uni-list/package.json b/uni_modules/uni-list/package.json new file mode 100644 index 0000000..8350efc --- /dev/null +++ b/uni_modules/uni-list/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-list", + "displayName": "uni-list 列表", + "version": "1.2.14", + "description": "List 组件 ,帮助使用者快速构建列表。", + "keywords": [ + "", + "uni-ui", + "uniui", + "列表", + "", + "list" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-list/readme.md b/uni_modules/uni-list/readme.md new file mode 100644 index 0000000..32c2865 --- /dev/null +++ b/uni_modules/uni-list/readme.md @@ -0,0 +1,346 @@ +## List 列表 +> **组件名:uni-list** +> 代码块: `uList`、`uListItem` +> 关联组件:`uni-list-item`、`uni-badge`、`uni-icons`、`uni-list-chat`、`uni-list-ad` + + +List 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容。 + +在vue页面里,它默认使用页面级滚动。在app-nvue页面里,它默认使用原生list组件滚动。这样的长列表,在滚动出屏幕外后,系统会回收不可见区域的渲染内存资源,不会造成滚动越长手机越卡的问题。 + +uni-list组件是父容器,里面的核心是uni-list-item子组件,它代表列表中的一个可重复行,子组件可以无限循环。 + +uni-list-item有很多风格,uni-list-item组件通过内置的属性,满足一些常用的场景。当内置属性不满足需求时,可以通过扩展插槽来自定义列表内容。 + +内置属性可以覆盖的场景包括:导航列表、设置列表、小图标列表、通信录列表、聊天记录列表。 + +涉及很多大图或丰富内容的列表,比如类今日头条的新闻列表、类淘宝的电商列表,需要通过扩展插槽实现。 + +下文均有样例给出。 + +uni-list不包含下拉刷新和上拉翻页。上拉翻页另见组件:[uni-load-more](https://ext.dcloud.net.cn/plugin?id=29) + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 组件需要依赖 `sass` 插件 ,请自行手动安装 +> - 组件内部依赖 `'uni-icons'` 、`uni-badge` 组件 +> - `uni-list` 和 `uni-list-item` 需要配套使用,暂不支持单独使用 `uni-list-item` +> - 只有开启点击反馈后,会有点击选中效果 +> - 使用插槽时,可以完全自定义内容 +> - note 、rightText 属性暂时没做限制,不支持文字溢出隐藏,使用时应该控制长度显示或通过默认插槽自行扩展 +> - 支付宝小程序平台需要在支付宝小程序开发者工具里开启 component2 编译模式,开启方式: 详情 --> 项目配置 --> 启用 component2 编译 +> - 如果需要修改 `switch`、`badge` 样式,请使用插槽自定义 +> - 在 `HBuilderX` 低版本中,可能会出现组件显示 `undefined` 的问题,请升级最新的 `HBuilderX` 或者 `cli` +> - 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + +### 基本用法 + +- 设置 `title` 属性,可以显示列表标题 +- 设置 `disabled` 属性,可以禁用当前项 + +```html + + + + + +``` + +### 多行内容显示 + +- 设置 `note` 属性 ,可以在第二行显示描述文本信息 + +```html + + + + + +``` + +### 右侧显示角标、switch + +- 设置 `show-badge` 属性 ,可以显示角标内容 +- 设置 `show-switch` 属性,可以显示 switch 开关 + +```html + + + + + +``` + +### 左侧显示略缩图、图标 + +- 设置 `thumb` 属性 ,可以在列表左侧显示略缩图 +- 设置 `show-extra-icon` 属性,并指定 `extra-icon` 可以在左侧显示图标 + +```html + + + + +``` + +### 开启点击反馈和右侧箭头 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,并给列表右侧添加一个箭头 +- 设置 `to` 属性,可以跳转页面,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` + +```html + + + + + + + +``` + + +### 聊天列表示例 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` +- 设置 `to` 属性,可以跳转页面 +- `time` 属性,通常会设置成时间显示,但是这个属性不仅仅可以设置时间,你可以传入任何文本,注意文本长度可能会影响显示 +- `avatar` 和 `avatarList` 属性同时只会有一个生效,同时设置的话,`avatarList` 属性的长度大于1 ,`avatar` 属性将失效 +- 可以通过默认插槽自定义列表右侧内容 + +```html + + + + + + + + + + + + + + + + + 刚刚 + + + + + + + +``` + +```javascript + +export default { + components: {}, + data() { + return { + avatarList: [{ + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }] + } + } +} + +``` + + +```css + +.chat-custom-right { + flex: 1; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: column; + justify-content: space-between; + align-items: flex-end; +} + +.chat-custom-text { + font-size: 12px; + color: #999; +} + +``` + +## API + +### List Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +border |Boolean |true | 是否显示边框 + + +### ListItem Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +ellipsis |Number |0 | title 是否溢出隐藏,可选值,0:默认; 1:显示一行; 2:显示两行;【nvue 暂不支持】 +thumb |String |- | 左侧缩略图,若thumb有值,则不会显示扩展图标 +thumbSize |String |medium | 略缩图尺寸,可选值,lg:大图; medium:一般; sm:小图; +showBadge |Boolean |false | 是否显示数字角标 +badgeText |String |- | 数字角标内容 +badgeType |String |- | 数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21) +badgeStyle |Object |- | 数字角标样式,使用uni-badge的custom-style参数 +rightText |String |- | 右侧文字内容 +disabled |Boolean |false | 是否禁用 +showArrow |Boolean |true | 是否显示箭头图标 +link |String |navigateTo | 新页面跳转方式,可选值见下表 +to |String |- | 新页面跳转地址,如填写此属性,click 会返回页面是否跳转成功 +clickable |Boolean |false | 是否开启点击反馈 +showSwitch |Boolean |false | 是否显示Switch +switchChecked |Boolean |false | Switch是否被选中 +showExtraIcon |Boolean |false | 左侧是否显示扩展图标 +extraIcon |Object |- | 扩展图标参数,格式为 ``{color: '#4cd964',size: '22',type: 'spinner'}``,参考 [uni-icons](https://ext.dcloud.net.cn/plugin?id=28) +direction | String |row | 排版方向,可选值,row:水平排列; column:垂直排列; 3个插槽是水平排还是垂直排,也受此属性控制 + + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItem Events + +事件称名 |说明 |返回参数 +:-: |:-: |:-: +click |点击 uniListItem 触发事件,需开启点击反馈 |- +switchChange |点击切换 Switch 时触发,需显示 switch |e={value:checked} + + + +### ListItem Slots + +名称 | 说明 +:-: | :-: +header | 左/上内容插槽,可完全自定义默认显示 +body | 中间内容插槽,可完全自定义中间内容 +footer | 右/下内容插槽,可完全自定义右侧内容 + + +> **通过插槽扩展** +> 需要注意的是当使用插槽时,内置样式将会失效,只保留排版样式,此时的样式需要开发者自己实现 +> 如果 `uni-list-item` 组件内置属性样式无法满足需求,可以使用插槽来自定义uni-list-item里的内容。 +> uni-list-item提供了3个可扩展的插槽:`header`、`body`、`footer` +> - 当 `direction` 属性为 `row` 时表示水平排列,此时 `header` 表示列表的左边部分,`body` 表示列表的中间部分,`footer` 表示列表的右边部分 +> - 当 `direction` 属性为 `column` 时表示垂直排列,此时 `header` 表示列表的上边部分,`body` 表示列表的中间部分,`footer` 表示列表的下边部分 +> 开发者可以只用1个插槽,也可以3个一起使用。在插槽中可自主编写view标签,实现自己所需的效果。 + + +**示例** + +```html + + + + + + + + + 自定义插槽 + + + + +``` + + + + + +### ListItemChat Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +clickable |Boolean |false | 是否开启点击反馈 +badgeText |String |- | 数字角标内容,设置为 `dot` 将显示圆点 +badgePositon |String |right | 角标位置 +link |String |navigateTo | 是否展示右侧箭头并开启点击反馈,可选值见下表 +clickable |Boolean |false | 是否开启点击反馈 +to |String |- | 跳转页面地址,如填写此属性,click 会返回页面是否跳转成功 +time |String |- | 右侧时间显示 +avatarCircle |Boolean |false | 是否显示圆形头像 +avatar |String |- | 头像地址,avatarCircle 不填时生效 +avatarList |Array |- | 头像组,格式为 [{url:''}] + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItemChat Slots + +名称 | 说明 +:- | :- +default | 自定义列表右侧内容(包括时间和角标显示) + +### ListItemChat Events +事件称名 | 说明 | 返回参数 +:-: | :-: | :-: +@click | 点击 uniListChat 触发事件 | {data:{}} ,如有 to 属性,会返回页面跳转信息 + + + + + + +## 基于uni-list扩展的页面模板 + +通过扩展插槽,可实现多种常见样式的列表 + +**新闻列表类** + +1. 云端一体混合布局:[https://ext.dcloud.net.cn/plugin?id=2546](https://ext.dcloud.net.cn/plugin?id=2546) +2. 云端一体垂直布局,大图模式:[https://ext.dcloud.net.cn/plugin?id=2583](https://ext.dcloud.net.cn/plugin?id=2583) +3. 云端一体垂直布局,多行图文混排:[https://ext.dcloud.net.cn/plugin?id=2584](https://ext.dcloud.net.cn/plugin?id=2584) +4. 云端一体垂直布局,多图模式:[https://ext.dcloud.net.cn/plugin?id=2585](https://ext.dcloud.net.cn/plugin?id=2585) +5. 云端一体水平布局,左图右文:[https://ext.dcloud.net.cn/plugin?id=2586](https://ext.dcloud.net.cn/plugin?id=2586) +6. 云端一体水平布局,左文右图:[https://ext.dcloud.net.cn/plugin?id=2587](https://ext.dcloud.net.cn/plugin?id=2587) +7. 云端一体垂直布局,无图模式,主标题+副标题:[https://ext.dcloud.net.cn/plugin?id=2588](https://ext.dcloud.net.cn/plugin?id=2588) + +**商品列表类** + +1. 云端一体列表/宫格视图互切:[https://ext.dcloud.net.cn/plugin?id=2651](https://ext.dcloud.net.cn/plugin?id=2651) +2. 云端一体列表(宫格模式):[https://ext.dcloud.net.cn/plugin?id=2671](https://ext.dcloud.net.cn/plugin?id=2671) +3. 云端一体列表(列表模式):[https://ext.dcloud.net.cn/plugin?id=2672](https://ext.dcloud.net.cn/plugin?id=2672) + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/list/list](https://hellouniapp.dcloud.net.cn/pages/extUI/list/list) \ No newline at end of file diff --git a/uni_modules/uni-load-more/changelog.md b/uni_modules/uni-load-more/changelog.md new file mode 100644 index 0000000..8f03f1d --- /dev/null +++ b/uni_modules/uni-load-more/changelog.md @@ -0,0 +1,19 @@ +## 1.3.3(2022-01-20) +- 新增 showText属性 ,是否显示文本 +## 1.3.2(2022-01-19) +- 修复 nvue 平台下不显示文本的bug +## 1.3.1(2022-01-19) +- 修复 微信小程序平台样式选择器报警告的问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) +## 1.2.1(2021-08-24) +- 新增 支持国际化 +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-05-12) +- 新增 组件示例地址 +## 1.1.7(2021-03-30) +- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +## 1.1.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json new file mode 100644 index 0000000..a4f14a5 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "Pull up to show more", + "uni-load-more.contentrefresh": "loading...", + "uni-load-more.contentnomore": "No more data" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json new file mode 100644 index 0000000..f15d510 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉显示更多", + "uni-load-more.contentrefresh": "正在加载...", + "uni-load-more.contentnomore": "没有更多数据了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json new file mode 100644 index 0000000..a255c6d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉顯示更多", + "uni-load-more.contentrefresh": "正在加載...", + "uni-load-more.contentnomore": "沒有更多數據了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..e5eff4d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/uni_modules/uni-load-more/package.json b/uni_modules/uni-load-more/package.json new file mode 100644 index 0000000..2fa6f04 --- /dev/null +++ b/uni_modules/uni-load-more/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-load-more", + "displayName": "uni-load-more 加载更多", + "version": "1.3.3", + "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", + "keywords": [ + "uni-ui", + "uniui", + "加载更多", + "load-more" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-load-more/readme.md b/uni_modules/uni-load-more/readme.md new file mode 100644 index 0000000..54dc1fa --- /dev/null +++ b/uni_modules/uni-load-more/readme.md @@ -0,0 +1,14 @@ + + +### LoadMore 加载更多 +> **组件名:uni-load-more** +> 代码块: `uLoadMore` + + +用于列表中,做滚动加载使用,展示 loading 的各种状态。 + + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-nav-bar/changelog.md b/uni_modules/uni-nav-bar/changelog.md new file mode 100644 index 0000000..0f9a2f1 --- /dev/null +++ b/uni_modules/uni-nav-bar/changelog.md @@ -0,0 +1,51 @@ +## 1.3.11(2023-03-29) +- 修复 自定义状态栏高度闪动BUG +## 1.3.10(2023-03-29) +- 修复 暗黑模式下边线颜色错误的bug +## 1.3.9(2022-10-13) +- 修复 条件编译错误的bug +## 1.3.8(2022-10-12) +- 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.7(2022-08-11) +- 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.6(2022-06-30) +- 修复 组件示例中插槽用法无法显示内容的bug +## 1.3.5(2022-05-24) +- 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +## 1.3.4(2022-01-24) +- 更新 组件示例 +## 1.3.3(2022-01-24) +- 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +## 1.3.2(2022-01-18) +- 修复 在vue下,标题不垂直居中的bug +## 1.3.1(2022-01-18) +- 修复 height 属性类型错误 +## 1.3.0(2022-01-18) +- 新增 height 属性,可修改组件高度 +- 新增 dark 属性可可开启暗黑模式 +- 优化 标题字数过多显示省略号 +- 优化 插槽,插入内容可完全覆盖 +## 1.2.1(2022-01-10) +- 修复 color 属性不生效的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-30) +- 修复 在nvue下fixed为true,宽度不能撑满的Bug +## 1.0.9(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.8(2021-04-14) +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug + +## 1.0.7(2021-02-25) +- 修复 easycom 下,找不到 uni-status-bar 的bug + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..46806c1 --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue new file mode 100644 index 0000000..4ac73ae --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/package.json b/uni_modules/uni-nav-bar/package.json new file mode 100644 index 0000000..240ae95 --- /dev/null +++ b/uni_modules/uni-nav-bar/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-nav-bar", + "displayName": "uni-nav-bar 自定义导航栏", + "version": "1.3.11", + "description": "自定义导航栏组件,主要用于头部导航。", + "keywords": [ + "uni-ui", + "导航", + "导航栏", + "自定义导航栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-nav-bar/readme.md b/uni_modules/uni-nav-bar/readme.md new file mode 100644 index 0000000..3934b32 --- /dev/null +++ b/uni_modules/uni-nav-bar/readme.md @@ -0,0 +1,15 @@ + + +## NavBar 导航栏 +> **组件名:uni-nav-bar** +> 代码块: `uNavBar` + +导航栏组件,主要用于头部导航。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-notice-bar/changelog.md b/uni_modules/uni-notice-bar/changelog.md new file mode 100644 index 0000000..ce50674 --- /dev/null +++ b/uni_modules/uni-notice-bar/changelog.md @@ -0,0 +1,20 @@ +## 1.2.2(2023-12-20) +- 修复动态绑定title时,滚动速度不一致的问题 +## 1.2.1(2022-09-05) +- 新增 属性 fontSize,可修改文字大小。 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-notice-bar](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 组件示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..47fb9b3 --- /dev/null +++ b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,431 @@ + + + + + diff --git a/uni_modules/uni-notice-bar/package.json b/uni_modules/uni-notice-bar/package.json new file mode 100644 index 0000000..1e9762c --- /dev/null +++ b/uni_modules/uni-notice-bar/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-notice-bar", + "displayName": "uni-notice-bar 通告栏", + "version": "1.2.2", + "description": "NoticeBar 通告栏组件,常用于展示公告信息,可设为滚动公告", + "keywords": [ + "uni-ui", + "uniui", + "通告栏", + "公告", + "跑马灯" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-notice-bar/readme.md b/uni_modules/uni-notice-bar/readme.md new file mode 100644 index 0000000..fb2ede2 --- /dev/null +++ b/uni_modules/uni-notice-bar/readme.md @@ -0,0 +1,13 @@ + + +## NoticeBar 通告栏 +> **组件名:uni-notice-bar** +> 代码块: `uNoticeBar` + + +通告栏组件 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-number-box/changelog.md b/uni_modules/uni-number-box/changelog.md new file mode 100644 index 0000000..adf9221 --- /dev/null +++ b/uni_modules/uni-number-box/changelog.md @@ -0,0 +1,39 @@ +## 1.2.8(2024-04-26) +- 修复 在vue2下H5黑边的bug +## 1.2.7(2024-04-26) +- 修复 在vue2手动输入后失焦导致清空数值的严重bug +## 1.2.6(2024-02-22) +- 新增 设置宽度属性width(单位:px) +## 1.2.5(2024-02-21) +- 修复 step步长小于1时,键盘类型为number的bug +## 1.2.4(2024-02-02) +- 修复 加减号垂直位置偏移样式问题 +## 1.2.3(2023-05-23) +- 更新示例工程 +## 1.2.2(2023-05-08) +- 修复 change 事件执行顺序错误的问题 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) +## 1.1.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-20) +- 修复 uni-number-box 浮点数运算不精确的 bug +- 修复 uni-number-box change 事件触发不正确的 bug +- 新增 uni-number-box v-model 双向绑定 +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 + +## 1.0.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 v-model +- 新增 支持 focus、blur 事件 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..4e203cc --- /dev/null +++ b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,232 @@ + + + diff --git a/uni_modules/uni-number-box/package.json b/uni_modules/uni-number-box/package.json new file mode 100644 index 0000000..4ac9047 --- /dev/null +++ b/uni_modules/uni-number-box/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-number-box", + "displayName": "uni-number-box 数字输入框", + "version": "1.2.8", + "description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。", + "keywords": [ + "uni-ui", + "uniui", + "数字输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-number-box/readme.md b/uni_modules/uni-number-box/readme.md new file mode 100644 index 0000000..affc56f --- /dev/null +++ b/uni_modules/uni-number-box/readme.md @@ -0,0 +1,13 @@ + + +## NumberBox 数字输入框 +> **组件名:uni-number-box** +> 代码块: `uNumberBox` + + +带加减按钮的数字输入框。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-pagination/changelog.md b/uni_modules/uni-pagination/changelog.md new file mode 100644 index 0000000..2e94adc --- /dev/null +++ b/uni_modules/uni-pagination/changelog.md @@ -0,0 +1,27 @@ +## 1.2.4(2022-09-19) +- 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- 修复,未对移动端当前页文字做主题色适配。 +## 1.2.3(2022-09-15) +- 修复未使用 uni-scss 主题色的 bug。 +## 1.2.2(2022-07-06) +- 修复 es 语言 i18n 错误 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination) +## 1.1.2(2021-10-08) +- 修复 current 、value 属性未监听,导致高亮样式失效的 bug +## 1.1.1(2021-08-20) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-12) +- 新增 PC 和 移动端适配不同的 ui +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json new file mode 100644 index 0000000..d6e2897 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "prev", + "uni-pagination.nextText": "next", + "uni-pagination.piecePerPage": "piece/page" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json new file mode 100644 index 0000000..604a113 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "anterior", + "uni-pagination.nextText": "prxima", + "uni-pagination.piecePerPage": "Artculo/Pgina" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json new file mode 100644 index 0000000..a7a0c77 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "précédente", + "uni-pagination.nextText": "suivante", + "uni-pagination.piecePerPage": "Articles/Pages" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json new file mode 100644 index 0000000..782bbe4 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一页", + "uni-pagination.nextText": "下一页", + "uni-pagination.piecePerPage": "条/页" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json new file mode 100644 index 0000000..180fddb --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一頁", + "uni-pagination.nextText": "下一頁", + "uni-pagination.piecePerPage": "條/頁" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..5305b5f --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,465 @@ + + + + + diff --git a/uni_modules/uni-pagination/package.json b/uni_modules/uni-pagination/package.json new file mode 100644 index 0000000..862d5ab --- /dev/null +++ b/uni_modules/uni-pagination/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-pagination", + "displayName": "uni-pagination 分页器", + "version": "1.2.4", + "description": "Pagination 分页器组件,用于展示页码、请求数据等。", + "keywords": [ + "uni-ui", + "uniui", + "分页器", + "页码" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-pagination/readme.md b/uni_modules/uni-pagination/readme.md new file mode 100644 index 0000000..97ea1d6 --- /dev/null +++ b/uni_modules/uni-pagination/readme.md @@ -0,0 +1,11 @@ + + +## Pagination 分页器 +> **组件名:uni-pagination** +> 代码块: `uPagination` + + +分页器组件,用于展示页码、请求数据等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..decd775 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,84 @@ +## 1.9.1(2024-04-02) +- 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法) +## 1.9.0(2024-03-28) +- 修复 uni-popup-dialog 双向绑定时初始化逻辑修正 +## 1.8.9(2024-03-20) +- 修复 uni-popup-dialog 数据输入时修正为双向绑定 +## 1.8.8(2024-02-20) +- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug +## 1.8.7(2024-02-02) +- 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦 +## 1.8.6(2024-01-30) +- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数 +## 1.8.5(2024-01-26) +- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示 +## 1.8.4(2023-11-15) +- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..08707d4 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..f7e667c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue new file mode 100644 index 0000000..5eb8d5b --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..a36c29e --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,503 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..3cfa384 --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.9.1", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-rate/changelog.md b/uni_modules/uni-rate/changelog.md new file mode 100644 index 0000000..8a98a61 --- /dev/null +++ b/uni_modules/uni-rate/changelog.md @@ -0,0 +1,25 @@ +## 1.3.1(2022-02-25) +- 修复 条件判断 `NaN` 错误的 bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate) +## 1.2.2(2021-09-10) +- 优化 默认值修改为 0 颗星 +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-05-12) +- 新增 组件示例地址 +## 1.1.1(2021-04-21) +- 修复 布局变化后 uni-rate 星星计算不准确的 bug +- 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +## 1.1.0(2021-04-16) +- 修复 uni-rate 属性 margin 值为 string 组件失效的 bug + +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 支持 pc 端 diff --git a/uni_modules/uni-rate/components/uni-rate/uni-rate.vue b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue new file mode 100644 index 0000000..857f5f9 --- /dev/null +++ b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/uni_modules/uni-rate/package.json b/uni_modules/uni-rate/package.json new file mode 100644 index 0000000..64e8e33 --- /dev/null +++ b/uni_modules/uni-rate/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-rate", + "displayName": "uni-rate 评分", + "version": "1.3.1", + "description": "Rate 评分组件,可自定义评分星星图标的大小、间隔、评分数。", + "keywords": [ + "uni-ui", + "uniui", + "评分" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-rate/readme.md b/uni_modules/uni-rate/readme.md new file mode 100644 index 0000000..eae7b5c --- /dev/null +++ b/uni_modules/uni-rate/readme.md @@ -0,0 +1,12 @@ + + +## Rate 评分 +> **组件名:uni-rate** +> 代码块: `uRate` +> 关联组件:`uni-icons` + + +评分组件,多用于购买商品后,对商品进行评价等场景 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-row/changelog.md b/uni_modules/uni-row/changelog.md new file mode 100644 index 0000000..5b465bc --- /dev/null +++ b/uni_modules/uni-row/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-row](https://uniapp.dcloud.io/component/uniui/uni-row) +## 0.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 新增uni-row组件 diff --git a/uni_modules/uni-row/components/uni-col/uni-col.vue b/uni_modules/uni-row/components/uni-col/uni-col.vue new file mode 100644 index 0000000..84e2deb --- /dev/null +++ b/uni_modules/uni-row/components/uni-col/uni-col.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/uni_modules/uni-row/components/uni-row/uni-row.vue b/uni_modules/uni-row/components/uni-row/uni-row.vue new file mode 100644 index 0000000..f8e8542 --- /dev/null +++ b/uni_modules/uni-row/components/uni-row/uni-row.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/uni_modules/uni-row/package.json b/uni_modules/uni-row/package.json new file mode 100644 index 0000000..3f52fa6 --- /dev/null +++ b/uni_modules/uni-row/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-row", + "displayName": "uni-row 布局-行", + "version": "1.0.0", + "description": "流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。", + "keywords": [ + "uni-ui", + "uniui", + "栅格", + "布局", + "layout" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-row/readme.md b/uni_modules/uni-row/readme.md new file mode 100644 index 0000000..3c9c8b9 --- /dev/null +++ b/uni_modules/uni-row/readme.md @@ -0,0 +1,10 @@ +## Layout 布局 + +> **组件名 uni-row、uni-col** +> 代码块: `uRow`、`uCol` + + +流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-row) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-search-bar/changelog.md b/uni_modules/uni-search-bar/changelog.md new file mode 100644 index 0000000..2c6571c --- /dev/null +++ b/uni_modules/uni-search-bar/changelog.md @@ -0,0 +1,47 @@ +## 1.3.0(2024-04-22) +- 修复 textColor默认值导致的文字不显示的bug +## 1.2.9(2024-04-17) +- 修复 textColor不生效的bug +## 1.2.8(2024-02-22) +- 修复 清空按钮emit值错误的bug +## 1.2.7(2024-02-21) +- 新增 设置输入框字体颜色:textColor +## 1.2.6(2024-02-20) +- 修复 uni-search-bar在支付宝小程序下样式兼容问题 +## 1.2.5(2024-01-31) +- 修复 uni-search-bar居中问题,现在默认居左,并修复样式偏移问题 +## 1.2.4(2023-05-09) +- 修复 i18n 国际化不正确的 Bug +## 1.2.3(2022-05-24) +- 新增 readonly 属性,组件只读 +## 1.2.2(2022-05-06) +- 修复 vue3 input 事件不生效的bug +## 1.2.1(2022-05-06) +- 修复 多余代码导致的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-search-bar](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +## 1.1.2(2021-08-30) +- 修复 value 属性与 modelValue 属性不兼容的Bug +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 项目示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-04-15) +- uni-ui 新增 uni-search-bar 的 focus 事件 + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持双向绑定 +- 更改 input 事件的返回值,e={value:Number} --> e=value +- 新增 支持图标插槽 +- 新增 支持 clear、blur 事件 +- 新增 支持 focus 属性 +- 去掉组件背景色 diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json new file mode 100644 index 0000000..dd083a5 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "Search enter content" +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json new file mode 100644 index 0000000..d2a1ced --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "取消", + "uni-search-bar.placeholder": "请输入搜索内容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json new file mode 100644 index 0000000..f1c96bc --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "取消", + "uni-search-bar.placeholder": "請輸入搜索內容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue new file mode 100644 index 0000000..6b9b9c1 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue @@ -0,0 +1,309 @@ + + + + + diff --git a/uni_modules/uni-search-bar/package.json b/uni_modules/uni-search-bar/package.json new file mode 100644 index 0000000..1730d9d --- /dev/null +++ b/uni_modules/uni-search-bar/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-search-bar", + "displayName": "uni-search-bar 搜索栏", + "version": "1.3.0", + "description": "搜索栏组件,通常用于搜索商品、文章等", + "keywords": [ + "uni-ui", + "uniui", + "搜索框", + "搜索栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/readme.md b/uni_modules/uni-search-bar/readme.md new file mode 100644 index 0000000..253092f --- /dev/null +++ b/uni_modules/uni-search-bar/readme.md @@ -0,0 +1,14 @@ + + +## SearchBar 搜索栏 + +> **组件名:uni-search-bar** +> 代码块: `uSearchBar` + + +搜索栏组件 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-section/changelog.md b/uni_modules/uni-section/changelog.md new file mode 100644 index 0000000..738f2b3 --- /dev/null +++ b/uni_modules/uni-section/changelog.md @@ -0,0 +1,2 @@ +## 0.0.1(2022-07-22) +- 初始化 diff --git a/uni_modules/uni-section/components/uni-section/uni-section.vue b/uni_modules/uni-section/components/uni-section/uni-section.vue new file mode 100644 index 0000000..9a52e0b --- /dev/null +++ b/uni_modules/uni-section/components/uni-section/uni-section.vue @@ -0,0 +1,167 @@ + + + + diff --git a/uni_modules/uni-section/package.json b/uni_modules/uni-section/package.json new file mode 100644 index 0000000..0a31fb5 --- /dev/null +++ b/uni_modules/uni-section/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-section", + "displayName": "uni-section 标题栏", + "version": "0.0.1", + "description": "标题栏组件", + "keywords": [ + "uni-ui", + "uniui", + "标题栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-section/readme.md b/uni_modules/uni-section/readme.md new file mode 100644 index 0000000..d47faab --- /dev/null +++ b/uni_modules/uni-section/readme.md @@ -0,0 +1,8 @@ +## Section 标题栏 +> **组件名:uni-section** +> 代码块: `uSection` + +uni-section 组件主要用于文章、列表详情等标题展示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-segmented-control/changelog.md b/uni_modules/uni-segmented-control/changelog.md new file mode 100644 index 0000000..02d0c8a --- /dev/null +++ b/uni_modules/uni-segmented-control/changelog.md @@ -0,0 +1,15 @@ +## 1.2.3(2024-04-02) +- 修复 修复在微信小程序下inactiveColor失效bug +## 1.2.2(2024-03-28) +- 修复 在vue2下:style动态绑定导致编译失败的bug +## 1.2.1(2024-03-20) +- 新增 inActiveColor属性,可供配置未激活时的颜色 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-segmented-control](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-05-12) +- 新增 项目示例地址 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue new file mode 100644 index 0000000..a69366a --- /dev/null +++ b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/uni_modules/uni-segmented-control/package.json b/uni_modules/uni-segmented-control/package.json new file mode 100644 index 0000000..49f9eff --- /dev/null +++ b/uni_modules/uni-segmented-control/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-segmented-control", + "displayName": "uni-segmented-control 分段器", + "version": "1.2.3", + "description": "分段器由至少 2 个分段控件组成,用作不同视图的显示", + "keywords": [ + "uni-ui", + "uniui", + "分段器", + "segement", + "顶部选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-segmented-control/readme.md b/uni_modules/uni-segmented-control/readme.md new file mode 100644 index 0000000..3527b03 --- /dev/null +++ b/uni_modules/uni-segmented-control/readme.md @@ -0,0 +1,13 @@ + + +## SegmentedControl 分段器 +> **组件名:uni-segmented-control** +> 代码块: `uSegmentedControl` + + +用作不同视图的显示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-steps/changelog.md b/uni_modules/uni-steps/changelog.md new file mode 100644 index 0000000..04367d8 --- /dev/null +++ b/uni_modules/uni-steps/changelog.md @@ -0,0 +1,18 @@ +## 1.1.2(2024-03-28) +- 修复 uni-steps为竖排列时,文本长度过长引起点错乱的bug +## 1.1.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-steps](https://uniapp.dcloud.io/component/uniui/uni-steps) +## 1.0.8(2021-05-12) +- 新增 项目示例地址 +## 1.0.7(2021-05-06) +- 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-steps/components/uni-steps/uni-steps.vue b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue new file mode 100644 index 0000000..81017fc --- /dev/null +++ b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/uni_modules/uni-steps/package.json b/uni_modules/uni-steps/package.json new file mode 100644 index 0000000..4145ce9 --- /dev/null +++ b/uni_modules/uni-steps/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-steps", + "displayName": "uni-steps 步骤条", + "version": "1.1.2", + "description": "步骤条组件,提供横向和纵向两种布局格式。", + "keywords": [ + "uni-ui", + "uniui", + "步骤条", + "时间轴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-steps/readme.md b/uni_modules/uni-steps/readme.md new file mode 100644 index 0000000..da7a4bf --- /dev/null +++ b/uni_modules/uni-steps/readme.md @@ -0,0 +1,13 @@ + + +## Steps 步骤条 +> **组件名:uni-steps** +> 代码块: `uSteps` + + +步骤条,常用于显示进度 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-steps) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-swipe-action/changelog.md b/uni_modules/uni-swipe-action/changelog.md new file mode 100644 index 0000000..e28472f --- /dev/null +++ b/uni_modules/uni-swipe-action/changelog.md @@ -0,0 +1,47 @@ +## 1.3.10(2024-01-17) +- 修复 点击按钮时,按钮会被点击穿透导致自动收缩的 bug(兼容阿里/百度/抖音小程序) +## 1.3.9(2024-01-17) +- 修复 点击按钮时,按钮会被点击穿透导致自动收缩的 bug +## 1.3.8(2023-04-13) +- 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +## 1.3.7(2022-06-06) +- 修复 vue3 下使用组件不能正常运行的Bug +## 1.3.6(2022-05-31) +- 修复 h5端点击click触发两次的Bug +## 1.3.5(2022-05-23) +- 修复 isPC 找不到的Bug +## 1.3.4(2022-05-19) +- 修复 在 nvue 下 disabled 失效的bug +## 1.3.3(2022-03-31) +- 修复 按钮字体大小不能设置的bug +## 1.3.2(2022-03-16) +- 修复 h5和app端下报el错误的bug +## 1.3.1(2022-03-07) +- 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swipe-action](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +## 1.2.4(2021-08-20) +- 优化 close-all 方法 +## 1.2.3(2021-08-20) +- 新增 close-all 方法,关闭所有已打开的组件 +## 1.2.2(2021-08-17) +- 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.2.1(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.1.10(2021-06-17) +- 修复 按钮点击执行两次的bug +## 1.1.9(2021-05-12) +- 新增 项目示例地址 +## 1.1.8(2021-03-26) +- 修复 微信小程序 nv_navigator is not defined 报错的bug +## 1.1.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 左侧滑动 +- 新增 插槽使用方式 +- 新增 threshold 属性,可以控制滑动缺省值 +- 优化 长列表滚动性能 +- 修复 滚动页面时触发组件滑动的Bug diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js new file mode 100644 index 0000000..707e432 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js @@ -0,0 +1,302 @@ +let bindIngXMixins = {} + +// #ifdef APP-NVUE +const BindingX = uni.requireNativePlugin('bindingx'); +const dom = uni.requireNativePlugin('dom'); +const animation = uni.requireNativePlugin('animation'); + +bindIngXMixins = { + data() { + return {} + }, + + watch: { + show(newVal) { + if (this.autoClose) return + if (this.stop) return + this.stop = true + if (newVal) { + this.open(newVal) + } else { + this.close() + } + }, + leftOptions() { + this.getSelectorQuery() + this.init() + }, + rightOptions(newVal) { + this.init() + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.box = this.getEl(this.$refs['selector-box--hock']) + this.selector = this.getEl(this.$refs['selector-content--hock']); + this.leftButton = this.getEl(this.$refs['selector-left-button--hock']); + this.rightButton = this.getEl(this.$refs['selector-right-button--hock']); + this.init() + }, + // beforeDestroy() { + // this.swipeaction.children.forEach((item, index) => { + // if (item === this) { + // this.swipeaction.children.splice(index, 1) + // } + // }) + // }, + methods: { + init() { + this.$nextTick(() => { + this.x = 0 + this.button = { + show: false + } + setTimeout(() => { + this.getSelectorQuery() + }, 200) + }) + }, + onClick(index, item, position) { + this.$emit('click', { + content: item, + index, + position + }) + }, + touchstart(e) { + // fix by mehaotian 禁止滑动 + if (this.disabled) return + // 每次只触发一次,避免多次监听造成闪烁 + if (this.stop) return + this.stop = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + let expression = this.range(this.x, -rightWidth, leftWidth) + let leftExpression = this.range(this.x - leftWidth, -leftWidth, 0) + let rightExpression = this.range(this.x + rightWidth, 0, rightWidth) + + this.eventpan = BindingX.bind({ + anchor: this.box, + eventType: 'pan', + props: [{ + element: this.selector, + property: 'transform.translateX', + expression + }, { + element: this.leftButton, + property: 'transform.translateX', + expression: leftExpression + }, { + element: this.rightButton, + property: 'transform.translateX', + expression: rightExpression + }, ] + }, (e) => { + // nope + if (e.state === 'end') { + this.x = e.deltaX + this.x; + this.isclick = true + this.bindTiming(e.deltaX) + } + }); + }, + touchend(e) { + if (this.isopen !== 'none' && !this.isclick) { + this.open('none') + } + }, + bindTiming(x) { + const left = this.x + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + const threshold = this.threshold + if (!this.isopen || this.isopen === 'none') { + if (left > threshold) { + this.open('left') + } else if (left < -threshold) { + this.open('right') + } else { + this.open('none') + } + } else { + if ((x > -leftWidth && x < 0) || x > rightWidth) { + if ((x > -threshold && x < 0) || (x - rightWidth > threshold)) { + this.open('left') + } else { + this.open('none') + } + } else { + if ((x < threshold && x > 0) || (x + leftWidth < -threshold)) { + this.open('right') + } else { + this.open('none') + } + } + } + }, + + /** + * 移动范围 + * @param {Object} num + * @param {Object} mix + * @param {Object} max + */ + range(num, mix, max) { + return `min(max(x+${num}, ${mix}), ${max})` + }, + + /** + * 开启swipe + */ + open(type) { + this.animation(type) + }, + + /** + * 关闭swipe + */ + close() { + this.animation('none') + }, + + /** + * 开启关闭动画 + * @param {Object} type + */ + animation(type) { + const time = 300 + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + if (this.eventpan && this.eventpan.token) { + BindingX.unbind({ + token: this.eventpan.token, + eventType: 'pan' + }) + } + + switch (type) { + case 'left': + Promise.all([ + this.move(this.selector, leftWidth), + this.move(this.leftButton, 0), + this.move(this.rightButton, rightWidth * 2) + ]).then(() => { + this.setEmit(leftWidth, type) + }) + break + case 'right': + Promise.all([ + this.move(this.selector, -rightWidth), + this.move(this.leftButton, -leftWidth * 2), + this.move(this.rightButton, 0) + ]).then(() => { + this.setEmit(-rightWidth, type) + }) + break + default: + Promise.all([ + this.move(this.selector, 0), + this.move(this.leftButton, -leftWidth), + this.move(this.rightButton, rightWidth) + ]).then(() => { + this.setEmit(0, type) + }) + + } + }, + setEmit(x, type) { + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + this.isopen = this.isopen || 'none' + this.stop = false + this.isclick = false + // 只有状态不一致才会返回结果 + if (this.isopen !== type && this.x !== x) { + if (type === 'left' && leftWidth > 0) { + this.$emit('change', 'left') + } + if (type === 'right' && rightWidth > 0) { + this.$emit('change', 'right') + } + if (type === 'none') { + this.$emit('change', 'none') + } + } + this.x = x + this.isopen = type + }, + move(ref, value) { + return new Promise((resolve, reject) => { + animation.transition(ref, { + styles: { + transform: `translateX(${value})`, + }, + duration: 150, //ms + timingFunction: 'linear', + needLayout: false, + delay: 0 //ms + }, function(res) { + resolve(res) + }) + }) + + }, + + /** + * 获取ref + * @param {Object} el + */ + getEl(el) { + return el.ref + }, + /** + * 获取节点信息 + */ + getSelectorQuery() { + Promise.all([ + this.getDom('left'), + this.getDom('right'), + ]).then((data) => { + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + + if (show === 'none') { + // this.close() + } else { + this.open(show) + } + + }) + + }, + getDom(str) { + return new Promise((resolve, reject) => { + dom.getComponentRect(this.$refs[`selector-${str}-button--hock`], (data) => { + if (data) { + this.button[str] = data.size + resolve(data) + } else { + reject() + } + }) + }) + } + } +} + +// #endif + +export default bindIngXMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js new file mode 100644 index 0000000..917cb48 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js @@ -0,0 +1,12 @@ +export function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (let v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js new file mode 100644 index 0000000..35c796b --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js @@ -0,0 +1,195 @@ +export default { + data() { + return { + x: 0, + transition: false, + width: 0, + viewWidth: 0, + swipeShow: 0 + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + if (newVal && newVal !== 'none') { + this.transition = true + this.open(newVal) + } else { + this.close() + } + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.isopen = false + setTimeout(() => { + this.getQuerySelect() + }, 50) + }, + methods: { + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + /** + * 移动触发 + * @param {Object} e + */ + onChange(e) { + this.moveX = e.detail.x + this.isclose = false + }, + touchstart(e) { + this.transition = false + this.isclose = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + touchmove(e) {}, + touchend(e) { + // 0的位置什么都不执行 + if (this.isclose && this.isopen === 'none') return + if (this.isclose && this.isopen !== 'none') { + this.transition = true + this.close() + } else { + this.move(this.moveX + this.leftWidth) + } + }, + + /** + * 移动 + * @param {Object} moveX + */ + move(moveX) { + // 打开关闭的处理逻辑不太一样 + this.transition = true + // 未打开状态 + if (!this.isopen || this.isopen === 'none') { + if (moveX > this.threshold) { + this.open('left') + } else if (moveX < -this.threshold) { + this.open('right') + } else { + this.close() + } + } else { + if (moveX < 0 && moveX < this.rightWidth) { + const rightX = this.rightWidth + moveX + if (rightX < this.threshold) { + this.open('right') + } else { + this.close() + } + } else if (moveX > 0 && moveX < this.leftWidth) { + const leftX = this.leftWidth - moveX + if (leftX < this.threshold) { + this.open('left') + } else { + this.close() + } + } + + } + + }, + + /** + * 打开 + */ + open(type) { + this.x = this.moveX + this.animation(type) + }, + + /** + * 关闭 + */ + close() { + this.x = this.moveX + // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化 + this.$nextTick(() => { + this.x = -this.leftWidth + if (this.isopen !== 'none') { + this.$emit('change', 'none') + } + this.isopen = 'none' + }) + }, + + /** + * 执行结束动画 + * @param {Object} type + */ + animation(type) { + this.$nextTick(() => { + if (type === 'left') { + this.x = 0 + } else { + this.x = -this.rightWidth - this.leftWidth + } + + if (this.isopen !== type) { + this.$emit('change', type) + } + this.isopen = type + }) + + }, + getSlide(x) {}, + getQuerySelect() { + const query = uni.createSelectorQuery().in(this); + query.selectAll('.movable-view--hock').boundingClientRect(data => { + this.leftWidth = data[1].width + this.rightWidth = data[2].width + this.width = data[0].width + this.viewWidth = this.width + this.rightWidth + this.leftWidth + if (this.leftWidth === 0) { + // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点 + this.x = -0.1 + } else { + this.x = -this.leftWidth + } + this.moveX = this.x + this.$nextTick(() => { + this.swipeShow = 1 + }) + + if (!this.buttonWidth) { + this.disabledView = true + } + + if (this.autoClose) return + if (this.show !== 'none') { + this.transition = true + this.open(this.shows) + } + }).exec(); + + } + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js new file mode 100644 index 0000000..d389bce --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js @@ -0,0 +1,260 @@ +let otherMixins = {} + +// #ifndef APP-PLUS|| MP-WEIXIN || H5 +const MIN_DISTANCE = 10; +otherMixins = { + data() { + // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug + const elClass = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}` + return { + uniShow: false, + left: 0, + buttonShow: 'none', + ani: false, + moveLeft: '', + elClass + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + left() { + this.moveLeft = `translateX(${this.left}px)` + }, + buttonShow(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + leftOptions() { + this.init() + }, + rightOptions() { + this.init() + } + }, + mounted() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + this.init() + }, + methods: { + init() { + clearTimeout(this.timer) + this.timer = setTimeout(() => { + this.getSelectorQuery() + }, 100) + // 移动距离 + this.left = 0 + this.x = 0 + }, + + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + touchstart(e) { + if (this.disabled) return + this.ani = false + this.x = this.left || 0 + this.stopTouchStart(e) + this.autoClose && this.closeSwipe() + }, + touchmove(e) { + if (this.disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e); + if (this.direction !== 'horizontal') { + return; + } + this.move(this.x + this.deltaX) + return false + }, + touchend() { + if (this.disabled) return + this.moveDirection(this.left) + }, + /** + * 设置移动距离 + * @param {Object} value + */ + move(value) { + value = value || 0 + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + // 获取可滑动范围 + this.left = this.range(value, -rightWidth, leftWidth); + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + */ + moveDirection(left) { + const threshold = this.threshold + const isopen = this.isopen || 'none' + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + if (this.deltaX === 0) { + this.openState('none') + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > + 0 && rightWidth + + left < threshold)) { + // right + this.openState('right') + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > + 0 && + leftWidth - left < threshold)) { + // left + this.openState('left') + } else { + // default + this.openState('none') + } + }, + + /** + * 开启状态 + * @param {Boolean} type + */ + openState(type) { + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + let left = '' + this.isopen = this.isopen ? this.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + + if (this.isopen !== type) { + this.throttle = true + this.$emit('change', type) + } + + this.isopen = type + // 添加动画类 + this.ani = true + this.$nextTick(() => { + this.move(left) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 + }, + close() { + this.openState('none') + }, + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus() { + this.direction = ''; + this.deltaX = 0; + this.deltaY = 0; + this.offsetX = 0; + this.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event) { + this.resetTouchStatus(); + const touch = event.touches[0]; + this.startX = touch.clientX; + this.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event) { + const touch = event.touches[0]; + this.deltaX = touch.clientX - this.startX; + this.deltaY = touch.clientY - this.startY; + this.offsetX = Math.abs(this.deltaX); + this.offsetY = Math.abs(this.deltaY); + this.direction = this.direction || this.getDirection(this.offsetX, this.offsetY); + }, + + getSelectorQuery() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.' + this.elClass) + .boundingClientRect(data => { + if (data.length === 0) return + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + this.leftWidth = data[0].width || 0 + this.rightWidth = data[1].width || 0 + this.buttonShow = show + }) + .exec() + } + } +} + +// #endif + +export default otherMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js new file mode 100644 index 0000000..08de1c9 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js @@ -0,0 +1,84 @@ +let mpMixins = {} +let is_pc = null +// #ifdef H5 +import { + isPC +} from "./isPC" +is_pc = isPC() +// #endif +// #ifdef APP-VUE|| MP-WEIXIN || H5 + +mpMixins = { + data() { + return { + is_show: 'none' + } + }, + watch: { + show(newVal) { + this.is_show = this.show + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.is_show = this.show + }, + methods: { + // wxs 中调用 + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + + change(e) { + this.$emit('change', e.open) + if (this.is_show !== e.open) { + this.is_show = e.open + } + }, + + appTouchStart(e) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + onClickForPC(index, item, position) { + if (!is_pc) return + // #ifdef H5 + this.$emit('click', { + content: item, + index, + position + }) + // #endif + } + } +} + +// #endif +export default mpMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js new file mode 100644 index 0000000..78f0ec6 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js @@ -0,0 +1,270 @@ +const MIN_DISTANCE = 10; +export default { + showWatch(newVal, oldVal, ownerInstance, instance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + if (!$el) return + this.getDom(instance, ownerInstance, self) + if (newVal && newVal !== 'none') { + this.openState(newVal, instance, ownerInstance, self) + return + } + + if (state.left) { + this.openState('none', instance, ownerInstance, self) + } + this.resetTouchStatus(instance, self) + }, + + /** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ + touchstart(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state; + this.getDom(instance, ownerInstance, self) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + this.stopTouchStart(e, ownerInstance, self) + }, + + /** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchmove(e, ownerInstance, self) { + let instance = e.instance; + // 删除之后已经那不到实例了 + if (!instance) return; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e, self); + if (state.direction !== 'horizontal') { + return; + } + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + let x = state.x + state.deltaX + this.move(x, instance, ownerInstance, self) + }, + + /** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchend(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + this.moveDirection(state.left, instance, ownerInstance, self) + + }, + + /** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ + move(value, instance, ownerInstance, self) { + value = value || 0 + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = this.range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + + }, + + /** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ + getDom(instance, ownerInstance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + var leftDom = $el.querySelector('.button-group--left') + var rightDom = $el.querySelector('.button-group--right') + + state.leftWidth = leftDom.offsetWidth || 0 + state.rightWidth = rightDom.offsetWidth || 0 + state.threshold = instance.getDataset().threshold + }, + + getDisabledType(value) { + return (typeof(value) === 'string' ? JSON.parse(value) : value) || false; + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + + + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ + moveDirection(left, ins, ownerInstance, self) { + var state = self.state + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + this.openState('none', ins, ownerInstance, self) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + this.openState('right', ins, ownerInstance, self) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + this.openState('left', ins, ownerInstance, self) + } else { + // default + this.openState('none', ins, ownerInstance, self) + } + }, + + + /** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ + openState(type, ins, ownerInstance, self) { + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + let left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(() => { + ins.addClass('ani'); + this.move(left, ins, ownerInstance, self) + }) + }, + + + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus(instance, self) { + let state = self.state; + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event, ownerInstance, self) { + let instance = event.instance; + let state = self.state + this.resetTouchStatus(instance, self); + var touch = event.touches[0]; + state.startX = touch.clientX; + state.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event, self) { + let instance = event.instance; + let state = self.state; + let touch = event.touches[0]; + + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || this.getDirection(state.offsetX, state.offsetY); + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue new file mode 100644 index 0000000..7538671 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue @@ -0,0 +1,348 @@ + + + + + + diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs new file mode 100644 index 0000000..b394244 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs @@ -0,0 +1,341 @@ +var MIN_DISTANCE = 10; + +/** + * 判断当前是否为H5、app-vue + */ +var IS_HTML5 = false +if (typeof window === 'object') IS_HTML5 = true + +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function showWatch(newVal, oldVal, ownerInstance, instance) { + var state = instance.getState() + getDom(instance, ownerInstance) + if (newVal && newVal !== 'none') { + openState(newVal, instance, ownerInstance) + return + } + + if (state.left) { + openState('none', instance, ownerInstance) + } + resetTouchStatus(instance) +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState(); + getDom(instance, ownerInstance) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + stopTouchStart(e, ownerInstance) +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 是否可以滑动页面 + stopTouchMove(e); + if (state.direction !== 'horizontal') { + return; + } + + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + + move(state.x + state.deltaX, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, instance, ownerInstance) + +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + value = value || 0 + var state = instance.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + +} + +/** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ +function getDom(instance, ownerInstance) { + var state = instance.getState() + var leftDom = ownerInstance.selectComponent('.button-group--left') + var rightDom = ownerInstance.selectComponent('.button-group--right') + var leftStyles = { + width: 0 + } + var rightStyles = { + width: 0 + } + leftStyles = leftDom.getBoundingClientRect() + rightStyles = rightDom.getBoundingClientRect() + + state.leftWidth = leftStyles.width || 0 + state.rightWidth = rightStyles.width || 0 + state.threshold = instance.getDataset().threshold +} + +/** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} + + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, ins, ownerInstance) { + var state = ins.getState() + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + openState('none', ins, ownerInstance) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + openState('right', ins, ownerInstance) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + openState('left', ins, ownerInstance) + } else { + // default + openState('none', ins, ownerInstance) + } +} + + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + var left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(function() { + ins.addClass('ani'); + move(left, ins, ownerInstance) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 +} + + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; +} + +/** + * 重置滑动状态 + * @param {Object} event + */ +function resetTouchStatus(instance) { + var state = instance.getState(); + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +} + +/** + * 设置滑动开始位置 + * @param {Object} event + */ +function stopTouchStart(event) { + var instance = event.instance; + var state = instance.getState(); + resetTouchStatus(instance); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.startX = touch.clientX; + state.startY = touch.clientY; +} + +/** + * 滑动中,是否禁止打开 + * @param {Object} event + */ +function stopTouchMove(event) { + var instance = event.instance; + var state = instance.getState(); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || getDirection(state.offsetX, state.offsetY); +} + +function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +var movable = false + +function mousedown(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchstart(e, ins) + movable = true +} + +function mousemove(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + if (!movable) return + touchmove(e, ins) +} + +function mouseup(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchend(e, ins) + movable = false +} + +function mouseleave(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + movable = false +} + +module.exports = { + showWatch: showWatch, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseleave: mouseleave +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue new file mode 100644 index 0000000..4971782 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/uni_modules/uni-swipe-action/package.json b/uni_modules/uni-swipe-action/package.json new file mode 100644 index 0000000..fc5dd8a --- /dev/null +++ b/uni_modules/uni-swipe-action/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-swipe-action", + "displayName": "uni-swipe-action 滑动操作", + "version": "1.3.10", + "description": "SwipeAction 滑动操作操作组件", + "keywords": [ + "", + "uni-ui", + "uniui", + "滑动删除", + "侧滑删除" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-swipe-action/readme.md b/uni_modules/uni-swipe-action/readme.md new file mode 100644 index 0000000..93a5cac --- /dev/null +++ b/uni_modules/uni-swipe-action/readme.md @@ -0,0 +1,11 @@ + + +## SwipeAction 滑动操作 +> **组件名:uni-swipe-action** +> 代码块: `uSwipeAction`、`uSwipeActionItem` + + +通过滑动触发选项的容器 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/changelog.md b/uni_modules/uni-swiper-dot/changelog.md new file mode 100644 index 0000000..85cf54d --- /dev/null +++ b/uni_modules/uni-swiper-dot/changelog.md @@ -0,0 +1,12 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 clickItem 事件,支持指示点控制轮播 +- 新增 支持 pc 可用 diff --git a/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..e66b6c7 --- /dev/null +++ b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/uni_modules/uni-swiper-dot/package.json b/uni_modules/uni-swiper-dot/package.json new file mode 100644 index 0000000..f2dd8d2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swiper-dot", + "displayName": "uni-swiper-dot 轮播图指示点", + "version": "1.2.0", + "description": "自定义轮播图指示点组件", + "keywords": [ + "uni-ui", + "uniui", + "轮播图指示点", + "dot", + "swiper" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/readme.md b/uni_modules/uni-swiper-dot/readme.md new file mode 100644 index 0000000..7d397e2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/readme.md @@ -0,0 +1,11 @@ + + +## SwiperDot 轮播图指示点 +> **组件名:uni-swiper-dot** +> 代码块: `uSwiperDot` + + +自定义轮播图指示点 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-table/changelog.md b/uni_modules/uni-table/changelog.md new file mode 100644 index 0000000..842211c --- /dev/null +++ b/uni_modules/uni-table/changelog.md @@ -0,0 +1,29 @@ +## 1.2.4(2023-12-19) +- 修复 uni-tr只有一列时minWidth计算错误,列变化实时计算更新 +## 1.2.3(2023-03-28) +- 修复 在vue3模式下可能会出现错误的问题 +## 1.2.2(2022-11-29) +- 优化 主题样式 +## 1.2.1(2022-06-06) +- 修复 微信小程序存在无使用组件的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-07-08) +- 新增 uni-th 支持 date 日期筛选范围 +## 1.0.6(2021-07-05) +- 新增 uni-th 支持 range 筛选范围 +## 1.0.5(2021-06-28) +- 新增 uni-th 筛选功能 +## 1.0.4(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.3(2021-04-16) +- 新增 sortable 属性,是否开启单列排序 +- 优化 表格多选逻辑 +## 1.0.2(2021-03-22) +- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-table/components/uni-table/uni-table.vue b/uni_modules/uni-table/components/uni-table/uni-table.vue new file mode 100644 index 0000000..21d9527 --- /dev/null +++ b/uni_modules/uni-table/components/uni-table/uni-table.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue new file mode 100644 index 0000000..fbe1bdc --- /dev/null +++ b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-td/uni-td.vue b/uni_modules/uni-table/components/uni-td/uni-td.vue new file mode 100644 index 0000000..9ce93e9 --- /dev/null +++ b/uni_modules/uni-table/components/uni-td/uni-td.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/filter-dropdown.vue b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue new file mode 100644 index 0000000..df22a71 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/uni-th.vue b/uni_modules/uni-table/components/uni-th/uni-th.vue new file mode 100644 index 0000000..14889dd --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/uni-th.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-thead/uni-thead.vue b/uni_modules/uni-table/components/uni-thead/uni-thead.vue new file mode 100644 index 0000000..53b5c4c --- /dev/null +++ b/uni_modules/uni-table/components/uni-thead/uni-thead.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/table-checkbox.vue b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue new file mode 100644 index 0000000..1089187 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/uni-tr.vue b/uni_modules/uni-table/components/uni-tr/uni-tr.vue new file mode 100644 index 0000000..3fb76f4 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/uni-tr.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uni-table/i18n/en.json b/uni_modules/uni-table/i18n/en.json new file mode 100644 index 0000000..e32023c --- /dev/null +++ b/uni_modules/uni-table/i18n/en.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reset", + "filter-dropdown.search": "Search", + "filter-dropdown.submit": "Submit", + "filter-dropdown.filter": "Filter", + "filter-dropdown.gt": "Greater or equal to", + "filter-dropdown.lt": "Less than or equal to", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/es.json b/uni_modules/uni-table/i18n/es.json new file mode 100644 index 0000000..9afd04b --- /dev/null +++ b/uni_modules/uni-table/i18n/es.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reiniciar", + "filter-dropdown.search": "Búsqueda", + "filter-dropdown.submit": "Entregar", + "filter-dropdown.filter": "Filtrar", + "filter-dropdown.gt": "Mayor o igual a", + "filter-dropdown.lt": "Menos que o igual a", + "filter-dropdown.date": "Fecha" +} diff --git a/uni_modules/uni-table/i18n/fr.json b/uni_modules/uni-table/i18n/fr.json new file mode 100644 index 0000000..b006237 --- /dev/null +++ b/uni_modules/uni-table/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Réinitialiser", + "filter-dropdown.search": "Chercher", + "filter-dropdown.submit": "Soumettre", + "filter-dropdown.filter": "Filtre", + "filter-dropdown.gt": "Supérieur ou égal à", + "filter-dropdown.lt": "Inférieur ou égal à", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/index.js b/uni_modules/uni-table/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-table/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-table/i18n/zh-Hans.json b/uni_modules/uni-table/i18n/zh-Hans.json new file mode 100644 index 0000000..862af17 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "确定", + "filter-dropdown.filter": "筛选", + "filter-dropdown.gt": "大于等于", + "filter-dropdown.lt": "小于等于", + "filter-dropdown.date": "日期范围" +} diff --git a/uni_modules/uni-table/i18n/zh-Hant.json b/uni_modules/uni-table/i18n/zh-Hant.json new file mode 100644 index 0000000..64f8061 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "確定", + "filter-dropdown.filter": "篩選", + "filter-dropdown.gt": "大於等於", + "filter-dropdown.lt": "小於等於", + "filter-dropdown.date": "日期範圍" +} diff --git a/uni_modules/uni-table/package.json b/uni_modules/uni-table/package.json new file mode 100644 index 0000000..a52821b --- /dev/null +++ b/uni_modules/uni-table/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-table", + "displayName": "uni-table 表格", + "version": "1.2.4", + "description": "表格组件,多用于展示多条结构类似的数据,如", + "keywords": [ + "uni-ui", + "uniui", + "table", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-datetime-picker"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "n", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-table/readme.md b/uni_modules/uni-table/readme.md new file mode 100644 index 0000000..bb08c79 --- /dev/null +++ b/uni_modules/uni-table/readme.md @@ -0,0 +1,13 @@ + + +## Table 表单 +> 组件名:``uni-table``,代码块: `uTable`。 + +用于展示多条结构类似的数据 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + diff --git a/uni_modules/uni-tag/changelog.md b/uni_modules/uni-tag/changelog.md new file mode 100644 index 0000000..ddee87a --- /dev/null +++ b/uni_modules/uni-tag/changelog.md @@ -0,0 +1,23 @@ +## 2.1.1(2024-03-20) +- 优化 app下边框过窄导致不显示的bug +## 2.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-tag](https://uniapp.dcloud.io/component/uniui/uni-tag) +## 2.0.0(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +- 移除 插槽 +- 移除 type 属性的 royal 选项 +## 1.1.1(2021-08-11) +- type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-06-18) +- 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.0.6(2021-06-04) +- 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.0.5(2021-05-10) +- 修复 royal 类型无效的bug +- 修复 uni-tag 宽度不自适应的bug +- 新增 uni-tag 支持属性 custom-style 自定义样式 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-tag/components/uni-tag/uni-tag.vue b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue new file mode 100644 index 0000000..7274436 --- /dev/null +++ b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uni-tag/package.json b/uni_modules/uni-tag/package.json new file mode 100644 index 0000000..71b41eb --- /dev/null +++ b/uni_modules/uni-tag/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-tag", + "displayName": "uni-tag 标签", + "version": "2.1.1", + "description": "Tag 组件,用于展示1个或多个文字标签,可点击切换选中、不选中的状态。", + "keywords": [ + "uni-ui", + "uniui", + "", + "tag", + "标签" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tag/readme.md b/uni_modules/uni-tag/readme.md new file mode 100644 index 0000000..6e78ff5 --- /dev/null +++ b/uni_modules/uni-tag/readme.md @@ -0,0 +1,13 @@ + + +## Tag 标签 +> **组件名:uni-tag** +> 代码块: `uTag` + + +用于展示1个或多个文字标签,可点击切换选中、不选中的状态 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tag) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-test/changelog.md b/uni_modules/uni-test/changelog.md new file mode 100644 index 0000000..2f3b102 --- /dev/null +++ b/uni_modules/uni-test/changelog.md @@ -0,0 +1,39 @@ +## 2.0.13(2021-11-18) +邱 +## 2.0.12(2021-11-18) +123123 +## 2.0.11(2021-11-18) +0000 +## 2.0.10(2021-11-18) +111234 +## 2.0.9(2021-11-18) +3333 +## 2.0.8(2021-11-18) +=== +## 2.0.7(2021-11-18) +111 +## 2.0.6(2021-05-26) +- test +## 0.0.37(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.36(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.35(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.34(2021-03-23) +- 测试新同步插件 +## 0.0.33(2021-03-09) +- test +## 0.0.32(2021-02-24) +- 更新 read 2 +## 0.0.31(2021-02-24) +- 同步 readme.md diff --git a/uni_modules/uni-test/components/uni-test/uni-test.vue b/uni_modules/uni-test/components/uni-test/uni-test.vue new file mode 100644 index 0000000..9ea8aaf --- /dev/null +++ b/uni_modules/uni-test/components/uni-test/uni-test.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/uni_modules/uni-test/package.json b/uni_modules/uni-test/package.json new file mode 100644 index 0000000..9a3c4c4 --- /dev/null +++ b/uni_modules/uni-test/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-test", + "displayName": "Test 测试插件", + "version": "2.0.13", + "description": "测试插件 ", + "keywords": [ + "test" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.3" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-test/readme.md b/uni_modules/uni-test/readme.md new file mode 100644 index 0000000..ddb24c6 --- /dev/null +++ b/uni_modules/uni-test/readme.md @@ -0,0 +1,10 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) \ No newline at end of file diff --git a/uni_modules/uni-title/changelog.md b/uni_modules/uni-title/changelog.md new file mode 100644 index 0000000..7626216 --- /dev/null +++ b/uni_modules/uni-title/changelog.md @@ -0,0 +1,10 @@ +## 1.1.1(2022-05-19) +- 修改组件描述 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-title](https://uniapp.dcloud.io/component/uniui/uni-title) +## 1.0.2(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-title/components/uni-title/uni-title.vue b/uni_modules/uni-title/components/uni-title/uni-title.vue new file mode 100644 index 0000000..bf4f926 --- /dev/null +++ b/uni_modules/uni-title/components/uni-title/uni-title.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-title/package.json b/uni_modules/uni-title/package.json new file mode 100644 index 0000000..2249f5a --- /dev/null +++ b/uni_modules/uni-title/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-title", + "displayName": "uni-title 章节标题", + "version": "1.1.1", + "description": "章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题", + "keywords": [ + "uni-ui", + "uniui", + "标题", + "章节", + "章节标题", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-title/readme.md b/uni_modules/uni-title/readme.md new file mode 100644 index 0000000..0e60b1b --- /dev/null +++ b/uni_modules/uni-title/readme.md @@ -0,0 +1,14 @@ + + +## Title 标题 +> **组件名:uni-title** +> 代码块: `uTitle` + + +章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-title) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + diff --git a/uni_modules/uni-tooltip/changelog.md b/uni_modules/uni-tooltip/changelog.md new file mode 100644 index 0000000..285b676 --- /dev/null +++ b/uni_modules/uni-tooltip/changelog.md @@ -0,0 +1,16 @@ +## 0.2.4(2024-04-23) +- 修复 弹出位置默认值不一致导致的错位 +## 0.2.3(2024-03-20) +- 修复 弹出位置修正 +## 0.2.2(2024-01-15) +- 新增 placement支持设置四个方向:top bottom left right +## 0.2.1(2022-05-09) +- 修复 content 为空时仍然弹出的bug +## 0.2.0(2022-05-07) +**注意:破坏性更新** +- 更新 text 属性变更为 content +- 更新 移除 width 属性 +## 0.1.1(2022-04-27) +- 修复 组件根 text 嵌套组件 warning +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue new file mode 100644 index 0000000..cda3754 --- /dev/null +++ b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/uni_modules/uni-tooltip/package.json b/uni_modules/uni-tooltip/package.json new file mode 100644 index 0000000..44158e1 --- /dev/null +++ b/uni_modules/uni-tooltip/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-tooltip", + "displayName": "uni-tooltip 提示文字", + "version": "0.2.4", + "description": "Tooltip 提示文字", + "keywords": [ + "uni-tooltip", + "uni-ui", + "tooltip", + "tip", + "文字提示" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无 ", + "data": "无", + "permissions": "无" + }, + "npmurl": "", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tooltip/readme.md b/uni_modules/uni-tooltip/readme.md new file mode 100644 index 0000000..faafa2e --- /dev/null +++ b/uni_modules/uni-tooltip/readme.md @@ -0,0 +1,8 @@ +## Badge 数字角标 +> **组件名:uni-tooltip** +> 代码块: `uTooltip` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tooltip) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..faaf336 --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,24 @@ +## 1.3.3(2024-04-23) +- 修复 当元素会受变量影响自动隐藏的bug +## 1.3.2(2023-05-04) +- 修复 NVUE 平台报错的问题 +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..f3ddd1f --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d5c20e1 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.3", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-ui/changelog.md b/uni_modules/uni-ui/changelog.md new file mode 100644 index 0000000..6d477cf --- /dev/null +++ b/uni_modules/uni-ui/changelog.md @@ -0,0 +1,578 @@ +## 1.5.6(2024-07-08) +- uni-datetime-picker 新增 日期点击事件,在点击日期时会触发该事件。 +- uni-datetime-picker 修复 抖音小程序事件传递失效bug +- uni-easyinput 修复 easyinput组件双向绑定问题 +- uni-number-box 修复 在vue2下H5黑边的bug +- uni-number-box 修复 在vue2手动输入后失焦导致清空数值的严重bug +- uni-popup 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法) +- uni-search-bar 修复 textColor默认值导致的文字不显示的bug +- uni-search-bar 修复 textColor不生效的bug +- uni-segmented-control 修复 修复在微信小程序下inactiveColor失效bug +- uni-tooltip 修复 弹出位置默认值不一致导致的错位 +- uni-transition 修复 当元素会受变量影响自动隐藏的bug +## 1.5.0(2024-01-13) +- 修复 npm包结构目录错误的问题 +- uni-calendar 修复 回到今天时,月份显示不一致问题 +- uni-data-picker 新增 支持 uni-app-x +- uni-datetime-picker 优化 增加noChange事件,当进行日期范围选择时,若有空值,则触发该事件 [详情](https://github.com/dcloudio/uni-ui/issues/815) +- uni-datetime-picker 修复 字节小程序时间选择范围器失效问题 [详情](https://github.com/dcloudio/uni-ui/issues/834) +- uni-datetime-picker 修复 PC端初次修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737) +- uni-datetime-picker 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146) +- uni-datetime-picker 优化 当前月可以选择上月、下月的日期的Bug +- uni-file-picker 新增 微信小程序不再调用chooseImage,而是调用chooseMedia +- uni-file-picker 新增 上传文件至云存储携带本地文件名称 +- uni-forms 优化 labelWidth 描述错误 +fix: 修复图标大小默认值错误的问题 +- uni-icons 修复 项目未使用 ts 情况下,打包报错的bug +- uni-icons 修复 size 属性为 string 时,不加单位导致尺寸异常的bug +- uni-icons 优化 兼容老版本icon类型,如 top ,bottom 等 +- uni-icons 优化 兼容老版本icon类型,如 top ,bottom 等 +- uni-icons 优化 uni-app x 下示例项目图标排序 +- uni-icons 修复 nvue下引入组件报错的bug +-优化 size 属性支持单位 +- uni-icons 新增 uni-app x 支持定义图标 +- uni-notice-bar 修复动态绑定title时,滚动速度不一致的问题 +更新示例工程 +- uni-popup 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` +- uni-table 修复 uni-tr只有一列时minWidth计算错误,列变化实时计算更新 +## 1.4.27(2023-04-21) +- uni-calendar 修复 某些情况 monthSwitch 未触发的Bug +- uni-calendar 修复 某些情况切换月份错误的Bug +- uni-data-picker 修复 更改 modelValue 报错的 bug +- uni-data-picker 修复 v-for 未使用 key 值控制台 warning +- uni-data-picker 修复代码合并时引发 value 属性为空时不渲染数据的问题 +- uni-data-picker 修复 localdata 不支持动态更新的bug +- uni-data-select 修复 微信小程序点击时会改变背景颜色的 bug +- uni-data-select 修复 禁用时会显示清空按钮 +- uni-data-select 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- uni-data-select 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +- uni-datetime-picker 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- uni-datetime-picker 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +- uni-datetime-picker 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +- uni-datetime-picker 优化 值为空依然选中当天问题 +- uni-datetime-picker 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- uni-datetime-picker 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- uni-datetime-picker 优化 字节小程序日期时间范围选择,底部日期换行问题 +- uni-datetime-picker 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +- uni-datetime-picker 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- uni-datetime-picker 优化 PC端输入日期格式错误时返回当前日期时间 +- uni-datetime-picker 优化 PC端输入日期时间超出 start、end 限制的Bug +- uni-datetime-picker 优化 移动端日期时间范围用法时间展示不完整问题 +- uni-datetime-picker 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- uni-datetime-picker 修复 vue3 time-picker 无法显示绑定时分秒的Bug +- uni-datetime-picker 修复 字节小程序报错的Bug +- uni-datetime-picker 修复 某些情况切换月份错误的Bug +- uni-easyinput 修复 vue3 下 keyboardheightchange 事件报错的bug +- uni-easyinput 优化 trim 属性默认值 +- uni-easyinput 新增 cursor-spacing 属性 +- uni-fab 新增 pattern.icon 属性,可自定义图标 +- uni-file-picker 修复 手动上传删除一个文件后不能再上传的bug +- uni-forms 修复 required 参数无法动态绑定 +- uni-list 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +- uni-list uni-list-chat 新增 支持具名插槽`header` +- uni-list 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +- uni-nav-bar 修复 自定义状态栏高度闪动BUG +- uni-nav-bar 修复 暗黑模式下边线颜色错误的bug +- uni-popup 修复 uni-popup 重复打开时的 bug +- uni-popup uni-popup-dialog 组件新增 inputType 属性 +- uni-swipe-action 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +- uni-table 修复 在vue3模式下可能会出现错误的问题 +## 1.4.26(2023-01-31) +- uni-badge 修复 运行/打包 控制台警告问题 +- uni-calendar 修复 某些情况切换月份错误问题 +- uni-data-select 修复 不关联服务空间报错的问题 +- uni-data-select 新增 属性 `format` 可用于格式化显示选项内容 +- uni-datetime-picker 修复 某些情况切换月份错误问题 +- uni-easyinput 新增 keyboardheightchange 事件,可监听键盘高度变化 +- uni-list 修复 无反馈效果呈现的bug +## 1.4.25(2023-01-11) +- uni-file-picker 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.4.24(2023-01-11) +- uni-data-select 修复 当where变化时,数据不会自动更新的问题 +- uni-datetime-picker 修复 多次加载组件造成内存占用的 bug +- uni-datetime-picker 修复 vue3 下 i18n 国际化初始值不正确的 bug +- uni-easyinput 修复 props 中背景颜色无默认值的bug +- uni-list 修复 uni-list-chat 在vue3下跳转报错的bug +- uni-list 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +- uni-list 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +- uni-list 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +- uni-list uni-list-chat 新增 avatar 支持 fileId +- uni-list uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +- uni-popup 修复 nvue 下 v-show 报错 +## 1.4.23(2022-10-25) +- uni-datetime-picker 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861) + +- uni-nav-bar 修复 条件编译错误的bug +- uni-nav-bar 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.4.22(2022-09-19) +- 优化 部分组件适配 uni-scss 主题色 +- uni-badge 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +- uni-calendar 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件 +- uni-data-select 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +- uni-data-select 修复 点击的位置不准确 +- uni-data-select 新增 支持 disabled 属性 +- uni-datetime-picker 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +- uni-datetime-picker 修复 close事件无效的 bug +- uni-datetime-picker 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false) +- uni-fab 修复 小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +- uni-fab 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +- uni-forms 优化 根据 rules 自动添加 required 的问题 +- uni-forms 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +- uni-nav-bar 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +- uni-notice-bar 新增 属性 fontSize,可修改文字大小。 +- uni-pagination 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- uni-pagination 修复,未对移动端当前页文字做主题色适配。 +- uni-pagination 修复 es 语言 i18n 错误 +## 1.4.21(2022-09-19) +- 修复,安装时未导入 uni-data-select 和 uni-tooltip 的问题。 +## 1.4.20(2022-07-25) +- uni-section 新增组件 +- uni-forms 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug + +## 1.4.19(2022-07-07) +- uni-data-picker 优化 pc端图标位置不正确的问题 +- uni-data-select 修复 pc端宽度异常的bug +## 1.4.18(2022-07-06) +- uni-forms 【重要】组件逻辑重构,部分用法旧版本不兼容,请注意兼容问题 +- uni-forms 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- uni-forms 新增 更多表单示例 +- uni-forms 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- uni-forms 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- uni-forms 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- uni-forms 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- uni-forms 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- uni-forms 修复 由 1.4.0 引发的 label 插槽不生效的bug +- uni-forms 修复 子组件找不到 setValue 报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-forms 修复 表单校验顺序无序问题 +- uni-forms 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +- uni-forms 优化 动态表单校验方式,废弃拼接name的方式 +- uni-breadcrumb 修复 微信小程序 separator 不显示问题 +- uni-data-checkbox 优化 在 uni-forms 中的依赖注入方式 +- uni-data-picker 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-data-picker 优化 显示样式 +- uni-data-select 优化 显示样式 +- uni-datetime-picker 修复 日历顶部年月及底部确认未国际化 bug +- uni-datetime-picker 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +- uni-easyinput 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- uni-easyinput 新增 clear 事件,点击右侧叉号图标触发 +- uni-easyinput 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- uni-easyinput 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 +- uni-easyinput 优化 clearable 显示策略 +- uni-file-picker 修复 在uni-forms下样式不生效的bug +- uni-nav-bar 修复 组件示例中插槽用法无法显示内容的bug +- uni-swipe-action 修复 vue3 下使用组件不能正常运行的Bug +- uni-swipe-action 修复 h5端点击click触发两次的Bug +- uni-table 修复 微信小程序存在无使用组件的问题 +## 1.4.17(2022-06-30) +- 支持 ios 安全区 +## 1.4.16(2022-06-06) +- uni-breadcrumb 新增 支持 uni.scss 修改颜色 +- uni-data-select 修复 localdata 赋值不生效的 bug +- uni-data-select 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +- uni-data-select 修复 当 value 为 0 时选择不生效的 bug +- uni-easyinput 修复 关闭图标某些情况下无法取消的bug +- uni-fav 新增 stat 属性 ,是否开启uni统计功能 +- uni-goods-nav 新增 stat属性,是否开启uni统计功能 +- uni-group 新增 stat属性,是否开启uni统计功能 +- uni-nav-bar 新增 stat 属性 ,可开启统计 title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +- uni-search-bar 新增 readonly 属性,组件只读 +- uni-swipe-action 修复 isPC 找不到的Bug +- uni-swipe-action 修复 在 nvue 下 disabled 失效的bug +- uni-tooltip 修复 content 为空时仍然弹出的bug +## 1.4.15(2022-05-07) +- uni-data-picker 修复 字节小程序 本地数据无法选择下一级的Bug +- uni-data-select 新增 记住上次的选项(仅 collection 存在时有效) +- uni-search-bar 修复 vue3 input 事件不生效的bug +- uni-search-bar 修复 多余代码导致的bug +- uni-tooltip 更新 text 属性变更为 content +- uni-tooltip 更新 移除 width 属性 +- uni-tooltip 修复 组件根 text 嵌套组件 warning +## 1.4.14(2022-04-18) +- uni-datetime-picker 修复 Vue3 下动态赋值,单选类型未响应的 bug +- uni-easyinput 修复 默认值不生效的bug +## 1.4.13(2022-04-02) +- uni-calendar 修复 条件编译 nvue 不支持的 css 样式 +- uni-calendar 修复 startDate、 endDate 属性失效的 bug +- uni-data-picker 修复 nvue 不支持的 v-show 的 bug +- uni-data-picker 修复 条件编译 nvue 不支持的 css 样式 +- uni-datetime-picker 修复 Vue3 下动态赋值未响应的 bug +- uni-easyinput 修复 value不能为0的bug +- uni-popup 修复 弹出层内部无法滚动的bug +- uni-popup 修复 小程序中高度错误的bug +- uni-popup 修复 快速调用open出现问题的Bug +- uni-rate 修复 条件判断 `NaN` 错误的 bug +- uni-swipe-action 修复 按钮字体大小不能设置的bug +- uni-swipe-action 修复 h5和app端下报el错误的bug +- uni-swipe-action 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.4.12(2022-02-19) +- uni-collapse 修复 初始化的时候 ,open 属性失效的bug +- uni-data-checkbox 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +- uni-icons 优化 size 属性可以传入不带单位的字符串数值 +- uni-icons 优化 size 支持其他单位 +- uni-nav-bar 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +- uni-popup 修复 safeArea 属性不能设置为false的bug +## 1.4.11(2022-01-21) +- uni-collapse 修复 微信小程序resize后组件收起的bug +- uni-countdown 修复 在微信小程序中样式不生效的bug +- uni-countdown 新增 update 方法 ,在动态更新时间后,刷新组件 +- uni-load-more 新增 showText属性 ,是否显示文本 +- uni-load-more 修复 nvue 平台下不显示文本的bug +- uni-load-more 修复 微信小程序平台样式选择器报警告的问题 +- uni-nav-bar 修复 在vue下,标题不垂直居中的bug +- uni-nav-bar 修复 height 属性类型错误 +- uni-nav-bar 新增 height 属性,可修改组件高度 +- uni-nav-bar 新增 dark 属性可可开启暗黑模式 +- uni-nav-bar 优化 标题字数过多显示省略号 +- uni-nav-bar 优化 插槽,插入内容可完全覆盖 +- uni-popup 修复 isMaskClick 失效的bug +- uni-popup 新增 cancelText \ confirmText 属性 ,可自定义文本 +- uni-popup 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- uni-popup 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 + +## 1.4.10(2022-01-17) +- uni-card 修复 在vue页面下略缩图显示不正常的bug +- uni-datetime-picker 修复 clear-icon 属性在小程序平台不生效的 bug +- uni-datetime-picker 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug +- uni-fab 更新 组件依赖 +- +- uni-icons 修复 nvue 有些图标不显示的bug,兼容老版本图标 +- uni-icons 优化 示例可复制图标名称 +- uni-nav-bar 修复 color 属性不生效的bug +- uni-popup 修复 设置 safeArea 属性不生效的bug +- uni-popup 优化 组件示例 +- uni-popup 修复 vuedoc 文字错误 +## 1.4.9(2021-11-23) +- uni-ui 修复 vue3中某些scss变量无法找到的问题 +- uni-combox 优化 label、label-width 属性 +- uni-data-picker 修复 由上个版本引发的map、v-model等属性不生效的bug +- uni-file-picker 修复 参数为对象的情况下,url在某些情况显示错误的bug +- uni-icons 优化 兼容旧组件 type 值 +- uni-list 修复 在vue3中to属性在发行应用的时候报错的bug +- uni-scss 修复 vue3中scss语法兼容问题 +- uni-transition 修复 init 方法初始化问题 +## 1.4.8(2021-11-19) +- uni-fab 修复 阴影颜色不正确的bug +## 1.4.7(2021-11-19) +- uni-ui 新增 支持国际化 +- uni-ui 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- uni-ui 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) +- uni-badge 修改 size 属性默认值调整为 small +- uni-badge 修改 type 属性,默认值调整为 error,info 替换 default +- uni-badge 修复 在字节小程序上样式不生效的 bug +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-card 重构插槽的用法 ,header 替换为 title +- uni-card 新增 actions 插槽 +- uni-card 新增 cover 封面图属性和插槽 +- uni-card 新增 padding 内容默认内边距离 +- uni-card 新增 margin 卡片默认外边距离 +- uni-card 新增 spacing 卡片默认内边距 +- uni-card 新增 shadow 卡片阴影属性 +- uni-card 取消 mode 属性,可使用组合插槽代替 +- uni-card 取消 note 属性 ,使用actions插槽代替 +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-countdown 新增 font-size 支持自定义字体大小 +- uni-data-checkbox 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 优化 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 修复 hide-second 在移动端的 bug +- uni-datetime-picker 修复 单选赋默认值时,赋值日期未高亮的 bug +- uni-datetime-picker 修复 赋默认值时,移动端未正确显示时间的 bug +- uni-datetime-picker 新增 hide-second 属性,支持只使用时分,隐藏秒 +- uni-datetime-picker 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- uni-datetime-picker 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- uni-datetime-picker 优化 调整字号大小,美化日历界面 +- uni-datetime-picker 优化 范围选择器在 pc 端过宽的问题 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 新增 参数中返回 fileID 字段 +- uni-file-picker 修复 腾讯云传入fileID 不能回显的bug +- uni-file-picker 修复 选择图片后,不能放大的问题 +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 label 插槽不生效的bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-icons 新增 更多图标 +- uni-icons 优化 自定义图标使用方式 +- uni-link 修复 在 nvue 下不显示的 bug +- uni-pagination 修复 current 、value 属性未监听,导致高亮样式失效的 bug +- uni-rate 优化 默认值修改为 0 颗星 +- uni-search-bar 修复 value 属性与 modelValue 属性不兼容的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +- uni-tag 新增 提供组件设计资源,组件样式调整 +- uni-tag 移除 插槽 +- uni-tag 移除 type 属性的 royal 选项 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.4.2(2021-08-20) +- 新增 uni-ui 组件支持国际化 i18n +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.4.0(2021-08-13) +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 调整 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 新增 适配 vue3 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 优化 组件文档 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.3.9(2021-08-02) +- uni-datetime-picker 新增 return-type 属性支持返回 date 日期对象 +- uni-file-picker 修复 fileExtname属性不指定值报错的Bug +- uni-file-picker 修复 在某种场景下图片不回显的Bug +- uni-link 支持自定义插槽 +## 1.3.8(2021-07-31) +- uni-ui 组件兼容 vue3 +- uni-collapse 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +- uni-collapse 优化 组件示例 +- uni-collapse 新增 组件折叠动画 +- uni-collapse 新增 value\v-model 属性 ,动态修改面板折叠状态 +- uni-collapse 新增 title 插槽 ,可定义面板标题 +- uni-collapse 新增 border 属性 ,显示隐藏面板内容分隔线 +- uni-collapse 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- uni-collapse 修复 resize 方法失效的Bug +- uni-collapse 修复 change 事件返回参数不正确的Bug +- uni-collapse 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +- uni-data-checkbox 优化 在uni-forms组件,与label不对齐的问题 +- uni-data-checkbox 修复 单选默认值为0不能选中的Bug +- uni-easyinput 优化 errorMessage 属性支持 Boolean 类型 +- uni-file-picker 修复 return-type为object下,返回值不正确的Bug +- uni-file-picker 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +- uni-file-picker 优化 h5平台下上传文件导致页面卡死的问题 +- uni-forms 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- uni-forms 修复 1.2.1 引起的示例在小程序平台报错的Bug +- uni-forms 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- uni-forms 修复 不指定name属性时,运行报错的Bug +- uni-forms 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- uni-forms 优化 组件示例,新增动态校验示例代码 +- uni-forms 优化 组件文档,使用方式更清晰 +- uni-list 修复 与其他组件嵌套使用时,点击失效的Bug +- uni-swipe-action 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.3.7(2021-07-16) +- uni-ui 兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- uni-datetime-picker 修复 单选日期类型,初始赋值后不在当前日历的 bug +- uni-datetime-picker 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- uni-datetime-picker 优化 移动端移除显示框的清空按钮,无实际用途 +- uni-datetime-picker 修复 组件赋值为空,界面未更新的 bug +- uni-datetime-picker 修复 start 和 end 不能动态赋值的 bug +- uni-datetime-picker 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug +## 1.3.6(2021-07-09) +- uni-data-checkbox 优化 删除无用日志 +- uni-data-checkbox 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +- uni-data-checkbox 修复 nvue 黑框样式问题 +- uni-datetime-picker 修复 范围选择不能动态赋值的 bug +- uni-datetime-picker 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘定位不准确的问题 +- uni-datetime-picker 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘被遮盖的问题 +- uni-datetime-picker 新增 maskClick 事件 +- uni-datetime-picker 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px +- uni-datetime-picker 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +- uni-datetime-picker 新增 日期时间显示框支持插槽 +- uni-file-picker 修复 sourceType 缺少默认值导致 ios 无法选择文件 +- uni-file-picker 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +- uni-table 新增 uni-th 支持 date 日期筛选范围 +- uni-table 新增 uni-th 支持 range 筛选范围 +- uni-table 新增 uni-th 筛选功能 +## 1.3.5(2021-07-02) +- uni-card 优化 图文卡片无图片加载时,提供占位图标 +- uni-card 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- uni-card 修复 thumbnail 不存在仍然占位的 bug +- uni-data-checkbox 修复 selectedTextColor 属性不生效的Bug +- uni-datetime-picker 优化 添加 uni-icons 依赖 +- uni-easyinput 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug +- uni-file-picker 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +- uni-file-picker 优化 文件上传后进度条消失时机 +- uni-file-picker 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +- uni-forms 修复 pattern 属性在微信小程序平台无效的问题 +## 1.3.4(2021-06-25) +- uni-badge 优化 示例项目 +- uni-countdown 修复 uni-countdown 重复赋值跳两秒的 bug +- uni-easyinput 修复 passwordIcon 属性拼写错误的 bug +- uni-forms 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +- uni-forms 修复 只写setRules方法而导致校验不生效的Bug +- uni-forms 修复 由上个办法引发的错误提示文字错位的Bug +- uni-forms 修复 不设置 label 属性 ,无法设置label插槽的问题 +- uni-forms 修复 不设置label属性,label-width属性不生效的bug +- uni-forms 修复 setRules 方法与rules属性冲突的问题 +- uni-link 新增 download 属性,H5平台下载文件名 +- uni-popup 新增 mask-click 遮罩层点击事件 +- uni-popup 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-tag 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.3.3(2021-06-18) +- uni-easyinput 新增 passwordIcon 属性,当type=password时是否显示小眼睛图标 +- uni-easyinput 修复 confirmType 属性不生效的问题 +- uni-easyinput 修复 disabled 状态可清出内容的 bug +- uni-file-picker 修复 删除文件时无法触发 v-model 的Bug +- uni-popup 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-popup 修复 错误的 watch 字段 +- uni-popup 修复 safeArea 属性不生效的问题 +- uni-popup 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.3.2(2021-06-04) +- uni-data-checkbox 新增 map 属性,可以方便映射text/value属性 +- uni-data-checkbox 修复 不关联服务空间的情况下组件报错的Bug +- uni-data-picker 修复 上个版本引出的本地数据无法选择带有children的2级节点 +- uni-forms 修复 动态删减数据导致报错的问题 +- uni-forms 新增 modelValue 属性 ,value 即将废弃 +- uni-forms 新增 uni-forms-item 可以设置单独的 rules +- uni-forms 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- uni-forms 优化 submit 事件重命名为 validate +- uni-data-picker 修复 无法加载云端数据的问题 +- uni-data-picker 修复 v-model无效问题 +- uni-data-picker 修复 loaddata 为空数据组时加载时间过长问题 +- uni-datetime-picker 修复 图标在小程序上不显示的 bug +- uni-datetime-picker 优化 重命名引用组件,避免潜在组件命名冲突 +- uni-datetime-picker 优化 代码目录扁平化 +- uni-tag 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.3.1(2021-05-14) +- uni-badge 新增 uni-badge 的 absolute 属性,支持定位 +- uni-badge 新增 uni-badge 的 offset 属性,支持定位偏移 +- uni-badge 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- uni-badge 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- uni-badge 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +- uni-badge 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- uni-badge 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- uni-badge 新增 uni-badge 属性 custom-style, 支持自定义样式 +- uni-datetime-picker 修复 ios 下不识别 '-' 日期格式的 bug +- uni-datetime-picker 优化 pc 下弹出层添加边框和阴影 +- uni-datetime-picker 修复 在 admin 中获取弹出层定位错误的bug +- uni-datetime-picker 修复 type 属性向下兼容,默认值从 date 变更为 datetime +- uni-datetime-picker 支持日历形式的日期+时间的范围选择 +- uni-steps 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +- uni-countdown 修复 uni-countdown 不能控制倒计时的 bug +- uni-tag 修复 royal 类型无效的bug +- uni-tag 修复 uni-tag 宽度不自适应的bug +- uni-tag 新增 uni-tag 支持属性 custom-style 自定义样式 +- uni-link 新增 href 属性支持 tel:|mailto: +- uni-popup 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +- uni-popup 新增 type 属性的 left\right 值,支持左右弹出 +- uni-popup 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- uni-popup 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- uni-popup 新增 safeArea 属性,是否适配底部安全区 +- uni-popup 修复 App\h5\微信小程序底部安全区占位不对的Bug +- uni-popup 修复 App 端弹出等待的Bug +- uni-popup 优化 提升低配设备性能,优化动画卡顿问题 +- uni-popup 优化 更简单的组件自定义方式 +- uni-table 修复 示例项目缺少组件的Bug +- uni-forms 修复 自定义检验器失效的问题 +- uni-title 修复 示例项目缺少组件的Bug +- uni-transition 修复 示例项目缺少组件的Bug +- uni-swiper-dot 修复 示例项目缺少组件的Bug +- uni-ui 新增 组件示例地址 +## 1.3.0(2021-04-23) +- uni-combox 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-data-picker 修复 非树形数据有 where 属性查询报错的问题 +- uni-fav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-goods-nav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-nav-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-notice-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-number-box 修复 uni-number-box 浮点数运算不精确的 bug +- uni-number-box 修复 uni-number-box change 事件触发不正确的 bug +- uni-number-box 新增 uni-number-box v-model 双向绑定 +- uni-rate 修复 布局变化后 uni-rate 星星计算不准确的 bug +- uni-rate 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +- uni-search-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-steps 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-transition 新增 通过方法自定义动画 +- uni-transition 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- uni-transition 优化 动画触发逻辑,使动画更流畅 +- uni-transition 优化 支持单独的动画类型 +- uni-transition 优化 文档示例 +## 1.2.13(2021-04-16) +- uni-ui 新增 uni-data-picker 支持云端非树形表结构数据 +- uni-ui 修复 uni-data-checkbox nvue 下无法选中的问题 +- uni-ui 修复 uni-data-picker 根节点 parent_field 字段等于null时选择界面错乱问题 +- uni-ui 修复 uni-file-picker 选择的文件非 file-extname 字段指定的扩展名报错的Bug +- uni-ui 修复 uni-swipe-action 报错 nv_navigator is not defined 的bug +- uni-ui 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +- uni-ui 优化 uni-file-picker file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +- uni-ui 优化 uni-pagination PC 和 移动端适配不同的 ui +- uni-ui 更新 uni-file-picker 组件示例 +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug +- uni-ui 新增 uni-search-bar 的 focus 事件 +- uni-ui 修复 uni-rate 属性 margin 值为 string 组件失效的 bug +- uni-data-picker 修复 本地数据概率无法回显时问题 +- uni-table 新增 sortable 属性,是否开启单列排序 +- uni-table 优化 表格多选逻辑 +## 1.2.12(2021-03-23) +- uni-ui 新增 uni-datetime-picker 的 hide-second 属性、border 属性; +- uni-ui 修复 uni-datetime-picker 选择跟显示的日期不一样的 bug, +- uni-ui 修复 uni-datetime-picker change事件触发2次的 bug +- uni-ui 修复 uni-datetime-picker 分、秒 end 范围错误的 bug +- uni-ui 新增 uni-tr selectable 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +- uni-ui 新增 uni-data-checkbox 新增 disabled属性,支持nvue +- uni-ui 优化 uni-data-checkbox 无选项时提示“暂无数据” +- uni-ui 优化 uni-data-checkbox 默认颜色显示 +- uni-ui 新增 uni-link href 属性支持 tel:|mailto: +- uni-ui 新增 uni-table 示例demo +- uni-ui 修复 uni-data-picker 微信小程序某些情况下无法选择的问题,事件无法触发的问题 +- uni-ui 修复 uni-nav-bar easycom 下,找不到 uni-status-bar 的bug +- uni-ui 修复 uni-easyinput 示例在 qq 小程序上的bug +- uni-ui 修复 uni-forms 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +- uni-ui 调整 cli 项目 建议使用 easycom 方式引用组件,如使用按需引用,需手动维护组件内部引用 + +## 1.2.11(2021-02-24) +- 调整为uni_modules目录规范 +- uni-data-picker 新增 数据驱动的picker选择器 +- uni-file-picker 新增 文件选择上传 +- uni-row 新增 栅格系统 +- uni-data-checkbox 优化 支持 nvue +- uni-forms 修复 偶发性获取表单值错误的Bug +- uni-forms 修复 校验 uni-data-picker value 为 0 时,返回值错误的Bug +- uni-forms 修复 uni-forms-item 组件隐藏时依然触发校验的bug +- uni-forms 优化 实时校验 +- uni-forms 优化 兼容nvue页面 +- uni-easyinput 优化 兼容nvue页面 +- uni-group 优化 兼容nvue页面 +- uni-popup 优化 组件适配 PC +- uni-fab 优化 适配 PC +- uni-swiper-dot 优化 适配 PC +- uni-rate 优化 适配 PC +- uni-notice-bar 优化 适配 PC +- uni-indexed-list 优化 适配 PC +- uni-combox 优化 适配 PC +- uni-transition 优化 适配 PC +- uni-nav-bar 优化 适配 PC +- uni-swipe-action 优化 适配 PC diff --git a/uni_modules/uni-ui/components/uni-ui/uni-ui.vue b/uni_modules/uni-ui/components/uni-ui/uni-ui.vue new file mode 100644 index 0000000..0970892 --- /dev/null +++ b/uni_modules/uni-ui/components/uni-ui/uni-ui.vue @@ -0,0 +1,7 @@ + + + diff --git a/uni_modules/uni-ui/package.json b/uni_modules/uni-ui/package.json new file mode 100644 index 0000000..d31a390 --- /dev/null +++ b/uni_modules/uni-ui/package.json @@ -0,0 +1,130 @@ +{ + "id": "uni-ui", + "displayName": "uni-ui", + "version": "1.5.6", + "description": "uni-ui 是基于uni-app的、全端兼容的、高性能UI框架", + "keywords": [ + "uni-ui", + "uniui", + "UI组件库", + "ui框架", + "ui库" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.10" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-calendar", + "uni-card", + "uni-collapse", + "uni-combox", + "uni-countdown", + "uni-data-checkbox", + "uni-data-picker", + "uni-data-select", + "uni-dateformat", + "uni-datetime-picker", + "uni-drawer", + "uni-easyinput", + "uni-fab", + "uni-fav", + "uni-file-picker", + "uni-forms", + "uni-goods-nav", + "uni-grid", + "uni-group", + "uni-icons", + "uni-indexed-list", + "uni-link", + "uni-list", + "uni-load-more", + "uni-nav-bar", + "uni-notice-bar", + "uni-number-box", + "uni-pagination", + "uni-popup", + "uni-rate", + "uni-row", + "uni-search-bar", + "uni-section", + "uni-segmented-control", + "uni-steps", + "uni-swipe-action", + "uni-swiper-dot", + "uni-table", + "uni-tag", + "uni-title", + "uni-tooltip", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-ui/readme.md b/uni_modules/uni-ui/readme.md new file mode 100644 index 0000000..23f8456 --- /dev/null +++ b/uni_modules/uni-ui/readme.md @@ -0,0 +1,247 @@ +> 当前插件不包含示例页面 ,如需示例请在 HBuiderX 中新建 `hello uni-app > 扩展组件` 中查看 +> +> 代码示例地址 :[https://ext.dcloud.net.cn/plugin?id=4941](https://ext.dcloud.net.cn/plugin?id=4941) +> +> 组件演示地址:[https://hellouniapp.dcloud.net.cn](https://hellouniapp.dcloud.net.cn/pages/extUI/badge/badge) +> +> 组件文档地址:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) + +# uni-ui 介绍 + +## uni-ui产品特点 + +### 1. 高性能 + +目前为止,在小程序和混合app领域,暂时还没有比 `uni-ui` 更高性能的框架。 +- 自动差量更新数据 + +虽然uni-app支持小程序自定义组件,所有小程序的ui库都可以用。但小程序自定义组件的ui库都需要使用setData手动更新数据,在大数据量时、或高频更新数据时,很容易产生性能问题。 + +而 `uni-ui` 属于vue组件,uni-app引擎底层自动diff更新数据。当然其实插件市场里众多vue组件都具备这个特点。 +- 优化逻辑层和视图层通讯折损 + +非H5,不管是小程序还是App,不管是app的webview渲染还是原生渲染,全都是逻辑层和视图层分离的。这里就有一个逻辑层和视图层通讯的折损问题。 +比如在视图层拖动一个可跟手的组件,由于通讯的损耗,用js监听很难做到实时跟手。 + +这时就需要使用css动画以及平台底层提供的wxs、bindingx等技术。不过这些技术都比较复杂,所以 `uni-ui` 里做了封装,在需要跟手式操作的ui组件,比如swiperaction列表项左滑菜单,就在底层使用了这些技术,实现了高性能的交互体验 +- 背景停止 + +很多ui组件是会一直动的,比如轮播图、跑马灯。即便这个窗体被新窗体挡住,它在背景层仍然在消耗着硬件资源。在Android的webview版本为chrome66以上,背景操作ui会引发很严重的性能问题,造成前台界面明显卡顿。 + +而 `uni-ui` 的组件,会自动判断自己的显示状态,在组件不再可见时,不会再消耗硬件资源。 + +### 2. 全端 + + `uni-ui` 的组件都是多端自适应的,底层会抹平很多小程序平台的差异或bug。 + +比如导航栏navbar组件,会自动处理不同端的状态栏。 +比如swiperaction组件,在app和微信小程序上会使用交互体验更好的wxs技术,但在不支持wxs的其他小程序端会使用js模拟类似效果。 + + `uni-ui` 还支持nvue原生渲染,[详见](https://github.com/dcloudio/uni-ui/tree/nvue-uni-ui) + +未来 `uni-ui` 还会支持pc等大屏设备。 + +### 3. 与uni统计自动集成实现免打点 + +uni统计是优秀的多端统计平台,见[tongji.dcloud.net.cn](https://tongji.dcloud.net.cn)。 + +除了一张报表看全端,它的另一个重要特点是免打点。 +比如使用 `uni-ui` 的navbar标题栏、收藏、购物车等组件,均可实现自动打点,统计页面标题等各种行为数据。 +当然你也可以关闭uni统计,这不是强制的。 + +### 4. 主题扩展 + + `uni-ui` 支持[uni.scss](https://uniapp.dcloud.io/collocation/uni-scss),可以方便的切换App的风格。 + +ui是一种需求非常发散的产品,DCloud官方也无意用 `uni-ui` 压制第三方ui插件的空间,但官方有义务在性能和多端方面提供一个开源的标杆给大家。 + +我们欢迎更多优秀的ui组件出现,也欢迎更多人贡献 `uni-ui` 的主题风格,满足更多用户的需求。 + + +## 快速开始 + +uni-ui支持 HBuilderX直接新建项目模板、npm安装和单独导入个别组件等多种使用方式 + +### 在HBuilderX 新建uni-app项目的模板中,选择uni-ui模板 +![HBuilderX内创建uni-ui项目](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/create-uni-ui-project.jpg) + +由于uni-app独特的[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)技术,可以免引用、注册,直接使用各种符合规则的vue组件。 + +在代码区键入`u`,拉出各种内置或uni-ui的组件列表,选择其中一个,即可使用该组件。 + +光标放在组件名称上,按F1,可以查阅组件的文档。 + +![uni-ui代码块](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/uni-ui-snippet.jpg) + +### 通过 uni_modules 单独安装组件 +如果你没有创建uni-ui项目模板,也可以在你的工程里,通过 uni_modules 单独安装需要的某个组件。下表为uni-ui的扩展组件清单,点击每个组件在详情页面可以导入组件到项目下,导入后直接使用即可,无需import和注册。 + +|组件名|组件说明| +|---|---| +|uni-badge|[数字角标](https://ext.dcloud.net.cn/plugin?name=uni-badge)| +|uni-calendar|[日历](https://ext.dcloud.net.cn/plugin?name=uni-calendar)| +|uni-card|[卡片](https://ext.dcloud.net.cn/plugin?name=uni-card)| +|uni-collapse|[折叠面板](https://ext.dcloud.net.cn/plugin?name=uni-collapse)| +|uni-combox|[组合框](https://ext.dcloud.net.cn/plugin?name=uni-combox)| +|uni-countdown|[倒计时](https://ext.dcloud.net.cn/plugin?name=uni-countdown)| +|uni-data-checkbox|[数据选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-checkbox)| +|uni-data-picker|[数据驱动的picker选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-picker)| +|uni-dateformat|[日期格式化](https://ext.dcloud.net.cn/plugin?name=uni-dateformat)| +|uni-datetime-picker|[日期选择器](https://ext.dcloud.net.cn/plugin?name=uni-datetime-picker)| +|uni-drawer|[抽屉](https://ext.dcloud.net.cn/plugin?name=uni-drawer)| +|uni-easyinput|[增强输入框](https://ext.dcloud.net.cn/plugin?name=uni-easyinput)| +|uni-fab|[悬浮按钮](https://ext.dcloud.net.cn/plugin?name=uni-fab)| +|uni-fav|[收藏按钮](https://ext.dcloud.net.cn/plugin?name=uni-fav)| +|uni-file-picker|[文件选择上传](https://ext.dcloud.net.cn/plugin?name=uni-file-picker)| +|uni-forms|[表单](https://ext.dcloud.net.cn/plugin?name=uni-forms)| +|uni-goods-nav|[商品导航](https://ext.dcloud.net.cn/plugin?name=uni-goods-nav)| +|uni-grid|[宫格](https://ext.dcloud.net.cn/plugin?name=uni-grid)| +|uni-group|[分组](https://ext.dcloud.net.cn/plugin?name=uni-group)| +|uni-icons|[图标](https://ext.dcloud.net.cn/plugin?name=uni-icons)| +|uni-indexed-list|[索引列表](https://ext.dcloud.net.cn/plugin?name=uni-indexed-list)| +|uni-link|[超链接](https://ext.dcloud.net.cn/plugin?name=uni-link)| +|uni-list|[列表](https://ext.dcloud.net.cn/plugin?name=uni-list)| +|uni-load-more|[加载更多](https://ext.dcloud.net.cn/plugin?name=uni-load-more)| +|uni-nav-bar|[自定义导航栏](https://ext.dcloud.net.cn/plugin?name=uni-nav-bar)| +|uni-notice-bar|[通告栏](https://ext.dcloud.net.cn/plugin?name=uni-notice-bar)| +|uni-number-box|[数字输入框](https://ext.dcloud.net.cn/plugin?name=uni-number-box)| +|uni-pagination|[分页器](https://ext.dcloud.net.cn/plugin?name=uni-pagination)| +|uni-popup|[弹出层](https://ext.dcloud.net.cn/plugin?name=uni-popup)| +|uni-rate|[评分](https://ext.dcloud.net.cn/plugin?name=uni-rate)| +|uni-row|[布局-行](https://ext.dcloud.net.cn/plugin?name=uni-row)| +|uni-search-bar|[搜索栏](https://ext.dcloud.net.cn/plugin?name=uni-search-bar)| +|uni-segmented-control|[分段器](https://ext.dcloud.net.cn/plugin?name=uni-segmented-control)| +|uni-steps|[步骤条](https://ext.dcloud.net.cn/plugin?name=uni-steps)| +|uni-swipe-action|[滑动操作](https://ext.dcloud.net.cn/plugin?name=uni-swipe-action)| +|uni-swiper-dot|[轮播图指示点](https://ext.dcloud.net.cn/plugin?name=uni-swiper-dot)| +|uni-table|[表格](https://ext.dcloud.net.cn/plugin?name=uni-table)| +|uni-tag|[标签](https://ext.dcloud.net.cn/plugin?name=uni-tag)| +|uni-title|[章节标题](https://ext.dcloud.net.cn/plugin?name=uni-title)| +|uni-transition|[过渡动画](https://ext.dcloud.net.cn/plugin?name=uni-transition)| + + +使用 `uni_modules` 方式安装组件库,可以直接通过插件市场导入,通过右键菜单快速更新组件,不需要引用、注册,直接在页面中使用 `uni-ui` 组件。[点击安装 uni-ui 组件库](https://ext.dcloud.net.cn/plugin?id=55) + +**注意:下载最新的组件目前仅支持 uni_modules ,非 uni_modules 版本最高支持到组件的1.2.10版本** + +如不能升级到 `uni_modules` 版本,可以使用 `uni_modules` 安装好对应组件,将组件拷贝到对应目录。 + +例如需更新 `uni-list`和`uni-badge` ,将 `uni_modules>uni-list>components`和`uni_modules>uni-badege>components`下所有目录拷贝到如下目录即可: + + +**目录示例** + +```json +┌─components 组件目录 +│ ├─uni-list list 列表目录 +│ │ └─uni-list.vue list 组件文件 +│ ├─uni-list-item list-item 列表目录 +│ │ └─uni-list-item.vue list 组件文件 +│ ├─uni-badge badge 角标目录 +│ │ └─uni-badge.vue badge 组件文件 +│ └─ //.... 更多组件文件 +├─pages 业务页面文件存放的目录 +│ ├─index +│ │ └─index.vue index示例页面 +├─main.js Vue初始化入口文件 +├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期 +├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见 +└─pages.json 配置页 + +``` + +### 通过 `uni_modules` 导入全部组件 +如果想一次把所有uni-ui组件导入到项目中,只需要导入一个 `uni-ui` 组件即可 [点击去导入](https://ext.dcloud.net.cn/plugin?id=55)。 + +如果没有自动导入其他组件,可以在 uni-ui 组件目录上右键选择 `安装三方插件依赖` 即可。 + + + +### npm安装 +在 `vue-cli` 项目中可以使用 `npm` 安装 `uni-ui` 库 ,或者直接在 `HBuilderX` 项目中使用 `npm` 。 + +> **注意** +> cli 项目默认是不编译 `node_modules` 下的组件的,导致条件编译等功能失效 ,导致组件异常 +> 需要在根目录创建 `vue.config.js` 文件 ,增加 `@dcloudio/uni-ui` 包的编译即可正常 +> ```javascript +> // vue.config.js +> module.exports = { +> transpileDependencies:['@dcloudio/uni-ui'] +> } +> ``` + + + +**准备 sass** + +`vue-cli` 项目请先安装 sass 及 sass-loader,如在 HBuliderX 中使用,可跳过此步。 + +- 安装 sass +``` + npm i sass -D 或 yarn add sass -D +``` + +- 安装 sass-loader +``` +npm i sass-loader@10.1.1 -D 或 yarn add sass-loader@10.1.1 -D +``` + +> 如果 `node` 版本小于 16 ,sass-loader 请使用低于 @11.0.0 的版本,[sass-loader@11.0.0 不支持 vue@2.6.12 ](https://stackoverflow.com/questions/66082397/typeerror-this-getoptions-is-not-a-function) +> 如果 `node` 版本大于 16 , `sass-loader` 建议使用 `v8.x` 版本 + +**安装 uni-ui** + +``` +npm i @dcloudio/uni-ui 或 yarn add @dcloudio/uni-ui +``` + + + +**配置easycom** + +使用 `npm` 安装好 `uni-ui` 之后,需要配置 `easycom` 规则,让 `npm` 安装的组件支持 `easycom` + +打开项目根目录下的 `pages.json` 并添加 `easycom` 节点: + +```javascript +// pages.json +{ + "easycom": { + "autoscan": true, + "custom": { + // uni-ui 规则如下配置 + "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" + } + }, + + // 其他内容 + pages:[ + // ... + ] +} + +``` + +在 ``template`` 中使用组件: + +```html + + + +``` + + **注意** + - uni-ui 现在只推荐使用 `easycom` ,如自己引用组件,可能会出现组件找不到的问题 + - 使用 npm 安装的组件,默认情况下 babel-loader 会忽略所有 node_modules 中的文件 ,导致条件编译失效,需要通过配置 `vue.config.js` 解决: + ```javascript + // 在根目录创建 vue.config.js 文件,并配置如下 + module.exports = { + transpileDependencies: ['@dcloudio/uni-ui'] + } + ``` + - uni-ui 是uni-app内置组件的扩展。注意与web开发不同,uni-ui不包括基础组件,它是基础组件的补充。web开发中有的开发者习惯用一个ui库完成所有开发,但在uni-app体系中,推荐开发者首先使用性能更高的基础组件,然后按需引入必要的扩展组件。 + - `uni-ui` 不支持使用 `Vue.use()` 的方式安装 + + +### 贡献代码 +在使用 `uni-ui` 中,如遇到无法解决的问题,请提 [Issues](https://github.com/dcloudio/uni-ui/issues) 给我们,假如您有更好的点子或更好的实现方式,也欢迎给我们提交 [PR](https://github.com/dcloudio/uni-ui/pulls) \ No newline at end of file diff --git a/uni_modules/uv-line-progress/changelog.md b/uni_modules/uv-line-progress/changelog.md new file mode 100644 index 0000000..975acce --- /dev/null +++ b/uni_modules/uv-line-progress/changelog.md @@ -0,0 +1,7 @@ +## 1.0.2(2023-06-20) +1. 适配height参数携带单位 +## 1.0.1(2023-05-16) +1. 优化组件依赖,修改后无需全局引入,组件导入即可使用 +2. 优化部分功能 +## 1.0.0(2023-05-10) +uv-line-progress 线形进度条 diff --git a/uni_modules/uv-line-progress/components/uv-line-progress/props.js b/uni_modules/uv-line-progress/components/uv-line-progress/props.js new file mode 100644 index 0000000..23138c7 --- /dev/null +++ b/uni_modules/uv-line-progress/components/uv-line-progress/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: '#19be6b' + }, + inactiveColor: { + type: String, + default: '#ececec' + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: 0 + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: true + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: 12 + }, + ...uni.$uv?.props?.lineProgress + } +} \ No newline at end of file diff --git a/uni_modules/uv-line-progress/components/uv-line-progress/uv-line-progress.vue b/uni_modules/uv-line-progress/components/uv-line-progress/uv-line-progress.vue new file mode 100644 index 0000000..229c2aa --- /dev/null +++ b/uni_modules/uv-line-progress/components/uv-line-progress/uv-line-progress.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/uni_modules/uv-line-progress/package.json b/uni_modules/uv-line-progress/package.json new file mode 100644 index 0000000..01e550e --- /dev/null +++ b/uni_modules/uv-line-progress/package.json @@ -0,0 +1,87 @@ +{ + "id": "uv-line-progress", + "displayName": "uv-line-progress 线形进度条 全面兼容小程序、nvue、vue2、vue3等多端", + "version": "1.0.2", + "description": "uv-line-progress 该组件展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。", + "keywords": [ + "uv-line-progress", + "uvui", + "uv-ui", + "progress", + "进度条" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [ + "uv-ui-tools" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uv-line-progress/readme.md b/uni_modules/uv-line-progress/readme.md new file mode 100644 index 0000000..98e5d49 --- /dev/null +++ b/uni_modules/uv-line-progress/readme.md @@ -0,0 +1,11 @@ +## LineProgress 线形进度条 + +> **组件名:uv-line-progress** + +展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。 + +### 查看文档 + +### [完整示例项目下载 | 关注更多组件](https://ext.dcloud.net.cn/plugin?name=uv-ui) + +#### 如使用过程中有任何问题,或者您对uv-ui有一些好的建议,欢迎加入 uv-ui 交流群:uv-ui官方QQ群 diff --git a/uni_modules/uv-ui-tools/changelog.md b/uni_modules/uv-ui-tools/changelog.md new file mode 100644 index 0000000..998373e --- /dev/null +++ b/uni_modules/uv-ui-tools/changelog.md @@ -0,0 +1,76 @@ +## 1.1.25(2024-01-20) +1.1.20版本更新 +## 1.1.24(2023-12-21) +1. luch-request更新 +## 1.1.23(2023-12-12) +1. 1.1.19版本 +## 1.1.22(2023-11-28) +1. 优化 +## 1.1.21(2023-11-10) +1. 1.1.17版本 +## 1.1.20(2023-10-30) +1. 1.1.16版本 +## 1.1.19(2023-10-13) +1. 兼容vue3 +## 1.1.18(2023-10-12) +1. 1.1.15版本 +## 1.1.17(2023-09-27) +1. 1.1.14版本发布 +## 1.1.16(2023-09-15) +1. 1.1.13版本发布 +## 1.1.15(2023-09-15) +1. 更新button.js相关按钮支持open-type="agreePrivacyAuthorization" +## 1.1.14(2023-09-14) +1. 优化dayjs +## 1.1.13(2023-09-13) +1. 优化,$uv中增加unit参数,方便组件中使用 +## 1.1.12(2023-09-10) +1. 升级版本 +## 1.1.11(2023-09-04) +1. 1.1.11版本 +## 1.1.10(2023-08-31) +1. 修复customStyle和customClass存在冲突的问题 +## 1.1.9(2023-08-27) +1. 版本升级 +2. 优化 +## 1.1.8(2023-08-24) +1. 版本升级 +## 1.1.7(2023-08-22) +1. 版本升级 +## 1.1.6(2023-08-18) +uvui版本:1.1.6 +## 1.0.15(2023-08-14) +1. 更新uvui版本号 +## 1.0.13(2023-08-06) +1. 优化 +## 1.0.12(2023-08-06) +1. 修改版本号 +## 1.0.11(2023-08-06) +1. 路由增加events参数 +2. 路由拦截修复 +## 1.0.10(2023-08-01) +1. 优化 +## 1.0.9(2023-06-28) +优化openType.js +## 1.0.8(2023-06-15) +1. 修改支付宝报错的BUG +## 1.0.7(2023-06-07) +1. 解决微信小程序使用uvui提示 Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors +2. 解决上述提示,需要在uni.scss配置$uvui-nvue-style: false; 然后在APP.vue下面引入uvui内置的基础样式:@import '@/uni_modules/uv-ui-tools/index.scss'; +## 1.0.6(2023-06-04) +1. uv-ui-tools 优化工具组件,兼容更多功能 +2. 小程序分享功能优化等 +## 1.0.5(2023-06-02) +1. 修改扩展使用mixin中方法的问题 +## 1.0.4(2023-05-23) +1. 兼容百度小程序修改bem函数 +## 1.0.3(2023-05-16) +1. 优化组件依赖,修改后无需全局引入,组件导入即可使用 +2. 优化部分功能 +## 1.0.2(2023-05-10) +1. 增加Http请求封装 +2. 优化 +## 1.0.1(2023-05-04) +1. 修改名称及备注 +## 1.0.0(2023-05-04) +1. uv-ui工具集首次发布 diff --git a/uni_modules/uv-ui-tools/components/uv-ui-tools/uv-ui-tools.vue b/uni_modules/uv-ui-tools/components/uv-ui-tools/uv-ui-tools.vue new file mode 100644 index 0000000..baf45e9 --- /dev/null +++ b/uni_modules/uv-ui-tools/components/uv-ui-tools/uv-ui-tools.vue @@ -0,0 +1,6 @@ + + + diff --git a/uni_modules/uv-ui-tools/index.js b/uni_modules/uv-ui-tools/index.js new file mode 100644 index 0000000..71a8b66 --- /dev/null +++ b/uni_modules/uv-ui-tools/index.js @@ -0,0 +1,79 @@ +// 全局挂载引入http相关请求拦截插件 +import Request from './libs/luch-request' + +// 引入全局mixin +import mixin from './libs/mixin/mixin.js' +// 小程序特有的mixin +import mpMixin from './libs/mixin/mpMixin.js' +// #ifdef MP +import mpShare from './libs/mixin/mpShare.js' +// #endif + +// 路由封装 +import route from './libs/util/route.js' +// 公共工具函数 +import * as index from './libs/function/index.js' +// 防抖方法 +import debounce from './libs/function/debounce.js' +// 节流方法 +import throttle from './libs/function/throttle.js' +// 规则检验 +import * as test from './libs/function/test.js' + +// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制 +import * as colorGradient from './libs/function/colorGradient.js' + +// 配置信息 +import config from './libs/config/config.js' +// 平台 +import platform from './libs/function/platform' + +const $uv = { + route, + config, + test, + date: index.timeFormat, // 另名date + ...index, + colorGradient: colorGradient.colorGradient, + hexToRgb: colorGradient.hexToRgb, + rgbToHex: colorGradient.rgbToHex, + colorToRgba: colorGradient.colorToRgba, + http: new Request(), + debounce, + throttle, + platform, + mixin, + mpMixin +} +uni.$uv = $uv; +const install = (Vue,options={}) => { + // #ifndef APP-NVUE + const cloneMixin = index.deepClone(mixin); + delete cloneMixin?.props?.customClass; + delete cloneMixin?.props?.customStyle; + Vue.mixin(cloneMixin); + // #ifdef MP + if(options.mpShare){ + Vue.mixin(mpShare); + } + // #endif + // #endif + // #ifdef VUE2 + // 时间格式化,同时两个名称,date和timeFormat + Vue.filter('timeFormat', (timestamp, format) => uni.$uv.timeFormat(timestamp, format)); + Vue.filter('date', (timestamp, format) => uni.$uv.timeFormat(timestamp, format)); + // 将多久以前的方法,注入到全局过滤器 + Vue.filter('timeFrom', (timestamp, format) => uni.$uv.timeFrom(timestamp, format)); + // 同时挂载到uni和Vue.prototype中 + // #ifndef APP-NVUE + // 只有vue,挂载到Vue.prototype才有意义,因为nvue中全局Vue.prototype和Vue.mixin是无效的 + Vue.prototype.$uv = $uv; + // #endif + // #endif + // #ifdef VUE3 + Vue.config.globalProperties.$uv = $uv; + // #endif +} +export default { + install +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/index.scss b/uni_modules/uv-ui-tools/index.scss new file mode 100644 index 0000000..8d05b8d --- /dev/null +++ b/uni_modules/uv-ui-tools/index.scss @@ -0,0 +1,7 @@ +// 引入公共基础类 +@import "./libs/css/common.scss"; + +// 非nvue的样式 +/* #ifndef APP-NVUE */ +@import "./libs/css/vue.scss"; +/* #endif */ \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/config/config.js b/uni_modules/uv-ui-tools/libs/config/config.js new file mode 100644 index 0000000..f18ae74 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/config/config.js @@ -0,0 +1,34 @@ +// 此版本发布于2024-01-20 +const version = '1.1.20' + +// 开发环境才提示,生产环境不会提示 +if (process.env.NODE_ENV === 'development') { + console.log(`\n %c uvui V${version} https://www.uvui.cn/ \n\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0; border-radius: 5px;'); +} + +export default { + v: version, + version, + // 主题名称 + type: [ + 'primary', + 'success', + 'info', + 'error', + 'warning' + ], + // 颜色部分,本来可以通过scss的:export导出供js使用,但是奈何nvue不支持 + color: { + 'uv-primary': '#2979ff', + 'uv-warning': '#ff9900', + 'uv-success': '#19be6b', + 'uv-error': '#fa3534', + 'uv-info': '#909399', + 'uv-main-color': '#303133', + 'uv-content-color': '#606266', + 'uv-tips-color': '#909399', + 'uv-light-color': '#c0c4cc' + }, + // 默认单位,可以通过配置为rpx,那么在用于传入组件大小参数为数值时,就默认为rpx + unit: 'px' +} diff --git a/uni_modules/uv-ui-tools/libs/css/color.scss b/uni_modules/uv-ui-tools/libs/css/color.scss new file mode 100644 index 0000000..ce65743 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/color.scss @@ -0,0 +1,32 @@ +$uv-main-color: #303133 !default; +$uv-content-color: #606266 !default; +$uv-tips-color: #909193 !default; +$uv-light-color: #c0c4cc !default; +$uv-border-color: #dadbde !default; +$uv-bg-color: #f3f4f6 !default; +$uv-disabled-color: #c8c9cc !default; + +$uv-primary: #3c9cff !default; +$uv-primary-dark: #398ade !default; +$uv-primary-disabled: #9acafc !default; +$uv-primary-light: #ecf5ff !default; + +$uv-warning: #f9ae3d !default; +$uv-warning-dark: #f1a532 !default; +$uv-warning-disabled: #f9d39b !default; +$uv-warning-light: #fdf6ec !default; + +$uv-success: #5ac725 !default; +$uv-success-dark: #53c21d !default; +$uv-success-disabled: #a9e08f !default; +$uv-success-light: #f5fff0; + +$uv-error: #f56c6c !default; +$uv-error-dark: #e45656 !default; +$uv-error-disabled: #f7b2b2 !default; +$uv-error-light: #fef0f0 !default; + +$uv-info: #909399 !default; +$uv-info-dark: #767a82 !default; +$uv-info-disabled: #c4c6c9 !default; +$uv-info-light: #f4f4f5 !default; diff --git a/uni_modules/uv-ui-tools/libs/css/common.scss b/uni_modules/uv-ui-tools/libs/css/common.scss new file mode 100644 index 0000000..7ab99f8 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/common.scss @@ -0,0 +1,100 @@ +// 超出行数,自动显示行尾省略号,最多5行 +// 来自uvui的温馨提示:当您在控制台看到此报错,说明需要在App.vue的style标签加上【lang="scss"】 +@for $i from 1 through 5 { + .uv-line-#{$i} { + /* #ifdef APP-NVUE */ + // nvue下,可以直接使用lines属性,这是weex特有样式 + lines: $i; + text-overflow: ellipsis; + overflow: hidden; + flex: 1; + /* #endif */ + + /* #ifndef APP-NVUE */ + // vue下,单行和多行显示省略号需要单独处理 + @if $i == '1' { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } @else { + display: -webkit-box!important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: $i; + -webkit-box-orient: vertical!important; + } + /* #endif */ + } +} +$uv-bordercolor: #dadbde; +@if variable-exists(uv-border-color) { + $uv-bordercolor: $uv-border-color; +} + +// 此处加上!important并非随意乱用,而是因为目前*.nvue页面编译到H5时, +// App.vue的样式会被uni-app的view元素的自带border属性覆盖,导致无效 +// 综上,这是uni-app的缺陷导致我们为了多端兼容,而必须要加上!important +// 移动端兼容性较好,直接使用0.5px去实现细边框,不使用伪元素形式实现 +.uv-border { + border-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-style: solid; +} + +.uv-border-top { + border-top-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; +} + +.uv-border-left { + border-left-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-left-style: solid; +} + +.uv-border-right { + border-right-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-right-style: solid; +} + +.uv-border-bottom { + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-bottom-style: solid; +} + +.uv-border-top-bottom { + border-top-width: 0.5px!important; + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; + border-bottom-style: solid; +} + +// 去除button的所有默认样式,让其表现跟普通的view、text元素一样 +.uv-reset-button { + padding: 0; + background-color: transparent; + /* #ifndef APP-PLUS */ + font-size: inherit; + line-height: inherit; + color: inherit; + /* #endif */ + /* #ifdef APP-NVUE */ + border-width: 0; + /* #endif */ +} + +/* #ifndef APP-NVUE */ +.uv-reset-button::after { + border: none; +} +/* #endif */ + +.uv-hover-class { + opacity: 0.7; +} + diff --git a/uni_modules/uv-ui-tools/libs/css/components.scss b/uni_modules/uv-ui-tools/libs/css/components.scss new file mode 100644 index 0000000..81ce15d --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/components.scss @@ -0,0 +1,23 @@ +@mixin flex($direction: row) { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: $direction; +} + +/* #ifndef APP-NVUE */ +// 由于uvui是基于nvue环境进行开发的,此环境中普通元素默认为flex-direction: column; +// 所以在非nvue中,需要对元素进行重置为flex-direction: column; 否则可能会表现异常 +$uvui-nvue-style: true !default; +@if $uvui-nvue-style == true { + view, scroll-view, swiper-item { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; + } +} +/* #endif */ diff --git a/uni_modules/uv-ui-tools/libs/css/variable.scss b/uni_modules/uv-ui-tools/libs/css/variable.scss new file mode 100644 index 0000000..63903c9 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/variable.scss @@ -0,0 +1,111 @@ +// 超出行数,自动显示行尾省略号,最多5行 +// 来自uvui的温馨提示:当您在控制台看到此报错,说明需要在App.vue的style标签加上【lang="scss"】 +@if variable-exists(show-lines) { + @for $i from 1 through 5 { + .uv-line-#{$i} { + /* #ifdef APP-NVUE */ + // nvue下,可以直接使用lines属性,这是weex特有样式 + lines: $i; + text-overflow: ellipsis; + overflow: hidden; + flex: 1; + /* #endif */ + + /* #ifndef APP-NVUE */ + // vue下,单行和多行显示省略号需要单独处理 + @if $i == '1' { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } @else { + display: -webkit-box!important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: $i; + -webkit-box-orient: vertical!important; + } + /* #endif */ + } + } +} +@if variable-exists(show-border) { + $uv-bordercolor: #dadbde; + @if variable-exists(uv-border-color) { + $uv-bordercolor: $uv-border-color; + } + // 此处加上!important并非随意乱用,而是因为目前*.nvue页面编译到H5时, + // App.vue的样式会被uni-app的view元素的自带border属性覆盖,导致无效 + // 综上,这是uni-app的缺陷导致我们为了多端兼容,而必须要加上!important + // 移动端兼容性较好,直接使用0.5px去实现细边框,不使用伪元素形式实现 + @if variable-exists(show-border-surround) { + .uv-border { + border-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-style: solid; + } + } + @if variable-exists(show-border-top) { + .uv-border-top { + border-top-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; + } + } + @if variable-exists(show-border-left) { + .uv-border-left { + border-left-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-left-style: solid; + } + } + @if variable-exists(show-border-right) { + .uv-border-right { + border-right-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-right-style: solid; + } + } + @if variable-exists(show-border-bottom) { + .uv-border-bottom { + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-bottom-style: solid; + } + } + @if variable-exists(show-border-top-bottom) { + .uv-border-top-bottom { + border-top-width: 0.5px!important; + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; + border-bottom-style: solid; + } + } +} +@if variable-exists(show-reset-button) { + // 去除button的所有默认样式,让其表现跟普通的view、text元素一样 + .uv-reset-button { + padding: 0; + background-color: transparent; + /* #ifndef APP-PLUS */ + font-size: inherit; + line-height: inherit; + color: inherit; + /* #endif */ + /* #ifdef APP-NVUE */ + border-width: 0; + /* #endif */ + } + + /* #ifndef APP-NVUE */ + .uv-reset-button::after { + border: none; + } + /* #endif */ +} +@if variable-exists(show-hover) { + .uv-hover-class { + opacity: 0.7; + } +} diff --git a/uni_modules/uv-ui-tools/libs/css/vue.scss b/uni_modules/uv-ui-tools/libs/css/vue.scss new file mode 100644 index 0000000..bdbefdd --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/vue.scss @@ -0,0 +1,40 @@ +// 历遍生成4个方向的底部安全区 +@each $d in top, right, bottom, left { + .uv-safe-area-inset-#{$d} { + padding-#{$d}: 0; + padding-#{$d}: constant(safe-area-inset-#{$d}); + padding-#{$d}: env(safe-area-inset-#{$d}); + } +} + +//提升H5端uni.toast()的层级,避免被uvui的modal等遮盖 +/* #ifdef H5 */ +uni-toast { + z-index: 10090; +} +uni-toast .uni-toast { + z-index: 10090; +} +/* #endif */ + +// 隐藏scroll-view的滚动条 +::-webkit-scrollbar { + display: none; + width: 0 !important; + height: 0 !important; + -webkit-appearance: none; + background: transparent; +} + +$uvui-nvue-style: true !default; +@if $uvui-nvue-style == false { + view, scroll-view, swiper-item { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; + } +} diff --git a/uni_modules/uv-ui-tools/libs/function/colorGradient.js b/uni_modules/uv-ui-tools/libs/function/colorGradient.js new file mode 100644 index 0000000..55c188f --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/colorGradient.js @@ -0,0 +1,134 @@ +/** + * 求两个颜色之间的渐变值 + * @param {string} startColor 开始的颜色 + * @param {string} endColor 结束的颜色 + * @param {number} step 颜色等分的份额 + * */ +function colorGradient(startColor = 'rgb(0, 0, 0)', endColor = 'rgb(255, 255, 255)', step = 10) { + const startRGB = hexToRgb(startColor, false) // 转换为rgb数组模式 + const startR = startRGB[0] + const startG = startRGB[1] + const startB = startRGB[2] + + const endRGB = hexToRgb(endColor, false) + const endR = endRGB[0] + const endG = endRGB[1] + const endB = endRGB[2] + + const sR = (endR - startR) / step // 总差值 + const sG = (endG - startG) / step + const sB = (endB - startB) / step + const colorArr = [] + for (let i = 0; i < step; i++) { + // 计算每一步的hex值 + let hex = rgbToHex(`rgb(${Math.round((sR * i + startR))},${Math.round((sG * i + startG))},${Math.round((sB + * i + startB))})`) + // 确保第一个颜色值为startColor的值 + if (i === 0) hex = rgbToHex(startColor) + // 确保最后一个颜色值为endColor的值 + if (i === step - 1) hex = rgbToHex(endColor) + colorArr.push(hex) + } + return colorArr +} + +// 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式) +function hexToRgb(sColor, str = true) { + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/ + sColor = String(sColor).toLowerCase() + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)) + } + sColor = sColorNew + } + // 处理六位的颜色值 + const sColorChange = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`)) + } + if (!str) { + return sColorChange + } + return `rgb(${sColorChange[0]},${sColorChange[1]},${sColorChange[2]})` + } if (/^(rgb|RGB)/.test(sColor)) { + const arr = sColor.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',') + return arr.map((val) => Number(val)) + } + return sColor +} + +// 将rgb表示方式转换为hex表示方式 +function rgbToHex(rgb) { + const _this = rgb + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/ + if (/^(rgb|RGB)/.test(_this)) { + const aColor = _this.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',') + let strHex = '#' + for (let i = 0; i < aColor.length; i++) { + let hex = Number(aColor[i]).toString(16) + hex = String(hex).length == 1 ? `${0}${hex}` : hex // 保证每个rgb的值为2位 + if (hex === '0') { + hex += hex + } + strHex += hex + } + if (strHex.length !== 7) { + strHex = _this + } + return strHex + } if (reg.test(_this)) { + const aNum = _this.replace(/#/, '').split('') + if (aNum.length === 6) { + return _this + } if (aNum.length === 3) { + let numHex = '#' + for (let i = 0; i < aNum.length; i += 1) { + numHex += (aNum[i] + aNum[i]) + } + return numHex + } + } else { + return _this + } +} + +/** +* JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串 +* sHex为传入的十六进制的色值 +* alpha为rgba的透明度 +*/ +function colorToRgba(color, alpha) { + color = rgbToHex(color) + // 十六进制颜色值的正则表达式 + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/ + /* 16进制颜色转为RGB格式 */ + let sColor = String(color).toLowerCase() + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)) + } + sColor = sColorNew + } + // 处理六位的颜色值 + const sColorChange = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`)) + } + // return sColorChange.join(',') + return `rgba(${sColorChange.join(',')},${alpha})` + } + + return sColor +} + +export { + colorGradient, + hexToRgb, + rgbToHex, + colorToRgba +} diff --git a/uni_modules/uv-ui-tools/libs/function/debounce.js b/uni_modules/uv-ui-tools/libs/function/debounce.js new file mode 100644 index 0000000..ad3996b --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/debounce.js @@ -0,0 +1,29 @@ +let timeout = null + +/** + * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数 + * + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延时的时间 + * @param {Boolean} immediate 是否立即执行 + * @return null + */ +function debounce(func, wait = 500, immediate = false) { + // 清除定时器 + if (timeout !== null) clearTimeout(timeout) + // 立即执行,此类情况一般用不到 + if (immediate) { + const callNow = !timeout + timeout = setTimeout(() => { + timeout = null + }, wait) + if (callNow) typeof func === 'function' && func() + } else { + // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法 + timeout = setTimeout(() => { + typeof func === 'function' && func() + }, wait) + } +} + +export default debounce diff --git a/uni_modules/uv-ui-tools/libs/function/digit.js b/uni_modules/uv-ui-tools/libs/function/digit.js new file mode 100644 index 0000000..c8260a0 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/digit.js @@ -0,0 +1,167 @@ +let _boundaryCheckingState = true; // 是否进行越界检查的全局开关 + +/** + * 把错误的数据转正 + * @private + * @example strip(0.09999999999999998)=0.1 + */ +function strip(num, precision = 15) { + return +parseFloat(Number(num).toPrecision(precision)); +} + +/** + * Return digits length of a number + * @private + * @param {*number} num Input number + */ +function digitLength(num) { + // Get digit length of e + const eSplit = num.toString().split(/[eE]/); + const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0); + return len > 0 ? len : 0; +} + +/** + * 把小数转成整数,如果是小数则放大成整数 + * @private + * @param {*number} num 输入数 + */ +function float2Fixed(num) { + if (num.toString().indexOf('e') === -1) { + return Number(num.toString().replace('.', '')); + } + const dLen = digitLength(num); + return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num); +} + +/** + * 检测数字是否越界,如果越界给出提示 + * @private + * @param {*number} num 输入数 + */ +function checkBoundary(num) { + if (_boundaryCheckingState) { + if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) { + console.warn(`${num} 超出了精度限制,结果可能不正确`); + } + } +} + +/** + * 把递归操作扁平迭代化 + * @param {number[]} arr 要操作的数字数组 + * @param {function} operation 迭代操作 + * @private + */ +function iteratorOperation(arr, operation) { + const [num1, num2, ...others] = arr; + let res = operation(num1, num2); + + others.forEach((num) => { + res = operation(res, num); + }); + + return res; +} + +/** + * 高精度乘法 + * @export + */ +export function times(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, times); + } + + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + const baseNum = digitLength(num1) + digitLength(num2); + const leftValue = num1Changed * num2Changed; + + checkBoundary(leftValue); + + return leftValue / Math.pow(10, baseNum); +} + +/** + * 高精度加法 + * @export + */ +export function plus(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, plus); + } + + const [num1, num2] = nums; + // 取最大的小数位 + const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2))); + // 把小数都转为整数然后再计算 + return (times(num1, baseNum) + times(num2, baseNum)) / baseNum; +} + +/** + * 高精度减法 + * @export + */ +export function minus(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, minus); + } + + const [num1, num2] = nums; + const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2))); + return (times(num1, baseNum) - times(num2, baseNum)) / baseNum; +} + +/** + * 高精度除法 + * @export + */ +export function divide(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, divide); + } + + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + checkBoundary(num1Changed); + checkBoundary(num2Changed); + // 重要,这里必须用strip进行修正 + return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1)))); +} + +/** + * 四舍五入 + * @export + */ +export function round(num, ratio) { + const base = Math.pow(10, ratio); + let result = divide(Math.round(Math.abs(times(num, base))), base); + if (num < 0 && result !== 0) { + result = times(result, -1); + } + // 位数不足则补0 + return result; +} + +/** + * 是否进行边界检查,默认开启 + * @param flag 标记开关,true 为开启,false 为关闭,默认为 true + * @export + */ +export function enableBoundaryChecking(flag = true) { + _boundaryCheckingState = flag; +} + + +export default { + times, + plus, + minus, + divide, + round, + enableBoundaryChecking, +}; + diff --git a/uni_modules/uv-ui-tools/libs/function/index.js b/uni_modules/uv-ui-tools/libs/function/index.js new file mode 100644 index 0000000..b35e0ab --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/index.js @@ -0,0 +1,734 @@ +import { number, empty } from './test.js' +import { round } from './digit.js' +/** + * @description 如果value小于min,取min;如果value大于max,取max + * @param {number} min + * @param {number} max + * @param {number} value + */ +function range(min = 0, max = 0, value = 0) { + return Math.max(min, Math.min(max, Number(value))) +} + +/** + * @description 用于获取用户传递值的px值 如果用户传递了"xxpx"或者"xxrpx",取出其数值部分,如果是"xxxrpx"还需要用过uni.upx2px进行转换 + * @param {number|string} value 用户传递值的px值 + * @param {boolean} unit + * @returns {number|string} + */ +function getPx(value, unit = false) { + if (number(value)) { + return unit ? `${value}px` : Number(value) + } + // 如果带有rpx,先取出其数值部分,再转为px值 + if (/(rpx|upx)$/.test(value)) { + return unit ? `${uni.upx2px(parseInt(value))}px` : Number(uni.upx2px(parseInt(value))) + } + return unit ? `${parseInt(value)}px` : parseInt(value) +} + +/** + * @description 进行延时,以达到可以简写代码的目的 比如: await uni.$uv.sleep(20)将会阻塞20ms + * @param {number} value 堵塞时间 单位ms 毫秒 + * @returns {Promise} 返回promise + */ +function sleep(value = 30) { + return new Promise((resolve) => { + setTimeout(() => { + resolve() + }, value) + }) +} +/** + * @description 运行期判断平台 + * @returns {string} 返回所在平台(小写) + * @link 运行期判断平台 https://uniapp.dcloud.io/frame?id=判断平台 + */ +function os() { + return uni.getSystemInfoSync().platform.toLowerCase() +} +/** + * @description 获取系统信息同步接口 + * @link 获取系统信息同步接口 https://uniapp.dcloud.io/api/system/info?id=getsysteminfosync + */ +function sys() { + return uni.getSystemInfoSync() +} + +/** + * @description 取一个区间数 + * @param {Number} min 最小值 + * @param {Number} max 最大值 + */ +function random(min, max) { + if (min >= 0 && max > 0 && max >= min) { + const gab = max - min + 1 + return Math.floor(Math.random() * gab + min) + } + return 0 +} + +/** + * @param {Number} len uuid的长度 + * @param {Boolean} firstU 将返回的首字母置为"u" + * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制 + */ +function guid(len = 32, firstU = true, radix = null) { + const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') + const uuid = [] + radix = radix || chars.length + + if (len) { + // 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位 + for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix] + } else { + let r + // rfc4122标准要求返回的uuid中,某些位为固定的字符 + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-' + uuid[14] = '4' + + for (let i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | Math.random() * 16 + uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r] + } + } + } + // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class + if (firstU) { + uuid.shift() + return `u${uuid.join('')}` + } + return uuid.join('') +} + +/** +* @description 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法 + this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx + 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name + 值(默认为undefined),就是查找最顶层的$parent +* @param {string|undefined} name 父组件的参数名 +*/ +function $parent(name = undefined) { + let parent = this.$parent + // 通过while历遍,这里主要是为了H5需要多层解析的问题 + while (parent) { + // 父组件 + if (parent.$options && parent.$options.name !== name) { + // 如果组件的name不相等,继续上一级寻找 + parent = parent.$parent + } else { + return parent + } + } + return false +} + +/** + * @description 样式转换 + * 对象转字符串,或者字符串转对象 + * @param {object | string} customStyle 需要转换的目标 + * @param {String} target 转换的目的,object-转为对象,string-转为字符串 + * @returns {object|string} + */ +function addStyle(customStyle, target = 'object') { + // 字符串转字符串,对象转对象情形,直接返回 + if (empty(customStyle) || typeof(customStyle) === 'object' && target === 'object' || target === 'string' && + typeof(customStyle) === 'string') { + return customStyle + } + // 字符串转对象 + if (target === 'object') { + // 去除字符串样式中的两端空格(中间的空格不能去掉,比如padding: 20px 0如果去掉了就错了),空格是无用的 + customStyle = trim(customStyle) + // 根据";"将字符串转为数组形式 + const styleArray = customStyle.split(';') + const style = {} + // 历遍数组,拼接成对象 + for (let i = 0; i < styleArray.length; i++) { + // 'font-size:20px;color:red;',如此最后字符串有";"的话,会导致styleArray最后一个元素为空字符串,这里需要过滤 + if (styleArray[i]) { + const item = styleArray[i].split(':') + style[trim(item[0])] = trim(item[1]) + } + } + return style + } + // 这里为对象转字符串形式 + let string = '' + for (const i in customStyle) { + // 驼峰转为中划线的形式,否则css内联样式,无法识别驼峰样式属性名 + const key = i.replace(/([A-Z])/g, '-$1').toLowerCase() + string += `${key}:${customStyle[i]};` + } + // 去除两端空格 + return trim(string) +} + +/** + * @description 添加单位,如果有rpx,upx,%,px等单位结尾或者值为auto,直接返回,否则加上px单位结尾 + * @param {string|number} value 需要添加单位的值 + * @param {string} unit 添加的单位名 比如px + */ +function addUnit(value = 'auto', unit = uni?.$uv?.config?.unit ? uni?.$uv?.config?.unit : 'px') { + value = String(value) + // 用uvui内置验证规则中的number判断是否为数值 + return number(value) ? `${value}${unit}` : value +} + +/** + * @description 深度克隆 + * @param {object} obj 需要深度克隆的对象 + * @param cache 缓存 + * @returns {*} 克隆后的对象或者原值(不是对象) + */ +function deepClone(obj, cache = new WeakMap()) { + if (obj === null || typeof obj !== 'object') return obj; + if (cache.has(obj)) return cache.get(obj); + let clone; + if (obj instanceof Date) { + clone = new Date(obj.getTime()); + } else if (obj instanceof RegExp) { + clone = new RegExp(obj); + } else if (obj instanceof Map) { + clone = new Map(Array.from(obj, ([key, value]) => [key, deepClone(value, cache)])); + } else if (obj instanceof Set) { + clone = new Set(Array.from(obj, value => deepClone(value, cache))); + } else if (Array.isArray(obj)) { + clone = obj.map(value => deepClone(value, cache)); + } else if (Object.prototype.toString.call(obj) === '[object Object]') { + clone = Object.create(Object.getPrototypeOf(obj)); + cache.set(obj, clone); + for (const [key, value] of Object.entries(obj)) { + clone[key] = deepClone(value, cache); + } + } else { + clone = Object.assign({}, obj); + } + cache.set(obj, clone); + return clone; +} + +/** + * @description JS对象深度合并 + * @param {object} target 需要拷贝的对象 + * @param {object} source 拷贝的来源对象 + * @returns {object|boolean} 深度合并后的对象或者false(入参有不是对象) + */ +function deepMerge(target = {}, source = {}) { + target = deepClone(target) + if (typeof target !== 'object' || target === null || typeof source !== 'object' || source === null) return target; + const merged = Array.isArray(target) ? target.slice() : Object.assign({}, target); + for (const prop in source) { + if (!source.hasOwnProperty(prop)) continue; + const sourceValue = source[prop]; + const targetValue = merged[prop]; + if (sourceValue instanceof Date) { + merged[prop] = new Date(sourceValue); + } else if (sourceValue instanceof RegExp) { + merged[prop] = new RegExp(sourceValue); + } else if (sourceValue instanceof Map) { + merged[prop] = new Map(sourceValue); + } else if (sourceValue instanceof Set) { + merged[prop] = new Set(sourceValue); + } else if (typeof sourceValue === 'object' && sourceValue !== null) { + merged[prop] = deepMerge(targetValue, sourceValue); + } else { + merged[prop] = sourceValue; + } + } + return merged; +} + +/** + * @description error提示 + * @param {*} err 错误内容 + */ +function error(err) { + // 开发环境才提示,生产环境不会提示 + if (process.env.NODE_ENV === 'development') { + console.error(`uvui提示:${err}`) + } +} + +/** + * @description 打乱数组 + * @param {array} array 需要打乱的数组 + * @returns {array} 打乱后的数组 + */ +function randomArray(array = []) { + // 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0 + return array.sort(() => Math.random() - 0.5) +} + +// padStart 的 polyfill,因为某些机型或情况,还无法支持es7的padStart,比如电脑版的微信小程序 +// 所以这里做一个兼容polyfill的兼容处理 +if (!String.prototype.padStart) { + // 为了方便表示这里 fillString 用了ES6 的默认参数,不影响理解 + String.prototype.padStart = function(maxLength, fillString = ' ') { + if (Object.prototype.toString.call(fillString) !== '[object String]') { + throw new TypeError( + 'fillString must be String' + ) + } + const str = this + // 返回 String(str) 这里是为了使返回的值是字符串字面量,在控制台中更符合直觉 + if (str.length >= maxLength) return String(str) + + const fillLength = maxLength - str.length + let times = Math.ceil(fillLength / fillString.length) + while (times >>= 1) { + fillString += fillString + if (times === 1) { + fillString += fillString + } + } + return fillString.slice(0, fillLength) + str + } +} + +/** + * @description 格式化时间 + * @param {String|Number} dateTime 需要格式化的时间戳 + * @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd + * @returns {string} 返回格式化后的字符串 + */ +function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') { + let date + // 若传入时间为假值,则取当前时间 + if (!dateTime) { + date = new Date() + } + // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容) + else if (/^\d{10}$/.test(dateTime?.toString().trim())) { + date = new Date(dateTime * 1000) + } + // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容 + else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) { + date = new Date(Number(dateTime)) + } + // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间 + // 处理 '2022-07-10 01:02:03',跳过 '2022-07-10T01:02:03' + else if (typeof dateTime === 'string' && dateTime.includes('-') && !dateTime.includes('T')) { + date = new Date(dateTime.replace(/-/g, '/')) + } + // 其他都认为符合 RFC 2822 规范 + else { + date = new Date(dateTime) + } + + const timeSource = { + 'y': date.getFullYear().toString(), // 年 + 'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月 + 'd': date.getDate().toString().padStart(2, '0'), // 日 + 'h': date.getHours().toString().padStart(2, '0'), // 时 + 'M': date.getMinutes().toString().padStart(2, '0'), // 分 + 's': date.getSeconds().toString().padStart(2, '0') // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + } + + for (const key in timeSource) { + const [ret] = new RegExp(`${key}+`).exec(formatStr) || [] + if (ret) { + // 年可能只需展示两位 + const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0 + formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex)) + } + } + + return formatStr +} + +/** + * @description 时间戳转为多久之前 + * @param {String|Number} timestamp 时间戳 + * @param {String|Boolean} format + * 格式化规则如果为时间格式字符串,超出一定时间范围,返回固定的时间格式; + * 如果为布尔值false,无论什么时间,都返回多久以前的格式 + * @returns {string} 转化后的内容 + */ +function timeFrom(timestamp = null, format = 'yyyy-mm-dd') { + if (timestamp == null) timestamp = Number(new Date()) + timestamp = parseInt(timestamp) + // 判断用户输入的时间戳是秒还是毫秒,一般前端js获取的时间戳是毫秒(13位),后端传过来的为秒(10位) + if (timestamp.toString().length == 10) timestamp *= 1000 + let timer = (new Date()).getTime() - timestamp + timer = parseInt(timer / 1000) + // 如果小于5分钟,则返回"刚刚",其他以此类推 + let tips = '' + switch (true) { + case timer < 300: + tips = '刚刚' + break + case timer >= 300 && timer < 3600: + tips = `${parseInt(timer / 60)}分钟前` + break + case timer >= 3600 && timer < 86400: + tips = `${parseInt(timer / 3600)}小时前` + break + case timer >= 86400 && timer < 2592000: + tips = `${parseInt(timer / 86400)}天前` + break + default: + // 如果format为false,则无论什么时间戳,都显示xx之前 + if (format === false) { + if (timer >= 2592000 && timer < 365 * 86400) { + tips = `${parseInt(timer / (86400 * 30))}个月前` + } else { + tips = `${parseInt(timer / (86400 * 365))}年前` + } + } else { + tips = timeFormat(timestamp, format) + } + } + return tips +} + +/** + * @description 去除空格 + * @param String str 需要去除空格的字符串 + * @param String pos both(左右)|left|right|all 默认both + */ +function trim(str, pos = 'both') { + str = String(str) + if (pos == 'both') { + return str.replace(/^\s+|\s+$/g, '') + } + if (pos == 'left') { + return str.replace(/^\s*/, '') + } + if (pos == 'right') { + return str.replace(/(\s*$)/g, '') + } + if (pos == 'all') { + return str.replace(/\s+/g, '') + } + return str +} + +/** + * @description 对象转url参数 + * @param {object} data,对象 + * @param {Boolean} isPrefix,是否自动加上"?" + * @param {string} arrayFormat 规则 indices|brackets|repeat|comma + */ +function queryParams(data = {}, isPrefix = true, arrayFormat = 'brackets') { + const prefix = isPrefix ? '?' : '' + const _result = [] + if (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets' + for (const key in data) { + const value = data[key] + // 去掉为空的参数 + if (['', undefined, null].indexOf(value) >= 0) { + continue + } + // 如果值为数组,另行处理 + if (value.constructor === Array) { + // e.g. {ids: [1, 2, 3]} + switch (arrayFormat) { + case 'indices': + // 结果: ids[0]=1&ids[1]=2&ids[2]=3 + for (let i = 0; i < value.length; i++) { + _result.push(`${key}[${i}]=${value[i]}`) + } + break + case 'brackets': + // 结果: ids[]=1&ids[]=2&ids[]=3 + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`) + }) + break + case 'repeat': + // 结果: ids=1&ids=2&ids=3 + value.forEach((_value) => { + _result.push(`${key}=${_value}`) + }) + break + case 'comma': + // 结果: ids=1,2,3 + let commaStr = '' + value.forEach((_value) => { + commaStr += (commaStr ? ',' : '') + _value + }) + _result.push(`${key}=${commaStr}`) + break + default: + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`) + }) + } + } else { + _result.push(`${key}=${value}`) + } + } + return _result.length ? prefix + _result.join('&') : '' +} + +/** + * 显示消息提示框 + * @param {String} title 提示的内容,长度与 icon 取值有关。 + * @param {Number} duration 提示的延迟时间,单位毫秒,默认:2000 + */ +function toast(title, duration = 2000) { + uni.showToast({ + title: String(title), + icon: 'none', + duration + }) +} + +/** + * @description 根据主题type值,获取对应的图标 + * @param {String} type 主题名称,primary|info|error|warning|success + * @param {boolean} fill 是否使用fill填充实体的图标 + */ +function type2icon(type = 'success', fill = false) { + // 如果非预置值,默认为success + if (['primary', 'info', 'error', 'warning', 'success'].indexOf(type) == -1) type = 'success' + let iconName = '' + // 目前(2019-12-12),info和primary使用同一个图标 + switch (type) { + case 'primary': + iconName = 'info-circle' + break + case 'info': + iconName = 'info-circle' + break + case 'error': + iconName = 'close-circle' + break + case 'warning': + iconName = 'error-circle' + break + case 'success': + iconName = 'checkmark-circle' + break + default: + iconName = 'checkmark-circle' + } + // 是否是实体类型,加上-fill,在icon组件库中,实体的类名是后面加-fill的 + if (fill) iconName += '-fill' + return iconName +} + +/** + * @description 数字格式化 + * @param {number|string} number 要格式化的数字 + * @param {number} decimals 保留几位小数 + * @param {string} decimalPoint 小数点符号 + * @param {string} thousandsSeparator 千分位符号 + * @returns {string} 格式化后的数字 + */ +function priceFormat(number, decimals = 0, decimalPoint = '.', thousandsSeparator = ',') { + number = (`${number}`).replace(/[^0-9+-Ee.]/g, '') + const n = !isFinite(+number) ? 0 : +number + const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals) + const sep = (typeof thousandsSeparator === 'undefined') ? ',' : thousandsSeparator + const dec = (typeof decimalPoint === 'undefined') ? '.' : decimalPoint + let s = '' + + s = (prec ? round(n, prec) + '' : `${Math.round(n)}`).split('.') + const re = /(-?\d+)(\d{3})/ + while (re.test(s[0])) { + s[0] = s[0].replace(re, `$1${sep}$2`) + } + + if ((s[1] || '').length < prec) { + s[1] = s[1] || '' + s[1] += new Array(prec - s[1].length + 1).join('0') + } + return s.join(dec) +} + +/** + * @description 获取duration值 + * 如果带有ms或者s直接返回,如果大于一定值,认为是ms单位,小于一定值,认为是s单位 + * 比如以30位阈值,那么300大于30,可以理解为用户想要的是300ms,而不是想花300s去执行一个动画 + * @param {String|number} value 比如: "1s"|"100ms"|1|100 + * @param {boolean} unit 提示: 如果是false 默认返回number + * @return {string|number} + */ +function getDuration(value, unit = true) { + const valueNum = parseInt(value) + if (unit) { + if (/s$/.test(value)) return value + return value > 30 ? `${value}ms` : `${value}s` + } + if (/ms$/.test(value)) return valueNum + if (/s$/.test(value)) return valueNum > 30 ? valueNum : valueNum * 1000 + return valueNum +} + +/** + * @description 日期的月或日补零操作 + * @param {String} value 需要补零的值 + */ +function padZero(value) { + return `00${value}`.slice(-2) +} + +/** + * @description 在uv-form的子组件内容发生变化,或者失去焦点时,尝试通知uv-form执行校验方法 + * @param {*} instance + * @param {*} event + */ +function formValidate(instance, event) { + const formItem = $parent.call(instance, 'uv-form-item') + const form = $parent.call(instance, 'uv-form') + // 如果发生变化的input或者textarea等,其父组件中有uv-form-item或者uv-form等,就执行form的validate方法 + // 同时将form-item的pros传递给form,让其进行精确对象验证 + if (formItem && form) { + form.validateField(formItem.prop, () => {}, event) + } +} + +/** + * @description 获取某个对象下的属性,用于通过类似'a.b.c'的形式去获取一个对象的的属性的形式 + * @param {object} obj 对象 + * @param {string} key 需要获取的属性字段 + * @returns {*} + */ +function getProperty(obj, key) { + if (!obj) { + return + } + if (typeof key !== 'string' || key === '') { + return '' + } + if (key.indexOf('.') !== -1) { + const keys = key.split('.') + let firstObj = obj[keys[0]] || {} + + for (let i = 1; i < keys.length; i++) { + if (firstObj) { + firstObj = firstObj[keys[i]] + } + } + return firstObj + } + return obj[key] +} + +/** + * @description 设置对象的属性值,如果'a.b.c'的形式进行设置 + * @param {object} obj 对象 + * @param {string} key 需要设置的属性 + * @param {string} value 设置的值 + */ +function setProperty(obj, key, value) { + if (!obj) { + return + } + // 递归赋值 + const inFn = function(_obj, keys, v) { + // 最后一个属性key + if (keys.length === 1) { + _obj[keys[0]] = v + return + } + // 0~length-1个key + while (keys.length > 1) { + const k = keys[0] + if (!_obj[k] || (typeof _obj[k] !== 'object')) { + _obj[k] = {} + } + const key = keys.shift() + // 自调用判断是否存在属性,不存在则自动创建对象 + inFn(_obj[k], keys, v) + } + } + + if (typeof key !== 'string' || key === '') { + + } else if (key.indexOf('.') !== -1) { // 支持多层级赋值操作 + const keys = key.split('.') + inFn(obj, keys, value) + } else { + obj[key] = value + } +} + +/** + * @description 获取当前页面路径 + */ +function page() { + const pages = getCurrentPages(); + const route = pages[pages.length - 1]?.route; + // 某些特殊情况下(比如页面进行redirectTo时的一些时机),pages可能为空数组 + return `/${route ? route : ''}` +} + +/** + * @description 获取当前路由栈实例数组 + */ +function pages() { + const pages = getCurrentPages() + return pages +} + +/** + * 获取页面历史栈指定层实例 + * @param back {number} [0] - 0或者负数,表示获取历史栈的哪一层,0表示获取当前页面实例,-1 表示获取上一个页面实例。默认0。 + */ +function getHistoryPage(back = 0) { + const pages = getCurrentPages() + const len = pages.length + return pages[len - 1 + back] +} + + + +/** + * @description 修改uvui内置属性值 + * @param {object} props 修改内置props属性 + * @param {object} config 修改内置config属性 + * @param {object} color 修改内置color属性 + * @param {object} zIndex 修改内置zIndex属性 + */ +function setConfig({ + props = {}, + config = {}, + color = {}, + zIndex = {} +}) { + const { + deepMerge, + } = uni.$uv + uni.$uv.config = deepMerge(uni.$uv.config, config) + uni.$uv.props = deepMerge(uni.$uv.props, props) + uni.$uv.color = deepMerge(uni.$uv.color, color) + uni.$uv.zIndex = deepMerge(uni.$uv.zIndex, zIndex) +} + +export { + range, + getPx, + sleep, + os, + sys, + random, + guid, + $parent, + addStyle, + addUnit, + deepClone, + deepMerge, + error, + randomArray, + timeFormat, + timeFrom, + trim, + queryParams, + toast, + type2icon, + priceFormat, + getDuration, + padZero, + formValidate, + getProperty, + setProperty, + page, + pages, + getHistoryPage, + setConfig +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/function/platform.js b/uni_modules/uv-ui-tools/libs/function/platform.js new file mode 100644 index 0000000..d6b926e --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/platform.js @@ -0,0 +1,75 @@ +/** + * 注意: + * 此部分内容,在vue-cli模式下,需要在vue.config.js加入如下内容才有效: + * module.exports = { + * transpileDependencies: ['uview-v2'] + * } + */ + +let platform = 'none' + +// #ifdef VUE3 +platform = 'vue3' +// #endif + +// #ifdef VUE2 +platform = 'vue2' +// #endif + +// #ifdef APP-PLUS +platform = 'plus' +// #endif + +// #ifdef APP-NVUE +platform = 'nvue' +// #endif + +// #ifdef H5 +platform = 'h5' +// #endif + +// #ifdef MP-WEIXIN +platform = 'weixin' +// #endif + +// #ifdef MP-ALIPAY +platform = 'alipay' +// #endif + +// #ifdef MP-BAIDU +platform = 'baidu' +// #endif + +// #ifdef MP-TOUTIAO +platform = 'toutiao' +// #endif + +// #ifdef MP-QQ +platform = 'qq' +// #endif + +// #ifdef MP-KUAISHOU +platform = 'kuaishou' +// #endif + +// #ifdef MP-360 +platform = '360' +// #endif + +// #ifdef MP +platform = 'mp' +// #endif + +// #ifdef QUICKAPP-WEBVIEW +platform = 'quickapp-webview' +// #endif + +// #ifdef QUICKAPP-WEBVIEW-HUAWEI +platform = 'quickapp-webview-huawei' +// #endif + +// #ifdef QUICKAPP-WEBVIEW-UNION +platform = 'quckapp-webview-union' +// #endif + +export default platform diff --git a/uni_modules/uv-ui-tools/libs/function/test.js b/uni_modules/uv-ui-tools/libs/function/test.js new file mode 100644 index 0000000..7c8b747 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/test.js @@ -0,0 +1,287 @@ +/** + * 验证电子邮箱格式 + */ +function email(value) { + return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value) +} + +/** + * 验证手机格式 + */ +function mobile(value) { + return /^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(value) +} + +/** + * 验证URL格式 + */ +function url(value) { + return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/ + .test(value) +} + +/** + * 验证日期格式 + */ +function date(value) { + if (!value) return false + // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳 + if (number(value)) value = +value + return !/Invalid|NaN/.test(new Date(value).toString()) +} + +/** + * 验证ISO类型的日期格式 + */ +function dateISO(value) { + return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value) +} + +/** + * 验证十进制数字 + */ +function number(value) { + return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value) +} + +/** + * 验证字符串 + */ +function string(value) { + return typeof value === 'string' +} + +/** + * 验证整数 + */ +function digits(value) { + return /^\d+$/.test(value) +} + +/** + * 验证身份证号码 + */ +function idCard(value) { + return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test( + value + ) +} + +/** + * 是否车牌号 + */ +function carNo(value) { + // 新能源车牌 + const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/ + // 旧车牌 + const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/ + if (value.length === 7) { + return creg.test(value) + } if (value.length === 8) { + return xreg.test(value) + } + return false +} + +/** + * 金额,只允许2位小数 + */ +function amount(value) { + // 金额,只允许保留两位小数 + return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value) +} + +/** + * 中文 + */ +function chinese(value) { + const reg = /^[\u4e00-\u9fa5]+$/gi + return reg.test(value) +} + +/** + * 只能输入字母 + */ +function letter(value) { + return /^[a-zA-Z]*$/.test(value) +} + +/** + * 只能是字母或者数字 + */ +function enOrNum(value) { + // 英文或者数字 + const reg = /^[0-9a-zA-Z]*$/g + return reg.test(value) +} + +/** + * 验证是否包含某个值 + */ +function contains(value, param) { + return value.indexOf(param) >= 0 +} + +/** + * 验证一个值范围[min, max] + */ +function range(value, param) { + return value >= param[0] && value <= param[1] +} + +/** + * 验证一个长度范围[min, max] + */ +function rangeLength(value, param) { + return value.length >= param[0] && value.length <= param[1] +} + +/** + * 是否固定电话 + */ +function landline(value) { + const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/ + return reg.test(value) +} + +/** + * 判断是否为空 + */ +function empty(value) { + switch (typeof value) { + case 'undefined': + return true + case 'string': + if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true + break + case 'boolean': + if (!value) return true + break + case 'number': + if (value === 0 || isNaN(value)) return true + break + case 'object': + if (value === null || value.length === 0) return true + for (const i in value) { + return false + } + return true + } + return false +} + +/** + * 是否json字符串 + */ +function jsonString(value) { + if (typeof value === 'string') { + try { + const obj = JSON.parse(value) + if (typeof obj === 'object' && obj) { + return true + } + return false + } catch (e) { + return false + } + } + return false +} + +/** + * 是否数组 + */ +function array(value) { + if (typeof Array.isArray === 'function') { + return Array.isArray(value) + } + return Object.prototype.toString.call(value) === '[object Array]' +} + +/** + * 是否对象 + */ +function object(value) { + return Object.prototype.toString.call(value) === '[object Object]' +} + +/** + * 是否短信验证码 + */ +function code(value, len = 6) { + return new RegExp(`^\\d{${len}}$`).test(value) +} + +/** + * 是否函数方法 + * @param {Object} value + */ +function func(value) { + return typeof value === 'function' +} + +/** + * 是否promise对象 + * @param {Object} value + */ +function promise(value) { + return object(value) && func(value.then) && func(value.catch) +} + +/** 是否图片格式 + * @param {Object} value + */ +function image(value) { + const newValue = value.split('?')[0] + const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i + return IMAGE_REGEXP.test(newValue) +} + +/** + * 是否视频格式 + * @param {Object} value + */ +function video(value) { + const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i + return VIDEO_REGEXP.test(value) +} + +/** + * 是否为正则对象 + * @param {Object} + * @return {Boolean} + */ +function regExp(o) { + return o && Object.prototype.toString.call(o) === '[object RegExp]' +} + +export { + email, + mobile, + url, + date, + dateISO, + number, + digits, + idCard, + carNo, + amount, + chinese, + letter, + enOrNum, + contains, + range, + rangeLength, + empty, + jsonString, + landline, + object, + array, + code, + func, + promise, + video, + image, + regExp, + string +} diff --git a/uni_modules/uv-ui-tools/libs/function/throttle.js b/uni_modules/uv-ui-tools/libs/function/throttle.js new file mode 100644 index 0000000..2f33611 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/throttle.js @@ -0,0 +1,30 @@ +let timer; let + flag +/** + * 节流原理:在一定时间内,只能触发一次 + * + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延时的时间 + * @param {Boolean} immediate 是否立即执行 + * @return null + */ +function throttle(func, wait = 500, immediate = true) { + if (immediate) { + if (!flag) { + flag = true + // 如果是立即执行,则在wait毫秒内开始时执行 + typeof func === 'function' && func() + timer = setTimeout(() => { + flag = false + }, wait) + } + } else if (!flag) { + flag = true + // 如果是非立即执行,则在wait毫秒内的结束处执行 + timer = setTimeout(() => { + flag = false + typeof func === 'function' && func() + }, wait) + } +} +export default throttle diff --git a/uni_modules/uv-ui-tools/libs/luch-request/adapters/index.js b/uni_modules/uv-ui-tools/libs/luch-request/adapters/index.js new file mode 100644 index 0000000..31a5cfc --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/adapters/index.js @@ -0,0 +1,132 @@ +import buildURL from '../helpers/buildURL' +import buildFullPath from '../core/buildFullPath' +import settle from '../core/settle' +import {isUndefined} from "../utils" + +/** + * 返回可选值存在的配置 + * @param {Array} keys - 可选值数组 + * @param {Object} config2 - 配置 + * @return {{}} - 存在的配置项 + */ +const mergeKeys = (keys, config2) => { + let config = {} + keys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } + }) + return config +} +export default (config) => { + return new Promise((resolve, reject) => { + let fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params, config.paramsSerializer) + const _config = { + url: fullPath, + header: config.header, + complete: (response) => { + config.fullPath = fullPath + response.config = config + response.rawData = response.data + try { + let jsonParseHandle = false + const forcedJSONParsingType = typeof config.forcedJSONParsing + if (forcedJSONParsingType === 'boolean') { + jsonParseHandle = config.forcedJSONParsing + } else if (forcedJSONParsingType === 'object') { + const includesMethod = config.forcedJSONParsing.include || [] + jsonParseHandle = includesMethod.includes(config.method) + } + + // 对可能字符串不是json 的情况容错 + if (jsonParseHandle && typeof response.data === 'string') { + response.data = JSON.parse(response.data) + } + // eslint-disable-next-line no-empty + } catch (e) { + } + settle(resolve, reject, response) + } + } + let requestTask + if (config.method === 'UPLOAD') { + delete _config.header['content-type'] + delete _config.header['Content-Type'] + let otherConfig = { + // #ifdef MP-ALIPAY + fileType: config.fileType, + // #endif + filePath: config.filePath, + name: config.name + } + const optionalKeys = [ + // #ifdef APP-PLUS || H5 + 'files', + // #endif + // #ifdef H5 + 'file', + // #endif + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + 'formData' + ] + requestTask = uni.uploadFile({..._config, ...otherConfig, ...mergeKeys(optionalKeys, config)}) + } else if (config.method === 'DOWNLOAD') { + const optionalKeys = [ + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + // #ifdef MP + 'filePath', + // #endif + ] + requestTask = uni.downloadFile({..._config, ...mergeKeys(optionalKeys, config)}) + } else { + const optionalKeys = [ + 'data', + 'method', + // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + 'timeout', + // #endif + 'dataType', + // #ifndef MP-ALIPAY + 'responseType', + // #endif + // #ifdef APP-PLUS + 'sslVerify', + // #endif + // #ifdef H5 + 'withCredentials', + // #endif + // #ifdef APP-PLUS + 'firstIpv4', + // #endif + // #ifdef MP-WEIXIN + 'enableHttp2', + 'enableQuic', + // #endif + // #ifdef MP-TOUTIAO || MP-WEIXIN + 'enableCache', + // #endif + // #ifdef MP-WEIXIN + 'enableHttpDNS', + 'httpDNSServiceId', + 'enableChunked', + 'forceCellularNetwork', + // #endif + // #ifdef MP-ALIPAY + 'enableCookie', + // #endif + // #ifdef MP-BAIDU + 'cloudCache', + 'defer' + // #endif + ] + requestTask = uni.request({..._config, ...mergeKeys(optionalKeys, config)}) + } + if (config.getTask) { + config.getTask(requestTask, config) + } + }) +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/InterceptorManager.js b/uni_modules/uv-ui-tools/libs/luch-request/core/InterceptorManager.js new file mode 100644 index 0000000..3ea0d5e --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/InterceptorManager.js @@ -0,0 +1,51 @@ +'use strict' + + +function InterceptorManager() { + this.handlers = [] +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }) + return this.handlers.length - 1 +} + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null + } +} + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + this.handlers.forEach(h => { + if (h !== null) { + fn(h) + } + }) +} + +export default InterceptorManager diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/Request.js b/uni_modules/uv-ui-tools/libs/luch-request/core/Request.js new file mode 100644 index 0000000..96c89a8 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/Request.js @@ -0,0 +1,201 @@ +/** + * @Class Request + * @description luch-request http请求插件 + * @Author lu-ch + * @Email webwork.s@qq.com + * 文档: https://www.quanzhan.co/luch-request/ + * github: https://github.com/lei-mu/luch-request + * DCloud: http://ext.dcloud.net.cn/plugin?id=392 + */ + + +import dispatchRequest from './dispatchRequest' +import InterceptorManager from './InterceptorManager' +import mergeConfig from './mergeConfig' +import defaults from './defaults' +import { isPlainObject } from '../utils' +import clone from '../utils/clone' + +export default class Request { + /** + * @param {Object} arg - 全局配置 + * @param {String} arg.baseURL - 全局根路径 + * @param {Object} arg.header - 全局header + * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式 + * @param {String} arg.dataType = [json] - 全局默认的dataType + * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。支付宝小程序不支持 + * @param {Object} arg.custom - 全局默认的自定义参数 + * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序 + * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+) + * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+) + * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+) + * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300 + */ + constructor(arg = {}) { + if (!isPlainObject(arg)) { + arg = {} + console.warn('设置全局参数必须接收一个Object') + } + this.config = clone({...defaults, ...arg}) + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + } + } + + /** + * @Function + * @param {Request~setConfigCallback} f - 设置全局默认配置 + */ + setConfig(f) { + this.config = f(this.config) + } + + middleware(config) { + config = mergeConfig(this.config, config) + let chain = [dispatchRequest, undefined] + let promise = Promise.resolve(config) + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected) + }) + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected) + }) + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()) + } + + return promise + } + + /** + * @Function + * @param {Object} config - 请求配置项 + * @prop {String} options.url - 请求路径 + * @prop {Object} options.data - 请求参数 + * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型 + * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse + * @prop {Object} [options.header = config.header] - 请求header + * @prop {Object} [options.method = config.method] - 请求方法 + * @returns {Promise} + */ + request(config = {}) { + return this.middleware(config) + } + + get(url, options = {}) { + return this.middleware({ + url, + method: 'GET', + ...options + }) + } + + post(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'POST', + ...options + }) + } + + // #ifndef MP-ALIPAY || MP-KUAISHOU || MP-JD + put(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'PUT', + ...options + }) + } + + // #endif + + // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU + delete(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'DELETE', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN + connect(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'CONNECT', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN || MP-BAIDU + head(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'HEAD', + ...options + }) + } + + // #endif + + // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU + options(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'OPTIONS', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN + trace(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'TRACE', + ...options + }) + } + + // #endif + + upload(url, config = {}) { + config.url = url + config.method = 'UPLOAD' + return this.middleware(config) + } + + download(url, config = {}) { + config.url = url + config.method = 'DOWNLOAD' + return this.middleware(config) + } + + get version () { + return '3.1.0' + } +} + + +/** + * setConfig回调 + * @return {Object} - 返回操作后的config + * @callback Request~setConfigCallback + * @param {Object} config - 全局默认config + */ diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/buildFullPath.js b/uni_modules/uv-ui-tools/libs/luch-request/core/buildFullPath.js new file mode 100644 index 0000000..f2852f4 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/buildFullPath.js @@ -0,0 +1,20 @@ +'use strict' + +import isAbsoluteURL from '../helpers/isAbsoluteURL' +import combineURLs from '../helpers/combineURLs' + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +export default function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL) + } + return requestedURL +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/defaults.js b/uni_modules/uv-ui-tools/libs/luch-request/core/defaults.js new file mode 100644 index 0000000..db74609 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/defaults.js @@ -0,0 +1,33 @@ +/** + * 默认的全局配置 + */ + + +export default { + baseURL: '', + header: {}, + method: 'GET', + dataType: 'json', + paramsSerializer: null, + // #ifndef MP-ALIPAY + responseType: 'text', + // #endif + custom: {}, + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + timeout: 60000, + // #endif + // #ifdef APP-PLUS + sslVerify: true, + // #endif + // #ifdef H5 + withCredentials: false, + // #endif + // #ifdef APP-PLUS + firstIpv4: false, + // #endif + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300 + }, + // 是否尝试将响应数据json化 + forcedJSONParsing: true +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/dispatchRequest.js b/uni_modules/uv-ui-tools/libs/luch-request/core/dispatchRequest.js new file mode 100644 index 0000000..c5f2c85 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/dispatchRequest.js @@ -0,0 +1,6 @@ +import adapter from '../adapters/index' + + +export default (config) => { + return adapter(config) +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/mergeConfig.js b/uni_modules/uv-ui-tools/libs/luch-request/core/mergeConfig.js new file mode 100644 index 0000000..99c8ecd --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/mergeConfig.js @@ -0,0 +1,126 @@ +import {deepMerge, isUndefined} from '../utils' + +/** + * 合并局部配置优先的配置,如果局部有该配置项则用局部,如果全局有该配置项则用全局 + * @param {Array} keys - 配置项 + * @param {Object} globalsConfig - 当前的全局配置 + * @param {Object} config2 - 局部配置 + * @return {{}} + */ +const mergeKeys = (keys, globalsConfig, config2) => { + let config = {} + keys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } else if (!isUndefined(globalsConfig[prop])) { + config[prop] = globalsConfig[prop] + } + }) + return config +} +/** + * + * @param globalsConfig - 当前实例的全局配置 + * @param config2 - 当前的局部配置 + * @return - 合并后的配置 + */ +export default (globalsConfig, config2 = {}) => { + const method = config2.method || globalsConfig.method || 'GET' + let config = { + baseURL: config2.baseURL || globalsConfig.baseURL || '', + method: method, + url: config2.url || '', + params: config2.params || {}, + custom: {...(globalsConfig.custom || {}), ...(config2.custom || {})}, + header: deepMerge(globalsConfig.header || {}, config2.header || {}) + } + const defaultToConfig2Keys = ['getTask', 'validateStatus', 'paramsSerializer', 'forcedJSONParsing'] + config = {...config, ...mergeKeys(defaultToConfig2Keys, globalsConfig, config2)} + + // eslint-disable-next-line no-empty + if (method === 'DOWNLOAD') { + const downloadKeys = [ + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + // #ifdef MP + 'filePath', + // #endif + ] + config = {...config, ...mergeKeys(downloadKeys, globalsConfig, config2)} + } else if (method === 'UPLOAD') { + delete config.header['content-type'] + delete config.header['Content-Type'] + const uploadKeys = [ + // #ifdef APP-PLUS || H5 + 'files', + // #endif + // #ifdef MP-ALIPAY + 'fileType', + // #endif + // #ifdef H5 + 'file', + // #endif + 'filePath', + 'name', + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + 'formData', + ] + uploadKeys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } + }) + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + if (isUndefined(config.timeout) && !isUndefined(globalsConfig.timeout)) { + config['timeout'] = globalsConfig['timeout'] + } + // #endif + } else { + const defaultsKeys = [ + 'data', + // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + 'timeout', + // #endif + 'dataType', + // #ifndef MP-ALIPAY + 'responseType', + // #endif + // #ifdef APP-PLUS + 'sslVerify', + // #endif + // #ifdef H5 + 'withCredentials', + // #endif + // #ifdef APP-PLUS + 'firstIpv4', + // #endif + // #ifdef MP-WEIXIN + 'enableHttp2', + 'enableQuic', + // #endif + // #ifdef MP-TOUTIAO || MP-WEIXIN + 'enableCache', + // #endif + // #ifdef MP-WEIXIN + 'enableHttpDNS', + 'httpDNSServiceId', + 'enableChunked', + 'forceCellularNetwork', + // #endif + // #ifdef MP-ALIPAY + 'enableCookie', + // #endif + // #ifdef MP-BAIDU + 'cloudCache', + 'defer' + // #endif + + ] + config = {...config, ...mergeKeys(defaultsKeys, globalsConfig, config2)} + } + + return config +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/settle.js b/uni_modules/uv-ui-tools/libs/luch-request/core/settle.js new file mode 100644 index 0000000..b2f1659 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/settle.js @@ -0,0 +1,16 @@ +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +export default function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus + const status = response.statusCode + if (status && (!validateStatus || validateStatus(status))) { + resolve(response) + } else { + reject(response) + } +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/helpers/buildURL.js b/uni_modules/uv-ui-tools/libs/luch-request/helpers/buildURL.js new file mode 100644 index 0000000..e90b908 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/helpers/buildURL.js @@ -0,0 +1,64 @@ +'use strict' + +import * as utils from './../utils' + +function encode(val) { + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']') +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +export default function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url + } + + var serializedParams + if (paramsSerializer) { + serializedParams = paramsSerializer(params) + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString() + } else { + var parts = [] + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return + } + + if (utils.isArray(val)) { + key = key + '[]' + } else { + val = [val] + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString() + } else if (utils.isObject(v)) { + v = JSON.stringify(v) + } + parts.push(encode(key) + '=' + encode(v)) + }) + }) + + serializedParams = parts.join('&') + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#') + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex) + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams + } + + return url +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/helpers/combineURLs.js b/uni_modules/uv-ui-tools/libs/luch-request/helpers/combineURLs.js new file mode 100644 index 0000000..7b9d1ef --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/helpers/combineURLs.js @@ -0,0 +1,14 @@ +'use strict' + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/helpers/isAbsoluteURL.js b/uni_modules/uv-ui-tools/libs/luch-request/helpers/isAbsoluteURL.js new file mode 100644 index 0000000..2a82517 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/helpers/isAbsoluteURL.js @@ -0,0 +1,14 @@ +'use strict' + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export default function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url) +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/index.d.ts b/uni_modules/uv-ui-tools/libs/luch-request/index.d.ts new file mode 100644 index 0000000..62d3fb9 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/index.d.ts @@ -0,0 +1,197 @@ +export type HttpTask = UniApp.RequestTask | UniApp.UploadTask | UniApp.DownloadTask; + +export type HttpRequestTask = UniApp.RequestTask; + +export type HttpUploadTask = UniApp.UploadTask; + +export type HttpDownloadTask = UniApp.DownloadTask; + +export type HttpMethod = + "GET" + | "POST" + | "PUT" + | "DELETE" + | "CONNECT" + | "HEAD" + | "OPTIONS" + | "TRACE" + | "UPLOAD" + | "DOWNLOAD"; + +export type HttpRequestHeader = Record; + +export type HttpParams = Record; + +export type HttpData = Record; + +export type HttpResponseType = 'arraybuffer' | 'text'; + +export type HttpCustom = Record; + +export type HttpFileType = 'image' | 'video' | 'audio'; + +export type HttpFormData = Record; + +export type HttpResponseHeader = Record & { + "set-cookie"?: string[] +}; + +export interface HttpRequestConfig { + /** @desc 请求服务器接口地址 */ + url?: string; + /** @desc 请求方式,默认为 GET */ + method?: HttpMethod; + /** @desc 请求基地址 */ + baseURL?: string; + /** @desc 请求头信息,不能设置 Referer,App、H5 端会自动带上 cookie,且 H5 端不可手动修改 */ + header?: HttpRequestHeader; + /** @desc 请求查询参数,自动拼接为查询字符串 */ + params?: HttpParams; + /** @desc 请求体参数 */ + data?: HttpData; + /** @desc 超时时间,单位 ms,默认为 60000,仅 H5 (HBuilderX 2.9.9+)、APP (HBuilderX 2.9.9+)、微信小程序 (2.10.0)、支付宝小程序支持 */ + timeout?: number; + /** @desc 跨域请求时是否携带凭证 (cookies),默认为 false,仅 H5 (HBuilderX 2.6.15+) 支持 */ + withCredentials?: boolean; + /** @desc 设置响应的数据类型,支付宝小程序不支持 */ + responseType?: HttpResponseType; + /** @desc 全局自定义验证器 */ + validateStatus?: ((statusCode: number) => boolean) | null; + + + /** params 参数自定义处理 */ + paramsSerializer?: (params: AnyObject) => string | void; + + /** @desc 默认为 json,如果设为 json,会尝试对返回的数据做一次 JSON.parse */ + dataType?: string; + /** @desc DNS 解析时是否优先使用 ipv4,默认为 false,仅 App-Android (HBuilderX 2.8.0+) 支持 */ + firstIpv4?: boolean; + /** @desc 是否验证 SSL 证书,默认为 true,仅 App-Android (HBuilderX 2.3.3+) 支持 */ + sslVerify?: boolean; + + /** @desc 开启 http2;微信小程序 */ + enableHttp2?: boolean; + + /** @desc 开启 quic;微信小程序 */ + enableQuic?: boolean; + /** @desc 开启 cache;微信小程序、字节跳动小程序 2.31.0+ */ + enableCache?: boolean; + /** @desc 开启 httpDNS;微信小程序 */ + enableHttpDNS?: boolean; + /** @desc httpDNS 服务商;微信小程序 */ + httpDNSServiceId?: string; + /** @desc 开启 transfer-encoding chunked;微信小程序 */ + enableChunked?: boolean; + /** @desc wifi下使用移动网络发送请求;微信小程序 */ + forceCellularNetwork?: boolean; + /** @desc 开启后可在headers中编辑cookie;支付宝小程序 10.2.33+ */ + enableCookie?: boolean; + /** @desc 是否开启云加速;百度小程序 3.310.11+ */ + cloudCache?: boolean | object; + /** @desc 控制当前请求是否延时至首屏内容渲染后发送;百度小程序 3.310.11+ */ + defer?: boolean; + + /** @desc 自定义参数 */ + custom?: HttpCustom; + + /** @desc 返回当前请求的 task 和 options,不要在这里修改 options */ + getTask?: (task: T, options: HttpRequestConfig) => void; + + /** @desc 需要上传的文件列表,使用 files 时,filePath 和 name 不生效,仅支持 App、H5 (2.6.15+) */ + files?: { name?: string; file?: File; uri: string; }[]; + /** @desc 文件类型,仅支付宝小程序支持且为必填项 */ + fileType?: HttpFileType; + /** @desc 要上传的文件对象,仅 H5 (2.6.15+) 支持 */ + file?: File; + /** @desc 要上传文件资源的路径,使用 files 时,filePath 和 name 不生效 */ + filePath?: string; + /** @desc 文件对应的 key,开发者在服务器端通过这个 key 可以获取到文件二进制内容,使用 files 时,filePath 和 name 不生效 */ + name?: string; + /** @desc 请求中其他额外的 form data */ + formData?: HttpFormData; +} + +export interface HttpResponse { + data: T; + statusCode: number; + header: HttpResponseHeader; + config: HttpRequestConfig; + cookies: string[]; + errMsg: string; + rawData: any; +} + +export interface HttpUploadResponse { + data: T; + statusCode: number; + config: HttpRequestConfig; + errMsg: string; + rawData: any; +} + +export interface HttpDownloadResponse extends HttpResponse { + tempFilePath: string; + apFilePath?: string; + filePath?: string; + fileContent?: string; +} + +export interface HttpError { + data?: T; + statusCode?: number; + header?: HttpResponseHeader; + config: HttpRequestConfig; + cookies?: string[]; + errMsg: string; +} + +export interface HttpPromise extends Promise> { +} + +export interface HttpInterceptorManager { + use(onFulfilled?: (value: V) => V | Promise, onRejected?: (error: E) => T | Promise): void; + + eject(id: number): void; +} + +export abstract class HttpRequestAbstract { + constructor(config?: HttpRequestConfig); + + interceptors: { + request: HttpInterceptorManager; + response: HttpInterceptorManager; + } + + request, D = HttpRequestTask>(config: HttpRequestConfig): Promise; + + get, D = HttpRequestTask>(url: string, config?: HttpRequestConfig): Promise; + + delete, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + head, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + options, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + post, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + put, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + config: HttpRequestConfig; + + setConfig(onSend: (config: HttpRequestConfig) => HttpRequestConfig): void; + + connect, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + trace, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + upload, D = HttpUploadTask>(url: string, config?: HttpRequestConfig): Promise; + + download, D = HttpDownloadTask>(url: string, config?: HttpRequestConfig): Promise; + + middleware, D = HttpTask>(config: HttpRequestConfig): Promise; +} + +declare class HttpRequest extends HttpRequestAbstract { +} + +export default HttpRequest; diff --git a/uni_modules/uv-ui-tools/libs/luch-request/index.js b/uni_modules/uv-ui-tools/libs/luch-request/index.js new file mode 100644 index 0000000..d8fe348 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/index.js @@ -0,0 +1,2 @@ +import Request from './core/Request' +export default Request diff --git a/uni_modules/uv-ui-tools/libs/luch-request/utils.js b/uni_modules/uv-ui-tools/libs/luch-request/utils.js new file mode 100644 index 0000000..0b5bf21 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/utils.js @@ -0,0 +1,135 @@ +'use strict' + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +export function isArray (val) { + return toString.call(val) === '[object Array]' +} + + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +export function isObject (val) { + return val !== null && typeof val === 'object' +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +export function isDate (val) { + return toString.call(val) === '[object Date]' +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +export function isURLSearchParams (val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams +} + + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +export function forEach (obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj] + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj) + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj) + } + } + } +} + +/** + * 是否为boolean 值 + * @param val + * @returns {boolean} + */ +export function isBoolean(val) { + return typeof val === 'boolean' +} + +/** + * 是否为真正的对象{} new Object + * @param {any} obj - 检测的对象 + * @returns {boolean} + */ +export function isPlainObject(obj) { + return Object.prototype.toString.call(obj) === '[object Object]' +} + + + +/** + * Function equal to merge with the difference being that no reference + * to original objects is kept. + * + * @see merge + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +export function deepMerge(/* obj1, obj2, obj3, ... */) { + let result = {} + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = deepMerge(result[key], val) + } else if (typeof val === 'object') { + result[key] = deepMerge({}, val) + } else { + result[key] = val + } + } + for (let i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue) + } + return result +} + +export function isUndefined (val) { + return typeof val === 'undefined' +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/utils/clone.js b/uni_modules/uv-ui-tools/libs/luch-request/utils/clone.js new file mode 100644 index 0000000..2fee704 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/utils/clone.js @@ -0,0 +1,264 @@ +/* eslint-disable */ +var clone = (function() { + 'use strict'; + + function _instanceof(obj, type) { + return type != null && obj instanceof type; + } + + var nativeMap; + try { + nativeMap = Map; + } catch(_) { + // maybe a reference error because no `Map`. Give it a dummy value that no + // value will ever be an instanceof. + nativeMap = function() {}; + } + + var nativeSet; + try { + nativeSet = Set; + } catch(_) { + nativeSet = function() {}; + } + + var nativePromise; + try { + nativePromise = Promise; + } catch(_) { + nativePromise = function() {}; + } + + /** + * Clones (copies) an Object using deep copying. + * + * This function supports circular references by default, but if you are certain + * there are no circular references in your object, you can save some CPU time + * by calling clone(obj, false). + * + * Caution: if `circular` is false and `parent` contains circular references, + * your program may enter an infinite loop and crash. + * + * @param `parent` - the object to be cloned + * @param `circular` - set to true if the object to be cloned may contain + * circular references. (optional - true by default) + * @param `depth` - set to a number if the object is only to be cloned to + * a particular depth. (optional - defaults to Infinity) + * @param `prototype` - sets the prototype to be used when cloning an object. + * (optional - defaults to parent prototype). + * @param `includeNonEnumerable` - set to true if the non-enumerable properties + * should be cloned as well. Non-enumerable properties on the prototype + * chain will be ignored. (optional - false by default) + */ + function clone(parent, circular, depth, prototype, includeNonEnumerable) { + if (typeof circular === 'object') { + depth = circular.depth; + prototype = circular.prototype; + includeNonEnumerable = circular.includeNonEnumerable; + circular = circular.circular; + } + // maintain two arrays for circular references, where corresponding parents + // and children have the same index + var allParents = []; + var allChildren = []; + + var useBuffer = typeof Buffer != 'undefined'; + + if (typeof circular == 'undefined') + circular = true; + + if (typeof depth == 'undefined') + depth = Infinity; + + // recurse this function so we don't reset allParents and allChildren + function _clone(parent, depth) { + // cloning null always returns null + if (parent === null) + return null; + + if (depth === 0) + return parent; + + var child; + var proto; + if (typeof parent != 'object') { + return parent; + } + + if (_instanceof(parent, nativeMap)) { + child = new nativeMap(); + } else if (_instanceof(parent, nativeSet)) { + child = new nativeSet(); + } else if (_instanceof(parent, nativePromise)) { + child = new nativePromise(function (resolve, reject) { + parent.then(function(value) { + resolve(_clone(value, depth - 1)); + }, function(err) { + reject(_clone(err, depth - 1)); + }); + }); + } else if (clone.__isArray(parent)) { + child = []; + } else if (clone.__isRegExp(parent)) { + child = new RegExp(parent.source, __getRegExpFlags(parent)); + if (parent.lastIndex) child.lastIndex = parent.lastIndex; + } else if (clone.__isDate(parent)) { + child = new Date(parent.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent)) { + if (Buffer.from) { + // Node.js >= 5.10.0 + child = Buffer.from(parent); + } else { + // Older Node.js versions + child = new Buffer(parent.length); + parent.copy(child); + } + return child; + } else if (_instanceof(parent, Error)) { + child = Object.create(parent); + } else { + if (typeof prototype == 'undefined') { + proto = Object.getPrototypeOf(parent); + child = Object.create(proto); + } + else { + child = Object.create(prototype); + proto = prototype; + } + } + + if (circular) { + var index = allParents.indexOf(parent); + + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent); + allChildren.push(child); + } + + if (_instanceof(parent, nativeMap)) { + parent.forEach(function(value, key) { + var keyChild = _clone(key, depth - 1); + var valueChild = _clone(value, depth - 1); + child.set(keyChild, valueChild); + }); + } + if (_instanceof(parent, nativeSet)) { + parent.forEach(function(value) { + var entryChild = _clone(value, depth - 1); + child.add(entryChild); + }); + } + + for (var i in parent) { + var attrs = Object.getOwnPropertyDescriptor(parent, i); + if (attrs) { + child[i] = _clone(parent[i], depth - 1); + } + + try { + var objProperty = Object.getOwnPropertyDescriptor(parent, i); + if (objProperty.set === 'undefined') { + // no setter defined. Skip cloning this property + continue; + } + child[i] = _clone(parent[i], depth - 1); + } catch(e){ + if (e instanceof TypeError) { + // when in strict mode, TypeError will be thrown if child[i] property only has a getter + // we can't do anything about this, other than inform the user that this property cannot be set. + continue + } else if (e instanceof ReferenceError) { + //this may happen in non strict mode + continue + } + } + + } + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(parent); + for (var i = 0; i < symbols.length; i++) { + // Don't need to worry about cloning a symbol because it is a primitive, + // like a number or string. + var symbol = symbols[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, symbol); + if (descriptor && !descriptor.enumerable && !includeNonEnumerable) { + continue; + } + child[symbol] = _clone(parent[symbol], depth - 1); + Object.defineProperty(child, symbol, descriptor); + } + } + + if (includeNonEnumerable) { + var allPropertyNames = Object.getOwnPropertyNames(parent); + for (var i = 0; i < allPropertyNames.length; i++) { + var propertyName = allPropertyNames[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName); + if (descriptor && descriptor.enumerable) { + continue; + } + child[propertyName] = _clone(parent[propertyName], depth - 1); + Object.defineProperty(child, propertyName, descriptor); + } + } + + return child; + } + + return _clone(parent, depth); + } + + /** + * Simple flat clone using prototype, accepts only objects, usefull for property + * override on FLAT configuration object (no nested props). + * + * USE WITH CAUTION! This may not behave as you wish if you do not know how this + * works. + */ + clone.clonePrototype = function clonePrototype(parent) { + if (parent === null) + return null; + + var c = function () {}; + c.prototype = parent; + return new c(); + }; + +// private utility functions + + function __objToStr(o) { + return Object.prototype.toString.call(o); + } + clone.__objToStr = __objToStr; + + function __isDate(o) { + return typeof o === 'object' && __objToStr(o) === '[object Date]'; + } + clone.__isDate = __isDate; + + function __isArray(o) { + return typeof o === 'object' && __objToStr(o) === '[object Array]'; + } + clone.__isArray = __isArray; + + function __isRegExp(o) { + return typeof o === 'object' && __objToStr(o) === '[object RegExp]'; + } + clone.__isRegExp = __isRegExp; + + function __getRegExpFlags(re) { + var flags = ''; + if (re.global) flags += 'g'; + if (re.ignoreCase) flags += 'i'; + if (re.multiline) flags += 'm'; + return flags; + } + clone.__getRegExpFlags = __getRegExpFlags; + + return clone; +})(); + +export default clone diff --git a/uni_modules/uv-ui-tools/libs/mixin/button.js b/uni_modules/uv-ui-tools/libs/mixin/button.js new file mode 100644 index 0000000..0c019c2 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/button.js @@ -0,0 +1,13 @@ +export default { + props: { + lang: String, + sessionFrom: String, + sendMessageTitle: String, + sendMessagePath: String, + sendMessageImg: String, + showMessageCard: Boolean, + appParameter: String, + formType: String, + openType: String + } +} diff --git a/uni_modules/uv-ui-tools/libs/mixin/mixin.js b/uni_modules/uv-ui-tools/libs/mixin/mixin.js new file mode 100644 index 0000000..0dd3b03 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/mixin.js @@ -0,0 +1,172 @@ +import * as index from '../function/index.js'; +import * as test from '../function/test.js'; +import route from '../util/route.js'; +import debounce from '../function/debounce.js'; +import throttle from '../function/throttle.js'; +export default { + // 定义每个组件都可能需要用到的外部样式以及类名 + props: { + // 每个组件都有的父组件传递的样式,可以为字符串或者对象形式 + customStyle: { + type: [Object, String], + default: () => ({}) + }, + customClass: { + type: String, + default: '' + }, + // 跳转的页面路径 + url: { + type: String, + default: '' + }, + // 页面跳转的类型 + linkType: { + type: String, + default: 'navigateTo' + } + }, + data() { + return {} + }, + onLoad() { + // getRect挂载到$uv上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出 + this.$uv.getRect = this.$uvGetRect + }, + created() { + // 组件当中,只有created声明周期,为了能在组件使用,故也在created中将方法挂载到$uv + this.$uv.getRect = this.$uvGetRect + }, + computed: { + $uv() { + return { + ...index, + test, + route, + debounce, + throttle, + unit: uni?.$uv?.config?.unit + } + }, + /** + * 生成bem规则类名 + * 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class="[bem()]"的形式进行同用 + * 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式 + * @param {String} name 组件名称 + * @param {Array} fixed 一直会存在的类名 + * @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名 + * @returns {Array|string} + */ + bem() { + return function(name, fixed, change) { + // 类名前缀 + const prefix = `uv-${name}--` + const classes = {} + if (fixed) { + fixed.map((item) => { + // 这里的类名,会一直存在 + classes[prefix + this[item]] = true + }) + } + if (change) { + change.map((item) => { + // 这里的类名,会根据this[item]的值为true或者false,而进行添加或者移除某一个类 + this[item] ? (classes[prefix + item] = this[item]) : (delete classes[prefix + item]) + }) + } + return Object.keys(classes) + // 支付宝,头条小程序无法动态绑定一个数组类名,否则解析出来的结果会带有",",而导致失效 + // #ifdef MP-ALIPAY || MP-TOUTIAO || MP-LARK || MP-BAIDU + .join(' ') + // #endif + } + } + }, + methods: { + // 跳转某一个页面 + openPage(urlKey = 'url') { + const url = this[urlKey] + if (url) { + // 执行类似uni.navigateTo的方法 + uni[this.linkType]({ + url + }) + } + }, + // 查询节点信息 + // 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21) + // 解决办法为在组件根部再套一个没有任何作用的view元素 + $uvGetRect(selector, all) { + return new Promise((resolve) => { + uni.createSelectorQuery() + .in(this)[all ? 'selectAll' : 'select'](selector) + .boundingClientRect((rect) => { + if (all && Array.isArray(rect) && rect.length) { + resolve(rect) + } + if (!all && rect) { + resolve(rect) + } + }) + .exec() + }) + }, + getParentData(parentName = '') { + // 避免在created中去定义parent变量 + if (!this.parent) this.parent = {} + // 这里的本质原理是,通过获取父组件实例(也即类似uv-radio的父组件uv-radio-group的this) + // 将父组件this中对应的参数,赋值给本组件(uv-radio的this)的parentData对象中对应的属性 + // 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化 + // 此处并不会自动更新子组件的数据,而是依赖父组件uv-radio-group去监听data的变化,手动调用更新子组件的方法去重新获取 + this.parent = this.$uv.$parent.call(this, parentName) + if (this.parent.children) { + // 如果父组件的children不存在本组件的实例,才将本实例添加到父组件的children中 + this.parent.children.indexOf(this) === -1 && this.parent.children.push(this) + } + if (this.parent && this.parentData) { + // 历遍parentData中的属性,将parent中的同名属性赋值给parentData + Object.keys(this.parentData).map((key) => { + this.parentData[key] = this.parent[key] + }) + } + }, + // 阻止事件冒泡 + preventEvent(e) { + e && typeof(e.stopPropagation) === 'function' && e.stopPropagation() + }, + // 空操作 + noop(e) { + this.preventEvent(e) + } + }, + onReachBottom() { + uni.$emit('uvOnReachBottom') + }, + beforeDestroy() { + // 判断当前页面是否存在parent和chldren,一般在checkbox和checkbox-group父子联动的场景会有此情况 + // 组件销毁时,移除子组件在父组件children数组中的实例,释放资源,避免数据混乱 + if (this.parent && test.array(this.parent.children)) { + // 组件销毁时,移除父组件中的children数组中对应的实例 + const childrenList = this.parent.children + childrenList.map((child, index) => { + // 如果相等,则移除 + if (child === this) { + childrenList.splice(index, 1) + } + }) + } + }, + // 兼容vue3 + unmounted() { + if (this.parent && test.array(this.parent.children)) { + // 组件销毁时,移除父组件中的children数组中对应的实例 + const childrenList = this.parent.children + childrenList.map((child, index) => { + // 如果相等,则移除 + if (child === this) { + childrenList.splice(index, 1) + } + }) + } + } +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js b/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js new file mode 100644 index 0000000..90b6903 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js @@ -0,0 +1,8 @@ +export default { + // #ifdef MP-WEIXIN + // 将自定义节点设置成虚拟的(去掉自定义组件包裹层),更加接近Vue组件的表现,能更好的使用flex属性 + options: { + virtualHost: true + } + // #endif +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/mixin/mpShare.js b/uni_modules/uv-ui-tools/libs/mixin/mpShare.js new file mode 100644 index 0000000..c9695a0 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/mpShare.js @@ -0,0 +1,13 @@ +export default { + onLoad() { + // 设置默认的转发参数 + uni.$uv.mpShare = { + title: '', // 默认为小程序名称 + path: '', // 默认为当前页面路径 + imageUrl: '' // 默认为当前页面的截图 + } + }, + onShareAppMessage() { + return uni.$uv.mpShare + } +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/mixin/openType.js b/uni_modules/uv-ui-tools/libs/mixin/openType.js new file mode 100644 index 0000000..1b94b7e --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/openType.js @@ -0,0 +1,47 @@ +export default { + props: { + openType: String + }, + emits: ['getphonenumber','getuserinfo','error','opensetting','launchapp','contact','chooseavatar','addgroupapp','chooseaddress','subscribe','login','im'], + methods: { + onGetPhoneNumber(event) { + this.$emit('getphonenumber', event.detail) + }, + onGetUserInfo(event) { + this.$emit('getuserinfo', event.detail) + }, + onError(event) { + this.$emit('error', event.detail) + }, + onOpenSetting(event) { + this.$emit('opensetting', event.detail) + }, + onLaunchApp(event) { + this.$emit('launchapp', event.detail) + }, + onContact(event) { + this.$emit('contact', event.detail) + }, + onChooseavatar(event) { + this.$emit('chooseavatar', event.detail) + }, + onAgreeprivacyauthorization(event) { + this.$emit('agreeprivacyauthorization', event.detail) + }, + onAddgroupapp(event) { + this.$emit('addgroupapp', event.detail) + }, + onChooseaddress(event) { + this.$emit('chooseaddress', event.detail) + }, + onSubscribe(event) { + this.$emit('subscribe', event.detail) + }, + onLogin(event) { + this.$emit('login', event.detail) + }, + onIm(event) { + this.$emit('im', event.detail) + } + } +} diff --git a/uni_modules/uv-ui-tools/libs/mixin/touch.js b/uni_modules/uv-ui-tools/libs/mixin/touch.js new file mode 100644 index 0000000..0ecbd88 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/touch.js @@ -0,0 +1,59 @@ +const MIN_DISTANCE = 10 + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal' + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical' + } + return '' +} + +export default { + methods: { + getTouchPoint(e) { + if (!e) { + return { + x: 0, + y: 0 + } + } if (e.touches && e.touches[0]) { + return { + x: e.touches[0].pageX, + y: e.touches[0].pageY + } + } if (e.changedTouches && e.changedTouches[0]) { + return { + x: e.changedTouches[0].pageX, + y: e.changedTouches[0].pageY + } + } + return { + x: e.clientX || 0, + y: e.clientY || 0 + } + }, + resetTouchStatus() { + this.direction = '' + this.deltaX = 0 + this.deltaY = 0 + this.offsetX = 0 + this.offsetY = 0 + }, + touchStart(event) { + this.resetTouchStatus() + const touch = this.getTouchPoint(event) + this.startX = touch.x + this.startY = touch.y + }, + touchMove(event) { + const touch = this.getTouchPoint(event) + this.deltaX = touch.x - this.startX + this.deltaY = touch.y - this.startY + this.offsetX = Math.abs(this.deltaX) + this.offsetY = Math.abs(this.deltaY) + this.direction = this.direction || getDirection(this.offsetX, this.offsetY) + } + } +} diff --git a/uni_modules/uv-ui-tools/libs/util/dayjs.js b/uni_modules/uv-ui-tools/libs/util/dayjs.js new file mode 100644 index 0000000..c84ab68 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/util/dayjs.js @@ -0,0 +1,216 @@ +var __getOwnPropNames = Object.getOwnPropertyNames; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; + +var require_dayjs_min = __commonJS({ + "uvuidayjs"(exports, module) { + !function(t, e) { + "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e(); + }(exports, function() { + "use strict"; + var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", f = "month", h = "quarter", c = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) { + var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100; + return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]"; + } }, m = function(t2, e2, n2) { + var r2 = String(t2); + return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2; + }, v = { s: m, z: function(t2) { + var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60; + return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0"); + }, m: function t2(e2, n2) { + if (e2.date() < n2.date()) + return -t2(n2, e2); + var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, f), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), f); + return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0); + }, a: function(t2) { + return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2); + }, p: function(t2) { + return { M: f, y: c, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: h }[t2] || String(t2 || "").toLowerCase().replace(/s$/, ""); + }, u: function(t2) { + return void 0 === t2; + } }, g = "en", D = {}; + D[g] = M; + var p = function(t2) { + return t2 instanceof _; + }, S = function t2(e2, n2, r2) { + var i2; + if (!e2) + return g; + if ("string" == typeof e2) { + var s2 = e2.toLowerCase(); + D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2); + var u2 = e2.split("-"); + if (!i2 && u2.length > 1) + return t2(u2[0]); + } else { + var a2 = e2.name; + D[a2] = e2, i2 = a2; + } + return !r2 && i2 && (g = i2), i2 || !r2 && g; + }, w = function(t2, e2) { + if (p(t2)) + return t2.clone(); + var n2 = "object" == typeof e2 ? e2 : {}; + return n2.date = t2, n2.args = arguments, new _(n2); + }, O = v; + O.l = S, O.i = p, O.w = function(t2, e2) { + return w(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset }); + }; + var _ = function() { + function M2(t2) { + this.$L = S(t2.locale, null, true), this.parse(t2); + } + var m2 = M2.prototype; + return m2.parse = function(t2) { + this.$d = function(t3) { + var e2 = t3.date, n2 = t3.utc; + if (null === e2) + return new Date(NaN); + if (O.u(e2)) + return new Date(); + if (e2 instanceof Date) + return new Date(e2); + if ("string" == typeof e2 && !/Z$/i.test(e2)) { + var r2 = e2.match($); + if (r2) { + var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3); + return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2); + } + } + return new Date(e2); + }(t2), this.$x = t2.x || {}, this.init(); + }, m2.init = function() { + var t2 = this.$d; + this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds(); + }, m2.$utils = function() { + return O; + }, m2.isValid = function() { + return !(this.$d.toString() === l); + }, m2.isSame = function(t2, e2) { + var n2 = w(t2); + return this.startOf(e2) <= n2 && n2 <= this.endOf(e2); + }, m2.isAfter = function(t2, e2) { + return w(t2) < this.startOf(e2); + }, m2.isBefore = function(t2, e2) { + return this.endOf(e2) < w(t2); + }, m2.$g = function(t2, e2, n2) { + return O.u(t2) ? this[e2] : this.set(n2, t2); + }, m2.unix = function() { + return Math.floor(this.valueOf() / 1e3); + }, m2.valueOf = function() { + return this.$d.getTime(); + }, m2.startOf = function(t2, e2) { + var n2 = this, r2 = !!O.u(e2) || e2, h2 = O.p(t2), l2 = function(t3, e3) { + var i2 = O.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2); + return r2 ? i2 : i2.endOf(a); + }, $2 = function(t3, e3) { + return O.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2); + }, y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : ""); + switch (h2) { + case c: + return r2 ? l2(1, 0) : l2(31, 11); + case f: + return r2 ? l2(1, M3) : l2(0, M3 + 1); + case o: + var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2; + return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3); + case a: + case d: + return $2(v2 + "Hours", 0); + case u: + return $2(v2 + "Minutes", 1); + case s: + return $2(v2 + "Seconds", 2); + case i: + return $2(v2 + "Milliseconds", 3); + default: + return this.clone(); + } + }, m2.endOf = function(t2) { + return this.startOf(t2, false); + }, m2.$set = function(t2, e2) { + var n2, o2 = O.p(t2), h2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = h2 + "Date", n2[d] = h2 + "Date", n2[f] = h2 + "Month", n2[c] = h2 + "FullYear", n2[u] = h2 + "Hours", n2[s] = h2 + "Minutes", n2[i] = h2 + "Seconds", n2[r] = h2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2; + if (o2 === f || o2 === c) { + var y2 = this.clone().set(d, 1); + y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d; + } else + l2 && this.$d[l2]($2); + return this.init(), this; + }, m2.set = function(t2, e2) { + return this.clone().$set(t2, e2); + }, m2.get = function(t2) { + return this[O.p(t2)](); + }, m2.add = function(r2, h2) { + var d2, l2 = this; + r2 = Number(r2); + var $2 = O.p(h2), y2 = function(t2) { + var e2 = w(l2); + return O.w(e2.date(e2.date() + Math.round(t2 * r2)), l2); + }; + if ($2 === f) + return this.set(f, this.$M + r2); + if ($2 === c) + return this.set(c, this.$y + r2); + if ($2 === a) + return y2(1); + if ($2 === o) + return y2(7); + var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3; + return O.w(m3, this); + }, m2.subtract = function(t2, e2) { + return this.add(-1 * t2, e2); + }, m2.format = function(t2) { + var e2 = this, n2 = this.$locale(); + if (!this.isValid()) + return n2.invalidDate || l; + var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = O.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, f2 = n2.months, h2 = function(t3, n3, i3, s3) { + return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3); + }, c2 = function(t3) { + return O.s(s2 % 12 || 12, t3, "0"); + }, d2 = n2.meridiem || function(t3, e3, n3) { + var r3 = t3 < 12 ? "AM" : "PM"; + return n3 ? r3.toLowerCase() : r3; + }, $2 = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: a2 + 1, MM: O.s(a2 + 1, 2, "0"), MMM: h2(n2.monthsShort, a2, f2, 3), MMMM: h2(f2, a2), D: this.$D, DD: O.s(this.$D, 2, "0"), d: String(this.$W), dd: h2(n2.weekdaysMin, this.$W, o2, 2), ddd: h2(n2.weekdaysShort, this.$W, o2, 3), dddd: o2[this.$W], H: String(s2), HH: O.s(s2, 2, "0"), h: c2(1), hh: c2(2), a: d2(s2, u2, true), A: d2(s2, u2, false), m: String(u2), mm: O.s(u2, 2, "0"), s: String(this.$s), ss: O.s(this.$s, 2, "0"), SSS: O.s(this.$ms, 3, "0"), Z: i2 }; + return r2.replace(y, function(t3, e3) { + return e3 || $2[t3] || i2.replace(":", ""); + }); + }, m2.utcOffset = function() { + return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); + }, m2.diff = function(r2, d2, l2) { + var $2, y2 = O.p(d2), M3 = w(r2), m3 = (M3.utcOffset() - this.utcOffset()) * e, v2 = this - M3, g2 = O.m(this, M3); + return g2 = ($2 = {}, $2[c] = g2 / 12, $2[f] = g2, $2[h] = g2 / 3, $2[o] = (v2 - m3) / 6048e5, $2[a] = (v2 - m3) / 864e5, $2[u] = v2 / n, $2[s] = v2 / e, $2[i] = v2 / t, $2)[y2] || v2, l2 ? g2 : O.a(g2); + }, m2.daysInMonth = function() { + return this.endOf(f).$D; + }, m2.$locale = function() { + return D[this.$L]; + }, m2.locale = function(t2, e2) { + if (!t2) + return this.$L; + var n2 = this.clone(), r2 = S(t2, e2, true); + return r2 && (n2.$L = r2), n2; + }, m2.clone = function() { + return O.w(this.$d, this); + }, m2.toDate = function() { + return new Date(this.valueOf()); + }, m2.toJSON = function() { + return this.isValid() ? this.toISOString() : null; + }, m2.toISOString = function() { + return this.$d.toISOString(); + }, m2.toString = function() { + return this.$d.toUTCString(); + }, M2; + }(), T = _.prototype; + return w.prototype = T, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", f], ["$y", c], ["$D", d]].forEach(function(t2) { + T[t2[1]] = function(e2) { + return this.$g(e2, t2[0], t2[1]); + }; + }), w.extend = function(t2, e2) { + return t2.$i || (t2(e2, _, w), t2.$i = true), w; + }, w.locale = S, w.isDayjs = p, w.unix = function(t2) { + return w(1e3 * t2); + }, w.en = D[g], w.Ls = D, w.p = {}, w; + }); + } +}); +export default require_dayjs_min(); diff --git a/uni_modules/uv-ui-tools/libs/util/route.js b/uni_modules/uv-ui-tools/libs/util/route.js new file mode 100644 index 0000000..80c0afd --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/util/route.js @@ -0,0 +1,126 @@ +/** + * 路由跳转方法,该方法相对于直接使用uni.xxx的好处是使用更加简单快捷 + * 并且带有路由拦截功能 + */ +import { queryParams, deepMerge, page } from '@/uni_modules/uv-ui-tools/libs/function/index.js' +class Router { + constructor() { + // 原始属性定义 + this.config = { + type: 'navigateTo', + url: '', + delta: 1, // navigateBack页面后退时,回退的层数 + params: {}, // 传递的参数 + animationType: 'pop-in', // 窗口动画,只在APP有效 + animationDuration: 300, // 窗口动画持续时间,单位毫秒,只在APP有效 + intercept: false ,// 是否需要拦截 + events: {} // 页面间通信接口,用于监听被打开页面发送到当前页面的数据。hbuilderx 2.8.9+ 开始支持。 + } + // 因为route方法是需要对外赋值给另外的对象使用,同时route内部有使用this,会导致route失去上下文 + // 这里在构造函数中进行this绑定 + this.route = this.route.bind(this) + } + + // 判断url前面是否有"/",如果没有则加上,否则无法跳转 + addRootPath(url) { + return url[0] === '/' ? url : `/${url}` + } + + // 整合路由参数 + mixinParam(url, params) { + url = url && this.addRootPath(url) + + // 使用正则匹配,主要依据是判断是否有"/","?","="等,如“/page/index/index?name=mary" + // 如果有url中有get参数,转换后无需带上"?" + let query = '' + if (/.*\/.*\?.*=.*/.test(url)) { + // object对象转为get类型的参数 + query = queryParams(params, false) + // 因为已有get参数,所以后面拼接的参数需要带上"&"隔开 + return url += `&${query}` + } + // 直接拼接参数,因为此处url中没有后面的query参数,也就没有"?/&"之类的符号 + query = queryParams(params) + return url += query + } + + // 对外的方法名称 + async route(options = {}, params = {}) { + // 合并用户的配置和内部的默认配置 + let mergeConfig = {} + + if (typeof options === 'string') { + // 如果options为字符串,则为route(url, params)的形式 + mergeConfig.url = this.mixinParam(options, params) + mergeConfig.type = 'navigateTo' + } else { + mergeConfig = deepMerge(this.config, options) + // 否则正常使用mergeConfig中的url和params进行拼接 + mergeConfig.url = this.mixinParam(options.url, options.params) + } + // 如果本次跳转的路径和本页面路径一致,不执行跳转,防止用户快速点击跳转按钮,造成多次跳转同一个页面的问题 + if (mergeConfig.url === page()) return + + if (params.intercept) { + mergeConfig.intercept = params.intercept + } + // params参数也带给拦截器 + mergeConfig.params = params + // 合并内外部参数 + mergeConfig = deepMerge(this.config, mergeConfig) + // 判断用户是否定义了拦截器 + if (typeof mergeConfig.intercept === 'function') { + // 定一个promise,根据用户执行resolve(true)或者resolve(false)来决定是否进行路由跳转 + const isNext = await new Promise((resolve, reject) => { + mergeConfig.intercept(mergeConfig, resolve) + }) + // 如果isNext为true,则执行路由跳转 + isNext && this.openPage(mergeConfig) + } else { + this.openPage(mergeConfig) + } + } + + // 执行路由跳转 + openPage(config) { + // 解构参数 + const { + url, + type, + delta, + animationType, + animationDuration, + events + } = config + if (config.type == 'navigateTo' || config.type == 'to') { + uni.navigateTo({ + url, + animationType, + animationDuration, + events + }) + } + if (config.type == 'redirectTo' || config.type == 'redirect') { + uni.redirectTo({ + url + }) + } + if (config.type == 'switchTab' || config.type == 'tab') { + uni.switchTab({ + url + }) + } + if (config.type == 'reLaunch' || config.type == 'launch') { + uni.reLaunch({ + url + }) + } + if (config.type == 'navigateBack' || config.type == 'back') { + uni.navigateBack({ + delta + }) + } + } +} + +export default (new Router()).route \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/package.json b/uni_modules/uv-ui-tools/package.json new file mode 100644 index 0000000..2d940f6 --- /dev/null +++ b/uni_modules/uv-ui-tools/package.json @@ -0,0 +1,81 @@ +{ + "id": "uv-ui-tools", + "displayName": "uv-ui-tools 工具集 全面兼容vue3+2、app、h5、小程序等多端", + "version": "1.1.25", + "description": "uv-ui-tools,集成工具库,强大的Http请求封装,清晰的文档说明,开箱即用。方便使用,可以全局使用", + "keywords": [ + "uv-ui-tools,uv-ui组件库,工具集,uvui,uView2.x" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/readme.md b/uni_modules/uv-ui-tools/readme.md new file mode 100644 index 0000000..79a7df5 --- /dev/null +++ b/uni_modules/uv-ui-tools/readme.md @@ -0,0 +1,23 @@ +## uv-ui-tools 工具集 + +> **组件名:uv-ui-tools** + +uv-ui工具集成,包括网络Http请求、便捷工具、节流防抖、对象操作、时间格式化、路由跳转、全局唯一标识符、规则校验等等。 + +该组件推荐配合[uv-ui组件库](https://www.uvui.cn/components/intro.html)使用,单独下载也可以在自己项目中使用,需要做相应的配置,可查看文档。强烈推荐使用[uv-ui组件库](https://www.uvui.cn/components/intro.html),导入组件都会自动导入`uv-ui-tools`。需要在自己的项目中使用请参考[扩展配置](https://www.uvui.cn/components/setting.html)。 + +uv-ui破釜沉舟之兼容vue3+2、app、h5、多端小程序的uni-app生态框架,大部分组件基于uView2.x,在经过改进后全面支持vue3,部分组件做了进一步的优化,修复大量BUG,支持单独导入,方便开发者选择导入需要的组件。开箱即用,灵活配置。 + +# 查看文档 + +## [下载完整示例项目](https://ext.dcloud.net.cn/plugin?name=uv-ui) (请不要 下载插件ZIP) + +### [更多插件,请关注uv-ui组件库](https://ext.dcloud.net.cn/plugin?name=uv-ui) + + + +![image](https://mp-a667b617-c5f1-4a2d-9a54-683a67cff588.cdn.bspapp.com/uv-ui/banner.png) + + + +#### 如使用过程中有任何问题反馈,或者您对uv-ui有一些好的建议,欢迎加入uv-ui官方交流群:官方QQ群 \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/theme.scss b/uni_modules/uv-ui-tools/theme.scss new file mode 100644 index 0000000..cfaae92 --- /dev/null +++ b/uni_modules/uv-ui-tools/theme.scss @@ -0,0 +1,43 @@ +// 此文件为uvUI的主题变量,这些变量目前只能通过uni.scss引入才有效,另外由于 +// uni.scss中引入的样式会同时混入到全局样式文件和单独每一个页面的样式中,造成微信程序包太大, +// 故uni.scss只建议放scss变量名相关样式,其他的样式可以通过main.js或者App.vue引入 + +$uv-main-color: #303133; +$uv-content-color: #606266; +$uv-tips-color: #909193; +$uv-light-color: #c0c4cc; +$uv-border-color: #dadbde; +$uv-bg-color: #f3f4f6; +$uv-disabled-color: #c8c9cc; + +$uv-primary: #3c9cff; +$uv-primary-dark: #398ade; +$uv-primary-disabled: #9acafc; +$uv-primary-light: #ecf5ff; + +$uv-warning: #f9ae3d; +$uv-warning-dark: #f1a532; +$uv-warning-disabled: #f9d39b; +$uv-warning-light: #fdf6ec; + +$uv-success: #5ac725; +$uv-success-dark: #53c21d; +$uv-success-disabled: #a9e08f; +$uv-success-light: #f5fff0; + +$uv-error: #f56c6c; +$uv-error-dark: #e45656; +$uv-error-disabled: #f7b2b2; +$uv-error-light: #fef0f0; + +$uv-info: #909399; +$uv-info-dark: #767a82; +$uv-info-disabled: #c4c6c9; +$uv-info-light: #f4f4f5; + +@mixin flex($direction: row) { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: $direction; +} \ No newline at end of file diff --git a/until/config.js b/until/config.js new file mode 100644 index 0000000..5f00306 --- /dev/null +++ b/until/config.js @@ -0,0 +1,25 @@ + +//api 请求路径 本地 +// http://md.xscmmidi.site 正式api +// http://tmd.xscmmidi.site 测试api +const BASE_NAME = 'my语聊' +const BASE_URL = "https://my.qixing2.top"; +// 前端访问域名 +// tmdh.xscmmidi.site 测试 +// mdh.xscmmidi.site 正式 +const PRIMARY_BGURL = "https://myh5.qixing2.top/image/fy_bg.png"; +// 工会管理员 +const PRIMARY_BLYURL = "https://myh5.qixing2.top/image/fy_gly.png"; +//IM app_key +const IM_APP_TOKEN="67962a777e2b13bc6a4bde3ccd389d1e"; +const BASR_COLOR = '#FC7285'; +const kefu_url = "https://myh5.qixing2.top/image/kefu.png"; +export default { + BASE_URL, + IM_APP_TOKEN, + PRIMARY_BGURL, + PRIMARY_BLYURL, + BASR_COLOR, + BASE_NAME, + kefu_url +} \ No newline at end of file diff --git a/until/http.js b/until/http.js new file mode 100644 index 0000000..dd82de1 --- /dev/null +++ b/until/http.js @@ -0,0 +1,45 @@ + +// 导入封装好的axios实例 +import request from "./request.js"; + +const http = { + /** + * methods: 请求 + * @param url 请求地址 + * @param params 请求参数 + */ + get(url, params) { + const config = { + method: "get", + url: url, + }; + if (params) config.params = params; + return request(config); + }, + post(url, params) { + const config = { + method: "post", + url, + } + if (params) config.data = params; + return request(config); + }, + put(url, params) { + const config = { + method: "put", + url, + } + if (params) config.params = params; + return request(config); + }, + delete(url, params) { + const config = { + method: "delete", + url, + } + if (params) config.params = params; + return request(config); + }, +}; + +export default http; \ No newline at end of file diff --git a/until/request.js b/until/request.js new file mode 100644 index 0000000..4c654b4 --- /dev/null +++ b/until/request.js @@ -0,0 +1,36 @@ +// src/utils/http.js +import axios from 'axios'; +import config from './config.js'; +// 创建axios实例 +const http = axios.create({ + baseURL: config.BASE_URL, // API的基础路径 + timeout: 5000 +}); + +// 请求拦截器 +http.interceptors.request.use( + config => { + // 在发送请求之前做些什么,例如添加token等 + // config.headers['token'] = `${uni.getStorageSync('token')|| ''}`; + return config; + }, + error => { + // 对请求错误做些什么 + + return Promise.reject(error); + } +); + +// 响应拦截器 +http.interceptors.response.use( + response => { + // 对响应数据做点什么 + return response.data; // 根据实际情况可能需要返回response.data或其他处理后的数据 + }, + error => { + // 对响应错误做点什么 + return Promise.reject(error); + } +); + +export default http; \ No newline at end of file diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..e2d6b4c --- /dev/null +++ b/vue.config.js @@ -0,0 +1,12 @@ +// vue.config.js +module.exports = { + devServer: { + proxy: { + '/api': { + target: 'https://my.qixing2.top', + changeOrigin: true, + pathRewrite: { '^/api': '' } + } + } + } +} \ No newline at end of file