From 6a67082c254b3701f5473a7bd24567140a9b61de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=98=8E=E6=98=8E?= Date: Thu, 24 Sep 2020 11:08:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AC=E6=97=B6=E6=94=AF=E4=BB=98=E5=AE=9D?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- api/api.js | 71 ++ app.acss | 74 ++ app.js | 20 + app.json | 60 ++ lib/icon/add_icon.png | Bin 0 -> 1899 bytes lib/icon/arrows_dow.png | Bin 0 -> 1927 bytes lib/icon/arrows_right.png | Bin 0 -> 1718 bytes lib/icon/enter_code_icon.png | Bin 0 -> 1438 bytes lib/icon/enter_phone_icon.png | Bin 0 -> 1167 bytes lib/icon/enter_shop_icon.png | Bin 0 -> 1259 bytes lib/icon/index_icon_00.png | Bin 0 -> 2538 bytes lib/icon/index_icon_01.png | Bin 0 -> 2305 bytes lib/icon/index_icon_02.png | Bin 0 -> 2131 bytes lib/icon/index_icon_03.png | Bin 0 -> 2308 bytes lib/icon/index_icon_04.png | Bin 0 -> 3032 bytes lib/icon/list_null.png | Bin 0 -> 8145 bytes lib/icon/login_pss_icon.png | Bin 0 -> 909 bytes lib/icon/login_user_icon.png | Bin 0 -> 1424 bytes lib/icon/month_icon.png | Bin 0 -> 280 bytes lib/icon/permissions_icon.png | Bin 0 -> 4783 bytes lib/icon/screen_calss.png | Bin 0 -> 1605 bytes lib/icon/screen_icon.png | Bin 0 -> 955 bytes lib/icon/tabBar_active_00.png | Bin 0 -> 2372 bytes lib/icon/tabBar_active_02.png | Bin 0 -> 2134 bytes lib/icon/tabBar_icon_00.png | Bin 0 -> 2371 bytes lib/icon/tabBar_icon_02.png | Bin 0 -> 2132 bytes lib/icon/user_btn_icon_00.png | Bin 0 -> 1934 bytes lib/icon/user_btn_icon_01.png | Bin 0 -> 2296 bytes lib/icon/user_btn_icon_02.png | Bin 0 -> 1992 bytes lib/icon/user_btn_icon_03.png | Bin 0 -> 2871 bytes lib/icon/user_btn_icon_04.png | Bin 0 -> 2391 bytes lib/icon/user_btn_icon_05.png | Bin 0 -> 3497 bytes lib/icon/user_btn_icon_06.png | Bin 0 -> 2726 bytes lib/icon/welfareInfo_icon_00.png | Bin 0 -> 726 bytes lib/icon/welfareInfo_icon_01.png | Bin 0 -> 2015 bytes lib/icon/welfareInfo_icon_02.png | Bin 0 -> 2204 bytes lib/icon/welfareInfo_icon_03.png | Bin 0 -> 2022 bytes lib/icon/welfareInfo_icon_04.png | Bin 0 -> 2033 bytes lib/icon/welfareInfo_icon_05.png | Bin 0 -> 561 bytes lib/icon/welfareInfo_icon_06.png | Bin 0 -> 3682 bytes lib/icon/welfareInfo_icon_07.png | Bin 0 -> 3235 bytes lib/icon/welfareInfo_icon_08.png | Bin 0 -> 3483 bytes lib/icon/welfareInfo_icon_09.png | Bin 0 -> 1693 bytes lib/icon/welfareInfo_icon_10.png | Bin 0 -> 2326 bytes lib/icon/welfareInfo_icon_11.png | Bin 0 -> 2737 bytes lib/icon/welfareInfo_icon_12.png | Bin 0 -> 3256 bytes lib/icon/welfareInfo_icon_13.png | Bin 0 -> 779 bytes lib/icon/welfareInfo_icon_14.png | Bin 0 -> 892 bytes lib/icon/welfareInfo_icon_15.png | Bin 0 -> 913 bytes lib/icon/welfare_header_icon_00.png | Bin 0 -> 1935 bytes lib/icon/welfare_header_icon_01.png | Bin 0 -> 2266 bytes lib/img/banner_00.png | Bin 0 -> 51017 bytes lib/img/banner_01.png | Bin 0 -> 43522 bytes lib/img/banner_02.png | Bin 0 -> 36912 bytes lib/img/login_back.png | Bin 0 -> 98966 bytes lib/img/user_cover.png | Bin 0 -> 4318 bytes node_modules/domelementtype/LICENSE | 11 + node_modules/domelementtype/index.js | 15 + node_modules/domelementtype/package.json | 48 ++ node_modules/domelementtype/readme.md | 1 + node_modules/domhandler/.travis.yml | 6 + node_modules/domhandler/LICENSE | 11 + node_modules/domhandler/index.js | 217 +++++ node_modules/domhandler/lib/element.js | 20 + node_modules/domhandler/lib/node.js | 44 + node_modules/domhandler/package.json | 73 ++ node_modules/domhandler/readme.md | 116 +++ .../domhandler/test/cases/01-basic.json | 57 ++ .../test/cases/02-single_tag_1.json | 21 + .../test/cases/03-single_tag_2.json | 21 + .../test/cases/04-unescaped_in_script.json | 27 + .../test/cases/05-tags_in_comment.json | 18 + .../test/cases/06-comment_in_script.json | 18 + .../test/cases/07-unescaped_in_style.json | 20 + .../test/cases/08-extra_spaces_in_tag.json | 20 + .../test/cases/09-unquoted_attrib.json | 20 + .../test/cases/10-singular_attribute.json | 15 + .../test/cases/11-text_outside_tags.json | 40 + .../domhandler/test/cases/12-text_only.json | 11 + .../test/cases/13-comment_in_text.json | 19 + .../cases/14-comment_in_text_in_script.json | 18 + .../domhandler/test/cases/15-non-verbose.json | 22 + .../test/cases/16-normalize_whitespace.json | 47 ++ .../test/cases/17-xml_namespace.json | 18 + .../test/cases/18-enforce_empty_tags.json | 16 + .../test/cases/19-ignore_empty_tags.json | 20 + .../test/cases/20-template_script_tags.json | 20 + .../test/cases/21-conditional_comments.json | 15 + .../test/cases/22-lowercase_tags.json | 41 + .../domhandler/test/cases/23-dom-lvl1.json | 131 +++ .../test/cases/24-with-start-indices.json | 85 ++ .../test/cases/25-with-end-indices.json | 86 ++ node_modules/domhandler/test/tests.js | 60 ++ node_modules/entities/.travis.yml | 5 + node_modules/entities/LICENSE | 11 + node_modules/entities/index.js | 26 + node_modules/entities/lib/decode.js | 70 ++ node_modules/entities/lib/decode_codepoint.js | 25 + node_modules/entities/lib/encode.js | 82 ++ node_modules/entities/maps/decode.json | 1 + node_modules/entities/maps/entities.json | 1 + node_modules/entities/maps/legacy.json | 1 + node_modules/entities/maps/xml.json | 1 + node_modules/entities/package.json | 89 ++ node_modules/entities/readme.md | 27 + node_modules/entities/test/mocha.opts | 2 + node_modules/entities/test/test.js | 170 ++++ node_modules/events/.airtap.yml | 15 + node_modules/events/.github/FUNDING.yml | 12 + node_modules/events/.travis.yml | 18 + node_modules/events/History.md | 95 +++ node_modules/events/LICENSE | 22 + node_modules/events/Readme.md | 49 ++ node_modules/events/events.js | 476 +++++++++++ node_modules/events/package.json | 66 ++ node_modules/events/security.md | 10 + node_modules/events/tests/add-listeners.js | 111 +++ .../events/tests/check-listener-leaks.js | 101 +++ node_modules/events/tests/common.js | 104 +++ node_modules/events/tests/errors.js | 13 + node_modules/events/tests/events-list.js | 28 + node_modules/events/tests/events-once.js | 100 +++ node_modules/events/tests/index.js | 56 ++ node_modules/events/tests/legacy-compat.js | 16 + node_modules/events/tests/listener-count.js | 37 + .../events/tests/listeners-side-effects.js | 56 ++ node_modules/events/tests/listeners.js | 168 ++++ node_modules/events/tests/max-listeners.js | 47 ++ node_modules/events/tests/method-names.js | 35 + node_modules/events/tests/modify-in-emit.js | 90 ++ node_modules/events/tests/num-args.js | 60 ++ node_modules/events/tests/once.js | 83 ++ node_modules/events/tests/prepend.js | 31 + .../events/tests/remove-all-listeners.js | 133 +++ node_modules/events/tests/remove-listeners.js | 212 +++++ .../tests/set-max-listeners-side-effects.js | 31 + .../events/tests/special-event-names.js | 45 + node_modules/events/tests/subclass.js | 66 ++ node_modules/events/tests/symbols.js | 25 + node_modules/mini-ali-ui/CHANGELOG.md | 122 +++ node_modules/mini-ali-ui/LICENSE | 22 + node_modules/mini-ali-ui/README.md | 86 ++ node_modules/mini-ali-ui/es/_util/fmtClass.js | 30 + node_modules/mini-ali-ui/es/_util/fmtEvent.js | 19 + node_modules/mini-ali-ui/es/_util/fmtUnit.js | 18 + .../mini-ali-ui/es/am-checkbox/index.acss | 1 + .../mini-ali-ui/es/am-checkbox/index.axml | 11 + .../mini-ali-ui/es/am-checkbox/index.js | 52 ++ .../mini-ali-ui/es/am-checkbox/index.json | 3 + .../mini-ali-ui/es/am-icon/index.acss | 1 + .../mini-ali-ui/es/am-icon/index.axml | 4 + node_modules/mini-ali-ui/es/am-icon/index.js | 12 + .../mini-ali-ui/es/am-icon/index.json | 3 + .../mini-ali-ui/es/am-radio/index.acss | 1 + .../mini-ali-ui/es/am-radio/index.axml | 10 + node_modules/mini-ali-ui/es/am-radio/index.js | 16 + .../mini-ali-ui/es/am-radio/index.json | 6 + .../mini-ali-ui/es/am-switch/index.acss | 1 + .../mini-ali-ui/es/am-switch/index.axml | 1 + .../mini-ali-ui/es/am-switch/index.js | 20 + .../mini-ali-ui/es/am-switch/index.json | 3 + .../mini-ali-ui/es/amount-input/index.acss | 1 + .../mini-ali-ui/es/amount-input/index.axml | 30 + .../mini-ali-ui/es/amount-input/index.js | 81 ++ .../mini-ali-ui/es/amount-input/index.json | 6 + node_modules/mini-ali-ui/es/avatar/index.acss | 1 + node_modules/mini-ali-ui/es/avatar/index.axml | 11 + node_modules/mini-ali-ui/es/avatar/index.js | 29 + node_modules/mini-ali-ui/es/avatar/index.json | 3 + node_modules/mini-ali-ui/es/badge/index.acss | 1 + node_modules/mini-ali-ui/es/badge/index.axml | 14 + node_modules/mini-ali-ui/es/badge/index.js | 11 + node_modules/mini-ali-ui/es/badge/index.json | 3 + node_modules/mini-ali-ui/es/button/index.acss | 1 + node_modules/mini-ali-ui/es/button/index.axml | 7 + node_modules/mini-ali-ui/es/button/index.js | 111 +++ node_modules/mini-ali-ui/es/button/index.json | 6 + .../mini-ali-ui/es/calendar/index.acss | 1 + .../mini-ali-ui/es/calendar/index.axml | 53 ++ node_modules/mini-ali-ui/es/calendar/index.js | 501 ++++++++++++ .../mini-ali-ui/es/calendar/index.json | 6 + node_modules/mini-ali-ui/es/card/index.acss | 1 + node_modules/mini-ali-ui/es/card/index.axml | 30 + node_modules/mini-ali-ui/es/card/index.js | 39 + node_modules/mini-ali-ui/es/card/index.json | 6 + .../es/collapse/collapse-item/index.acss | 1 + .../es/collapse/collapse-item/index.axml | 33 + .../es/collapse/collapse-item/index.js | 130 +++ .../es/collapse/collapse-item/index.json | 6 + .../mini-ali-ui/es/collapse/index.axml | 3 + node_modules/mini-ali-ui/es/collapse/index.js | 92 +++ .../mini-ali-ui/es/collapse/index.json | 3 + .../mini-ali-ui/es/container/index.acss | 1 + .../mini-ali-ui/es/container/index.axml | 16 + .../mini-ali-ui/es/container/index.js | 12 + .../mini-ali-ui/es/container/index.json | 3 + node_modules/mini-ali-ui/es/coupon/index.acss | 1 + node_modules/mini-ali-ui/es/coupon/index.axml | 47 ++ node_modules/mini-ali-ui/es/coupon/index.js | 25 + node_modules/mini-ali-ui/es/coupon/index.json | 6 + .../es/filter/filter-item/index.acss | 1 + .../es/filter/filter-item/index.axml | 6 + .../es/filter/filter-item/index.js | 110 +++ .../es/filter/filter-item/index.json | 3 + node_modules/mini-ali-ui/es/filter/index.acss | 1 + node_modules/mini-ali-ui/es/filter/index.axml | 14 + node_modules/mini-ali-ui/es/filter/index.js | 41 + node_modules/mini-ali-ui/es/filter/index.json | 3 + .../mini-ali-ui/es/filter/mixins/lifecycle.js | 16 + .../mini-ali-ui/es/flex/flex-item/index.acss | 1 + .../mini-ali-ui/es/flex/flex-item/index.axml | 3 + .../mini-ali-ui/es/flex/flex-item/index.js | 1 + .../mini-ali-ui/es/flex/flex-item/index.json | 3 + node_modules/mini-ali-ui/es/flex/index.acss | 1 + node_modules/mini-ali-ui/es/flex/index.axml | 5 + node_modules/mini-ali-ui/es/flex/index.js | 10 + node_modules/mini-ali-ui/es/flex/index.json | 3 + node_modules/mini-ali-ui/es/flex/index.sjs | 64 ++ node_modules/mini-ali-ui/es/footer/index.acss | 1 + node_modules/mini-ali-ui/es/footer/index.axml | 47 ++ node_modules/mini-ali-ui/es/footer/index.js | 41 + node_modules/mini-ali-ui/es/footer/index.json | 6 + node_modules/mini-ali-ui/es/grid/index.acss | 1 + node_modules/mini-ali-ui/es/grid/index.axml | 89 ++ node_modules/mini-ali-ui/es/grid/index.js | 59 ++ node_modules/mini-ali-ui/es/grid/index.json | 7 + node_modules/mini-ali-ui/es/guide/index.acss | 1 + node_modules/mini-ali-ui/es/guide/index.axml | 42 + node_modules/mini-ali-ui/es/guide/index.js | 69 ++ node_modules/mini-ali-ui/es/guide/index.json | 8 + .../mini-ali-ui/es/input-item/index.acss | 1 + .../mini-ali-ui/es/input-item/index.axml | 39 + .../mini-ali-ui/es/input-item/index.js | 68 ++ .../mini-ali-ui/es/input-item/index.json | 6 + .../mini-ali-ui/es/list/alphabet/index.acss | 1 + .../mini-ali-ui/es/list/alphabet/index.axml | 29 + .../mini-ali-ui/es/list/alphabet/index.js | 53 ++ .../mini-ali-ui/es/list/alphabet/index.json | 3 + .../es/list/auto-size-img/index.acss | 1 + .../es/list/auto-size-img/index.axml | 5 + .../es/list/auto-size-img/index.js | 6 + .../es/list/auto-size-img/index.json | 3 + node_modules/mini-ali-ui/es/list/index.acss | 1 + node_modules/mini-ali-ui/es/list/index.axml | 13 + node_modules/mini-ali-ui/es/list/index.js | 29 + node_modules/mini-ali-ui/es/list/index.json | 6 + .../mini-ali-ui/es/list/list-item/index.acss | 1 + .../mini-ali-ui/es/list/list-item/index.axml | 65 ++ .../mini-ali-ui/es/list/list-item/index.js | 42 + .../mini-ali-ui/es/list/list-item/index.json | 7 + .../es/list/list-secondary/index.acss | 1 + .../es/list/list-secondary/index.axml | 10 + .../es/list/list-secondary/index.js | 19 + .../es/list/list-secondary/index.json | 6 + .../mini-ali-ui/es/loading/index.acss | 1 + .../mini-ali-ui/es/loading/index.axml | 7 + node_modules/mini-ali-ui/es/loading/index.js | 8 + .../mini-ali-ui/es/loading/index.json | 3 + .../mini-ali-ui/es/long-password/index.acss | 1 + .../mini-ali-ui/es/long-password/index.axml | 37 + .../mini-ali-ui/es/long-password/index.js | 70 ++ .../mini-ali-ui/es/long-password/index.json | 6 + node_modules/mini-ali-ui/es/mask/index.acss | 1 + node_modules/mini-ali-ui/es/mask/index.axml | 5 + node_modules/mini-ali-ui/es/mask/index.js | 21 + node_modules/mini-ali-ui/es/mask/index.json | 3 + .../mini-ali-ui/es/message/index.acss | 1 + .../mini-ali-ui/es/message/index.axml | 30 + node_modules/mini-ali-ui/es/message/index.js | 55 ++ .../mini-ali-ui/es/message/index.json | 7 + node_modules/mini-ali-ui/es/modal/index.acss | 1 + node_modules/mini-ali-ui/es/modal/index.axml | 29 + node_modules/mini-ali-ui/es/modal/index.js | 58 ++ node_modules/mini-ali-ui/es/modal/index.json | 7 + .../mini-ali-ui/es/multi-liner/index.acss | 1 + .../mini-ali-ui/es/multi-liner/index.axml | 23 + .../mini-ali-ui/es/multi-liner/index.js | 65 ++ .../mini-ali-ui/es/multi-liner/index.json | 3 + node_modules/mini-ali-ui/es/notice/index.acss | 1 + node_modules/mini-ali-ui/es/notice/index.axml | 56 ++ node_modules/mini-ali-ui/es/notice/index.js | 248 ++++++ node_modules/mini-ali-ui/es/notice/index.json | 6 + .../mini-ali-ui/es/page-result/index.acss | 1 + .../mini-ali-ui/es/page-result/index.axml | 14 + .../mini-ali-ui/es/page-result/index.js | 105 +++ .../mini-ali-ui/es/page-result/index.json | 6 + .../mini-ali-ui/es/pagination/index.acss | 1 + .../mini-ali-ui/es/pagination/index.axml | 29 + .../mini-ali-ui/es/pagination/index.js | 37 + .../mini-ali-ui/es/pagination/index.json | 3 + .../mini-ali-ui/es/pagination/index.sjs | 5 + .../mini-ali-ui/es/picker-item/index.acss | 1 + .../mini-ali-ui/es/picker-item/index.axml | 21 + .../mini-ali-ui/es/picker-item/index.js | 19 + .../mini-ali-ui/es/picker-item/index.json | 6 + .../mini-ali-ui/es/popover/index.acss | 1 + .../mini-ali-ui/es/popover/index.axml | 18 + node_modules/mini-ali-ui/es/popover/index.js | 16 + .../mini-ali-ui/es/popover/index.json | 6 + .../es/popover/popover-item/index.acss | 1 + .../es/popover/popover-item/index.axml | 16 + .../es/popover/popover-item/index.js | 14 + .../es/popover/popover-item/index.json | 6 + node_modules/mini-ali-ui/es/popup/index.acss | 1 + node_modules/mini-ali-ui/es/popup/index.axml | 4 + node_modules/mini-ali-ui/es/popup/index.js | 27 + node_modules/mini-ali-ui/es/popup/index.json | 3 + .../mini-ali-ui/es/search-bar/index.acss | 1 + .../mini-ali-ui/es/search-bar/index.axml | 29 + .../mini-ali-ui/es/search-bar/index.js | 111 +++ .../mini-ali-ui/es/search-bar/index.json | 6 + .../mini-ali-ui/es/stepper/index.acss | 1 + .../mini-ali-ui/es/stepper/index.axml | 24 + node_modules/mini-ali-ui/es/stepper/index.js | 138 ++++ .../mini-ali-ui/es/stepper/index.json | 6 + node_modules/mini-ali-ui/es/steps/index.acss | 1 + node_modules/mini-ali-ui/es/steps/index.axml | 51 ++ node_modules/mini-ali-ui/es/steps/index.js | 10 + node_modules/mini-ali-ui/es/steps/index.json | 3 + .../mini-ali-ui/es/style/themes/default.acss | 1 + .../mini-ali-ui/es/swipe-action/index.acss | 1 + .../mini-ali-ui/es/swipe-action/index.axml | 89 ++ .../mini-ali-ui/es/swipe-action/index.js | 265 ++++++ .../mini-ali-ui/es/swipe-action/index.json | 3 + node_modules/mini-ali-ui/es/tabs/index.acss | 1 + node_modules/mini-ali-ui/es/tabs/index.axml | 100 +++ node_modules/mini-ali-ui/es/tabs/index.js | 235 ++++++ node_modules/mini-ali-ui/es/tabs/index.json | 7 + .../es/tabs/tab-content/index.acss | 1 + .../es/tabs/tab-content/index.axml | 13 + .../mini-ali-ui/es/tabs/tab-content/index.js | 6 + .../es/tabs/tab-content/index.json | 3 + node_modules/mini-ali-ui/es/tabs/util.sjs | 50 ++ node_modules/mini-ali-ui/es/tag/index.acss | 1 + node_modules/mini-ali-ui/es/tag/index.axml | 9 + node_modules/mini-ali-ui/es/tag/index.js | 31 + node_modules/mini-ali-ui/es/tag/index.json | 6 + node_modules/mini-ali-ui/es/terms/index.acss | 1 + node_modules/mini-ali-ui/es/terms/index.axml | 21 + node_modules/mini-ali-ui/es/terms/index.js | 75 ++ node_modules/mini-ali-ui/es/terms/index.json | 8 + .../es/tips/tips-dialog/index.acss | 1 + .../es/tips/tips-dialog/index.axml | 25 + .../mini-ali-ui/es/tips/tips-dialog/index.js | 23 + .../es/tips/tips-dialog/index.json | 6 + .../mini-ali-ui/es/tips/tips-plain/index.acss | 1 + .../mini-ali-ui/es/tips/tips-plain/index.axml | 7 + .../mini-ali-ui/es/tips/tips-plain/index.js | 44 + .../mini-ali-ui/es/tips/tips-plain/index.json | 3 + node_modules/mini-ali-ui/es/title/index.acss | 1 + node_modules/mini-ali-ui/es/title/index.axml | 11 + node_modules/mini-ali-ui/es/title/index.js | 30 + node_modules/mini-ali-ui/es/title/index.json | 6 + .../mini-ali-ui/es/verify-code/index.acss | 1 + .../mini-ali-ui/es/verify-code/index.axml | 35 + .../mini-ali-ui/es/verify-code/index.js | 105 +++ .../mini-ali-ui/es/verify-code/index.json | 6 + node_modules/mini-ali-ui/es/vtabs/index.acss | 1 + node_modules/mini-ali-ui/es/vtabs/index.axml | 52 ++ node_modules/mini-ali-ui/es/vtabs/index.js | 162 ++++ node_modules/mini-ali-ui/es/vtabs/index.json | 6 + .../es/vtabs/vtab-content/index.axml | 3 + .../es/vtabs/vtab-content/index.js | 1 + .../es/vtabs/vtab-content/index.json | 3 + node_modules/mini-ali-ui/package.json | 99 +++ node_modules/mini-html-parser2/README.md | 63 ++ .../mini-html-parser2/lib/Parser.d.ts | 2 + node_modules/mini-html-parser2/lib/Parser.js | 298 +++++++ .../mini-html-parser2/lib/Tokenizer.d.ts | 68 ++ .../mini-html-parser2/lib/Tokenizer.js | 769 ++++++++++++++++++ node_modules/mini-html-parser2/lib/index.d.ts | 1 + node_modules/mini-html-parser2/lib/index.js | 54 ++ .../mini-html-parser2/lib/inherits.d.ts | 0 .../mini-html-parser2/lib/inherits.js | 25 + node_modules/mini-html-parser2/package.json | 66 ++ package-lock.json | 44 + package.json | 6 + pages/add_user/add_user.acss | 62 ++ pages/add_user/add_user.axml | 20 + pages/add_user/add_user.js | 52 ++ pages/add_user/add_user.json | 3 + pages/changePwd/changePwd.acss | 62 ++ pages/changePwd/changePwd.axml | 20 + pages/changePwd/changePwd.js | 55 ++ pages/changePwd/changePwd.json | 3 + pages/enter/enter.acss | 93 +++ pages/enter/enter.axml | 46 ++ pages/enter/enter.js | 136 ++++ pages/enter/enter.json | 4 + pages/equity/equity.acss | 125 +++ pages/equity/equity.axml | 34 + pages/equity/equity.js | 150 ++++ pages/equity/equity.json | 3 + pages/equity_list/equity_list.acss | 321 ++++++++ pages/equity_list/equity_list.axml | 97 +++ pages/equity_list/equity_list.js | 246 ++++++ pages/equity_list/equity_list.json | 5 + pages/find/find.acss | 93 +++ pages/find/find.axml | 34 + pages/find/find.js | 104 +++ pages/find/find.json | 4 + pages/gas/gas.acss | 129 +++ pages/gas/gas.axml | 32 + pages/gas/gas.js | 153 ++++ pages/gas/gas.json | 3 + pages/gas_list/gas_list.acss | 321 ++++++++ pages/gas_list/gas_list.axml | 92 +++ pages/gas_list/gas_list.js | 274 +++++++ pages/gas_list/gas_list.json | 5 + pages/index/index.acss | 49 ++ pages/index/index.axml | 42 + pages/index/index.js | 53 ++ pages/index/index.json | 8 + pages/login/login.acss | 73 ++ pages/login/login.axml | 25 + pages/login/login.js | 73 ++ pages/login/login.json | 4 + pages/logs/logs.acss | 55 ++ pages/logs/logs.axml | 17 + pages/logs/logs.js | 66 ++ pages/logs/logs.json | 4 + pages/notice_date/notice_date.acss | 17 + pages/notice_date/notice_date.axml | 5 + pages/notice_date/notice_date.js | 43 + pages/notice_date/notice_date.json | 3 + pages/nuclear/nuclear.acss | 371 +++++++++ pages/nuclear/nuclear.axml | 86 ++ pages/nuclear/nuclear.js | 300 +++++++ pages/nuclear/nuclear.json | 5 + pages/nuclear_code/nuclear_code.acss | 30 + pages/nuclear_code/nuclear_code.axml | 13 + pages/nuclear_code/nuclear_code.js | 63 ++ pages/nuclear_code/nuclear_code.json | 4 + pages/order/order.acss | 88 ++ pages/order/order.axml | 22 + pages/order/order.js | 71 ++ pages/order/order.json | 3 + pages/payCode/payCode.acss | 49 ++ pages/payCode/payCode.axml | 9 + pages/payCode/payCode.js | 101 +++ pages/payCode/payCode.json | 5 + pages/refund/refund.acss | 49 ++ pages/refund/refund.axml | 12 + pages/refund/refund.js | 47 ++ pages/refund/refund.json | 3 + pages/refund_record/refund_record.acss | 62 ++ pages/refund_record/refund_record.axml | 15 + pages/refund_record/refund_record.js | 62 ++ pages/refund_record/refund_record.json | 3 + pages/results/results.acss | 28 + pages/results/results.axml | 7 + pages/results/results.js | 8 + pages/results/results.json | 3 + pages/set/set.acss | 40 + pages/set/set.axml | 11 + pages/set/set.js | 18 + pages/set/set.json | 3 + pages/set_meal/set_meal.acss | 93 +++ pages/set_meal/set_meal.axml | 32 + pages/set_meal/set_meal.js | 62 ++ pages/set_meal/set_meal.json | 4 + pages/shop_user/shop_user.acss | 83 ++ pages/shop_user/shop_user.axml | 24 + pages/shop_user/shop_user.js | 111 +++ pages/shop_user/shop_user.json | 3 + pages/stages_form/stages_form.acss | 123 +++ pages/stages_form/stages_form.axml | 55 ++ pages/stages_form/stages_form.js | 140 ++++ pages/stages_form/stages_form.json | 3 + pages/stages_pay/stages_pay.acss | 321 ++++++++ pages/stages_pay/stages_pay.axml | 96 +++ pages/stages_pay/stages_pay.js | 240 ++++++ pages/stages_pay/stages_pay.json | 5 + pages/star_card/star_card.axml | 3 + pages/star_card/star_card.js | 4 + pages/star_card/star_card.json | 3 + pages/sub_order/sub_order.acss | 118 +++ pages/sub_order/sub_order.axml | 58 ++ pages/sub_order/sub_order.js | 82 ++ pages/sub_order/sub_order.json | 3 + pages/user/user.acss | 78 ++ pages/user/user.axml | 43 + pages/user/user.js | 24 + pages/user/user.json | 4 + pages/wallet/wallet.acss | 126 +++ pages/wallet/wallet.axml | 35 + pages/wallet/wallet.js | 65 ++ pages/wallet/wallet.json | 4 + pages/wallet_extract/wallet_extract.acss | 55 ++ pages/wallet_extract/wallet_extract.axml | 21 + pages/wallet_extract/wallet_extract.js | 80 ++ pages/wallet_extract/wallet_extract.json | 3 + pages/welcome/welcome.acss | 9 + pages/welcome/welcome.axml | 1 + pages/welcome/welcome.js | 46 ++ pages/welcome/welcome.json | 1 + pages/welfare/welfare.acss | 125 +++ pages/welfare/welfare.axml | 51 ++ pages/welfare/welfare.js | 169 ++++ pages/welfare/welfare.json | 3 + pages/welfare_deta/welfare_deta.acss | 96 +++ pages/welfare_deta/welfare_deta.axml | 71 ++ pages/welfare_deta/welfare_deta.js | 32 + pages/welfare_deta/welfare_deta.json | 3 + pages/welfare_list/welfare_list.acss | 321 ++++++++ pages/welfare_list/welfare_list.axml | 113 +++ pages/welfare_list/welfare_list.js | 263 ++++++ pages/welfare_list/welfare_list.json | 5 + snapshot.png | Bin 0 -> 15927 bytes 510 files changed, 20316 insertions(+), 2 deletions(-) create mode 100755 api/api.js create mode 100755 app.acss create mode 100755 app.js create mode 100755 app.json create mode 100755 lib/icon/add_icon.png create mode 100755 lib/icon/arrows_dow.png create mode 100755 lib/icon/arrows_right.png create mode 100755 lib/icon/enter_code_icon.png create mode 100755 lib/icon/enter_phone_icon.png create mode 100755 lib/icon/enter_shop_icon.png create mode 100755 lib/icon/index_icon_00.png create mode 100755 lib/icon/index_icon_01.png create mode 100755 lib/icon/index_icon_02.png create mode 100755 lib/icon/index_icon_03.png create mode 100644 lib/icon/index_icon_04.png create mode 100755 lib/icon/list_null.png create mode 100755 lib/icon/login_pss_icon.png create mode 100755 lib/icon/login_user_icon.png create mode 100755 lib/icon/month_icon.png create mode 100755 lib/icon/permissions_icon.png create mode 100755 lib/icon/screen_calss.png create mode 100755 lib/icon/screen_icon.png create mode 100755 lib/icon/tabBar_active_00.png create mode 100755 lib/icon/tabBar_active_02.png create mode 100755 lib/icon/tabBar_icon_00.png create mode 100755 lib/icon/tabBar_icon_02.png create mode 100755 lib/icon/user_btn_icon_00.png create mode 100755 lib/icon/user_btn_icon_01.png create mode 100755 lib/icon/user_btn_icon_02.png create mode 100755 lib/icon/user_btn_icon_03.png create mode 100755 lib/icon/user_btn_icon_04.png create mode 100755 lib/icon/user_btn_icon_05.png create mode 100755 lib/icon/user_btn_icon_06.png create mode 100755 lib/icon/welfareInfo_icon_00.png create mode 100755 lib/icon/welfareInfo_icon_01.png create mode 100755 lib/icon/welfareInfo_icon_02.png create mode 100755 lib/icon/welfareInfo_icon_03.png create mode 100755 lib/icon/welfareInfo_icon_04.png create mode 100755 lib/icon/welfareInfo_icon_05.png create mode 100755 lib/icon/welfareInfo_icon_06.png create mode 100755 lib/icon/welfareInfo_icon_07.png create mode 100755 lib/icon/welfareInfo_icon_08.png create mode 100755 lib/icon/welfareInfo_icon_09.png create mode 100755 lib/icon/welfareInfo_icon_10.png create mode 100755 lib/icon/welfareInfo_icon_11.png create mode 100755 lib/icon/welfareInfo_icon_12.png create mode 100644 lib/icon/welfareInfo_icon_13.png create mode 100644 lib/icon/welfareInfo_icon_14.png create mode 100644 lib/icon/welfareInfo_icon_15.png create mode 100755 lib/icon/welfare_header_icon_00.png create mode 100755 lib/icon/welfare_header_icon_01.png create mode 100755 lib/img/banner_00.png create mode 100755 lib/img/banner_01.png create mode 100755 lib/img/banner_02.png create mode 100755 lib/img/login_back.png create mode 100755 lib/img/user_cover.png create mode 100755 node_modules/domelementtype/LICENSE create mode 100755 node_modules/domelementtype/index.js create mode 100755 node_modules/domelementtype/package.json create mode 100755 node_modules/domelementtype/readme.md create mode 100755 node_modules/domhandler/.travis.yml create mode 100755 node_modules/domhandler/LICENSE create mode 100755 node_modules/domhandler/index.js create mode 100755 node_modules/domhandler/lib/element.js create mode 100755 node_modules/domhandler/lib/node.js create mode 100755 node_modules/domhandler/package.json create mode 100755 node_modules/domhandler/readme.md create mode 100755 node_modules/domhandler/test/cases/01-basic.json create mode 100755 node_modules/domhandler/test/cases/02-single_tag_1.json create mode 100755 node_modules/domhandler/test/cases/03-single_tag_2.json create mode 100755 node_modules/domhandler/test/cases/04-unescaped_in_script.json create mode 100755 node_modules/domhandler/test/cases/05-tags_in_comment.json create mode 100755 node_modules/domhandler/test/cases/06-comment_in_script.json create mode 100755 node_modules/domhandler/test/cases/07-unescaped_in_style.json create mode 100755 node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json create mode 100755 node_modules/domhandler/test/cases/09-unquoted_attrib.json create mode 100755 node_modules/domhandler/test/cases/10-singular_attribute.json create mode 100755 node_modules/domhandler/test/cases/11-text_outside_tags.json create mode 100755 node_modules/domhandler/test/cases/12-text_only.json create mode 100755 node_modules/domhandler/test/cases/13-comment_in_text.json create mode 100755 node_modules/domhandler/test/cases/14-comment_in_text_in_script.json create mode 100755 node_modules/domhandler/test/cases/15-non-verbose.json create mode 100755 node_modules/domhandler/test/cases/16-normalize_whitespace.json create mode 100755 node_modules/domhandler/test/cases/17-xml_namespace.json create mode 100755 node_modules/domhandler/test/cases/18-enforce_empty_tags.json create mode 100755 node_modules/domhandler/test/cases/19-ignore_empty_tags.json create mode 100755 node_modules/domhandler/test/cases/20-template_script_tags.json create mode 100755 node_modules/domhandler/test/cases/21-conditional_comments.json create mode 100755 node_modules/domhandler/test/cases/22-lowercase_tags.json create mode 100755 node_modules/domhandler/test/cases/23-dom-lvl1.json create mode 100755 node_modules/domhandler/test/cases/24-with-start-indices.json create mode 100755 node_modules/domhandler/test/cases/25-with-end-indices.json create mode 100755 node_modules/domhandler/test/tests.js create mode 100755 node_modules/entities/.travis.yml create mode 100755 node_modules/entities/LICENSE create mode 100755 node_modules/entities/index.js create mode 100755 node_modules/entities/lib/decode.js create mode 100755 node_modules/entities/lib/decode_codepoint.js create mode 100755 node_modules/entities/lib/encode.js create mode 100755 node_modules/entities/maps/decode.json create mode 100755 node_modules/entities/maps/entities.json create mode 100755 node_modules/entities/maps/legacy.json create mode 100755 node_modules/entities/maps/xml.json create mode 100755 node_modules/entities/package.json create mode 100755 node_modules/entities/readme.md create mode 100755 node_modules/entities/test/mocha.opts create mode 100755 node_modules/entities/test/test.js create mode 100644 node_modules/events/.airtap.yml create mode 100644 node_modules/events/.github/FUNDING.yml create mode 100644 node_modules/events/.travis.yml create mode 100644 node_modules/events/History.md create mode 100644 node_modules/events/LICENSE create mode 100644 node_modules/events/Readme.md create mode 100644 node_modules/events/events.js create mode 100644 node_modules/events/package.json create mode 100644 node_modules/events/security.md create mode 100644 node_modules/events/tests/add-listeners.js create mode 100644 node_modules/events/tests/check-listener-leaks.js create mode 100644 node_modules/events/tests/common.js create mode 100644 node_modules/events/tests/errors.js create mode 100644 node_modules/events/tests/events-list.js create mode 100644 node_modules/events/tests/events-once.js create mode 100644 node_modules/events/tests/index.js create mode 100644 node_modules/events/tests/legacy-compat.js create mode 100644 node_modules/events/tests/listener-count.js create mode 100644 node_modules/events/tests/listeners-side-effects.js create mode 100644 node_modules/events/tests/listeners.js create mode 100644 node_modules/events/tests/max-listeners.js create mode 100644 node_modules/events/tests/method-names.js create mode 100644 node_modules/events/tests/modify-in-emit.js create mode 100644 node_modules/events/tests/num-args.js create mode 100644 node_modules/events/tests/once.js create mode 100644 node_modules/events/tests/prepend.js create mode 100644 node_modules/events/tests/remove-all-listeners.js create mode 100644 node_modules/events/tests/remove-listeners.js create mode 100644 node_modules/events/tests/set-max-listeners-side-effects.js create mode 100644 node_modules/events/tests/special-event-names.js create mode 100644 node_modules/events/tests/subclass.js create mode 100644 node_modules/events/tests/symbols.js create mode 100755 node_modules/mini-ali-ui/CHANGELOG.md create mode 100755 node_modules/mini-ali-ui/LICENSE create mode 100755 node_modules/mini-ali-ui/README.md create mode 100755 node_modules/mini-ali-ui/es/_util/fmtClass.js create mode 100755 node_modules/mini-ali-ui/es/_util/fmtEvent.js create mode 100755 node_modules/mini-ali-ui/es/_util/fmtUnit.js create mode 100755 node_modules/mini-ali-ui/es/am-checkbox/index.acss create mode 100755 node_modules/mini-ali-ui/es/am-checkbox/index.axml create mode 100755 node_modules/mini-ali-ui/es/am-checkbox/index.js create mode 100755 node_modules/mini-ali-ui/es/am-checkbox/index.json create mode 100755 node_modules/mini-ali-ui/es/am-icon/index.acss create mode 100755 node_modules/mini-ali-ui/es/am-icon/index.axml create mode 100755 node_modules/mini-ali-ui/es/am-icon/index.js create mode 100755 node_modules/mini-ali-ui/es/am-icon/index.json create mode 100755 node_modules/mini-ali-ui/es/am-radio/index.acss create mode 100755 node_modules/mini-ali-ui/es/am-radio/index.axml create mode 100755 node_modules/mini-ali-ui/es/am-radio/index.js create mode 100755 node_modules/mini-ali-ui/es/am-radio/index.json create mode 100755 node_modules/mini-ali-ui/es/am-switch/index.acss create mode 100755 node_modules/mini-ali-ui/es/am-switch/index.axml create mode 100755 node_modules/mini-ali-ui/es/am-switch/index.js create mode 100755 node_modules/mini-ali-ui/es/am-switch/index.json create mode 100755 node_modules/mini-ali-ui/es/amount-input/index.acss create mode 100755 node_modules/mini-ali-ui/es/amount-input/index.axml create mode 100755 node_modules/mini-ali-ui/es/amount-input/index.js create mode 100755 node_modules/mini-ali-ui/es/amount-input/index.json create mode 100755 node_modules/mini-ali-ui/es/avatar/index.acss create mode 100755 node_modules/mini-ali-ui/es/avatar/index.axml create mode 100755 node_modules/mini-ali-ui/es/avatar/index.js create mode 100755 node_modules/mini-ali-ui/es/avatar/index.json create mode 100755 node_modules/mini-ali-ui/es/badge/index.acss create mode 100755 node_modules/mini-ali-ui/es/badge/index.axml create mode 100755 node_modules/mini-ali-ui/es/badge/index.js create mode 100755 node_modules/mini-ali-ui/es/badge/index.json create mode 100755 node_modules/mini-ali-ui/es/button/index.acss create mode 100755 node_modules/mini-ali-ui/es/button/index.axml create mode 100755 node_modules/mini-ali-ui/es/button/index.js create mode 100755 node_modules/mini-ali-ui/es/button/index.json create mode 100755 node_modules/mini-ali-ui/es/calendar/index.acss create mode 100755 node_modules/mini-ali-ui/es/calendar/index.axml create mode 100755 node_modules/mini-ali-ui/es/calendar/index.js create mode 100755 node_modules/mini-ali-ui/es/calendar/index.json create mode 100755 node_modules/mini-ali-ui/es/card/index.acss create mode 100755 node_modules/mini-ali-ui/es/card/index.axml create mode 100755 node_modules/mini-ali-ui/es/card/index.js create mode 100755 node_modules/mini-ali-ui/es/card/index.json create mode 100755 node_modules/mini-ali-ui/es/collapse/collapse-item/index.acss create mode 100755 node_modules/mini-ali-ui/es/collapse/collapse-item/index.axml create mode 100755 node_modules/mini-ali-ui/es/collapse/collapse-item/index.js create mode 100755 node_modules/mini-ali-ui/es/collapse/collapse-item/index.json create mode 100755 node_modules/mini-ali-ui/es/collapse/index.axml create mode 100755 node_modules/mini-ali-ui/es/collapse/index.js create mode 100755 node_modules/mini-ali-ui/es/collapse/index.json create mode 100755 node_modules/mini-ali-ui/es/container/index.acss create mode 100755 node_modules/mini-ali-ui/es/container/index.axml create mode 100755 node_modules/mini-ali-ui/es/container/index.js create mode 100755 node_modules/mini-ali-ui/es/container/index.json create mode 100755 node_modules/mini-ali-ui/es/coupon/index.acss create mode 100755 node_modules/mini-ali-ui/es/coupon/index.axml create mode 100755 node_modules/mini-ali-ui/es/coupon/index.js create mode 100755 node_modules/mini-ali-ui/es/coupon/index.json create mode 100755 node_modules/mini-ali-ui/es/filter/filter-item/index.acss create mode 100755 node_modules/mini-ali-ui/es/filter/filter-item/index.axml create mode 100755 node_modules/mini-ali-ui/es/filter/filter-item/index.js create mode 100755 node_modules/mini-ali-ui/es/filter/filter-item/index.json create mode 100755 node_modules/mini-ali-ui/es/filter/index.acss create mode 100755 node_modules/mini-ali-ui/es/filter/index.axml create mode 100755 node_modules/mini-ali-ui/es/filter/index.js create mode 100755 node_modules/mini-ali-ui/es/filter/index.json create mode 100755 node_modules/mini-ali-ui/es/filter/mixins/lifecycle.js create mode 100755 node_modules/mini-ali-ui/es/flex/flex-item/index.acss create mode 100755 node_modules/mini-ali-ui/es/flex/flex-item/index.axml create mode 100755 node_modules/mini-ali-ui/es/flex/flex-item/index.js create mode 100755 node_modules/mini-ali-ui/es/flex/flex-item/index.json create mode 100755 node_modules/mini-ali-ui/es/flex/index.acss create mode 100755 node_modules/mini-ali-ui/es/flex/index.axml create mode 100755 node_modules/mini-ali-ui/es/flex/index.js create mode 100755 node_modules/mini-ali-ui/es/flex/index.json create mode 100755 node_modules/mini-ali-ui/es/flex/index.sjs create mode 100755 node_modules/mini-ali-ui/es/footer/index.acss create mode 100755 node_modules/mini-ali-ui/es/footer/index.axml create mode 100755 node_modules/mini-ali-ui/es/footer/index.js create mode 100755 node_modules/mini-ali-ui/es/footer/index.json create mode 100755 node_modules/mini-ali-ui/es/grid/index.acss create mode 100755 node_modules/mini-ali-ui/es/grid/index.axml create mode 100755 node_modules/mini-ali-ui/es/grid/index.js create mode 100755 node_modules/mini-ali-ui/es/grid/index.json create mode 100755 node_modules/mini-ali-ui/es/guide/index.acss create mode 100755 node_modules/mini-ali-ui/es/guide/index.axml create mode 100755 node_modules/mini-ali-ui/es/guide/index.js create mode 100755 node_modules/mini-ali-ui/es/guide/index.json create mode 100755 node_modules/mini-ali-ui/es/input-item/index.acss create mode 100755 node_modules/mini-ali-ui/es/input-item/index.axml create mode 100755 node_modules/mini-ali-ui/es/input-item/index.js create mode 100755 node_modules/mini-ali-ui/es/input-item/index.json create mode 100755 node_modules/mini-ali-ui/es/list/alphabet/index.acss create mode 100755 node_modules/mini-ali-ui/es/list/alphabet/index.axml create mode 100755 node_modules/mini-ali-ui/es/list/alphabet/index.js create mode 100755 node_modules/mini-ali-ui/es/list/alphabet/index.json create mode 100755 node_modules/mini-ali-ui/es/list/auto-size-img/index.acss create mode 100755 node_modules/mini-ali-ui/es/list/auto-size-img/index.axml create mode 100755 node_modules/mini-ali-ui/es/list/auto-size-img/index.js create mode 100755 node_modules/mini-ali-ui/es/list/auto-size-img/index.json create mode 100755 node_modules/mini-ali-ui/es/list/index.acss create mode 100755 node_modules/mini-ali-ui/es/list/index.axml create mode 100755 node_modules/mini-ali-ui/es/list/index.js create mode 100755 node_modules/mini-ali-ui/es/list/index.json create mode 100755 node_modules/mini-ali-ui/es/list/list-item/index.acss create mode 100755 node_modules/mini-ali-ui/es/list/list-item/index.axml create mode 100755 node_modules/mini-ali-ui/es/list/list-item/index.js create mode 100755 node_modules/mini-ali-ui/es/list/list-item/index.json create mode 100755 node_modules/mini-ali-ui/es/list/list-secondary/index.acss create mode 100755 node_modules/mini-ali-ui/es/list/list-secondary/index.axml create mode 100755 node_modules/mini-ali-ui/es/list/list-secondary/index.js create mode 100755 node_modules/mini-ali-ui/es/list/list-secondary/index.json create mode 100755 node_modules/mini-ali-ui/es/loading/index.acss create mode 100755 node_modules/mini-ali-ui/es/loading/index.axml create mode 100755 node_modules/mini-ali-ui/es/loading/index.js create mode 100755 node_modules/mini-ali-ui/es/loading/index.json create mode 100755 node_modules/mini-ali-ui/es/long-password/index.acss create mode 100755 node_modules/mini-ali-ui/es/long-password/index.axml create mode 100755 node_modules/mini-ali-ui/es/long-password/index.js create mode 100755 node_modules/mini-ali-ui/es/long-password/index.json create mode 100755 node_modules/mini-ali-ui/es/mask/index.acss create mode 100755 node_modules/mini-ali-ui/es/mask/index.axml create mode 100755 node_modules/mini-ali-ui/es/mask/index.js create mode 100755 node_modules/mini-ali-ui/es/mask/index.json create mode 100755 node_modules/mini-ali-ui/es/message/index.acss create mode 100755 node_modules/mini-ali-ui/es/message/index.axml create mode 100755 node_modules/mini-ali-ui/es/message/index.js create mode 100755 node_modules/mini-ali-ui/es/message/index.json create mode 100755 node_modules/mini-ali-ui/es/modal/index.acss create mode 100755 node_modules/mini-ali-ui/es/modal/index.axml create mode 100755 node_modules/mini-ali-ui/es/modal/index.js create mode 100755 node_modules/mini-ali-ui/es/modal/index.json create mode 100755 node_modules/mini-ali-ui/es/multi-liner/index.acss create mode 100755 node_modules/mini-ali-ui/es/multi-liner/index.axml create mode 100755 node_modules/mini-ali-ui/es/multi-liner/index.js create mode 100755 node_modules/mini-ali-ui/es/multi-liner/index.json create mode 100755 node_modules/mini-ali-ui/es/notice/index.acss create mode 100755 node_modules/mini-ali-ui/es/notice/index.axml create mode 100755 node_modules/mini-ali-ui/es/notice/index.js create mode 100755 node_modules/mini-ali-ui/es/notice/index.json create mode 100755 node_modules/mini-ali-ui/es/page-result/index.acss create mode 100755 node_modules/mini-ali-ui/es/page-result/index.axml create mode 100755 node_modules/mini-ali-ui/es/page-result/index.js create mode 100755 node_modules/mini-ali-ui/es/page-result/index.json create mode 100755 node_modules/mini-ali-ui/es/pagination/index.acss create mode 100755 node_modules/mini-ali-ui/es/pagination/index.axml create mode 100755 node_modules/mini-ali-ui/es/pagination/index.js create mode 100755 node_modules/mini-ali-ui/es/pagination/index.json create mode 100755 node_modules/mini-ali-ui/es/pagination/index.sjs create mode 100755 node_modules/mini-ali-ui/es/picker-item/index.acss create mode 100755 node_modules/mini-ali-ui/es/picker-item/index.axml create mode 100755 node_modules/mini-ali-ui/es/picker-item/index.js create mode 100755 node_modules/mini-ali-ui/es/picker-item/index.json create mode 100755 node_modules/mini-ali-ui/es/popover/index.acss create mode 100755 node_modules/mini-ali-ui/es/popover/index.axml create mode 100755 node_modules/mini-ali-ui/es/popover/index.js create mode 100755 node_modules/mini-ali-ui/es/popover/index.json create mode 100755 node_modules/mini-ali-ui/es/popover/popover-item/index.acss create mode 100755 node_modules/mini-ali-ui/es/popover/popover-item/index.axml create mode 100755 node_modules/mini-ali-ui/es/popover/popover-item/index.js create mode 100755 node_modules/mini-ali-ui/es/popover/popover-item/index.json create mode 100755 node_modules/mini-ali-ui/es/popup/index.acss create mode 100755 node_modules/mini-ali-ui/es/popup/index.axml create mode 100755 node_modules/mini-ali-ui/es/popup/index.js create mode 100755 node_modules/mini-ali-ui/es/popup/index.json create mode 100755 node_modules/mini-ali-ui/es/search-bar/index.acss create mode 100755 node_modules/mini-ali-ui/es/search-bar/index.axml create mode 100755 node_modules/mini-ali-ui/es/search-bar/index.js create mode 100755 node_modules/mini-ali-ui/es/search-bar/index.json create mode 100755 node_modules/mini-ali-ui/es/stepper/index.acss create mode 100755 node_modules/mini-ali-ui/es/stepper/index.axml create mode 100755 node_modules/mini-ali-ui/es/stepper/index.js create mode 100755 node_modules/mini-ali-ui/es/stepper/index.json create mode 100755 node_modules/mini-ali-ui/es/steps/index.acss create mode 100755 node_modules/mini-ali-ui/es/steps/index.axml create mode 100755 node_modules/mini-ali-ui/es/steps/index.js create mode 100755 node_modules/mini-ali-ui/es/steps/index.json create mode 100755 node_modules/mini-ali-ui/es/style/themes/default.acss create mode 100755 node_modules/mini-ali-ui/es/swipe-action/index.acss create mode 100755 node_modules/mini-ali-ui/es/swipe-action/index.axml create mode 100755 node_modules/mini-ali-ui/es/swipe-action/index.js create mode 100755 node_modules/mini-ali-ui/es/swipe-action/index.json create mode 100755 node_modules/mini-ali-ui/es/tabs/index.acss create mode 100755 node_modules/mini-ali-ui/es/tabs/index.axml create mode 100755 node_modules/mini-ali-ui/es/tabs/index.js create mode 100755 node_modules/mini-ali-ui/es/tabs/index.json create mode 100755 node_modules/mini-ali-ui/es/tabs/tab-content/index.acss create mode 100755 node_modules/mini-ali-ui/es/tabs/tab-content/index.axml create mode 100755 node_modules/mini-ali-ui/es/tabs/tab-content/index.js create mode 100755 node_modules/mini-ali-ui/es/tabs/tab-content/index.json create mode 100755 node_modules/mini-ali-ui/es/tabs/util.sjs create mode 100755 node_modules/mini-ali-ui/es/tag/index.acss create mode 100755 node_modules/mini-ali-ui/es/tag/index.axml create mode 100755 node_modules/mini-ali-ui/es/tag/index.js create mode 100755 node_modules/mini-ali-ui/es/tag/index.json create mode 100755 node_modules/mini-ali-ui/es/terms/index.acss create mode 100755 node_modules/mini-ali-ui/es/terms/index.axml create mode 100755 node_modules/mini-ali-ui/es/terms/index.js create mode 100755 node_modules/mini-ali-ui/es/terms/index.json create mode 100755 node_modules/mini-ali-ui/es/tips/tips-dialog/index.acss create mode 100755 node_modules/mini-ali-ui/es/tips/tips-dialog/index.axml create mode 100755 node_modules/mini-ali-ui/es/tips/tips-dialog/index.js create mode 100755 node_modules/mini-ali-ui/es/tips/tips-dialog/index.json create mode 100755 node_modules/mini-ali-ui/es/tips/tips-plain/index.acss create mode 100755 node_modules/mini-ali-ui/es/tips/tips-plain/index.axml create mode 100755 node_modules/mini-ali-ui/es/tips/tips-plain/index.js create mode 100755 node_modules/mini-ali-ui/es/tips/tips-plain/index.json create mode 100755 node_modules/mini-ali-ui/es/title/index.acss create mode 100755 node_modules/mini-ali-ui/es/title/index.axml create mode 100755 node_modules/mini-ali-ui/es/title/index.js create mode 100755 node_modules/mini-ali-ui/es/title/index.json create mode 100755 node_modules/mini-ali-ui/es/verify-code/index.acss create mode 100755 node_modules/mini-ali-ui/es/verify-code/index.axml create mode 100755 node_modules/mini-ali-ui/es/verify-code/index.js create mode 100755 node_modules/mini-ali-ui/es/verify-code/index.json create mode 100755 node_modules/mini-ali-ui/es/vtabs/index.acss create mode 100755 node_modules/mini-ali-ui/es/vtabs/index.axml create mode 100755 node_modules/mini-ali-ui/es/vtabs/index.js create mode 100755 node_modules/mini-ali-ui/es/vtabs/index.json create mode 100755 node_modules/mini-ali-ui/es/vtabs/vtab-content/index.axml create mode 100755 node_modules/mini-ali-ui/es/vtabs/vtab-content/index.js create mode 100755 node_modules/mini-ali-ui/es/vtabs/vtab-content/index.json create mode 100755 node_modules/mini-ali-ui/package.json create mode 100644 node_modules/mini-html-parser2/README.md create mode 100644 node_modules/mini-html-parser2/lib/Parser.d.ts create mode 100644 node_modules/mini-html-parser2/lib/Parser.js create mode 100644 node_modules/mini-html-parser2/lib/Tokenizer.d.ts create mode 100644 node_modules/mini-html-parser2/lib/Tokenizer.js create mode 100644 node_modules/mini-html-parser2/lib/index.d.ts create mode 100644 node_modules/mini-html-parser2/lib/index.js create mode 100644 node_modules/mini-html-parser2/lib/inherits.d.ts create mode 100644 node_modules/mini-html-parser2/lib/inherits.js create mode 100644 node_modules/mini-html-parser2/package.json create mode 100755 package-lock.json create mode 100755 package.json create mode 100755 pages/add_user/add_user.acss create mode 100755 pages/add_user/add_user.axml create mode 100755 pages/add_user/add_user.js create mode 100755 pages/add_user/add_user.json create mode 100755 pages/changePwd/changePwd.acss create mode 100755 pages/changePwd/changePwd.axml create mode 100755 pages/changePwd/changePwd.js create mode 100755 pages/changePwd/changePwd.json create mode 100755 pages/enter/enter.acss create mode 100755 pages/enter/enter.axml create mode 100755 pages/enter/enter.js create mode 100755 pages/enter/enter.json create mode 100755 pages/equity/equity.acss create mode 100755 pages/equity/equity.axml create mode 100755 pages/equity/equity.js create mode 100755 pages/equity/equity.json create mode 100755 pages/equity_list/equity_list.acss create mode 100755 pages/equity_list/equity_list.axml create mode 100755 pages/equity_list/equity_list.js create mode 100755 pages/equity_list/equity_list.json create mode 100755 pages/find/find.acss create mode 100755 pages/find/find.axml create mode 100755 pages/find/find.js create mode 100755 pages/find/find.json create mode 100755 pages/gas/gas.acss create mode 100755 pages/gas/gas.axml create mode 100755 pages/gas/gas.js create mode 100755 pages/gas/gas.json create mode 100755 pages/gas_list/gas_list.acss create mode 100755 pages/gas_list/gas_list.axml create mode 100755 pages/gas_list/gas_list.js create mode 100755 pages/gas_list/gas_list.json create mode 100755 pages/index/index.acss create mode 100755 pages/index/index.axml create mode 100755 pages/index/index.js create mode 100755 pages/index/index.json create mode 100755 pages/login/login.acss create mode 100755 pages/login/login.axml create mode 100755 pages/login/login.js create mode 100755 pages/login/login.json create mode 100755 pages/logs/logs.acss create mode 100755 pages/logs/logs.axml create mode 100755 pages/logs/logs.js create mode 100755 pages/logs/logs.json create mode 100755 pages/notice_date/notice_date.acss create mode 100755 pages/notice_date/notice_date.axml create mode 100755 pages/notice_date/notice_date.js create mode 100755 pages/notice_date/notice_date.json create mode 100755 pages/nuclear/nuclear.acss create mode 100755 pages/nuclear/nuclear.axml create mode 100755 pages/nuclear/nuclear.js create mode 100755 pages/nuclear/nuclear.json create mode 100755 pages/nuclear_code/nuclear_code.acss create mode 100755 pages/nuclear_code/nuclear_code.axml create mode 100755 pages/nuclear_code/nuclear_code.js create mode 100755 pages/nuclear_code/nuclear_code.json create mode 100755 pages/order/order.acss create mode 100755 pages/order/order.axml create mode 100755 pages/order/order.js create mode 100755 pages/order/order.json create mode 100755 pages/payCode/payCode.acss create mode 100755 pages/payCode/payCode.axml create mode 100755 pages/payCode/payCode.js create mode 100755 pages/payCode/payCode.json create mode 100755 pages/refund/refund.acss create mode 100755 pages/refund/refund.axml create mode 100755 pages/refund/refund.js create mode 100755 pages/refund/refund.json create mode 100755 pages/refund_record/refund_record.acss create mode 100755 pages/refund_record/refund_record.axml create mode 100755 pages/refund_record/refund_record.js create mode 100755 pages/refund_record/refund_record.json create mode 100755 pages/results/results.acss create mode 100755 pages/results/results.axml create mode 100755 pages/results/results.js create mode 100755 pages/results/results.json create mode 100755 pages/set/set.acss create mode 100755 pages/set/set.axml create mode 100755 pages/set/set.js create mode 100755 pages/set/set.json create mode 100755 pages/set_meal/set_meal.acss create mode 100755 pages/set_meal/set_meal.axml create mode 100755 pages/set_meal/set_meal.js create mode 100755 pages/set_meal/set_meal.json create mode 100755 pages/shop_user/shop_user.acss create mode 100755 pages/shop_user/shop_user.axml create mode 100755 pages/shop_user/shop_user.js create mode 100755 pages/shop_user/shop_user.json create mode 100644 pages/stages_form/stages_form.acss create mode 100644 pages/stages_form/stages_form.axml create mode 100644 pages/stages_form/stages_form.js create mode 100644 pages/stages_form/stages_form.json create mode 100755 pages/stages_pay/stages_pay.acss create mode 100755 pages/stages_pay/stages_pay.axml create mode 100755 pages/stages_pay/stages_pay.js create mode 100755 pages/stages_pay/stages_pay.json create mode 100755 pages/star_card/star_card.axml create mode 100755 pages/star_card/star_card.js create mode 100755 pages/star_card/star_card.json create mode 100755 pages/sub_order/sub_order.acss create mode 100755 pages/sub_order/sub_order.axml create mode 100755 pages/sub_order/sub_order.js create mode 100755 pages/sub_order/sub_order.json create mode 100755 pages/user/user.acss create mode 100755 pages/user/user.axml create mode 100755 pages/user/user.js create mode 100755 pages/user/user.json create mode 100755 pages/wallet/wallet.acss create mode 100755 pages/wallet/wallet.axml create mode 100755 pages/wallet/wallet.js create mode 100755 pages/wallet/wallet.json create mode 100755 pages/wallet_extract/wallet_extract.acss create mode 100755 pages/wallet_extract/wallet_extract.axml create mode 100755 pages/wallet_extract/wallet_extract.js create mode 100755 pages/wallet_extract/wallet_extract.json create mode 100755 pages/welcome/welcome.acss create mode 100755 pages/welcome/welcome.axml create mode 100755 pages/welcome/welcome.js create mode 100755 pages/welcome/welcome.json create mode 100755 pages/welfare/welfare.acss create mode 100755 pages/welfare/welfare.axml create mode 100755 pages/welfare/welfare.js create mode 100755 pages/welfare/welfare.json create mode 100755 pages/welfare_deta/welfare_deta.acss create mode 100755 pages/welfare_deta/welfare_deta.axml create mode 100755 pages/welfare_deta/welfare_deta.js create mode 100755 pages/welfare_deta/welfare_deta.json create mode 100755 pages/welfare_list/welfare_list.acss create mode 100755 pages/welfare_list/welfare_list.axml create mode 100755 pages/welfare_list/welfare_list.js create mode 100755 pages/welfare_list/welfare_list.json create mode 100755 snapshot.png diff --git a/README.md b/README.md index a905f22..c57e3be 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# bsmall +# 本时商城 -本时商城支付宝小程序 \ No newline at end of file +本时商城支付宝小程序 diff --git a/api/api.js b/api/api.js new file mode 100755 index 0000000..e49bb47 --- /dev/null +++ b/api/api.js @@ -0,0 +1,71 @@ +let apiUrl = "https://www.ysd-bs.com/api/", + timeout = 30000 + +let request = (obj) => { + return new Promise((resolve, reject) => { + my.request({ + url : apiUrl + obj.url || '', + headers : obj.header || { 'content-type': 'application/json' }, + method : obj.method || 'GET', + data : obj.data || {}, + timeout : timeout, + success : (res) => { + if (res.data.status_code == '200') { + resolve(res.data) + } else if (res.data.status_code == '401') { + my.showToast({ + type : "fail", + content : "接口请求失败,未登录;err:" + res.data.message + }); + }else { + reject(err) + } + }, + fail : (err) => { + if(err.status == 401){ + // 清理缓存 + my.clearStorageSync() + // 清理全局数据 + getApp().globalData.userInfo = {} + getApp().globalData.isUser = false + getApp().globalData.token = "" + // 提示信息 + my.alert({ + title : '提示', + content : '登录状态已过期,请重新登录', + success : res => { + my.redirectTo({ + url: '../login/login' + }); + } + }); + }else{ + reject(err) + } + } + }); + }) +} + +let userinfo = (obj) => { + return request({ + url : "users/info", + header : { + "Authorization": obj + }, + method : "POST" + }).then(res=>{ + getApp().globalData.userInfo = res.data + return res.data + }).catch(err=>{ + my.showToast({ + type : "fail", + content: "未登录,获取信息失败" + }) + }) +} + +export default { + request, + userinfo +} \ No newline at end of file diff --git a/app.acss b/app.acss new file mode 100755 index 0000000..e3f80d1 --- /dev/null +++ b/app.acss @@ -0,0 +1,74 @@ + +/** + * Web唐明明 + * 一个梦想做木雕手艺人的程序员 + */ + +page { + background: white; + font-size: 28rpx; +} + +/* 按钮 */ + +.btn{ + background: #ff6600; + border-color: #ff6600; + color: white; + font-size: 32rpx; + height: 95rpx; + line-height: 95rpx; + font-weight: bold; +} + +.hover-btn{ + background: #da5700; +} + +/* 导航点击样式 */ +.nav-hover{ + background: rgba(0, 0, 0, .05); +} + +/* + * 水平居中 + */ +.pack-center { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-box-pack: center; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +/* + * 文字截取 + */ + +.nowrap { + max-width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.nowrap-multi { + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +/* + * 分页加载 + */ + +.pages-login{ + text-align: center; + color: gray; + padding: 30rpx 0; +} diff --git a/app.js b/app.js new file mode 100755 index 0000000..41d746e --- /dev/null +++ b/app.js @@ -0,0 +1,20 @@ +App({ + onLaunch(options) { + let userToken = my.getStorageSync({key:"userToken"}).data || null, + atTime = Math.round(new Date() / 1000) + + if(userToken != null){ + this.globalData.isUser = true + this.globalData.token = userToken.token + } + }, + onShow(options) { + + }, + globalData:{ + isUser : false, + token : "", + expires : 0, + userInfo: {} + } +}); diff --git a/app.json b/app.json new file mode 100755 index 0000000..2d4f2fc --- /dev/null +++ b/app.json @@ -0,0 +1,60 @@ +{ + "pages": [ + "pages/welcome/welcome", + "pages/login/login", + "pages/index/index", + "pages/set_meal/set_meal", + "pages/user/user", + "pages/sub_order/sub_order", + "pages/enter/enter", + "pages/find/find", + "pages/set/set", + "pages/shop_user/shop_user", + "pages/add_user/add_user", + "pages/order/order", + "pages/refund/refund", + "pages/refund_record/refund_record", + "pages/welfare/welfare", + "pages/welfare_list/welfare_list", + "pages/welfare_deta/welfare_deta", + "pages/changePwd/changePwd", + "pages/payCode/payCode", + "pages/results/results", + "pages/star_card/star_card", + "pages/equity/equity", + "pages/equity_list/equity_list", + "pages/wallet/wallet", + "pages/wallet_extract/wallet_extract", + "pages/logs/logs", + "pages/nuclear/nuclear", + "pages/nuclear_code/nuclear_code", + "pages/notice_date/notice_date", + "pages/gas_list/gas_list", + "pages/gas/gas", + "pages/stages_pay/stages_pay", + "pages/stages_form/stages_form" + ], + "window": { + "defaultTitle": " ", + "pullRefresh": false, + "backgroundColor": "#fafafa" + }, + "tabBar": { + "items": [ + { + "pagePath": "pages/index/index", + "name": "工作台", + "icon": "lib/icon/tabBar_icon_00.png", + "activeIcon": "lib/icon/tabBar_active_00.png" + }, + { + "pagePath": "pages/user/user", + "name": "我的", + "icon": "lib/icon/tabBar_icon_02.png", + "activeIcon": "lib/icon/tabBar_active_02.png" + } + ], + "selectedColor": "#ff6600", + "textColor": "#8a8a8a" + } +} diff --git a/lib/icon/add_icon.png b/lib/icon/add_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..ea2941b72eb0134f60161a7b6b3c7b7d7010c306 GIT binary patch literal 1899 zcmbVNTWB0r7@m}%p#_&TNq6ct!-rsz(M4aS(Mj|IJNY}JVk11oO&UmaEg^c1uZpZ zqu#Nu3>+JTl1jDhCR@ugCeV=!$g*BE9Jw5)d|nyPy=|5veTX|4r#d`^WS`PaCQKWV z5hhAQJ{%!q62nJBVM%Hs1&$Y4PGtEI%}3=hCkp~ueJHHWR&#Ps@~NsWyoyr=*R^Dp zEtN`4Da4p|p5-M;VmW~o1R5h~XVh>(nKqnYjUkB~Xls_MnFi@Gf~-00#wl!R#Rc7} z(;7}SOgLa{8CWdOaGpy(P=$4zHEb7s6W{Hdc(S3oYMIClcMZnbV5+!0Fk$ zhfH@SqP!H1(gMT#<|>MuHXIii5T%oG3P*_1G*y67%WpEYymlx|@+g}YZEC3^qaEoOr&m-1rMwRri z|IM6#wybg0;J6!l(|Q}mi+UqR2Bx-go9_E?;3h#d>_{g&GUZEGFP#Y-Ae&zUCqrG? zT?YeGQz3DGZ{G#+&>Pl|-#?r`KJoR(q?>BsuIkIr&v&l`w57!>OI`+@SmVJfNzF!_A z&dwjYHP^QB^sm9j<_4cAMI5{N?dR*lUyUhm5xu7`PX-qrJQb_x_)Qqkz4T?^z9X;R zSbXpAliw{JNHu)AFgerJbZiT8;a1}xn;U)L_$%v!XSN19Z(MntfkPG9{{^;6WRL&= literal 0 HcmV?d00001 diff --git a/lib/icon/arrows_dow.png b/lib/icon/arrows_dow.png new file mode 100755 index 0000000000000000000000000000000000000000..1c0f48798857750d3694cf54a8dc22f537f6873c GIT binary patch literal 1927 zcmbVNYiJx*6rQ9pq|r!98;BL@IPuY7XXmxAxydGMcek6>Y?^MCB>oUGJ9B4u%>BBaizEFaFA=RRcykUQf(*0-JeNtUCdm1SJTE|FdzvEfJjCkv5q{es z-W%=21DXMGm%~kpjMIgCcn9O=oIJk`XKBVu(O!z-NX8AEG+fWVL}0;a)M4V4%(KK2TEcIrwatiYMBVjl(2eAvotfM z-G;ifyuttqZ8Tc4v8pebOv!|4g@%xfLO@nUoAF^CQZZ<1gN6u0L&(hrTa69^1{5sK zh-+H9n5fR8%XlDQCx*wjMg>t(Z5@rvcEO-vK_9`=EKSlZNxS2W2e@2-;hvzqfTowA zQB6|h;gwJpL0!Pf0*+n*MRg+ymhit|Nd&THWCWyI$p}eE>1vX|OR)q2Ev*^IF!GLD zJ|77LIt@)$(rCeqg}398P{7UbZa2v~n7q5uD2S-0C8#2d1bqaGkV8=<;PpCXf#Eok z_wp{%$?=dBXitK4$-GR99%n-4OZ$VGIB3^FaleH2bG*n2UfM~zSUEvDc@HELk~cxh zZjZz{-5y#>z@q(~hJwzakiKgk`*hj`1lkl6rFOV*e!Ad5VU$+ze9Ztsw9kT%5bYv> z5>c2|R*Asc6fDtZQxK8fp)QtSrY2ii!GQiGiq_hSkGh=#Qy99l|7*+OYW}ZMtat5y zA;4lvP?Hd~Sc*_+aq0oj3|E>!+t0vMv+$bA)?7{Yjr}i(L zO8vT}KKSLEiydagIDOyv^Y^dI|11iRuh+MA*H+Yg^ZWT1k6ydE=iJA~o;9e7ch2_D zi({L@56#Y;JpM^$ZVWrBbZ@=VX2bqJJyY(nTQAJLKX7H@$Azol@yi<$ z2er6+=fJB*W$fi+b*|~%x5hVNUFpW*^!(Yb&7+Orjc@;%nLJeeSNDhHt-uPmGn`<4m4w!i7a Wul6a=eea#LXCtAG;PLH!d;bO98+Q`` literal 0 HcmV?d00001 diff --git a/lib/icon/arrows_right.png b/lib/icon/arrows_right.png new file mode 100755 index 0000000000000000000000000000000000000000..70e4bb4bafa76eb9119d7d0bbdb7fc5d6a547f14 GIT binary patch literal 1718 zcmbVNeP|nH7=PQ)uvI!g$7)5qUB$L`_nFVTHSOA@wwb1hZDuPt$mQ-$ay0kRyX%tH zTA~zZW&2~pKjxUwO;8Z5=)|#&=>$P0QV}V&42C*~Fqv9}wN*NNFHJ(H^J_^i_ul*d z-rw{5p7(j4n~wGM)YUfB0s!j5y`g?|r|oN#6a5cXukJ^;&3fNnIQyC(U5gZ)>O=96q4Gg6~K|F z>k<^bLaUmkFrk1^c|oTblC~ukfs$Ck>7z!rXj~F0n1u>dEfZmx3Rcf(mS$$OzoD)y z-(&!VHWI1WxTP?StX4=7=E5s;#4C!!8&SEEvF9nxzSvC1`J)@$nuH&$wD?KTp%^(1<3< zsjAP2*T4mV8jlY6dclymM`w4+n!W zLrck7v|#r4bYbD{pqJsiUVIH1#lE0QkEs&#fdJ#PrC^Zn@SRH z&IgI4!t(x*CXU*9P~I>7&;3zDMs+A;Z=1)iPCJ44UfD!PJ65Wn z0XR|`Wo4|GGrS<$wGhBXI|-nKm!{?0j=(x?E&~ziKjg(a%+yj=PB36+8b#~BB_D+p zPF+-Q!Cdd zPc$5FpL&awfiv0Z*t8vdE`#k;=1+&5i348+>dx1{xwD}#a?dF@xcu-VZs1_vsG7P9 zH-Zkj@4J_siMA#(gYe6fy$(QMJ$-IVGr*0-ZBeFc?(~nbiR%D}t?k30a3Q+1SRIni zJU%f?nJ4#NKIs7YubbLiL1Fd7CGNR?a?A7=S6-hS%S;%Bm)bu4q^Snv4<3v6`#0zH~-}P@{yJAw~g#w=y|2X|5?X-)y;+Km1hec=l*H=wYiH+_M0W# L-4~keO1$s~f{8X0 literal 0 HcmV?d00001 diff --git a/lib/icon/enter_code_icon.png b/lib/icon/enter_code_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..8c5cd3266854e877cf96ce8a6e27c2e98e72a038 GIT binary patch literal 1438 zcmV;P1!4M$P)Q1Z$ajEr7e~1bxcP zy-KN>%PV$hk?GcyWdaNi4$ch2aFJ4KIWsSmhlnm{5d9D{KWB`2IjKDeg4N8t8Nlr+ z>O_1EXh>^)FpVS?z&ZCkfCsZ)1vBqfO6~SM@9nI<(r&F?2VgT1EzascIy(AzcXzkn zs9!?>=iDX$&!i0S5r8+8QhO_v%I8@^lG^+G`)3u4#bu+Tqc;)JG63_E`Z4o*W6aK^ zwlshb04$1}jsZ9f;7b4}nE4Z9%xA5LPV=$WUPDAn04xRYP^|ABt@WC`0335zku?|F z4O6XFeWlc6QQU)CYxyYt&(bn52{4hYOlH72ciN|rwRUNtP&iqsRKBUt);XO4-}k4M zN~I40Tnk`048!TZ@BbTzIA;MO@$$jDxh6Oa!^?f&|M{E;ND|M?Ta7VYXJrcczJF1v zRJyxVD!tj!(eZ2Au9HW+#5p5VD7Mg#G4q;6U+28y&j`S_ZQCvh!|<2bTTg^&MSQye zeg`l^f-&;oF&GEXqItDR3Jba>5 zDvjH18ZFqQxX!t;@tL{b7}J~UEM%>9L?l;1v7K7$^^F#30)(7YGv#ykT0o)TgAJAIgk_I4c*4kY} zB-xY2KV*zqo#j*C?wpgizaaX3KxG0l~RY9`Rd5~c(GVqUMrX65!P&9=bRM0 zRz>~yX{~F2=Ld*(gZN^WpPtfMKhmtAJpG(=4+D5Q=CeU-{Zd+t%(_qnAwebhDP!g? zW6ah(;h(OYKTEu{Hw_R$NUf&+TQH%L zOArLBWV?-teOGIJTQlNw1BgQq1csTbbpv#2tp}SOwARl#_W*zwV}8FC3We*+$m}TF@W}Rx)$_>2wb>_ZVZO+MH_DYIVL+>QMj!5VwU|YbjYaZ7l&rnOMTiQiYxy z8%?SUeOl`sNeY~EbD3E_j8e*hAXl6D(`( z235U>h_(>X?Etm`xOM_lO;pYTIIgNERP_`QeQJz3SJxobRS=QAs`@Mu-Befizm!+i zGeq<NuEz>``Xk;p*2JfH;o7Q`JuG`nV*C=u8wvH@kq~1V9|e zPpInaMT2RYzCc7@sp|1wulI|K!?t7wgTXaKv@QDp=ojr0(Vi%Z-l+0d34pbBGZCFC z7|ICfF=jqmv>w~9ops#}aPr^{lf1VBXI2Jq;}h^qc+jJa|eiPiOCt^I?D zuE^;fX6D@!190HLfpse@E589)mjmD-W6b+?gPVrDwe~?GdN1ee!uOy_@;!hXM*2jwGm4^5CIY}(`yvtT%PD`z%nz((Ohldp zuxHZ1>*%TKOXI3gL_Pp;f39Np8)KfE2!P_;&se|L>s`XQnQ;;M9l(Y>13U+K4w%W;;Rd|bs;VbJPlBEVJqdaeoW+l#tx|ad zV}1(wDd4Aop8|dg_$e@h{{|aOu2xn381!S%k3l~M{TS@}7>wh1QB}7CxN|rHz96Dw zQ53z}bR=|s3W&&$0InO8=ugaieG?Em4Zs?~U6O0rK`a+wItze^>;&+UOA-L?W9Iz% zL`OBCvjA9Yg@_`TOjI>C#;}WQQKqv1)Vym@>&$;1gw6us(*L7Gn(#np0T7Yw#Cdk| z+-2=%=EE+6|C<)b0(ESIiOWCp(RKy&0PN49TzUS!YS+rH-qgA3GR{x&eglAg%sdz; zUv*YEyNQvV0lv7}2yj>l7Qo{GHVsYx4B$;>HdO#tJzoRh9c4FLN&)Ei`&Ec^;! zea`VBGasr7#O1lQ_LfY}81t=*e3gudJPjcKI(>e5dHL#ozyJ3{6)@bbcK|$`Gw>HP z=K-mTYiiF$tO0vnfz({R4jlnr>h&EN1`!002ovPDHLkV1mY?B{Bd2 literal 0 HcmV?d00001 diff --git a/lib/icon/enter_shop_icon.png b/lib/icon/enter_shop_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..a84350e9505668f6c7eb7822df9df557455f3878 GIT binary patch literal 1259 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 AYybcN literal 0 HcmV?d00001 diff --git a/lib/icon/index_icon_01.png b/lib/icon/index_icon_01.png new file mode 100755 index 0000000000000000000000000000000000000000..20ee013ebe64c308d751ec1e52c74147a3332aa8 GIT binary patch literal 2305 zcmZ8h2{e`M8vTwT!$GD*Ny?Cv)h$T_b@(+Xsmw#altP0t&&v55Oea$jLMKrugcOnt zM>vWTNyte^WXe3-*I)O)>#n=j`|fA&XYFS_YrSi)H|VJTenI{f`~*P=>K@QBSghfH zUtZ2dWW|UEFBUF4t;1RbksU^!JITGMNiGKawTaAH>0W~17(1$Gw0E(IGX!i2oc@K2 zJ&H%2_}Pt%Limu6(ik|3z()=X3%IO=p>Lq=K~*w} z!a!AlvpBvrfRzmz1)ef!e+xSjx*O3_iXWfhB#N;Cyu67E{D{)W!}I8GN2D%hCg31| zJ~lGk@$NA?-@}dr`GL5hhPfFeSYqS{p5MStE!1XWeiji2@YEMqlyTn%?{hFajW`p~ zt#Mlqai%B;!C(iH?eL`<*Hsa=7vqCyc#h^0R6Rgb5k`7Z{|rxkkm-r9?{LQe=Xh{w zDI)fxEDm?gF*}71FEG}R*HK8lh+HZ@zQj-$!uR3a5|rP?c|Lsm05>Vj&!H?9mG=>E zftoa&=S6EdD(>Nt1H5F>QH#a`+&clkb*M zo(*0DQD#eW&AF#c#RofN0=u4B#F{)`wtaY0=Nf|GcGcCf@ESCtk+JuY^O=TiAds04njO{b@YLeZ0r)037%^p-K zXuW$k;d}Mmo`JW!CToY93);NwJSNUarg6~jcZdI6L)^M?Eg(!~=Pey>DT zTsTSVr}t8MZl$?XLRCbdh`PPp)oK#IOfz>ECvW7DCf}Aj^7LX7O+;8hPHdmVQ6(Ei za@E^0Idbai&La}xdu-N{s~AL?4pm8*JBgBcmfbMvFg-F>);Ms`kXiXIYukraUiZc2 zj*f{-{KyI2ZUtyg>bYxz&XoF3Rf6}@fq4cz68!LA^Ka+1K zSyVDz$5h#@I2Bb!TM)N>h;-n)g7lY{W0Mm7M0i-&{FtHU8;EKBbdL_g+lKFpdHK}l ziA2*1E4i;zUPDoHr8GSOih8M47`2VhJ(;JoqFl}=r{ux{%Osejlt&wSlF^sHUU&1s z7mjyKWKP&`EG3MDvQmbRrYrLUvwh9CM9eXpd<8>P@7R!bHu23qPAreA4AyA4 z)UCXY_nW-ltv;#y7fk7UG8zwa&MQ!ZI{c}_uCM`HV2Nd6Vp1}E*!t1UH* zWS2;-G!^G?%y1cL!y@r_OKwmvx(>s`xU6?gRTAG?nRZ zJ#-%FezZtwt501q|2FM-gyMpyv@%_zw3DHxKQQ3vp3pIeCgmHgFImL0GU13eTPJqA zGp}oG@Kq*%kF|lOD7~8Xr!zlm30F6{j#M8(?A7uZ;>e)TmlT=>aP_FLn|bQa@#JXJ zuO9H<{WU?s_AE~v4^>8+g9{BIRCl_Cq+;V5(qC(Ot(N*9Y`56M$#<0InvyPPuPsk2 zUH^9w#REBx$*!et%(cFj-jbyGo=o8hvrI~;aX#qj|FFLOxNYWg{|jI2Xik~>lJvRT zkLzW(Y^fzvlz!#-2Vc*ClG;4SJ;itfhxfiEWQt*Swd-l4W#@R5=XB0ZUiZfoptCDn1mPpL{$aKNlCLbre z8dKLFK8@9bWf$~X2Wvw&d3f}yrI==#Yko8~&j{0qI^~qbGqYZ3@rAKRwqtjZ!eGPc zj@@jzGIvAvJY+8{_lJ`IE|z7m|sDBWBvk zWQM?D&Z+}aYLrN$zP0mSwdBZ$(<`3LrcMh+pV98ix^(Kf7SqV7Two?8Q&qqv@$;n* z_L`3S!bXhWsY_Z5s0IjBMt@ND^bFjg7rpTFMAgOl%*e^Mw#9Fo(A}%Alc{a}*S`U$ C!Qwsu literal 0 HcmV?d00001 diff --git a/lib/icon/index_icon_02.png b/lib/icon/index_icon_02.png new file mode 100755 index 0000000000000000000000000000000000000000..007fdbd5f7a6a7f082cebe2035d4fca895273f94 GIT binary patch literal 2131 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 literal 0 HcmV?d00001 diff --git a/lib/icon/screen_calss.png b/lib/icon/screen_calss.png new file mode 100755 index 0000000000000000000000000000000000000000..c1044e17af7e88de2f314443913fc86c3618f89e GIT binary patch literal 1605 zcmbVMU1%It6rNJ@tLckNkSb-IMof*f^S`@u=~$B8ZL+iz*UgHlSn2G{-Q6KOb0;%5 z-A%NF1Yfka;FBn&iiKiIEqSw0Y7Hfbf21JdK9>3<#ab*PeUNx(|46m|bztV+x%a!@ zIp4YGoHw$Q;{*LW`zeYV$V{YiWPB=od%MZ^tuxOnWa#rI4h0nT&?Diyje76YqZHLe z+xclctsev?a-xQX3NTu8Jc6dEz58mOVa`BI7huVDHRk6_R~Xv1H0DJ`=XEa$%l5>A z52qF;^X9^gsanjwXX(8)KnNU&4Z7x3+yK-xrojuyJY41&x&gs68Z#Oiq^I>PokTvQ zm1vAL1zDlvYE+0xvZ_8qi@cEF_yi|NtPle-4@8k}Jq)qtTSbsd?Qhv4e;QN9*aI9_ ztyZH|DT@3OC#b5*@ggUREJ3iryo-$*>jt~q3@I3xzU^Tfxpc^A6wn;j7~*MDg5z~) z-JlgF5-_f2c$^UBLrD#wWp;4hoL^}ew@eOJpaWeT5UkL_dS!%BP)2`4-Pyj!012(G zcWm6(7su(C2ypr+kb9bo514$nm82NdGD(#EPwq2%^ z$?#%SdRRA1+YNQ>*>Vb|3=B0!Rt}OSRp8f3ArCs|shU$ab z>z}Nx4Bv{p7Fj>mee=VMzaE?VdUfrn|U_;jVo;>@IGetX=*1%QsJ)wl_uP!t7?(Zv(x;(yh0p9p}SFpGi-qE{q*n{sReB B3q}9{ literal 0 HcmV?d00001 diff --git a/lib/icon/screen_icon.png b/lib/icon/screen_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..c4fca6137e390ed08c9d1ba2817b9ce1383c6605 GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGEa{HEjtmSN`?>!lvI6;x#X;^) z4C~Ixyacjq1AIbUfr9@>!2pH8hra<*zzC=-3GxeO_|BtjE|dI`Yu^I1U#+<_;@|vP z#%3&~YU%N}_@ef|4wm070^C2|GI6vOt_Uw`7y2xlHdljvvQ{nUo_m)be08`#>D0r< z7YnO1+)vxQ(@UIh;4-0PY2O#dBLM|ZUT>Urt$dT0q}cU_=7T5JKMuP5^Uj(J(hAJm z=j2(%$R+sZ9BO@j0GK3#JY5_^G|tyfPOUx^z|*R~L5!`Z*RX_V`_A29F#rC(YVXL> z)6?fn-hTeFiZAC+-qW{#oB#jn_(iGqYfihs_T}wTuehDK4hM8j3KPHl>gnm%>hjjy z0hSLYUM`B_lv}d7?e+5W-wK6t7i>{es{F2S;p)8NdnykC_H@5yi7HBy*9a+%N^@8c zI_1E!KwD2~gGr%@3qp)nTe9MQu^H)>LPxir6YFkpUFiM5kNtK7>oj@B z)qL}WPxBvW<@?5XTF3tGg9!G|J1fsI_KWE=?rpMQbTc)%$6UO5fsdj^_EifV-CL|7 ztB!Xa$`dNBl?_<1;9g?o(yqGqZrv`&=N@QzGfzw7{k)SYXSa0Uoo(sAFOhk5&T+GE zWo43cf<7+eySa3k%&{6#^~u+C8*g4eCiG?cg@R34pVt4ro78O;BiOTC=>MmbKlwgJ cdwTyc=&nmPu)Q-`5*W`6p00i_>zopr0KvIUo;@Bi^62QYV24MN-AzJB)}#mt1Z;x{nSzz^*lZS9O|oHkBLSwp zGg>4nw$@g$604MHl~!w^R=A#WvGJ%_!JgL{w6;cRQADAP_0igCZxbLxJMCTDoqhZt zzyJ4rzwb5cC@#`OgeHXYc)WPH0GUFm07oR5K$cvHNW~JloDYa#LnG&pFSqln5b#-;ZIgJQV17L*|FO#;FI z&McFE*aOpI>uLy2=>N!zX&6IQv2_?tb>J;au3!F z?=Iut8g>j1rw%l=JeZ%JqZx_X+o{o=-pdZ04{8sd>I_b@7h}!3s2!0FI{bnp!n62Ao+~mOh_fffErSD9aOwfir};^Yqw3ld zQ#)?F5dW+@K))23%+3}DmPKnfh0L?O7&r2?MNpe464amC{$9}H4eHfJW1(xp>$k5u zkZkMA!xlE*b*Hx{J>LBOk&!RbnSUQjesH8?f1*0K>r`{h!X<0=jRg-b54{x0^x7L7 zyD8M(R}k8{xe`Cbww{l?45b}>#NP5%G}PxainD9ZJzPB+qjAu|_x4S>8S_v`JKt=d z|In6#Zm?CHe#PiWA(}RWzfym0!5b$URc|2SP)be)96^d#q#ld zFi+QeusWqyv$FqgYUsZFZx%$|kB-{4GU4vF6 zZ>EE7&6iTL_S^|!lY7b>*rPY&b1F(--kH{Qy(#x={E3c(ZD>5$a`~)O zd0eqJF#;JqsgpFUaH*4b=?-tXKD0V~VXS)hwG$E~W$n`5J?_N3*N>-uVJiJc-PWDa zcZP(XB=wTxqP44uPnf@CBsl5fru65>m%eaJ|EKQ{*(N$PiLJ{*_Nf)tw5->z?pco@ zRf-$E8)Enk6B*|)*K&Gy)8z{aq2{JU`!;hWE#dQyi#;im-?t4YJsc03UMzQykB+zzz4)D!fpe{o^=u9LamjPXaV%;bV_HBgghkKO*R~J0=c<`X}tpyEZ7ozxK zja%P#$0NH|_xCc-uW4Wd-{e2q-Q89Ow4b<*9B8@YIGkI#nGGB|b8dT2*r|{(E2X#? zRR8{aJ-sDwYzx>NNjg6gebnMnfKlJYZ2Dm&;}e&ua=E`9ni z`o|`*+k8@t|9$N02{LE@X)rcj)`xs)|7?kUC}+C5iCudJg!Jo&HKE4Ny>X~LQ6POM}1 zg%g0xY)8}&_&r;)!)m_be{-~JW1s2XD)^s$k;~w}RR%XzdTYwXvu`}JcqxeS(iFG0 QdH-_?^NQ3*ax3ls1qOs{2><{9 literal 0 HcmV?d00001 diff --git a/lib/icon/tabBar_active_02.png b/lib/icon/tabBar_active_02.png new file mode 100755 index 0000000000000000000000000000000000000000..bf8072e22a96777640c8cd967ce43fdf5501fe14 GIT binary patch literal 2134 zcmY*Z3piAH6u%>B7^7*8LBzsO*2;ulw2W``>fV`JLbIoO92;Gb~#h8dhYl2n0b`3v-G+ zxV!#$p?3g#%(6iU+ywo})?^4Oy@vUGVkd}Eq4qRWsJKUV8iEA!Y^@xr0NnJ0HW}M& z>^DDX3kNB1yrE71Z6T0=d#S2w@@MoZ99iAY31r3ULrZ0JMn|0U#(2I54uEeCGe7dVcE#OTaL|0owo; zsE|p31400TgRBA$5ghIUKNQ>-SU8Jt;PoOQAix}03*!g^8UX}ujY#08;3WbYG6^h4 z-W|-@Zs8>(2wV*r6*$}10zz;A2ed#Wumd{6D!2k{K?cs27rxBPzRpMB*AJnmIjskW6GpU&zq`=iHZxpQtT)^klozMv-;q89sd~v{r$mH0f*D}r(D0i-k_0Myf@qZ#eJ_@>J>j9(I@p~GA0kL zjB*ama3zWJqm^vMPkR2LzeJut`L|QVl2&y1usitK`dLuOj;_yUU5C8I$v81Vv_fL8 zD$yE`nx3r=$n` zzTC(N-5hD1BB{KSlX~F7wRfG4&0oKnKl8qECTuB(gU97%atnLq_+#fs1$j<9mU)#~ za$3Z}>rq1D{$GD#@K{$1iSoSMS$>v1>npG9w<^+DYV2vgaq8bTQu_M0tk+Z?ZzM>g zC0?CSPYudj7AU4AH{RLZ6LWOH*J{_hUv=W9`pCGsjx@PQ=!fH4F=9=eeNtswxQKmt zqv0Gl`a(+C&J~&^M|ZJ^fh4Fo&Uq~*Ci8o&vP{5;}G@Y@kR32~paClwScU^3;t?>Y)^jp4BWKLX!>=nBU zOYPT4N}p)E$14i-nxD#$Z+~BmI%_5>YN`E3^0MyPjd-d7F8k*idIkG9lOcfP(ks#( zd&$NUzP4B!Z>y|1QQ=Av@#wVRk1OFbjF$V6^*t_$v;Bzuw40{Fly3OzXoF_FYJfk4l=3J0IlTsV8Q~y-G+DRwve7tpMqxlh^ zPdAF{6-IrSuTBQ)M=Gw**7!Y`FihzRaLA2WPO4i`?6LN+I>oQ6UgVv(EOP!Mc`zfL zLR-?f=T&SmJF(J-%2wbW-)L$U8gA*hvrt7G@J%{w@Bu4Qe}Cf%$E&QgAz8f4B-uDG zINCHIrxc?|pfKA#s^jG!w-b`b9K`%Jdkfj2VheWi4z!{_NhEib@=3*X)v2g*+O%P% zVK|d({Yq^w*GH1ooU{gA^0JmujPjs1mewO-XJxBK=hzW$;fWgJEmlz?=?<2+ zO25m!vErd1{aKBOtRDjq=Z*Jsp?M``W#X)1|mEDxg*_S zXOF2i>vu{F{OY!Fqg5Mk-bFRLJoXf)Nyo+PXtsT$H!i#}DB5(pR0em|jLLLrCw@i| z{8{H@>rI+<&_ias|MJqSL)Bq~w9u>NFSNZy+GOYkIu~!ICA>|FHF>O#?TP7qKI!y) k;}2_i(L?CLt1Op+-{CS(ExP`8Z~ z6F{rgEpAQ3wd=0R%GoummIJPhO|?}Ic*L#NLoL!;dRhgsuGpjN?u6H&d%CaY%;TT` z|NeXLcmMC+6L(2*L1e_T2o{SKsVY>IGVk)>9X6kNR{aVVFt2cH;mb6OwIC*VKgW98 z6VGDJ14vD|yx76Ih4%+aS;T8U>?Ndu^9xLuCv%N2iroYPFqkAG;SlU zc9OCHL5rA{s)ZsHYYqiZZ;arD9go!W{ z7CX&gxieU+k+M^?k@`2LXO_R`fJv=dJ>%mCV= z8y2v6Vhxvz!a1lgXF2nP;Yp~P(vkYQ*-#N1Ml@Uj3JX!b=zCB`H#*FY{a3IKNA;A= zj4`Z9GiD$ltHl5UGr2_Nl!>x2j+yBAv*%TEd5MkElO|??E-jD&Dy3Y+MMNStkHeh^ zSFJ`>7TS(ka6+Y!f=q@uB&kCYkx(zt>j<`1&xhFpotDQ&xMD`e2!iRgh(O2H>ZkWB zD7-qTgX#Uc|8xIp8_ComX8O@~g4G!m5L!sm%+c0O)lV5wH8nDkz=UQ{3=h_V6vTrf zAavl=H2I@5Fln~dNH9kKgDxgvG^MxKVm4x>fyvhYCO(K^00m2Tk__~(JSWy>mH9NB z=^er0Ow(dMX4)QMVS1g7X=;zRj(y5v&HYHFSgCQ`yyv|{6|G6UkbCjZ6~Yv?WGFf- zCE9eO9EhvAt1y`~dm|IZ78%doGfK2&e{&sk?CFK=uVu=5ekyYTns{)nBCT;O_i6sS z$oN3+@U7ggH%5ni-Qyml-Q&4FTHB}jNyO_BgUP#C{;21HcxOudi*Se>&TQZGK79Fd zdWE|?(4YnM4`aq%#{&{yve?<-jyuG9hUan5A0MnA%FtCja3zroR)n}ud9K9v#6L*% z$qMdoY&q8({f%p_qO2&&yy4QBwO^)nq&`0N+k=$~*@<(mnBnw|2fhmHeJP?MneKAt zyW1etnWu_)rEwE})U@wPv;@dH67Jk_XEBsF5fl^Gtm}s1%b4x%w2+2A$57Vk;rKO6 z#r|zuB#XT-N(3jf3a%+P+&As~_)*k2Qs3ad@t(A|1t-7KthDy=ejO(C(eJPtL_6DJR!Z7Kcd`! zV1Mh)e0ghEU+j)s#M{Qeo5wbcJ$e4U4gkHyME*)EGkJz_}C0m+(0m z=RKiPvDK;U+wvPEyIeK$@veq9FWf2g{?1)JlAwI&XM%*bA#ZzG*OSdT*TWhIvjWvE z`PA6K-OJ6V{xXz^tFHBJ>u}udUrKucQ9_I3)6IKxWP)#3fn?x|_cmldhVFMCcNri1 ziW1a+aF^U%4lav&p3%#!EAi+4OLU4qRFt_ULqIW%ygK*NJ5JN9kB!+twui zi9eqHaFr(-?~3%~8XjHkNX;=6xN8ntvD#Y-4#*Mz7?b0~amaTtn z3p+Ge(OcM8U)Z!hyD!c8#MS?_wXM4O_K_7X=k|nOcAklRvTXfkpIGE_ev{UIv}yN> z;&JETyW!`fZu`MHoc{z;IBzll literal 0 HcmV?d00001 diff --git a/lib/icon/tabBar_icon_02.png b/lib/icon/tabBar_icon_02.png new file mode 100755 index 0000000000000000000000000000000000000000..9e47452f4f525632bea265070266cf4560c8b57f GIT binary patch literal 2132 zcmZ8h3pA8z82()v%pg`-gd`zaLXz8zakmT_irFHRX<`PsBxy@A%mveEH(O+>#YXO1 zM5EckMpOui!fqOJ37eX=GWOg3&Y9EM@0@x6=Y5{%eZKGi=bvHv`+6v$wa^HHD0z9h z62Ue2-;cZusP5i;6u8J9#}n`fQpdr33f};FsRW{jGgAFT`z?Y<-}LthbOYr1^XC~1 z28+dFGMS)407x#E3m7(=&EaqW03J}Yv$LTA@WAt*ot2f91pr_&Gc)OQIM);Hc08(!hcw zbb=NDuqrAl!2N<2-aGUI9{K?(k^Zy)Ti~Mrk|Yq25)65m29n_vRAD$w{+t0=^2{at z=KzL)CoBmB49J1|LKR~0eE|TRa2y;Jo&>6ZgvW!kkd$C30T1Az^!Y4cU^oDhttGQy z3hV_W@NU2fowu$5VNEw`;)LyA7@lmz?;32K%=2kboZWJ%P5-N3 z?nV#otiWbH;2-7wXj&CnsCC_~n*0q<{_j0bW0$QdA;#@m;sb-*=7XOfQNyb!TN`kDw@In0aL3pTJ$baW3Gb+R*a9!8HY}(% zjVBsQUEnpY2K4k4q0R}-8n@`4?R21#TNhfouUvg`xvPh~w_&YOIBiM!(3GH@oDkby zZ5o9m4HD%Jz2n?lc{)Fgt=DlWkEcB*Ki&TkDpFs=8-AswB)|xga{vG99dQijr*eHdUHf!G#)~j|L_x%aWs5HA` zqMqF^vH~8d-(_nUS>d->{O|*rHg(h=?*aryJYD4NvY>>I*(|k7icgAqHH+tOF})Zk z?bP~Z)gr}4hc>CDnsGeHGjU+&9)+=~AA*$|5{9->SNqT++3>A&`3N7IG}nH#2sv1; zqMFfRowlzJjk7j;neU}huJ27XnHw(C-x918!M4eyE%ld}dC=KI^S^+Vd zD@#$=#R_k+?E5Ec6%hriTbxj%2^~RrVymSv$J9$)m!jP$oz-+IeLA6oFj1A09=^fw zlb}<0{YV`}?!tRKqBzxyG513vj%ZXH3^q)b7b=p|pUFKdlXGzn&1Pb~Y|e=4lNur% zSBstmWzYAa%G_%={Cr2QL>SBYyK*)+qA&QG_O7d}u>-z-xkGam^;6VS`Rm3VDS|Vd zk@W{obhsbe8tSAxQZsYnb=N|&iGx8L%GAObEf8+mG>sODYRWf zHRt;B#qFdAk1~YwE%xKI#z4xQk<+wD5>;_L{+q~xftVP!24B;%fMD)Jy%cg?2_36w zLAV>(aFbuWIF;ELJseqpeq|eu=|62XQ|(8ovZ~x0b?m#E`a7m^=4@)86ZTEq$44=2 zs}O<1pvOR8#Up#QEYtaw&Wwl4ywR(HMTft)Xnk>mwmD}Mn=?L9*uWwtQ;}^bs%4M1 zjs+WOHoG}%^3pT2=L>AeU^%mXo;DKWmfR#{-f&;x?l8W5yTDW3h(MFIvCS+L*fE>^ z7S;J77DXM6)_L?xr(Q?fai(_=W4d);sivMSnQVS)>pfa>#a@L+luk6#Pc8K^R4q;`_Cc-ZyQ1)WuF+7V%z=7dSt9 zB>8OTzW3RrmM8VYx8J!LDtWfKS-2=Wy%`{qZ@W&HuBkKdclixd3+0RYt@d? z%)m)mIPX(V5uC%MFQ(3+GG6aHA K*R|R??BYM{G!t0> literal 0 HcmV?d00001 diff --git a/lib/icon/user_btn_icon_00.png b/lib/icon/user_btn_icon_00.png new file mode 100755 index 0000000000000000000000000000000000000000..00a1afc09d592caeef7a397a2bd3b0e20cb4ca82 GIT binary patch literal 1934 zcmbVNeQXnD7=PP+IEGU;2B`zh<54MNl*r0Osx&S=2*y0!s>UtDr`@4fHu z{XNg`d7tOG_1>1oveK$j06>|$$>oFZTJ0_=hR^*%=SBD$CpA5(05E={cI!azP6Gf% zh~QtSF7(W!Sutv2I5EhZ5>W}F0hl!>Au((RuOdM{EW{k>PahmZ5rK1{tu-FpBRTnY zp{Yma7xc9F*`5xT;?Oy>ky!~E5=42GK@!nOOraAFG{Z~7u{MpNNCu*IIM6!HAhOWo zMVz9{BQ++gktHlOh>bE4R&aJZ_4cO`;se2#TUGoWw}d2oXl5JEk%TV@#QrV{q{bD+`h;h%rQCWP)Os z>Oi5VV-liLo;Idr!vq6{B^U`KOt>Z~1LW8|PU?~)8RHy_@ew}C$5aJki9A+n7gbSd z7ypJjzkHhk7+Q}fZ{v=>M5B2VirTOY%E$)fj%dZ-E%BI-SHv!vYW8B-$zS zj4H~0QH@h(Q?9Vm&DxDh9fgw0RbX%eRi%S_x( zB;YwTJ1yLG1jcCN?K~v?hrAerDPl;CGcsQn zhSBtxu}hKgUk41m7U?W*%9 zF8r{=(OghBVcqT}J4z-8rxk8h%gYC@EiE7Lot-=W(w`hmrz^sjqnjo3?~=_-U3|n{apP?-D6Q2^2Sp<b&2~6Yv;f50yu3Pw^Mg`%e9wAe@z{!OkSCH z$rjKJY&$u)=1_Vn@RF-{AxFvnoreB2Rj_4tPg&p0(IxTEws+o_JU_Z3T?o#U_MLe5 zC;+?k`+te=0m)}mixz*q{Krb*eW&oCo*(FGZDB*ok!|`zv9JEnZLb<>OP%YT%Z8Qe zCUD}z{^$7NifT~Q2P%_#=zVHR@`1i$%Y(01(aHByL&wU=mGsS_BI~M?TXbg&hm#xbtEWqZaz7|V0$>i&uxV=Y&9jESi_?>e4mO5HEzOPfGrrir=b>I-?zEP#00oBY Vfn$%KUI%}ez}?W|I#3^2{U>xcil+bo literal 0 HcmV?d00001 diff --git a/lib/icon/user_btn_icon_01.png b/lib/icon/user_btn_icon_01.png new file mode 100755 index 0000000000000000000000000000000000000000..a5879964150be7cc5d929a28f6eb2cd1feeae1ce GIT binary patch literal 2296 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 literal 0 HcmV?d00001 diff --git a/lib/icon/user_btn_icon_03.png b/lib/icon/user_btn_icon_03.png new file mode 100755 index 0000000000000000000000000000000000000000..9df53c71e2e7f644a586add29d3dfe695104dfb0 GIT binary patch literal 2871 zcmbVO3s4hT7EJ;o0YUx+h)f$0@so5XB!sjeV8SOr00CD}bm(+C5J}P@2@u4^2&f<* zKRDwqqYk3usH3jn>fj#`P%K1cDHTOj99h$aP&b#N{bML#A z!sy5l3o~ak5{YCX3>Cx>?*PMNYC`<(m8EqNFRCguK|>;$+ZrA+seFqgi8St+EG}Lf zFN%OsT){vjxEN#T6ev|vmPp|kLGTC{ z@#RNL(P~vN2xewxGBUjwxH=hR@_0NDVu36coj}kvSxPOUqboITqZS01235;cS{bec z3>FbFp04$y5uOf*piqsORcc0LA_N0ClrL*x<^#N?O)Q))E? zmN|x1rQljzlY;+&>9Ot42ncCKqA`vy`l3*bQE0S58AKQ(f_xFJiOW)9U<{_g)72;z zltH-ZW{5@w^VJxl#no{*E+0))^r*`KpKnME5AYNrs7z^yWBMnjFae^){AetQ1<@fE zoym=3`oJtEk-eFa4-7%WP!TSXNwYqOvb^J%Oqj)mA@*lbqHZLJ7Wuzm2?|SbwE`ic zmMM^A3{)wTX~3A4FdvuWYJ!;X&g;{4A)gO=|U=Fz} z62U^HMvEv>OepZ95ehM6G6~FqqzEeYX3^PP35U++u%vV!)LTMl@wgZwK_P_e!yP>@ zz|nL=9gLor5a%TXiA2i7=u9>jrL(;tFl49OcmXzr;EEmBarIr!*5Rw07 zJBHh7C?GggrXfxvKjqX;xe#-IEDbs7AU|6eH9zwG~rz-S7hOvZ>73(^b` zfre%@oF4G^nH$>sq;ZYHiEe0^j;tWC?zR>eax$vU+5}l!2hFoKFUU1954GD@coN7RC$P$PTM9X_!|duD0_8yEHFI%q zW!2^eo9wr(-OCd^vOnJHS`v%jMruxTXAdZGX~uoY_UMB57n8`Jja4gD!3!x(lq=*? z(o@Paa<3IgT0r9I?e(Yha7M)AsbrzPLm%F0Y5vB{hvZ1{e9N`IWOndEcV$VRBV-hP z<)ZN>$}Dbw9B7n5t|mRyM-2Yp|D@CNwZGAXmu}?6q}LY3IhN;0FO1?!D}VL@tk;`e zE6H!xKD%{(V3oe#B)H3XXF|u3+;*cD@`()(E;e4h5KD1zmOmGIhiq7?w=mJ9_pjBD zv&qvHq}FaJTcY=EKC!jaBdNNfAiZVs9%@bS{SU>b&e&6~hdKP%+G+2a)@nVe#)j+I+i5vbDB2w26eF6A3$|=JF6g@*x#I2 z-0YqeoEIoqP(7alJ6iRL)K8!}L2gbH;w}C`(WO+r(^x?ky)tC`E6+#ed&|ZrauE3u z>W;{zo9dfp*hEwN0&DzZ*XZl!6)%#v?ap&HE{=1rFzvuPU}L*F_4h3Y`^|zCO?Mw< zH!KPuQ`dcaxo6GUzFYocC(--{qqdxzak^cS{=eHu}RDPQ_b<*?KH*&WhlD9b(Wqg=&rSy!|x`E~gN&C(P)W+2M z8iQ&^{emg-2U+sU{Ie|~-|TQ6w{%08`q(!M(P`{0w;dagUccpzUHH{1}KQHpvrpFtPra%+dOy*R#tbcs-<0RAD z^#jF)4!z&mD`K`POPo&T?O*J1z&2x7LnB^hp)DtE`}dYWqf)OQ<|vA2(>G3Au~G=1 zQCdNI$C!#s>?#}B%f0AyZpYN;xq6e0`_ENv{pXvUkjov-bLwGpPuqvV+~onWF`X4u zVN_93WbLl=2}U;;RlRIF;h_%~`o46Uocb@M+RG~ZYX8no`=UF)cqOrIHYZo~*t%wm z3U43>$Il#mxOT!@-QY>nnw5=L*Lgg>QJ=HIu5K_aAU=jOK%Uap-95Xq#GZd5G9ONQ z-@CWFGK+lA(N)&-$no~i5eKOQ@11rS@vF90xXyYv?QpBL)!@1f`cK9R b*V80EB{4to)h!3ZUt3{Nq~O5Zq}=}jkg_sD literal 0 HcmV?d00001 diff --git a/lib/icon/user_btn_icon_04.png b/lib/icon/user_btn_icon_04.png new file mode 100755 index 0000000000000000000000000000000000000000..11d37e31e88033a19a2f610c224462dc1fcb7fd3 GIT binary patch literal 2391 zcmbVO4Nwzj8cre!1Wwx;sR)*?3q!4%>`y{|_J{%rkchzmnK`i4X0zGA)+8Ht7Za?u zIj!ee>**AWlwo?Dww2cEF;|_U9WkI2op!4B&r)rbwp!_rsMx7)<3)m1KP^-9X*g%>S^iXsFs5TFGTiUj;Yo`{&?F}nm9i^~WMjX{K! zX1GKogz6kl$ii|oRH)IbDNI)g8B7{Xuhp4M3m_cDj0kE(Fs&NX6FQW@aVYVF0UPJ_ z5jEEG1Q(c@;YL9S5eO0vhc#iXhUFR%%w#elD30K`8X(ksOHd#q>L8ytVZloC6vu=F zh7CfZMbg7I3uYL2IvzqGlr$UU6EXq8kO&zt{JY47}6czHYZzoE+<8{9uExsVIf)WfnbV((Bc@1{-tN;UMfmULb=M zZMT|Xppb@PyaY}fjikYgsSR2!s@4^vUbPAHfGKLA3u&!RhoXRJENz69rJBV$m^kkR z=e>Z$>od`6OlP3fIxXr^doYhl?V(X0t@q(R%s4I=;9try;2x6xKWs<5oniqIHiieO zZAsjpTDmDQ@-xs_%@8Cd-UTyEiA6wr;lwgCi2`>Q!MNFQBMprHMqP}_ZU65sgOm9`NwNN6{}TdJjbyNa1}zqW#fT8G8I7k0`Txv~?cLV6 zCg7kOio;|Z29snXr-Q&W2ikP=lP@2VNTy`ittGC=*()87{M}KVb^OiBEbYiaVLE)V ze~E6!ipci-e_b1?DcHFw^~Iu=AG&PMoCrK)Skk_|a-^&pe<*Gn`4biIo&C$d`&vKv z=3MK6oBug=_NO&_op7(>n(ma&E0%XlGP`81;;%QB zppw@W6~!v!i=|ajt$R^jO8F;ggVWMyeW5b?^M;z@Dfd1YNZH@ujOFA=_s08=6dQ(R zi;6aW^~q8G9}6IM_N{wgm%J03*YiHrwq9}i>zd-qZTs53-1E^3(Le9s@{%nk>zmrC z?44TviY>P0+H!e!bTnhQ_EnkUM%#yJ`t@q}16dtI@USaZh@Rkb4$l7p6S%YMjjL8ti^&$rF)|XmU6|vdprHfM!PK!sNXw}I|atk-l{cs>}K&Cx5McUf0q81#2 z;|Hgo-n#hhf$W}*N9Kp~ZOV`3b3!YHIbG@B&G`A2q3852XQUN99(LPZQd8g6dp4xZ ze9Qcf{BQh#@8pdsgR!Q8{2ZyewEmz?oAoW3Uw5kdu{rsx4>Nf~n@`(QAF_Uwds$W+ zGhM4~e`@!Z=xn^vGVBqzYI2hcDCTVWt$exJfYl?C$Fhhy_WiH zc=>%hzd4zvoNBXHtF|t#4PpvVPY7^z}b8dzFvZKPq?i zMs*8kH_sbVWVOT61N-EUUV6JSb9byT*TQ#Z9$Ql~um&Byzw?X5O{%Nc`?zOsJYUyT z{D|{&#D4f>S9DsA^xauAw!L|ub7qa(Hou`idu{!)L?tH5^46t$u5Y@q_vOtQ1>&cV My{yW*uhhNne*sEPT>t<8 literal 0 HcmV?d00001 diff --git a/lib/icon/user_btn_icon_05.png b/lib/icon/user_btn_icon_05.png new file mode 100755 index 0000000000000000000000000000000000000000..c6da3870bebd01162e0f42ee8e3ff49c4ac0dc08 GIT binary patch literal 3497 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 XbFfda$(N8v00000NkvXXu0mjf!^?-% literal 0 HcmV?d00001 diff --git a/lib/icon/user_btn_icon_06.png b/lib/icon/user_btn_icon_06.png new file mode 100755 index 0000000000000000000000000000000000000000..27d54bf4e7438902f070193d4bdc6e88d2f21e8b GIT binary patch literal 2726 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 YvNdqRUIgiA=Kg~9X_>mlxrOC_0;6foQ~&?~ literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_02.png b/lib/icon/welfareInfo_icon_02.png new file mode 100755 index 0000000000000000000000000000000000000000..8f6853c4611d653c7d1db111db251130b0fe2370 GIT binary patch literal 2204 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 lbYI>Y_I&6L{l4dW z-uHRG_kDMhrEplf@1UYj78u*L%b(Ofah1x&Yj>D>B)PVhoI=m;w^!ib|*kk zILuf}gc5TBL9s45X=iP;-0SiHGz4X2c|9bxk``baUBS3@$j#&LBQRsvAxqNCnAu~X z9ZX&=M;F%?TB+KVl-7=9Wx^R=0uZ=pfrPy-r<*6dI%I^G0Aq0)Mc@&Luu_NUMT2mO z*#a9_j)v3ZY8jux?mn zByDW9phJMCqY_-6Ag!Ap3lj(!>Lop>LXL@&Mu2uIi1So)&Jp8w3Z$bHegb+v~^i)fy$<|x{<3b>gn zs__s8jwS_`v$Cvn{Gcr3F2e?ccraS{F*8XqZc)dayLQn=QlNDRj^UULQ_66q6;}{x zIDsqYVd(^hjY7?=ohe^^U#N;urQHJsd1EI9@?XJriYR9}7YS4|F0z6~J?;tw4#tu& zuuhf(hJkm=yXW%_1`EfQGfuF;7cI3lXiPKZd1u@YLb$v>}fWcR+Da%sWn)7Ii;a&>a^f~BTH3_c`&};{y+CG;uuhe zr1OD!#Of3ih{$7jaI~w(>Zh2l8XGwocqC^Ck`ik{hfrb?&~{{Ont9*|jMCOPXh8Z8 zc`*v(*>a(V}g91ymQMTC4Ao}_@_Q%%gC8KYx~I?Df1$lQ|W=go^`&=hq!>V-O{+RtMB}IrKEF3 zpilpSqszowW|s~vHJK+!x^Hheub-xIKfLg)kld}Wwo3P~r?wY2^wg1!Gxiw<|+puGA_~F?d z*&+VW%0S||EWfnBjr2{~p$bHI|61kWP>2+UH_b6I=wQ?W8w2j=*^g(vYORXFmSCZ=w>Q5z%+^0KsU^9=l_)uO zHhYuL+cua`_RGw#dpb7lZ9e0_ptoGk%+(}5Q#u5aDAjUixuEm+zE&F94>>-Z=^);l sbn1rjDcx0n?eq}Cx#V4+PKb|y8lqGB4z!lvI6;x#X;^) z4C~IxyaaNN1^9%x0_jaiVDsk9aNZU$0CItXZ~)=L1?%hUf$UYQR-uU_bK#0NZrlhl z2PgtG8<`6f*}8S>+O=ze3V>2TE)YN%a4kSvfLb6@|NsAoh_7G29>{palC=Zq6UUMu zzhH)$(=MH9w~6Wq^{)7{;?c{?d*9VoF)d*ZUi!Pa%glV~EA+x0kN-H5rIBJhWP{K;gl?>i2uY z@Bd%=rm>}CnwaqVp8ui8r!VvDe!}u`iD=P_y?m9t##7v`pWXH(W`j4i z-Y*|3cy-mTShLwKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z1CL2WK~#9!%-CCqS5*|p@qe0GHW_L~OhsNQyV%8Eq9`KCvc!rCx*=IXiCrIzu4-42 zijgj231-&%V&n$2cos99r3LZMX~fr~H)i?JGO@fOZQXDj{=7HTve!N=H(W`X^J&+#y( zVc1|o-GpySK+0?{UdCwy4K*B#u)js1%>Kf+m^n~T!|_I&FnQaK>jwhrQ5-0F$v*{S z2e1v_V^6{JUvc@tKwXHxOMrSXHTKze$@pfRjgfeu1nf(k)DF}U_@E*bQGr+U?r(kmO|M(j6 zF{f3iEhUcjg*f(MMT9xO_RvU>t=L%s^={0q1vMUjlsH;|GjVc!nZrt;CdQm|u&Tt@ z1{_-#YHEb1$kB{8>g4fMJo@dBR5bGb|$iwE%p7NQ$p4+PW&CBm4A zFz<8sjh~MDq0#Uz>1T z71V5e6jE?}vKR7UyrPXgRrUjWvqUL_>P;rEi4Zn0H)J4twhM2ESa##J$i@tyGxl3| z%;~}JB~Z8Zr&D+27OYLa%8gNE%l5{t3DmTL=i6fc{g{mXR7cS##>8yV{s7A=`i$s_ zilDy0Jlu`pF05z_r}uO(=-} zKKzXPk^{rNxlokZyjXKJev2?J$Ca)2Q_ohkv`exSj!?YV58R@p<4DJMgaDsk7itVP zRvZFW;@V{X1U!WG1z&kx?4_e3qw}rMS9lzg>nQrg700J$e4SO1X@@84P7S~n(J%dw zsQslCoyWQ;OK0Kes@CPP8hd6(0L)EvE$tL0MVPa(`zzY(-O<1IMizG#K^+nTSU1yl zha7a_y2#XH0&Ya&_s*LBmX?)=4!qOmacXBADAvbmdU1qyLCy8AR@JSscyEBteXZCl z{T0-4Ii(&FP>rbOPgiuL{|i)R)8j^Eu%VWj~?^lOde<;D)Fcvv9(Yyk7iw081f&w#9ykq5uE@07*qoM6N<$f;I3E AssI20 literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_07.png b/lib/icon/welfareInfo_icon_07.png new file mode 100755 index 0000000000000000000000000000000000000000..683513b2c519903456692c224e939a90a0449d48 GIT binary patch literal 3235 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 V)0_J9%&GtY002ovPDHLkV1kmdE$9FM literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_08.png b/lib/icon/welfareInfo_icon_08.png new file mode 100755 index 0000000000000000000000000000000000000000..60812bc1766b563c3ba4e754ef655e7ef986824d GIT binary patch literal 3483 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 JPDHLkV1nl5lb8Si literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_09.png b/lib/icon/welfareInfo_icon_09.png new file mode 100755 index 0000000000000000000000000000000000000000..57293b6942c9a65c7cc396f7cb1377f692d4d803 GIT binary patch literal 1693 zcmbVNYitx%6rPs0z$&q{MK^@NIHg9@&T}8#8CXfX+jdvGWw&f(DZwy1b9Z;zd39#m z-8NA``O!-B2eiZxVp3vsV~F?)Kg54{n%blgo@|^ zkdZ>;2G}#+7Z=8d1Xjd$J&5kiagaa(7LVo>Sv9$wA1m^5aBNSL7+Qo_Lw>BoHi#x7 zQ8b_#0QC@FT%g?^w4EhruglG{Z74(0K9cg0v6WCasLjYHwGqpY zK~GB(6um;Ln&mLTfRQ;~CuxGRB^809P{HXVhFml*3M7z$0#wU{Sh|AMGn%ED8SQVV zE6X<-fT4{TbdEq zGJHEG~5;N(yZ5uGX!09Hxl8(s%i160K!2(1|vjBlE_g>s@+4Scw9`S ze7GCX?Re5fL)om?;}#j8$ofih;r^f|jM#awvS0k4`*#}>tV3SDZ63Qi?F8aNk_nG? ztXw~Pz;JmaOK34?I9{-8!H)@c5&#h^PfNEQff8*t10d-?#|cEl44*RReJ zHL)%4d~Mb`+EK@PtY-R=d=s{LlRCd?qP0FYGxf3j#_r&e?um2CcE`Pr*kJwBKPNuS zWIuDA@Gmx9?ESSV{nc-4s#CE=^Vs;?_i^>rsp!Mc@4vI=%a)@r%`|*>+_}_t%|jQ) zE^i%pDE~>r^gT;8KRi2M*mmlJx#g}iZ@xaPym0JH^qYoFFOm3-dBzbFMhjyDt}1sot^u>^SaP9 z>wN0$wuOX@$P-I#nTBVQQM2~&=fjOpj$hh({?*2PEz5JKk2ZYjDC|$>2QL#xrlLJn z7ba&;c8(r+w558W`->az{dll-$Na#Rs=FWG`}^9%E$1gghwy3p2NLe;3%=ZW@QFVF D+E*=P literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_10.png b/lib/icon/welfareInfo_icon_10.png new file mode 100755 index 0000000000000000000000000000000000000000..4e68517e8b498cc52a74cfa35894376292545c9c GIT binary patch literal 2326 zcmb_e4Qvxt9PdEK*c^k1hOgmybI73A`{=d3o-1Q(3oB3D(||Ob{3Z`JN&&2u{U>#KkDa8JST`_!!{3Zfk}D5@M6!Pz;GU^oNr~Y9%x-8jxQ&(ai)4)^(iD6551@iJGLdXL5A2|j?0%w6&7@U|> zvhsc*zbecxt6J=4t4dij2j|RzvZFKz5abmGiUtEAnT}fESX>&k)ov7qVi2X&0_Um; zA&;{FvWj6IGU$v5i<1V(WY*zEJ!v*;Ap*lG6r)gFkKjg{#At$mhJG-}7Uq1k%QkN) z7kIM3enpXJ6pch8x`*pNIV6A%oIG7^gGFqKja$gy#pR2~k*l5;G|2lyZ#Qe=R|<5DfpbQ$iJ%a(!Gt5EPtPNa4`UEU&wD9`Gnhz|ad^H>WXn|_4A1Ale9ViP4498W zIG>L~NFFyKUOf(EGaC&gM^K!Z8k7sE*;3OpWz!LSiO4}w0z7lSZa^eGW0%;%N>wI0uW=))Mu zOvR(?H*u^1GvW+FnMtsM6oVsP6J|zOA5QrU1ZnhPzybfRKWCaGbwK5_j+30OZ9 zD&fHqi^5ON=0Q4E$e)& z!r;a8Q(gN}jV9rS!@a~MVBoo^2|&*TeGXSuHg+s<;F>N!8rXr za#hhgo-g+_C8eCrsMUTH&`#c*^zqc9XxB+^dw)lF&o9cg9XqDT7kadF_T6sm@0TwO zbazI&Fy~hnQ!_HR_PAbceC1T}s2gPQls=i&+x3WIDCPmsZ_rvd77Oc_y zSTpcc-kk%5uIa^>j~`ypc40Q?tbr)%G=tPZE^$li%LH}_Aym3tU&YB;}Ys=u%| zF}=xFTbMl1+bAb_(swsPr(i$PCAXY_Tb{|z?^}J+`N8q`rLrqT9c;PuW+d-*TzwTr*^ zQFB`)U-~-I(S&y8c5LA$t~0e?9p|pr{()bPRAr8pi?nz0cUJ6)%H+Aty`PV-s6Oj! zbK+^MDoU<@F`+;@zh>v#+GEZ4j^5Z_G}=Dl&H8Or8aE$$D_y@Ssq*^zLxq;xSB#e1 z%j>RvZC}{>d}H&rLf67Td-mA%w|2EP@4va>xl4=ss+)ITuD#cm@IvqU=7#S|OOGTf i)m=TSbF*5be~zhscVJV_lBBijmy5%`*w&s`T=O>wsUd&> literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_11.png b/lib/icon/welfareInfo_icon_11.png new file mode 100755 index 0000000000000000000000000000000000000000..cbcc7d4315b2f48ecdb692e5507ae8bebfec4118 GIT binary patch literal 2737 zcmb_e3se(V8jff!QbDVzC|j5g=n{1@50W7n4K^k`f&?Xom2G`6nVE!Q*8 zs{*!KUKO-fIrSi%^>x&(rLM9nEr{4|wMadPuX@f>S3uTnrCN8w>)5V#J)X@uleu&6 zcmMzYzWd!fvw1;ELSVp@0Et8rs87@x#rss>ptT)d5PCjQYSk-ReAcMX%2 z?+B4dMxJ3!=|Z|8nV>kkjHEd;BlFswB3dGuJ;&=LsVqhS%#4+FsKL(KlOVv-YH*Rl zfEb)wCX-Fflt zjJo)NT;h`&%oGGC0mB}TN9Ku^al92qRVo#XU@(S3A_8*dIt0=SIb0Eg5p;};;#sG_ zat^>3ku-B|K@EzP_EWGshr&8s12Tz%!Cuk{qcX%tsSij~LpZ0KxAi5bDVVV_cE%yN zL@YXlb!Kt`=gQ=s5qfC&7YRgZ4Thl{Pp!pnA4=g8;&Mb91A;si?K0&$8Q93UI5$r* zaXDg{5k59fLd!Fx!0{%IvkflPg29pjt=6|NDj>>0Qmn(rL;A!lMn?*a8pIF`fe;)* zQ4^vfFeQN@GY}<#ApKASN3)jPC!tCRQX^4NVH<{{+(%Vc~c?DY9nm zq?Li44l4)@X-Q}~8^?=@#ppKOqft>d6|Ruen37g0`{fez&*xcjACk5gj^o>%J_8Yn ztV>+l+=2bGkjWls*;t^@GXzQb_JSIud?sLMaG;xgiUQBapg*i9lM#ddhA;YIF3uu& zNS@JHMYW#KeDJdvxX7H}u0MvR6bO!zkWwW_A-R%7A#)6(f+!2Bv?wq+Zb3u`{CEBR zW z*yt4xFZAwmyL0CJ&|~}I(dB#BTkif8+p=osV^{O4=KJm4kxZ^SX!D4yxo{lV@5WVnhc`Ljx`=guA9`xa*t%o8KU!}OKNV2nX{nWVe3JMuAo5-XQDrKT=*_Klimd+nJ-*3~XeO1bCTZsQncX-#IYjkIO+0MY~ z+KQ?#?kbH-zz(1&UKw0+yR^!=A1@KgwW*Ud#p6?lYo>enokzlM9s05H^3R(5zuyVo z4@RX{?`85wG=@U-cV%&^;iIq5TAo!E2ny+aYLm`*owqujVg7Q6nmKP|=3_iu8cnYmzE&POGd;B3_0p z6TQvHEE69{uSM=s@S3yxuEqSVvA*Cua^>Lh&^KVJsz;Z+<+{$@Bsf2>+NO{H@GEm~ zXP)w<_6PIe)sM{H684H;?_~Xrf6QEl+?BSiDRX>1FFY;sO!2{#^7byXbLSM(;td;aN49XEUyJ7c-ksw>I;X$=Q!Ly*JtmG?(REE^MA&@TxxJt4rA(qicSD zZhpb8#T$;Klum;SD;BHQ!RvbB{oEfMYOOzzH7%bv#wC!wRbUwU60`C2mVIBIuCQ3C zM_ZeurN{IC*<9l{bw_|>?TU%*Zze3Tj$Kg~ad5)Fjut$A<<^qL_U@av?7ojmeO!ue J|J;nV{{c?W=bHck literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_12.png b/lib/icon/welfareInfo_icon_12.png new file mode 100755 index 0000000000000000000000000000000000000000..7298bfa6e472daf14b9ef41dd8c8ae06a6e2b5b3 GIT binary patch literal 3256 zcmb_f2~-o;8V(8w$R;ALK#0o=!jPGegk&TTmMEcyH3Dk2PLfH8kW5Gh5(50xOGY79^Vr_*`pJUuXtoCa|?92!Wc(dhtz0JO;}9MJGpTq>cV@u(72 z;aUO;RUv5%M@9sZ32f?A<))W-*7Q7T7WXmNfLk;VuiA4F?K$!e4qfoict zjRfT<5n;|WWTS=yG$?{&8WD!YzbjPOyO7BN0fxeG$W$RBQK$@gxV|?F4McF1OQC~w z5CB;K1c^WnOlQM%&<$k6AUF&aVp4@H`F$uGpfg1f1BTczlldDcp&KcJBmWaDmB2Dg zqeO_T6-q>o($p$Bg*?h79Dv1R8p1IVo#*@gf`EW94JK2>69d|a1^#3KKY#^sSS*0< z0S$#K6v6_P7DrSPR1nCe5Da-J6jE4%GB|88-3y?zJvjh_CF1~M7Q_ZvEHQ&A;h;>G z7vX5AY;YhZNi^u--FzuA9~6ULOi+dZQkjemFi^+~5PL!dZ5$SpA*HjW9QH6>g#S>D zf>?)0{9m?XSe*s|!9fZwQQG8@^%IFEjI`nvoY* z2aw1hwv0(9N(vGR`0x0K#R|bp2xhR~iS;kXKjJ_Vi>Tx%vBlCTe?6l=r^%0H^tPL-4qB*`{-{)_Be{3Pq)1ZQWg8 zoCtKz$>p$D7)R7w$Fi;63v9k~GH%>Px^SnAu8~J_vbn_Qkp8*VG(w@~kK~>1n^- z*8d>m;oOd&TszKLb?CXEHlHu{w=dRI*YuYwI~_M~%zZ=q>{L!y`9FDgTc|up^h}cO z$fV;dd~Lmg+y9d|QUAg+rrLtK%+lR${G+S14F0w@`IVLJ^>r!hc>}*}3Tm9znH`{j}=shwRrV3kZoNem5B9G;_xYBZpXGHhY3+G#RRCky1IE(a; zwmHPaPPVSUN<>d_|_IiSp}cm~CNhtcC!^Mx0q zpC=?lZ9gse*WODxuw}iff;YpPWI1RS<2l1LZ(AISN+=zsEm4I&CQd$< zscAvQQw}#xKcxQ|IyBiL^;YAg*Y$Uf#-0K1G5Z_VY0G$3tlWIw+{WkaHkGg~m_>RZ?O(1o(r(uUkzJLRrT)1@`Fg17#C zTL13!-6bs-8x&2uuK6wJ-R?L$e$&mIiFf@k6*-|_nMV~&Krfn1y)AO7cX1o{Wotu% zpWx_mt2fQTYxb6HqN7{Ag*M^$o5JPTO&E!DjcY+`NXR;2&}Re3^t&uhZK*ppX?Y{9qO*T+dIp6Y;<3Zy@-D;<$?*oZ9Q-V|Q`{f1 z;oGzFu^oYRb2oMt z{8Gy_H1jfy)DYj!w1)a`eu-|+lI z(K5J7U3tUr$uI4vq#H5nQX;>R>wlY152{G{2p? zhS0}j4%*G?y%xu>&KuKJR@!jwmE%jer69|!w!{0%<2P+aC+_>$7Dw~A8!CL+-q#N_ zJ4aQHZR~X`DLH)Bfr?T5>f|Xi=ku;F8EB_aBYSTp?aWS39Y5$SuKIcX5|bj`&acB) f*?w~3-s|x|{)tBo&C4qc{}uv%NZEP5A&l=H literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_13.png b/lib/icon/welfareInfo_icon_13.png new file mode 100644 index 0000000000000000000000000000000000000000..0141fcc7c384693db47d99d0efdca5942466c7b5 GIT binary patch literal 779 zcmV+m1N8ifP)Px$AW%$HMF0Q*(bd)I>FM0w-tFz}(bUx5;o;lf-qO|8 z;N#=$?Cjv<X$`}_O(`T6zr_3!WR)!5kP=;-(N_w@Dk+TGpo@$uv3^T@A2{J>+9g-jF?Ck92=jYJW)aU8x z;p5}(@9)&u*z4=->+I~}uz; z>gwd?=Irh5=jZ3~@$u2r)avT$=;`Ux*Voe3)zH(^{Qdp$^78un`tR`Y_4fAa>+Aaa z`(Yl`VgLXD7<5ujQvmrG<=OoG==%A_`l+Oq*8b}0)7|IlRrt4x#{d8UWl2OqR5;7! z)WvqgFc1Y$mzhb?*p4AFI}URiPRh*q|9?>#+QdDP_dR_JZ*_*VYi6#gkb=ggj$b%|EMS!E&EBIkUYLuZ#kiY}SvMdL2iYj_DQr>x-rt$!3!}#Qa z#>q-Ff!B52Qlc9T(;dM(kQM|%9;x>JxEkgq0LgZOM%gzPDqafRUPJ(*SO8-Htn8`E zX#?Z1vV$QYInd*wueHuCjDIVOH^?h_6C}%Bh}OYD!i~snL=H&Egy#mvbfu>YAT`?n zhf#{G0^U# zQ_G%UN>-Rn-;|FrJ@d?lTP5l^Dys~$wzIpp5RvVf^*{b&`T|=eYTRJjG1>qC002ov JPDHLkV1ioj-17hc literal 0 HcmV?d00001 diff --git a/lib/icon/welfareInfo_icon_14.png b/lib/icon/welfareInfo_icon_14.png new file mode 100644 index 0000000000000000000000000000000000000000..7f88e6721c05b76d606ce25f2ff28cd5370f5fc8 GIT binary patch literal 892 zcmV-?1B3jDP)Px$n@~(tMF0Q*|KC;h$0qyHLI2)a`_e-H-B|g{GV#3> z`_Mr7$~5%DA^Xoi`N}i>)JX8U4)MMe|K3^l#3lI0E&0kZ{nkwO$u01`67akc@VN^A z-dX(5KL7v!`|i^J`RxDw_Wkzh^vXx_!$9P9hvi8<-|M~0iyAt-+Zu;r7`s%g%(LVgvWc|}d z`sv2-xeNE(p8MH-{@PLf+=Bk?!T#yC`OY{0_S^a8x%%Ow^v6s6*-rAl75($y|MuGc z`t1MSSpVHu^~EFq=aBW%fce{rfGuk50000PbW%=J02rkD*_FoV`uXM7{pqRx`Rdc% z=jv7b{ND{4yZ`_JT1iAfR5;7!)KznXKp2JLt-I^8ABB>HNE@ld>hA9D?(XhCyGueR zB+YW)>3hKi^UNNG89?YCREPsj4|D8dP*G6fnIX1HM8&GYWrIwWgOc&$S}AQEPmQuv zJXK4pdz!^i!r*mu9;h4ldee{-1a92iAvPBsC6sVb_XYoV0mRMc9aRW9I9 zMV_Ab^lb8TwwvG!X>K7YVT)GDO0NKh#|KW971CK#Pe_Eq+DZCUW8H0p{8pkESoHEf z?~CpHh^R#eW09(Jp5Hn5K?)!YB@9sozE&VV925D5-5|Bzk2c6q}oupQKYpYQi7?F?|CX(RSr- S;@A=Z0000pt1W1!n)GLaEm#Ou4>-RJW@pZEUyd|q7+BP)us zkwOqe6n#%RljLooig<$T3smDylEO-9AJPb-Lmaund6L}M9A;*v5lX`*H#tjkK44{# z;-^{&Oc0uo+J*`PsBNe;piqmdF?`Y=QcAQ)ZAFm|dA*=s25%5N9SYPTEB^*qJzx)l zGl&v>$UQm%5`WBq+l{kU-0TeVCL1o;VVuXf4|9He zu1C=j+Hd3TW7JIGunG74nDnCG4&E^G{|xWcw(xUjD18P`0u1!>k0-evklL$$~+3&_UE9vPpR-%6PriQP6 z{poKx4NV_elIU@~d$QsG;VsT%n97B&9O*S_obQ;*)HHl80MZr1Hc*jnRBaqS{vE;29G$8R3EB8~oKTP~j{OgOeq zQzb}>*b>dH>j{^;-D6KBReUp;y+^u{b&gQFwr_U+Q=YhcONT7BGSE;&4F_{lR M&tRl0)7anr2l%2T=l}o! literal 0 HcmV?d00001 diff --git a/lib/icon/welfare_header_icon_00.png b/lib/icon/welfare_header_icon_00.png new file mode 100755 index 0000000000000000000000000000000000000000..37d541ac4b29a552b486a47cfa4c090bcdad61b2 GIT binary patch literal 1935 zcmbVNZEO=|9KVhLV+(NtX81C9-aep_>%Fzt-btC;b#66uTSgOy#AHwJp0<~@celIS z+Kx$<#Vtaj__hx)%|zh~G0rcj84^?=WRWmTd_ln%Ci`Hbk{M$fk;Lb^w%L{q7cRMb z-hTg=-~a!A{&%3gwRvO30~HvCZ49*pJJ9%~^Omne-xF%jk7(FnwCu4kta7vSy09Z} zZpE;*f2xsAyED8?l=YMwD0&pSGbsb1F>FVD#sG3RwDBm6t6G4#dFl*-t4e@)#v7)? zh6EF8OTP(s_qRsm{%%=Ni29xQj*N&Dq@WG(Oe(2aVkSW3^@?cjY*PfDhuGZ#qQNnU zcZS<>NjD+xb@Qamc)Ykza5FsT5rpkHOEZ3o_EQW;GQ8-aMV7@24}q+iN=)nsK2@-V zRskYm+lEL{>2%ti=G?j&rx-yHD4L~MmP82B%4#;qkeXFj)DVQ0Y^sK>>Kg871W~=$ z4iL!Gc?v0`q*k*EVL}0;GQgl1H|~c_+7ir%jD5@I;*x-M`iY&%-GX)T9H3j03GPF2>mtrYOdQvx$VdNdRa6cqT z?WP`6ljy+eXl}$qO%l%tJWsN2Chu-IEQU182AT{*!2p3G2O1lDrr29zW}s0q-x$2X(pEse_`tg5+gyOprMbNBVfcA$h?^3Y-!pqYUq7JTe<& zqOqcUo2jCE2$FZL$GM$O0f{ZDg;JX>+@IaBr!Y&Zc)n&tAUk&wh&0PL$LE|dIQ8#p^r8bNfrA7`lq}oJnni>jT!Z4Q<3N}PC-~av{ z^YogAts~bb=E{eLeN_)mJo4h{(Vus{Dz&_PUHD|=_-I%6?1n8jrpM1WmQ87&|8`@1 zt|m8Gm8tEker@#duk~&DAI6f;`sYKR$@hpK9jpFg@}b*F9g_yWIW;{nE|)*&N}jvA z(6id!S1Pia5$z zermmx`xx6(>z$Fxt~AC^&d6oC>93!iV_ba!tnxzh+T1Pd-+ylJyES$8^_z{uZNb6W zsaU}xR&s9mVaNXn60_bpA?6)&N9^08hpR8Yv?~u C33q$| literal 0 HcmV?d00001 diff --git a/lib/icon/welfare_header_icon_01.png b/lib/icon/welfare_header_icon_01.png new file mode 100755 index 0000000000000000000000000000000000000000..75035314c12b92f5e4fb59076f5bb85c44438204 GIT binary patch literal 2266 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 u#*&`2d#V)LRw{P>!_9 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%0D>;x7pNbavrIFEl>YL=?9f9T>+j{#zfY0Km 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 literal 0 HcmV?d00001 diff --git a/lib/img/banner_01.png b/lib/img/banner_01.png new file mode 100755 index 0000000000000000000000000000000000000000..9b55e0359ebb1332648a35a11bf5b434f295d104 GIT binary patch literal 43522 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 literal 0 HcmV?d00001 diff --git a/lib/img/banner_02.png b/lib/img/banner_02.png new file mode 100755 index 0000000000000000000000000000000000000000..58a41d612325eeccb1975557076f0dc7f47c40ef GIT binary patch literal 36912 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℘=Aixdz?=Je#31QEPc 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≀V3G%Q!A#(~QL-gh6M8FFtVHIx(p4-v(yazDKK> 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%0AUn- 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 O2xkX3`)b>u)PDgYS_tO= literal 0 HcmV?d00001 diff --git a/node_modules/domelementtype/LICENSE b/node_modules/domelementtype/LICENSE new file mode 100755 index 0000000..c464f86 --- /dev/null +++ b/node_modules/domelementtype/LICENSE @@ -0,0 +1,11 @@ +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/domelementtype/index.js b/node_modules/domelementtype/index.js new file mode 100755 index 0000000..ab15b0f --- /dev/null +++ b/node_modules/domelementtype/index.js @@ -0,0 +1,15 @@ +//Types of elements found in the DOM +module.exports = { + Text: "text", //Text + Directive: "directive", // + Comment: "comment", // + Script: "script", //", + "expected": [ + { + "type": "tag", + "name": "head", + "attribs": {}, + "children": [ + { + "type": "script", + "name": "script", + "attribs": { + "language": "Javascript" + }, + "children": [ + { + "data": "var foo = \"\"; alert(2 > foo); var baz = 10 << 2; var zip = 10 >> 1; var yap = \"<<>>>><<\";", + "type": "text" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/05-tags_in_comment.json b/node_modules/domhandler/test/cases/05-tags_in_comment.json new file mode 100755 index 0000000..2d22d9e --- /dev/null +++ b/node_modules/domhandler/test/cases/05-tags_in_comment.json @@ -0,0 +1,18 @@ +{ + "name": "Special char in comment", + "options": {}, + "html": "", + "expected": [ + { + "type": "tag", + "name": "head", + "attribs": {}, + "children": [ + { + "data": " commented out tags Test", + "type": "comment" + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/06-comment_in_script.json b/node_modules/domhandler/test/cases/06-comment_in_script.json new file mode 100755 index 0000000..9a21cda --- /dev/null +++ b/node_modules/domhandler/test/cases/06-comment_in_script.json @@ -0,0 +1,18 @@ +{ + "name": "Script source in comment", + "options": {}, + "html": "", + "expected": [ + { + "type": "script", + "name": "script", + "attribs": {}, + "children": [ + { + "data": "", + "type": "text" + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/07-unescaped_in_style.json b/node_modules/domhandler/test/cases/07-unescaped_in_style.json new file mode 100755 index 0000000..77438fd --- /dev/null +++ b/node_modules/domhandler/test/cases/07-unescaped_in_style.json @@ -0,0 +1,20 @@ +{ + "name": "Unescaped chars in style", + "options": {}, + "html": "", + "expected": [ + { + "type": "style", + "name": "style", + "attribs": { + "type": "text/css" + }, + "children": [ + { + "data": "\n body > p\n\t{ font-weight: bold; }", + "type": "text" + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json b/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json new file mode 100755 index 0000000..5c2492e --- /dev/null +++ b/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json @@ -0,0 +1,20 @@ +{ + "name": "Extra spaces in tag", + "options": {}, + "html": "the text", + "expected": [ + { + "type": "tag", + "name": "font", + "attribs": { + "size": "14" + }, + "children": [ + { + "data": "the text", + "type": "text" + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/09-unquoted_attrib.json b/node_modules/domhandler/test/cases/09-unquoted_attrib.json new file mode 100755 index 0000000..543ccee --- /dev/null +++ b/node_modules/domhandler/test/cases/09-unquoted_attrib.json @@ -0,0 +1,20 @@ +{ + "name": "Unquoted attributes", + "options": {}, + "html": "the text", + "expected": [ + { + "type": "tag", + "name": "font", + "attribs": { + "size": "14" + }, + "children": [ + { + "data": "the text", + "type": "text" + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/10-singular_attribute.json b/node_modules/domhandler/test/cases/10-singular_attribute.json new file mode 100755 index 0000000..544636e --- /dev/null +++ b/node_modules/domhandler/test/cases/10-singular_attribute.json @@ -0,0 +1,15 @@ +{ + "name": "Singular attribute", + "options": {}, + "html": "

Heading1

", + "type": "text" + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/21-conditional_comments.json b/node_modules/domhandler/test/cases/21-conditional_comments.json new file mode 100755 index 0000000..c034acd --- /dev/null +++ b/node_modules/domhandler/test/cases/21-conditional_comments.json @@ -0,0 +1,15 @@ +{ + "name": "Conditional comments", + "options": {}, + "html": "", + "expected": [ + { + "data": "[if lt IE 7]> The TitleHello world", + "expected": [ + { + "name": "!doctype", + "data": "!DOCTYPE html", + "type": "directive" + }, + { + "type": "tag", + "name": "html", + "attribs": {}, + "children": [ + { + "type": "tag", + "name": "title", + "attribs": {}, + "children": [ + { + "data": "The Title", + "type": "text" + } + ] + }, + { + "type": "tag", + "name": "body", + "attribs": {}, + "children": [ + { + "data": "Hello world", + "type": "text" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/23-dom-lvl1.json b/node_modules/domhandler/test/cases/23-dom-lvl1.json new file mode 100755 index 0000000..ab25d88 --- /dev/null +++ b/node_modules/domhandler/test/cases/23-dom-lvl1.json @@ -0,0 +1,131 @@ +{ + "name": "DOM level 1", + "options": { "withDomLvl1": true }, + "html": "
some stray text

Hello, world.

more stray text
", + "expected": [ + { + "type": "tag", + "nodeType": 1, + "name": "div", + "tagName": "div", + "attribs": {}, + "nodeValue": null, + "children": [ + { + "type": "text", + "nodeType": 3, + "tagName": null, + "data": "some stray text", + "nodeValue": "some stray text", + "childNodes": null, + "firstChild": null, + "lastChild": null + }, + { + "type": "tag", + "nodeType": 1, + "name": "h1", + "tagName": "h1", + "nodeValue": null, + "attribs": {}, + "children": [ + { + "type": "text", + "nodeType": 3, + "tagName": null, + "data": "Hello, world.", + "nodeValue": "Hello, world.", + "childNodes": null, + "firstChild": null, + "lastChild": null + } + ], + "firstChild": { + "type": "text", + "nodeType": 3, + "tagName": null, + "data": "Hello, world.", + "nodeValue": "Hello, world.", + "childNodes": null, + "firstChild": null, + "lastChild": null + }, + "lastChild": { + "type": "text", + "nodeType": 3, + "tagName": null, + "data": "Hello, world.", + "nodeValue": "Hello, world.", + "childNodes": null, + "firstChild": null, + "lastChild": null + } + }, + { + "type": "comment", + "nodeType": 8, + "tagName": null, + "data": " comment node ", + "nodeValue": " comment node ", + "childNodes": null, + "firstChild": null, + "lastChild": null, + "prev": { + "type": "tag", + "name": "h1", + "nodeValue": null, + "attribs": {} + }, + "previousSibling": { + "type": "tag", + "name": "h1", + "nodeValue": null, + "attribs": {} + }, + "next": { + "type": "text", + "tagName": null, + "data": "more stray text" + }, + "nextSibling": { + "type": "text", + "tagName": null, + "data": "more stray text" + } + }, + { + "type": "text", + "nodeType": 3, + "tagName": null, + "data": "more stray text", + "nodeValue": "more stray text", + "childNodes": null, + "firstChild": null, + "lastChild": null, + "next": null, + "nextSibling": null + } + ], + "firstChild": { + "type": "text", + "nodeType": 3, + "tagName": null, + "data": "some stray text", + "nodeValue": "some stray text", + "childNodes": null, + "firstChild": null, + "lastChild": null + }, + "lastChild": { + "type": "text", + "nodeType": 3, + "tagName": null, + "data": "more stray text", + "nodeValue": "more stray text", + "childNodes": null, + "firstChild": null, + "lastChild": null + } + } + ] +} diff --git a/node_modules/domhandler/test/cases/24-with-start-indices.json b/node_modules/domhandler/test/cases/24-with-start-indices.json new file mode 100755 index 0000000..02228f1 --- /dev/null +++ b/node_modules/domhandler/test/cases/24-with-start-indices.json @@ -0,0 +1,85 @@ +{ + "name": "withStartIndices adds correct startIndex properties", + "options": {"withStartIndices": true}, + "streaming": false, + "html": " The Title Hello world

", + "expected": [ + { + "startIndex": 0, + "name": "!doctype", + "data": "!DOCTYPE html", + "type": "directive" + }, + { + "type": "text", + "data": " " + }, + { + "startIndex": 16, + "type": "tag", + "name": "html", + "attribs": {}, + "parent": null, + "children": [ + { + "startIndex": 22, + "type": "text", + "data": " " + }, + { + "startIndex": 23, + "type": "tag", + "name": "title", + "attribs": {}, + "children": [ + { + "startIndex": 30, + "data": "The Title", + "type": "text" + } + ] + }, + { + "startIndex": 47, + "type": "text", + "data": " " + }, + { + "startIndex": 48, + "type": "tag", + "name": "body", + "attribs": {"class": "foo"}, + "children": [ + { + "startIndex": 66, + "data": "Hello world ", + "type": "text" + }, + { + "startIndex": 78, + "type": "tag", + "name": "p", + "attribs": {}, + "children": [] + } + ] + }, + { + "startIndex": 92, + "type": "text", + "data": " " + }, + { + "startIndex": 93, + "type": "comment", + "data": " the comment " + }, + { + "startIndex": 113, + "type": "text", + "data": " " + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/cases/25-with-end-indices.json b/node_modules/domhandler/test/cases/25-with-end-indices.json new file mode 100755 index 0000000..efd62f4 --- /dev/null +++ b/node_modules/domhandler/test/cases/25-with-end-indices.json @@ -0,0 +1,86 @@ +{ + "name": "withEndIndices adds correct endIndex properties", + "options": {"withStartIndices": true,"withEndIndices": true}, + "streaming": false, + "html": " The Title Hello world

", + "expected": [ + { + "endIndex": null, + "name": "!doctype", + "data": "!DOCTYPE html", + "type": "directive" + }, + { + "type": "text", + "data": " ", + "endIndex": 15 + }, + { + "endIndex": 120, + "type": "tag", + "name": "html", + "attribs": {}, + "parent": null, + "children": [ + { + "endIndex": 22, + "type": "text", + "data": " " + }, + { + "endIndex": 46, + "type": "tag", + "name": "title", + "attribs": {}, + "children": [ + { + "endIndex": 38, + "data": "The Title", + "type": "text" + } + ] + }, + { + "endIndex": 47, + "type": "text", + "data": " " + }, + { + "endIndex": 91, + "type": "tag", + "name": "body", + "attribs": {"class": "foo"}, + "children": [ + { + "endIndex": 77, + "data": "Hello world ", + "type": "text" + }, + { + "endIndex": 84, + "type": "tag", + "name": "p", + "attribs": {}, + "children": [] + } + ] + }, + { + "endIndex": 92, + "type": "text", + "data": " " + }, + { + "endIndex": 112, + "type": "comment", + "data": " the comment " + }, + { + "endIndex": 113, + "type": "text", + "data": " " + } + ] + } + ] +} \ No newline at end of file diff --git a/node_modules/domhandler/test/tests.js b/node_modules/domhandler/test/tests.js new file mode 100755 index 0000000..6dc96a2 --- /dev/null +++ b/node_modules/domhandler/test/tests.js @@ -0,0 +1,60 @@ +var fs = require("fs"), + path = require("path"), + assert = require("assert"), + util = require("util"), + Parser = require("htmlparser2").Parser, + Handler = require("../"); + +var basePath = path.resolve(__dirname, "cases"), + inspectOpts = { showHidden: true, depth: null }; + +fs +.readdirSync(basePath) +.filter(RegExp.prototype.test, /\.json$/) //only allow .json files +.map(function(name){ + return path.resolve(basePath, name); +}) +.map(require) +.forEach(function(test){ + it(test.name, function(){ + var expected = test.expected; + + var handler = new Handler(function(err, actual){ + assert.ifError(err); + try { + compare(expected, actual); + } catch(e){ + e.expected = util.inspect(expected, inspectOpts); + e.actual = util.inspect(actual, inspectOpts); + throw e; + } + }, test.options); + + var data = test.html; + + var parser = new Parser(handler, test.options); + + //first, try to run the test via chunks + if (test.streaming || test.streaming === undefined){ + for(var i = 0; i < data.length; i++){ + parser.write(data.charAt(i)); + } + parser.done(); + } + + //then parse everything + parser.parseComplete(data); + }); +}); + +function compare(expected, result){ + assert.equal(typeof expected, typeof result, "types didn't match"); + if(typeof expected !== "object" || expected === null){ + assert.strictEqual(expected, result, "result doesn't equal expected"); + } else { + for(var prop in expected){ + assert.ok(prop in result, "result didn't contain property " + prop); + compare(expected[prop], result[prop]); + } + } +} \ No newline at end of file diff --git a/node_modules/entities/.travis.yml b/node_modules/entities/.travis.yml new file mode 100755 index 0000000..0ce2af6 --- /dev/null +++ b/node_modules/entities/.travis.yml @@ -0,0 +1,5 @@ +sudo: true +language: node_js +node_js: + - 8 +script: npm run coveralls diff --git a/node_modules/entities/LICENSE b/node_modules/entities/LICENSE new file mode 100755 index 0000000..c464f86 --- /dev/null +++ b/node_modules/entities/LICENSE @@ -0,0 +1,11 @@ +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/entities/index.js b/node_modules/entities/index.js new file mode 100755 index 0000000..91bf845 --- /dev/null +++ b/node_modules/entities/index.js @@ -0,0 +1,26 @@ +var encode = require("./lib/encode.js"), + decode = require("./lib/decode.js"); + +exports.decode = function(data, level) { + return (!level || level <= 0 ? decode.XML : decode.HTML)(data); +}; + +exports.decodeStrict = function(data, level) { + return (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data); +}; + +exports.encode = function(data, level) { + return (!level || level <= 0 ? encode.XML : encode.HTML)(data); +}; + +exports.encodeXML = encode.XML; + +exports.encodeHTML4 = exports.encodeHTML5 = exports.encodeHTML = encode.HTML; + +exports.decodeXML = exports.decodeXMLStrict = decode.XML; + +exports.decodeHTML4 = exports.decodeHTML5 = exports.decodeHTML = decode.HTML; + +exports.decodeHTML4Strict = exports.decodeHTML5Strict = exports.decodeHTMLStrict = decode.HTMLStrict; + +exports.escape = encode.escape; diff --git a/node_modules/entities/lib/decode.js b/node_modules/entities/lib/decode.js new file mode 100755 index 0000000..1ca99ad --- /dev/null +++ b/node_modules/entities/lib/decode.js @@ -0,0 +1,70 @@ +var entityMap = require("../maps/entities.json"), + legacyMap = require("../maps/legacy.json"), + xmlMap = require("../maps/xml.json"), + decodeCodePoint = require("./decode_codepoint.js"); + +var decodeXMLStrict = getStrictDecoder(xmlMap), + decodeHTMLStrict = getStrictDecoder(entityMap); + +function getStrictDecoder(map) { + var keys = Object.keys(map).join("|"), + replace = getReplacer(map); + + keys += "|#[xX][\\da-fA-F]+|#\\d+"; + + var re = new RegExp("&(?:" + keys + ");", "g"); + + return function(str) { + return String(str).replace(re, replace); + }; +} + +var decodeHTML = (function() { + var legacy = Object.keys(legacyMap).sort(sorter); + + var keys = Object.keys(entityMap).sort(sorter); + + for (var i = 0, j = 0; i < keys.length; i++) { + if (legacy[j] === keys[i]) { + keys[i] += ";?"; + j++; + } else { + keys[i] += ";"; + } + } + + var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"), + replace = getReplacer(entityMap); + + function replacer(str) { + if (str.substr(-1) !== ";") str += ";"; + return replace(str); + } + + //TODO consider creating a merged map + return function(str) { + return String(str).replace(re, replacer); + }; +})(); + +function sorter(a, b) { + return a < b ? 1 : -1; +} + +function getReplacer(map) { + return function replace(str) { + if (str.charAt(1) === "#") { + if (str.charAt(2) === "X" || str.charAt(2) === "x") { + return decodeCodePoint(parseInt(str.substr(3), 16)); + } + return decodeCodePoint(parseInt(str.substr(2), 10)); + } + return map[str.slice(1, -1)]; + }; +} + +module.exports = { + XML: decodeXMLStrict, + HTML: decodeHTML, + HTMLStrict: decodeHTMLStrict +}; diff --git a/node_modules/entities/lib/decode_codepoint.js b/node_modules/entities/lib/decode_codepoint.js new file mode 100755 index 0000000..2eadbe4 --- /dev/null +++ b/node_modules/entities/lib/decode_codepoint.js @@ -0,0 +1,25 @@ +var decodeMap = require("../maps/decode.json"); + +module.exports = decodeCodePoint; + +// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119 +function decodeCodePoint(codePoint) { + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return "\uFFFD"; + } + + if (codePoint in decodeMap) { + codePoint = decodeMap[codePoint]; + } + + var output = ""; + + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + + output += String.fromCharCode(codePoint); + return output; +} diff --git a/node_modules/entities/lib/encode.js b/node_modules/entities/lib/encode.js new file mode 100755 index 0000000..791c405 --- /dev/null +++ b/node_modules/entities/lib/encode.js @@ -0,0 +1,82 @@ +var inverseXML = getInverseObj(require("../maps/xml.json")), + xmlReplacer = getInverseReplacer(inverseXML); + +exports.XML = getInverse(inverseXML, xmlReplacer); + +var inverseHTML = getInverseObj(require("../maps/entities.json")), + htmlReplacer = getInverseReplacer(inverseHTML); + +exports.HTML = getInverse(inverseHTML, htmlReplacer); + +function getInverseObj(obj) { + return Object.keys(obj) + .sort() + .reduce(function(inverse, name) { + inverse[obj[name]] = "&" + name + ";"; + return inverse; + }, {}); +} + +function getInverseReplacer(inverse) { + var single = [], + multiple = []; + + Object.keys(inverse).forEach(function(k) { + if (k.length === 1) { + single.push("\\" + k); + } else { + multiple.push(k); + } + }); + + //TODO add ranges + multiple.unshift("[" + single.join("") + "]"); + + return new RegExp(multiple.join("|"), "g"); +} + +var re_nonASCII = /[^\0-\x7F]/g, + re_astralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + +function singleCharReplacer(c) { + return ( + "&#x" + + c + .charCodeAt(0) + .toString(16) + .toUpperCase() + + ";" + ); +} + +function astralReplacer(c) { + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + var high = c.charCodeAt(0); + var low = c.charCodeAt(1); + var codePoint = (high - 0xd800) * 0x400 + low - 0xdc00 + 0x10000; + return "&#x" + codePoint.toString(16).toUpperCase() + ";"; +} + +function getInverse(inverse, re) { + function func(name) { + return inverse[name]; + } + + return function(data) { + return data + .replace(re, func) + .replace(re_astralSymbols, astralReplacer) + .replace(re_nonASCII, singleCharReplacer); + }; +} + +var re_xmlChars = getInverseReplacer(inverseXML); + +function escapeXML(data) { + return data + .replace(re_xmlChars, singleCharReplacer) + .replace(re_astralSymbols, astralReplacer) + .replace(re_nonASCII, singleCharReplacer); +} + +exports.escape = escapeXML; diff --git a/node_modules/entities/maps/decode.json b/node_modules/entities/maps/decode.json new file mode 100755 index 0000000..44e5d0b --- /dev/null +++ b/node_modules/entities/maps/decode.json @@ -0,0 +1 @@ +{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376} \ No newline at end of file diff --git a/node_modules/entities/maps/entities.json b/node_modules/entities/maps/entities.json new file mode 100755 index 0000000..7ccfcd8 --- /dev/null +++ b/node_modules/entities/maps/entities.json @@ -0,0 +1 @@ +{"Aacute":"\u00C1","aacute":"\u00E1","Abreve":"\u0102","abreve":"\u0103","ac":"\u223E","acd":"\u223F","acE":"\u223E\u0333","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","Acy":"\u0410","acy":"\u0430","AElig":"\u00C6","aelig":"\u00E6","af":"\u2061","Afr":"\uD835\uDD04","afr":"\uD835\uDD1E","Agrave":"\u00C0","agrave":"\u00E0","alefsym":"\u2135","aleph":"\u2135","Alpha":"\u0391","alpha":"\u03B1","Amacr":"\u0100","amacr":"\u0101","amalg":"\u2A3F","amp":"&","AMP":"&","andand":"\u2A55","And":"\u2A53","and":"\u2227","andd":"\u2A5C","andslope":"\u2A58","andv":"\u2A5A","ang":"\u2220","ange":"\u29A4","angle":"\u2220","angmsdaa":"\u29A8","angmsdab":"\u29A9","angmsdac":"\u29AA","angmsdad":"\u29AB","angmsdae":"\u29AC","angmsdaf":"\u29AD","angmsdag":"\u29AE","angmsdah":"\u29AF","angmsd":"\u2221","angrt":"\u221F","angrtvb":"\u22BE","angrtvbd":"\u299D","angsph":"\u2222","angst":"\u00C5","angzarr":"\u237C","Aogon":"\u0104","aogon":"\u0105","Aopf":"\uD835\uDD38","aopf":"\uD835\uDD52","apacir":"\u2A6F","ap":"\u2248","apE":"\u2A70","ape":"\u224A","apid":"\u224B","apos":"'","ApplyFunction":"\u2061","approx":"\u2248","approxeq":"\u224A","Aring":"\u00C5","aring":"\u00E5","Ascr":"\uD835\uDC9C","ascr":"\uD835\uDCB6","Assign":"\u2254","ast":"*","asymp":"\u2248","asympeq":"\u224D","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","awconint":"\u2233","awint":"\u2A11","backcong":"\u224C","backepsilon":"\u03F6","backprime":"\u2035","backsim":"\u223D","backsimeq":"\u22CD","Backslash":"\u2216","Barv":"\u2AE7","barvee":"\u22BD","barwed":"\u2305","Barwed":"\u2306","barwedge":"\u2305","bbrk":"\u23B5","bbrktbrk":"\u23B6","bcong":"\u224C","Bcy":"\u0411","bcy":"\u0431","bdquo":"\u201E","becaus":"\u2235","because":"\u2235","Because":"\u2235","bemptyv":"\u29B0","bepsi":"\u03F6","bernou":"\u212C","Bernoullis":"\u212C","Beta":"\u0392","beta":"\u03B2","beth":"\u2136","between":"\u226C","Bfr":"\uD835\uDD05","bfr":"\uD835\uDD1F","bigcap":"\u22C2","bigcirc":"\u25EF","bigcup":"\u22C3","bigodot":"\u2A00","bigoplus":"\u2A01","bigotimes":"\u2A02","bigsqcup":"\u2A06","bigstar":"\u2605","bigtriangledown":"\u25BD","bigtriangleup":"\u25B3","biguplus":"\u2A04","bigvee":"\u22C1","bigwedge":"\u22C0","bkarow":"\u290D","blacklozenge":"\u29EB","blacksquare":"\u25AA","blacktriangle":"\u25B4","blacktriangledown":"\u25BE","blacktriangleleft":"\u25C2","blacktriangleright":"\u25B8","blank":"\u2423","blk12":"\u2592","blk14":"\u2591","blk34":"\u2593","block":"\u2588","bne":"=\u20E5","bnequiv":"\u2261\u20E5","bNot":"\u2AED","bnot":"\u2310","Bopf":"\uD835\uDD39","bopf":"\uD835\uDD53","bot":"\u22A5","bottom":"\u22A5","bowtie":"\u22C8","boxbox":"\u29C9","boxdl":"\u2510","boxdL":"\u2555","boxDl":"\u2556","boxDL":"\u2557","boxdr":"\u250C","boxdR":"\u2552","boxDr":"\u2553","boxDR":"\u2554","boxh":"\u2500","boxH":"\u2550","boxhd":"\u252C","boxHd":"\u2564","boxhD":"\u2565","boxHD":"\u2566","boxhu":"\u2534","boxHu":"\u2567","boxhU":"\u2568","boxHU":"\u2569","boxminus":"\u229F","boxplus":"\u229E","boxtimes":"\u22A0","boxul":"\u2518","boxuL":"\u255B","boxUl":"\u255C","boxUL":"\u255D","boxur":"\u2514","boxuR":"\u2558","boxUr":"\u2559","boxUR":"\u255A","boxv":"\u2502","boxV":"\u2551","boxvh":"\u253C","boxvH":"\u256A","boxVh":"\u256B","boxVH":"\u256C","boxvl":"\u2524","boxvL":"\u2561","boxVl":"\u2562","boxVL":"\u2563","boxvr":"\u251C","boxvR":"\u255E","boxVr":"\u255F","boxVR":"\u2560","bprime":"\u2035","breve":"\u02D8","Breve":"\u02D8","brvbar":"\u00A6","bscr":"\uD835\uDCB7","Bscr":"\u212C","bsemi":"\u204F","bsim":"\u223D","bsime":"\u22CD","bsolb":"\u29C5","bsol":"\\","bsolhsub":"\u27C8","bull":"\u2022","bullet":"\u2022","bump":"\u224E","bumpE":"\u2AAE","bumpe":"\u224F","Bumpeq":"\u224E","bumpeq":"\u224F","Cacute":"\u0106","cacute":"\u0107","capand":"\u2A44","capbrcup":"\u2A49","capcap":"\u2A4B","cap":"\u2229","Cap":"\u22D2","capcup":"\u2A47","capdot":"\u2A40","CapitalDifferentialD":"\u2145","caps":"\u2229\uFE00","caret":"\u2041","caron":"\u02C7","Cayleys":"\u212D","ccaps":"\u2A4D","Ccaron":"\u010C","ccaron":"\u010D","Ccedil":"\u00C7","ccedil":"\u00E7","Ccirc":"\u0108","ccirc":"\u0109","Cconint":"\u2230","ccups":"\u2A4C","ccupssm":"\u2A50","Cdot":"\u010A","cdot":"\u010B","cedil":"\u00B8","Cedilla":"\u00B8","cemptyv":"\u29B2","cent":"\u00A2","centerdot":"\u00B7","CenterDot":"\u00B7","cfr":"\uD835\uDD20","Cfr":"\u212D","CHcy":"\u0427","chcy":"\u0447","check":"\u2713","checkmark":"\u2713","Chi":"\u03A7","chi":"\u03C7","circ":"\u02C6","circeq":"\u2257","circlearrowleft":"\u21BA","circlearrowright":"\u21BB","circledast":"\u229B","circledcirc":"\u229A","circleddash":"\u229D","CircleDot":"\u2299","circledR":"\u00AE","circledS":"\u24C8","CircleMinus":"\u2296","CirclePlus":"\u2295","CircleTimes":"\u2297","cir":"\u25CB","cirE":"\u29C3","cire":"\u2257","cirfnint":"\u2A10","cirmid":"\u2AEF","cirscir":"\u29C2","ClockwiseContourIntegral":"\u2232","CloseCurlyDoubleQuote":"\u201D","CloseCurlyQuote":"\u2019","clubs":"\u2663","clubsuit":"\u2663","colon":":","Colon":"\u2237","Colone":"\u2A74","colone":"\u2254","coloneq":"\u2254","comma":",","commat":"@","comp":"\u2201","compfn":"\u2218","complement":"\u2201","complexes":"\u2102","cong":"\u2245","congdot":"\u2A6D","Congruent":"\u2261","conint":"\u222E","Conint":"\u222F","ContourIntegral":"\u222E","copf":"\uD835\uDD54","Copf":"\u2102","coprod":"\u2210","Coproduct":"\u2210","copy":"\u00A9","COPY":"\u00A9","copysr":"\u2117","CounterClockwiseContourIntegral":"\u2233","crarr":"\u21B5","cross":"\u2717","Cross":"\u2A2F","Cscr":"\uD835\uDC9E","cscr":"\uD835\uDCB8","csub":"\u2ACF","csube":"\u2AD1","csup":"\u2AD0","csupe":"\u2AD2","ctdot":"\u22EF","cudarrl":"\u2938","cudarrr":"\u2935","cuepr":"\u22DE","cuesc":"\u22DF","cularr":"\u21B6","cularrp":"\u293D","cupbrcap":"\u2A48","cupcap":"\u2A46","CupCap":"\u224D","cup":"\u222A","Cup":"\u22D3","cupcup":"\u2A4A","cupdot":"\u228D","cupor":"\u2A45","cups":"\u222A\uFE00","curarr":"\u21B7","curarrm":"\u293C","curlyeqprec":"\u22DE","curlyeqsucc":"\u22DF","curlyvee":"\u22CE","curlywedge":"\u22CF","curren":"\u00A4","curvearrowleft":"\u21B6","curvearrowright":"\u21B7","cuvee":"\u22CE","cuwed":"\u22CF","cwconint":"\u2232","cwint":"\u2231","cylcty":"\u232D","dagger":"\u2020","Dagger":"\u2021","daleth":"\u2138","darr":"\u2193","Darr":"\u21A1","dArr":"\u21D3","dash":"\u2010","Dashv":"\u2AE4","dashv":"\u22A3","dbkarow":"\u290F","dblac":"\u02DD","Dcaron":"\u010E","dcaron":"\u010F","Dcy":"\u0414","dcy":"\u0434","ddagger":"\u2021","ddarr":"\u21CA","DD":"\u2145","dd":"\u2146","DDotrahd":"\u2911","ddotseq":"\u2A77","deg":"\u00B0","Del":"\u2207","Delta":"\u0394","delta":"\u03B4","demptyv":"\u29B1","dfisht":"\u297F","Dfr":"\uD835\uDD07","dfr":"\uD835\uDD21","dHar":"\u2965","dharl":"\u21C3","dharr":"\u21C2","DiacriticalAcute":"\u00B4","DiacriticalDot":"\u02D9","DiacriticalDoubleAcute":"\u02DD","DiacriticalGrave":"`","DiacriticalTilde":"\u02DC","diam":"\u22C4","diamond":"\u22C4","Diamond":"\u22C4","diamondsuit":"\u2666","diams":"\u2666","die":"\u00A8","DifferentialD":"\u2146","digamma":"\u03DD","disin":"\u22F2","div":"\u00F7","divide":"\u00F7","divideontimes":"\u22C7","divonx":"\u22C7","DJcy":"\u0402","djcy":"\u0452","dlcorn":"\u231E","dlcrop":"\u230D","dollar":"$","Dopf":"\uD835\uDD3B","dopf":"\uD835\uDD55","Dot":"\u00A8","dot":"\u02D9","DotDot":"\u20DC","doteq":"\u2250","doteqdot":"\u2251","DotEqual":"\u2250","dotminus":"\u2238","dotplus":"\u2214","dotsquare":"\u22A1","doublebarwedge":"\u2306","DoubleContourIntegral":"\u222F","DoubleDot":"\u00A8","DoubleDownArrow":"\u21D3","DoubleLeftArrow":"\u21D0","DoubleLeftRightArrow":"\u21D4","DoubleLeftTee":"\u2AE4","DoubleLongLeftArrow":"\u27F8","DoubleLongLeftRightArrow":"\u27FA","DoubleLongRightArrow":"\u27F9","DoubleRightArrow":"\u21D2","DoubleRightTee":"\u22A8","DoubleUpArrow":"\u21D1","DoubleUpDownArrow":"\u21D5","DoubleVerticalBar":"\u2225","DownArrowBar":"\u2913","downarrow":"\u2193","DownArrow":"\u2193","Downarrow":"\u21D3","DownArrowUpArrow":"\u21F5","DownBreve":"\u0311","downdownarrows":"\u21CA","downharpoonleft":"\u21C3","downharpoonright":"\u21C2","DownLeftRightVector":"\u2950","DownLeftTeeVector":"\u295E","DownLeftVectorBar":"\u2956","DownLeftVector":"\u21BD","DownRightTeeVector":"\u295F","DownRightVectorBar":"\u2957","DownRightVector":"\u21C1","DownTeeArrow":"\u21A7","DownTee":"\u22A4","drbkarow":"\u2910","drcorn":"\u231F","drcrop":"\u230C","Dscr":"\uD835\uDC9F","dscr":"\uD835\uDCB9","DScy":"\u0405","dscy":"\u0455","dsol":"\u29F6","Dstrok":"\u0110","dstrok":"\u0111","dtdot":"\u22F1","dtri":"\u25BF","dtrif":"\u25BE","duarr":"\u21F5","duhar":"\u296F","dwangle":"\u29A6","DZcy":"\u040F","dzcy":"\u045F","dzigrarr":"\u27FF","Eacute":"\u00C9","eacute":"\u00E9","easter":"\u2A6E","Ecaron":"\u011A","ecaron":"\u011B","Ecirc":"\u00CA","ecirc":"\u00EA","ecir":"\u2256","ecolon":"\u2255","Ecy":"\u042D","ecy":"\u044D","eDDot":"\u2A77","Edot":"\u0116","edot":"\u0117","eDot":"\u2251","ee":"\u2147","efDot":"\u2252","Efr":"\uD835\uDD08","efr":"\uD835\uDD22","eg":"\u2A9A","Egrave":"\u00C8","egrave":"\u00E8","egs":"\u2A96","egsdot":"\u2A98","el":"\u2A99","Element":"\u2208","elinters":"\u23E7","ell":"\u2113","els":"\u2A95","elsdot":"\u2A97","Emacr":"\u0112","emacr":"\u0113","empty":"\u2205","emptyset":"\u2205","EmptySmallSquare":"\u25FB","emptyv":"\u2205","EmptyVerySmallSquare":"\u25AB","emsp13":"\u2004","emsp14":"\u2005","emsp":"\u2003","ENG":"\u014A","eng":"\u014B","ensp":"\u2002","Eogon":"\u0118","eogon":"\u0119","Eopf":"\uD835\uDD3C","eopf":"\uD835\uDD56","epar":"\u22D5","eparsl":"\u29E3","eplus":"\u2A71","epsi":"\u03B5","Epsilon":"\u0395","epsilon":"\u03B5","epsiv":"\u03F5","eqcirc":"\u2256","eqcolon":"\u2255","eqsim":"\u2242","eqslantgtr":"\u2A96","eqslantless":"\u2A95","Equal":"\u2A75","equals":"=","EqualTilde":"\u2242","equest":"\u225F","Equilibrium":"\u21CC","equiv":"\u2261","equivDD":"\u2A78","eqvparsl":"\u29E5","erarr":"\u2971","erDot":"\u2253","escr":"\u212F","Escr":"\u2130","esdot":"\u2250","Esim":"\u2A73","esim":"\u2242","Eta":"\u0397","eta":"\u03B7","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","euro":"\u20AC","excl":"!","exist":"\u2203","Exists":"\u2203","expectation":"\u2130","exponentiale":"\u2147","ExponentialE":"\u2147","fallingdotseq":"\u2252","Fcy":"\u0424","fcy":"\u0444","female":"\u2640","ffilig":"\uFB03","fflig":"\uFB00","ffllig":"\uFB04","Ffr":"\uD835\uDD09","ffr":"\uD835\uDD23","filig":"\uFB01","FilledSmallSquare":"\u25FC","FilledVerySmallSquare":"\u25AA","fjlig":"fj","flat":"\u266D","fllig":"\uFB02","fltns":"\u25B1","fnof":"\u0192","Fopf":"\uD835\uDD3D","fopf":"\uD835\uDD57","forall":"\u2200","ForAll":"\u2200","fork":"\u22D4","forkv":"\u2AD9","Fouriertrf":"\u2131","fpartint":"\u2A0D","frac12":"\u00BD","frac13":"\u2153","frac14":"\u00BC","frac15":"\u2155","frac16":"\u2159","frac18":"\u215B","frac23":"\u2154","frac25":"\u2156","frac34":"\u00BE","frac35":"\u2157","frac38":"\u215C","frac45":"\u2158","frac56":"\u215A","frac58":"\u215D","frac78":"\u215E","frasl":"\u2044","frown":"\u2322","fscr":"\uD835\uDCBB","Fscr":"\u2131","gacute":"\u01F5","Gamma":"\u0393","gamma":"\u03B3","Gammad":"\u03DC","gammad":"\u03DD","gap":"\u2A86","Gbreve":"\u011E","gbreve":"\u011F","Gcedil":"\u0122","Gcirc":"\u011C","gcirc":"\u011D","Gcy":"\u0413","gcy":"\u0433","Gdot":"\u0120","gdot":"\u0121","ge":"\u2265","gE":"\u2267","gEl":"\u2A8C","gel":"\u22DB","geq":"\u2265","geqq":"\u2267","geqslant":"\u2A7E","gescc":"\u2AA9","ges":"\u2A7E","gesdot":"\u2A80","gesdoto":"\u2A82","gesdotol":"\u2A84","gesl":"\u22DB\uFE00","gesles":"\u2A94","Gfr":"\uD835\uDD0A","gfr":"\uD835\uDD24","gg":"\u226B","Gg":"\u22D9","ggg":"\u22D9","gimel":"\u2137","GJcy":"\u0403","gjcy":"\u0453","gla":"\u2AA5","gl":"\u2277","glE":"\u2A92","glj":"\u2AA4","gnap":"\u2A8A","gnapprox":"\u2A8A","gne":"\u2A88","gnE":"\u2269","gneq":"\u2A88","gneqq":"\u2269","gnsim":"\u22E7","Gopf":"\uD835\uDD3E","gopf":"\uD835\uDD58","grave":"`","GreaterEqual":"\u2265","GreaterEqualLess":"\u22DB","GreaterFullEqual":"\u2267","GreaterGreater":"\u2AA2","GreaterLess":"\u2277","GreaterSlantEqual":"\u2A7E","GreaterTilde":"\u2273","Gscr":"\uD835\uDCA2","gscr":"\u210A","gsim":"\u2273","gsime":"\u2A8E","gsiml":"\u2A90","gtcc":"\u2AA7","gtcir":"\u2A7A","gt":">","GT":">","Gt":"\u226B","gtdot":"\u22D7","gtlPar":"\u2995","gtquest":"\u2A7C","gtrapprox":"\u2A86","gtrarr":"\u2978","gtrdot":"\u22D7","gtreqless":"\u22DB","gtreqqless":"\u2A8C","gtrless":"\u2277","gtrsim":"\u2273","gvertneqq":"\u2269\uFE00","gvnE":"\u2269\uFE00","Hacek":"\u02C7","hairsp":"\u200A","half":"\u00BD","hamilt":"\u210B","HARDcy":"\u042A","hardcy":"\u044A","harrcir":"\u2948","harr":"\u2194","hArr":"\u21D4","harrw":"\u21AD","Hat":"^","hbar":"\u210F","Hcirc":"\u0124","hcirc":"\u0125","hearts":"\u2665","heartsuit":"\u2665","hellip":"\u2026","hercon":"\u22B9","hfr":"\uD835\uDD25","Hfr":"\u210C","HilbertSpace":"\u210B","hksearow":"\u2925","hkswarow":"\u2926","hoarr":"\u21FF","homtht":"\u223B","hookleftarrow":"\u21A9","hookrightarrow":"\u21AA","hopf":"\uD835\uDD59","Hopf":"\u210D","horbar":"\u2015","HorizontalLine":"\u2500","hscr":"\uD835\uDCBD","Hscr":"\u210B","hslash":"\u210F","Hstrok":"\u0126","hstrok":"\u0127","HumpDownHump":"\u224E","HumpEqual":"\u224F","hybull":"\u2043","hyphen":"\u2010","Iacute":"\u00CD","iacute":"\u00ED","ic":"\u2063","Icirc":"\u00CE","icirc":"\u00EE","Icy":"\u0418","icy":"\u0438","Idot":"\u0130","IEcy":"\u0415","iecy":"\u0435","iexcl":"\u00A1","iff":"\u21D4","ifr":"\uD835\uDD26","Ifr":"\u2111","Igrave":"\u00CC","igrave":"\u00EC","ii":"\u2148","iiiint":"\u2A0C","iiint":"\u222D","iinfin":"\u29DC","iiota":"\u2129","IJlig":"\u0132","ijlig":"\u0133","Imacr":"\u012A","imacr":"\u012B","image":"\u2111","ImaginaryI":"\u2148","imagline":"\u2110","imagpart":"\u2111","imath":"\u0131","Im":"\u2111","imof":"\u22B7","imped":"\u01B5","Implies":"\u21D2","incare":"\u2105","in":"\u2208","infin":"\u221E","infintie":"\u29DD","inodot":"\u0131","intcal":"\u22BA","int":"\u222B","Int":"\u222C","integers":"\u2124","Integral":"\u222B","intercal":"\u22BA","Intersection":"\u22C2","intlarhk":"\u2A17","intprod":"\u2A3C","InvisibleComma":"\u2063","InvisibleTimes":"\u2062","IOcy":"\u0401","iocy":"\u0451","Iogon":"\u012E","iogon":"\u012F","Iopf":"\uD835\uDD40","iopf":"\uD835\uDD5A","Iota":"\u0399","iota":"\u03B9","iprod":"\u2A3C","iquest":"\u00BF","iscr":"\uD835\uDCBE","Iscr":"\u2110","isin":"\u2208","isindot":"\u22F5","isinE":"\u22F9","isins":"\u22F4","isinsv":"\u22F3","isinv":"\u2208","it":"\u2062","Itilde":"\u0128","itilde":"\u0129","Iukcy":"\u0406","iukcy":"\u0456","Iuml":"\u00CF","iuml":"\u00EF","Jcirc":"\u0134","jcirc":"\u0135","Jcy":"\u0419","jcy":"\u0439","Jfr":"\uD835\uDD0D","jfr":"\uD835\uDD27","jmath":"\u0237","Jopf":"\uD835\uDD41","jopf":"\uD835\uDD5B","Jscr":"\uD835\uDCA5","jscr":"\uD835\uDCBF","Jsercy":"\u0408","jsercy":"\u0458","Jukcy":"\u0404","jukcy":"\u0454","Kappa":"\u039A","kappa":"\u03BA","kappav":"\u03F0","Kcedil":"\u0136","kcedil":"\u0137","Kcy":"\u041A","kcy":"\u043A","Kfr":"\uD835\uDD0E","kfr":"\uD835\uDD28","kgreen":"\u0138","KHcy":"\u0425","khcy":"\u0445","KJcy":"\u040C","kjcy":"\u045C","Kopf":"\uD835\uDD42","kopf":"\uD835\uDD5C","Kscr":"\uD835\uDCA6","kscr":"\uD835\uDCC0","lAarr":"\u21DA","Lacute":"\u0139","lacute":"\u013A","laemptyv":"\u29B4","lagran":"\u2112","Lambda":"\u039B","lambda":"\u03BB","lang":"\u27E8","Lang":"\u27EA","langd":"\u2991","langle":"\u27E8","lap":"\u2A85","Laplacetrf":"\u2112","laquo":"\u00AB","larrb":"\u21E4","larrbfs":"\u291F","larr":"\u2190","Larr":"\u219E","lArr":"\u21D0","larrfs":"\u291D","larrhk":"\u21A9","larrlp":"\u21AB","larrpl":"\u2939","larrsim":"\u2973","larrtl":"\u21A2","latail":"\u2919","lAtail":"\u291B","lat":"\u2AAB","late":"\u2AAD","lates":"\u2AAD\uFE00","lbarr":"\u290C","lBarr":"\u290E","lbbrk":"\u2772","lbrace":"{","lbrack":"[","lbrke":"\u298B","lbrksld":"\u298F","lbrkslu":"\u298D","Lcaron":"\u013D","lcaron":"\u013E","Lcedil":"\u013B","lcedil":"\u013C","lceil":"\u2308","lcub":"{","Lcy":"\u041B","lcy":"\u043B","ldca":"\u2936","ldquo":"\u201C","ldquor":"\u201E","ldrdhar":"\u2967","ldrushar":"\u294B","ldsh":"\u21B2","le":"\u2264","lE":"\u2266","LeftAngleBracket":"\u27E8","LeftArrowBar":"\u21E4","leftarrow":"\u2190","LeftArrow":"\u2190","Leftarrow":"\u21D0","LeftArrowRightArrow":"\u21C6","leftarrowtail":"\u21A2","LeftCeiling":"\u2308","LeftDoubleBracket":"\u27E6","LeftDownTeeVector":"\u2961","LeftDownVectorBar":"\u2959","LeftDownVector":"\u21C3","LeftFloor":"\u230A","leftharpoondown":"\u21BD","leftharpoonup":"\u21BC","leftleftarrows":"\u21C7","leftrightarrow":"\u2194","LeftRightArrow":"\u2194","Leftrightarrow":"\u21D4","leftrightarrows":"\u21C6","leftrightharpoons":"\u21CB","leftrightsquigarrow":"\u21AD","LeftRightVector":"\u294E","LeftTeeArrow":"\u21A4","LeftTee":"\u22A3","LeftTeeVector":"\u295A","leftthreetimes":"\u22CB","LeftTriangleBar":"\u29CF","LeftTriangle":"\u22B2","LeftTriangleEqual":"\u22B4","LeftUpDownVector":"\u2951","LeftUpTeeVector":"\u2960","LeftUpVectorBar":"\u2958","LeftUpVector":"\u21BF","LeftVectorBar":"\u2952","LeftVector":"\u21BC","lEg":"\u2A8B","leg":"\u22DA","leq":"\u2264","leqq":"\u2266","leqslant":"\u2A7D","lescc":"\u2AA8","les":"\u2A7D","lesdot":"\u2A7F","lesdoto":"\u2A81","lesdotor":"\u2A83","lesg":"\u22DA\uFE00","lesges":"\u2A93","lessapprox":"\u2A85","lessdot":"\u22D6","lesseqgtr":"\u22DA","lesseqqgtr":"\u2A8B","LessEqualGreater":"\u22DA","LessFullEqual":"\u2266","LessGreater":"\u2276","lessgtr":"\u2276","LessLess":"\u2AA1","lesssim":"\u2272","LessSlantEqual":"\u2A7D","LessTilde":"\u2272","lfisht":"\u297C","lfloor":"\u230A","Lfr":"\uD835\uDD0F","lfr":"\uD835\uDD29","lg":"\u2276","lgE":"\u2A91","lHar":"\u2962","lhard":"\u21BD","lharu":"\u21BC","lharul":"\u296A","lhblk":"\u2584","LJcy":"\u0409","ljcy":"\u0459","llarr":"\u21C7","ll":"\u226A","Ll":"\u22D8","llcorner":"\u231E","Lleftarrow":"\u21DA","llhard":"\u296B","lltri":"\u25FA","Lmidot":"\u013F","lmidot":"\u0140","lmoustache":"\u23B0","lmoust":"\u23B0","lnap":"\u2A89","lnapprox":"\u2A89","lne":"\u2A87","lnE":"\u2268","lneq":"\u2A87","lneqq":"\u2268","lnsim":"\u22E6","loang":"\u27EC","loarr":"\u21FD","lobrk":"\u27E6","longleftarrow":"\u27F5","LongLeftArrow":"\u27F5","Longleftarrow":"\u27F8","longleftrightarrow":"\u27F7","LongLeftRightArrow":"\u27F7","Longleftrightarrow":"\u27FA","longmapsto":"\u27FC","longrightarrow":"\u27F6","LongRightArrow":"\u27F6","Longrightarrow":"\u27F9","looparrowleft":"\u21AB","looparrowright":"\u21AC","lopar":"\u2985","Lopf":"\uD835\uDD43","lopf":"\uD835\uDD5D","loplus":"\u2A2D","lotimes":"\u2A34","lowast":"\u2217","lowbar":"_","LowerLeftArrow":"\u2199","LowerRightArrow":"\u2198","loz":"\u25CA","lozenge":"\u25CA","lozf":"\u29EB","lpar":"(","lparlt":"\u2993","lrarr":"\u21C6","lrcorner":"\u231F","lrhar":"\u21CB","lrhard":"\u296D","lrm":"\u200E","lrtri":"\u22BF","lsaquo":"\u2039","lscr":"\uD835\uDCC1","Lscr":"\u2112","lsh":"\u21B0","Lsh":"\u21B0","lsim":"\u2272","lsime":"\u2A8D","lsimg":"\u2A8F","lsqb":"[","lsquo":"\u2018","lsquor":"\u201A","Lstrok":"\u0141","lstrok":"\u0142","ltcc":"\u2AA6","ltcir":"\u2A79","lt":"<","LT":"<","Lt":"\u226A","ltdot":"\u22D6","lthree":"\u22CB","ltimes":"\u22C9","ltlarr":"\u2976","ltquest":"\u2A7B","ltri":"\u25C3","ltrie":"\u22B4","ltrif":"\u25C2","ltrPar":"\u2996","lurdshar":"\u294A","luruhar":"\u2966","lvertneqq":"\u2268\uFE00","lvnE":"\u2268\uFE00","macr":"\u00AF","male":"\u2642","malt":"\u2720","maltese":"\u2720","Map":"\u2905","map":"\u21A6","mapsto":"\u21A6","mapstodown":"\u21A7","mapstoleft":"\u21A4","mapstoup":"\u21A5","marker":"\u25AE","mcomma":"\u2A29","Mcy":"\u041C","mcy":"\u043C","mdash":"\u2014","mDDot":"\u223A","measuredangle":"\u2221","MediumSpace":"\u205F","Mellintrf":"\u2133","Mfr":"\uD835\uDD10","mfr":"\uD835\uDD2A","mho":"\u2127","micro":"\u00B5","midast":"*","midcir":"\u2AF0","mid":"\u2223","middot":"\u00B7","minusb":"\u229F","minus":"\u2212","minusd":"\u2238","minusdu":"\u2A2A","MinusPlus":"\u2213","mlcp":"\u2ADB","mldr":"\u2026","mnplus":"\u2213","models":"\u22A7","Mopf":"\uD835\uDD44","mopf":"\uD835\uDD5E","mp":"\u2213","mscr":"\uD835\uDCC2","Mscr":"\u2133","mstpos":"\u223E","Mu":"\u039C","mu":"\u03BC","multimap":"\u22B8","mumap":"\u22B8","nabla":"\u2207","Nacute":"\u0143","nacute":"\u0144","nang":"\u2220\u20D2","nap":"\u2249","napE":"\u2A70\u0338","napid":"\u224B\u0338","napos":"\u0149","napprox":"\u2249","natural":"\u266E","naturals":"\u2115","natur":"\u266E","nbsp":"\u00A0","nbump":"\u224E\u0338","nbumpe":"\u224F\u0338","ncap":"\u2A43","Ncaron":"\u0147","ncaron":"\u0148","Ncedil":"\u0145","ncedil":"\u0146","ncong":"\u2247","ncongdot":"\u2A6D\u0338","ncup":"\u2A42","Ncy":"\u041D","ncy":"\u043D","ndash":"\u2013","nearhk":"\u2924","nearr":"\u2197","neArr":"\u21D7","nearrow":"\u2197","ne":"\u2260","nedot":"\u2250\u0338","NegativeMediumSpace":"\u200B","NegativeThickSpace":"\u200B","NegativeThinSpace":"\u200B","NegativeVeryThinSpace":"\u200B","nequiv":"\u2262","nesear":"\u2928","nesim":"\u2242\u0338","NestedGreaterGreater":"\u226B","NestedLessLess":"\u226A","NewLine":"\n","nexist":"\u2204","nexists":"\u2204","Nfr":"\uD835\uDD11","nfr":"\uD835\uDD2B","ngE":"\u2267\u0338","nge":"\u2271","ngeq":"\u2271","ngeqq":"\u2267\u0338","ngeqslant":"\u2A7E\u0338","nges":"\u2A7E\u0338","nGg":"\u22D9\u0338","ngsim":"\u2275","nGt":"\u226B\u20D2","ngt":"\u226F","ngtr":"\u226F","nGtv":"\u226B\u0338","nharr":"\u21AE","nhArr":"\u21CE","nhpar":"\u2AF2","ni":"\u220B","nis":"\u22FC","nisd":"\u22FA","niv":"\u220B","NJcy":"\u040A","njcy":"\u045A","nlarr":"\u219A","nlArr":"\u21CD","nldr":"\u2025","nlE":"\u2266\u0338","nle":"\u2270","nleftarrow":"\u219A","nLeftarrow":"\u21CD","nleftrightarrow":"\u21AE","nLeftrightarrow":"\u21CE","nleq":"\u2270","nleqq":"\u2266\u0338","nleqslant":"\u2A7D\u0338","nles":"\u2A7D\u0338","nless":"\u226E","nLl":"\u22D8\u0338","nlsim":"\u2274","nLt":"\u226A\u20D2","nlt":"\u226E","nltri":"\u22EA","nltrie":"\u22EC","nLtv":"\u226A\u0338","nmid":"\u2224","NoBreak":"\u2060","NonBreakingSpace":"\u00A0","nopf":"\uD835\uDD5F","Nopf":"\u2115","Not":"\u2AEC","not":"\u00AC","NotCongruent":"\u2262","NotCupCap":"\u226D","NotDoubleVerticalBar":"\u2226","NotElement":"\u2209","NotEqual":"\u2260","NotEqualTilde":"\u2242\u0338","NotExists":"\u2204","NotGreater":"\u226F","NotGreaterEqual":"\u2271","NotGreaterFullEqual":"\u2267\u0338","NotGreaterGreater":"\u226B\u0338","NotGreaterLess":"\u2279","NotGreaterSlantEqual":"\u2A7E\u0338","NotGreaterTilde":"\u2275","NotHumpDownHump":"\u224E\u0338","NotHumpEqual":"\u224F\u0338","notin":"\u2209","notindot":"\u22F5\u0338","notinE":"\u22F9\u0338","notinva":"\u2209","notinvb":"\u22F7","notinvc":"\u22F6","NotLeftTriangleBar":"\u29CF\u0338","NotLeftTriangle":"\u22EA","NotLeftTriangleEqual":"\u22EC","NotLess":"\u226E","NotLessEqual":"\u2270","NotLessGreater":"\u2278","NotLessLess":"\u226A\u0338","NotLessSlantEqual":"\u2A7D\u0338","NotLessTilde":"\u2274","NotNestedGreaterGreater":"\u2AA2\u0338","NotNestedLessLess":"\u2AA1\u0338","notni":"\u220C","notniva":"\u220C","notnivb":"\u22FE","notnivc":"\u22FD","NotPrecedes":"\u2280","NotPrecedesEqual":"\u2AAF\u0338","NotPrecedesSlantEqual":"\u22E0","NotReverseElement":"\u220C","NotRightTriangleBar":"\u29D0\u0338","NotRightTriangle":"\u22EB","NotRightTriangleEqual":"\u22ED","NotSquareSubset":"\u228F\u0338","NotSquareSubsetEqual":"\u22E2","NotSquareSuperset":"\u2290\u0338","NotSquareSupersetEqual":"\u22E3","NotSubset":"\u2282\u20D2","NotSubsetEqual":"\u2288","NotSucceeds":"\u2281","NotSucceedsEqual":"\u2AB0\u0338","NotSucceedsSlantEqual":"\u22E1","NotSucceedsTilde":"\u227F\u0338","NotSuperset":"\u2283\u20D2","NotSupersetEqual":"\u2289","NotTilde":"\u2241","NotTildeEqual":"\u2244","NotTildeFullEqual":"\u2247","NotTildeTilde":"\u2249","NotVerticalBar":"\u2224","nparallel":"\u2226","npar":"\u2226","nparsl":"\u2AFD\u20E5","npart":"\u2202\u0338","npolint":"\u2A14","npr":"\u2280","nprcue":"\u22E0","nprec":"\u2280","npreceq":"\u2AAF\u0338","npre":"\u2AAF\u0338","nrarrc":"\u2933\u0338","nrarr":"\u219B","nrArr":"\u21CF","nrarrw":"\u219D\u0338","nrightarrow":"\u219B","nRightarrow":"\u21CF","nrtri":"\u22EB","nrtrie":"\u22ED","nsc":"\u2281","nsccue":"\u22E1","nsce":"\u2AB0\u0338","Nscr":"\uD835\uDCA9","nscr":"\uD835\uDCC3","nshortmid":"\u2224","nshortparallel":"\u2226","nsim":"\u2241","nsime":"\u2244","nsimeq":"\u2244","nsmid":"\u2224","nspar":"\u2226","nsqsube":"\u22E2","nsqsupe":"\u22E3","nsub":"\u2284","nsubE":"\u2AC5\u0338","nsube":"\u2288","nsubset":"\u2282\u20D2","nsubseteq":"\u2288","nsubseteqq":"\u2AC5\u0338","nsucc":"\u2281","nsucceq":"\u2AB0\u0338","nsup":"\u2285","nsupE":"\u2AC6\u0338","nsupe":"\u2289","nsupset":"\u2283\u20D2","nsupseteq":"\u2289","nsupseteqq":"\u2AC6\u0338","ntgl":"\u2279","Ntilde":"\u00D1","ntilde":"\u00F1","ntlg":"\u2278","ntriangleleft":"\u22EA","ntrianglelefteq":"\u22EC","ntriangleright":"\u22EB","ntrianglerighteq":"\u22ED","Nu":"\u039D","nu":"\u03BD","num":"#","numero":"\u2116","numsp":"\u2007","nvap":"\u224D\u20D2","nvdash":"\u22AC","nvDash":"\u22AD","nVdash":"\u22AE","nVDash":"\u22AF","nvge":"\u2265\u20D2","nvgt":">\u20D2","nvHarr":"\u2904","nvinfin":"\u29DE","nvlArr":"\u2902","nvle":"\u2264\u20D2","nvlt":"<\u20D2","nvltrie":"\u22B4\u20D2","nvrArr":"\u2903","nvrtrie":"\u22B5\u20D2","nvsim":"\u223C\u20D2","nwarhk":"\u2923","nwarr":"\u2196","nwArr":"\u21D6","nwarrow":"\u2196","nwnear":"\u2927","Oacute":"\u00D3","oacute":"\u00F3","oast":"\u229B","Ocirc":"\u00D4","ocirc":"\u00F4","ocir":"\u229A","Ocy":"\u041E","ocy":"\u043E","odash":"\u229D","Odblac":"\u0150","odblac":"\u0151","odiv":"\u2A38","odot":"\u2299","odsold":"\u29BC","OElig":"\u0152","oelig":"\u0153","ofcir":"\u29BF","Ofr":"\uD835\uDD12","ofr":"\uD835\uDD2C","ogon":"\u02DB","Ograve":"\u00D2","ograve":"\u00F2","ogt":"\u29C1","ohbar":"\u29B5","ohm":"\u03A9","oint":"\u222E","olarr":"\u21BA","olcir":"\u29BE","olcross":"\u29BB","oline":"\u203E","olt":"\u29C0","Omacr":"\u014C","omacr":"\u014D","Omega":"\u03A9","omega":"\u03C9","Omicron":"\u039F","omicron":"\u03BF","omid":"\u29B6","ominus":"\u2296","Oopf":"\uD835\uDD46","oopf":"\uD835\uDD60","opar":"\u29B7","OpenCurlyDoubleQuote":"\u201C","OpenCurlyQuote":"\u2018","operp":"\u29B9","oplus":"\u2295","orarr":"\u21BB","Or":"\u2A54","or":"\u2228","ord":"\u2A5D","order":"\u2134","orderof":"\u2134","ordf":"\u00AA","ordm":"\u00BA","origof":"\u22B6","oror":"\u2A56","orslope":"\u2A57","orv":"\u2A5B","oS":"\u24C8","Oscr":"\uD835\uDCAA","oscr":"\u2134","Oslash":"\u00D8","oslash":"\u00F8","osol":"\u2298","Otilde":"\u00D5","otilde":"\u00F5","otimesas":"\u2A36","Otimes":"\u2A37","otimes":"\u2297","Ouml":"\u00D6","ouml":"\u00F6","ovbar":"\u233D","OverBar":"\u203E","OverBrace":"\u23DE","OverBracket":"\u23B4","OverParenthesis":"\u23DC","para":"\u00B6","parallel":"\u2225","par":"\u2225","parsim":"\u2AF3","parsl":"\u2AFD","part":"\u2202","PartialD":"\u2202","Pcy":"\u041F","pcy":"\u043F","percnt":"%","period":".","permil":"\u2030","perp":"\u22A5","pertenk":"\u2031","Pfr":"\uD835\uDD13","pfr":"\uD835\uDD2D","Phi":"\u03A6","phi":"\u03C6","phiv":"\u03D5","phmmat":"\u2133","phone":"\u260E","Pi":"\u03A0","pi":"\u03C0","pitchfork":"\u22D4","piv":"\u03D6","planck":"\u210F","planckh":"\u210E","plankv":"\u210F","plusacir":"\u2A23","plusb":"\u229E","pluscir":"\u2A22","plus":"+","plusdo":"\u2214","plusdu":"\u2A25","pluse":"\u2A72","PlusMinus":"\u00B1","plusmn":"\u00B1","plussim":"\u2A26","plustwo":"\u2A27","pm":"\u00B1","Poincareplane":"\u210C","pointint":"\u2A15","popf":"\uD835\uDD61","Popf":"\u2119","pound":"\u00A3","prap":"\u2AB7","Pr":"\u2ABB","pr":"\u227A","prcue":"\u227C","precapprox":"\u2AB7","prec":"\u227A","preccurlyeq":"\u227C","Precedes":"\u227A","PrecedesEqual":"\u2AAF","PrecedesSlantEqual":"\u227C","PrecedesTilde":"\u227E","preceq":"\u2AAF","precnapprox":"\u2AB9","precneqq":"\u2AB5","precnsim":"\u22E8","pre":"\u2AAF","prE":"\u2AB3","precsim":"\u227E","prime":"\u2032","Prime":"\u2033","primes":"\u2119","prnap":"\u2AB9","prnE":"\u2AB5","prnsim":"\u22E8","prod":"\u220F","Product":"\u220F","profalar":"\u232E","profline":"\u2312","profsurf":"\u2313","prop":"\u221D","Proportional":"\u221D","Proportion":"\u2237","propto":"\u221D","prsim":"\u227E","prurel":"\u22B0","Pscr":"\uD835\uDCAB","pscr":"\uD835\uDCC5","Psi":"\u03A8","psi":"\u03C8","puncsp":"\u2008","Qfr":"\uD835\uDD14","qfr":"\uD835\uDD2E","qint":"\u2A0C","qopf":"\uD835\uDD62","Qopf":"\u211A","qprime":"\u2057","Qscr":"\uD835\uDCAC","qscr":"\uD835\uDCC6","quaternions":"\u210D","quatint":"\u2A16","quest":"?","questeq":"\u225F","quot":"\"","QUOT":"\"","rAarr":"\u21DB","race":"\u223D\u0331","Racute":"\u0154","racute":"\u0155","radic":"\u221A","raemptyv":"\u29B3","rang":"\u27E9","Rang":"\u27EB","rangd":"\u2992","range":"\u29A5","rangle":"\u27E9","raquo":"\u00BB","rarrap":"\u2975","rarrb":"\u21E5","rarrbfs":"\u2920","rarrc":"\u2933","rarr":"\u2192","Rarr":"\u21A0","rArr":"\u21D2","rarrfs":"\u291E","rarrhk":"\u21AA","rarrlp":"\u21AC","rarrpl":"\u2945","rarrsim":"\u2974","Rarrtl":"\u2916","rarrtl":"\u21A3","rarrw":"\u219D","ratail":"\u291A","rAtail":"\u291C","ratio":"\u2236","rationals":"\u211A","rbarr":"\u290D","rBarr":"\u290F","RBarr":"\u2910","rbbrk":"\u2773","rbrace":"}","rbrack":"]","rbrke":"\u298C","rbrksld":"\u298E","rbrkslu":"\u2990","Rcaron":"\u0158","rcaron":"\u0159","Rcedil":"\u0156","rcedil":"\u0157","rceil":"\u2309","rcub":"}","Rcy":"\u0420","rcy":"\u0440","rdca":"\u2937","rdldhar":"\u2969","rdquo":"\u201D","rdquor":"\u201D","rdsh":"\u21B3","real":"\u211C","realine":"\u211B","realpart":"\u211C","reals":"\u211D","Re":"\u211C","rect":"\u25AD","reg":"\u00AE","REG":"\u00AE","ReverseElement":"\u220B","ReverseEquilibrium":"\u21CB","ReverseUpEquilibrium":"\u296F","rfisht":"\u297D","rfloor":"\u230B","rfr":"\uD835\uDD2F","Rfr":"\u211C","rHar":"\u2964","rhard":"\u21C1","rharu":"\u21C0","rharul":"\u296C","Rho":"\u03A1","rho":"\u03C1","rhov":"\u03F1","RightAngleBracket":"\u27E9","RightArrowBar":"\u21E5","rightarrow":"\u2192","RightArrow":"\u2192","Rightarrow":"\u21D2","RightArrowLeftArrow":"\u21C4","rightarrowtail":"\u21A3","RightCeiling":"\u2309","RightDoubleBracket":"\u27E7","RightDownTeeVector":"\u295D","RightDownVectorBar":"\u2955","RightDownVector":"\u21C2","RightFloor":"\u230B","rightharpoondown":"\u21C1","rightharpoonup":"\u21C0","rightleftarrows":"\u21C4","rightleftharpoons":"\u21CC","rightrightarrows":"\u21C9","rightsquigarrow":"\u219D","RightTeeArrow":"\u21A6","RightTee":"\u22A2","RightTeeVector":"\u295B","rightthreetimes":"\u22CC","RightTriangleBar":"\u29D0","RightTriangle":"\u22B3","RightTriangleEqual":"\u22B5","RightUpDownVector":"\u294F","RightUpTeeVector":"\u295C","RightUpVectorBar":"\u2954","RightUpVector":"\u21BE","RightVectorBar":"\u2953","RightVector":"\u21C0","ring":"\u02DA","risingdotseq":"\u2253","rlarr":"\u21C4","rlhar":"\u21CC","rlm":"\u200F","rmoustache":"\u23B1","rmoust":"\u23B1","rnmid":"\u2AEE","roang":"\u27ED","roarr":"\u21FE","robrk":"\u27E7","ropar":"\u2986","ropf":"\uD835\uDD63","Ropf":"\u211D","roplus":"\u2A2E","rotimes":"\u2A35","RoundImplies":"\u2970","rpar":")","rpargt":"\u2994","rppolint":"\u2A12","rrarr":"\u21C9","Rrightarrow":"\u21DB","rsaquo":"\u203A","rscr":"\uD835\uDCC7","Rscr":"\u211B","rsh":"\u21B1","Rsh":"\u21B1","rsqb":"]","rsquo":"\u2019","rsquor":"\u2019","rthree":"\u22CC","rtimes":"\u22CA","rtri":"\u25B9","rtrie":"\u22B5","rtrif":"\u25B8","rtriltri":"\u29CE","RuleDelayed":"\u29F4","ruluhar":"\u2968","rx":"\u211E","Sacute":"\u015A","sacute":"\u015B","sbquo":"\u201A","scap":"\u2AB8","Scaron":"\u0160","scaron":"\u0161","Sc":"\u2ABC","sc":"\u227B","sccue":"\u227D","sce":"\u2AB0","scE":"\u2AB4","Scedil":"\u015E","scedil":"\u015F","Scirc":"\u015C","scirc":"\u015D","scnap":"\u2ABA","scnE":"\u2AB6","scnsim":"\u22E9","scpolint":"\u2A13","scsim":"\u227F","Scy":"\u0421","scy":"\u0441","sdotb":"\u22A1","sdot":"\u22C5","sdote":"\u2A66","searhk":"\u2925","searr":"\u2198","seArr":"\u21D8","searrow":"\u2198","sect":"\u00A7","semi":";","seswar":"\u2929","setminus":"\u2216","setmn":"\u2216","sext":"\u2736","Sfr":"\uD835\uDD16","sfr":"\uD835\uDD30","sfrown":"\u2322","sharp":"\u266F","SHCHcy":"\u0429","shchcy":"\u0449","SHcy":"\u0428","shcy":"\u0448","ShortDownArrow":"\u2193","ShortLeftArrow":"\u2190","shortmid":"\u2223","shortparallel":"\u2225","ShortRightArrow":"\u2192","ShortUpArrow":"\u2191","shy":"\u00AD","Sigma":"\u03A3","sigma":"\u03C3","sigmaf":"\u03C2","sigmav":"\u03C2","sim":"\u223C","simdot":"\u2A6A","sime":"\u2243","simeq":"\u2243","simg":"\u2A9E","simgE":"\u2AA0","siml":"\u2A9D","simlE":"\u2A9F","simne":"\u2246","simplus":"\u2A24","simrarr":"\u2972","slarr":"\u2190","SmallCircle":"\u2218","smallsetminus":"\u2216","smashp":"\u2A33","smeparsl":"\u29E4","smid":"\u2223","smile":"\u2323","smt":"\u2AAA","smte":"\u2AAC","smtes":"\u2AAC\uFE00","SOFTcy":"\u042C","softcy":"\u044C","solbar":"\u233F","solb":"\u29C4","sol":"/","Sopf":"\uD835\uDD4A","sopf":"\uD835\uDD64","spades":"\u2660","spadesuit":"\u2660","spar":"\u2225","sqcap":"\u2293","sqcaps":"\u2293\uFE00","sqcup":"\u2294","sqcups":"\u2294\uFE00","Sqrt":"\u221A","sqsub":"\u228F","sqsube":"\u2291","sqsubset":"\u228F","sqsubseteq":"\u2291","sqsup":"\u2290","sqsupe":"\u2292","sqsupset":"\u2290","sqsupseteq":"\u2292","square":"\u25A1","Square":"\u25A1","SquareIntersection":"\u2293","SquareSubset":"\u228F","SquareSubsetEqual":"\u2291","SquareSuperset":"\u2290","SquareSupersetEqual":"\u2292","SquareUnion":"\u2294","squarf":"\u25AA","squ":"\u25A1","squf":"\u25AA","srarr":"\u2192","Sscr":"\uD835\uDCAE","sscr":"\uD835\uDCC8","ssetmn":"\u2216","ssmile":"\u2323","sstarf":"\u22C6","Star":"\u22C6","star":"\u2606","starf":"\u2605","straightepsilon":"\u03F5","straightphi":"\u03D5","strns":"\u00AF","sub":"\u2282","Sub":"\u22D0","subdot":"\u2ABD","subE":"\u2AC5","sube":"\u2286","subedot":"\u2AC3","submult":"\u2AC1","subnE":"\u2ACB","subne":"\u228A","subplus":"\u2ABF","subrarr":"\u2979","subset":"\u2282","Subset":"\u22D0","subseteq":"\u2286","subseteqq":"\u2AC5","SubsetEqual":"\u2286","subsetneq":"\u228A","subsetneqq":"\u2ACB","subsim":"\u2AC7","subsub":"\u2AD5","subsup":"\u2AD3","succapprox":"\u2AB8","succ":"\u227B","succcurlyeq":"\u227D","Succeeds":"\u227B","SucceedsEqual":"\u2AB0","SucceedsSlantEqual":"\u227D","SucceedsTilde":"\u227F","succeq":"\u2AB0","succnapprox":"\u2ABA","succneqq":"\u2AB6","succnsim":"\u22E9","succsim":"\u227F","SuchThat":"\u220B","sum":"\u2211","Sum":"\u2211","sung":"\u266A","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","sup":"\u2283","Sup":"\u22D1","supdot":"\u2ABE","supdsub":"\u2AD8","supE":"\u2AC6","supe":"\u2287","supedot":"\u2AC4","Superset":"\u2283","SupersetEqual":"\u2287","suphsol":"\u27C9","suphsub":"\u2AD7","suplarr":"\u297B","supmult":"\u2AC2","supnE":"\u2ACC","supne":"\u228B","supplus":"\u2AC0","supset":"\u2283","Supset":"\u22D1","supseteq":"\u2287","supseteqq":"\u2AC6","supsetneq":"\u228B","supsetneqq":"\u2ACC","supsim":"\u2AC8","supsub":"\u2AD4","supsup":"\u2AD6","swarhk":"\u2926","swarr":"\u2199","swArr":"\u21D9","swarrow":"\u2199","swnwar":"\u292A","szlig":"\u00DF","Tab":"\t","target":"\u2316","Tau":"\u03A4","tau":"\u03C4","tbrk":"\u23B4","Tcaron":"\u0164","tcaron":"\u0165","Tcedil":"\u0162","tcedil":"\u0163","Tcy":"\u0422","tcy":"\u0442","tdot":"\u20DB","telrec":"\u2315","Tfr":"\uD835\uDD17","tfr":"\uD835\uDD31","there4":"\u2234","therefore":"\u2234","Therefore":"\u2234","Theta":"\u0398","theta":"\u03B8","thetasym":"\u03D1","thetav":"\u03D1","thickapprox":"\u2248","thicksim":"\u223C","ThickSpace":"\u205F\u200A","ThinSpace":"\u2009","thinsp":"\u2009","thkap":"\u2248","thksim":"\u223C","THORN":"\u00DE","thorn":"\u00FE","tilde":"\u02DC","Tilde":"\u223C","TildeEqual":"\u2243","TildeFullEqual":"\u2245","TildeTilde":"\u2248","timesbar":"\u2A31","timesb":"\u22A0","times":"\u00D7","timesd":"\u2A30","tint":"\u222D","toea":"\u2928","topbot":"\u2336","topcir":"\u2AF1","top":"\u22A4","Topf":"\uD835\uDD4B","topf":"\uD835\uDD65","topfork":"\u2ADA","tosa":"\u2929","tprime":"\u2034","trade":"\u2122","TRADE":"\u2122","triangle":"\u25B5","triangledown":"\u25BF","triangleleft":"\u25C3","trianglelefteq":"\u22B4","triangleq":"\u225C","triangleright":"\u25B9","trianglerighteq":"\u22B5","tridot":"\u25EC","trie":"\u225C","triminus":"\u2A3A","TripleDot":"\u20DB","triplus":"\u2A39","trisb":"\u29CD","tritime":"\u2A3B","trpezium":"\u23E2","Tscr":"\uD835\uDCAF","tscr":"\uD835\uDCC9","TScy":"\u0426","tscy":"\u0446","TSHcy":"\u040B","tshcy":"\u045B","Tstrok":"\u0166","tstrok":"\u0167","twixt":"\u226C","twoheadleftarrow":"\u219E","twoheadrightarrow":"\u21A0","Uacute":"\u00DA","uacute":"\u00FA","uarr":"\u2191","Uarr":"\u219F","uArr":"\u21D1","Uarrocir":"\u2949","Ubrcy":"\u040E","ubrcy":"\u045E","Ubreve":"\u016C","ubreve":"\u016D","Ucirc":"\u00DB","ucirc":"\u00FB","Ucy":"\u0423","ucy":"\u0443","udarr":"\u21C5","Udblac":"\u0170","udblac":"\u0171","udhar":"\u296E","ufisht":"\u297E","Ufr":"\uD835\uDD18","ufr":"\uD835\uDD32","Ugrave":"\u00D9","ugrave":"\u00F9","uHar":"\u2963","uharl":"\u21BF","uharr":"\u21BE","uhblk":"\u2580","ulcorn":"\u231C","ulcorner":"\u231C","ulcrop":"\u230F","ultri":"\u25F8","Umacr":"\u016A","umacr":"\u016B","uml":"\u00A8","UnderBar":"_","UnderBrace":"\u23DF","UnderBracket":"\u23B5","UnderParenthesis":"\u23DD","Union":"\u22C3","UnionPlus":"\u228E","Uogon":"\u0172","uogon":"\u0173","Uopf":"\uD835\uDD4C","uopf":"\uD835\uDD66","UpArrowBar":"\u2912","uparrow":"\u2191","UpArrow":"\u2191","Uparrow":"\u21D1","UpArrowDownArrow":"\u21C5","updownarrow":"\u2195","UpDownArrow":"\u2195","Updownarrow":"\u21D5","UpEquilibrium":"\u296E","upharpoonleft":"\u21BF","upharpoonright":"\u21BE","uplus":"\u228E","UpperLeftArrow":"\u2196","UpperRightArrow":"\u2197","upsi":"\u03C5","Upsi":"\u03D2","upsih":"\u03D2","Upsilon":"\u03A5","upsilon":"\u03C5","UpTeeArrow":"\u21A5","UpTee":"\u22A5","upuparrows":"\u21C8","urcorn":"\u231D","urcorner":"\u231D","urcrop":"\u230E","Uring":"\u016E","uring":"\u016F","urtri":"\u25F9","Uscr":"\uD835\uDCB0","uscr":"\uD835\uDCCA","utdot":"\u22F0","Utilde":"\u0168","utilde":"\u0169","utri":"\u25B5","utrif":"\u25B4","uuarr":"\u21C8","Uuml":"\u00DC","uuml":"\u00FC","uwangle":"\u29A7","vangrt":"\u299C","varepsilon":"\u03F5","varkappa":"\u03F0","varnothing":"\u2205","varphi":"\u03D5","varpi":"\u03D6","varpropto":"\u221D","varr":"\u2195","vArr":"\u21D5","varrho":"\u03F1","varsigma":"\u03C2","varsubsetneq":"\u228A\uFE00","varsubsetneqq":"\u2ACB\uFE00","varsupsetneq":"\u228B\uFE00","varsupsetneqq":"\u2ACC\uFE00","vartheta":"\u03D1","vartriangleleft":"\u22B2","vartriangleright":"\u22B3","vBar":"\u2AE8","Vbar":"\u2AEB","vBarv":"\u2AE9","Vcy":"\u0412","vcy":"\u0432","vdash":"\u22A2","vDash":"\u22A8","Vdash":"\u22A9","VDash":"\u22AB","Vdashl":"\u2AE6","veebar":"\u22BB","vee":"\u2228","Vee":"\u22C1","veeeq":"\u225A","vellip":"\u22EE","verbar":"|","Verbar":"\u2016","vert":"|","Vert":"\u2016","VerticalBar":"\u2223","VerticalLine":"|","VerticalSeparator":"\u2758","VerticalTilde":"\u2240","VeryThinSpace":"\u200A","Vfr":"\uD835\uDD19","vfr":"\uD835\uDD33","vltri":"\u22B2","vnsub":"\u2282\u20D2","vnsup":"\u2283\u20D2","Vopf":"\uD835\uDD4D","vopf":"\uD835\uDD67","vprop":"\u221D","vrtri":"\u22B3","Vscr":"\uD835\uDCB1","vscr":"\uD835\uDCCB","vsubnE":"\u2ACB\uFE00","vsubne":"\u228A\uFE00","vsupnE":"\u2ACC\uFE00","vsupne":"\u228B\uFE00","Vvdash":"\u22AA","vzigzag":"\u299A","Wcirc":"\u0174","wcirc":"\u0175","wedbar":"\u2A5F","wedge":"\u2227","Wedge":"\u22C0","wedgeq":"\u2259","weierp":"\u2118","Wfr":"\uD835\uDD1A","wfr":"\uD835\uDD34","Wopf":"\uD835\uDD4E","wopf":"\uD835\uDD68","wp":"\u2118","wr":"\u2240","wreath":"\u2240","Wscr":"\uD835\uDCB2","wscr":"\uD835\uDCCC","xcap":"\u22C2","xcirc":"\u25EF","xcup":"\u22C3","xdtri":"\u25BD","Xfr":"\uD835\uDD1B","xfr":"\uD835\uDD35","xharr":"\u27F7","xhArr":"\u27FA","Xi":"\u039E","xi":"\u03BE","xlarr":"\u27F5","xlArr":"\u27F8","xmap":"\u27FC","xnis":"\u22FB","xodot":"\u2A00","Xopf":"\uD835\uDD4F","xopf":"\uD835\uDD69","xoplus":"\u2A01","xotime":"\u2A02","xrarr":"\u27F6","xrArr":"\u27F9","Xscr":"\uD835\uDCB3","xscr":"\uD835\uDCCD","xsqcup":"\u2A06","xuplus":"\u2A04","xutri":"\u25B3","xvee":"\u22C1","xwedge":"\u22C0","Yacute":"\u00DD","yacute":"\u00FD","YAcy":"\u042F","yacy":"\u044F","Ycirc":"\u0176","ycirc":"\u0177","Ycy":"\u042B","ycy":"\u044B","yen":"\u00A5","Yfr":"\uD835\uDD1C","yfr":"\uD835\uDD36","YIcy":"\u0407","yicy":"\u0457","Yopf":"\uD835\uDD50","yopf":"\uD835\uDD6A","Yscr":"\uD835\uDCB4","yscr":"\uD835\uDCCE","YUcy":"\u042E","yucy":"\u044E","yuml":"\u00FF","Yuml":"\u0178","Zacute":"\u0179","zacute":"\u017A","Zcaron":"\u017D","zcaron":"\u017E","Zcy":"\u0417","zcy":"\u0437","Zdot":"\u017B","zdot":"\u017C","zeetrf":"\u2128","ZeroWidthSpace":"\u200B","Zeta":"\u0396","zeta":"\u03B6","zfr":"\uD835\uDD37","Zfr":"\u2128","ZHcy":"\u0416","zhcy":"\u0436","zigrarr":"\u21DD","zopf":"\uD835\uDD6B","Zopf":"\u2124","Zscr":"\uD835\uDCB5","zscr":"\uD835\uDCCF","zwj":"\u200D","zwnj":"\u200C"} \ No newline at end of file diff --git a/node_modules/entities/maps/legacy.json b/node_modules/entities/maps/legacy.json new file mode 100755 index 0000000..f0e82a4 --- /dev/null +++ b/node_modules/entities/maps/legacy.json @@ -0,0 +1 @@ +{"Aacute":"\u00C1","aacute":"\u00E1","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","AElig":"\u00C6","aelig":"\u00E6","Agrave":"\u00C0","agrave":"\u00E0","amp":"&","AMP":"&","Aring":"\u00C5","aring":"\u00E5","Atilde":"\u00C3","atilde":"\u00E3","Auml":"\u00C4","auml":"\u00E4","brvbar":"\u00A6","Ccedil":"\u00C7","ccedil":"\u00E7","cedil":"\u00B8","cent":"\u00A2","copy":"\u00A9","COPY":"\u00A9","curren":"\u00A4","deg":"\u00B0","divide":"\u00F7","Eacute":"\u00C9","eacute":"\u00E9","Ecirc":"\u00CA","ecirc":"\u00EA","Egrave":"\u00C8","egrave":"\u00E8","ETH":"\u00D0","eth":"\u00F0","Euml":"\u00CB","euml":"\u00EB","frac12":"\u00BD","frac14":"\u00BC","frac34":"\u00BE","gt":">","GT":">","Iacute":"\u00CD","iacute":"\u00ED","Icirc":"\u00CE","icirc":"\u00EE","iexcl":"\u00A1","Igrave":"\u00CC","igrave":"\u00EC","iquest":"\u00BF","Iuml":"\u00CF","iuml":"\u00EF","laquo":"\u00AB","lt":"<","LT":"<","macr":"\u00AF","micro":"\u00B5","middot":"\u00B7","nbsp":"\u00A0","not":"\u00AC","Ntilde":"\u00D1","ntilde":"\u00F1","Oacute":"\u00D3","oacute":"\u00F3","Ocirc":"\u00D4","ocirc":"\u00F4","Ograve":"\u00D2","ograve":"\u00F2","ordf":"\u00AA","ordm":"\u00BA","Oslash":"\u00D8","oslash":"\u00F8","Otilde":"\u00D5","otilde":"\u00F5","Ouml":"\u00D6","ouml":"\u00F6","para":"\u00B6","plusmn":"\u00B1","pound":"\u00A3","quot":"\"","QUOT":"\"","raquo":"\u00BB","reg":"\u00AE","REG":"\u00AE","sect":"\u00A7","shy":"\u00AD","sup1":"\u00B9","sup2":"\u00B2","sup3":"\u00B3","szlig":"\u00DF","THORN":"\u00DE","thorn":"\u00FE","times":"\u00D7","Uacute":"\u00DA","uacute":"\u00FA","Ucirc":"\u00DB","ucirc":"\u00FB","Ugrave":"\u00D9","ugrave":"\u00F9","uml":"\u00A8","Uuml":"\u00DC","uuml":"\u00FC","Yacute":"\u00DD","yacute":"\u00FD","yen":"\u00A5","yuml":"\u00FF"} \ No newline at end of file diff --git a/node_modules/entities/maps/xml.json b/node_modules/entities/maps/xml.json new file mode 100755 index 0000000..de8db10 --- /dev/null +++ b/node_modules/entities/maps/xml.json @@ -0,0 +1 @@ +{"amp":"&","apos":"'","gt":">","lt":"<","quot":"\""} diff --git a/node_modules/entities/package.json b/node_modules/entities/package.json new file mode 100755 index 0000000..f685e78 --- /dev/null +++ b/node_modules/entities/package.json @@ -0,0 +1,89 @@ +{ + "_from": "entities@^1.1.1", + "_id": "entities@1.1.2", + "_inBundle": false, + "_integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "_location": "/entities", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "entities@^1.1.1", + "name": "entities", + "escapedName": "entities", + "rawSpec": "^1.1.1", + "saveSpec": null, + "fetchSpec": "^1.1.1" + }, + "_requiredBy": [ + "/mini-html-parser2" + ], + "_resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "_shasum": "bdfa735299664dfafd34529ed4f8522a275fea56", + "_spec": "entities@^1.1.1", + "_where": "/Users/WebTmm/Documents/支付宝小程序/亿分期/node_modules/mini-html-parser2", + "author": { + "name": "Felix Boehm", + "email": "me@feedic.com" + }, + "bugs": { + "url": "https://github.com/fb55/entities/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Encode & decode XML/HTML entities with ease", + "devDependencies": { + "coveralls": "*", + "istanbul": "*", + "jshint": "2", + "mocha": "^5.0.1", + "mocha-lcov-reporter": "*" + }, + "directories": { + "test": "test" + }, + "homepage": "https://github.com/fb55/entities#readme", + "jshintConfig": { + "eqeqeq": true, + "freeze": true, + "latedef": "nofunc", + "noarg": true, + "nonbsp": true, + "quotmark": "double", + "undef": true, + "unused": true, + "trailing": true, + "eqnull": true, + "proto": true, + "smarttabs": true, + "node": true, + "globals": { + "describe": true, + "it": true + } + }, + "keywords": [ + "html", + "xml", + "entity", + "decoding", + "encoding" + ], + "license": "BSD-2-Clause", + "main": "./index.js", + "name": "entities", + "prettier": { + "tabWidth": 4 + }, + "repository": { + "type": "git", + "url": "git://github.com/fb55/entities.git" + }, + "scripts": { + "coveralls": "npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)", + "lcov": "istanbul cover _mocha --report lcovonly -- -R spec", + "lint": "jshint index.js lib/*.js test/*.js", + "test": "mocha && npm run lint" + }, + "version": "1.1.2" +} diff --git a/node_modules/entities/readme.md b/node_modules/entities/readme.md new file mode 100755 index 0000000..d1d9eec --- /dev/null +++ b/node_modules/entities/readme.md @@ -0,0 +1,27 @@ +# entities [![NPM version](http://img.shields.io/npm/v/entities.svg)](https://npmjs.org/package/entities) [![Downloads](https://img.shields.io/npm/dm/entities.svg)](https://npmjs.org/package/entities) [![Build Status](http://img.shields.io/travis/fb55/entities.svg)](http://travis-ci.org/fb55/entities) [![Coverage](http://img.shields.io/coveralls/fb55/entities.svg)](https://coveralls.io/r/fb55/entities) + +En- & decoder for XML/HTML entities. + +## How to… + +### …install `entities` + + npm i entities + +### …use `entities` + +```javascript +var entities = require("entities"); +//encoding +entities.encodeXML("&"); // "&#38;" +entities.encodeHTML("&"); // "&#38;" +//decoding +entities.decodeXML("asdf & ÿ ü '"); // "asdf & ÿ ü '" +entities.decodeHTML("asdf & ÿ ü '"); // "asdf & ÿ ü '" +``` + + + +--- + +License: BSD-2-Clause diff --git a/node_modules/entities/test/mocha.opts b/node_modules/entities/test/mocha.opts new file mode 100755 index 0000000..af53e24 --- /dev/null +++ b/node_modules/entities/test/mocha.opts @@ -0,0 +1,2 @@ +--check-leaks +--reporter spec diff --git a/node_modules/entities/test/test.js b/node_modules/entities/test/test.js new file mode 100755 index 0000000..cb309f3 --- /dev/null +++ b/node_modules/entities/test/test.js @@ -0,0 +1,170 @@ +var assert = require("assert"), + path = require("path"), + entities = require("../"); + +describe("Encode->decode test", function() { + var testcases = [ + { + input: "asdf & ÿ ü '", + xml: "asdf & ÿ ü '", + html: "asdf & ÿ ü '" + }, + { + input: "&", + xml: "&#38;", + html: "&#38;" + } + ]; + testcases.forEach(function(tc) { + var encodedXML = entities.encodeXML(tc.input); + it("should XML encode " + tc.input, function() { + assert.equal(encodedXML, tc.xml); + }); + it("should default to XML encode " + tc.input, function() { + assert.equal(entities.encode(tc.input), tc.xml); + }); + it("should XML decode " + encodedXML, function() { + assert.equal(entities.decodeXML(encodedXML), tc.input); + }); + it("should default to XML encode " + encodedXML, function() { + assert.equal(entities.decode(encodedXML), tc.input); + }); + it("should default strict to XML encode " + encodedXML, function() { + assert.equal(entities.decodeStrict(encodedXML), tc.input); + }); + + var encodedHTML5 = entities.encodeHTML5(tc.input); + it("should HTML5 encode " + tc.input, function() { + assert.equal(encodedHTML5, tc.html); + }); + it("should HTML5 decode " + encodedHTML5, function() { + assert.equal(entities.decodeHTML(encodedHTML5), tc.input); + }); + }); + + it("should encode data URIs (issue 16)", function() { + var data = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAALAAABAAEAAAIBRAA7"; + assert.equal(entities.decode(entities.encode(data)), data); + }); +}); + +describe("Decode test", function() { + var testcases = [ + { input: "&amp;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: "&#x26;", output: "&" }, + { input: "&#X26;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: "&#38;", output: "&" }, + { input: ":", output: ":" }, + { input: ":", output: ":" }, + { input: ":", output: ":" }, + { input: ":", output: ":" } + ]; + testcases.forEach(function(tc) { + it("should XML decode " + tc.input, function() { + assert.equal(entities.decodeXML(tc.input), tc.output); + }); + it("should HTML4 decode " + tc.input, function() { + assert.equal(entities.decodeHTML(tc.input), tc.output); + }); + it("should HTML5 decode " + tc.input, function() { + assert.equal(entities.decodeHTML(tc.input), tc.output); + }); + }); +}); + +var levels = ["xml", "entities"]; + +describe("Documents", function() { + levels + .map(function(n) { + return path.join("..", "maps", n); + }) + .map(require) + .forEach(function(doc, i) { + describe("Decode", function() { + it(levels[i], function() { + Object.keys(doc).forEach(function(e) { + for (var l = i; l < levels.length; l++) { + assert.equal(entities.decode("&" + e + ";", l), doc[e]); + } + }); + }); + }); + + describe("Decode strict", function() { + it(levels[i], function() { + Object.keys(doc).forEach(function(e) { + for (var l = i; l < levels.length; l++) { + assert.equal(entities.decodeStrict("&" + e + ";", l), doc[e]); + } + }); + }); + }); + + describe("Encode", function() { + it(levels[i], function() { + Object.keys(doc).forEach(function(e) { + for (var l = i; l < levels.length; l++) { + assert.equal(entities.decode(entities.encode(doc[e], l), l), doc[e]); + } + }); + }); + }); + }); + + var legacy = require("../maps/legacy.json"); + + describe("Legacy", function() { + it("should decode", runLegacy); + }); + + function runLegacy() { + Object.keys(legacy).forEach(function(e) { + assert.equal(entities.decodeHTML("&" + e), legacy[e]); + }); + } +}); + +var astral = { + "1D306": "\uD834\uDF06", + "1D11E": "\uD834\uDD1E" +}; + +var astralSpecial = { + "80": "\u20AC", + "110000": "\uFFFD" +}; + +describe("Astral entities", function() { + Object.keys(astral).forEach(function(c) { + it("should decode " + astral[c], function() { + assert.equal(entities.decode("&#x" + c + ";"), astral[c]); + }); + + it("should encode " + astral[c], function() { + assert.equal(entities.encode(astral[c]), "&#x" + c + ";"); + }); + + it("should escape " + astral[c], function() { + assert.equal(entities.escape(astral[c]), "&#x" + c + ";"); + }); + }); + + Object.keys(astralSpecial).forEach(function(c) { + it("special should decode \\u" + c, function() { + assert.equal(entities.decode("&#x" + c + ";"), astralSpecial[c]); + }); + }); +}); + +describe("Escape", function() { + it("should always decode ASCII chars", function() { + for (var i = 0; i < 0x7f; i++) { + var c = String.fromCharCode(i); + assert.equal(entities.decodeXML(entities.escape(c)), c); + } + }); +}); diff --git a/node_modules/events/.airtap.yml b/node_modules/events/.airtap.yml new file mode 100644 index 0000000..c7a8a87 --- /dev/null +++ b/node_modules/events/.airtap.yml @@ -0,0 +1,15 @@ +sauce_connect: true +loopback: airtap.local +browsers: + - name: chrome + version: latest + - name: firefox + version: latest + - name: safari + version: 9..latest + - name: iphone + version: latest + - name: ie + version: 9..latest + - name: microsoftedge + version: 13..latest diff --git a/node_modules/events/.github/FUNDING.yml b/node_modules/events/.github/FUNDING.yml new file mode 100644 index 0000000..8b8cb78 --- /dev/null +++ b/node_modules/events/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/events +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/events/.travis.yml b/node_modules/events/.travis.yml new file mode 100644 index 0000000..486dc3c --- /dev/null +++ b/node_modules/events/.travis.yml @@ -0,0 +1,18 @@ +dist: xenial +os: linux +language: node_js +node_js: + - 'stable' + - 'lts/*' + - '0.12' +script: + - npm test + - if [ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${TRAVIS_NODE_VERSION}" = "stable" ]; then npm run test:browsers; fi +addons: + sauce_connect: true + hosts: + - airtap.local +env: + global: + - secure: XcBiD8yReflut9q7leKsigDZ0mI3qTKH+QrNVY8DaqlomJOZw8aOrVuX9Jz12l86ZJ41nbxmKnRNkFzcVr9mbP9YaeTb3DpeOBWmvaoSfud9Wnc16VfXtc1FCcwDhSVcSiM3UtnrmFU5cH+Dw1LPh5PbfylYOS/nJxUvG0FFLqI= + - secure: jNWtEbqhUdQ0xXDHvCYfUbKYeJCi6a7B4LsrcxYCyWWn4NIgncE5x2YbB+FSUUFVYfz0dsn5RKP1oHB99f0laUEo18HBNkrAS/rtyOdVzcpJjbQ6kgSILGjnJD/Ty1B57Rcz3iyev5Y7bLZ6Y1FbDnk/i9/l0faOGz8vTC3Vdkc= diff --git a/node_modules/events/History.md b/node_modules/events/History.md new file mode 100644 index 0000000..029b904 --- /dev/null +++ b/node_modules/events/History.md @@ -0,0 +1,95 @@ +# 3.2.0 + + - Add `events.once` from Node.js 11.13.0. + + To use this function, Promises must be supported in the environment. Use a polyfill like `es6-promise` if you support older browsers. + +# 3.1.0 (2020-01-08) + +`events` now matches the Node.js 11.12.0 API. + + - pass through return value in wrapped `emitter.once()` listeners + + Now, this works: + ```js + emitter.once('myevent', function () { return 1; }); + var listener = emitter.rawListeners('myevent')[0] + assert(listener() === 1); + ``` + Previously, `listener()` would return undefined regardless of the implementation. + + Ported from https://github.com/nodejs/node/commit/acc506c2d2771dab8d7bba6d3452bc5180dff7cf + + - Reduce code duplication in listener type check ([#67](https://github.com/Gozala/events/pull/67) by [@friederbluemle](https://github.com/friederbluemle)). + - Improve `emitter.once()` performance in some engines + +# 3.0.0 (2018-05-25) + +**This version drops support for IE8.** `events` no longer includes polyfills +for ES5 features. If you need to support older environments, use an ES5 shim +like [es5-shim](https://npmjs.com/package/es5-shim). Both the shim and sham +versions of es5-shim are necessary. + + - Update to events code from Node.js 10.x + - (semver major) Adds `off()` method + - Port more tests from Node.js + - Switch browser tests to airtap, making things more reliable + +# 2.1.0 (2018-05-25) + + - add Emitter#rawListeners from Node.js v9.4 + +# 2.0.0 (2018-02-02) + + - Update to events code from node.js 8.x + - Adds `prependListener()` and `prependOnceListener()` + - Adds `eventNames()` method + - (semver major) Unwrap `once()` listeners in `listeners()` + - copy tests from node.js + +Note that this version doubles the gzipped size, jumping from 1.1KB to 2.1KB, +due to new methods and runtime performance improvements. Be aware of that when +upgrading. + +# 1.1.1 (2016-06-22) + + - add more context to errors if they are not instanceof Error + +# 1.1.0 (2015-09-29) + + - add Emitter#listerCount (to match node v4 api) + +# 1.0.2 (2014-08-28) + + - remove un-reachable code + - update devDeps + +## 1.0.1 / 2014-05-11 + + - check for console.trace before using it + +## 1.0.0 / 2013-12-10 + + - Update to latest events code from node.js 0.10 + - copy tests from node.js + +## 0.4.0 / 2011-07-03 ## + + - Switching to graphquire@0.8.0 + +## 0.3.0 / 2011-07-03 ## + + - Switching to URL based module require. + +## 0.2.0 / 2011-06-10 ## + + - Simplified package structure. + - Graphquire for dependency management. + +## 0.1.1 / 2011-05-16 ## + + - Unhandled errors are logged via console.error + +## 0.1.0 / 2011-04-22 ## + + - Initial release diff --git a/node_modules/events/LICENSE b/node_modules/events/LICENSE new file mode 100644 index 0000000..52ed3b0 --- /dev/null +++ b/node_modules/events/LICENSE @@ -0,0 +1,22 @@ +MIT + +Copyright Joyent, Inc. and other Node contributors. + +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/node_modules/events/Readme.md b/node_modules/events/Readme.md new file mode 100644 index 0000000..d5dfd24 --- /dev/null +++ b/node_modules/events/Readme.md @@ -0,0 +1,49 @@ +# events [![Build Status](https://travis-ci.org/Gozala/events.png?branch=master)](https://travis-ci.org/Gozala/events) + +> Node's event emitter for all engines. + +This implements the Node.js [`events`][node.js docs] module for environments that do not have it, like browsers. + +> `events` currently matches the **Node.js 11.13.0** API. + +Note that the `events` module uses ES5 features. If you need to support very old browsers like IE8, use a shim like [`es5-shim`](https://www.npmjs.com/package/es5-shim). You need both the shim and the sham versions of `es5-shim`. + +This module is maintained, but only by very few people. If you'd like to help, let us know in the [Maintainer Needed](https://github.com/Gozala/events/issues/43) issue! + +## Install + +You usually do not have to install `events` yourself! If your code runs in Node.js, `events` is built in. If your code runs in the browser, bundlers like [browserify](https://github.com/browserify/browserify) or [webpack](https://github.com/webpack/webpack) also include the `events` module. + +But if none of those apply, with npm do: + +``` +npm install events +``` + +## Usage + +```javascript +var EventEmitter = require('events') + +var ee = new EventEmitter() +ee.on('message', function (text) { + console.log(text) +}) +ee.emit('message', 'hello world') +``` + +## API + +See the [Node.js EventEmitter docs][node.js docs]. `events` currently matches the Node.js 11.13.0 API. + +## Contributing + +PRs are very welcome! The main way to contribute to `events` is by porting features, bugfixes and tests from Node.js. Ideally, code contributions to this module are copy-pasted from Node.js and transpiled to ES5, rather than reimplemented from scratch. Matching the Node.js code as closely as possible makes maintenance simpler when new changes land in Node.js. +This module intends to provide exactly the same API as Node.js, so features that are not available in the core `events` module will not be accepted. Feature requests should instead be directed at [nodejs/node](https://github.com/nodejs/node) and will be added to this module once they are implemented in Node.js. + +If there is a difference in behaviour between Node.js's `events` module and this module, please open an issue! + +## License + +[MIT](./LICENSE) +[node.js docs]: https://nodejs.org/dist/v11.13.0/docs/api/events.html diff --git a/node_modules/events/events.js b/node_modules/events/events.js new file mode 100644 index 0000000..edd45ce --- /dev/null +++ b/node_modules/events/events.js @@ -0,0 +1,476 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +'use strict'; + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function eventListener() { + if (errorListener !== undefined) { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + var errorListener; + + // Adding an error listener is not optional because + // if an error is thrown on an event emitter we cannot + // guarantee that the actual event we are waiting will + // be fired. The result could be a silent way to create + // memory or file descriptor leaks, which is something + // we should avoid. + if (name !== 'error') { + errorListener = function errorListener(err) { + emitter.removeListener(name, eventListener); + reject(err); + }; + + emitter.once('error', errorListener); + } + + emitter.once(name, eventListener); + }); +} diff --git a/node_modules/events/package.json b/node_modules/events/package.json new file mode 100644 index 0000000..d461114 --- /dev/null +++ b/node_modules/events/package.json @@ -0,0 +1,66 @@ +{ + "_from": "events@^3.0.0", + "_id": "events@3.2.0", + "_inBundle": false, + "_integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "_location": "/events", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "events@^3.0.0", + "name": "events", + "escapedName": "events", + "rawSpec": "^3.0.0", + "saveSpec": null, + "fetchSpec": "^3.0.0" + }, + "_requiredBy": [ + "/mini-html-parser2" + ], + "_resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "_shasum": "93b87c18f8efcd4202a461aec4dfc0556b639379", + "_spec": "events@^3.0.0", + "_where": "/Users/WebTmm/Documents/支付宝小程序/亿分期(工作台)/node_modules/mini-html-parser2", + "author": { + "name": "Irakli Gozalishvili", + "email": "rfobic@gmail.com", + "url": "http://jeditoolkit.com" + }, + "bugs": { + "url": "http://github.com/Gozala/events/issues/" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Node's event emitter for all engines.", + "devDependencies": { + "airtap": "^1.0.0", + "functions-have-names": "^1.2.1", + "has-symbols": "^1.0.1", + "isarray": "^2.0.5", + "tape": "^5.0.0" + }, + "engines": { + "node": ">=0.8.x" + }, + "homepage": "https://github.com/Gozala/events#readme", + "keywords": [ + "events", + "eventEmitter", + "eventDispatcher", + "listeners" + ], + "license": "MIT", + "main": "./events.js", + "name": "events", + "repository": { + "type": "git", + "url": "git://github.com/Gozala/events.git", + "web": "https://github.com/Gozala/events" + }, + "scripts": { + "test": "node tests/index.js", + "test:browsers": "airtap -- tests/index.js" + }, + "version": "3.2.0" +} diff --git a/node_modules/events/security.md b/node_modules/events/security.md new file mode 100644 index 0000000..a14ace6 --- /dev/null +++ b/node_modules/events/security.md @@ -0,0 +1,10 @@ +# Security Policy + +## Supported Versions +Only the latest major version is supported at any given time. + +## Reporting a Vulnerability + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. diff --git a/node_modules/events/tests/add-listeners.js b/node_modules/events/tests/add-listeners.js new file mode 100644 index 0000000..9b57827 --- /dev/null +++ b/node_modules/events/tests/add-listeners.js @@ -0,0 +1,111 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var common = require('./common'); +var assert = require('assert'); +var EventEmitter = require('../'); + +{ + var ee = new EventEmitter(); + var events_new_listener_emitted = []; + var listeners_new_listener_emitted = []; + + // Sanity check + assert.strictEqual(ee.addListener, ee.on); + + ee.on('newListener', function(event, listener) { + // Don't track newListener listeners. + if (event === 'newListener') + return; + + events_new_listener_emitted.push(event); + listeners_new_listener_emitted.push(listener); + }); + + var hello = common.mustCall(function(a, b) { + assert.strictEqual('a', a); + assert.strictEqual('b', b); + }); + + ee.once('newListener', function(name, listener) { + assert.strictEqual(name, 'hello'); + assert.strictEqual(listener, hello); + + var listeners = this.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + }); + + ee.on('hello', hello); + ee.once('foo', assert.fail); + + assert.ok(Array.isArray(events_new_listener_emitted)); + assert.strictEqual(events_new_listener_emitted.length, 2); + assert.strictEqual(events_new_listener_emitted[0], 'hello'); + assert.strictEqual(events_new_listener_emitted[1], 'foo'); + + assert.ok(Array.isArray(listeners_new_listener_emitted)); + assert.strictEqual(listeners_new_listener_emitted.length, 2); + assert.strictEqual(listeners_new_listener_emitted[0], hello); + assert.strictEqual(listeners_new_listener_emitted[1], assert.fail); + + ee.emit('hello', 'a', 'b'); +} + +// just make sure that this doesn't throw: +{ + var f = new EventEmitter(); + + f.setMaxListeners(0); +} + +{ + var listen1 = function() {}; + var listen2 = function() {}; + var ee = new EventEmitter(); + + ee.once('newListener', function() { + var listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + ee.once('newListener', function() { + var listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + }); + ee.on('hello', listen2); + }); + ee.on('hello', listen1); + // The order of listeners on an event is not always the order in which the + // listeners were added. + var listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 2); + assert.strictEqual(listeners[0], listen2); + assert.strictEqual(listeners[1], listen1); +} + +// Verify that the listener must be a function +assert.throws(function() { + var ee = new EventEmitter(); + + ee.on('foo', null); +}, /^TypeError: The "listener" argument must be of type Function. Received type object$/); diff --git a/node_modules/events/tests/check-listener-leaks.js b/node_modules/events/tests/check-listener-leaks.js new file mode 100644 index 0000000..7fce48f --- /dev/null +++ b/node_modules/events/tests/check-listener-leaks.js @@ -0,0 +1,101 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var common = require('./common'); +var assert = require('assert'); +var events = require('../'); + +// Redirect warning output to tape. +var consoleWarn = console.warn; +console.warn = common.test.comment; + +common.test.on('end', function () { + console.warn = consoleWarn; +}); + +// default +{ + var e = new events.EventEmitter(); + + for (var i = 0; i < 10; i++) { + e.on('default', common.mustNotCall()); + } + assert.ok(!e._events['default'].hasOwnProperty('warned')); + e.on('default', common.mustNotCall()); + assert.ok(e._events['default'].warned); + + // specific + e.setMaxListeners(5); + for (var i = 0; i < 5; i++) { + e.on('specific', common.mustNotCall()); + } + assert.ok(!e._events['specific'].hasOwnProperty('warned')); + e.on('specific', common.mustNotCall()); + assert.ok(e._events['specific'].warned); + + // only one + e.setMaxListeners(1); + e.on('only one', common.mustNotCall()); + assert.ok(!e._events['only one'].hasOwnProperty('warned')); + e.on('only one', common.mustNotCall()); + assert.ok(e._events['only one'].hasOwnProperty('warned')); + + // unlimited + e.setMaxListeners(0); + for (var i = 0; i < 1000; i++) { + e.on('unlimited', common.mustNotCall()); + } + assert.ok(!e._events['unlimited'].hasOwnProperty('warned')); +} + +// process-wide +{ + events.EventEmitter.defaultMaxListeners = 42; + var e = new events.EventEmitter(); + + for (var i = 0; i < 42; ++i) { + e.on('fortytwo', common.mustNotCall()); + } + assert.ok(!e._events['fortytwo'].hasOwnProperty('warned')); + e.on('fortytwo', common.mustNotCall()); + assert.ok(e._events['fortytwo'].hasOwnProperty('warned')); + delete e._events['fortytwo'].warned; + + events.EventEmitter.defaultMaxListeners = 44; + e.on('fortytwo', common.mustNotCall()); + assert.ok(!e._events['fortytwo'].hasOwnProperty('warned')); + e.on('fortytwo', common.mustNotCall()); + assert.ok(e._events['fortytwo'].hasOwnProperty('warned')); +} + +// but _maxListeners still has precedence over defaultMaxListeners +{ + events.EventEmitter.defaultMaxListeners = 42; + var e = new events.EventEmitter(); + e.setMaxListeners(1); + e.on('uno', common.mustNotCall()); + assert.ok(!e._events['uno'].hasOwnProperty('warned')); + e.on('uno', common.mustNotCall()); + assert.ok(e._events['uno'].hasOwnProperty('warned')); + + // chainable + assert.strictEqual(e, e.setMaxListeners(1)); +} diff --git a/node_modules/events/tests/common.js b/node_modules/events/tests/common.js new file mode 100644 index 0000000..49569b0 --- /dev/null +++ b/node_modules/events/tests/common.js @@ -0,0 +1,104 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var test = require('tape'); +var assert = require('assert'); + +var noop = function() {}; + +var mustCallChecks = []; + +function runCallChecks(exitCode) { + if (exitCode !== 0) return; + + var failed = filter(mustCallChecks, function(context) { + if ('minimum' in context) { + context.messageSegment = 'at least ' + context.minimum; + return context.actual < context.minimum; + } else { + context.messageSegment = 'exactly ' + context.exact; + return context.actual !== context.exact; + } + }); + + for (var i = 0; i < failed.length; i++) { + var context = failed[i]; + console.log('Mismatched %s function calls. Expected %s, actual %d.', + context.name, + context.messageSegment, + context.actual); + // IE8 has no .stack + if (context.stack) console.log(context.stack.split('\n').slice(2).join('\n')); + } + + assert.strictEqual(failed.length, 0); +} + +exports.mustCall = function(fn, exact) { + return _mustCallInner(fn, exact, 'exact'); +}; + +function _mustCallInner(fn, criteria, field) { + if (typeof criteria == 'undefined') criteria = 1; + + if (typeof fn === 'number') { + criteria = fn; + fn = noop; + } else if (fn === undefined) { + fn = noop; + } + + if (typeof criteria !== 'number') + throw new TypeError('Invalid ' + field + ' value: ' + criteria); + + var context = { + actual: 0, + stack: (new Error()).stack, + name: fn.name || '' + }; + + context[field] = criteria; + + // add the exit listener only once to avoid listener leak warnings + if (mustCallChecks.length === 0) test.onFinish(function() { runCallChecks(0); }); + + mustCallChecks.push(context); + + return function() { + context.actual++; + return fn.apply(this, arguments); + }; +} + +exports.mustNotCall = function(msg) { + return function mustNotCall() { + assert.fail(msg || 'function should not have been called'); + }; +}; + +function filter(arr, fn) { + if (arr.filter) return arr.filter(fn); + var filtered = []; + for (var i = 0; i < arr.length; i++) { + if (fn(arr[i], i, arr)) filtered.push(arr[i]); + } + return filtered +} diff --git a/node_modules/events/tests/errors.js b/node_modules/events/tests/errors.js new file mode 100644 index 0000000..a23df43 --- /dev/null +++ b/node_modules/events/tests/errors.js @@ -0,0 +1,13 @@ +'use strict'; +var assert = require('assert'); +var EventEmitter = require('../'); + +var EE = new EventEmitter(); + +assert.throws(function () { + EE.emit('error', 'Accepts a string'); +}, 'Error: Unhandled error. (Accepts a string)'); + +assert.throws(function () { + EE.emit('error', { message: 'Error!' }); +}, 'Unhandled error. ([object Object])'); diff --git a/node_modules/events/tests/events-list.js b/node_modules/events/tests/events-list.js new file mode 100644 index 0000000..08aa621 --- /dev/null +++ b/node_modules/events/tests/events-list.js @@ -0,0 +1,28 @@ +'use strict'; + +var EventEmitter = require('../'); +var assert = require('assert'); + +var EE = new EventEmitter(); +var m = function() {}; +EE.on('foo', function() {}); +assert.equal(1, EE.eventNames().length); +assert.equal('foo', EE.eventNames()[0]); +EE.on('bar', m); +assert.equal(2, EE.eventNames().length); +assert.equal('foo', EE.eventNames()[0]); +assert.equal('bar', EE.eventNames()[1]); +EE.removeListener('bar', m); +assert.equal(1, EE.eventNames().length); +assert.equal('foo', EE.eventNames()[0]); + +if (typeof Symbol !== 'undefined') { + var s = Symbol('s'); + EE.on(s, m); + assert.equal(2, EE.eventNames().length); + assert.equal('foo', EE.eventNames()[0]); + assert.equal(s, EE.eventNames()[1]); + EE.removeListener(s, m); + assert.equal(1, EE.eventNames().length); + assert.equal('foo', EE.eventNames()[0]); +} diff --git a/node_modules/events/tests/events-once.js b/node_modules/events/tests/events-once.js new file mode 100644 index 0000000..309bf45 --- /dev/null +++ b/node_modules/events/tests/events-once.js @@ -0,0 +1,100 @@ +'use strict'; + +var common = require('./common'); +var EventEmitter = require('../').EventEmitter; +var once = require('../').once; +var assert = require('assert'); + +function onceAnEvent() { + var ee = new EventEmitter(); + + process.nextTick(function () { + ee.emit('myevent', 42); + }); + + return once(ee, 'myevent').then(function (args) { + var value = args[0] + assert.strictEqual(value, 42); + assert.strictEqual(ee.listenerCount('error'), 0); + assert.strictEqual(ee.listenerCount('myevent'), 0); + }); +} + +function onceAnEventWithTwoArgs() { + var ee = new EventEmitter(); + + process.nextTick(function () { + ee.emit('myevent', 42, 24); + }); + + return once(ee, 'myevent').then(function (value) { + assert.strictEqual(value.length, 2); + assert.strictEqual(value[0], 42); + assert.strictEqual(value[1], 24); + }); +} + +function catchesErrors() { + var ee = new EventEmitter(); + + var expected = new Error('kaboom'); + var err; + process.nextTick(function () { + ee.emit('error', expected); + }); + + return once(ee, 'myevent').then(function () { + throw new Error('should reject') + }, function (err) { + assert.strictEqual(err, expected); + assert.strictEqual(ee.listenerCount('error'), 0); + assert.strictEqual(ee.listenerCount('myevent'), 0); + }); +} + +function stopListeningAfterCatchingError() { + var ee = new EventEmitter(); + + var expected = new Error('kaboom'); + var err; + process.nextTick(function () { + ee.emit('error', expected); + ee.emit('myevent', 42, 24); + }); + + // process.on('multipleResolves', common.mustNotCall()); + + return once(ee, 'myevent').then(common.mustNotCall, function (err) { + // process.removeAllListeners('multipleResolves'); + assert.strictEqual(err, expected); + assert.strictEqual(ee.listenerCount('error'), 0); + assert.strictEqual(ee.listenerCount('myevent'), 0); + }); +} + +function onceError() { + var ee = new EventEmitter(); + + var expected = new Error('kaboom'); + process.nextTick(function () { + ee.emit('error', expected); + }); + + return once(ee, 'error').then(function (args) { + var err = args[0] + assert.strictEqual(err, expected); + assert.strictEqual(ee.listenerCount('error'), 0); + assert.strictEqual(ee.listenerCount('myevent'), 0); + }); +} + +Promise.all([ + onceAnEvent(), + onceAnEventWithTwoArgs(), + catchesErrors(), + stopListeningAfterCatchingError(), + onceError() +]).catch(function (err) { + console.error(err.stack) + process.exit(1) +}); diff --git a/node_modules/events/tests/index.js b/node_modules/events/tests/index.js new file mode 100644 index 0000000..491d0b8 --- /dev/null +++ b/node_modules/events/tests/index.js @@ -0,0 +1,56 @@ +var test = require('tape'); +var functionsHaveNames = require('functions-have-names'); +var hasSymbols = require('has-symbols'); + +require('./legacy-compat'); +var common = require('./common'); + +// we do this to easily wrap each file in a mocha test +// and also have browserify be able to statically analyze this file +var orig_require = require; +var require = function(file) { + test(file, function(t) { + // Store the tape object so tests can access it. + t.on('end', function () { delete common.test; }); + common.test = t; + + try { orig_require(file); } catch (err) { t.fail(err); } + t.end(); + }); +}; + +require('./add-listeners.js'); +require('./check-listener-leaks.js'); +require('./errors.js'); +require('./events-list.js'); +if (typeof Promise === 'function') { + require('./events-once.js'); +} else { + // Promise support is not available. + test('./events-once.js', { skip: true }, function () {}); +} +require('./listener-count.js'); +require('./listeners-side-effects.js'); +require('./listeners.js'); +require('./max-listeners.js'); +if (functionsHaveNames()) { + require('./method-names.js'); +} else { + // Function.name is not supported in IE + test('./method-names.js', { skip: true }, function () {}); +} +require('./modify-in-emit.js'); +require('./num-args.js'); +require('./once.js'); +require('./prepend.js'); +require('./set-max-listeners-side-effects.js'); +require('./special-event-names.js'); +require('./subclass.js'); +if (hasSymbols()) { + require('./symbols.js'); +} else { + // Symbol is not available. + test('./symbols.js', { skip: true }, function () {}); +} +require('./remove-all-listeners.js'); +require('./remove-listeners.js'); diff --git a/node_modules/events/tests/legacy-compat.js b/node_modules/events/tests/legacy-compat.js new file mode 100644 index 0000000..a402be6 --- /dev/null +++ b/node_modules/events/tests/legacy-compat.js @@ -0,0 +1,16 @@ +// sigh... life is hard +if (!global.console) { + console = {} +} + +var fns = ['log', 'error', 'trace']; +for (var i=0 ; ifoo should not be emitted'); +} + +e.once('foo', remove); +e.removeListener('foo', remove); +e.emit('foo'); + +e.once('e', common.mustCall(function() { + e.emit('e'); +})); + +e.once('e', common.mustCall()); + +e.emit('e'); + +// Verify that the listener must be a function +assert.throws(function() { + var ee = new EventEmitter(); + + ee.once('foo', null); +}, /^TypeError: The "listener" argument must be of type Function. Received type object$/); + +{ + // once() has different code paths based on the number of arguments being + // emitted. Verify that all of the cases are covered. + var maxArgs = 4; + + for (var i = 0; i <= maxArgs; ++i) { + var ee = new EventEmitter(); + var args = ['foo']; + + for (var j = 0; j < i; ++j) + args.push(j); + + ee.once('foo', common.mustCall(function() { + var params = Array.prototype.slice.call(arguments); + var restArgs = args.slice(1); + assert.ok(Array.isArray(params)); + assert.strictEqual(params.length, restArgs.length); + for (var index = 0; index < params.length; index++) { + var param = params[index]; + assert.strictEqual(param, restArgs[index]); + } + })); + + EventEmitter.prototype.emit.apply(ee, args); + } +} diff --git a/node_modules/events/tests/prepend.js b/node_modules/events/tests/prepend.js new file mode 100644 index 0000000..79afde0 --- /dev/null +++ b/node_modules/events/tests/prepend.js @@ -0,0 +1,31 @@ +'use strict'; + +var common = require('./common'); +var EventEmitter = require('../'); +var assert = require('assert'); + +var myEE = new EventEmitter(); +var m = 0; +// This one comes last. +myEE.on('foo', common.mustCall(function () { + assert.strictEqual(m, 2); +})); + +// This one comes second. +myEE.prependListener('foo', common.mustCall(function () { + assert.strictEqual(m++, 1); +})); + +// This one comes first. +myEE.prependOnceListener('foo', + common.mustCall(function () { + assert.strictEqual(m++, 0); + })); + +myEE.emit('foo'); + +// Verify that the listener must be a function +assert.throws(function () { + var ee = new EventEmitter(); + ee.prependOnceListener('foo', null); +}, 'TypeError: The "listener" argument must be of type Function. Received type object'); diff --git a/node_modules/events/tests/remove-all-listeners.js b/node_modules/events/tests/remove-all-listeners.js new file mode 100644 index 0000000..622941c --- /dev/null +++ b/node_modules/events/tests/remove-all-listeners.js @@ -0,0 +1,133 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var common = require('./common'); +var assert = require('assert'); +var events = require('../'); +var test = require('tape'); + +function expect(expected) { + var actual = []; + test.onFinish(function() { + var sortedActual = actual.sort(); + var sortedExpected = expected.sort(); + assert.strictEqual(sortedActual.length, sortedExpected.length); + for (var index = 0; index < sortedActual.length; index++) { + var value = sortedActual[index]; + assert.strictEqual(value, sortedExpected[index]); + } + }); + function listener(name) { + actual.push(name); + } + return common.mustCall(listener, expected.length); +} + +{ + var ee = new events.EventEmitter(); + var noop = common.mustNotCall(); + ee.on('foo', noop); + ee.on('bar', noop); + ee.on('baz', noop); + ee.on('baz', noop); + var fooListeners = ee.listeners('foo'); + var barListeners = ee.listeners('bar'); + var bazListeners = ee.listeners('baz'); + ee.on('removeListener', expect(['bar', 'baz', 'baz'])); + ee.removeAllListeners('bar'); + ee.removeAllListeners('baz'); + + var listeners = ee.listeners('foo'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 1); + assert.strictEqual(listeners[0], noop); + + listeners = ee.listeners('bar'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + listeners = ee.listeners('baz'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + // After calling removeAllListeners(), + // the old listeners array should stay unchanged. + assert.strictEqual(fooListeners.length, 1); + assert.strictEqual(fooListeners[0], noop); + assert.strictEqual(barListeners.length, 1); + assert.strictEqual(barListeners[0], noop); + assert.strictEqual(bazListeners.length, 2); + assert.strictEqual(bazListeners[0], noop); + assert.strictEqual(bazListeners[1], noop); + // After calling removeAllListeners(), + // new listeners arrays is different from the old. + assert.notStrictEqual(ee.listeners('bar'), barListeners); + assert.notStrictEqual(ee.listeners('baz'), bazListeners); +} + +{ + var ee = new events.EventEmitter(); + ee.on('foo', common.mustNotCall()); + ee.on('bar', common.mustNotCall()); + // Expect LIFO order + ee.on('removeListener', expect(['foo', 'bar', 'removeListener'])); + ee.on('removeListener', expect(['foo', 'bar'])); + ee.removeAllListeners(); + + var listeners = ee.listeners('foo'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + listeners = ee.listeners('bar'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); +} + +{ + var ee = new events.EventEmitter(); + ee.on('removeListener', common.mustNotCall()); + // Check for regression where removeAllListeners() throws when + // there exists a 'removeListener' listener, but there exists + // no listeners for the provided event type. + assert.doesNotThrow(function () { ee.removeAllListeners(ee, 'foo') }); +} + +{ + var ee = new events.EventEmitter(); + var expectLength = 2; + ee.on('removeListener', function() { + assert.strictEqual(expectLength--, this.listeners('baz').length); + }); + ee.on('baz', common.mustNotCall()); + ee.on('baz', common.mustNotCall()); + ee.on('baz', common.mustNotCall()); + assert.strictEqual(ee.listeners('baz').length, expectLength + 1); + ee.removeAllListeners('baz'); + assert.strictEqual(ee.listeners('baz').length, 0); +} + +{ + var ee = new events.EventEmitter(); + assert.strictEqual(ee, ee.removeAllListeners()); +} + +{ + var ee = new events.EventEmitter(); + ee._events = undefined; + assert.strictEqual(ee, ee.removeAllListeners()); +} diff --git a/node_modules/events/tests/remove-listeners.js b/node_modules/events/tests/remove-listeners.js new file mode 100644 index 0000000..18e4d16 --- /dev/null +++ b/node_modules/events/tests/remove-listeners.js @@ -0,0 +1,212 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var common = require('./common'); +var assert = require('assert'); +var EventEmitter = require('../'); + +var listener1 = function listener1() {}; +var listener2 = function listener2() {}; + +{ + var ee = new EventEmitter(); + ee.on('hello', listener1); + ee.on('removeListener', common.mustCall(function(name, cb) { + assert.strictEqual(name, 'hello'); + assert.strictEqual(cb, listener1); + })); + ee.removeListener('hello', listener1); + var listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); +} + +{ + var ee = new EventEmitter(); + ee.on('hello', listener1); + ee.on('removeListener', common.mustNotCall()); + ee.removeListener('hello', listener2); + + var listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 1); + assert.strictEqual(listeners[0], listener1); +} + +{ + var ee = new EventEmitter(); + ee.on('hello', listener1); + ee.on('hello', listener2); + + var listeners; + ee.once('removeListener', common.mustCall(function(name, cb) { + assert.strictEqual(name, 'hello'); + assert.strictEqual(cb, listener1); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 1); + assert.strictEqual(listeners[0], listener2); + })); + ee.removeListener('hello', listener1); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 1); + assert.strictEqual(listeners[0], listener2); + ee.once('removeListener', common.mustCall(function(name, cb) { + assert.strictEqual(name, 'hello'); + assert.strictEqual(cb, listener2); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + })); + ee.removeListener('hello', listener2); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); +} + +{ + var ee = new EventEmitter(); + + function remove1() { + assert.fail('remove1 should not have been called'); + } + + function remove2() { + assert.fail('remove2 should not have been called'); + } + + ee.on('removeListener', common.mustCall(function(name, cb) { + if (cb !== remove1) return; + this.removeListener('quux', remove2); + this.emit('quux'); + }, 2)); + ee.on('quux', remove1); + ee.on('quux', remove2); + ee.removeListener('quux', remove1); +} + +{ + var ee = new EventEmitter(); + ee.on('hello', listener1); + ee.on('hello', listener2); + + var listeners; + ee.once('removeListener', common.mustCall(function(name, cb) { + assert.strictEqual(name, 'hello'); + assert.strictEqual(cb, listener1); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 1); + assert.strictEqual(listeners[0], listener2); + ee.once('removeListener', common.mustCall(function(name, cb) { + assert.strictEqual(name, 'hello'); + assert.strictEqual(cb, listener2); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + })); + ee.removeListener('hello', listener2); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); + })); + ee.removeListener('hello', listener1); + listeners = ee.listeners('hello'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 0); +} + +{ + var ee = new EventEmitter(); + var listener3 = common.mustCall(function() { + ee.removeListener('hello', listener4); + }, 2); + var listener4 = common.mustCall(); + + ee.on('hello', listener3); + ee.on('hello', listener4); + + // listener4 will still be called although it is removed by listener 3. + ee.emit('hello'); + // This is so because the interal listener array at time of emit + // was [listener3,listener4] + + // Interal listener array [listener3] + ee.emit('hello'); +} + +{ + var ee = new EventEmitter(); + + ee.once('hello', listener1); + ee.on('removeListener', common.mustCall(function(eventName, listener) { + assert.strictEqual(eventName, 'hello'); + assert.strictEqual(listener, listener1); + })); + ee.emit('hello'); +} + +{ + var ee = new EventEmitter(); + + assert.strictEqual(ee, ee.removeListener('foo', function() {})); +} + +// Verify that the removed listener must be a function +assert.throws(function() { + var ee = new EventEmitter(); + + ee.removeListener('foo', null); +}, /^TypeError: The "listener" argument must be of type Function\. Received type object$/); + +{ + var ee = new EventEmitter(); + var listener = function() {}; + ee._events = undefined; + var e = ee.removeListener('foo', listener); + assert.strictEqual(e, ee); +} + +{ + var ee = new EventEmitter(); + + ee.on('foo', listener1); + ee.on('foo', listener2); + var listeners = ee.listeners('foo'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 2); + assert.strictEqual(listeners[0], listener1); + assert.strictEqual(listeners[1], listener2); + + ee.removeListener('foo', listener1); + assert.strictEqual(ee._events.foo, listener2); + + ee.on('foo', listener1); + listeners = ee.listeners('foo'); + assert.ok(Array.isArray(listeners)); + assert.strictEqual(listeners.length, 2); + assert.strictEqual(listeners[0], listener2); + assert.strictEqual(listeners[1], listener1); + + ee.removeListener('foo', listener1); + assert.strictEqual(ee._events.foo, listener2); +} diff --git a/node_modules/events/tests/set-max-listeners-side-effects.js b/node_modules/events/tests/set-max-listeners-side-effects.js new file mode 100644 index 0000000..13dbb67 --- /dev/null +++ b/node_modules/events/tests/set-max-listeners-side-effects.js @@ -0,0 +1,31 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +require('./common'); +var assert = require('assert'); +var events = require('../'); + +var e = new events.EventEmitter(); + +if (Object.create) assert.ok(!(e._events instanceof Object)); +assert.strictEqual(Object.keys(e._events).length, 0); +e.setMaxListeners(5); +assert.strictEqual(Object.keys(e._events).length, 0); diff --git a/node_modules/events/tests/special-event-names.js b/node_modules/events/tests/special-event-names.js new file mode 100644 index 0000000..a2f0b74 --- /dev/null +++ b/node_modules/events/tests/special-event-names.js @@ -0,0 +1,45 @@ +'use strict'; + +var common = require('./common'); +var EventEmitter = require('../'); +var assert = require('assert'); + +var ee = new EventEmitter(); +var handler = function() {}; + +assert.strictEqual(ee.eventNames().length, 0); + +assert.strictEqual(ee._events.hasOwnProperty, undefined); +assert.strictEqual(ee._events.toString, undefined); + +ee.on('__defineGetter__', handler); +ee.on('toString', handler); +ee.on('__proto__', handler); + +assert.strictEqual(ee.eventNames()[0], '__defineGetter__'); +assert.strictEqual(ee.eventNames()[1], 'toString'); + +assert.strictEqual(ee.listeners('__defineGetter__').length, 1); +assert.strictEqual(ee.listeners('__defineGetter__')[0], handler); +assert.strictEqual(ee.listeners('toString').length, 1); +assert.strictEqual(ee.listeners('toString')[0], handler); + +// Only run __proto__ tests if that property can actually be set +if ({ __proto__: 'ok' }.__proto__ === 'ok') { + assert.strictEqual(ee.eventNames().length, 3); + assert.strictEqual(ee.eventNames()[2], '__proto__'); + assert.strictEqual(ee.listeners('__proto__').length, 1); + assert.strictEqual(ee.listeners('__proto__')[0], handler); + + ee.on('__proto__', common.mustCall(function(val) { + assert.strictEqual(val, 1); + })); + ee.emit('__proto__', 1); + + process.on('__proto__', common.mustCall(function(val) { + assert.strictEqual(val, 1); + })); + process.emit('__proto__', 1); +} else { + console.log('# skipped __proto__') +} diff --git a/node_modules/events/tests/subclass.js b/node_modules/events/tests/subclass.js new file mode 100644 index 0000000..bd033ff --- /dev/null +++ b/node_modules/events/tests/subclass.js @@ -0,0 +1,66 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var common = require('./common'); +var test = require('tape'); +var assert = require('assert'); +var EventEmitter = require('../').EventEmitter; +var util = require('util'); + +util.inherits(MyEE, EventEmitter); + +function MyEE(cb) { + this.once(1, cb); + this.emit(1); + this.removeAllListeners(); + EventEmitter.call(this); +} + +var myee = new MyEE(common.mustCall()); + + +util.inherits(ErrorEE, EventEmitter); +function ErrorEE() { + this.emit('error', new Error('blerg')); +} + +assert.throws(function() { + new ErrorEE(); +}, /blerg/); + +test.onFinish(function() { + assert.ok(!(myee._events instanceof Object)); + assert.strictEqual(Object.keys(myee._events).length, 0); +}); + + +function MyEE2() { + EventEmitter.call(this); +} + +MyEE2.prototype = new EventEmitter(); + +var ee1 = new MyEE2(); +var ee2 = new MyEE2(); + +ee1.on('x', function() {}); + +assert.strictEqual(ee2.listenerCount('x'), 0); diff --git a/node_modules/events/tests/symbols.js b/node_modules/events/tests/symbols.js new file mode 100644 index 0000000..0721f0e --- /dev/null +++ b/node_modules/events/tests/symbols.js @@ -0,0 +1,25 @@ +'use strict'; + +var common = require('./common'); +var EventEmitter = require('../'); +var assert = require('assert'); + +var ee = new EventEmitter(); +var foo = Symbol('foo'); +var listener = common.mustCall(); + +ee.on(foo, listener); +assert.strictEqual(ee.listeners(foo).length, 1); +assert.strictEqual(ee.listeners(foo)[0], listener); + +ee.emit(foo); + +ee.removeAllListeners(); +assert.strictEqual(ee.listeners(foo).length, 0); + +ee.on(foo, listener); +assert.strictEqual(ee.listeners(foo).length, 1); +assert.strictEqual(ee.listeners(foo)[0], listener); + +ee.removeListener(foo, listener); +assert.strictEqual(ee.listeners(foo).length, 0); diff --git a/node_modules/mini-ali-ui/CHANGELOG.md b/node_modules/mini-ali-ui/CHANGELOG.md new file mode 100755 index 0000000..e2e316b --- /dev/null +++ b/node_modules/mini-ali-ui/CHANGELOG.md @@ -0,0 +1,122 @@ +## 1.0.11 +`2020-06-04` +* **Enhance** + * **search-bar** 组件新增 `borderColor`; + * tips 组件中的 tips-plain 新增倒计时后的回调 `onTimeout()`; + * 部分组件新增对 `data-xxx` 的传值; + * **guide** 组件可通过点击遮罩来实现引导跳转; + * **stepper** 组件新增 `onchange` 事件触发类型返回值; +* **Fixed** + * **popover** 组件中遮罩由于 `transform` 导致覆盖不全 [#20](https://github.com/Alibaba-mp/mini-ali-ui/issues/20); + +## 1.0.10 +`2020-05-21` +* **Add** + * swipe-action 组件新增宽度设置; + * tabs 选项卡新增选中态下滑线可配置; +* **Enhance** + * tabs 电梯组件 tab-content 距离顶部的位置; +* **Fixed** + * list-item 中 arrow 对齐像素偏差; + * input-item/picker-item 在主题配置方面的 token 处理; + * am-switch 在 rpx 模式中的兼容问题 [#23](https://github.com/Alibaba-mp/mini-ali-ui/issues/23); + * button 组件获取 data-xxx 的值 [#13](https://github.com/Alibaba-mp/mini-ali-ui/issues/13); + * swipe-action 组件加载时闪动; + * tab 电梯组件点击高亮不准; + * search-bar 组件中 clear icon 可能无法点击问题; + +## 1.0.9 +`2020-05-07` +* **Add** + * message 组件增加 slot 插槽; + * tabs 组件新增 badge 展示; +* **Update** + * page-result 插画风格统一; +* **Fixed** + * input-item 组件 clear 不展示时不占位处理; + * input-item 组件透传 controlled 参数 [#15](https://github.com/Alibaba-mp/mini-ali-ui/issues/15); + * CheckBox 可控处理 [#18](https://github.com/Alibaba-mp/mini-ali-ui/pull/18); + * list-item 的 hover 状态修正; + * popover 组件 item 传值 [#11](https://github.com/Alibaba-mp/mini-ali-ui/issues/11); + +## 1.0.8 +`2020-04-10` +* **Fixed** 在 IDE 中无法正常显示 `-webkit-` 前缀的问题; + +## 1.0.7 +`2020-04-10` +* **Add** + * tabs 电梯组件新增 `elevatorTop` 属性,可控 tab 位置; +* **Update** + * collapse 增加自适应 demo 效果; +* **Fixed** + * 标签闭合; + * am-checkbox 在插件中的样式问题 [#16](https://github.com/Alibaba-mp/mini-ali-ui/pull/16); + * rpx 版本中 modal 组件的样式问题; + * tabs 电梯组件中 `sticky` 属性问题; + +## 1.0.6 +`2020-03-26` +* **Add** + * vtabs 组件新增选中态的样式; + * badge 组件新增描边 +* **Update** + * badge 组件左右箭头样式调整; + * demo 以及 readme 文档更新; +* **Fixed** + * notice 组件对齐问题; + * swipe-action 组件在钉钉小程序中报错处理; + * swipe-action 组件高度计算错误处理; + +## 1.0.5 +`2020-03-11` +* **Fixed** 修复 coupon 组件中已使用票券类型的样式问题; + +## 1.0.4 +`2020-03-11` +* **Add** + * footer 组件新增 `end` 类型 [#8](https://github.com/Alibaba-mp/mini-ali-ui/issues/8); + * coupon 组件新增票券权益、使用规则等说明; + * input-item、picker-item 新增垂直类型; +* **Update** + * notice 组件类型更新; + * search-bar 组件键盘显示“搜索”; + * 微调 avatar 头像尺寸和 modal 组件中图片尺寸; + * 相关 demo 文件以及 readme.md 文档调整; +* **Fixed** + * 组件标签闭合 + +## 1.0.3 +`2020-03-03` +* **Update** Calendar component demo; +* **Fixed** List component bug; + +## 1.0.2 +`2020-02-28` +* **fixed** tabs component bug; +* **modify** demo and readme content; +* **add** the components qr code to the readme document; + +## 1.0.1 +`2020-02-24` +* **fixed** verify-code component bug; +* **modify** demo and readme content; + +## 1.0.0 +`2020-02-19` +* 新增 **mini-ali-ui** 的 logo,以及钉钉交流群; +* 调整部分组件的 readme 文档内容; +* 优化组件交互体验,处理几个小 bug; +* **mini-ali-ui** 开启了为广大阿里小程序开发者服务的旅程; + +## 0.1.0 +`2020-02-04` +* 将 **mini-antui** 改名 **mini-ali-ui**,同时进行组件升级优化; +* **优化:** + * 可支持 `rpx`,需通过 `npm install mini-ali-ui-rpx --save` 得到; + * 结合 CSS 自定义属性,实现更快捷的换肤模式; + * 针对 **mini-antui** 中已有的组件进行功能升级优化,共 26 个; +* **增加:** + * 新增 16 个组件; + * 增加与小程序基础组件同名的扩展组件,如 `button` 等; + diff --git a/node_modules/mini-ali-ui/LICENSE b/node_modules/mini-ali-ui/LICENSE new file mode 100755 index 0000000..55687a9 --- /dev/null +++ b/node_modules/mini-ali-ui/LICENSE @@ -0,0 +1,22 @@ +MIT LICENSE + +Copyright (c) 2018-present Alipay.com, https://www.alipay.com/ + +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/node_modules/mini-ali-ui/README.md b/node_modules/mini-ali-ui/README.md new file mode 100755 index 0000000..148969e --- /dev/null +++ b/node_modules/mini-ali-ui/README.md @@ -0,0 +1,86 @@ +

+ +

+ + +# Mini Ali UI + +[![npm package](https://img.shields.io/npm/v/mini-ali-ui.svg?style=flat-square)](https://www.npmjs.com/package/mini-ali-ui) +[![GitHub stars](https://img.shields.io/github/stars/Alibaba-mp/mini-ali-ui.svg)](https://github.com/Alibaba-mp/mini-ali-ui/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/Alibaba-mp/mini-ali-ui.svg)](https://github.com/Alibaba-mp/mini-ali-ui/network/members) +[![NPM downloads](https://img.shields.io/npm/dm/mini-ali-ui.svg?style=flat-square)](https://www.npmjs.com/package/mini-ali-ui) +[![GitHub issues](https://img.shields.io/github/issues/Alibaba-mp/mini-ali-ui.svg)](https://github.com/Alibaba-mp/mini-ali-ui/issues) +[![GitHub license](https://img.shields.io/github/license/Alibaba-mp/mini-ali-ui.svg)](https://github.com/Alibaba-mp/mini-ali-ui/blob/master/LICENSE) + +## 示例 + +

+ +

+ +## 特性 + +- 基于 **Alipay Design** 设计规范; +- 支持多端小程序(支付宝,淘宝,钉钉等); +- 支持主题配置切换; +- 支持 `px` 与 `rpx`; + +## 安装 + +```bash +$ npm install mini-ali-ui --save +``` + +同时,我们提供了 **rpx** 版本的 mini-ali-ui,如需要使用 **rpx** 作为单位的组件,可以通过下述方式进行安装: + +```bash +$ npm install mini-ali-ui-rpx --save +``` + +## 使用 + +在页面 json 中文件中进行注册,如 title 组件的注册如下所示: + +```json +{ + "usingComponents": { + "title": "mini-ali-ui/es/title/index" + } +} +``` + +如安装的是 **rpx** 版本的 mini-ali-ui,那么在进行组件注册时,修改一下名称即可,方式如下: + +```json +{ + "usingComponents": { + "title": "mini-ali-ui-rpx/es/title/index" + } +} +``` + +组件注册成功之后,具体的使用方式无差别。 + +在 axml 文件中进行调用: +```xml +内部标题可关闭 +``` + +详细使用说明请参照官方文档[使用自定义组件](https://docs.alipay.com/mini/framework/use-custom-component) + +## 贡献 + +如果你有好的意见或建议,欢迎给我们提 [issue](https://github.com/Alibaba-mp/mini-ali-ui/issues)。 + +## 钉钉群 + +![钉钉群:30147295](https://gw.alipayobjects.com/mdn/rms_ce4c6f/afts/img/A*qP-BRLk3wvYAAAAAAAAAAABkARQnAQ) 群号:**30147295** + +## 链接 +- [支付宝小程序](https://mini.open.alipay.com/channel/miniIndex.htm) +- [开发工具](https://docs.alipay.com/mini/ide/overview) \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/_util/fmtClass.js b/node_modules/mini-ali-ui/es/_util/fmtClass.js new file mode 100755 index 0000000..c51a35d --- /dev/null +++ b/node_modules/mini-ali-ui/es/_util/fmtClass.js @@ -0,0 +1,30 @@ +var hasOwn = {}.hasOwnProperty; +/* eslint-disable no-continue, prefer-spread */ + +export default function fmtClass() { + var classes = []; + + for (var i = 0; i < arguments.length; i++) { + var arg = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (!arg) continue; + var argType = typeof arg; + + if (argType === 'string' || argType === 'number') { + classes.push(arg); + } else if (Array.isArray(arg) && arg.length) { + var inner = fmtClass.apply(null, arg); + + if (inner) { + classes.push(inner); + } + } else if (argType === 'object') { + for (var key in arg) { + if (hasOwn.call(arg, key) && arg[key]) { + classes.push(key); + } + } + } + } + + return classes.join(' '); +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/_util/fmtEvent.js b/node_modules/mini-ali-ui/es/_util/fmtEvent.js new file mode 100755 index 0000000..b74b56a --- /dev/null +++ b/node_modules/mini-ali-ui/es/_util/fmtEvent.js @@ -0,0 +1,19 @@ +export default function fmtEvent(props, e) { + var dataset = {}; + + for (var key in props) { + if (/data-/gi.test(key)) { + dataset[key.replace(/data-/gi, '')] = props[key]; + } + } + + return Object.assign({}, e, { + currentTarget: { + dataset: dataset + }, + target: { + dataset: dataset, + targetDataset: dataset + } + }); +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/_util/fmtUnit.js b/node_modules/mini-ali-ui/es/_util/fmtUnit.js new file mode 100755 index 0000000..b23d73b --- /dev/null +++ b/node_modules/mini-ali-ui/es/_util/fmtUnit.js @@ -0,0 +1,18 @@ +var jsUnitRpx = 'false'; +/* eslint-disable no-continue, prefer-spread */ + +export default function fmtUnit(oldUnit) { + var getUnit = oldUnit; + + if (jsUnitRpx === 'true') { + if (typeof getUnit === 'string' && getUnit === 'px') { + getUnit = 'rpx'; + } else if (typeof getUnit === 'number') { + getUnit *= 2; + } else if (typeof getUnit === 'string') { + getUnit = oldUnit.match(/(\d+|\d+\.\d+)(px)/)[1] * 2 + 'rpx'; + } + } + + return getUnit; +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-checkbox/index.acss b/node_modules/mini-ali-ui/es/am-checkbox/index.acss new file mode 100755 index 0000000..0867cec --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-checkbox/index.acss @@ -0,0 +1 @@ +.am-checkbox{position:relative;height:22px;height:var(--am-checkbox-size,22px);width:22px;width:var(--am-checkbox-size,22px);display:inline-block}.am-checkbox-value{position:absolute;z-index:1;border-radius:50vh;border-radius:var(--am-checkbox-corner-radius,50vh);opacity:0}.am-checkbox-synthetic{position:absolute;z-index:2;pointer-events:none;top:0;left:0;border-radius:50vh;border-radius:var(--am-checkbox-corner-radius,50vh);height:100%;width:100%;text-align:center}.am-checkbox-synthetic::before{position:absolute;left:0;top:0;height:200%;width:200%;display:block;box-sizing:border-box;border-radius:50vh;border-radius:var(--am-checkbox-corner-radius,50vh);content:'';transform-origin:0 0;transform:scale(.5);border:1px solid #ccc;border:var(--am-checkbox-border-width,1px) solid var(--am-checkbox-border-color,#ccc)}.am-checkbox-synthetic.am-checkbox-checked::before{background-color:#1677ff;background-color:var(--am-checkbox-background,#1677ff);border-color:#1677ff;border-color:var(--am-checkbox-background,#1677ff);border-width:0}.am-checkbox-synthetic.am-checkbox-checked::after{position:absolute;display:block;z-index:2;content:'';top:50%;left:50%;transform:translate(-50%,-50%);height:8px;width:11px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAQCAYAAAFl6r+wAAAAAXNSR0IArs4c6QAAASJJREFUOBGdk00OwVAUhTUibMAKjKzKyMzEXkwY2YERexFGJAaWIJLnO9X7erVPtU5yc//OPff1te31PEIIU+X4YayT3FRZYEHVLLaKoGiM8pTkogIoNRITg48a7IFGtChfgnsXjKaGYHntFNYwD1c7HpYnvUhSLVCemMK1KOrB06SqJMTGZ/95ZgkissKdquK1HOIOEza1pi9AMOLe12txkih9wbNJ04o0JiILGsAZ8eAFYgwhDmgIpIk2AcEGmok28K9nkd66HZ8w3P/VyucSghLdY+V312VDa0GIa+yIzZoWtBaUCOQ+dsY8Fn4BjeoditvukSHqTV814bAk9i9FrQPW/Q4Z0gL7ZQkjOgl+/a2RG3Mdc0yfzjbLsqe/nl/xC+6YynvEuhO+AAAAAElFTkSuQmCC);background-size:contain;background-repeat:no-repeat}.am-checkbox-synthetic.am-checkbox-disabled::before{border:1px solid #ccc;border:var(--am-checkbox-border-width,1px) solid var(--am-checkbox-border-color,#ccc);background-color:#e5e5e5;background-color:var(--am-checkbox-disabled-background,#e5e5e5)}.am-checkbox-synthetic.am-checkbox-checked.am-checkbox-disabled::after{position:absolute;display:block;z-index:2;content:'';top:50%;left:50%;transform:translate(-50%,-50%);height:8px;width:11px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAARCAYAAAGutmwVAAAAAXNSR0IArs4c6QAAAZdJREFUOBGlVDFLw0AUzoUWBEGs7m5mdHByccggOAkOCnZySOhvSjMEQiponZykCB07iYtTf4S6iKEtid87845Lmou1Pjje3fe+9713ubtYlm6DwaBD6yAILiQeRdG2TrDCMDy2xuNxC5S3UoQWoooUrF6LAljkcO8YPdgOYauZzCzSZQbPBRrcmM1mX4RCc6kBpW+OKIrskDbVaSSjtiSBeImSQ0nmhhzHabuuu6iSuIhS1htnJSb9ycdxvJnnua2UTdlo6RCxZ4yXRrJGXGCDbSO5SqTKNsCPfr9/Qwu2OiLFbIwJmr8C4Y4AE5Fisg0oj5BwgvUjximG7BG+ZKpnLaGWWMqiBQ5mfwnUAKWsYWtNi72OkLwrhIj/LVwIPkFQvmL4BYTP1xauE4Rol249/M+JJEmylabpnud5rwQ22W+CnCvwmznKsmzCAPwQT6tLT0vD+L6Utoy46lDn0lx+Cnp68/n8obhHzJEFptPpAYCVBTm59I0NBZhLOzB2yCT2JWEGiwK32MEZTvgT49r3/XuOr+K/AZoUzLVkroRcAAAAAElFTkSuQmCC);background-size:contain;background-repeat:no-repeat} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-checkbox/index.axml b/node_modules/mini-ali-ui/es/am-checkbox/index.axml new file mode 100755 index 0000000..0630a9a --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-checkbox/index.axml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-checkbox/index.js b/node_modules/mini-ali-ui/es/am-checkbox/index.js new file mode 100755 index 0000000..0aa8e2d --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-checkbox/index.js @@ -0,0 +1,52 @@ +import fmtEvent from '../_util/fmtEvent'; +/** + * 对齐 ant design checkbox 的设计,增加 ctrlChecked 属性 + * 当 props 中有 checked 传入时,am-checkbox 是非受控组件 + * 当 props 中不传入 checked 而使用 ctrlChecked 时,am-checkbox 是受控组件 + */ + +Component({ + props: { + value: '', + checked: false, + ctrlChecked: undefined, + disabled: false, + onChange: function onChange() {}, + id: '' + }, + data: { + // 组件内维护的 chackbox 勾选状态 + _checked: false + }, + onInit: function onInit() { + var checked = this.props.checked; + this.setData({ + _checked: checked + }); + }, + // props 改变时 + deriveDataFromProps: function deriveDataFromProps(nextProps) { + var _checked = this.data._checked; + var oldChecked = this.props.ctrlChecked; + var ctrlChecked = nextProps.ctrlChecked; // oldChecked===undefined 说明未传入 checked 属性,am-checkbox 将成为不受控组件 + // oldChecked 有传入值 _checked 受外部 checked 属性控制 + + if (_checked !== ctrlChecked && oldChecked !== undefined) { + this.setData({ + _checked: ctrlChecked + }); + } + }, + methods: { + onChange: function onChange(e) { + var _e$detail = e.detail, + detail = _e$detail === void 0 ? {} : _e$detail; + var value = detail.value; + this.setData({ + _checked: value + }); + var event = fmtEvent(this.props, e); + this.props.onChange(event); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-checkbox/index.json b/node_modules/mini-ali-ui/es/am-checkbox/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-checkbox/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-icon/index.acss b/node_modules/mini-ali-ui/es/am-icon/index.acss new file mode 100755 index 0000000..a663408 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-icon/index.acss @@ -0,0 +1 @@ +@font-face{font-family:antui-icon;src:url(https://gw.alipayobjects.com/os/basement_prod/0496620c-35f3-4a7e-b606-7c38c202321e.ttf?v=20200115) format('truetype')}.am-icon{font-family:antui-icon!important;font-size:17px;font-size:var(--am-icon-size,17px);font-style:normal;-webkit-font-smoothing:antialiased;color:inherit;color:var(--am-icon-color,inherit)}.am-icon-qr:before{content:"\e602"}.am-icon-share:before{content:"\e604"}.am-icon-picture:before{content:"\e605"}.am-icon-add-square:before{content:"\e606"}.am-icon-file:before{content:"\e607"}.am-icon-text:before{content:"\e608"}.am-icon-minus-square:before{content:"\e609"}.am-icon-barcode:before{content:"\e60a"}.am-icon-wallet:before{content:"\e60b"}.am-icon-scan-code:before{content:"\e60c"}.am-icon-receipt:before{content:"\e60d"}.am-icon-down-circle:before{content:"\e60e"}.am-icon-bill-note:before{content:"\e60f"}.am-icon-trash:before{content:"\e610"}.am-icon-bill:before{content:"\e611"}.am-icon-scan:before{content:"\e614"}.am-icon-content:before{content:"\e615"}.am-icon-circle:before{content:"\e617"}.am-icon-play:before{content:"\e618"}.am-icon-limit:before{content:"\e619"}.am-icon-money:before{content:"\e61a"}.am-icon-link:before{content:"\e61b"}.am-icon-zoom-in:before{content:"\e61c"}.am-icon-koubei:before{content:"\e61d"}.am-icon-location:before{content:"\e61e"}.am-icon-capslock:before{content:"\e61f"}.am-icon-time-5:before{content:"\e620"}.am-icon-warn:before{content:"\e622"}.am-icon-help:before{content:"\e624"}.am-icon-close-circle:before{content:"\e625"}.am-icon-selected:before{content:"\e626"}.am-icon-search:before{content:"\e627"}.am-icon-net:before{content:"\e628"}.am-icon-chat:before{content:"\e629"}.am-icon-contacts:before{content:"\e62a"}.am-icon-appx:before{content:"\e62b"}.am-icon-question:before{content:"\e62d"}.am-icon-person-setting:before{content:"\e62f"}.am-icon-setting:before{content:"\e630"}.am-icon-like:before{content:"\e631"}.am-icon-ant:before{content:"\e632"}.am-icon-add:before{content:"\e634"}.am-icon-more:before{content:"\e636"}.am-icon-zoom-out:before{content:"\e637"}.am-icon-money-circle:before{content:"\e638"}.am-icon-collect:before{content:"\e639"}.am-icon-voice:before{content:"\e63a"}.am-icon-good:before{content:"\e63b"}.am-icon-voice-limit:before{content:"\e63c"}.am-icon-people:before{content:"\e63d"}.am-icon-person-add:before{content:"\e63e"}.am-icon-download:before{content:"\e63f"}.am-icon-sad:before{content:"\e640"}.am-icon-left:before{content:"\e642"}.am-icon-right:before{content:"\e643"}.am-icon-eye-close:before{content:"\e645"}.am-icon-eye:before{content:"\e644"}.am-icon-koubei_:before{content:"\e646"}.am-icon-star_:before{content:"\e647"}.am-icon-check:before{content:"\e648"}.am-icon-chat_:before{content:"\e649"}.am-icon-help_:before{content:"\e64a"}.am-icon-key_:before{content:"\e64b"}.am-icon-lock_:before{content:"\e64e"}.am-icon-people_:before{content:"\e64f"}.am-icon-voice-limit_:before{content:"\e651"}.am-icon-location_:before{content:"\e652"}.am-icon-phone_:before{content:"\e654"}.am-icon-logo-alipay_:before{content:"\e655"}.am-icon-person-delete_:before{content:"\e656"}.am-icon-wait_:before{content:"\e657"}.am-icon-apps_:before{content:"\e65a"}.am-icon-microphone_:before{content:"\e65b"}.am-icon-pen_:before{content:"\e65d"}.am-icon-close_:before{content:"\e65e"}.am-icon-question_:before{content:"\e65f"}.am-icon-down_:before{content:"\e661"}.am-icon-certified-check_:before{content:"\e662"}.am-icon-certified-warn_:before{content:"\e663"}.am-icon-sad_:before{content:"\e664"}.am-icon-ant_:before{content:"\e665"}.am-icon-time-5_:before{content:"\e666"}.am-icon-warn_:before{content:"\e667"}.am-icon-person-circle_:before{content:"\e669"}.am-icon-time-3_:before{content:"\e66b"}.am-icon-check_:before{content:"\e66c"}.am-icon-logo-alipays:before{content:"\e668"}.am-icon-like_:before{content:"\e66d"}.am-icon-home:before{content:"\e66e"}.am-icon-eye_:before{content:"\e66f"}.am-icon-edit_:before{content:"\e670"}.am-icon-mail_:before{content:"\e671"}.am-icon-forbid_:before{content:"\e672"}.am-icon-eye-limit_:before{content:"\e673"}.am-icon-delete-person_:before{content:"\e674"}.am-icon-close:before{content:"\e675"}.am-icon-address-book_:before{content:"\e676"}.am-icon-person:before{content:"\e677"}.am-icon-gift:before{content:"\e678"}.am-icon-add-message:before{content:"\e679"}.am-icon-alipay:before{content:"\e67a"}.am-icon-phone-book_:before{content:"\e67b"}.am-icon-more-1:before{content:"\e650"}.am-icon-delete_:before{content:"\e653"}.am-icon-down:before{content:"\e658"}.am-icon-up:before{content:"\e659"} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-icon/index.axml b/node_modules/mini-ali-ui/es/am-icon/index.axml new file mode 100755 index 0000000..97965fb --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-icon/index.axml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-icon/index.js b/node_modules/mini-ali-ui/es/am-icon/index.js new file mode 100755 index 0000000..d4dc607 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-icon/index.js @@ -0,0 +1,12 @@ +import fmtUnit from '../_util/fmtUnit'; +Component({ + props: { + type: '', + size: fmtUnit(17), + color: '', + className: '' + }, + data: { + valueUnit: fmtUnit('px') + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-icon/index.json b/node_modules/mini-ali-ui/es/am-icon/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-radio/index.acss b/node_modules/mini-ali-ui/es/am-radio/index.acss new file mode 100755 index 0000000..ef952ad --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-radio/index.acss @@ -0,0 +1 @@ +.am-radio{position:relative;height:18px;height:var(--am-radio-size,18px);width:18px;width:var(--am-radio-size,18px);display:inline-block;line-height:1}.am-radio-value{position:absolute;z-index:1;opacity:0}.am-radio .am-radio-synthetic{position:absolute;opacity:0;z-index:2;line-height:1;pointer-events:none;top:0;left:0;height:100%;width:100%;font-size:18px;font-size:var(--am-radio-size,18px);text-align:center;color:#1677ff;color:var(--am-radio-color,#1677ff)}.am-radio-value.a-radio-checked+.am-radio-synthetic{opacity:1}.am-radio-value.a-radio-checked.a-radio-disabled+.am-radio-synthetic{opacity:.4} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-radio/index.axml b/node_modules/mini-ali-ui/es/am-radio/index.axml new file mode 100755 index 0000000..4ea5701 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-radio/index.axml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-radio/index.js b/node_modules/mini-ali-ui/es/am-radio/index.js new file mode 100755 index 0000000..8be1974 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-radio/index.js @@ -0,0 +1,16 @@ +import fmtEvent from '../_util/fmtEvent'; +Component({ + props: { + value: '', + checked: false, + disabled: false, + onChange: function onChange() {}, + id: '' + }, + methods: { + onChange: function onChange(e) { + var event = fmtEvent(this.props, e); + this.props.onChange(event); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-radio/index.json b/node_modules/mini-ali-ui/es/am-radio/index.json new file mode 100755 index 0000000..717cce8 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-radio/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "am-icon": "../am-icon/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-switch/index.acss b/node_modules/mini-ali-ui/es/am-switch/index.acss new file mode 100755 index 0000000..b49cbd2 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-switch/index.acss @@ -0,0 +1 @@ +.am-switch .checkbox{width:51px;height:31px;border-radius:50vh;border-radius:var(--am-switch-corner-radius,50vh)}.am-switch .checkbox:after{left:2px;top:2px;width:27px;height:27px;border-radius:50vh;border-radius:var(--am-switch-float-corner-radius,50vh)}.am-switch .checkbox:before{left:2px;top:2px;width:47px;height:27px;border-radius:50vh;border-radius:var(--am-switch-corner-radius,50vh)}.am-switch.a-switch-android .checkbox{width:72px;height:23px;border-radius:3px}.am-switch.a-switch-android .checkbox:after{width:35px;height:21px;border-radius:2px;left:1px;top:1px}.am-switch .a-switch-checkbox.a-switch-checkbox:checked~.checkbox{background:#1677ff;background:var(--am-switch-background,#1677ff)}.am-switch .a-switch-checkbox.a-switch-checkbox:checked~.checkbox::after{transform:translateX(20px)}.am-switch.a-switch-android .a-switch-checkbox.a-switch-checkbox:checked~.checkbox::after{transform:translateX(35px)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-switch/index.axml b/node_modules/mini-ali-ui/es/am-switch/index.axml new file mode 100755 index 0000000..6bf1c36 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-switch/index.axml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-switch/index.js b/node_modules/mini-ali-ui/es/am-switch/index.js new file mode 100755 index 0000000..8828d6e --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-switch/index.js @@ -0,0 +1,20 @@ +import fmtEvent from '../_util/fmtEvent'; +Component({ + props: { + checked: false, + disabled: false, + onChange: function onChange() {}, + id: '', + name: '', + controlled: false + }, + data: { + checkedCls: '' + }, + methods: { + onChange: function onChange(e) { + var event = fmtEvent(this.props, e); + this.props.onChange(event); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/am-switch/index.json b/node_modules/mini-ali-ui/es/am-switch/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/am-switch/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/amount-input/index.acss b/node_modules/mini-ali-ui/es/amount-input/index.acss new file mode 100755 index 0000000..58d95b9 --- /dev/null +++ b/node_modules/mini-ali-ui/es/amount-input/index.acss @@ -0,0 +1 @@ +.am-amount{box-sizing:border-box;width:100%;padding:12px 12px;padding:var(--am-amount-padding-vertical,12px) var(--am-amount-padding-horizontal,12px);background:#fff;background:var(--am-amount-background,#fff)}.am-amount .a-input-content{font-family:DIN PRO,DIN Alternate;font-size:45px;font-size:var(--am-amount-content-font-size,45px);line-height:1;line-height:var(--am-amount-content-line-height,1);font-weight:500}.am-amount .a-input{padding:0 8px;padding:0 var(--am-amount-a-input-padding,8px)}.am-amount-title{line-height:1;line-height:var(--am-amount-title-line-height,1);color:#333;color:var(--am-amount-title-color,#333);font-size:17px;font-size:var(--am-amount-title-font-size,17px)}.am-amount-synthetic{display:flex;align-items:baseline}.am-amount-input{box-sizing:content-box;margin-top:24px;margin-top:var(--am-amount-value-margin-top,24px);padding-bottom:8px;padding-bottom:var(--am-amount-input-padding-bottom,8px);display:flex;align-items:baseline;width:100%;height:50px;position:relative;font-size:55px;line-height:1;line-height:var(--am-amount-input-line-height,1.5)}.am-amount-input::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-amount-symbol{width:18px;font-family:PingFang SC;font-size:30px;font-size:var(--am-amount-symbol-font-size,30px);line-height:1;color:#333;color:var(--am-amount-symbol-color,#333);align-self:flex-start;margin-top:17px}.am-amount-placeholder{color:#ccc;color:var(--am-amount-placeholder-color,#ccc);font-size:30px;font-size:var(--am-amount-placeholder-font-size,30px);line-height:1;line-height:var(--am-amount-symbol-line-height,1);font-family:PingFang;position:absolute;top:15px;left:0;height:30px;height:var(--am-amount-placeholder-font-size,30px);display:flex;z-index:0;align-items:flex-end}.am-amount-value{box-sizing:border-box;z-index:2;height:100%;vertical-align:middle;background-color:transparent;font-weight:250}.am-amount-clear{visibility:hidden;width:28px;height:28px;align-self:center;margin-top:8px}.am-amount-clear-icon{display:flex;height:100%;justify-content:center;align-items:center}.am-amount-clear-show{visibility:visible}.am-amount-footer{padding-top:12px;padding-top:var(--am-amount-footer-padding-top,12px);display:flex;align-items:center;justify-content:space-between;line-height:1;line-height:var(--am-amount-footer-line-height,1)}.am-amount-extra{flex:1;line-height:1;line-height:var(--am-amount-extra-line-height,1);color:#999;color:var(--am-amount-extra-color,#999);font-size:15px;font-size:var(--am-amount-extra-font-size,15px)}.am-amount-btn{color:#1677ff;color:var(--am-amount-btn-font-color,#1677ff);line-height:1;line-height:var(--am-amount-btn-line-height,1);font-size:15px;font-size:var(--am-amount-btn-font-size,15px)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/amount-input/index.axml b/node_modules/mini-ali-ui/es/amount-input/index.axml new file mode 100755 index 0000000..d65ea95 --- /dev/null +++ b/node_modules/mini-ali-ui/es/amount-input/index.axml @@ -0,0 +1,30 @@ + + {{title}} + + ¥ + + + + + + + {{extra}} + {{btnText}} + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/amount-input/index.js b/node_modules/mini-ali-ui/es/amount-input/index.js new file mode 100755 index 0000000..603c76a --- /dev/null +++ b/node_modules/mini-ali-ui/es/amount-input/index.js @@ -0,0 +1,81 @@ +import fmtEvent from '../_util/fmtEvent'; +Component({ + props: { + type: 'number', + className: '', + focus: false, + placeholder: '', + value: '', + controlled: false + }, + data: { + _focus: false + }, + didMount: function didMount() { + this.setData({ + _focus: this.props.focus + }); + }, + didUpdate: function didUpdate(prevProps) { + var prevFocus = prevProps.focus; + var nowFocus = this.props.focus; + + if (prevFocus !== nowFocus) { + this.setData({ + _focus: nowFocus + }); + } + }, + methods: { + onInput: function onInput(e) { + var event = fmtEvent(this.props, e); + + if (this.props.onInput) { + this.props.onInput(event); + } + }, + onConfirm: function onConfirm(e) { + var event = fmtEvent(this.props, e); + + if (this.props.onConfirm) { + this.props.onConfirm(event); + } + }, + onButtonClick: function onButtonClick() { + if (this.onButtonClick) { + this.props.onButtonClick(); + } + }, + onFocus: function onFocus(e) { + this.setData({ + _focus: true + }); + var event = fmtEvent(this.props, e); + + if (this.props.onFocus) { + this.props.onFocus(event); + } + }, + onBlur: function onBlur(e) { + this.setData({ + _focus: false + }); // my.alert({ content: '_focus: ' + this.data._focus }); + + var event = fmtEvent(this.props, e); + + if (this.props.onBlur) { + this.props.onBlur(event); + } + }, + onClearTap: function onClearTap() { + // my.alert({ content: 'manually focus' }); + this.setData({ + _focus: true + }); + + if (this.props.onClear) { + this.props.onClear(); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/amount-input/index.json b/node_modules/mini-ali-ui/es/amount-input/index.json new file mode 100755 index 0000000..3e0784c --- /dev/null +++ b/node_modules/mini-ali-ui/es/amount-input/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "am-icon": "../am-icon/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/avatar/index.acss b/node_modules/mini-ali-ui/es/avatar/index.acss new file mode 100755 index 0000000..cdb437a --- /dev/null +++ b/node_modules/mini-ali-ui/es/avatar/index.acss @@ -0,0 +1 @@ +.am-avatar{display:flex;align-items:center}.am-avatar-img{width:52px;height:52px;border-radius:50vh}.am-avatar-img-sm{width:36px;height:36px}.am-avatar-img-md{width:52px;height:52px}.am-avatar-img-lg{width:60px;height:60px}.am-avatar-img-square{border-radius:0}.am-avatar-content{margin-left:12px}.am-avatar-name{font-size:17px;color:#333}.am-avatar-name-lg{font-size:18px}.am-avatar-desc{margin-top:4px;font-size:15px;color:#999}.am-avatar-desc-sm{display:none} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/avatar/index.axml b/node_modules/mini-ali-ui/es/avatar/index.axml new file mode 100755 index 0000000..4da1139 --- /dev/null +++ b/node_modules/mini-ali-ui/es/avatar/index.axml @@ -0,0 +1,11 @@ + + + + + {{name}} + + + {{desc}} + + + diff --git a/node_modules/mini-ali-ui/es/avatar/index.js b/node_modules/mini-ali-ui/es/avatar/index.js new file mode 100755 index 0000000..e0b92ba --- /dev/null +++ b/node_modules/mini-ali-ui/es/avatar/index.js @@ -0,0 +1,29 @@ +Component({ + props: { + className: '', + shape: 'circle', + size: 'md', + src: 'https://gw.alipayobjects.com/mdn/rms_349abe/afts/img/A*5VvARpvk39QAAAAAAAAAAABkARQnAQ', + name: '', + desc: '' + }, + didMount: function didMount() { + var _this$props = this.props, + name = _this$props.name, + desc = _this$props.desc; + + if (!name && desc) { + console.error('Avatar: 不允许设置 desc 但不定义 name'); + } + }, + methods: { + // 图片加载失败 + _onError: function _onError(e) { + var onError = this.props.onError; + + if (onError) { + onError(e); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/avatar/index.json b/node_modules/mini-ali-ui/es/avatar/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/node_modules/mini-ali-ui/es/avatar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/node_modules/mini-ali-ui/es/badge/index.acss b/node_modules/mini-ali-ui/es/badge/index.acss new file mode 100755 index 0000000..a41144f --- /dev/null +++ b/node_modules/mini-ali-ui/es/badge/index.acss @@ -0,0 +1 @@ +.am-badge{display:inline-block;position:relative;vertical-align:middle;line-height:1.5;line-height:var(--am-badge-line-height,1.5)}.am-badge-text{display:flex;position:absolute;align-items:center;justify-content:center;right:0;transform:translate(50%,-50%);top:0;min-width:16px;padding:0;min-height:16px;text-align:center;background-color:#ff3b30;background-color:var(--am-badge-bg-color,#ff3b30);border-radius:50vh;border-radius:var(--am-badge-border-radius,50vh);color:#fff;color:var(--am-badge-font-color,#fff);z-index:1}.am-badge-text-padding{font-size:10px;opacity:0}.am-badge-text-inner{position:relative;z-index:2;font-size:11px;white-space:nowrap}.am-badge-text.am-badge-double{padding:0 4px}.am-badge-not-a-wrapper .am-badge-text{position:relative;top:auto;right:auto;transform:translateX(0)}.am-badge-text.is-dot{padding:0;width:10px;min-width:10px;height:10px;min-height:10px;border-radius:50vh;border-radius:var(--am-badge-border-radius,50vh)}.am-badge-arrow{position:absolute;height:8px;width:8px;bottom:-2px;left:50%;margin-left:-4px;transform:rotate(45deg);z-index:1;border-radius:50vh 0 0;background:#ff3b30;background-color:var(--am-badge-bg-color,#ff3b30)}.am-badge-arrow.am-badge-stroke{border:0 none;filter:drop-shadow(1px 1px 0 #fff)}.am-badge-text-arrow-right{border-radius:8px 8px 0 8px}.am-badge-text-arrow-left{border-radius:8px 8px 8px 0}.am-badge-stroke{border:1px solid #fff} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/badge/index.axml b/node_modules/mini-ali-ui/es/badge/index.axml new file mode 100755 index 0000000..7f7788e --- /dev/null +++ b/node_modules/mini-ali-ui/es/badge/index.axml @@ -0,0 +1,14 @@ + + + {{typeof text === 'number' && text > overflowCount ? overflowCount + '+' : text }} + + + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/badge/index.js b/node_modules/mini-ali-ui/es/badge/index.js new file mode 100755 index 0000000..f799302 --- /dev/null +++ b/node_modules/mini-ali-ui/es/badge/index.js @@ -0,0 +1,11 @@ +Component({ + props: { + className: '', + overflowCount: 99, + text: '', + dot: false, + withArrow: false, + direction: 'middle', + stroke: false + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/badge/index.json b/node_modules/mini-ali-ui/es/badge/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/badge/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/button/index.acss b/node_modules/mini-ali-ui/es/button/index.acss new file mode 100755 index 0000000..b28946b --- /dev/null +++ b/node_modules/mini-ali-ui/es/button/index.acss @@ -0,0 +1 @@ +.am-button{position:relative;box-sizing:border-box;height:auto;line-height:normal;padding:12px;padding:var(--am-button-padding,12px);border-radius:4px;border-radius:var(--am-button-corner-radius,4px);color:#333;color:var(--am-button-color,#333);border:0 none;box-shadow:inset 0 0 0 1px #e5e5e5;box-shadow:inset 0 0 0 var(--am-button-border-size,1px) var(--am-button-border-color,#e5e5e5);background-color:#fff;background-color:var(--am-button-background,#fff);font-size:18px;font-size:var(--am-button-title-size,18px)}.am-button-content{display:flex;flex-direction:row;justify-content:center;align-items:center}.am-button-loading{margin-right:12px}.am-button.am-button-disabled{opacity:.4;opacity:var(--am-button-disabled-opacity,.4);color:#333;color:var(--am-button-color,#333);background-color:#fff;background-color:var(--am-button-background,#fff)}.am-button-active{filter:brightness(.9)}.am-button-active>:nth-child(1n+1){opacity:.7}.am-button-text.am-button-active>:nth-child(1n+1){opacity:.6}.am-button-subtitle{font-size:17px;font-size:var(--am-button-doubleline-title-size,17px)}.am-button-subtitle-subfont{font-size:12px;font-size:var(--am-button-subtitle-size,12px);opacity:.6}.am-button-primary,.am-button-primary.am-button-disabled{background-color:#1677ff;background-color:var(--am-button-primary-background,#1677ff);color:#fff;color:var(--am-button-primary-color,#fff);box-shadow:0 0}.am-button-ghost,.am-button-ghost.am-button-disabled{background-color:transparent;color:#1677ff;color:var(--am-button-ghost-color,#1677ff);box-shadow:inset 0 0 0 1px #1677ff;box-shadow:inset 0 0 0 var(--am-button-border-size,1px) var(--am-button-ghost-border-color,#1677ff)}.am-button-warn,.am-button-warn.am-button-disabled{background-color:#ff3b30;background-color:var(--am-button-warn-background,#ff3b30);color:#fff;color:var(--am-button-warn-color,#fff);box-shadow:0 0}.am-button-warn-ghost,.am-button-warn-ghost.am-button-disabled{background-color:transparent;color:#ff3b30;color:var(--am-button-warn-ghost-color,#ff3b30);box-shadow:inset 0 0 0 1px #ff3b30;box-shadow:inset 0 0 0 var(--am-button-border-size,1px) var(--am-button-ghost-border-color,#ff3b30)}.am-button-light,.am-button-light.am-button-disabled{background-color:#e7f1ff;background-color:var(--am-button-light-background,#e7f1ff);color:#1677ff;color:var(--am-button-light-color,#1677ff);box-shadow:0 0}.am-button-text,.am-button-text.am-button-disabled{display:inline-block;background-color:transparent;color:#1677ff;color:var(--am-button-text-color,#1677ff);border:0;padding:0;box-shadow:0 0}.am-button-capsule{display:inline-block;border-radius:50vh;border-radius:var(--am-button-capsule-corner,50vh);padding:4px 12px;padding:var(--am-button-capsule-padding-v,4px) var(--am-button-capsule-padding-h,12px)}.am-button-capsule-large{font-size:15px;font-size:var(--am-button-capsule-size-l,15px)}.am-button-capsule-large-minwidth{min-width:84px}.am-button-capsule-medium{font-size:13px;font-size:var(--am-button-capsule-size-m,13px)}.am-button-capsule-medium-minwidth{min-width:76px}.am-button-capsule-small{font-size:12px;font-size:var(--am-button-capsule-size-s,12px)}.am-button-capsule-small-minwidth{min-width:72px} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/button/index.axml b/node_modules/mini-ali-ui/es/button/index.axml new file mode 100755 index 0000000..fcf2978 --- /dev/null +++ b/node_modules/mini-ali-ui/es/button/index.axml @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/button/index.js b/node_modules/mini-ali-ui/es/button/index.js new file mode 100755 index 0000000..33bee76 --- /dev/null +++ b/node_modules/mini-ali-ui/es/button/index.js @@ -0,0 +1,111 @@ +import fmtClass from '../_util/fmtClass'; +import fmtEvent from '../_util/fmtEvent'; +var SUPPORT_COMPONENT2 = my.canIUse('component2'); +var prefixCls = 'am-button'; + +var noop = function noop() {}; + +Component({ + mixins: [], + data: { + baseClass: prefixCls + }, + props: { + className: '', + type: '', + dataName: '', + disabled: false, + subtitle: '', + onTap: noop, + capsuleMinWidth: false, + showLoading: false + }, + onInit: function onInit() { + if (!this.props.hoverClass) { + this.props.hoverClass = 'am-button-active'; + + if (this.props.type === 'text') { + this.props.hoverClass = 'am-button-active-text'; + } + } + + this.setData({ + baseClass: this.wrapBaseCls(this.props), + hoverClass: this.props.hoverClass + }); + }, + deriveDataFromProps: function deriveDataFromProps(nextProps) { + if (this.propsChange(this.props, nextProps)) { + this.setData({ + baseClass: this.wrapBaseCls(nextProps) + }); + } + }, + didMount: function didMount() { + if (!SUPPORT_COMPONENT2) { + if (!this.props.hoverClass) { + this.props.hoverClass = 'am-button-active'; + + if (this.props.type === 'text') { + this.props.hoverClass = 'am-button-active-text'; + } + } + + this.setData({ + baseClass: this.wrapBaseCls(this.props), + hoverClass: this.props.hoverClass + }); + } + }, + didUpdate: function didUpdate(prevProps) { + if (!SUPPORT_COMPONENT2 && this.propsChange(prevProps, this.props)) { + this.setData({ + baseClass: this.wrapBaseCls(this.props) + }); + } + }, + didUnmount: function didUnmount() {}, + methods: { + wrapBaseCls: function wrapBaseCls(props) { + var _fmtClass; + + var type = props.type, + disabled = props.disabled, + subtitle = props.subtitle, + shape = props.shape, + _props$capsuleSize = props.capsuleSize, + capsuleSize = _props$capsuleSize === void 0 ? 'medium' : _props$capsuleSize, + capsuleMinWidth = props.capsuleMinWidth; + var capsuleMinWidthCls = ''; + + if (capsuleMinWidth) { + capsuleMinWidthCls = prefixCls + "-capsule-" + capsuleSize + "-minwidth"; + } + + var ret = fmtClass((_fmtClass = {}, _fmtClass["" + prefixCls] = true, _fmtClass[prefixCls + "-primary"] = type === 'primary', _fmtClass[prefixCls + "-ghost"] = type === 'ghost', _fmtClass[prefixCls + "-warn"] = type === 'warn', _fmtClass[prefixCls + "-warn-ghost"] = type === 'warn-ghost', _fmtClass[prefixCls + "-text"] = type === 'text', _fmtClass[prefixCls + "-light"] = type === 'light', _fmtClass[prefixCls + "-capsule " + prefixCls + "-capsule-" + capsuleSize + " " + capsuleMinWidthCls] = shape === 'capsule', _fmtClass[prefixCls + "-disabled"] = disabled, _fmtClass[prefixCls + "-subtitle"] = subtitle, _fmtClass)); + return ret; + }, + onButtonTap: function onButtonTap(e) { + var event = fmtEvent(this.props, e); + this.props.onTap(event); + }, + propsChange: function propsChange(prevProps, nextProps) { + var pProps = Object.getOwnPropertyNames(prevProps); + var nProps = Object.getOwnPropertyNames(nextProps); + + if (pProps.length !== nProps.length) { + return true; + } + + for (var i = 0; i < pProps.length; i++) { + var propName = pProps[i]; + + if (prevProps[propName] !== nextProps[propName]) { + return true; + } + } + + return false; + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/button/index.json b/node_modules/mini-ali-ui/es/button/index.json new file mode 100755 index 0000000..034f5a5 --- /dev/null +++ b/node_modules/mini-ali-ui/es/button/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "loading": "../loading/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/calendar/index.acss b/node_modules/mini-ali-ui/es/calendar/index.acss new file mode 100755 index 0000000..189fd79 --- /dev/null +++ b/node_modules/mini-ali-ui/es/calendar/index.acss @@ -0,0 +1 @@ +.am-calendar{background-color:#fff;background-color:var(--am-calendar-bgc,#fff);padding-top:12px;padding-top:var(--am-calendar-paddingT,12px);line-height:normal}.am-calendar-months{display:flex;box-sizing:border-box;padding:0 24px;padding:0 var(--am-calendar-month-paddingLR,24px);align-items:center}.am-calendar-next-month,.am-calendar-prev-month{display:flex;width:40px;width:var(--am-calendar-btn-size,40px)}.am-calendar-prev-month{justify-content:flex-start}.am-calendar-next-month{justify-content:flex-end}.am-calendar-arrow{font-size:22px;font-size:var(--am-calendar-arrow-size,22px);color:#1677ff}.am-calendar-arrow_year{width:22px;width:var(--am-calendar-arrow-size,22px);height:22px;height:var(--am-calendar-arrow-size,22px);overflow:hidden;background:url('https://gw.alipayobjects.com/mdn/rms_ce4c6f/afts/img/A*ePblSrxUeT4AAAAAAAAAAABkARQnAQ') no-repeat center;background-size:68% 82%;transform:rotate(-180deg)}.am-calendar-next-month_disable .am-calendar-arrow,.am-calendar-prev-month_disable .am-calendar-arrow{color:#ccc}.am-calendar-next-year_disable .am-calendar-arrow_year,.am-calendar-prev-year_disable .am-calendar-arrow_year{background-image:url('https://gw.alipayobjects.com/mdn/rms_ce4c6f/afts/img/A*UDjqR635HO0AAAAAAAAAAABkARQnAQ')}.am-calendar-arrow.next{transform:rotate(0)}.am-calendar-selected-month{flex:1;text-align:center;font-size:18px;font-size:var(--am-calendar-month-fontSize,18px);font-weight:700;color:#333;color:var(--am-calendar-month-color,#333)}.am-calendar-days{position:relative;display:flex;padding:12px;box-sizing:border-box}.am-calendar-days::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-calendar-day{flex:1;text-align:center;font-size:15px;font-size:var(--am-calendar-day-fontSize,15px);color:#333;color:var(--am-calendar-day-color,#333);font-weight:700}.am-calendar-dates{display:flex;flex-direction:column}.am-calendar-week{margin-bottom:12px;margin-bottom:var(--am-calendar-week-marginTB,12px);display:flex;flex-direction:row;padding:0 12px;padding:0 var(--am-calendar-week-paddingLR,12px)}.am-calendar-week:first-child{margin-top:12px;margin-top:var(--am-calendar-week-marginTB,12px)}.am-calendar-date-wrap{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;height:44px;height:var(--am-calendar-date-height,44px);flex:1}.am-calendar-date{text-align:center;line-height:1;font-size:18px;font-size:var(--am-calendar-date-fontSize,18px);color:#333;color:var(--am-calendar-date-color,#333)}.am-calendar-tag{position:absolute;bottom:2px;width:100%;overflow:hidden;text-overflow:hidden;line-height:1;white-space:nowrap;font-size:11px;font-size:var(--am-calendar-tag-fontSize,11px);font-weight:700;color:#ff6010;color:var(--am-calendar-tag-color,#ff6010)}.am-calendar-today{font-weight:700;color:#1677ff;color:var(--am-calendar-today-color,#1677ff)}.am-calendar-block{position:absolute;top:0;right:0;bottom:0;left:0}.am-calendar-selected .am-calendar-block{background:#1677ff;background:var(--am-calendar-selected-bgc,#1677ff);border-radius:4px;border-radius:var(--am-calendar-selected-corner,4px)}.am-calendar-middle.is-range .am-calendar-block{background:#1677ff;background:var(--am-calendar-selected-bgc,#1677ff);border-radius:0}.am-calendar-start.is-range .am-calendar-block{background:#1677ff;background:var(--am-calendar-selected-bgc,#1677ff);border-radius:4px 0 0 4px;border-radius:var(--am-calendar-selected-corner,4px) 0 0 var(--am-calendar-selected-corner,4px)}.am-calendar-end.is-range .am-calendar-block{background:#1677ff;background:var(--am-calendar-selected-bgc,#1677ff);border-radius:0 4px 4px 0;border-radius:0 var(--am-calendar-selected-corner,4px) var(--am-calendar-selected-corner,4px) 0}.am-calendar-end .am-calendar-date,.am-calendar-middle .am-calendar-date,.am-calendar-selected .am-calendar-date,.am-calendar-start .am-calendar-date{position:relative;font-weight:700;color:#fff;color:var(--am-calendar-selected-color,#fff)}.am-calendar-end .am-calendar-tag,.am-calendar-middle .am-calendar-tag,.am-calendar-selected .am-calendar-tag,.am-calendar-start .am-calendar-tag{font-weight:700;color:#fff;color:var(--am-calendar-selected-color,#fff)}.am-calendar-disable .am-calendar-date,.am-calendar-gray{color:#ccc;color:var(--am-calendar-outer-color,#ccc)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/calendar/index.axml b/node_modules/mini-ali-ui/es/calendar/index.axml new file mode 100755 index 0000000..674c6be --- /dev/null +++ b/node_modules/mini-ali-ui/es/calendar/index.axml @@ -0,0 +1,53 @@ + + + + + + + + + {{selectedYear}}年{{selectedMonth + 1}}月 + + + + + + + + + + {{item}} + + + + + + + + + {{item.date}} + {{item.disable ? '' : item.tag}} + + + + + + diff --git a/node_modules/mini-ali-ui/es/calendar/index.js b/node_modules/mini-ali-ui/es/calendar/index.js new file mode 100755 index 0000000..7ee1664 --- /dev/null +++ b/node_modules/mini-ali-ui/es/calendar/index.js @@ -0,0 +1,501 @@ +/* eslint-disable complexity, no-param-reassign */ + +/* eslint max-depth: [2, 7] */ +var leapYear = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +var commonYear = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +var FIRST_MONTH = 0; +var LAST_MONTH = 11; +var DAYS_PER_ROW = 7; +var COLOR_MAP = { + 1: '#ff6010', + 2: '#00b578', + 3: '#ff8f1f', + 4: '#1677ff', + 5: '#999' +}; // 获取某月第某天是星期几 + +function getDay(month, year, index) { + return new Date(year, month, index).getDay(); +} // 获取某月有几天 + + +function getMonthLength(month, year) { + if (year % 400 === 0 || year % 100 !== 0 && year % 4 === 0) { + return leapYear[month]; + } else { + return commonYear[month]; + } +} // 数字补位 1 -> 01 + + +function prefixNum(num) { + if (num < 10) { + return "0" + num; + } else { + return "" + num; + } +} + +Component({ + data: { + selectedYear: 0, + selectedMonth: 0, + currentDate: null, + dates: [], + blockType: 1 // 1.没有待办纯数字 2.有待办 用于区分不同类型日期块的样式。 + + }, + props: { + className: '', + tagData: [], + type: 'single', + haveYear: false, + prevMonthDisable: false, + prevYearDisable: false, + nextvMonthDisable: false, + nextYearDisable: false + }, + didMount: function didMount() { + this.tapTimes = 1; + var date = new Date(); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + var year = date.getFullYear(); + var month = date.getMonth(); + this.setData({ + selectedYear: year, + selectedMonth: month, + currentDate: date + }); + this.refreshdates(month, year); + }, + didUpdate: function didUpdate() { + var dates = this.data.dates; + var blockType = 1; + + for (var i = 0; i < dates.length; i++) { + for (var j = 0; j < dates[i].length; j++) { + if (this.hasTag(dates[i][j])) { + blockType = 2; + } + } + } + + this.setData({ + dates: dates, + blockType: blockType + }); + }, + methods: { + onPrevYearTap: function onPrevYearTap() { + var _this$data = this.data, + selectedMonth = _this$data.selectedMonth, + selectedYear = _this$data.selectedYear; + var prevYearDisable = this.props.prevYearDisable; + + if (!prevYearDisable) { + var year = selectedYear; + var month = selectedMonth; + year = selectedYear - 1; + + if (this.props.onYearChange) { + this.props.onYearChange(year, selectedYear); + } + + this.setData({ + selectedYear: year + }); + this.refreshdates(month, year); + } + }, + onNextYearTap: function onNextYearTap() { + var _this$data2 = this.data, + selectedMonth = _this$data2.selectedMonth, + selectedYear = _this$data2.selectedYear; + var nextYearDisable = this.props.nextYearDisable; + + if (!nextYearDisable) { + var year = selectedYear; + var month = selectedMonth; + year = selectedYear + 1; + + if (this.props.onYearChange) { + this.props.onYearChange(year, selectedYear); + } + + this.setData({ + selectedYear: year + }); + this.refreshdates(month, year); + } + }, + onPrevMonthTap: function onPrevMonthTap() { + var _this$data3 = this.data, + selectedMonth = _this$data3.selectedMonth, + selectedYear = _this$data3.selectedYear; + var prevMonthDisable = this.props.prevMonthDisable; + + if (!prevMonthDisable) { + var year = selectedYear; + var month = selectedMonth; // 如果当前选中是一月份,前一月是去年的12月 + + if (selectedMonth === FIRST_MONTH) { + year = selectedYear - 1; + month = LAST_MONTH; + } else { + month = selectedMonth - 1; + } + + if (this.props.onMonthChange) { + this.props.onMonthChange(month, selectedMonth); + } + + this.setData({ + selectedYear: year, + selectedMonth: month + }); + this.refreshdates(month, year); + } + }, + onNextMonthTap: function onNextMonthTap() { + var _this$data4 = this.data, + selectedMonth = _this$data4.selectedMonth, + selectedYear = _this$data4.selectedYear; + var nextvMonthDisable = this.props.nextvMonthDisable; + + if (!nextvMonthDisable) { + var year = selectedYear; + var month = selectedMonth; // 如果当前选中是十二月份,下一月是去年的12月 + + if (selectedMonth === LAST_MONTH) { + year = selectedYear + 1; + month = FIRST_MONTH; + } else { + month = selectedMonth + 1; + } + + if (this.props.onMonthChange) { + this.props.onMonthChange(month, selectedMonth); + } + + this.setData({ + selectedYear: year, + selectedMonth: month + }); + this.refreshdates(month, year); + } + }, + refreshdates: function refreshdates(month, year) { + this.tapTimes = 1; + var _this$data5 = this.data, + selectedYear = _this$data5.selectedYear, + selectedMonth = _this$data5.selectedMonth, + currentDate = _this$data5.currentDate; + var firstDay = getDay(month, year, 1); + var days = getMonthLength(month, year); + var datesArray = []; + var currentDateTimeStamp = +currentDate; + var num = 0; + + for (var i = 0; i < firstDay; i++) { + num += 1; // 如果当前选中的是一月份,前一个月是去年的12月 + + var _year = selectedYear; + var _month = selectedMonth; + + if (selectedMonth === 0) { + _year = selectedYear - 1; + _month = LAST_MONTH; + } else { + _year = selectedYear; + _month = selectedMonth - 1; + } + + var date = getMonthLength(_month, _year) - i; + datesArray.unshift({ + year: _year, + month: _month, + date: date, + isToday: false, + isGray: true, + isSelected: false, + tag: '' + }); + } + + for (var _i = 0; _i < days; _i++) { + num += 1; + + var _date = _i + 1; + + var dateTimeStamp = +new Date(selectedYear, selectedMonth, _date); + datesArray.push({ + year: selectedYear, + month: selectedMonth, + date: _date, + isToday: dateTimeStamp === currentDateTimeStamp, + isGray: false, + isSelected: dateTimeStamp === currentDateTimeStamp, + tag: '' + }); + } + + var nextDate = 0; + var daysPerPage = 35; + + if (num > 35) { + daysPerPage = 42; + } + + for (var _i2 = 0; _i2 < daysPerPage - days - firstDay; _i2++) { + // 如果是12月,下月是第二年的1月份 + nextDate += 1; + var _year2 = selectedYear; + var _month2 = selectedMonth; + + if (selectedMonth === LAST_MONTH) { + _year2 = selectedYear + 1; + _month2 = FIRST_MONTH; + } else { + _year2 = selectedYear; + _month2 = selectedMonth + 1; + } + + datesArray.push({ + year: _year2, + month: _month2, + date: nextDate, + isToday: false, + isGray: true, + isSelected: false, + tag: '' + }); + } + + var blockType = 1; + + for (var _i3 = 0; _i3 < datesArray.length; _i3++) { + if (this.hasTag(datesArray[_i3])) { + blockType = 2; + } + } + + var dates = []; + var weekDates = []; + + for (var _i4 = 0; _i4 < datesArray.length; _i4++) { + weekDates.push(datesArray[_i4]); + + if ((_i4 + 1) % DAYS_PER_ROW === 0) { + dates.push([].concat(weekDates)); + weekDates = []; + } + } + + this.setData({ + dates: dates, + blockType: blockType + }); + }, + hasTag: function hasTag(dateObj) { + var tagData = this.props.tagData; // 去重由调用者处理 + + if (tagData.length === 0) { + dateObj.tag = ''; + return false; + } + + return tagData.some(function (item) { + var dateArr = item.date.split('-'); + var dateStr = []; // 兼容ios下new Date('2018-1-1')格式返回invalid Date的问题 + + for (var i = 0; i < dateArr.length; i++) { + dateStr.push(dateArr[i].length > 1 ? dateArr[i] : "0" + dateArr[i]); + } + + var date = new Date(dateStr.join('-')); + + if (dateObj.year === date.getFullYear() && dateObj.month === date.getMonth() && dateObj.date === date.getDate()) { + dateObj.tag = item.tag; + dateObj.color = COLOR_MAP[item.tagColor]; + dateObj.disable = item.disable; + return true; + } else { + dateObj.tag = ''; + return false; + } + }); + }, + getDateGap: function getDateGap(day1, day2) { + var date1 = +new Date(day1.year, prefixNum(day1.month), prefixNum(day1.date)); + var date2 = +new Date(day2.year, prefixNum(day2.month), prefixNum(day2.date)); + return (date1 - date2) / (24 * 3600 * 1000); + }, + makeDate: function makeDate(dateObj) { + return new Date(dateObj.year + "-" + prefixNum(dateObj.month + 1) + "-" + prefixNum(dateObj.date)); + }, + onDateTap: function onDateTap(event) { + var dates = this.data.dates; + var _event$currentTarget$ = event.currentTarget.dataset, + year = _event$currentTarget$.year, + month = _event$currentTarget$.month, + date = _event$currentTarget$.date; + var type = this.props.type; + + if (type === 'range') { + if (this.tapTimes % 2 === 0) { + this.tapTimes += 1; + this.endDate = { + year: year, + month: month, + date: date + }; + var dateGap = this.getDateGap(this.startDate, this.endDate); + + if (dateGap > 0) { + var _ref = [this.endDate, this.startDate]; + this.startDate = _ref[0]; + this.endDate = _ref[1]; + } + + var hasDisable = false; + + for (var i = 0; i < dates.length; i++) { + for (var j = 0; j < dates[i].length; j++) { + var dateObj = dates[i][j]; + dateObj.isStart = false; + dateObj.isMiddle = false; + dateObj.isEnd = false; + var startDateGap = this.getDateGap(dateObj, this.startDate); + var endDateGap = this.getDateGap(dateObj, this.endDate); + + if (dateObj.year === year && dateObj.month === month && dateObj.date === date && dateObj.disable) { + hasDisable = true; + } + + if (startDateGap > 0 && endDateGap < 0) { + if (dateObj.disable) { + hasDisable = true; + } + + if (dateGap !== 0) { + if (j === 0) { + dateObj.isStart = true; + } else if (j === 6) { + dateObj.isEnd = true; + } else { + dateObj.isMiddle = true; + } + } else { + dateObj.isSelected = true; + } + } + + if (this.startDate.year === dateObj.year && this.startDate.month === dateObj.month && this.startDate.date === dateObj.date && dateGap !== 0) { + if (j === 6) { + dateObj.isSelected = true; + } else { + dateObj.isStart = true; + } + } + + if (this.endDate.year === dateObj.year && this.endDate.month === dateObj.month && this.endDate.date === dateObj.date && dateGap !== 0) { + if (j === 0) { + dateObj.isSelected = true; + } else { + dateObj.isEnd = true; + } + } + } + } + + if (hasDisable) { + this.props.onSelectHasDisableDate([this.makeDate(this.startDate), this.makeDate(this.endDate)]); + return; + } + + if (this.props.onSelect) { + this.props.onSelect([this.makeDate(this.startDate), this.makeDate(this.endDate)]); + } + } else { + var isDisable = false; + + for (var _i5 = 0; _i5 < dates.length; _i5++) { + for (var _j = 0; _j < dates[_i5].length; _j++) { + var _dateObj = dates[_i5][_j]; + + if (_dateObj.year === year && _dateObj.month === month && _dateObj.date === date) { + if (_dateObj.disable) { + // console.log(1111); + isDisable = true; + _dateObj.isSelected = false; + } else { + _dateObj.isSelected = true; + } + + _dateObj.isStart = false; + _dateObj.isMiddle = false; + _dateObj.isEnd = false; + } else { + _dateObj.isSelected = false; + _dateObj.isStart = false; + _dateObj.isMiddle = false; + _dateObj.isEnd = false; + } + } + } + + if (!isDisable) { + this.tapTimes += 1; + } + + this.startDate = { + year: year, + month: month, + date: date + }; + } + + this.setData({ + dates: dates + }); + } else { + var _isDisable = false; + + for (var _i6 = 0; _i6 < dates.length; _i6++) { + for (var _j2 = 0; _j2 < dates[_i6].length; _j2++) { + var _dateObj2 = dates[_i6][_j2]; + + if (_dateObj2.year === year && _dateObj2.month === month && _dateObj2.date === date) { + _dateObj2.isSelected = true; + + if (_dateObj2.disable) { + _isDisable = true; + } + } else { + _dateObj2.isSelected = false; + } + } + } + + if (_isDisable) { + return; + } + + this.setData({ + dates: dates + }); + + if (this.props.onSelect) { + this.props.onSelect([this.makeDate({ + year: year, + month: month, + date: date + }), undefined]); + } + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/calendar/index.json b/node_modules/mini-ali-ui/es/calendar/index.json new file mode 100755 index 0000000..c923371 --- /dev/null +++ b/node_modules/mini-ali-ui/es/calendar/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "am-icon": "../am-icon/index" + } +} diff --git a/node_modules/mini-ali-ui/es/card/index.acss b/node_modules/mini-ali-ui/es/card/index.acss new file mode 100755 index 0000000..246ebd7 --- /dev/null +++ b/node_modules/mini-ali-ui/es/card/index.acss @@ -0,0 +1 @@ +.am-card{position:relative;display:flex;border-radius:8px;border-radius:var(--am-card-border-radius,8px);margin:6px 10px;align-items:center;flex-direction:column;background-color:transparent;background-size:100%;min-height:85px}.am-card-container{width:100%;display:flex;flex-direction:column;position:relative}.am-card-container-expanded{position:absolute;top:0;left:0;height:100%}.am-card-outter-container{padding-top:0}.am-card-outter-container-expanded{position:relative;width:100%;z-index:0;height:0;padding-top:60%}.am-card-body{display:flex;align-items:center;width:100%;padding:19px 12px;padding:19px var(--am-card-padding,12px);border-radius:8px;border-radius:var(--am-card-border-radius,8px);min-height:85px;box-sizing:border-box;background-color:#929292;background-repeat:no-repeat;z-index:2;position:relative;background-size:100%}.am-card-bg-mask{position:absolute;top:0;left:0;border-radius:8px;border-radius:var(--am-card-border-radius,8px);width:100%;height:100%;background:#656464;background:linear-gradient(to bottom,rgba(0,0,0,.4) 0,rgba(252,252,252,0) 60px,rgba(244,244,244,0) 100%)}.am-card-body-expand{align-items:flex-start;background-color:transparent;height:100%}.am-card-content-wrapper{display:flex;width:100%;align-items:center}.am-card-content{flex:1;min-width:100px;z-index:1}.am-card-title{font-size:18px;font-size:var(--am-card-title-size,18px);line-height:25px;color:#fff;color:var(--am-card-title-color,#fff)}.am-card-subtitle{margin-top:2px}.am-card-subtitle-text{font-size:13px;line-height:1.5;color:#fff;color:var(--am-card-subtitle-colo,#fff);background:#0003;border-radius:3px;padding:1px 6px}.am-card-thumb{margin-right:12px;margin-right:var(--am-card-padding,12px);width:48px;height:48px;border-radius:50vh;border-radius:var(--am-card-thumb-border-radius,50vh);border-width:2px;border-width:var(--am-card-thumb-border-width,2px);border-color:#fff;border-color:var(--am-card-thumb-border-color,#fff);border-style:solid}.am-card-arrow{width:13px;height:13px}.am-card-footer{display:flex;width:100%;align-items:center;justify-content:space-around;font-size:14px;line-height:20px;color:#333;color:var(--am-card-action-color,#333);background:#fff;background:var(--am-card-footer-color,#fff);box-sizing:border-box;padding:12px;padding:var(--am-card-padding,12px);border-radius:0 0 8px 8px;border-radius:0 0 var(--am-card-border-radius,8px) var(--am-card-border-radius,8px);border-top:8px solid #fff;border-top:var(--am-card-border-radius,8px) solid var(--am-card-footer-color,#fff);margin-top:-8px;margin-top:calc(var(--am-card-border-radius,8px) * -1);z-index:1} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/card/index.axml b/node_modules/mini-ali-ui/es/card/index.axml new file mode 100755 index 0000000..e69481c --- /dev/null +++ b/node_modules/mini-ali-ui/es/card/index.axml @@ -0,0 +1,30 @@ + + + + + + + + + + {{title}} + + {{subTitle}} + + + + + + {{action}} + {{extraAction}} + + + + diff --git a/node_modules/mini-ali-ui/es/card/index.js b/node_modules/mini-ali-ui/es/card/index.js new file mode 100755 index 0000000..4b387df --- /dev/null +++ b/node_modules/mini-ali-ui/es/card/index.js @@ -0,0 +1,39 @@ +Component({ + props: { + title: '', + onCardClick: function onCardClick() {}, + info: '' + }, + methods: { + onCardClick: function onCardClick() { + var _this$props = this.props, + info = _this$props.info, + onCardClick = _this$props.onCardClick; + onCardClick({ + info: info + }); + }, + onActionClick: function onActionClick() { + var _this$props2 = this.props, + info = _this$props2.info, + onActionClick = _this$props2.onActionClick; + + if (onActionClick) { + onActionClick({ + info: info + }); + } + }, + onExtraActionClick: function onExtraActionClick() { + var _this$props3 = this.props, + info = _this$props3.info, + onExtraActionClick = _this$props3.onExtraActionClick; + + if (onExtraActionClick) { + onExtraActionClick({ + info: info + }); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/card/index.json b/node_modules/mini-ali-ui/es/card/index.json new file mode 100755 index 0000000..42b6471 --- /dev/null +++ b/node_modules/mini-ali-ui/es/card/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "icon": "../am-icon/index" + } +} diff --git a/node_modules/mini-ali-ui/es/collapse/collapse-item/index.acss b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.acss new file mode 100755 index 0000000..35d5874 --- /dev/null +++ b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.acss @@ -0,0 +1 @@ +.am-collapse-item{background-color:#fff;background-color:var(--am-collapse-bgc,#fff)}.am-collapse-item-title-container{position:relative;display:flex;text-align:justify;align-items:center;justify-content:space-between;width:100%;color:#333;color:var(--am-collapse-title-fontSize,#333);font-size:17px;font-size:var(--am-collapse-title-fontSize,17px);transition:all .3s ease-in-out}.am-collapse-item-title{position:relative;padding:12px 0;padding:var(--am-collapse-title-paddingTB,12px) 0;margin:0 12px;margin:0 var(--am-collapse-title-marginLR,12px)}.am-collapse-item-title::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-collapse-item-title-arrow{font-size:18px;font-size:var(--am-collapse-arrow-size,18px);color:#ccc;color:var(--am-collapse-arrow-color,#ccc)}.am-collapse-item--disabled .am-collapse-item-title{opacity:.4;opacity:var(--am-collapse-disabled,.4)}.am-collapse-item-title-text-wrapper{padding-right:12px;padding-right:var(--am-collapse-title-arrow-spacing,12px)}.am-collapse-item-content-wrapper{overflow-y:hidden;box-sizing:border-box;will-change:max-height;transition:max-height .3s ease-in-out} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/collapse/collapse-item/index.axml b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.axml new file mode 100755 index 0000000..6f7388a --- /dev/null +++ b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.axml @@ -0,0 +1,33 @@ + + + + + + {{header}} + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/collapse/collapse-item/index.js b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.js new file mode 100755 index 0000000..21a4ab1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.js @@ -0,0 +1,130 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +var noop = function noop() {}; + +function collectArr(arr, ele) { + var resArr = arr; + + if (arr instanceof Array) { + resArr.push(ele); + } else { + resArr = [ele]; + } + + return resArr; +} + +var prefixKey = function prefixKey(prefix) { + return function (key) { + return prefix + "-" + key; + }; +}; + +var collapsePrefix = prefixKey('am-collapse'); +Component({ + data: { + isActive: false, + contentHeight: 0, + contentId: '', + id: '', + activeKey: [] + }, + props: { + itemKey: '', + // 默认随机数 + header: '', + isOpen: false, + showArrow: true, + activeClass: '', + className: '', + titleClass: '', + contentClass: '', + defaultContentHeight: 0, + disabled: false, + collapseKey: '' + }, + didMount: function didMount() { + this.initItems(); + }, + methods: { + initItems: function initItems() { + var _this$props = this.props, + itemKey = _this$props.itemKey, + isOpen = _this$props.isOpen, + defaultContentHeight = _this$props.defaultContentHeight, + collapseKey = _this$props.collapseKey; + this.setData({ + isActive: isOpen, + contentHeight: defaultContentHeight, + contentId: this.$id, + id: itemKey || this.$id + }); + this.updateStyle({ + isActive: isOpen + }); + var bindedMethod = this.handleItemDataUpdate.bind(this); + this.$page[collapsePrefix("updates-" + collapseKey)] = collectArr(this.$page[collapsePrefix("updates-" + collapseKey)], bindedMethod); + this.$page[collapsePrefix("ids-" + collapseKey)] = collectArr(this.$page[collapsePrefix("ids-" + collapseKey)], this.data.id); + }, + handleItemDataUpdate: function handleItemDataUpdate(data) { + this.setData(_extends({}, data)); + var _this$data = this.data, + activeKey = _this$data.activeKey, + id = _this$data.id; + var isActive = activeKey.indexOf(id) !== -1; + this.setData({ + isActive: isActive + }); + this.updateStyle({ + isActive: isActive + }); + }, + onCollapseTap: function onCollapseTap(evt) { + var collapseKey = this.props.collapseKey; + + if (!this.props.disabled) { + var dataset = evt.currentTarget.dataset; + this.$page[collapsePrefix("handleItemTap-" + collapseKey)](dataset.key); + } + }, + updateStyle: function updateStyle(_ref) { + var _this = this; + + var isActive = _ref.isActive, + _ref$callback = _ref.callback, + callback = _ref$callback === void 0 ? noop : _ref$callback; + + if (!isActive) { + this.setData({ + isActive: isActive, + contentHeight: 0 + }); + callback(); + } else { + this.calcContentHeight(".am-collapse-item-content." + ("am-collapse-item-content-" + this.$id)).then(function (height) { + _this.setData({ + isActive: isActive, + contentHeight: height + }); + + callback(); + }); + } + }, + calcContentHeight: function calcContentHeight(selector) { + if (selector === void 0) { + selector = ''; + } + + return new Promise(function (resolve, reject) { + my.createSelectorQuery().select(selector).boundingClientRect().exec(function (res) { + if (res && res[0]) { + resolve(res[0].height); + } else { + reject(res); + } + }); + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/collapse/collapse-item/index.json b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.json new file mode 100755 index 0000000..fe1780c --- /dev/null +++ b/node_modules/mini-ali-ui/es/collapse/collapse-item/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "am-icon": "../../am-icon/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/collapse/index.axml b/node_modules/mini-ali-ui/es/collapse/index.axml new file mode 100755 index 0000000..2ace855 --- /dev/null +++ b/node_modules/mini-ali-ui/es/collapse/index.axml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/collapse/index.js b/node_modules/mini-ali-ui/es/collapse/index.js new file mode 100755 index 0000000..27aa9df --- /dev/null +++ b/node_modules/mini-ali-ui/es/collapse/index.js @@ -0,0 +1,92 @@ +var noop = function noop() {}; + +var prefixKey = function prefixKey(prefix) { + return function (key) { + return prefix + "-" + key; + }; +}; + +var collapsePrefix = prefixKey('am-collapse'); +Component({ + data: { + id: '', + activeArr: [] + }, + props: { + activeKey: [], + accordion: false, + onChange: noop, + openAnimation: {}, + collapseKey: '', + className: '' + }, + didMount: function didMount() { + this.initData(); + }, + didUnmount: function didUnmount() { + // clear cache in page when didUnmount + delete this.$page[collapsePrefix("ids-" + this.props.collapseKey)]; + delete this.$page[collapsePrefix("updates-" + this.props.collapseKey)]; + }, + methods: { + initData: function initData() { + var _this$props = this.props, + accordion = _this$props.accordion, + activeKey = _this$props.activeKey, + collapseKey = _this$props.collapseKey; + var activeArr = []; + this.$page[collapsePrefix("handleItemTap-" + collapseKey)] = this.handleItemTap.bind(this); + + if (accordion) { + if (typeof activeKey === 'string') { + activeArr = [activeKey]; + } else { + activeArr = [this.$page[collapsePrefix("ids-" + collapseKey)] && this.$page[collapsePrefix("ids-" + collapseKey)][0]]; + } + } else if (typeof activeKey === 'string') { + activeArr = [activeKey]; + } else if (activeKey instanceof Array) { + activeArr = activeKey; + } + + this.updateItems(activeArr); + }, + handleItemTap: function handleItemTap(key) { + var activeArr = this.data.activeArr; + + if (this.props.accordion) { + if (activeArr.indexOf(key) === -1) { + this.updateItems([key]); + } else { + this.updateItems([]); + } + } else { + var index = activeArr.indexOf(key); + + if (index !== -1) { + activeArr.splice(index, 1); + } else { + activeArr.push(key); + } + + this.updateItems(activeArr); + } + }, + updateItems: function updateItems(activeArr) { + var _this = this; + + var collapseKey = this.props.collapseKey; + this.setData({ + activeArr: activeArr + }); + this.props.onChange(activeArr); + this.$page[collapsePrefix("updates-" + collapseKey)].forEach(function (update) { + if (typeof update === 'function') { + update({ + activeKey: _this.data.activeArr + }); + } + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/collapse/index.json b/node_modules/mini-ali-ui/es/collapse/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/node_modules/mini-ali-ui/es/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/node_modules/mini-ali-ui/es/container/index.acss b/node_modules/mini-ali-ui/es/container/index.acss new file mode 100755 index 0000000..349cd82 --- /dev/null +++ b/node_modules/mini-ali-ui/es/container/index.acss @@ -0,0 +1 @@ +.am-container{box-sizing:border-box;width:100%;border-radius:8px;border-radius:var(--am-container-corner-radius,8px);padding:12px 0;padding:var(--am-container-padding-v,12px) 0;background:#fff;background:var(--am-container-background,#fff)}.am-container-content-box{padding:0 12px;padding:0 var(--am-container-padding-h,12px)}.am-container-content{display:flex;flex-wrap:wrap}.am-container-content>:nth-child(1n+1){flex-grow:1;width:0;margin-left:8px;margin-left:var(--am-container-padding-item,8px);border-radius:4px;border-radius:var(--am-container-item-corner-radius,4px)}.am-container-content>:nth-child(1){margin-left:0}.am-container .am-container-content .am-container{flex:0 0 100%;margin-top:12px;margin-top:var(--am-container-padding-h,12px);margin-left:0;padding:0}.am-container-content-grid{display:flex}.am-container-content-grid>:nth-child(1){width:216px;border-radius:4px;border-radius:var(--am-container-item-corner-radius,4px)}.am-container-content-grid-sub{display:flex;box-sizing:border-box;flex-direction:column;padding-left:8px;padding-left:var(--am-container-padding-item,8px);flex-grow:1}.am-container-content-grid-sub>:nth-child(1n+1){flex-grow:1;margin-top:8px;margin-top:var(--am-container-padding-item,8px);border-radius:4px;border-radius:var(--am-container-item-corner-radius,4px)}.am-container-content-grid-sub>:nth-child(1){margin-top:0} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/container/index.axml b/node_modules/mini-ali-ui/es/container/index.axml new file mode 100755 index 0000000..e52bbf5 --- /dev/null +++ b/node_modules/mini-ali-ui/es/container/index.axml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/node_modules/mini-ali-ui/es/container/index.js b/node_modules/mini-ali-ui/es/container/index.js new file mode 100755 index 0000000..224e1a3 --- /dev/null +++ b/node_modules/mini-ali-ui/es/container/index.js @@ -0,0 +1,12 @@ +Component({ + mixins: [], + data: {}, + props: { + className: '', + type: 'line' + }, + didMount: function didMount() {}, + didUpdate: function didUpdate() {}, + didUnmount: function didUnmount() {}, + methods: {} +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/container/index.json b/node_modules/mini-ali-ui/es/container/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/container/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/coupon/index.acss b/node_modules/mini-ali-ui/es/coupon/index.acss new file mode 100755 index 0000000..5366c92 --- /dev/null +++ b/node_modules/mini-ali-ui/es/coupon/index.acss @@ -0,0 +1 @@ +.am-coupon{position:relative;margin:8px 12px;background:0 0}.am-coupon-container{width:100%;height:100%;display:flex;align-items:stretch;border-radius:8px;border-radius:var(--am-coupon-border-radius,8px)}.am-coupon-thumb{position:relative;z-index:2;display:flex;justify-content:space-around;width:80px;padding:20px 0 20px 20px;background:#fff;background:var(--am-coupon-background-color,#fff);border-top-left-radius:8px;border-top-left-radius:var(--am-coupon-border-radius,8px);border-bottom-left-radius:8px;border-bottom-left-radius:var(--am-coupon-border-radius,8px);box-sizing:border-box}.am-coupon-thumb-image{width:36px;height:36px;border-radius:50vh;border-radius:var(--am-coupon-thumb-border-radius,50vh)}.am-coupon-divider{width:12.5px;background:0 0;display:flex;flex-direction:column}.am-coupon-divider-upper-hole{height:12.5px;margin-top:-8px;background:0 0;border-radius:50vh;box-shadow:0 17px 0 10px #fff;box-shadow:0 17px 0 10px var(--am-coupon-background-color,#fff)}.am-coupon-divider-middle-blank{flex-grow:1;display:flex;justify-content:space-around;z-index:1;background:#fff;background:var(--am-coupon-background-color,#fff)}.am-coupon-divider-dashed-line{width:0}.am-coupon-divider-lower-hole{background:0 0;height:12.5px;margin-bottom:-8px;border-radius:50vh;box-shadow:0 -17px 0 10px #fff;box-shadow:0 -17px 0 10px var(--am-coupon-background-color,#fff)}.am-coupon-content{flex:1;display:flex;flex-wrap:wrap;padding:20px 12px;padding:var(--am-coupon-content-spacingTB,20px) var(--am-coupon-content-spacingLR,12px);background:#fff;border-top-right-radius:8px;border-bottom-right-radius:8px}.am-coupon-content-text{position:relative;z-index:2;flex-grow:1;justify-content:space-around;align-self:center}.am-coupon-content-text-title{font-weight:700;font-size:18px;font-size:var(--am-coupon-title-size,18px);color:#333;color:var(--am-coupon-title-color,#333)}.am-coupon-content-text-subtitle{margin-top:8px;margin-top:var(--am-coupon-subTitle-marginTop,8px);font-size:13px;font-size:var(--am-coupon-subtitle-size,13px);color:#999;color:var(--am-coupon-subtitle-color,#999)}.am-coupon-content-action{position:relative;z-index:2;display:flex;align-items:center}.am-coupon-content-action .am-checkbox{margin-right:8px}.am-coupon-content-action-slot{display:flex}.am-coupon-content-detail{display:flex;flex:1 1 100%;flex-wrap:wrap;justify-content:space-around;padding-top:20px;padding-top:var(--am-coupon-content-spacingTB,20px);margin-bottom:-12px;font-size:11px;font-size:var(--am-coupon-detail-size,11px);color:#999;color:var(--am-coupon-detail-color,#999)}.am-coupon-content-detail-date{flex:1;white-space:nowrap;align-self:center;margin-top:-2px}.am-coupon-content-detail-option{flex:1;text-align:right;align-self:center}.am-coupon-content-detail-option__arrow{margin-left:2px;margin-top:4px;vertical-align:-2px;font-size:15px;font-size:var(--am-coupon-detail-arrow-size,15px);color:#ccc;color:var(--am-coupon-detail-arrow-color,#ccc)}.am-coupon-content-detail-more{width:100%;padding:4px 0}.am-coupon-content-no-extra{padding-left:20px;padding-left:var(--am-coupon-no-extra-spacingL,20px);border-radius:8px}.am-coupon-content-no-extra-text{margin-left:0}.am-coupon-content-no-extra .am-coupon-content-detail-more{padding-right:80px;padding-right:var(--am-coupon-no-extra-detail-padding,80px)}.am-coupon-used-tag{position:absolute;top:0;right:0;width:68px;height:68px;background:url('https://gw.alipayobjects.com/mdn/rms_ce4c6f/afts/img/A*y-ZxR79ovioAAAAAAAAAAABkARQnAQ') no-repeat 0 0;background-size:cover;z-index:1}.am-coupon-used .am-coupon-thumb-image{opacity:.4}.am-coupon-used .am-coupon-content-text-title{color:#999} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/coupon/index.axml b/node_modules/mini-ali-ui/es/coupon/index.axml new file mode 100755 index 0000000..25e1801 --- /dev/null +++ b/node_modules/mini-ali-ui/es/coupon/index.axml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + {{title}} + + + {{subtitle}} + + + + + + + + + + + + + {{moreBtn}} + + + + + diff --git a/node_modules/mini-ali-ui/es/coupon/index.js b/node_modules/mini-ali-ui/es/coupon/index.js new file mode 100755 index 0000000..565ac16 --- /dev/null +++ b/node_modules/mini-ali-ui/es/coupon/index.js @@ -0,0 +1,25 @@ +Component({ + props: { + title: '', + used: false, + onCouponClick: function onCouponClick() {}, + // 票券的扩展类型 + extra: true, + moreBtn: '规则详情', + moreHide: true + }, + methods: { + onCouponClick: function onCouponClick(e) { + var onCouponClick = this.props.onCouponClick; + onCouponClick(e); + }, + catchActionTap: function catchActionTap() {}, + changeMoreState: function changeMoreState() { + var moreHide = this.props.moreHide; + this.props.moreHide = !moreHide; + this.setData({ + moreHide: !moreHide + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/coupon/index.json b/node_modules/mini-ali-ui/es/coupon/index.json new file mode 100755 index 0000000..42b6471 --- /dev/null +++ b/node_modules/mini-ali-ui/es/coupon/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "icon": "../am-icon/index" + } +} diff --git a/node_modules/mini-ali-ui/es/filter/filter-item/index.acss b/node_modules/mini-ali-ui/es/filter/filter-item/index.acss new file mode 100755 index 0000000..4d28d7e --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/filter-item/index.acss @@ -0,0 +1 @@ +.am-filter-item-wrap{padding-right:12px;padding-right:var(--am-filter-padding,12px);padding-top:12px;padding-top:var(--am-filter-padding,12px);min-width:33.3%;max-width:50%;overflow:hidden;float:left;display:list-item;box-sizing:border-box}.am-filter-item{padding:8px;padding:var(--am-filter-internal-padding,8px);background:#f5f5f5;background:var(--am-filter-background,#f5f5f5);border-radius:4px;border-radius:var(--am-filter-corner-radius,4px);text-align:center;box-sizing:border-box}.am-filter-item-title{font-size:15px;font-size:var(--am-filter-title-size,15px);color:#333;color:var(--am-filter-title-color,#333)}.am-filter-item-subtitle{font-size:13px;font-size:var(--am-filter-subtitle-size,13px);color:#999;color:var(--am-filter-subtitle-color,#999)}.am-filter-click{color:#1677ff;color:var(--am-filter-title-pick-color,#1677ff);background:#e7f1ff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAfCAYAAAH8T49dAAAAAXNSR0IArs4c6QAAA7JJREFUWAnNV1tIlEEU/lYrzRClaHdd14jMlEwKBEGolwKhnqIICiKE6ikKhMRdk1ikwCx86KECoYKgsIuVUBT4FBQEUm9dpB4iKrSLouWau+7pnP2d/S/+e/fSPOxczne++ebM+WdngFSKs4XIhJMBKdFBl4/61MAspHJzqIbUjBrlqig2aHTLmUHQUIe0tBJDqgFr7fZRY4RwLS7QOIU4m4BrA+SeCOKbYpWpXT6tFwVavRVw7muZyaTNOoWSYgtyn6K6SBgvlVM0mKojNW/WWwWoLdMsJpDQ88ZWiUkA1w9poNh0av4aD3DnCBCaBmrOzoCqA7TsexB/ta79b4zJ3pzaaGmAvKEgPmdF5vTRUxAa1JRpk3He5HPeBBWBsU6ZjFV0sopmo7O1nZSMdyXMTrlWR9nCx8eA4XF9l5ZYQdLnxDjA+35T2eQTGJkAqtq1PFAk6rNQOJMyVwv95ENhpTIaa8mX/hNmJUa7tB2lrbSFE+q11bCofQ6N37TMTNUw0QDHuDZrMo7zJMc5T4RkTMbJW8zJO2JcjekoMBoStd1+2mUlEnzaZByfG5EIHtlNltYy+Wv4wiSccfYlJbJAgHIuBcHHW+KSdJneNqqIR/QhAPQe1SdISMbxaZoKYVCH6y0hKswHfA/1sbjLZKIXnIj1OlRvKaJtXcDgsD5uq4wTcUIRbS4F5NSoLtGc4hGJ1aSs8hwVjvzCmD6X1np/GiguAMYntaVZFSl8TJmrlXbYEQmwsh0Y5fNMYhSPSHBRZRyfbl4W/7tlVxwcn0/8oa7JjkbzNsVsLgiz4fB20fLQEK7y4vb/F8KcfqpHBL28KLda2KIJ23ebcp+9wnnOoSYlxlgvuDCPn6rCEfSxiAqjEGt7wYTxfb05AnTwxSf2+VrFGPvzKqwsQJ6pIO5zMtcZJ02lPS/C+P/roMMBOYP4uMqszJmwdS1U9Bu4xTJ2pirFUwRs3wA8eQP8+GP2ylqYx0cNYUIP0xabqeP35B7cc1g7/gX1/COwp9uMz0jY+ouUN/YVVziRG810iXtWQXJB38uCjH+5iiEtYSU+qp0mPGBnryJQtZ+fOuWrgQv9wLshNarV6QhSnkmFyR3q8iTOcCL7lZO1LlgKDPiAVSs0i7w6JBL5/E4xblmiCFk54wora6PyqTD6WNBGq1O8vrxc7vJdQO4ixpKOIOU3SxjfEI7zg7+L88f2XaYcE9WbWGDnboBPeJzkf0C7HErkL7aoMFeAnBTEPe5vTeawUPZ/WGpTpu45f4MAAAAASUVORK5CYII=) right bottom no-repeat;background:var(--am-filter-pick-background,#e7f1ff) url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAfCAYAAAH8T49dAAAAAXNSR0IArs4c6QAAA7JJREFUWAnNV1tIlEEU/lYrzRClaHdd14jMlEwKBEGolwKhnqIICiKE6ikKhMRdk1ikwCx86KECoYKgsIuVUBT4FBQEUm9dpB4iKrSLouWau+7pnP2d/S/+e/fSPOxczne++ebM+WdngFSKs4XIhJMBKdFBl4/61MAspHJzqIbUjBrlqig2aHTLmUHQUIe0tBJDqgFr7fZRY4RwLS7QOIU4m4BrA+SeCOKbYpWpXT6tFwVavRVw7muZyaTNOoWSYgtyn6K6SBgvlVM0mKojNW/WWwWoLdMsJpDQ88ZWiUkA1w9poNh0av4aD3DnCBCaBmrOzoCqA7TsexB/ta79b4zJ3pzaaGmAvKEgPmdF5vTRUxAa1JRpk3He5HPeBBWBsU6ZjFV0sopmo7O1nZSMdyXMTrlWR9nCx8eA4XF9l5ZYQdLnxDjA+35T2eQTGJkAqtq1PFAk6rNQOJMyVwv95ENhpTIaa8mX/hNmJUa7tB2lrbSFE+q11bCofQ6N37TMTNUw0QDHuDZrMo7zJMc5T4RkTMbJW8zJO2JcjekoMBoStd1+2mUlEnzaZByfG5EIHtlNltYy+Wv4wiSccfYlJbJAgHIuBcHHW+KSdJneNqqIR/QhAPQe1SdISMbxaZoKYVCH6y0hKswHfA/1sbjLZKIXnIj1OlRvKaJtXcDgsD5uq4wTcUIRbS4F5NSoLtGc4hGJ1aSs8hwVjvzCmD6X1np/GiguAMYntaVZFSl8TJmrlXbYEQmwsh0Y5fNMYhSPSHBRZRyfbl4W/7tlVxwcn0/8oa7JjkbzNsVsLgiz4fB20fLQEK7y4vb/F8KcfqpHBL28KLda2KIJ23ebcp+9wnnOoSYlxlgvuDCPn6rCEfSxiAqjEGt7wYTxfb05AnTwxSf2+VrFGPvzKqwsQJ6pIO5zMtcZJ02lPS/C+P/roMMBOYP4uMqszJmwdS1U9Bu4xTJ2pirFUwRs3wA8eQP8+GP2ylqYx0cNYUIP0xabqeP35B7cc1g7/gX1/COwp9uMz0jY+ouUN/YVVziRG810iXtWQXJB38uCjH+5iiEtYSU+qp0mPGBnryJQtZ+fOuWrgQv9wLshNarV6QhSnkmFyR3q8iTOcCL7lZO1LlgKDPiAVSs0i7w6JBL5/E4xblmiCFk54wora6PyqTD6WNBGq1O8vrxc7vJdQO4ixpKOIOU3SxjfEI7zg7+L88f2XaYcE9WbWGDnboBPeJzkf0C7HErkL7aoMFeAnBTEPe5vTeawUPZ/WGpTpu45f4MAAAAASUVORK5CYII=) right bottom no-repeat;background-size:19px 15px} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/filter/filter-item/index.axml b/node_modules/mini-ali-ui/es/filter/filter-item/index.axml new file mode 100755 index 0000000..6082223 --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/filter-item/index.axml @@ -0,0 +1,6 @@ + + + {{value}} + {{subtitle}} + + diff --git a/node_modules/mini-ali-ui/es/filter/filter-item/index.js b/node_modules/mini-ali-ui/es/filter/filter-item/index.js new file mode 100755 index 0000000..6bbacbe --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/filter-item/index.js @@ -0,0 +1,110 @@ +import lifecycle from '../mixins/lifecycle'; +Component({ + mixins: [lifecycle], + data: { + confirmStyle: '' + }, + props: { + className: '', + item: '', + id: '', + value: '', + selected: false, + subtitle: '', + onChange: function onChange() {} + }, + didMount: function didMount() { + var _this$data = this.data, + results = _this$data.results, + items = _this$data.items; + var _this$props = this.props, + selected = _this$props.selected, + id = _this$props.id, + value = _this$props.value; + + if (selected) { + results.push({ + id: id, + value: value + }); + items.push({ + id: id, + value: value, + setData: this.setData + }); + this.setData({ + confirmStyle: true + }); + } + }, + methods: { + handleClick: function handleClick() { + var _this$props2 = this.props, + id = _this$props2.id, + value = _this$props2.value, + onChange = _this$props2.onChange; + var confirmStyle = this.data.confirmStyle; + var _this$data2 = this.data, + results = _this$data2.results, + items = _this$data2.items, + commonProps = _this$data2.commonProps; + + if (commonProps.max === 1) { + if (confirmStyle === '') { + items.forEach(function (element) { + element.setData({ + confirmStyle: '' + }); + }); + results.splice(0, results.length); + confirmStyle = true; + results.push({ + id: id, + value: value + }); + items.push({ + id: id, + value: value, + setData: this.setData + }); + onChange(results); + } + + this.setData({ + confirmStyle: confirmStyle + }); + return; + } + + if (confirmStyle === '' && results.length < commonProps.max) { + confirmStyle = true; + results.push({ + id: id, + value: value + }); + items.push({ + id: id, + value: value, + setData: this.setData + }); + } else { + confirmStyle = ''; + results.some(function (key, index) { + if (JSON.stringify(key) === JSON.stringify({ + id: id, + value: value + })) { + results.splice(index, 1); + return true; + } else { + return false; + } + }); + } + + this.setData({ + confirmStyle: confirmStyle + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/filter/filter-item/index.json b/node_modules/mini-ali-ui/es/filter/filter-item/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/filter-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/filter/index.acss b/node_modules/mini-ali-ui/es/filter/index.acss new file mode 100755 index 0000000..59b5d7b --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/index.acss @@ -0,0 +1 @@ +.am-filter-show{height:100vh;display:block;position:relative}.am-filter-hide{display:none}.am-filter-document,.am-filter-mask{position:absolute;top:0;left:0;right:0}.am-filter-mask{bottom:0;background:rgba(0,0,0,.65)}.am-filter-content{background:#fff;display:flex;flex-direction:column;overflow-x:hidden;overflow-y:scroll}.am-filter-list{flex:1;padding-left:12px;padding-left:var(--am-filter-padding,12px);padding-bottom:12px;padding-bottom:var(--am-filter-padding,12px);overflow-x:hidden;overflow-y:scroll;max-height:415px;box-sizing:border-box}.am-filter-btn{width:100%;display:flex}.am-filter-default,.am-filter-primary{flex:1;height:48px;font-size:18px;box-sizing:border-box;width:50%;border:0;border-radius:0}.am-filter-default{border-top:1px solid #eee;border-right:none}.am-filter-child-2>.am-filter-item-wrap{width:50%}.am-filter-child-3>.am-filter-item-wrap{width:33.3%} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/filter/index.axml b/node_modules/mini-ali-ui/es/filter/index.axml new file mode 100755 index 0000000..69f34b6 --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/index.axml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/node_modules/mini-ali-ui/es/filter/index.js b/node_modules/mini-ali-ui/es/filter/index.js new file mode 100755 index 0000000..fb31f92 --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/index.js @@ -0,0 +1,41 @@ +import lifecycle from './mixins/lifecycle'; +Component({ + mixins: [lifecycle], + data: { + maxHeight: 0 + }, + props: { + className: '', + onChange: function onChange() {}, + max: 10000, + equalRows: 0 + }, + didMount: function didMount() { + var commonProps = this.data.commonProps; + var max = this.props.max; + commonProps.max = max; + }, + methods: { + resetFn: function resetFn() { + var _this$data = this.data, + items = _this$data.items, + results = _this$data.results; + items.forEach(function (element) { + element.setData({ + confirmStyle: '' + }); + }); + results.splice(0, results.length); + }, + confirmFn: function confirmFn() { + var onChange = this.props.onChange; + var results = this.data.results; + onChange(results); + }, + maskTap: function maskTap() { + if (this.props.onMaskTap) { + this.props.onMaskTap(); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/filter/index.json b/node_modules/mini-ali-ui/es/filter/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/node_modules/mini-ali-ui/es/filter/mixins/lifecycle.js b/node_modules/mini-ali-ui/es/filter/mixins/lifecycle.js new file mode 100755 index 0000000..cc8f5ac --- /dev/null +++ b/node_modules/mini-ali-ui/es/filter/mixins/lifecycle.js @@ -0,0 +1,16 @@ +export default { + data: { + results: [], + items: [], + commonProps: { + max: 10000 + } + }, + didUnmount: function didUnmount() { + var _this$data = this.data, + items = _this$data.items, + results = _this$data.results; + results.splice(0, results.length); + items.splice(0, items.length); + } +}; \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/flex-item/index.acss b/node_modules/mini-ali-ui/es/flex/flex-item/index.acss new file mode 100755 index 0000000..86b6578 --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/flex-item/index.acss @@ -0,0 +1 @@ +.am-flexbox-item{box-sizing:border-box;flex:1;min-width:10px;margin-left:8px}.am-flexbox-item:first-child{margin-left:0} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/flex-item/index.axml b/node_modules/mini-ali-ui/es/flex/flex-item/index.axml new file mode 100755 index 0000000..d294fb5 --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/flex-item/index.axml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/flex-item/index.js b/node_modules/mini-ali-ui/es/flex/flex-item/index.js new file mode 100755 index 0000000..df2bc90 --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/flex-item/index.js @@ -0,0 +1 @@ +Component({}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/flex-item/index.json b/node_modules/mini-ali-ui/es/flex/flex-item/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/flex-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/index.acss b/node_modules/mini-ali-ui/es/flex/index.acss new file mode 100755 index 0000000..b23de5a --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/index.acss @@ -0,0 +1 @@ +.am-flexbox{display:flex}.am-flexbox-dir-row{flex-direction:row}.am-flexbox-dir-row-reverse{flex-direction:row-reverse}.am-flexbox-dir-column{flex-direction:column}.am-flexbox-dir-column-reverse{flex-direction:column-reverse}.am-flexbox-nowrap{flex-wrap:nowrap}.am-flexbox-wrap{flex-wrap:wrap}.am-flexbox-wrap-reverse{flex-wrap:wrap-reverse}.am-flexbox-justify-start{justify-content:flex-start}.am-flexbox-justify-center{justify-content:center}.am-flexbox-justify-end{justify-content:flex-end}.am-flexbox-justify-between{justify-content:space-between}.am-flexbox-justify-around{justify-content:space-around}.am-flexbox-align-start{align-items:flex-start}.am-flexbox-align-end{align-items:flex-end}.am-flexbox-align-center{align-items:center}.am-flexbox-align-stretch{align-items:stretch}.am-flexbox-align-baseline{align-items:baseline}.am-flexbox-align-content-start{align-content:flex-start}.am-flexbox-align-content-end{align-content:flex-end}.am-flexbox-align-content-center{align-content:center}.am-flexbox-align-content-between{align-content:space-between}.am-flexbox-align-content-around{align-content:space-around}.am-flexbox-align-content-stretch{align-content:stretch} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/index.axml b/node_modules/mini-ali-ui/es/flex/index.axml new file mode 100755 index 0000000..94d1d06 --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/index.axml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/index.js b/node_modules/mini-ali-ui/es/flex/index.js new file mode 100755 index 0000000..f66f96c --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/index.js @@ -0,0 +1,10 @@ +Component({ + props: { + className: '', + direction: 'row', + wrap: 'nowrap', + justify: 'start', + align: 'center', + alignContent: 'stretch' + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/index.json b/node_modules/mini-ali-ui/es/flex/index.json new file mode 100755 index 0000000..32640e0 --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/flex/index.sjs b/node_modules/mini-ali-ui/es/flex/index.sjs new file mode 100755 index 0000000..d062b11 --- /dev/null +++ b/node_modules/mini-ali-ui/es/flex/index.sjs @@ -0,0 +1,64 @@ +export default function classnames(dir, wrap, justify, align, alignContent) { + const prefixCls = 'am-flexbox'; + const classes = []; + + const dirMaps = { + row: `${prefixCls}-dir-row`, + 'row-reverse': `${prefixCls}-dir-row-reverse`, + column: `${prefixCls}-dir-column`, + 'column-reverse': `${prefixCls}-dir-column-reverse`, + }; + + const wrapMaps = { + nowrap: `${prefixCls}-nowrap`, + wrap: `${prefixCls}-wrap`, + 'wrap-reverse': `${prefixCls}-wrap-reverse`, + }; + + const justifyMaps = { + start: `${prefixCls}-justify-start`, + end: `${prefixCls}-justify-end`, + center: `${prefixCls}-justify-center`, + between: `${prefixCls}-justify-between`, + around: `${prefixCls}-justify-around`, + }; + + const alignMaps = { + start: `${prefixCls}-align-start`, + center: `${prefixCls}-align-center`, + end: `${prefixCls}-align-end`, + baseline: `${prefixCls}-align-baseline`, + stretch: `${prefixCls}-align-stretch`, + }; + + const alignContentMaps = { + start: `${prefixCls}-align-content-start`, + end: `${prefixCls}-align-content-end`, + center: `${prefixCls}-align-content-center`, + between: `${prefixCls}-align-content-between`, + around: `${prefixCls}-align-content-around`, + stretch: `${prefixCls}-align-content-stretch`, + }; + + if (dirMaps[dir]) { + classes.push(dirMaps[dir]); + } + + if (wrapMaps[wrap]) { + classes.push(wrapMaps[wrap]); + } + + if (justifyMaps[justify]) { + classes.push(justifyMaps[justify]); + } + + if (alignMaps[align]) { + classes.push(alignMaps[align]); + } + + if (alignContentMaps[alignContent]) { + classes.push(alignContentMaps[alignContent]); + } + + return classes.join(' '); +} diff --git a/node_modules/mini-ali-ui/es/footer/index.acss b/node_modules/mini-ali-ui/es/footer/index.acss new file mode 100755 index 0000000..ab81da1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/footer/index.acss @@ -0,0 +1 @@ +.am-footer{display:flex;flex-direction:column;align-items:center}.am-footer-content{display:flex;flex-direction:column;align-items:center;flex-wrap:wrap;font-size:13px;font-size:var(--am-footer-content-fontSize,13px);color:#ccc;color:var(--am-footer-content-color,#ccc)}.am-footer-end{width:100%;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding:0 12px;padding:0 var(--am-footer-divider-paddingLR,12px);font-size:13px;font-size:var(--am-footer-content-fontSize,13px);color:#ccc;color:var(--am-footer-content-color,#ccc);box-sizing:border-box}.am-footer-end__divider{position:relative;flex:1 1 auto;height:2px;box-sizing:border-box}.am-footer-end__divider::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-footer-end__text{white-space:nowrap;padding:20px 12px;padding:var(--am-footer-divider-content-paddingTB,20px) var(--am-footer-divider-content-paddingLR,12px)}.am-footer-extend{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-wrap:wrap}.am-footer-link{margin-bottom:8px;margin-bottom:var(--am-footer-link-marginBottom,8px);font-size:15px;font-size:var(--am-footer-link-fontSize,15px);color:#1677ff;color:var(--am-footer-link-color,#1677ff)}.am-footer-link__line{width:1px;height:12px;height:var(--am-footer-link-lineSize,12px);overflow:hidden;margin:0 12px 8px;margin:0 var(--am-footer-link-lineMarginLR,12px) var(--am-footer-link-lineMarginB,8px);font-size:0;background-color:#eee;background-color:var(--am-footer-link-lineColor,#eee)}.am-footer-link__hover{opacity:.6}.am-footer-guide{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;padding:4px 12px;padding:var(--am-footer-guide-paddingTB,4px) var(--am-footer-guide-paddingLR,12px);margin-right:12px;margin-right:var(--am-footer-guide-marginRight,12px);margin-top:12px;margin-top:var(--am-footer-guide-marginTop,12px);font-size:12px;font-size:var(--am-footer-guide-fontSize,12px);border-radius:50vh;border-radius:var(--am-footer-guide-borderRadius,50vh);background-color:#f5f5f5;background-color:var(--am-footer-guide-bgc,#f5f5f5)}.am-footer-guide:last-child{margin-right:0}.am-footer-guide__text{color:#999;color:var(--am-footer-guide-color,#999)}.am-footer-guide__hover{filter:brightness(.9)}.am-footer-guide__hover .am-footer-guide__text{opacity:.3}.am-footer-brand{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;justify-content:center}.am-footer-brand-logo{margin-right:12px;margin-right:var(--am-footer-brand-marginRight,12px);margin-bottom:8px;margin-bottom:var(--am-footer-brand-marginBottom,8px)}.am-footer-brand-logo:last-child{margin-right:0}.am-footer-brand-logo:active{filter:brightness(.9)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/footer/index.axml b/node_modules/mini-ali-ui/es/footer/index.axml new file mode 100755 index 0000000..1dd24ce --- /dev/null +++ b/node_modules/mini-ali-ui/es/footer/index.axml @@ -0,0 +1,47 @@ + + + + + + + + + {{item.text}} + | + + + + + + + + + + {{content?content:'我是有底线的'}} + + + + + {{content}} + + + + {{item.text}} + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/footer/index.js b/node_modules/mini-ali-ui/es/footer/index.js new file mode 100755 index 0000000..dba99ab --- /dev/null +++ b/node_modules/mini-ali-ui/es/footer/index.js @@ -0,0 +1,41 @@ +import fmtUnit from '../_util/fmtUnit'; +Component({ + props: { + className: '', + // normal: 基础样式; + // guide:文案加引导; + // copyright:声明; + // brand:带品牌; + // link:带链接 + // end: 没有更多 + type: 'normal', + content: '', + extend: [], + onBrandTap: function onBrandTap() {}, + showEndIcon: false, + iconName: 'selected' + }, + data: { + defaultSize: fmtUnit(18), + maxSize: fmtUnit(22), + valueUnit: fmtUnit('px') + }, + methods: { + onBrandClick: function onBrandClick(e) { + var brandLink = e.currentTarget.dataset.url; + var _this$props = this.props, + onBrandTap = _this$props.onBrandTap, + extend = _this$props.extend; + + if (onBrandTap !== '' && brandLink) { + my.navigateTo({ + url: brandLink + }); + } + + if (onBrandTap !== '' && !brandLink && typeof onBrandTap === 'function') { + onBrandTap(extend[e.currentTarget.dataset.index]); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/footer/index.json b/node_modules/mini-ali-ui/es/footer/index.json new file mode 100755 index 0000000..717cce8 --- /dev/null +++ b/node_modules/mini-ali-ui/es/footer/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "am-icon": "../am-icon/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/grid/index.acss b/node_modules/mini-ali-ui/es/grid/index.acss new file mode 100755 index 0000000..9af00ec --- /dev/null +++ b/node_modules/mini-ali-ui/es/grid/index.acss @@ -0,0 +1 @@ +.am-grid{display:flex;flex-direction:row;flex-wrap:wrap;padding:12px 12px 0;padding:var(--am-grid-paddingTop,12px) var(--am-grid-paddingLeft,12px) 0;background-color:#fff;background-color:var(--am-grid-bgc,#fff);box-sizing:border-box}.am-grid-3{padding:0}.am-grid-4{padding:12px 6px 0;padding:var(--am-grid-paddingTop,12px) calc(var(--am-grid-paddingLeft,12px)/ 2) 0}.am-grid-5{flex-wrap:nowrap;padding-right:4px;padding-right:var(--am-grid-5-paddingRight,4px)}.am-grid-5__overHide{overflow:hidden;padding-right:0}.am-grid-5__overHide :nth-child(5){padding-right:4px;padding-right:var(--am-grid-5-paddingRight,4px)}.am-grid-scroll{background-color:#fff;background-color:var(--am-grid-bgc,#fff)}.am-grid-item{display:flex;overflow:hidden;margin-bottom:12px;margin-bottom:var(--am-grid-item-marginBottom,12px);box-sizing:border-box}.am-grid-item-wrapper{flex:1;display:flex;align-items:center;flex-direction:column;box-sizing:border-box}.am-grid-item-wrapper-2{flex-direction:row}.am-grid-item-wrapper-5{margin-right:8px;margin-right:var(--am-grid-item5-marginRight,8px)}.am-grid-item__hover{opacity:.6}.am-grid-item-2{flex:0 0 50%}.am-grid-item-2:nth-child(odd){padding-right:12px;padding-right:var(--am-grid-item2-marginRight,12px)}.am-grid-item-2:nth-child(even){padding-left:12px;padding-left:var(--am-grid-item2-marginRight,12px)}.am-grid-item-3{position:relative;flex:0 0 33.33%;margin-bottom:0;padding:12px;padding:var(--am-grid-item3-padding,12px);text-align:center}.am-grid-item-3::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-grid-item-3::before{content:'';position:absolute;background-color:#eee;display:block;top:0;right:auto;bottom:0;left:0;width:1px;transform:scaleX(.5)}.am-grid-item-3:nth-child(3n-2)::before,.am-grid-item-3_noBorder::after{display:none}.am-grid-item-4{flex:0 0 25%;padding:0 6px;padding:0 calc(var(--am-grid-item4-marginRight,12px)/ 2)}.am-grid-item-5{flex:0 0 18.5%}.am-grid-5__overHide .am-grid-item-5{flex:0 0 20%}.am-grid-no-line .am-grid-item-3::after,.am-grid-no-line .am-grid-item-3::before{display:none}.am-grid-icon{background-position:center;background-size:cover;background-repeat:no-repeat}.am-grid-icon-2{width:28px;width:var(--am-grid-icon2-size,28px);height:28px;height:var(--am-grid-icon2-size,28px);margin-right:12px;margin-right:var(--am-grid-icon2-marginRight,12px)}.am-grid-icon-3{width:36px;width:var(--am-grid-icon3-size,36px);height:36px;height:var(--am-grid-icon3-size,36px);margin-bottom:12px;margin-bottom:var(--am-grid-icon3-marginBottom,12px)}.am-grid-icon-4{width:44px;width:var(--am-grid-icon4-size,44px);height:44px;height:var(--am-grid-icon4-size,44px);margin-bottom:8px;margin-bottom:var(--am-grid-icon4-marginBottom,8px)}.am-grid-icon-circular{border-radius:50vh;border-radius:var(--am-grid-icon4-radius,50vh)}.am-grid-icon-5{width:28px;width:var(--am-grid-icon5-size,28px);height:28px;height:var(--am-grid-icon5-size,28px);line-height:28px;line-height:var(--am-grid-icon5-size,28px);margin-bottom:8px;margin-bottom:var(--am-grid-icon5-marginBottom,8px)}.am-grid-text{width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all;color:#333;color:var(--am-grid-text-color,#333)}.am-grid-text-wrapper{flex:1;display:flex;flex-direction:column;max-width:100%}.am-grid-text-2{height:24px;height:var(--am-grid-text2-height,24px);line-height:24px;line-height:var(--am-grid-text2-height,24px);font-size:17px;font-size:var(--am-grid-text2-fontSize,17px)}.am-grid-text-3{height:20px;height:var(--am-grid-text3-height,20px);line-height:20px;line-height:var(--am-grid-text3-height,20px);font-size:15px;font-size:var(--am-grid-text3-fontSize,15px)}.am-grid-text-4,.am-grid-text-5{height:20px;height:var(--am-grid-text45-height,20px);line-height:20px;line-height:var(--am-grid-text45-height,20px);font-size:13px;font-size:var(--am-grid-text45-fontSize,13px)}.am-grid-desc{height:17px;height:var(--am-grid-desc-height,17px);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all;line-height:17px;line-height:var(--am-grid-desc-height,17px);font-size:12px;font-size:var(--am-grid-desc-fontSize,12px);color:#999;color:var(--am-grid-desc-color,#999)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/grid/index.axml b/node_modules/mini-ali-ui/es/grid/index.axml new file mode 100755 index 0000000..d0ecd62 --- /dev/null +++ b/node_modules/mini-ali-ui/es/grid/index.axml @@ -0,0 +1,89 @@ + + + + + + + + + + {{item.text}} + + + + + + + + + + + + + + + + + + + + + + + {{item.text}} + {{item.desc}} + + + + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/grid/index.js b/node_modules/mini-ali-ui/es/grid/index.js new file mode 100755 index 0000000..0a1762a --- /dev/null +++ b/node_modules/mini-ali-ui/es/grid/index.js @@ -0,0 +1,59 @@ +import fmtUnit from '../_util/fmtUnit'; +Component({ + data: { + getColumnBorderIndex: 0 + }, + props: { + columnNum: 3, + circular: false, + list: [], + onGridItemClick: function onGridItemClick() {}, + hasLine: true, + infinite: false, + infiniteHeight: fmtUnit('90px'), + gridName: '' + }, + didMount: function didMount() { + this.clearBorder(); + this.createGridName(); + }, + didUpdate: function didUpdate() { + this.clearBorder(); + this.createGridName(); + }, + methods: { + onGridItemClick: function onGridItemClick(e) { + this.props.onGridItemClick({ + detail: { + index: e.target.dataset.index + } + }); + }, + clearBorder: function clearBorder() { + var _this$props = this.props, + list = _this$props.list, + columnNum = _this$props.columnNum; + + if (columnNum === 3) { + var rows = list.length % columnNum; + this.setData({ + getColumnBorderIndex: rows === 0 ? 3 : rows + }); + } + }, + createGridName: function createGridName() { + var _this$props2 = this.props, + infinite = _this$props2.infinite, + gridName = _this$props2.gridName; + + if (infinite) { + if (gridName === '' && !gridName) { + this.props.gridName = "grid" + Math.floor(Math.random() * 100000); + this.setData({ + gridName: this.props.gridName + }); + } + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/grid/index.json b/node_modules/mini-ali-ui/es/grid/index.json new file mode 100755 index 0000000..67758f1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/grid/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "pagination": "../pagination/index", + "am-icon": "../am-icon/index" + } +} diff --git a/node_modules/mini-ali-ui/es/guide/index.acss b/node_modules/mini-ali-ui/es/guide/index.acss new file mode 100755 index 0000000..f2e51e5 --- /dev/null +++ b/node_modules/mini-ali-ui/es/guide/index.acss @@ -0,0 +1 @@ +.am-button-ghost{--am-button-ghost-border-color:#fff;--am-button-ghost-color:#fff}.am-guide{position:fixed;top:0;left:0;right:0;bottom:0}.am-guide-content{position:relative;z-index:2;width:100vw;height:100vh;overflow:hidden;padding-bottom:104px;box-sizing:border-box}.am-guide-content-pager{padding-bottom:130px}.am-guide-img{position:absolute;z-index:2}.am-guide-btn{position:absolute;bottom:60px;left:0;right:0;display:flex;justify-content:center;z-index:5}.am-guide-btn-item{margin-right:12px}.am-guide-btn-item:last-child{margin-right:0}.am-guide-pager{position:absolute;bottom:98px;left:0;right:0;z-index:5} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/guide/index.axml b/node_modules/mini-ali-ui/es/guide/index.axml new file mode 100755 index 0000000..d4fd5f1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/guide/index.axml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/guide/index.js b/node_modules/mini-ali-ui/es/guide/index.js new file mode 100755 index 0000000..5a70765 --- /dev/null +++ b/node_modules/mini-ali-ui/es/guide/index.js @@ -0,0 +1,69 @@ +import fmtEvent from '../_util/fmtEvent'; +Component({ + props: { + btn_next: '下一步', + btn_jump: '跳过', + btn_over: '知道了', + hasJump: false, + show: false, + guideList: [], + onGuideOver: function onGuideOver() {}, + maskClick: false + }, + data: { + guideNumber: 1, + guideCurrent: 1, + guideLast: 1, + showGuideList: [] + }, + didMount: function didMount() { + var guideList = this.props.guideList; + this.setData({ + guideNumber: guideList.length, + guideCurrent: guideList.length, + showGuideList: guideList[this.data.guideNumber - this.data.guideCurrent] + }); + }, + didUpdate: function didUpdate() { + var guideList = this.props.guideList; + + if (this.data.guideCurrent - 1 >= 0) { + this.setData({ + guideCurrent: this.data.guideCurrent, + showGuideList: guideList[this.data.guideNumber - this.data.guideCurrent] + }); + } + }, + methods: { + onBtnClick: function onBtnClick() { + if (this.data.guideCurrent > this.data.guideLast) { + this.setData({ + guideCurrent: this.data.guideCurrent - 1 + }); + } else { + this.props.show = false; + } + }, + onGuideClick: function onGuideClick(e) { + this.props.show = false; + var onGuideOver = this.props.onGuideOver; + + if (onGuideOver !== '' && typeof onGuideOver === 'function') { + var event = fmtEvent(this.props, e); + onGuideOver(event); + } + }, + onMaskTap: function onMaskTap(e) { + var maskClick = this.props.maskClick; + var event = fmtEvent(this.props, e); + + if (maskClick === true) { + if (this.data.guideCurrent > this.data.guideLast) { + this.onBtnClick(); + } else { + this.onGuideClick(event); + } + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/guide/index.json b/node_modules/mini-ali-ui/es/guide/index.json new file mode 100755 index 0000000..fae455c --- /dev/null +++ b/node_modules/mini-ali-ui/es/guide/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "pagination": "../pagination/index", + "mask": "../mask/index", + "button": "../button/index" + } +} diff --git a/node_modules/mini-ali-ui/es/input-item/index.acss b/node_modules/mini-ali-ui/es/input-item/index.acss new file mode 100755 index 0000000..7b9fb9b --- /dev/null +++ b/node_modules/mini-ali-ui/es/input-item/index.acss @@ -0,0 +1 @@ +.am-input-item{display:flex;align-items:center;background:#fff;background:var(--am-input-item-background,#fff);padding-left:12px;padding-left:var(--am-input-item-padding-left,12px)}.am-input-item-extra{margin-left:12px;margin-left:var(--am-input-item-padding-left,12px)}.am-input-line{position:relative;flex:1;display:flex;align-items:center;padding-right:12px;padding-right:var(--am-input-line-padding-right,12px);min-height:48px;min-height:var(--am-input-line-min-height,48px);overflow:hidden}.am-input-label{align-self:center;min-width:80px;min-width:var(--am-input-label-min-width,80px);margin-right:2px;font-size:17px;font-size:var(--am-input-label-font-size,17px);color:#333;color:var(--am-input-item-label-color,#333)}.am-input-layer{display:flex;flex:1}.am-input-layer-vertical{flex-direction:column;padding:12px 0;padding:var(--am-input-vlabel-paddingTB,12px) 0}.am-input-layer-vertical .am-input-label{align-self:flex-start;font-size:15px;font-size:var(--am-input-vlabel-font-size,15px);color:#999;color:var(--am-input-vlabel-color,#999)}.am-input-layer-vertical .a-input-placeholder{margin-left:-3px}.am-input-content{flex:1;display:flex;padding:0;font-size:17px;font-size:var(--am-input-font-size,17px);text-align:left;color:#333;color:var(--am-input-item-color,#333)}.am-input-content .a-input-wrap{flex:1}.am-input-clear{display:flex;height:22px;height:var(--am-input-icon-size,22px);width:22px;width:var(--am-input-icon-size,22px);justify-content:center;align-items:center}.am-input-clear-icon{line-height:1;line-height:var(--am-input-icon-line-height,1)}.am-input-clear.show{visibility:visible}.am-input-clear.hidden{visibility:hidden;pointer-events:none}.am-input-line-bottom::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-input-item.last .am-input-line-bottom::after{display:none}.am-input-placeholder-base{color:#ccc;color:var(--am-input-item-placeholder-color,#ccc)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/input-item/index.axml b/node_modules/mini-ali-ui/es/input-item/index.axml new file mode 100755 index 0000000..15aef4a --- /dev/null +++ b/node_modules/mini-ali-ui/es/input-item/index.axml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/node_modules/mini-ali-ui/es/input-item/index.js b/node_modules/mini-ali-ui/es/input-item/index.js new file mode 100755 index 0000000..6364590 --- /dev/null +++ b/node_modules/mini-ali-ui/es/input-item/index.js @@ -0,0 +1,68 @@ +import fmtEvent from '../_util/fmtEvent'; +Component({ + props: { + className: '', + labelCls: '', + inputCls: '', + last: false, + value: '', + name: '', + type: 'text', + password: false, + placeholder: '', + placeholderClass: '', + placeholderStyle: '', + disabled: false, + maxlength: 140, + focus: false, + clear: true, + // 默认有清除功能 + syncInput: false, + enableNative: false, + // 兼容安卓input的输入bug + onInput: function onInput() {}, + onConfirm: function onConfirm() {}, + onFocus: function onFocus() {}, + onBlur: function onBlur() {}, + onClear: function onClear() {}, + layer: '', + // 表单排列位置,当为空时默认横向排列, vertical 为竖向排列 + controlled: false + }, + data: { + _focus: false + }, + didMount: function didMount() { + this.setData({ + _focus: this.props.focus + }); + }, + methods: { + onBlur: function onBlur(e) { + this.setData({ + _focus: false + }); + var event = fmtEvent(this.props, e); + this.props.onBlur(event); + }, + onConfirm: function onConfirm(e) { + var event = fmtEvent(this.props, e); + this.props.onConfirm(event); + }, + onFocus: function onFocus(e) { + this.setData({ + _focus: true + }); + var event = fmtEvent(this.props, e); + this.props.onFocus(event); + }, + onInput: function onInput(e) { + var event = fmtEvent(this.props, e); + this.props.onInput(event); + }, + onClear: function onClear(e) { + var event = fmtEvent(this.props, e); + this.props.onClear(event); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/input-item/index.json b/node_modules/mini-ali-ui/es/input-item/index.json new file mode 100755 index 0000000..c923371 --- /dev/null +++ b/node_modules/mini-ali-ui/es/input-item/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "am-icon": "../am-icon/index" + } +} diff --git a/node_modules/mini-ali-ui/es/list/alphabet/index.acss b/node_modules/mini-ali-ui/es/list/alphabet/index.acss new file mode 100755 index 0000000..c8f1da6 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/alphabet/index.acss @@ -0,0 +1 @@ +.am-alphabet{position:absolute;right:0;top:0;height:100%;z-index:99;display:flex;align-items:center}.am-alphabet-letter{text-align:center;font-size:11px;font-size:var(--am-alphabet-letter-font-size,11px);color:#999;color:var(--am-alphabet-letter-color,#999);height:16px;height:var(--am-alphabet-letter-size,16px);width:16px;width:var(--am-alphabet-letter-size,16px);border-radius:50vh;border-radius:var(--am-alphabet-letter-border-radius,50vh);position:relative;display:flex;align-items:center;justify-content:center}.am-alphabet-letter-chosen{background:#1677ff;background:var(--am-alphabet-letter-chosen-background,#1677ff);color:#fff;color:var(--am-alphabet-letter-chosen-text-color,#fff)}.am-alphabet-bubble{color:#fff;color:var(--am-alphabet-bubble-color,#fff);position:absolute;right:48px;height:47px;width:47px;border-radius:50vh;background:#ccc;background:var(--am-alphabet-bubble-background,#ccc);top:-17px;font-size:27px;font-size:var(--am-alphabet-bubble-font-size,27px);display:flex;align-items:center;justify-content:center;font-family:PingFangSC-Medium}.am-alphabet-item{min-height:48px;min-height:var(--am-alphabet-min-height,48px)}.am-alphabet-line{position:relative;flex:1;display:flex;align-items:center;align-self:stretch;overflow:hidden}.am-alphabet-content{padding:20px 0;width:95px;flex-direction:column;display:flex;justify-content:center;align-items:flex-end;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/alphabet/index.axml b/node_modules/mini-ali-ui/es/list/alphabet/index.axml new file mode 100755 index 0000000..4ce5f46 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/alphabet/index.axml @@ -0,0 +1,29 @@ + + + + + + + + {{ item }} + + {{item}} + + + + + diff --git a/node_modules/mini-ali-ui/es/list/alphabet/index.js b/node_modules/mini-ali-ui/es/list/alphabet/index.js new file mode 100755 index 0000000..4e44df2 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/alphabet/index.js @@ -0,0 +1,53 @@ +Component({ + props: { + alphabet: [] + }, + data: { + current: -1 + }, + didMount: function didMount() { + this._updateDataSet(); + }, + didUpdate: function didUpdate() { + this._updateDataSet(); + }, + methods: { + _updateDataSet: function _updateDataSet() { + this.dataset = {}; + + for (var key in this.props) { + if (/data-/gi.test(key)) { + this.dataset[key.replace(/data-/gi, '')] = this.props[key]; + } + } + }, + onItemTap: function onItemTap(ev) { + var _this$props = this.props, + onClick = _this$props.onClick, + disabled = _this$props.disabled; + + if (onClick && !disabled) { + onClick({ + data: ev.target.dataset, + target: { + dataset: this.dataset + } + }); + } + }, + onTouchStart: function onTouchStart(ev) { + var disabled = this.props.disabled; + + if (!disabled) { + this.setData({ + current: ev.target.dataset.index + }); + } + }, + onTouchEnd: function onTouchEnd() { + this.setData({ + current: -1 + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/alphabet/index.json b/node_modules/mini-ali-ui/es/list/alphabet/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/alphabet/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/node_modules/mini-ali-ui/es/list/auto-size-img/index.acss b/node_modules/mini-ali-ui/es/list/auto-size-img/index.acss new file mode 100755 index 0000000..91634e5 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/auto-size-img/index.acss @@ -0,0 +1 @@ +.am-auto-sizer-container{position:relative;font-size:17px;font-size:var(--am-list-item-content-title-size,17px);margin-right:12px;margin-right:var(--am-list-item-padding,12px);color:transparent;overflow:visible;white-space:nowrap}.am-auto-sizer-container::before{float:left;content:'';padding-bottom:100%}.am-auto-sizer-content{position:absolute;top:0;left:0;background:grey;width:100%;height:100%;background-size:cover;background-repeat:no-repeat;background-position:center} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/auto-size-img/index.axml b/node_modules/mini-ali-ui/es/list/auto-size-img/index.axml new file mode 100755 index 0000000..f8fc94b --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/auto-size-img/index.axml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/auto-size-img/index.js b/node_modules/mini-ali-ui/es/list/auto-size-img/index.js new file mode 100755 index 0000000..fa0821a --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/auto-size-img/index.js @@ -0,0 +1,6 @@ +import fmtUnit from '../../_util/fmtUnit'; +Component({ + props: { + size: fmtUnit('40px') + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/auto-size-img/index.json b/node_modules/mini-ali-ui/es/list/auto-size-img/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/auto-size-img/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/node_modules/mini-ali-ui/es/list/index.acss b/node_modules/mini-ali-ui/es/list/index.acss new file mode 100755 index 0000000..347adc5 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/index.acss @@ -0,0 +1 @@ +.am-list-footer,.am-list-header{display:flex;align-items:center;color:#999;color:var(--am-list-footer-header-color,#999);padding-left:12px;padding-left:var(--am-list-padding,12px);padding-right:12px;padding-right:var(--am-list-padding,12px)}.am-list-header{font-size:15px;font-size:var(--am-list-header-font-size,15px);line-height:normal;padding-top:12px;padding-top:var(--am-list-header-padding-top,12px);padding-bottom:8px;padding-bottom:var(--am-list-header-padding-bottom,8px)}.am-list-body{position:relative}.am-list-body::before{content:'';position:absolute;background-color:#eee;display:block;top:0;right:0;bottom:auto;left:0;height:1px;transform:scaleY(.5)}.am-list-body::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-list-footer{font-size:13px;line-height:normal;padding-top:8px;padding-top:var(--am-list-footer-padding-top,8px);padding-bottom:12px;padding-bottom:var(--am-list-footer-padding-bottom,12px)}.am-list-load-more{display:flex;justify-content:center;align-items:center;background:#fff;background:var(--am-list-background,#fff);padding:12px;font-size:15px;line-height:1.4;color:#333;color:var(--am-list-load-more-color,#333)}.am-list-load-more-txt{padding:0 8px;color:#999}.am-list-load-over{display:block;padding:12px;font-size:10px;text-align:center;color:#ccc;text-shadow:1px 1px #f0f0f0} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/index.axml b/node_modules/mini-ali-ui/es/list/index.axml new file mode 100755 index 0000000..c4636b1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/index.axml @@ -0,0 +1,13 @@ + + + + + + + + {{loadContent[0]?loadContent[0]:''}} + {{loadContent[1]?loadContent[1]:''}} + + + + diff --git a/node_modules/mini-ali-ui/es/list/index.js b/node_modules/mini-ali-ui/es/list/index.js new file mode 100755 index 0000000..cdcbf47 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/index.js @@ -0,0 +1,29 @@ +import fmtUnit from '../_util/fmtUnit'; +Component({ + props: { + className: '', + loadMore: false, + loadContent: ['', ''], + loadingSize: fmtUnit('16px') + }, + data: { + loadContent: ['加载更多...', '-- 数据加载完了 --'] + }, + didMount: function didMount() { + var loadTxt = this.props.loadContent[0] ? this.props.loadContent[0] : this.data.loadContent[0]; + var overTxt = this.props.loadContent[1] ? this.props.loadContent[1] : this.data.loadContent[1]; + this.setData({ + loadContent: [loadTxt, overTxt] + }); + }, + didUpdate: function didUpdate() { + var loadTxt = this.props.loadContent[0] ? this.props.loadContent[0] : this.data.loadContent[0]; + var overTxt = this.props.loadContent[1] ? this.props.loadContent[1] : this.data.loadContent[1]; + + if (loadTxt !== this.data.loadContent[0] || overTxt !== this.data.loadContent[1]) { + this.setData({ + loadContent: [loadTxt, overTxt] + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/index.json b/node_modules/mini-ali-ui/es/list/index.json new file mode 100755 index 0000000..d7ac60f --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "loading": "../loading/index" + } +} diff --git a/node_modules/mini-ali-ui/es/list/list-item/index.acss b/node_modules/mini-ali-ui/es/list/list-item/index.acss new file mode 100755 index 0000000..d1276eb --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-item/index.acss @@ -0,0 +1 @@ +.am-list-item{display:flex;align-items:center;background:#fff;background:var(--am-list-item-background,#fff)}.am-list-item-hover{filter:brightness(.9)}.am-list-item-radius{margin:0 12px;margin:0 var(--am-list-item-outside-spacing,12px);border-radius:8px;border-radius:var(--am-list-item-border-radius,8px)}.am-list-prefix{display:flex;align-items:center;padding:12px;padding:var(--am-list-item-padding,12px);padding-right:0}.am-list-supporting{margin-right:12px;margin-right:var(--am-list-item-padding,12px);color:#999;color:var(--am-list-item-content-subtitle-color,#999);font-size:15px;font-size:var(--am-list-item-subtitle-size,15px);display:flex}.am-list-thumb{width:30px;height:30px;margin-right:12px;margin-right:var(--am-list-item-padding,12px)}.am-list-line{position:relative;padding:12px;padding:var(--am-list-item-padding,12px);padding-left:0;flex:1;display:flex;align-items:center;align-self:stretch;overflow:hidden;max-width:100%}.am-list-line::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-list-text-wrapper{margin-right:12px;margin-right:var(--am-list-item-padding,12px);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.am-list-content{flex:3;text-align:left;align-self:stretch;display:flex;flex-direction:column;justify-content:space-evenly;overflow:hidden;line-height:normal}.am-list-content-subtitle,.am-list-content-title{display:flex;align-items:center}.am-list-content-title{font-size:17px;font-size:var(--am-list-item-content-title-size,17px);color:#333;color:var(--am-list-item-content-color,#333);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:flex}.am-list-content-subtitle{font-size:15px;font-size:var(--am-list-item-subtitle-size,15px);color:#999;color:var(--am-list-item-content-subtitle-color,#999)}.am-list-content-subtitle-small{font-size:13px;font-size:var(--am-list-item-content-subtitle-size-small,13px)}.am-list-extra{color:#999;color:var(--am-list-item-extra-color,#999);display:flex;justify-content:flex-end;align-self:stretch;align-items:center;margin-left:12px;margin-left:var(--am-list-item-padding,12px);flex:2;overflow:hidden}.am-list-primary{color:#333;color:var(--am-list-item-content-color,#333);font-size:17px;font-size:var(--am-list-item-content-title-size,17px)}.am-list-wrap .am-list-content,.am-list-wrap .am-list-extra{white-space:normal;word-break:break-all}.am-list-arrow{display:flex;align-items:center;margin-left:12px;margin-left:var(--am-list-item-arrow-margin,12px);height:22px;height:var(--am-list-item-arrow-size,22px);width:22px;width:var(--am-list-item-arrow-size,22px)}.am-list-item.last .am-list-line-bottom::after{display:none} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/list-item/index.axml b/node_modules/mini-ali-ui/es/list/list-item/index.axml new file mode 100755 index 0000000..968aa7a --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-item/index.axml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + {{upperSubtitle}} + + + + + + + + + + {{lowerSubtitle}} + + + + + + + + + + + + + + + + + + + + diff --git a/node_modules/mini-ali-ui/es/list/list-item/index.js b/node_modules/mini-ali-ui/es/list/list-item/index.js new file mode 100755 index 0000000..c829418 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-item/index.js @@ -0,0 +1,42 @@ +Component({ + props: { + className: '', + align: false, + disabled: false, + multipleLine: false, + wrap: false, + enforceExtra: false, + titlePosition: 'top' + }, + didMount: function didMount() { + this._updateDataSet(); + }, + didUpdate: function didUpdate() { + this._updateDataSet(); + }, + methods: { + _updateDataSet: function _updateDataSet() { + this.dataset = {}; + + for (var key in this.props) { + if (/data-/gi.test(key)) { + this.dataset[key.replace(/data-/gi, '')] = this.props[key]; + } + } + }, + onItemTap: function onItemTap(ev) { + var _this$props = this.props, + onClick = _this$props.onClick, + disabled = _this$props.disabled; + + if (onClick && !disabled) { + onClick({ + index: ev.target.dataset.index, + target: { + dataset: this.dataset + } + }); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/list-item/index.json b/node_modules/mini-ali-ui/es/list/list-item/index.json new file mode 100755 index 0000000..5cbc6ec --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-item/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "auto-sizer": "../auto-size-img/index", + "am-icon": "../../am-icon/index" + } +} diff --git a/node_modules/mini-ali-ui/es/list/list-secondary/index.acss b/node_modules/mini-ali-ui/es/list/list-secondary/index.acss new file mode 100755 index 0000000..5ee9723 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-secondary/index.acss @@ -0,0 +1 @@ +.am-list-secondary{display:flex;align-items:center;justify-content:flex-end;position:relative;height:100%;max-width:100%}.am-list-secondary-text{display:flex;flex-direction:column;justify-content:space-evenly;align-items:flex-end;height:100%;max-width:100%;overflow:hidden}.am-list-secondary-title{font-size:17px;font-size:var(--am-list-secondary-title-size,17px);color:#333;color:var(--am-list-secondary-title-color,#333);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:100%}.am-list-secondary-subtitle{font-size:15px;font-size:var(--am-list-secondary-subtitle-size,15px);color:#999;color:var(--am-list-secondary-subtitle-color,#999);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:100%} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/list-secondary/index.axml b/node_modules/mini-ali-ui/es/list/list-secondary/index.axml new file mode 100755 index 0000000..a26bdd5 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-secondary/index.axml @@ -0,0 +1,10 @@ + + + + {{title}} + {{subtitle}} + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/list-secondary/index.js b/node_modules/mini-ali-ui/es/list/list-secondary/index.js new file mode 100755 index 0000000..f0f1635 --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-secondary/index.js @@ -0,0 +1,19 @@ +Component({ + props: { + title: '', + subtitle: '', + thumb: '' + }, + didMount: function didMount() { + var _this$props = this.props, + _this$props$title = _this$props.title, + title = _this$props$title === void 0 ? '' : _this$props$title, + _this$props$subtitle = _this$props.subtitle, + subtitle = _this$props$subtitle === void 0 ? '' : _this$props$subtitle; + var thumbPlaceholder = title.slice(0, 1) + subtitle.slice(0, 1); + this.setData({ + // thumbPlaceholder: thumbPlaceholder.slice(1), + thumbPlaceholder: thumbPlaceholder + }); + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/list/list-secondary/index.json b/node_modules/mini-ali-ui/es/list/list-secondary/index.json new file mode 100755 index 0000000..78e70ee --- /dev/null +++ b/node_modules/mini-ali-ui/es/list/list-secondary/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "auto-sizer": "../auto-size-img/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/loading/index.acss b/node_modules/mini-ali-ui/es/loading/index.acss new file mode 100755 index 0000000..f1709aa --- /dev/null +++ b/node_modules/mini-ali-ui/es/loading/index.acss @@ -0,0 +1 @@ +.am-loading{width:100px;height:100px;background-position:center;background-repeat:no-repeat;background-size:100% 100%} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/loading/index.axml b/node_modules/mini-ali-ui/es/loading/index.axml new file mode 100755 index 0000000..ccb791c --- /dev/null +++ b/node_modules/mini-ali-ui/es/loading/index.axml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/loading/index.js b/node_modules/mini-ali-ui/es/loading/index.js new file mode 100755 index 0000000..cb911e1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/loading/index.js @@ -0,0 +1,8 @@ +import fmtUnit from '../_util/fmtUnit'; +Component({ + props: { + size: fmtUnit('100px'), + className: '', + color: '#1677ff' + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/loading/index.json b/node_modules/mini-ali-ui/es/loading/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/node_modules/mini-ali-ui/es/loading/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/node_modules/mini-ali-ui/es/long-password/index.acss b/node_modules/mini-ali-ui/es/long-password/index.acss new file mode 100755 index 0000000..0b919af --- /dev/null +++ b/node_modules/mini-ali-ui/es/long-password/index.acss @@ -0,0 +1 @@ +.am-long-password-item{display:flex;align-items:center;background:#fff;background:var(--am-long-password-item-background,#fff);padding-left:12px;padding-left:var(--am-long-password-item-padding-left,12px)}.am-long-password-item .a-input-content{padding-left:2px}.am-long-password-line{position:relative;flex:1;display:flex;align-items:center;padding-right:12px;padding-right:var(--am-long-password-line-padding-right,12px);min-height:48px;min-height:var(--am-long-password-line-min-height,48px);overflow:hidden;font-size:17px;font-size:var(--am-long-password-font-size,17px)}.am-long-password-content{flex:1;display:flex;color:#333;color:var(--am-long-password-content-color,#333);text-align:left;padding:0}.am-long-password-content .a-input-wrap{flex:1}.am-long-password-clear{display:flex;height:22px;height:var(--am-long-password-icon-size,22px);width:22px;width:var(--am-long-password-icon-size,22px);justify-content:center;align-items:center;margin-left:12px;margin-left:var(--am-long-password-eye-spacing,12px)}.am-long-password-clear-icon{line-height:1;line-height:var(--am-long-password-icon-line-height,1)}.am-long-password-clear.show{visibility:visible}.am-long-password-clear.hidden{visibility:hidden;pointer-events:none}.am-long-password-line-bottom::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-long-password-item.last .am-input-line-bottom::after{display:none}.am-long-password-placeholder-base{color:#ccc;color:var(--am-long-password-placeholder-color,#ccc)}.am-long-password-eye{margin-left:12px;margin-left:var(--am-long-password-eye-spacing,12px);height:22px;height:var(--am-long-password-icon-size,22px);width:22px;width:var(--am-long-password-icon-size,22px);display:flex;align-items:center}.am-long-password-eye-icon{line-height:1;line-height:var(--am-long-password-icon-line-height,1)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/long-password/index.axml b/node_modules/mini-ali-ui/es/long-password/index.axml new file mode 100755 index 0000000..bc50f4e --- /dev/null +++ b/node_modules/mini-ali-ui/es/long-password/index.axml @@ -0,0 +1,37 @@ + + + + + + + + + + + + diff --git a/node_modules/mini-ali-ui/es/long-password/index.js b/node_modules/mini-ali-ui/es/long-password/index.js new file mode 100755 index 0000000..b3fa99b --- /dev/null +++ b/node_modules/mini-ali-ui/es/long-password/index.js @@ -0,0 +1,70 @@ +import fmtEvent from '../_util/fmtEvent'; +Component({ + props: { + className: '', + inputCls: '', + last: false, + value: '', + name: '', + type: 'text', + // password: false, + // placeholder: '', + placeholderClass: '', + placeholderStyle: '', + disabled: false, + maxlength: 140, + focus: false, + clear: true, + // 默认有清除功能 + syncInput: false, + enableNative: false, + // 兼容安卓input的输入bug + onInput: function onInput() {}, + onConfirm: function onConfirm() {}, + onFocus: function onFocus() {}, + onBlur: function onBlur() {}, + onClear: function onClear() {} + }, + data: { + _focus: false, + visible: false + }, + didMount: function didMount() { + this.setData({ + _focus: this.props.focus + }); + }, + methods: { + onBlur: function onBlur(e) { + this.setData({ + _focus: false + }); + var event = fmtEvent(this.props, e); + this.props.onBlur(event); + }, + onConfirm: function onConfirm(e) { + var event = fmtEvent(this.props, e); + this.props.onConfirm(event); + }, + onFocus: function onFocus(e) { + this.setData({ + _focus: true + }); + var event = fmtEvent(this.props, e); + this.props.onFocus(event); + }, + onInput: function onInput(e) { + var event = fmtEvent(this.props, e); + this.props.onInput(event); + }, + onClear: function onClear(e) { + var event = fmtEvent(this.props, e); + this.props.onClear(event); + }, + onSwitchVisible: function onSwitchVisible() { + this.setData({ + visible: !this.data.visible + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/long-password/index.json b/node_modules/mini-ali-ui/es/long-password/index.json new file mode 100755 index 0000000..717cce8 --- /dev/null +++ b/node_modules/mini-ali-ui/es/long-password/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "am-icon": "../am-icon/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/mask/index.acss b/node_modules/mini-ali-ui/es/mask/index.acss new file mode 100755 index 0000000..d537b4f --- /dev/null +++ b/node_modules/mini-ali-ui/es/mask/index.acss @@ -0,0 +1 @@ +.am-mask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:0;background-color:rgba(0,0,0,.55);background-color:var(--am-mask-backgroundColor,rgba(0,0,0,.55))}.am-mask__m{background-color:rgba(0,0,0,.75);background-color:var(--am-mask-market-backgroundColor,rgba(0,0,0,.75))}.am-mask__fix{width:300vw;height:300vh;transform:translate3d(-100vw,-100vh,0)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/mask/index.axml b/node_modules/mini-ali-ui/es/mask/index.axml new file mode 100755 index 0000000..c2a5349 --- /dev/null +++ b/node_modules/mini-ali-ui/es/mask/index.axml @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/mask/index.js b/node_modules/mini-ali-ui/es/mask/index.js new file mode 100755 index 0000000..8f89c4b --- /dev/null +++ b/node_modules/mini-ali-ui/es/mask/index.js @@ -0,0 +1,21 @@ +import fmtEvent from '../_util/fmtEvent'; +Component({ + props: { + maskZindex: '', + // product: 产品弹窗蒙层;market:营销弹窗蒙层; + type: 'product', + onMaskTap: function onMaskTap() {}, + show: true, + fixMaskFull: false + }, + methods: { + onMaskClick: function onMaskClick(e) { + var onMaskTap = this.props.onMaskTap; + + if (onMaskTap !== '' && typeof onMaskTap === 'function') { + var event = fmtEvent(this.props, e); + onMaskTap(event); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/mask/index.json b/node_modules/mini-ali-ui/es/mask/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/node_modules/mini-ali-ui/es/mask/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/node_modules/mini-ali-ui/es/message/index.acss b/node_modules/mini-ali-ui/es/message/index.acss new file mode 100755 index 0000000..901bde9 --- /dev/null +++ b/node_modules/mini-ali-ui/es/message/index.acss @@ -0,0 +1 @@ +.am-message{background-color:#fff;background-color:var(--am-message-background,#fff);padding:32px 12px;padding:var(--am-message-padding-h,32px) var(--am-message-padding-v,12px);text-align:center;line-height:normal;box-sizing:border-box;position:relative}.am-message::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-message .am-icon{display:block;line-height:1;line-height:var(--am-message-icon-lineheight,1);font-size:64px;font-size:var(--am-message-icon-size,64px)}.am-message .icon-success{color:#1677ff;color:var(--am-message-success-color,#1677ff)}.am-message .icon-info{color:#1677ff;color:var(--am-message-info-color,#1677ff)}.am-message .icon-waiting{color:#00b578;color:var(--am-message-waiting-color,#00b578)}.am-message .icon-warn{color:#ff8f1f;color:var(--am-message-warn-color,#ff8f1f)}.am-message .icon-fail{color:#ff3b30;color:var(--am-message-fail-color,#ff3b30)}.am-message-main{font-size:18px;font-size:var(--am-message-title-size,18px);margin-top:20px;margin-top:var(--am-message-title-margin,20px);color:#333;color:var(--am-message-title-color,#333)}.am-message-sub{font-size:13px;font-size:var(--am-message-subtitle-size,13px);margin-top:8px;margin-top:var(--am-message-subtitle-margin,8px);color:#999;color:var(--am-message-subtitle-color,#999)}.am-message-button-wrap{margin-top:20px;margin-top:var(--am-message-margintop,20px);padding:0 12px;padding:0 var(--am-message-button-margin,12px)}.am-message-button-wrap .a-button{margin-bottom:12px;margin-bottom:var(--am-message-button-margin,12px)}.am-message-button-wrap .a-button:last-child{margin-bottom:0} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/message/index.axml b/node_modules/mini-ali-ui/es/message/index.axml new file mode 100755 index 0000000..f47fc12 --- /dev/null +++ b/node_modules/mini-ali-ui/es/message/index.axml @@ -0,0 +1,30 @@ + + + + {{title}} + + + {{subTitle}} + + + + + + + + + diff --git a/node_modules/mini-ali-ui/es/message/index.js b/node_modules/mini-ali-ui/es/message/index.js new file mode 100755 index 0000000..5e23ee1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/message/index.js @@ -0,0 +1,55 @@ +import fmtEvent from '../_util/fmtEvent'; +var SUPPORT_COMPONENT2 = my.canIUse('component2'); +var TYPE_MAP = { + success: 'check_', + fail: 'close_', + info: 'help_', + warn: 'warn_', + waiting: 'time-5_' +}; +Component({ + props: { + className: '', + type: 'success', + title: '', + onTapMain: function onTapMain() {}, + onTapSub: function onTapSub() {} + }, + data: { + iconType: 'check_' + }, + onInit: function onInit() { + this.setType(this.props.type); + }, + didMount: function didMount() { + if (!SUPPORT_COMPONENT2) { + this.setType(this.props.type); + } + }, + didUpdate: function didUpdate(prevProps) { + if (!SUPPORT_COMPONENT2 && this.props.type !== prevProps.type) { + this.setType(this.props.type); + } + }, + deriveDataFromProps: function deriveDataFromProps(nextProps) { + if (this.props.type !== nextProps.type) { + this.setType(nextProps.type); + } + }, + methods: { + tapMain: function tapMain(e) { + var event = fmtEvent(this.props, e); + this.props.onTapMain(event); + }, + tapSub: function tapSub(e) { + var event = fmtEvent(this.props, e); + this.props.onTapSub(event); + }, + setType: function setType(type) { + var realType = TYPE_MAP[type] || 'check_'; + this.setData({ + iconType: realType + }); + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/message/index.json b/node_modules/mini-ali-ui/es/message/index.json new file mode 100755 index 0000000..74316e1 --- /dev/null +++ b/node_modules/mini-ali-ui/es/message/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "button": "../button/index", + "am-icon": "../am-icon/index" + } +} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/modal/index.acss b/node_modules/mini-ali-ui/es/modal/index.acss new file mode 100755 index 0000000..1f570f6 --- /dev/null +++ b/node_modules/mini-ali-ui/es/modal/index.acss @@ -0,0 +1 @@ +.am-modal{background-color:#fff;background-color:var(--am-modal-content-backgroundColor,#fff);border-radius:8px;border-radius:var(--am-modal-content-radius,8px);width:280px;position:relative}.am-modal-show{position:fixed;top:0;left:0;right:0;bottom:0}.am-modal-hide{display:none}.am-modal-document,.am-modal-mask{position:absolute;top:0;left:0;right:0;bottom:0}.am-modal-mask{background-color:rgba(0,0,0,.55);background-color:var(--am-modal-mask-backgroundColor,rgba(0,0,0,.55))}.am-modal-mask-advice{background-color:rgba(0,0,0,.75);background-color:var(--am-modal-market-mask-backgroundColor,rgba(0,0,0,.75))}.am-modal-document{display:flex;align-items:center;justify-content:center}.am-modal-content{padding:20px 12px;padding:var(20px --am-modal-content-padding-h,20px 12px)}.am-modal-content--fill{padding-top:0}.am-modal-image{display:flex;justify-content:center;margin-bottom:12px;margin-bottom:var(--am-modal-content-margin-v,12px)}.am-modal-image-lg .am-modal-image-element{width:280px;height:156px;margin-left:-12px;margin-left:var(---am-modal-content-padding-h,-12px);margin-right:-12px;margin-right:var(---am-modal-content-padding-h,-12px);border-top-left-radius:8px;border-top-left-radius:var(--am-modal-content-radius,8px);border-top-right-radius:8px;border-top-right-radius:var(--am-modal-content-radius,8px);overflow:hidden}.am-modal-image-md .am-modal-image-element{width:140px;height:140px}.am-modal-image-sm .am-modal-image-element{width:80px;height:80px}.am-modal-header{font-size:18px;font-size:var(--am-modal-title-fontSize,18px);line-height:1.5;line-height:var(--am-modal-title-lineHeight,1.5);text-align:center;color:#333;color:var(--am-modal-title-color,#333);font-weight:700;margin-bottom:8px;margin-bottom:var(--am-modal-title-margin-v,8px)}.am-modal-body{overflow:hidden;max-width:280px;line-height:1.5;line-height:var(--am-modal-body-lineHeight,1.5);text-align:center;color:#333;color:var(--am-modal-body-color,#333);font-size:15px;font-size:var(--am-modal-body-fontSize,15px)}.am-modal-footer{height:50px;line-height:50px;position:relative;font-size:18px;font-size:var(--am-modal-footer-fontSize,18px);color:#1677ff;color:var(--am-color-text-primary,#1677ff);text-align:center}.am-modal-footer::before{content:'';position:absolute;background-color:#e5e5e5;display:block;top:0;right:0;bottom:auto;left:0;height:1px;transform:scaleY(.5)}.am-modal-buttons{position:relative;display:flex;font-size:18px;font-size:var(--am-modal-footer-fontSize,18px);color:#1677ff;color:var(--am-color-text-primary,#1677ff);text-align:center}.am-modal-buttons::before{content:'';position:absolute;background-color:#e5e5e5;display:block;top:0;right:0;bottom:auto;left:0;height:1px;transform:scaleY(.5)}.am-modal-buttons--vertical{flex-direction:column}.am-modal-buttons--horizontal{flex-direction:row}.am-modal-button{padding:12px;flex:1;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.am-modal-button--vertical::after{content:'';position:absolute;background-color:#e5e5e5;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-modal-button--vertical:last-child::after{display:none}.am-modal-button--horizontal::after{content:'';position:absolute;background-color:#e5e5e5;display:block;top:0;right:0;bottom:0;left:auto;width:1px;transform:scaleX(.5)}.am-modal-button--horizontal:last-child::after{display:none}.am-modal-close{position:absolute;display:block;right:0;top:0;height:44px;width:44px;text-align:center;line-height:44px}.am-modal-button-active,.am-modal-close-active,.am-modal-footer-active{background-color:rgba(37,39,40,.05)}.am-modal-document-advice .am-modal{margin-top:-38px;padding-top:0;width:auto}.am-modal-document-advice .am-modal-content{padding:0;border-radius:8px;overflow:hidden}.am-modal-document-advice .am-modal-body{padding:0;max-width:319px}.am-modal-document-advice .am-modal-close{bottom:-50px;top:auto;right:50%;transform:translateX(50%);line-height:1;margin-top:24px;height:26px;width:26px} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/modal/index.axml b/node_modules/mini-ali-ui/es/modal/index.axml new file mode 100755 index 0000000..005f070 --- /dev/null +++ b/node_modules/mini-ali-ui/es/modal/index.axml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + {{button.text}} + + + + + + + + diff --git a/node_modules/mini-ali-ui/es/modal/index.js b/node_modules/mini-ali-ui/es/modal/index.js new file mode 100755 index 0000000..8747b0d --- /dev/null +++ b/node_modules/mini-ali-ui/es/modal/index.js @@ -0,0 +1,58 @@ +import fmtUnit from '../_util/fmtUnit'; +Component({ + data: { + _buttonsLayout: '', + adviceClose: fmtUnit(26), + normalClose: fmtUnit(18) + }, + props: { + className: '', + topImageSize: 'md', + showClose: false, + closeType: '0', + mask: true, + buttonsLayout: 'horizontal', + disableScroll: true + }, + didMount: function didMount() { + var _this$props = this.props, + buttons = _this$props.buttons, + buttonsLayout = _this$props.buttonsLayout; // button数目大于 2 个,则强制使用竖排结构 + + if (buttons && buttons.length > 2) { + this.setData({ + _buttonsLayout: 'vertical' + }); + } else { + this.setData({ + _buttonsLayout: buttonsLayout + }); + } + }, + methods: { + // footer点击 + _onModalClick: function _onModalClick() { + var onModalClick = this.props.onModalClick; + + if (onModalClick) { + onModalClick(); + } + }, + // buttons点击 + _onButtonClick: function _onButtonClick(e) { + var onButtonClick = this.props.onButtonClick; + + if (onButtonClick) { + onButtonClick(e); + } + }, + // 关闭按钮点击 + _onModalClose: function _onModalClose() { + var onModalClose = this.props.onModalClose; + + if (onModalClose) { + onModalClose(); + } + } + } +}); \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/modal/index.json b/node_modules/mini-ali-ui/es/modal/index.json new file mode 100755 index 0000000..39f9a04 --- /dev/null +++ b/node_modules/mini-ali-ui/es/modal/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "button": "../button/index", + "am-icon": "../am-icon/index" + } +} diff --git a/node_modules/mini-ali-ui/es/multi-liner/index.acss b/node_modules/mini-ali-ui/es/multi-liner/index.acss new file mode 100755 index 0000000..28e39ac --- /dev/null +++ b/node_modules/mini-ali-ui/es/multi-liner/index.acss @@ -0,0 +1 @@ +.am-multi-liner-item{display:flex;align-items:center;background:#fff;background:var(--am-multi-liner-item-background,#fff)}.am-multi-liner-item .a-input-content{padding-left:2px}.am-multi-liner-item .a-textarea-count-wrap{position:relative;bottom:0;right:0}.am-multi-liner-line{position:relative;flex:1;display:flex;align-items:center;min-height:48px;min-height:var(--am-multi-liner-line-min-height,48px);overflow:hidden;font-size:17px;font-size:var(--am-multi-liner-font-size,17px)}.am-multi-liner-label{min-width:80px;min-width:var(--am-multi-liner-label-min-width,80px);margin-right:2px;color:#333;color:var(--am-multi-liner-item-label-color,#333)}.am-multi-liner-content{flex:1;display:flex;flex-direction:column;align-items:flex-end;width:100%;color:#333;color:var(--am-multi-liner-item-label-color,#333);text-align:left;padding:12px;padding:var(--am-multi-liner-content-padding,12px)}.am-multi-liner-content .a-input-wrap{flex:1}.am-multi-liner-line-bottom::after{content:'';position:absolute;background-color:#eee;display:block;top:auto;right:0;bottom:0;left:0;height:1px;transform:scaleY(.5)}.am-multi-liner-item.last .am-input-line-bottom::after{display:none}.am-multi-liner-placeholder-base{color:#ccc;color:var(--am-multi-liner-item-placeholder-color,#ccc)} \ No newline at end of file diff --git a/node_modules/mini-ali-ui/es/multi-liner/index.axml b/node_modules/mini-ali-ui/es/multi-liner/index.axml new file mode 100755 index 0000000..a97aad9 --- /dev/null +++ b/node_modules/mini-ali-ui/es/multi-liner/index.axml @@ -0,0 +1,23 @@ + + + +  + + diff --git a/pages/refund/refund.js b/pages/refund/refund.js new file mode 100755 index 0000000..1d2a2ad --- /dev/null +++ b/pages/refund/refund.js @@ -0,0 +1,47 @@ + +const api = require("../../api/api") +const app = getApp() + +Page({ + data: { + orderId : "", + refundName: "" + }, + onLoad(e) { + this.setData({ + orderId : e.id, + refundName: e.name + }) + }, + refundForm(e){ + my.showLoading(); + api.request({ + url : "refund/order", + header : { + "Authorization": app.globalData.token + }, + method : "POST", + data : { + order_id: this.data.orderId, + remark : e.detail.value.refund + } + }).then(res => { + my.alert({ + title : "提示", + content : res.data, + success : ()=>{ + my.navigateBack({ + delta: 1 + }); + } + }); + my.hideLoading(); + }).catch(err=>{ + my.showToast({ + content: err.data.message, + type : 'none' + }); + my.hideLoading(); + }) + } +}); diff --git a/pages/refund/refund.json b/pages/refund/refund.json new file mode 100755 index 0000000..e87365c --- /dev/null +++ b/pages/refund/refund.json @@ -0,0 +1,3 @@ +{ + "defaultTitle": "申请退款" +} \ No newline at end of file diff --git a/pages/refund_record/refund_record.acss b/pages/refund_record/refund_record.acss new file mode 100755 index 0000000..981c934 --- /dev/null +++ b/pages/refund_record/refund_record.acss @@ -0,0 +1,62 @@ + +page{ + background: #fafafa; +} + +.order-item{ + border-top: solid 20rpx #fafafa; + padding: 30rpx; + background: white; +} + +/* 内容 */ +.order-item-content{ + position: relative; + min-height: 148rpx; + padding-left: 168rpx; + padding-right: 200rpx; +} + +.order-item-cover{ + position: absolute; + top: 0; + left: 0; + height: 148rpx; + width: 148rpx; + border:solid 1rpx #ddd; +} + +.order-item-text-title{ + font-weight: bold; + padding-bottom: 20rpx; + font-size: 32rpx; +} + +.order-item-text-info, +.order-item-text-time{ + color: gray; +} + +.order-item-text-time{ + padding-top: 20rpx; +} + +.order-item-text-price{ + position: absolute; + right: 0; + top: 0; + width: 180rpx; + text-align: right; + color: #ff6600; + font-weight: bold; + font-size: 32rpx; +} + +/* 退款金额 */ +.order-item-refund-info{ + background: #fafafa; + margin-top: 30rpx; + line-height: 70rpx; + padding: 0 30rpx; + color: gray; +} diff --git a/pages/refund_record/refund_record.axml b/pages/refund_record/refund_record.axml new file mode 100755 index 0000000..02f803a --- /dev/null +++ b/pages/refund_record/refund_record.axml @@ -0,0 +1,15 @@ + + + + {{item.orders.item.title}} + 退款原因:{{item.remark}} + {{item.created_at}} + {{item.status_text}} + + 退款成功,退款金额¥{{item.orders.amount}} + + + diff --git a/pages/refund_record/refund_record.js b/pages/refund_record/refund_record.js new file mode 100755 index 0000000..a11df00 --- /dev/null +++ b/pages/refund_record/refund_record.js @@ -0,0 +1,62 @@ + +const api = require("../../api/api") +const app = getApp() + +Page({ + data: { + orderArr : [], + page : 1, + meta : {}, + isLogin : false + }, + onLoad() { + my.showLoading(); + }, + + onShow(){ + this.order() + my.showNavigationBarLoading(); + }, + + order(){ + api.request({ + url : "refund/lists", + header : { + "Authorization": app.globalData.token + }, + method : "POST", + data : { + page: this.data.page + } + }).then(res => { + let atArr = this.data.orderArr, + newArr = [] + + newArr = atArr.concat(res.data) + + this.setData({ + orderArr: newArr, + meta : res.meta, + isLogin : false + }) + my.hideNavigationBarLoading(); + my.hideLoading(); + }) + }, + // 分页 + onReachBottom(){ + let meta = this.data.meta, + atPage = this.data.page + + this.setData({ + isLogin: true + }) + + if(meta.current_page < meta.last_page){ + this.setData({ + page: atPage + 1 + }) + this.order() + } + } +}); diff --git a/pages/refund_record/refund_record.json b/pages/refund_record/refund_record.json new file mode 100755 index 0000000..3e46174 --- /dev/null +++ b/pages/refund_record/refund_record.json @@ -0,0 +1,3 @@ +{ + "defaultTitle": "退款记录" +} \ No newline at end of file diff --git a/pages/results/results.acss b/pages/results/results.acss new file mode 100755 index 0000000..5cf108d --- /dev/null +++ b/pages/results/results.acss @@ -0,0 +1,28 @@ + +.pay-results{ + text-align: center; + background: white; + z-index: 1; +} + +.pay-results-title{ + font-size: 40rpx; + font-weight: bold; + margin-top: 60rpx; +} + +.pay-results-btns{ + padding: 30rpx; + margin-top: 200rpx; +} + +.pay-results-btns button { + background: #fe8647; + border-radius: 10rpx; + width: 100%; + height: 90rpx; + line-height: 90rpx; + font-size: 32rpx; + border: none; + color: white; +} diff --git a/pages/results/results.axml b/pages/results/results.axml new file mode 100755 index 0000000..3365676 --- /dev/null +++ b/pages/results/results.axml @@ -0,0 +1,7 @@ + + + 支付成功 + + + + \ No newline at end of file diff --git a/pages/results/results.js b/pages/results/results.js new file mode 100755 index 0000000..b449e1b --- /dev/null +++ b/pages/results/results.js @@ -0,0 +1,8 @@ +Page({ + data: {}, + onLoad() {}, + // 后退 + navigateBack(){ + my.navigateBack() + } +}); diff --git a/pages/results/results.json b/pages/results/results.json new file mode 100755 index 0000000..ba02803 --- /dev/null +++ b/pages/results/results.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "支付结果" +} \ No newline at end of file diff --git a/pages/set/set.acss b/pages/set/set.acss new file mode 100755 index 0000000..83bfddd --- /dev/null +++ b/pages/set/set.acss @@ -0,0 +1,40 @@ + +page{ + background: #fafafa; +} + +.set-blcok{ + border-top: solid 20rpx #fafafa; + background: white; +} + +.set-btn{ + height: 90rpx; + line-height: 90rpx; + position: relative; + padding: 0 30rpx; + font-size: 30rpx; +} + +.set-btn-arrows{ + position: absolute; + right: 30rpx; + top: calc(50% - 16rpx); + width: 32rpx; + height: 32rpx; +} + +.set-btn::before{ + position: absolute; + content: " "; + left: 30rpx; + bottom: 0; + right: 0; + height: 1rpx; + background: #ddd; +} + + +.set-btn:last-child::before{ + display: none; +} diff --git a/pages/set/set.axml b/pages/set/set.axml new file mode 100755 index 0000000..4a406e6 --- /dev/null +++ b/pages/set/set.axml @@ -0,0 +1,11 @@ + + + + 修改密码 + + + + 退出登录 + + + diff --git a/pages/set/set.js b/pages/set/set.js new file mode 100755 index 0000000..c2a1e9c --- /dev/null +++ b/pages/set/set.js @@ -0,0 +1,18 @@ +Page({ + outLogin(){ + my.showLoading({ + content: "退出登录" + }); + my.removeStorage({ + key : 'userToken', + success : (res)=> { + if(res.success){ + my.reLaunch({ + url: "../login/login" + }) + } + my.hideLoading(); + } + }) + } +}); diff --git a/pages/set/set.json b/pages/set/set.json new file mode 100755 index 0000000..2a32559 --- /dev/null +++ b/pages/set/set.json @@ -0,0 +1,3 @@ +{ + "defaultTitle": "设置" +} \ No newline at end of file diff --git a/pages/set_meal/set_meal.acss b/pages/set_meal/set_meal.acss new file mode 100755 index 0000000..b2ad461 --- /dev/null +++ b/pages/set_meal/set_meal.acss @@ -0,0 +1,93 @@ + +/* banner */ +.banner{ + padding-top: 50%; + width: 100%; + background: #ddd; + position: relative; +} + +.banner-swiper{ + position: absolute; + height: 100%; + width: 100%; + top: 0; + left: 0; +} + +.banner-swiper-img{ + width: 100%; + height: 100%; +} + +/* 列表 */ +.meal-title{ + padding: 30rpx; + font-size: 36rpx; + font-weight: bold; +} + +.meal-list{ + padding: 25rpx 30rpx 25rpx 198rpx; + position: relative; + min-height: 148rpx; +} + +.meal-list::before{ + position: absolute; + content: " "; + height: 1rpx; + left: 30rpx; + right: 30rpx; + bottom: 0; + background: #ddd; +} + +.meal-list:last-child::before{ + display: none; +} + +.meal-list-hover{ + background: rgba(0, 0, 0, .05) +} + +.meal-list-cover{ + position: absolute; + left: 30rpx; + top: 20rpx; + width: 148rpx; + height: 148rpx; + background: #ddd; +} + +.meal-list-title{ + font-weight: bold; + font-size: 32rpx; +} + +.meal-list-desc{ + color: gray; +} + +.meal-list-picer{ + font-weight: bold; + font-size: 34rpx; + color: #ff6600; + padding: 15rpx 0; +} + +.meal-list-picer text{ + font-size: 28rpx; +} + +.meal-list-tab{ + margin-left: -10rpx; +} + +.meal-list-tab text{ + margin-left: 10rpx; + color: gray; + border:solid 1rpx #ddd; + font-size: 26rpx; + padding: 0 10rpx; +} diff --git a/pages/set_meal/set_meal.axml b/pages/set_meal/set_meal.axml new file mode 100755 index 0000000..c9e472a --- /dev/null +++ b/pages/set_meal/set_meal.axml @@ -0,0 +1,32 @@ + + + +套餐资费 + + + + {{item.title}} + {{item.price}} + + {{item.tc}}套餐 + {{item.phase}}期 + + + + + diff --git a/pages/set_meal/set_meal.js b/pages/set_meal/set_meal.js new file mode 100755 index 0000000..4a2c3b7 --- /dev/null +++ b/pages/set_meal/set_meal.js @@ -0,0 +1,62 @@ + +const api = require("../../api/api") +const app = getApp() + +Page({ + data: { + mealArr: [], + page : 1, + meta : {}, + isLogin: false + }, + onLoad() { + my.showLoading(); + this.getList() + }, + // 隐藏返回首页按钮 + onReady() { + if (my.canIUse('hideBackHome')) { + my.hideBackHome(); + } + }, + getList(){ + api.request({ + url : "goods/lists", + method : "POST", + header : { + "Authorization": app.globalData.token + }, + data : { + page: this.data.page + } + }).then(res=>{ + let atArr = this.data.mealArr, + newArr = [] + + newArr = atArr.concat(res.data) + + this.setData({ + mealArr : newArr, + meta : res.meta, + isLogin : false + }) + my.hideLoading() + }) + }, + // 分页 + onReachBottom(){ + let meta = this.data.meta, + atPage = this.data.page + + this.setData({ + isLogin: true + }) + + if(meta.current_page < meta.last_page){ + this.setData({ + page: atPage + 1 + }) + this.getList() + } + } +}); diff --git a/pages/set_meal/set_meal.json b/pages/set_meal/set_meal.json new file mode 100755 index 0000000..b32d74b --- /dev/null +++ b/pages/set_meal/set_meal.json @@ -0,0 +1,4 @@ +{ + "defaultTitle" : " ", + "transparentTitle" : "auto" +} \ No newline at end of file diff --git a/pages/shop_user/shop_user.acss b/pages/shop_user/shop_user.acss new file mode 100755 index 0000000..f945504 --- /dev/null +++ b/pages/shop_user/shop_user.acss @@ -0,0 +1,83 @@ + +page{ + background: #fafafa; +} + +.shop-user-header{ + background: white; + padding: 10rpx 30rpx; + display: flex; + justify-content: space-between; + line-height: 90rpx; + color: gray; +} + +.shop-user-header-add{ + color: black; + font-size: 30rpx; + color: #ff6600; + padding: 0 20rpx; +} + +.shop-user-header-add image{ + width: 36rpx; + height: 36rpx; + vertical-align: middle; + margin-right: 5rpx; + margin-bottom: 3rpx; +} + +/* 列表 */ +.shop-user-list{ + background: white; + margin-top: 20rpx; +} + +.shop-user-item{ + position: relative; + padding: 25rpx 180rpx 25rpx 30rpx; +} + +.shop-user-item::before{ + position: absolute; + left: 30rpx; + right: 0; + bottom: 0; + height: 1rpx; + content: " "; + background: #ddd; +} + +.shop-user-item:last-child::before{ + display: none; +} + +.shop-user-name{ + font-weight: bold; + font-size: 32rpx; +} + +.shop-user-phone{ + color: gray; + padding-top: 10rpx; +} + +.shop-user-btn{ + position: absolute; + right: 30rpx; + top: calc(50% - 30rpx); + height: 60rpx; + line-height: 60rpx; + border:solid 2rpx #ff6600; + width: 120rpx; + box-sizing: border-box; + text-align: center; + color: #ff6600; +} + +/* 暂无店员 */ +.shop-user-null{ + text-align: center; + padding-top: 40vh; + color: gray; +} diff --git a/pages/shop_user/shop_user.axml b/pages/shop_user/shop_user.axml new file mode 100755 index 0000000..6e7d7b6 --- /dev/null +++ b/pages/shop_user/shop_user.axml @@ -0,0 +1,24 @@ + + + 当前店员:{{count}}人 + + 添加 + + + + + + {{item.nickname}} + {{item.username}} + 删除 + + + +暂无店员 + + + + diff --git a/pages/shop_user/shop_user.js b/pages/shop_user/shop_user.js new file mode 100755 index 0000000..2a7b544 --- /dev/null +++ b/pages/shop_user/shop_user.js @@ -0,0 +1,111 @@ + +const api = require("../../api/api") +const app = getApp() + +Page({ + data: { + page : 1, + userList: [], + count : 0, + meta : {}, + isLogin : false + }, + onLoad() { + my.showLoading(); + }, + // 页面显示 + onShow() { + my.showNavigationBarLoading(); + this.setData({ + userList: [] + }) + this.getShopuser() + }, + // 店员列表 + getShopuser(){ + api.request({ + url : "users/userList", + header: { + "Authorization": app.globalData.token + }, + data : { + page: this.data.page + } + }).then(res=>{ + + let atArr = this.data.userList, + newArr = [] + + newArr = atArr.concat(res.data) + + this.setData({ + userList: newArr, + meta : res.meta, + count : res.count, + isLogin : false + }) + my.hideLoading(); + my.hideNavigationBarLoading(); + }) + }, + + // 删除店员 + removeUser(e){ + let userList = this.data.userList, + userId = e.target.dataset.id, + userNmae = e.target.dataset.name + + my.confirm({ + title : '删除提示', + content : '确定删除员工"' + userNmae + '"吗?', + confirmButtonText: '删除', + cancelButtonText : '取消', + success : (result) => { + if(result.confirm){ + my.showLoading() + this.setData({ + userList: [] + }) + api.request({ + url : "users/userDel", + header: { + "Authorization": app.globalData.token + }, + method: "POST", + data : { + user_id: userId + } + }).then(res=>{ + my.showToast({ + content: res.data, + type : "success" + }); + this.getShopuser() + }).catch(err=>{ + my.showToast({ + content: "删除失败,请稍后重试", + type : "none" + }); + my.hideLoading() + }) + } + }, + }) + }, + // 分页 + onReachBottom(){ + let meta = this.data.meta, + atPage = this.data.page + + this.setData({ + isLogin: true + }) + + if(meta.current_page < meta.last_page){ + this.setData({ + page: atPage + 1 + }) + this.getShopuser() + } + } +}); diff --git a/pages/shop_user/shop_user.json b/pages/shop_user/shop_user.json new file mode 100755 index 0000000..56a4b00 --- /dev/null +++ b/pages/shop_user/shop_user.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "店员管理" +} \ No newline at end of file diff --git a/pages/stages_form/stages_form.acss b/pages/stages_form/stages_form.acss new file mode 100644 index 0000000..af754bf --- /dev/null +++ b/pages/stages_form/stages_form.acss @@ -0,0 +1,123 @@ + +page{ + background: #fafafa; +} + +/* 可办理次数 */ +.welfare-header{ + padding: 100rpx 30rpx; + text-align: center; + background: white; +} + +.welfare-header-title{ + color: gray; +} + +.welfare-header-title text{ + color: #318fef; + font-weight: bold; + padding: 0 10rpx; +} + +.welfare-header-number{ + font-size: 50rpx; + font-weight: bold; + color: #318fef; + padding: 20rpx 0; +} + +/* 办理优惠信息 */ +.welfare-title{ + padding: 20rpx 30rpx; + color: gray; +} + +/* 优惠办理表单 */ + +.form-block{ + background: white; +} + +.order-item{ + position: relative; + padding: 0 30rpx 0 200rpx; + height: 85rpx; + line-height: 85rpx; + font-size: 30rpx; +} + +.order-item::after{ + content: " "; + background: #ddd; + position: absolute; + left: 30rpx; + height: 1rpx; + right: 0; + bottom: 0; + z-index: 1; +} + +.order-item:last-child::after{ + display: none; +} + +.order-item-label{ + position: absolute; + left: 0; + top: 0; + line-height: 85rpx; + padding: 0 30rpx; + width: 200rpx; + box-sizing: border-box; + text-align: left; +} + +.order-item-input{ + background: white; + display: block; + border: none; + padding: 0; + height: 85rpx; + font-size: 30rpx; +} + +.order-item-picker{ + width: 100%; +} + +.order-item-picker-text{ + padding-right: 85rpx; + position: relative; +} + +.order-item-picker-icon{ + width: 32rpx; + position: absolute; + right: 0; + top: 26rpx; +} + +.order-item-code{ + padding-right: 260rpx; +} + +.order-btn{ + padding: 30rpx; +} + +.stagers-form-btn{ + background: #4a9d64; + border-color: #4a9d64; +} + +/* 收款说明 */ +.remark{ + padding: 0 30rpx 30rpx 30rpx; +} + +.remark-title{ + font-weight: bold; + font-size: 30rpx; + line-height: 70rpx; +} diff --git a/pages/stages_form/stages_form.axml b/pages/stages_form/stages_form.axml new file mode 100644 index 0000000..68955cf --- /dev/null +++ b/pages/stages_form/stages_form.axml @@ -0,0 +1,55 @@ + + +
+ + + + + + {{comboTypeText || "选择分期金额"}} + + + + + + + + + {{comboArr[comboTypeValue].nper}} + + + + {{comboArr[comboTypeValue].amount}} + + + + + + + + + + + + {{periodsText || "选择分期数"}} + + + + + + + + + + + + + + +
+ + + + {{remarkTitle}} + + diff --git a/pages/stages_form/stages_form.js b/pages/stages_form/stages_form.js new file mode 100644 index 0000000..d19ee18 --- /dev/null +++ b/pages/stages_form/stages_form.js @@ -0,0 +1,140 @@ + +import parse from 'mini-html-parser2'; + +const api = require("../../api/api"), + app = getApp() + +var outTime + +Page({ + data: { + comboArr : [], + comboTypeValue : "", + comboTypeText : "", + periodsArr : [3,6,12], + periodsValue : "", + periodsText : "", + remarkTitle : "", + remarkContent : [] + }, + // 生命周期函数 -- 页面加载 + onLoad() { + + }, + // 生命周期函数 -- 页面显示 + onShow(){ + this.preferential() + }, + // 获取优惠配置信息 + preferential(){ + api.request({ + url : "installment/user", + header: { + "Authorization": app.globalData.token + }, + method: "POST" + }).then(res=>{ + let commboArr = res.data.data + commboArr.push({ + title: "其他金额" + }) + this.setData({ + comboArr : commboArr, + remarkTitle : res.data.article.title + }) + + let content = res.data.article.content.replace(/\ { + if(!err){ + this.setData({ + remarkContent : nodes + }) + } + }) + }) + }, + // 选择分期金额类型 + comboTypeChange(e){ + let comboType = this.data.comboArr, + value = e.detail.value, + comboTypeName = comboType[value].title + + this.setData({ + comboTypeText : comboTypeName, + comboTypeValue : value, + periodsValue : "", + periodsText : "" + }) + }, + // 选择分期数 + periodsChange(e){ + let periodsArr = this.data.periodsArr, + value = e.detail.value, + periodsName = periodsArr[value] + + this.setData({ + periodsText : periodsName, + periodsValue : value + }) + }, + // 提交表单 + welfareForm(e){ + if(this.data.comboTypeText != ''){ + + if(e.detail.value.price == ""){ + my.showToast({ + content: "输入分期总金额" + }) + return + } + + if(this.data.comboTypeText == "其他金额"){ + if(this.data.periodsText == ""){ + my.showToast({ + content: "请选择分期期数" + }) + return + } + } + + my.showLoading() + // api + api.request({ + url : "installment/audit", + method : "POST", + header: { + "Authorization": app.globalData.token + }, + data : { + installment_id : this.data.comboArr[this.data.comboTypeValue].id || "", //收款id + mobile : e.detail.value.tel || "", //办理手机号码 + amount : e.detail.value.price || "", //总金额 + nper : this.data.periodsText || "", //期数 + channel : "DEFAULT" + } + }).then(res=>{ + if(res.status == "SUCCESS" && res.data != ''){ + my.redirectTo({ + url: '../payCode/payCode?paytype=installment&orderid=' + res.data + }); + } + my.hideLoading() + }).catch(err=>{ + my.showToast({ + content: err.data.message + }) + my.hideLoading() + }) + }else{ + my.showToast({ + content: "请选择分期金额" + }) + } + }, + + // 退出页面 + onUnload(){ + clearInterval(outTime) + } +}) diff --git a/pages/stages_form/stages_form.json b/pages/stages_form/stages_form.json new file mode 100644 index 0000000..352ab7e --- /dev/null +++ b/pages/stages_form/stages_form.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "办理分期付款" +} \ No newline at end of file diff --git a/pages/stages_pay/stages_pay.acss b/pages/stages_pay/stages_pay.acss new file mode 100755 index 0000000..c4e9375 --- /dev/null +++ b/pages/stages_pay/stages_pay.acss @@ -0,0 +1,321 @@ + +.welfare-header{ + padding: 30rpx; + background: #4a9d64; + color: white; +} + +.welfare-flex{ + display: flex; + flex-wrap: wrap; + margin: 0 -10rpx; +} + +.welfare-item{ + width: 50%; + padding: 0 10rpx; + box-sizing: border-box; +} + +.welfare-item-text{ + color: white; + padding-bottom: 10rpx; +} + +.welfare-item-icon{ + background: white; + border-radius: 50%; + width: 38rpx; + height: 38rpx; + vertical-align: middle; + margin-right: 10rpx; +} + +.welfare-item-number{ + font-weight: bold; + font-size: 40rpx; +} + +.welfare-stat{ + display: flex; + background: white; + color: black; + margin-top: 30rpx; + border-radius: 6rpx; + padding: 20rpx; +} + +.welfare-stat-item{ + width: 40%; + padding: 0 10rpx; + border-right: solid 2rpx #c2c2c2; + text-align: center; +} + +.welfare-stat-item:first-child{ + width: 20%; + text-align: left; +} + +.welfare-stat-item:last-child, +.welfare-stat-item:first-child{ + border-right: none; +} + +.welfare-stat-text{ + color: white; + font-size: 24rpx; +} + +.welfare-stat-blue, +.welfare-stat-orange, +.welfare-stat-gray{ + width: 130rpx; + line-height: 40rpx; + border-radius: 20rpx; + display: inline-block; +} + +.welfare-stat-blue{ + background: #4a9d64; +} + +.welfare-stat-orange{ + background: #ec712e; +} + +.welfare-stat-gray{ + background: #b5b5b5; +} + +.welfare-stat-year{ + line-height: 50rpx; +} + +.welfare-stat-month{ + line-height: 40rpx; + font-size: 32rpx; + font-weight: bold; +} + +.welfare-stat-month image{ + width: 15rpx; + margin-left: 5rpx; + vertical-align: middle; +} + +.welfare-stat-year{ + padding-top: 5rpx; + line-height: 40rpx; +} + +.welfare-stat-number{ + font-weight: bold; + font-size: 36rpx; + line-height: 50rpx; + padding-bottom: 6rpx; +} + +/* 搜索框 */ +.welfare-search-form{ + background: #83b793; + height: 70rpx; + border-radius: 40rpx; + margin-top: 30rpx; + display: block; + position: relative; +} + +.welfare-search-input{ + width: 100%; + padding: 0 100rpx; + margin: 0; + height: 70rpx; + line-height: 70rpx; + background: transparent; + font-size: 30rpx; + box-sizing: border-box; + color: white; +} + +.welfare-search-class{ + width: 36rpx; + position: absolute; + top: 17rpx; + left: 25rpx; +} + +.welfare-search-btn{ + position: absolute; + top: 0; + right: 0; + width: 80rpx; + text-align: center; + padding: 0; + margin: 0; + height: 70rpx; + border-radius: 0 40rpx 40rpx 0; + background: transparent; + border: none; +} + +.welfare-search-btn image{ + width: 36rpx; + vertical-align: top; + margin-top: 14rpx; + margin-right: 10rpx; +} + +.welfare-search-btn-hover{ + background: #cc520f; +} + +/* 筛选 */ +.welfare-search-flex{ + display: flex; + border:solid 2rpx white; + border-radius: 6rpx; + margin-top: 30rpx; +} + +.welfare-search-item{ + flex: 1; + text-align: center; + border-right: solid 2rpx white; + line-height: 60rpx; + font-size: 30rpx; +} + +.welfare-search-item:last-child{ + border-right: none; +} + +.welfare-search-item.show{ + background: white; + color: #4a9d64; +} + +/* 列表 */ + +.welfare-list, +.welfare-list-null{ + padding-bottom: 175rpx; +} + +.welfare-list-item{ + border-top: solid 20rpx #fafafa; + padding: 30rpx; +} + +.welfare-list-name{ + position: relative; + font-size: 30rpx; + font-weight: bold; + line-height: 50rpx; + padding-right: 230rpx; + padding-bottom: 20rpx; + border-bottom: solid 1rpx #ddd; +} + +.welfare-list-stat{ + position: absolute; + right: 0; + top: 0; + color: #ff6600; + width: 200rpx; + text-align: right; +} + +.welfare-list-stat.gray{ + color: gray; +} + +.welfare-list-tag{ + color: white; + background: #ff6600; + margin-right: 10rpx; + border-radius: 6rpx; + padding: 0 15rpx; + font-size: 28rpx; +} + +.welfare-list-info{ + padding-top: 20rpx; + display: flex; + flex-wrap: wrap; + margin-right: -20rpx; +} + +.welfare-list-info-item{ + width: 50%; + color: gray; + line-height: 50rpx; + font-size: 28rpx; + padding-right: 20rpx; + box-sizing: border-box; +} + +.welfare-list-info-item image{ + width: 32rpx; + vertical-align: middle; + margin-right: 8rpx; +} + +.welfare-list-btns{ + margin-top: 20rpx; + padding-top: 20rpx; + border-top: solid 1rpx #ddd; + text-align: right; +} + +.welfare-list-btn{ + display: inline-block; + background: #4a9d64; + color: white; + line-height: 70rpx; + height: 70rpx; + margin-left: 30rpx; + padding: 0 30rpx; + box-sizing: border-box; +} + +.welfare-list-btn.remove{ + border:solid 1rpx gray; + color: gray; + background: transparent; +} + +/* footer */ +.welfare-footer{ + position: fixed; + bottom: 0; + left: 0; + background: white; + padding: 30rpx; + width: 100%; + box-sizing: border-box; +} + +.welfare-footer-nav{ + text-align: center; + background: #4a9d64; +} + +/* 空提示 */ +.welfare-list-null{ + text-align: center; + color: gray; + padding: 200rpx 0; +} + +.welfare-list-null-title{ + font-weight: bold; + font-size: 30rpx; + color: black; + padding-bottom: 10rpx; +} + +.welfare-list-null image{ + width: 88rpx; + margin-bottom: 20rpx; +} diff --git a/pages/stages_pay/stages_pay.axml b/pages/stages_pay/stages_pay.axml new file mode 100755 index 0000000..6e733e6 --- /dev/null +++ b/pages/stages_pay/stages_pay.axml @@ -0,0 +1,96 @@ + + + + + + + + + 办理办理(笔) + + {{num || '0'}} + + + + + 累计金额(元) + + {{settleAmount || '0.00'}} + + + + + {{year}} + {{month}}月 + + + {{atNum || '0'}} + + 当前笔数 + + + + {{atAmount || '0'}} + + 当前金额 + + + + +
+ + + + + +
+ + + 本月 + 今日 + 昨日 + +
+ + + + + {{item.order_id || '-'}} + {{item.status_text}} + + + {{item.price || '0.00'}} + {{item.nper || '0'}}期 + {{item.nickname || '-'}} + {{item.mobile || '-'}} + {{item.created_at || '-'}} + + + + + {{item.silver == 0 ? '-': item.silver }} + + + + 取消订单 + 立即支付 + + + + + + + + 当前暂无分期记录 + 什么都还没有,赶快去添加吧 + + + + 办理分期 + +
diff --git a/pages/stages_pay/stages_pay.js b/pages/stages_pay/stages_pay.js new file mode 100755 index 0000000..be46667 --- /dev/null +++ b/pages/stages_pay/stages_pay.js @@ -0,0 +1,240 @@ + +const api = require("../../api/api"), + app = getApp() + +Page({ + data: { + listArr : [], + identity_id : "", + permissions : false, + year : "", + month : "", + searchIndex : 0, + typeArr : [ + {id: "" , name:"全部"}, + {id: "0" , name:"未支付"}, + {id: "1" , name:"已支付"} + ], + typeIndex : 0, + num : "", + settleAmount: "", + settleMonth : "", + atNum : "", + atAmount : "", + endDate : "", + isNowMonth : false, + page : 1, + meta : {}, + isLogin : false + }, + + // 页面加载 + onLoad() { + const date = new Date() + + let year = date.getFullYear(), + month = date.getMonth() + 1 + + if(month < 10){ + month = '0' + month + } + + this.setData({ + identity_id: app.globalData.userInfo.identity_id, + permissions: app.globalData.userInfo.perferential, + year : year, + month : month, + endDate : year + "-" + month + }) + }, + + // 页面显示 + onShow(){ + this.setData({ + listArr: [] + }) + this.welfareList() + my.showLoading(); + my.showNavigationBarLoading(); + }, + + // 列表 + welfareList(tel){ + let url = "installment/lists", + dateYear = this.data.year + '-' + this.data.month + + if(this.data.searchIndex == 1){ + dateYear = "today" + } else if(this.data.searchIndex == 2){ + dateYear = "yesterday" + } + + api.request({ + url : url, + header: { + "Authorization": app.globalData.token + }, + data : { + date : dateYear, + mobile : tel || "", + status : this.data.typeArr[this.data.typeIndex].id, + page : this.data.page + } + }).then(res=>{ + let atArr = this.data.listArr, + newArr = [] + + newArr = atArr.concat(res.data) + + this.setData({ + listArr : newArr, + num : res.all_count, + settleAmount: res.all_amount, + atNum : res.month_count, + atAmount : res.month_amount, + isNowMonth : res.isNowMonth + }) + my.hideLoading(); + my.hideNavigationBarLoading(); + my.stopPullDownRefresh(); + }) + }, + + // 选择日期 + selectTime(){ + my.datePicker({ + currentDate : this.data.year + "-" + this.data.month, + endDate : this.data.endDate, + format : "yyyy-MM", + success : res=>{ + let dateString = String(res.date), + yearString = dateString.substring(0,4), + monthString = dateString.substring(5,7) + + this.setData({ + year : yearString, + month : monthString, + page : 1, + listArr: [] + }) + + this.welfareList() + my.showLoading(); + } + }) + }, + + // 筛选日期 + searchTab(e){ + this.setData({ + page : 1, + listArr : [] + }) + + if(e.target.dataset.index != this.data.searchIndex){ + this.setData({ + searchIndex: e.target.dataset.index + }) + + this.welfareList() + my.showLoading(); + } + + if(e.target.dataset.index == 0 && !this.data.isNowMonth){ + const date = new Date() + + let year = date.getFullYear(), + month = date.getMonth() + 1 + + if(month < 10){ + month = '0' + month + } + + this.setData({ + year : year, + month : month + }) + + this.welfareList() + my.showLoading(); + } + }, + + // 类型筛选 + screenClass(e){ + this.setData({ + typeIndex: e.detail.value, + page : 1, + listArr : [] + }) + this.welfareList() + my.showLoading(); + }, + + // 搜索手机号码 + searchForm(e){ + this.setData({ + page : 1, + listArr : [] + }) + + let tel = e.detail.value.searchValue + this.welfareList(tel) + }, + + // 分页 + onReachBottom(){ + let meta = this.data.meta, + atPage = this.data.page + + this.setData({ + isLogin: true + }) + + if(meta.current_page < meta.last_page){ + this.setData({ + page: atPage + 1 + }) + this.welfareList() + my.showLoading(); + } + }, + + // 下拉刷新 + onPullDownRefresh(){ + this.setData({ + listArr : [] + }) + this.welfareList() + }, + + // 取消订单 + reomveOrder(e){ + if(e.currentTarget.dataset.id){ + my.showLoading() + api.request({ + url : "installment/"+ e.currentTarget.dataset.id +"/cancel", + header: { + "Authorization": app.globalData.token + }, + method: "POST", + }).then(res=>{ + my.showToast({ + type : "none", + content : res.data + }); + my.hideLoading() + this.setData({ + listArr : [] + }) + this.welfareList() + my.showLoading(); + }) + }else{ + my.showToast({ + type : "none", + content : "订单id不存在" + }); + } + }, +}); diff --git a/pages/stages_pay/stages_pay.json b/pages/stages_pay/stages_pay.json new file mode 100755 index 0000000..5061d99 --- /dev/null +++ b/pages/stages_pay/stages_pay.json @@ -0,0 +1,5 @@ +{ + "defaultTitle" : "分期付款", + "titleBarColor": "#4a9d64", + "pullRefresh": true +} \ No newline at end of file diff --git a/pages/star_card/star_card.axml b/pages/star_card/star_card.axml new file mode 100755 index 0000000..012fc47 --- /dev/null +++ b/pages/star_card/star_card.axml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/pages/star_card/star_card.js b/pages/star_card/star_card.js new file mode 100755 index 0000000..cb73536 --- /dev/null +++ b/pages/star_card/star_card.js @@ -0,0 +1,4 @@ +Page({ + data: {}, + onLoad() {}, +}); diff --git a/pages/star_card/star_card.json b/pages/star_card/star_card.json new file mode 100755 index 0000000..f0ed118 --- /dev/null +++ b/pages/star_card/star_card.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "星卡" +} \ No newline at end of file diff --git a/pages/sub_order/sub_order.acss b/pages/sub_order/sub_order.acss new file mode 100755 index 0000000..7034909 --- /dev/null +++ b/pages/sub_order/sub_order.acss @@ -0,0 +1,118 @@ + +/** + * Web唐明明 + * 一个梦想做木雕手艺人的程序员 + */ + +page{ + background: #fafafa; +} + +.order-title{ + padding: 20rpx 30rpx; + color: gray; +} + +.order-block{ + background: white; +} + +.order-item{ + position: relative; + padding: 0 30rpx 0 200rpx; + height: 85rpx; + line-height: 85rpx; + font-size: 30rpx; +} + +.order-item::after{ + content: " "; + background: #ddd; + position: absolute; + left: 30rpx; + height: 1rpx; + right: 0; + bottom: 0; + z-index: 1; +} + +.order-item:last-child::after{ + display: none; +} + +.order-item-label{ + position: absolute; + left: 0; + top: 0; + line-height: 85rpx; + padding: 0 30rpx; + width: 200rpx; + box-sizing: border-box; + text-align: left; +} + +.order-item-text{ + width: 100%; + text-align: right; +} + +.order-item-picker{ + display: block; +} + +.order-item-picker-text{ + text-align: right; +} + +.order-item-picker-icon{ + width: 36rpx; + height: 36rpx; + vertical-align: middle; + margin-bottom: 4rpx; +} + +.order-item-input{ + background: white; + display: block; + border: none; + padding: 0; + height: 85rpx; + font-size: 30rpx; +} + +/* 预测还款表格 */ +.order-block-header, +.order-block-table{ + padding: 0 30rpx; + display: flex; + text-align: center; +} + +.order-block-header{ + padding-bottom: 40rpx; +} + +.order-block-table{ + line-height: 70rpx; + padding-top: 20rpx; +} + +.order-block-header-item, +.order-block-table-item{ + text-align: center; + width: 33.333%; +} + +.order-block-header-item{ + color: gray; +} + +.order-block-table-item{ + font-weight: bold; + font-size: 32rpx; +} + +/* 分期按钮 */ +.order-btns{ + padding: 30rpx; +} diff --git a/pages/sub_order/sub_order.axml b/pages/sub_order/sub_order.axml new file mode 100755 index 0000000..cd17f3b --- /dev/null +++ b/pages/sub_order/sub_order.axml @@ -0,0 +1,58 @@ + +
+ 分期信息 + + + + {{orderDeta.title}} + + + + {{orderDeta.original}}元 + + + + + + {{stages[stagesIndex].value}} + + + + + + + 由商家承担 + + + 购买信息(选填) + + + + + + + + + + + + + + + 预测还款 + + + {{stages[stagesIndex].one_phase || '0.00'}} + {{stages[stagesIndex].phase || '0'}} + {{stages[stagesIndex].price || '0.00'}} + + + 每期约还款(元) + 期数 + 累计还款(元) + + + + + +
diff --git a/pages/sub_order/sub_order.js b/pages/sub_order/sub_order.js new file mode 100755 index 0000000..14ef743 --- /dev/null +++ b/pages/sub_order/sub_order.js @@ -0,0 +1,82 @@ + +/** + * Web唐明明 + * 一个梦想做木雕手艺人的程序员 + */ + +const api = require("../../api/api") +const app = getApp() + +Page({ + data:{ + orderDeta : {}, + stages : [], + stagesIndex : 0 + }, + // 页面加载 + onLoad(query) { + // 页面加载 + this.setData({ + id: query.id + }) + // 获取信息 + this.getOrder() + }, + // 选择分期数 + changeStages(e){ + if(e.detail.value != this.data.stagesIndex){ + this.setData({ + stagesIndex: e.detail.value + }) + } + }, + + // 获取信息 + getOrder(){ + my.showLoading(); + api.request({ + url : "goods/" + this.data.id, + header: { + "Authorization": app.globalData.token + }, + method: "POST" + }).then(res=>{ + this.setData({ + orderDeta: res.data, + stages : res.data.params + }) + my.hideLoading(); + }) + }, + + // 提交订单 + subOrder(e){ + my.showLoading(); + api.request({ + url : "order/create/" + this.data.stages[e.detail.value.stages].id, + header: { + "Authorization": app.globalData.token + }, + method: "POST", + data : { + name : e.detail.value.name, + phone : e.detail.value.phone, + idcard : e.detail.value.idcard + } + }).then(res=>{ + if(res.status == "SUCCESS" && res.data.orderid != ''){ + my.navigateTo({ + url: '../payCode/payCode?orderid=' + res.data.orderid + }); + } + my.hideLoading(); + }).catch(err=>{ + console.log(err.data.message) + my.showToast({ + type : 'none', + content: err.data.message + }); + my.hideLoading() + }) + } +}); diff --git a/pages/sub_order/sub_order.json b/pages/sub_order/sub_order.json new file mode 100755 index 0000000..5e2e523 --- /dev/null +++ b/pages/sub_order/sub_order.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "订单信息" +} \ No newline at end of file diff --git a/pages/user/user.acss b/pages/user/user.acss new file mode 100755 index 0000000..a0bd3e7 --- /dev/null +++ b/pages/user/user.acss @@ -0,0 +1,78 @@ + +.user-info{ + background: white; + padding: 90rpx 50rpx; + position: relative; + border-bottom: solid 20rpx #fafafa; +} + +.user-info-name{ + font-size: 38rpx; + font-weight: bold; +} + +.user-info-identity{ + padding-top: 15rpx; +} + +.user-info-identity text{ + display: inline-block; + background: #ff6600; + color: white; + height: 32rpx; + line-height: 32rpx; + padding: 0 20rpx; + border-radius: 16px; + font-size: 24rpx; +} + +.user-info-shop{ + padding-top: 15rpx; + color: gray; + font-size: 26rpx; +} + +.user-info-cover{ + position: absolute; + right: 50rpx; + top: calc(50% - 54rpx); + width: 88rpx; + height: 88rpx; + background: #fafafa; + border:solid 10rpx #fafafa; + border-radius: 50%; +} + +/* 按钮 */ +.user-btn{ + padding: 0 30rpx; + height: 90rpx; + line-height: 90rpx; + position: relative; + font-size: 30rpx; +} + +.user-btn-text{ + position: absolute; + right: 64rpx; + top: 0; + width: 350rpx; + font-size: 28rpx; + color: gray; + text-align: right; +} + +.user-btn-icon{ + width: 34rpx; + height: 34rpx; + vertical-align: middle; + margin: 0 15rpx 5rpx 0; +} + +.user-btn-arrows{ + position: absolute; + right: 30rpx; + top: calc(50% - 17rpx); + width: 34rpx; + height: 34rpx; +} diff --git a/pages/user/user.axml b/pages/user/user.axml new file mode 100755 index 0000000..ff08d17 --- /dev/null +++ b/pages/user/user.axml @@ -0,0 +1,43 @@ + + + + + + + 我的账户 + + + + + 渠道冰激凌工号 + {{userInfo.gas_number}} + + + + + + 店员管理 + + + + + 设置 + + + diff --git a/pages/user/user.js b/pages/user/user.js new file mode 100755 index 0000000..57f916a --- /dev/null +++ b/pages/user/user.js @@ -0,0 +1,24 @@ + +const app = getApp() + +Page({ + data: { + userInfo: {} + }, + onLoad() { + this.setData({ + userInfo: app.globalData.userInfo + }) + }, + copyNumber(){ + my.setClipboard({ + text : this.data.userInfo.gas_number, + success : res=>{ + my.showToast({ + content: "渠道工号已复制", + type : "none" + }); + } + }) + } +}); diff --git a/pages/user/user.json b/pages/user/user.json new file mode 100755 index 0000000..d1c2c92 --- /dev/null +++ b/pages/user/user.json @@ -0,0 +1,4 @@ +{ + "defaultTitle" : "我的", + "titleBarColor": "#ffffff" +} \ No newline at end of file diff --git a/pages/wallet/wallet.acss b/pages/wallet/wallet.acss new file mode 100755 index 0000000..e22f3f4 --- /dev/null +++ b/pages/wallet/wallet.acss @@ -0,0 +1,126 @@ +.wallet-balance{ + padding: 50rpx 30rpx 100rpx 30rpx; + text-align: center; + background: #ff6600; + color: white; +} + +.wallet-balance-number{ + font-weight: bold; + font-size: 70rpx; +} + +.wallet-balance-text{ + padding-top: 15rpx; +} + +.wallet{ + background: white; + margin: -50rpx 30rpx 30rpx 30rpx; + border-radius: 10rpx; + box-shadow: 0 0 5rpx 5rpx rgba(0, 0, 0, .05); +} + +.wallet-info{ + display: flex; + padding: 50rpx 0; +} + +.wallet-info-item{ + text-align: center; + width: 50%; + box-sizing: border-box; + padding: 0 20rpx; +} + +.wallet-info-item:first-child{ + border-right: solid 1rpx #ddd; +} + +.wallet-info-title{ + font-size: 28rpx; + color: gray; +} + +.wallet-info-title image{ + width: 32rpx; + height: 32rpx; + vertical-align: middle; +} + +.wallet-info-number{ + font-size: 32rpx; + padding-top: 10rpx; + font-weight: bold; +} + +.wallet-info-btn{ + font-size: 32rpx; + font-weight: bold; + line-height: 90rpx; + text-align: center; + color: #ff6600; + border-top: solid 1rpx #ddd; +} + +/* 充值记录 */ +.wallet-title{ + background: #fafafa; + padding: 20rpx 30rpx; + color: gray; + font-size: 28rpx; +} + +.wallet-item{ + padding: 20rpx 230rpx 20rpx 30rpx; + position: relative; +} + +.wallet-item::before{ + position: absolute; + left: 30rpx; + bottom: 0; + right: 0; + content: " "; + background: #ddd; + height: 1rpx; +} + +.wallet-item-title{ + line-height: 50rpx; + font-weight: bold; + font-size: 30rpx; +} + +.wallet-item-title text{ + margin-right: 15rpx; + color: #ff6600; +} + +.wallet-item-time{ + color: gray; + font-size: 26rpx; + line-height: 30rpx; +} + +.wallet-item-price{ + position: absolute; + top: 20rpx; + right: 30rpx; + line-height: 80rpx; + text-align: right; + font-size: 34rpx; + color: red; + font-weight: bold; +} + +.wallet-item-price.remove{ + color: green; +} + +/* 账户空 */ +.logs-null{ + text-align: center; + color: gray; + line-height: 30vh; +} diff --git a/pages/wallet/wallet.axml b/pages/wallet/wallet.axml new file mode 100755 index 0000000..7ec9f62 --- /dev/null +++ b/pages/wallet/wallet.axml @@ -0,0 +1,35 @@ + + {{account.balance || "0.00"}} + 账户余额 + + + + + 累计收益(元) + {{account.all_in || "0.00"}} + + + 已提现(元) + {{account.withdrawal || "0.00"}} + + + + 申请提现 + + + + + 账户记录 + + ({{item.frozen_text}}){{item.remark}} + {{item.created_at}} + {{item.variable}} + + + + + +暂无账户记录 diff --git a/pages/wallet/wallet.js b/pages/wallet/wallet.js new file mode 100755 index 0000000..08d1786 --- /dev/null +++ b/pages/wallet/wallet.js @@ -0,0 +1,65 @@ +const api = require("../../api/api") +const app = getApp() + +Page({ + data: { + account : {}, + logs : [], + page : {}, + isLogin: false + }, + // 生命周期函数--页面加载中 + onLoad() { + + }, + // 生命周期函数--页面加载中 + onShow() { + this.logs() + }, + // 账户记录 + logs(){ + my.showLoading() + api.request({ + url : "account", + header : { + "Authorization": app.globalData.token + } + }).then(res=>{ + this.setData({ + account: res.data.account, + logs : res.data.data, + page : res.data.page + }) + my.hideLoading() + }) + }, + // 分页 + onReachBottom(){ + let atPage = this.data.page, + pageNub = this.data.page.current + + this.setData({ + isLogin: true + }) + + if(atPage.has_more){ + pageNub++ + api.request({ + url : "account", + header : { + "Authorization": app.globalData.token + }, + data : { + page: pageNub + } + }).then(res=>{ + this.setData({ + account: res.data.account, + logs : res.data.data, + page : res.data.page + }) + my.hideLoading() + }) + } + } +}); diff --git a/pages/wallet/wallet.json b/pages/wallet/wallet.json new file mode 100755 index 0000000..b3c558b --- /dev/null +++ b/pages/wallet/wallet.json @@ -0,0 +1,4 @@ +{ + "defaultTitle" : "我的账户", + "titleBarColor": "#ff6600" +} \ No newline at end of file diff --git a/pages/wallet_extract/wallet_extract.acss b/pages/wallet_extract/wallet_extract.acss new file mode 100755 index 0000000..01c7f74 --- /dev/null +++ b/pages/wallet_extract/wallet_extract.acss @@ -0,0 +1,55 @@ + +page{ + background: #fafafa; +} + +.form{ + background: white; + display: block; +} + +.form-inputs{ + padding: 0 30rpx 0 230rpx; + position: relative; +} + +.form-inputs::before{ + content: " "; + position: absolute; + left: 30rpx; + bottom: 0; + right: 0; + background: #ddd; +} + +.form-title{ + position: absolute; + left: 30rpx; + top: 0; + width: 180rpx; + line-height: 90rpx; + font-size: 30rpx; +} + +.form-input{ + height: 90rpx; + line-height: 90rpx; + font-size: 30rpx; + width: 100%; +} + +.form-btn{ + padding: 30rpx; +} + +/* 支付宝信息 */ +.alipay{ + text-align: center; + line-height: 90rpx; + margin: 0 30rpx; + color: #ff6600; + border:solid 2rpx #ff6600; + box-sizing: border-box; + font-weight: bold; + font-size: 32rpx; +} diff --git a/pages/wallet_extract/wallet_extract.axml b/pages/wallet_extract/wallet_extract.axml new file mode 100755 index 0000000..c4b6b87 --- /dev/null +++ b/pages/wallet_extract/wallet_extract.axml @@ -0,0 +1,21 @@ + + +
+ + 提现金额 + + + + 支付宝账号 + + + + 支付宝户名 + + + + + + {{!isVal ? '使用上次提提现的支付宝信息': '使用新的支付宝信息'}} +
+ \ No newline at end of file diff --git a/pages/wallet_extract/wallet_extract.js b/pages/wallet_extract/wallet_extract.js new file mode 100755 index 0000000..f30d902 --- /dev/null +++ b/pages/wallet_extract/wallet_extract.js @@ -0,0 +1,80 @@ + +const api = require("../../api/api") +const app = getApp() + + +Page({ + data: { + alNmae: "", + alPaye: "", + isVal : false + }, + onLoad() { + + }, + extract(e){ + my.showLoading() + api.request({ + url : "withdrawal", + header : { + "Authorization": app.globalData.token + }, + method : "POST", + data : { + price : e.detail.value.price, + name : e.detail.value.name, + mobile: e.detail.value.mobile + } + }).then(res=>{ + my.alert({ + title : '提示', + content : res.data, + success : res => { + my.navigateBack(); + } + }); + my.hideLoading(); + }).catch(err=>{ + my.showToast({ + type : "none", + content: err.data.message + }) + my.hideLoading(); + }) + }, + + /** + * 读取上一次支付宝信息 + */ + aliPayInfo(){ + if(!this.data.isVal){ + this.setData({ + isVal: true + }) + my.showLoading() + api.request({ + url : "withdrawal/info", + header : { + "Authorization": app.globalData.token + }, + method : "POST" + }).then(res=>{ + this.setData({ + alPaye: res.data.mobile, + alNmae: res.data.name + }) + my.hideLoading(); + }).catch(err=>{ + my.showToast({ + type : "none", + content: err.data.message + }) + my.hideLoading(); + }) + }else{ + this.setData({ + isVal: false + }) + } + } +}); diff --git a/pages/wallet_extract/wallet_extract.json b/pages/wallet_extract/wallet_extract.json new file mode 100755 index 0000000..400e7a5 --- /dev/null +++ b/pages/wallet_extract/wallet_extract.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "申请提现" +} \ No newline at end of file diff --git a/pages/welcome/welcome.acss b/pages/welcome/welcome.acss new file mode 100755 index 0000000..a14e419 --- /dev/null +++ b/pages/welcome/welcome.acss @@ -0,0 +1,9 @@ + +.pages-null{ + text-align: center; + height: 100vh; + width: 100vw; + background: white; + color: gray; + font-size: 28rpx; +} diff --git a/pages/welcome/welcome.axml b/pages/welcome/welcome.axml new file mode 100755 index 0000000..ba7e723 --- /dev/null +++ b/pages/welcome/welcome.axml @@ -0,0 +1 @@ +加载中... \ No newline at end of file diff --git a/pages/welcome/welcome.js b/pages/welcome/welcome.js new file mode 100755 index 0000000..29ee14b --- /dev/null +++ b/pages/welcome/welcome.js @@ -0,0 +1,46 @@ + +const api = require("../../api/api") +const app = getApp() + +Page({ + onLoad() { + let userToken = my.getStorageSync({key:"userToken"}).data || null, + atTime = Math.round(new Date() / 1000) + + if(userToken != null){ + if(atTime < userToken.expires){ + // 获取最新的用户信息 + my.showLoading(); + api.userinfo(userToken.token).then(res=>{ + my.switchTab({ + url: '../index/index' + }); + my.hideLoading(); + }) + }else{ + my.alert({ + title : '温馨提示', + content : '登录已过期,请重新登录', + buttonText: '去登录', + success: () => { + console.log("去登陆") + my.showLoading(); + my.removeStorage({ + key : 'userToken', + success : (res)=> { + my.reLaunch({ + url: "../login/login" + }) + my.hideLoading(); + } + }); + } + }); + } + }else{ + my.reLaunch({ + url: "../login/login" + }) + } + } +}); diff --git a/pages/welcome/welcome.json b/pages/welcome/welcome.json new file mode 100755 index 0000000..9e26dfe --- /dev/null +++ b/pages/welcome/welcome.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/pages/welfare/welfare.acss b/pages/welfare/welfare.acss new file mode 100755 index 0000000..2bd1df1 --- /dev/null +++ b/pages/welfare/welfare.acss @@ -0,0 +1,125 @@ + +page{ + background: #fafafa; +} + +/* 可办理次数 */ +.welfare-header{ + padding: 100rpx 30rpx; + text-align: center; + background: white; +} + +.welfare-header-title{ + color: gray; +} + +.welfare-header-title text{ + color: #ff6600; + font-weight: bold; + padding: 0 10rpx; +} + +.welfare-header-number{ + font-size: 50rpx; + font-weight: bold; + color: #ff6600; + padding: 20rpx 0; +} + +/* 办理优惠信息 */ +.welfare-title{ + padding: 20rpx 30rpx; + color: gray; +} + +/* 优惠办理表单 */ + +.form-block{ + background: white; +} + +.order-item{ + position: relative; + padding: 0 30rpx 0 200rpx; + height: 85rpx; + line-height: 85rpx; + font-size: 30rpx; +} + +.order-item::after{ + content: " "; + background: #ddd; + position: absolute; + left: 30rpx; + height: 1rpx; + right: 0; + bottom: 0; + z-index: 1; +} + +.order-item:last-child::after{ + display: none; +} + +.order-item-label{ + position: absolute; + left: 0; + top: 0; + line-height: 85rpx; + padding: 0 30rpx; + width: 200rpx; + box-sizing: border-box; + text-align: left; +} + +.order-item-input{ + background: white; + display: block; + border: none; + padding: 0; + height: 85rpx; + font-size: 30rpx; +} + +.order-item-picker{ + width: 100%; +} + +.order-item-picker-text{ + padding-right: 85rpx; + position: relative; +} + +.order-item-picker-icon{ + width: 32rpx; + position: absolute; + right: 0; + top: 26rpx; +} + +.order-item-code{ + padding-right: 260rpx; +} + +.order-item-code-btn{ + position: absolute; + right: 30rpx; + top: 0; + width: 200rpx; + height: 85rpx; + line-height: 85rpx; + border: none; + background: transparent; + color: #ff6600; + font-size: 30rpx; +} + +.order-item-code-btn-hover{ + color: #da5700; + background: transparent; +} + +.order-btn{ + padding: 30rpx; +} diff --git a/pages/welfare/welfare.axml b/pages/welfare/welfare.axml new file mode 100755 index 0000000..9a330f0 --- /dev/null +++ b/pages/welfare/welfare.axml @@ -0,0 +1,51 @@ + + + 今日可办理(次) + {{perferentialConfig.business_num - perferentialConfig.business_use_num || 0}} + 今日已办理{{perferentialConfig.business_use_num || 0}} + + +办理优惠 + +
+ + + + + + {{comboTypeText || "请选择套餐类型"}} + + + + + + + + + {{comboNmae[comboNmaeValue].name}} + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/pages/welfare/welfare.js b/pages/welfare/welfare.js new file mode 100755 index 0000000..d198b06 --- /dev/null +++ b/pages/welfare/welfare.js @@ -0,0 +1,169 @@ + +const api = require("../../api/api"), + app = getApp() + +var outTime + +Page({ + data: { + perferentialConfig : {}, + perferentialType : {}, + comboType : [], + comboTypeValue : "", + comboTypeText : "", + comboNmae : [], + comboNmaeValue : 0, + tle : "", + codeBtnText : "获取验证码", + codeBtnStat : false + }, + // 生命周期函数 -- 页面加载 + onLoad() { + + }, + // 生命周期函数 -- 页面显示 + onShow(){ + this.preferential() + }, + // 获取优惠配置信息 + preferential(){ + api.request({ + url : "preferential/user", + header: { + "Authorization": app.globalData.token + }, + method: "POST" + }).then(res=>{ + console.log(res) + let combo_type = [] + for(let i in res.data.perferential_type){ + combo_type.push(i) + } + + this.setData({ + perferentialConfig: res.data.perferential_config, + perferentialType : res.data.perferential_type, + comboType : combo_type + }) + }) + }, + // 选择套餐类型 + comboTypeChange(e){ + let comboType = this.data.comboType, + value = e.detail.value, + perferentialType = this.data.perferentialType, + comboTypeName = comboType[value] + + this.setData({ + comboTypeValue : value, + comboTypeText : comboTypeName, + comboNmae : perferentialType[comboTypeName], + comboNmaeValue : 0 + }) + }, + // 选择套餐名称 + comboNmaeChange(e){ + this.setData({ + comboNmaeValue: e.detail.value + }) + }, + // 存储手机号码 + telInput(e){ + this.setData({ + tle: e.detail.value + }) + }, + // 获取短信验证码 + getCode(){ + setTimeout(() => { + if(this.data.tle != ''){ + my.showLoading(); + api.request({ + url : "sms", + method: "POST", + data : { + mobile : this.data.tle, + channel : "DEFAULT" + } + }).then(res=>{ + // 获取倒计时 + this.setData({ + codeBtnStat: true, + codeBtnText: "重新获取60s" + }) + + let outTimeNumber = 60 + outTime = setInterval(()=>{ + if(outTimeNumber >= 1){ + outTimeNumber-- + this.setData({ + codeBtnText: "重新获取" + outTimeNumber + 's' + }) + }else{ + this.setData({ + codeBtnStat: false, + codeBtnText: "获取验证码" + }) + clearInterval(outTime) + } + },1000) + // 提示信息 + my.showToast({ + content: res.data + }) + my.hideLoading(); + }).catch(err=>{ + my.showToast({ + content: err.data.message + }) + my.hideLoading(); + }) + }else{ + my.showToast({ + content: "手机号码不能为空" + }); + } + }, 100) + }, + // 提交表单 + welfareForm(e){ + if(this.data.comboTypeText != ''){ + my.showLoading() + // api + api.request({ + url : "preferential/audit", + method : "POST", + header: { + "Authorization": app.globalData.token + }, + data : { + perferential_id : this.data.comboNmae[this.data.comboNmaeValue].id, + mobile : e.detail.value.tel, + code : e.detail.value.code, + phone : e.detail.value.phone, + description : e.detail.value.description, + channel : "DEFAULT" + } + }).then(res=>{ + my.navigateTo({ + url: '../payCode/payCode?orderid=' + res.data + '&paytype=icePay' + }); + my.hideLoading() + }).catch(err=>{ + my.showToast({ + content: err.data.message + }) + my.hideLoading() + }) + }else{ + my.showToast({ + content: "请选择套餐类型" + }) + } + }, + + // 退出页面 + onUnload(){ + clearInterval(outTime) + } +}) diff --git a/pages/welfare/welfare.json b/pages/welfare/welfare.json new file mode 100755 index 0000000..95291e6 --- /dev/null +++ b/pages/welfare/welfare.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "办理冰激凌" +} \ No newline at end of file diff --git a/pages/welfare_deta/welfare_deta.acss b/pages/welfare_deta/welfare_deta.acss new file mode 100755 index 0000000..86baaa1 --- /dev/null +++ b/pages/welfare_deta/welfare_deta.acss @@ -0,0 +1,96 @@ + +.deta-block{ + border-top: solid 20rpx #fafafa; + padding: 30rpx; +} + +.deta-no{ + position: relative; + padding-right: 260rpx; + height: 50rpx; + line-height: 50rpx; + padding-bottom: 20rpx; + border-bottom: solid 1rpx #fafafa; + color: gray; +} + +.deta-status{ + position: absolute; + top: 0; + right: 0; + width: 230rpx; + text-align: right; + height: 50rpx; + line-height: 50rpx; + color: #ff6600; + font-weight: bold; +} + +.deta-info{ + padding-top: 20rpx; +} + +.deta-info-name{ + font-weight: bold; + height: 50rpx; + line-height: 50rpx; + font-size: 30rpx; + padding-bottom: 20rpx; +} + +.deta-info-type{ + background: #ff6600; + color: white; + padding: 0 15rpx; + border-radius: 4rpx; + margin-right: 15rpx; + font-size: 28rpx; +} + +.deta-info-text{ + line-height: 50rpx; + color: gray; +} + +.deta-title{ + font-weight: bold; + font-size: 30rpx; + padding-bottom: 30rpx; + border-bottom: solid 1rpx #fafafa; +} + +.deta-title image{ + width: 32rpx; + vertical-align: middle; + margin-right: 10rpx; + margin-bottom: 4rpx; +} + +.deta-flex{ + padding-top: 20rpx; + display: flex; + margin: 0 -8rpx; +} + +.deta-flex-item{ + text-align: center; + width: 33.33%; + padding: 0 8rpx; +} + +.deta-flex-item, +.deta-flex-50{ + width: 50%; +} + +.deta-flex-item-title{ + color: gray; + font-size: 26rpx; + padding-top: 5rpx; +} + +.deta-flex-item-text{ + font-weight: bold; + font-size: 30rpx; + line-height: 60rpx; +} diff --git a/pages/welfare_deta/welfare_deta.axml b/pages/welfare_deta/welfare_deta.axml new file mode 100755 index 0000000..ed698ed --- /dev/null +++ b/pages/welfare_deta/welfare_deta.axml @@ -0,0 +1,71 @@ + + + + {{deta.no || '-'}} + {{deta.status_text || '-'}} + + + + {{deta.type}} + {{deta.name}} + + 提交时间:{{deta.created_at || '-'}} + 用户手机:{{deta.mobile || '-'}} + 办理佣金:{{deta.bonus || '-'}} + 结算状态:{{deta.settle_status_text || '-'}} + 结算时间:{{deta.actual_at || '-'}} + + + + + + 分期购物券 + + + {{deta.installments.installment_price || '0.00'}} + 总金额 + + + {{deta.installments.installment_phase || '0'}} + 分期数 + + + {{deta.installments.current || '0'}} + 已发放 + + + + + + + 话费充值券 + + + {{deta.phones.phone || '0.00'}} + 金额 + + + {{deta.phones.status_text || '-'}} + 状态 + + + + + + + 直接消费券 + + + {{deta.straights.straight || '0.00'}} + 总金额 + + + {{deta.straights.straight_max || '0'}} + 发券数 + + + {{deta.straights.straight_success || '0' }}/{{deta.straights.straight_error || '0' }} + 成功/失败 + + + diff --git a/pages/welfare_deta/welfare_deta.js b/pages/welfare_deta/welfare_deta.js new file mode 100755 index 0000000..d4b4f83 --- /dev/null +++ b/pages/welfare_deta/welfare_deta.js @@ -0,0 +1,32 @@ + +const api = require("../../api/api"), + app = getApp() + +Page({ + data: { + id : '', + deta : {} + }, + onLoad(e) { + my.showLoading(); + this.setData({ + id: e.id + }) + this.getDeta() + }, + // 获取优惠详情 + getDeta(){ + api.request({ + url : "preferential/" + this.data.id + "/info", + header: { + "Authorization": app.globalData.token + }, + method: "POST" + }).then(res=>{ + this.setData({ + deta: res.data + }) + my.hideLoading() + }) + } +}); diff --git a/pages/welfare_deta/welfare_deta.json b/pages/welfare_deta/welfare_deta.json new file mode 100755 index 0000000..9c907da --- /dev/null +++ b/pages/welfare_deta/welfare_deta.json @@ -0,0 +1,3 @@ +{ + "defaultTitle" : "优惠详情" +} \ No newline at end of file diff --git a/pages/welfare_list/welfare_list.acss b/pages/welfare_list/welfare_list.acss new file mode 100755 index 0000000..4365d2d --- /dev/null +++ b/pages/welfare_list/welfare_list.acss @@ -0,0 +1,321 @@ + +.welfare-header{ + padding: 30rpx; + background: #ff6600; + color: white; +} + +.welfare-flex{ + display: flex; + flex-wrap: wrap; + margin: 0 -10rpx; +} + +.welfare-item{ + width: 50%; + padding: 0 10rpx; + box-sizing: border-box; +} + +.welfare-item-text{ + color: #ffbb99; + padding-bottom: 10rpx; +} + +.welfare-item-icon{ + background: white; + border-radius: 50%; + width: 38rpx; + height: 38rpx; + vertical-align: middle; + margin-right: 10rpx; +} + +.welfare-item-number{ + font-weight: bold; + font-size: 40rpx; +} + +.welfare-stat{ + display: flex; + background: white; + color: black; + margin-top: 30rpx; + border-radius: 6rpx; + padding: 20rpx; +} + +.welfare-stat-item{ + width: 27%; + padding: 0 10rpx; + border-right: solid 2rpx #c2c2c2; + text-align: center; +} + +.welfare-stat-item:first-child{ + width: 19%; + text-align: left; +} + +.welfare-stat-item:last-child, +.welfare-stat-item:first-child{ + border-right: none; +} + +.welfare-stat-text{ + color: white; + font-size: 24rpx; +} + +.welfare-stat-blue, +.welfare-stat-orange, +.welfare-stat-gray{ + width: 130rpx; + line-height: 40rpx; + border-radius: 20rpx; + display: inline-block; +} + +.welfare-stat-blue{ + background: #318fef; +} + +.welfare-stat-orange{ + background: #ec712e; +} + +.welfare-stat-gray{ + background: #b5b5b5; +} + +.welfare-stat-year{ + line-height: 50rpx; +} + +.welfare-stat-month{ + line-height: 40rpx; + font-size: 32rpx; + font-weight: bold; +} + +.welfare-stat-month image{ + width: 15rpx; + margin-left: 5rpx; + vertical-align: middle; +} + +.welfare-stat-year{ + padding-top: 5rpx; + line-height: 40rpx; +} + +.welfare-stat-number{ + font-weight: bold; + font-size: 36rpx; + line-height: 50rpx; + padding-bottom: 6rpx; +} + +/* 搜索框 */ +.welfare-search-form{ + background: #f08d58; + height: 70rpx; + border-radius: 40rpx; + margin-top: 30rpx; + display: block; + position: relative; +} + +.welfare-search-input{ + width: 100%; + padding: 0 100rpx; + margin: 0; + height: 70rpx; + line-height: 70rpx; + background: transparent; + font-size: 30rpx; + box-sizing: border-box; + color: white; +} + +.welfare-search-class{ + width: 36rpx; + position: absolute; + top: 17rpx; + left: 25rpx; +} + +.welfare-search-btn{ + position: absolute; + top: 0; + right: 0; + width: 80rpx; + text-align: center; + padding: 0; + margin: 0; + height: 70rpx; + border-radius: 0 40rpx 40rpx 0; + background: transparent; + border: none; +} + +.welfare-search-btn image{ + width: 36rpx; + vertical-align: top; + margin-top: 14rpx; + margin-right: 10rpx; +} + +.welfare-search-btn-hover{ + background: #cc520f; +} + +/* 筛选 */ +.welfare-search-flex{ + display: flex; + border:solid 2rpx white; + border-radius: 6rpx; + margin-top: 30rpx; +} + +.welfare-search-item{ + flex: 1; + text-align: center; + border-right: solid 2rpx white; + line-height: 60rpx; + font-size: 30rpx; +} + +.welfare-search-item:last-child{ + border-right: none; +} + +.welfare-search-item.show{ + background: white; + color: #f08d58; +} + +/* 列表 */ + +.welfare-list, +.welfare-list-null{ + padding-bottom: 175rpx; +} + +.welfare-list-item{ + border-top: solid 20rpx #fafafa; + padding: 30rpx; +} + +.welfare-list-name{ + position: relative; + font-size: 30rpx; + font-weight: bold; + line-height: 50rpx; + padding-right: 230rpx; + padding-bottom: 20rpx; + border-bottom: solid 1rpx #ddd; +} + +.welfare-list-stat{ + position: absolute; + right: 0; + top: 0; + color: #ff6600; + width: 200rpx; + text-align: right; +} + +.welfare-list-tag{ + color: white; + background: #ff6600; + margin-right: 10rpx; + border-radius: 6rpx; + padding: 0 15rpx; + font-size: 28rpx; + display: inline-block; +} + +.welfare-list-tag.blue{ + background: #318fef; +} + +.welfare-list-info{ + padding-top: 20rpx; + display: flex; + flex-wrap: wrap; + margin-right: -20rpx; +} + +.welfare-list-info-item{ + width: 33.33%; + color: gray; + line-height: 50rpx; + font-size: 28rpx; + padding-right: 20rpx; + box-sizing: border-box; +} + +.welfare-list-info-item image{ + width: 32rpx; + vertical-align: middle; + margin-right: 8rpx; +} + +.welfare-list-btns{ + margin-top: 20rpx; + padding-top: 20rpx; + border-top: solid 1rpx #ddd; + text-align: right; +} + +.welfare-list-btn{ + display: inline-block; + background: #ff6600; + color: white; + line-height: 70rpx; + height: 70rpx; + margin-left: 30rpx; + padding: 0 30rpx; + box-sizing: border-box; +} + +.welfare-list-btn.remove{ + border:solid 1rpx gray; + color: gray; + background: transparent; +} + +/* footer */ +.welfare-footer{ + position: fixed; + bottom: 0; + left: 0; + background: white; + padding: 30rpx; + width: 100%; + box-sizing: border-box; +} + +.welfare-footer-nav{ + text-align: center; +} + +/* 空提示 */ +.welfare-list-null{ + text-align: center; + color: gray; + padding: 200rpx 0; +} + +.welfare-list-null-title{ + font-weight: bold; + font-size: 30rpx; + color: black; + padding-bottom: 10rpx; +} + +.welfare-list-null image{ + width: 88rpx; + margin-bottom: 20rpx; +} diff --git a/pages/welfare_list/welfare_list.axml b/pages/welfare_list/welfare_list.axml new file mode 100755 index 0000000..fa0a46b --- /dev/null +++ b/pages/welfare_list/welfare_list.axml @@ -0,0 +1,113 @@ + + + + + + + + + 办理总数(笔) + + {{num || '0'}} + + + + + 当前收益(元) + + {{settleAmount || '0.00'}} + + + + + {{year}} + {{month}}月 + + + {{g4 || '0'}} + + 4G套餐 + + + + {{g5 || '0'}} + + 5G套餐 + + + + {{settleMonth || '0.00'}} + + 收益 + + + + +
+ + + + + +
+ + + 本月 + 今日 + 昨日 + +
+ + + + + {{item.type}}{{item.name}} + {{item.status_text}} + + + {{item.created_at || '-'}} + {{item.cardnumber || '0'}} + {{item.cardprice || '0.00'}} + {{item.mobile || '-'}} + {{item.phone}} + + + + + {{item.silver == 0 ? '-': item.silver }} + + + + 取消订单 + 立即支付 + + + 失败原因 + + + + + + + + 当前暂无办理记录 + 什么都还没有,赶快去添加吧 + + + + 办理冰激凌 + +
+ + diff --git a/pages/welfare_list/welfare_list.js b/pages/welfare_list/welfare_list.js new file mode 100755 index 0000000..f031eb5 --- /dev/null +++ b/pages/welfare_list/welfare_list.js @@ -0,0 +1,263 @@ + +const api = require("../../api/api"), + app = getApp() + +Page({ + data: { + listArr : [], + identity_id : "", + permissions : false, + year : "", + month : "", + searchIndex : 0, + typeArr : [ + {id: "" , name:"全部"}, + {id: 0 , name:"待支付"}, + {id: 1 , name:"待受理"}, + {id: 2 , name:"已受理"}, + {id: 3 , name:"已发券"}, + {id: 4 , name:"办理失败"} + ], + typeIndex : 0, + num : "", + settleAmount: "", + settleMonth : "", + g4 : "", + g5 : "", + endDate : "", + isNowMonth : false, + page : 1, + meta : {}, + isLogin : false + }, + + // 页面加载 + onLoad() { + const date = new Date() + + let year = date.getFullYear(), + month = date.getMonth() + 1 + + if(month < 10){ + month = '0' + month + } + + this.setData({ + identity_id: app.globalData.userInfo.identity_id, + permissions: app.globalData.userInfo.perferential, + year : year, + month : month, + endDate : year + "-" + month + }) + }, + + // 页面显示 + onShow(){ + this.setData({ + listArr: [] + }) + this.welfareList() + my.showLoading(); + my.showNavigationBarLoading(); + }, + + // 列表 + welfareList(tel){ + let url = "preferential/lists", + dateYear = this.data.year + '-' + this.data.month + + if(this.data.searchIndex == 1){ + dateYear = "today" + } else if(this.data.searchIndex == 2){ + dateYear = "yesterday" + } + + api.request({ + url : url, + header: { + "Authorization": app.globalData.token + }, + method: "POST", + data : { + date : dateYear, + mobile : tel || "", + status : this.data.typeArr[this.data.typeIndex].id, + settle : "", + page : this.data.page + } + }).then(res=>{ + let atArr = this.data.listArr, + newArr = [] + + newArr = atArr.concat(res.data) + + this.setData({ + listArr : newArr, + num : res.num, + settleAmount: res.settleAmount, + settleMonth : res.settleMonth, + g4 : res.g4, + g5 : res.g5, + isNowMonth : res.isNowMonth + }) + my.hideLoading(); + my.hideNavigationBarLoading(); + my.stopPullDownRefresh(); + }) + }, + + // 选择日期 + selectTime(){ + my.datePicker({ + currentDate : this.data.year + "-" + this.data.month, + endDate : this.data.endDate, + format : "yyyy-MM", + success : res=>{ + let dateString = String(res.date), + yearString = dateString.substring(0,4), + monthString = dateString.substring(5,7) + + this.setData({ + year : yearString, + month : monthString, + page : 1, + listArr : [] + }) + + this.welfareList() + my.showLoading(); + } + }) + }, + + // 筛选日期 + searchTab(e){ + if(e.target.dataset.index != this.data.searchIndex){ + this.setData({ + searchIndex : e.target.dataset.index, + page : 1, + listArr : [] + }) + + this.welfareList() + my.showLoading(); + } + + if(e.target.dataset.index == 0 && !this.data.isNowMonth){ + const date = new Date() + + let year = date.getFullYear(), + month = date.getMonth() + 1 + + if(month < 10){ + month = '0' + month + } + + this.setData({ + year : year, + month : month + }) + + this.welfareList() + my.showLoading(); + } + }, + + // 类型筛选 + screenClass(e){ + this.setData({ + typeIndex: e.detail.value, + page : 1, + listArr : [] + }) + this.welfareList() + my.showLoading(); + }, + + // 搜索手机号码 + searchForm(e){ + this.setData({ + page : 1, + listArr : [] + }) + + let tel = e.detail.value.searchValue + this.welfareList(tel) + }, + + // 分页 + onReachBottom(){ + let meta = this.data.meta, + atPage = this.data.page + + this.setData({ + isLogin: true + }) + + if(meta.current_page < meta.last_page){ + this.setData({ + page: atPage + 1 + }) + this.welfareList() + my.showLoading(); + } + }, + + //提示信息 + errToast(e){ + my.alert({ + title : "失败原因", + content : e.currentTarget.dataset.remark + }) + }, + + //取消订单 + reomveOrder(e){ + if(e.currentTarget.dataset.id){ + let url = "preferential/" + e.currentTarget.dataset.id + "/cancel", + text = "确认取消订单吗?" + + my.confirm({ + title : "提示", + content : text, + success : res=>{ + if(res.confirm){ + my.showLoading() + api.request({ + url : url, + header: { + "Authorization": app.globalData.token + }, + }).then(res=>{ + my.showToast({ + type : "none", + content : res.data + }); + my.hideLoading() + this.setData({ + listArr : [] + }) + this.welfareList() + my.showLoading(); + }) + } + } + }) + + + }else{ + my.showToast({ + type : "none", + content : "订单id不存在" + }); + } + }, + + // 下拉刷新 + onPullDownRefresh(){ + this.setData({ + listArr : [] + }) + this.welfareList() + } +}); diff --git a/pages/welfare_list/welfare_list.json b/pages/welfare_list/welfare_list.json new file mode 100755 index 0000000..2d1a61f --- /dev/null +++ b/pages/welfare_list/welfare_list.json @@ -0,0 +1,5 @@ +{ + "defaultTitle" : "冰激凌记录", + "titleBarColor": "#ff6600", + "pullRefresh": true +} \ No newline at end of file diff --git a/snapshot.png b/snapshot.png new file mode 100755 index 0000000000000000000000000000000000000000..3a7843617c8adbafe7b8937a39f8bbb170564627 GIT binary patch literal 15927 zcmeHOeN>a@6;EQ+08_$;#tJ1-P+|ph-02D}ABhx(2utEeMT-zt=d!NV02UIE{fWl34}PoL_lpy6l!jmbnCBgm;7=Pa zzE|=vIrNqI!XDSKBBA4pi=W3E_$Ty7hM%^#zdkKLrp(sVL=FmKi#~HqeiiHJT3A?6 z#@W>jI$MAz(S#^828+X!19&+F1&clBWJ{Jd?R)mAsleW$A%^Sgh#{lo&<@G!DtI{! zA8lWpntEa3(xLFvVVjA`u=MIS^_T{wXnEe3?MuuOn9@|lHZp%x_g>EtS1`Wx+Tu5% zzFjLPx@ANkiP+HmH@@y0tX;)EK6(vIERI$NEalAsTse;JP~4(yyYBl{69#rx(7s zg4jXGT->yN2Q0cam>KN1rUMR-@6#eHQ6l)94dtQhN+xK6kd-7nwlt5Hn~10YE4u+G zyJ9`?W)YtOZtMvV5VHvE0D$tKH$Y<~p@7tbWKWQ1JtPE>3WNj#QUOQ>C%ap98RK`Jv!vb9zizB$t z%8oTq@rpJ!1px|JT<~yeUa4bOjf*AqnX=E zcm147UAgRIFPuJ|JBpeZ$Iz=NJd4-+tA-fj9s>WnU z(-4ufuwvtS>%Wj)!9{>Y{%?Im)Kcb4Y343F`1u&D_r|8?W(h~>C@P$P_0asXcbtu} zJE&*V)6>j|ibO;c5qY_>U^RUT?M< zT&-}_Y93n_&$XyF6N|rIUTh;yNIyFQ2lP;ct};t8v2khI3x7|hnly$%iyEl>W%Z5c zwrUoC!JwBLorWh6gY|oqh>os(CgUCt7_L_hv0Ue@V`b`00heX7VpsyJHO~f>EW1JH zJPa6Z=R-Sv(U`$)y!lsS7oh>hRJyJ~DzLezpLCACQG5}D74IWeRm#$j`$d1Qayd3z zw!ZtJgX#Q7p(6lA)1CCj=`&>8S>-5ESdNX8Iy-&~lf1;4i=OypTGE{i8kuVxoyQjJ z$#FRynS2&&aRS3NKArAweHKR3ec%S9J=2z5G+q5hE#$f^asG&yW5)^{uPryP`nWFK zpB}l!N%UB$LN!UGo5sqB#tFOaE@eA!u3tV_VC%g~X+Pw)5J^XjHt+o2aTAME)Tk_@ zuJcy2nsT#&0r6zM=0;YvN~6)3XXM66B7eR&&mdN^=bmmKi`q-m5n!aFn3qyukZw^` zQsXm2s9Fp48{1e{nVRLY^;g_7YCGgL&Xj^nuH0PHM4n})Lm#+;ySjILYDOn0204u5 zItiBUirm3bb{MH6Mfv&sai(CrVvar6X-^Fkh~3%wWZJj zv8CqRf{*qC3r->yenj8`8`TTX4JvSG%}Gb*}KbA-<^Ud@6Es*z#MM3 zTlbFaGK|4sh;lw55C~D7uXnqjDilJdpzwVuY%3A;p$;ZzQO?#I@+c>h;N>P`GT4D- zZwpFb_Z;z2n7V`1&4PsiAE+*dI}-t8^ovWBWzq_l(sjd2yH6Z|>0EY@h!Jmnp65Nm zvY8$xOCtybj`N3Y)MU2{@As*RE9Mn;nAx^yci`;sj^*3B+(6wCD_DMI6zKQep*oki z>KLQK&NVpQM`Qm^!1s*=+24etHRr78I9ck<&(CjtCg*Zwkc*YI#I5EmkGYQ)st(i0 zmG{mdKRWr9-z>W-;wE`EzgNSd;oj^_z3dD8Y2by z5%2@Rp8$UZ{CTxi0QeE8pFsTx>Ss?o4)7zuj{rXc{0Q(Pz>nNBeZUU^KLq^nf5{J3 z`>Kf71iw)ugIlbaGOHVa2i3$%YJ-=1uC+?uo}JPC^E-BBNG4Rocg!=?c@Aek^w;YD zkb5g