jobsys-newbie
Version:
Enhanced component based on ant-design-vue
10,152 lines • 507 kB
JavaScript
import { A as e, C as t, D as n, E as r, F as i, I as a, L as o, M as s, T as c, _ as l, a as u, b as d, c as f, d as p, g as m, i as h, m as g, n as _, p as v, s as y, t as b, w as x, y as S } from "./hooks-B6nZTSxZ.js";
import { Fragment as C, Transition as w, TransitionGroup as T, computed as E, createElementBlock as ee, createTextVNode as D, createVNode as O, customRef as k, defineComponent as A, effectScope as te, getCurrentInstance as ne, getCurrentScope as re, h as j, inject as ie, isRef as ae, isVNode as oe, mergeProps as M, nextTick as se, onBeforeUnmount as ce, onMounted as le, onScopeDispose as ue, onUnmounted as de, openBlock as fe, provide as pe, reactive as me, readonly as he, ref as N, resolveComponent as ge, shallowReadonly as _e, shallowRef as P, toRaw as ve, toRef as ye, toRefs as be, toValue as F, unref as xe, watch as I, watchEffect as Se, withModifiers as Ce } from "vue";
import { Affix as we, Alert as Te, Badge as Ee, Button as L, Card as De, Cascader as Oe, CheckableTag as ke, Checkbox as Ae, CheckboxGroup as je, Col as Me, DatePicker as Ne, Divider as Pe, Drawer as Fe, Dropdown as Ie, Empty as Le, Flex as Re, Form as ze, FormItem as Be, FormItemRest as Ve, Image as He, ImagePreviewGroup as Ue, Input as We, InputNumber as Ge, InputPassword as Ke, List as qe, Menu as Je, MenuItem as Ye, Modal as Xe, Popconfirm as Ze, Radio as Qe, RadioGroup as $e, RangePicker as et, Rate as tt, Row as nt, Select as rt, Skeleton as it, Space as at, Spin as ot, Switch as st, Table as ct, TableSummaryCell as lt, TableSummaryRow as ut, Tag as dt, Textarea as ft, TimePicker as pt, TimeRangePicker as mt, Tooltip as ht, Transfer as gt, TreeSelect as _t, TypographyText as vt, Upload as yt, message as R } from "ant-design-vue";
import bt from "dayjs";
import { cloneDeep as xt, concat as St, debounce as Ct, every as wt, find as Tt, findIndex as Et, isArray as Dt, isBoolean as Ot, isEqual as kt, isFunction as z, isNull as At, isNumber as jt, isObject as Mt, isString as Nt, isUndefined as B, map as Pt, orderBy as Ft, pick as It, random as Lt, remove as Rt, sum as zt, uniq as Bt } from "lodash-es";
import { ArrowsAltOutlined as Vt, CalculatorOutlined as Ht, CalendarOutlined as Ut, CheckCircleOutlined as Wt, CheckSquareOutlined as Gt, ClearOutlined as Kt, ClockCircleOutlined as qt, CloseCircleOutlined as Jt, CloseOutlined as Yt, CloudUploadOutlined as Xt, CompressOutlined as Zt, CopyOutlined as Qt, DeleteOutlined as $t, DownOutlined as en, DownSquareOutlined as tn, DragOutlined as nn, EditOutlined as rn, EnvironmentOutlined as an, ExpandOutlined as on, FallOutlined as sn, FieldBinaryOutlined as cn, FileImageOutlined as ln, FilePdfOutlined as un, FormOutlined as dn, FunctionOutlined as fn, HistoryOutlined as pn, InfoCircleOutlined as mn, MailOutlined as hn, MenuOutlined as gn, MobileOutlined as _n, NumberOutlined as vn, OrderedListOutlined as yn, PictureOutlined as bn, PlusOutlined as xn, RightOutlined as Sn, RiseOutlined as Cn, SaveOutlined as wn, SearchOutlined as Tn, ShrinkOutlined as En, SmileFilled as Dn, SmileTwoTone as On, StarOutlined as kn, SwitcherOutlined as An, SyncOutlined as jn, UserOutlined as Mn } from "@ant-design/icons-vue";
//#region components/address/addressData.json
var Nn = /*#__PURE__*/ JSON.parse("[{\"code\":\"440000\",\"name\":\"广东省\",\"children\":[{\"code\":\"440100\",\"name\":\"广州市\",\"children\":[{\"code\":\"440103\",\"name\":\"荔湾区\"},{\"code\":\"440104\",\"name\":\"越秀区\"},{\"code\":\"440105\",\"name\":\"海珠区\"},{\"code\":\"440106\",\"name\":\"天河区\"},{\"code\":\"440111\",\"name\":\"白云区\"},{\"code\":\"440112\",\"name\":\"黄埔区\"},{\"code\":\"440113\",\"name\":\"番禺区\"},{\"code\":\"440114\",\"name\":\"花都区\"},{\"code\":\"440115\",\"name\":\"南沙区\"},{\"code\":\"440117\",\"name\":\"从化区\"},{\"code\":\"440118\",\"name\":\"增城区\"}]},{\"code\":\"440200\",\"name\":\"韶关市\",\"children\":[{\"code\":\"440203\",\"name\":\"武江区\"},{\"code\":\"440204\",\"name\":\"浈江区\"},{\"code\":\"440205\",\"name\":\"曲江区\"},{\"code\":\"440222\",\"name\":\"始兴县\"},{\"code\":\"440224\",\"name\":\"仁化县\"},{\"code\":\"440229\",\"name\":\"翁源县\"},{\"code\":\"440232\",\"name\":\"乳源瑶族自治县\"},{\"code\":\"440233\",\"name\":\"新丰县\"},{\"code\":\"440281\",\"name\":\"乐昌市\"},{\"code\":\"440282\",\"name\":\"南雄市\"}]},{\"code\":\"440300\",\"name\":\"深圳市\",\"children\":[{\"code\":\"440303\",\"name\":\"罗湖区\"},{\"code\":\"440304\",\"name\":\"福田区\"},{\"code\":\"440305\",\"name\":\"南山区\"},{\"code\":\"440306\",\"name\":\"宝安区\"},{\"code\":\"440307\",\"name\":\"龙岗区\"},{\"code\":\"440308\",\"name\":\"盐田区\"},{\"code\":\"440309\",\"name\":\"龙华区\"},{\"code\":\"440310\",\"name\":\"坪山区\"},{\"code\":\"440311\",\"name\":\"光明区\"}]},{\"code\":\"440400\",\"name\":\"珠海市\",\"children\":[{\"code\":\"440402\",\"name\":\"香洲区\"},{\"code\":\"440403\",\"name\":\"斗门区\"},{\"code\":\"440404\",\"name\":\"金湾区\"}]},{\"code\":\"440500\",\"name\":\"汕头市\",\"children\":[{\"code\":\"440507\",\"name\":\"龙湖区\"},{\"code\":\"440511\",\"name\":\"金平区\"},{\"code\":\"440512\",\"name\":\"濠江区\"},{\"code\":\"440513\",\"name\":\"潮阳区\"},{\"code\":\"440514\",\"name\":\"潮南区\"},{\"code\":\"440515\",\"name\":\"澄海区\"},{\"code\":\"440523\",\"name\":\"南澳县\"}]},{\"code\":\"440600\",\"name\":\"佛山市\",\"children\":[{\"code\":\"440604\",\"name\":\"禅城区\"},{\"code\":\"440605\",\"name\":\"南海区\"},{\"code\":\"440606\",\"name\":\"顺德区\"},{\"code\":\"440607\",\"name\":\"三水区\"},{\"code\":\"440608\",\"name\":\"高明区\"}]},{\"code\":\"440700\",\"name\":\"江门市\",\"children\":[{\"code\":\"440703\",\"name\":\"蓬江区\"},{\"code\":\"440704\",\"name\":\"江海区\"},{\"code\":\"440705\",\"name\":\"新会区\"},{\"code\":\"440781\",\"name\":\"台山市\"},{\"code\":\"440783\",\"name\":\"开平市\"},{\"code\":\"440784\",\"name\":\"鹤山市\"},{\"code\":\"440785\",\"name\":\"恩平市\"}]},{\"code\":\"440800\",\"name\":\"湛江市\",\"children\":[{\"code\":\"440802\",\"name\":\"赤坎区\"},{\"code\":\"440803\",\"name\":\"霞山区\"},{\"code\":\"440804\",\"name\":\"坡头区\"},{\"code\":\"440811\",\"name\":\"麻章区\"},{\"code\":\"440823\",\"name\":\"遂溪县\"},{\"code\":\"440825\",\"name\":\"徐闻县\"},{\"code\":\"440881\",\"name\":\"廉江市\"},{\"code\":\"440882\",\"name\":\"雷州市\"},{\"code\":\"440883\",\"name\":\"吴川市\"}]},{\"code\":\"440900\",\"name\":\"茂名市\",\"children\":[{\"code\":\"440902\",\"name\":\"茂南区\"},{\"code\":\"440904\",\"name\":\"电白区\"},{\"code\":\"440981\",\"name\":\"高州市\"},{\"code\":\"440982\",\"name\":\"化州市\"},{\"code\":\"440983\",\"name\":\"信宜市\"}]},{\"code\":\"441200\",\"name\":\"肇庆市\",\"children\":[{\"code\":\"441202\",\"name\":\"端州区\"},{\"code\":\"441203\",\"name\":\"鼎湖区\"},{\"code\":\"441204\",\"name\":\"高要区\"},{\"code\":\"441223\",\"name\":\"广宁县\"},{\"code\":\"441224\",\"name\":\"怀集县\"},{\"code\":\"441225\",\"name\":\"封开县\"},{\"code\":\"441226\",\"name\":\"德庆县\"},{\"code\":\"441284\",\"name\":\"四会市\"}]},{\"code\":\"441300\",\"name\":\"惠州市\",\"children\":[{\"code\":\"441302\",\"name\":\"惠城区\"},{\"code\":\"441303\",\"name\":\"惠阳区\"},{\"code\":\"441322\",\"name\":\"博罗县\"},{\"code\":\"441323\",\"name\":\"惠东县\"},{\"code\":\"441324\",\"name\":\"龙门县\"}]},{\"code\":\"441400\",\"name\":\"梅州市\",\"children\":[{\"code\":\"441402\",\"name\":\"梅江区\"},{\"code\":\"441403\",\"name\":\"梅县区\"},{\"code\":\"441422\",\"name\":\"大埔县\"},{\"code\":\"441423\",\"name\":\"丰顺县\"},{\"code\":\"441424\",\"name\":\"五华县\"},{\"code\":\"441426\",\"name\":\"平远县\"},{\"code\":\"441427\",\"name\":\"蕉岭县\"},{\"code\":\"441481\",\"name\":\"兴宁市\"}]},{\"code\":\"441500\",\"name\":\"汕尾市\",\"children\":[{\"code\":\"441502\",\"name\":\"城区\"},{\"code\":\"441521\",\"name\":\"海丰县\"},{\"code\":\"441523\",\"name\":\"陆河县\"},{\"code\":\"441581\",\"name\":\"陆丰市\"}]},{\"code\":\"441600\",\"name\":\"河源市\",\"children\":[{\"code\":\"441602\",\"name\":\"源城区\"},{\"code\":\"441621\",\"name\":\"紫金县\"},{\"code\":\"441622\",\"name\":\"龙川县\"},{\"code\":\"441623\",\"name\":\"连平县\"},{\"code\":\"441624\",\"name\":\"和平县\"},{\"code\":\"441625\",\"name\":\"东源县\"}]},{\"code\":\"441700\",\"name\":\"阳江市\",\"children\":[{\"code\":\"441702\",\"name\":\"江城区\"},{\"code\":\"441704\",\"name\":\"阳东区\"},{\"code\":\"441721\",\"name\":\"阳西县\"},{\"code\":\"441781\",\"name\":\"阳春市\"}]},{\"code\":\"441800\",\"name\":\"清远市\",\"children\":[{\"code\":\"441802\",\"name\":\"清城区\"},{\"code\":\"441803\",\"name\":\"清新区\"},{\"code\":\"441821\",\"name\":\"佛冈县\"},{\"code\":\"441823\",\"name\":\"阳山县\"},{\"code\":\"441825\",\"name\":\"连山壮族瑶族自治县\"},{\"code\":\"441826\",\"name\":\"连南瑶族自治县\"},{\"code\":\"441881\",\"name\":\"英德市\"},{\"code\":\"441882\",\"name\":\"连州市\"}]},{\"code\":\"441900\",\"name\":\"东莞市\",\"children\":[{\"code\":\"441900003\",\"name\":\"东城街道\"},{\"code\":\"441900004\",\"name\":\"南城街道\"},{\"code\":\"441900005\",\"name\":\"万江街道\"},{\"code\":\"441900006\",\"name\":\"莞城街道\"},{\"code\":\"441900101\",\"name\":\"石碣镇\"},{\"code\":\"441900102\",\"name\":\"石龙镇\"},{\"code\":\"441900103\",\"name\":\"茶山镇\"},{\"code\":\"441900104\",\"name\":\"石排镇\"},{\"code\":\"441900105\",\"name\":\"企石镇\"},{\"code\":\"441900106\",\"name\":\"横沥镇\"},{\"code\":\"441900107\",\"name\":\"桥头镇\"},{\"code\":\"441900108\",\"name\":\"谢岗镇\"},{\"code\":\"441900109\",\"name\":\"东坑镇\"},{\"code\":\"441900110\",\"name\":\"常平镇\"},{\"code\":\"441900111\",\"name\":\"寮步镇\"},{\"code\":\"441900112\",\"name\":\"樟木头镇\"},{\"code\":\"441900113\",\"name\":\"大朗镇\"},{\"code\":\"441900114\",\"name\":\"黄江镇\"},{\"code\":\"441900115\",\"name\":\"清溪镇\"},{\"code\":\"441900116\",\"name\":\"塘厦镇\"},{\"code\":\"441900117\",\"name\":\"凤岗镇\"},{\"code\":\"441900118\",\"name\":\"大岭山镇\"},{\"code\":\"441900119\",\"name\":\"长安镇\"},{\"code\":\"441900121\",\"name\":\"虎门镇\"},{\"code\":\"441900122\",\"name\":\"厚街镇\"},{\"code\":\"441900123\",\"name\":\"沙田镇\"},{\"code\":\"441900124\",\"name\":\"道滘镇\"},{\"code\":\"441900125\",\"name\":\"洪梅镇\"},{\"code\":\"441900126\",\"name\":\"麻涌镇\"},{\"code\":\"441900127\",\"name\":\"望牛墩镇\"},{\"code\":\"441900128\",\"name\":\"中堂镇\"},{\"code\":\"441900129\",\"name\":\"高埗镇\"},{\"code\":\"441900401\",\"name\":\"松山湖\"},{\"code\":\"441900402\",\"name\":\"东莞港\"},{\"code\":\"441900403\",\"name\":\"东莞生态园\"},{\"code\":\"441900404\",\"name\":\"东莞滨海湾新区\"}]},{\"code\":\"442000\",\"name\":\"中山市\",\"children\":[{\"code\":\"442000001\",\"name\":\"石岐街道\"},{\"code\":\"442000002\",\"name\":\"东区街道\"},{\"code\":\"442000003\",\"name\":\"中山港街道\"},{\"code\":\"442000004\",\"name\":\"西区街道\"},{\"code\":\"442000005\",\"name\":\"南区街道\"},{\"code\":\"442000006\",\"name\":\"五桂山街道\"},{\"code\":\"442000007\",\"name\":\"民众街道\"},{\"code\":\"442000008\",\"name\":\"南朗街道\"},{\"code\":\"442000101\",\"name\":\"黄圃镇\"},{\"code\":\"442000103\",\"name\":\"东凤镇\"},{\"code\":\"442000105\",\"name\":\"古镇镇\"},{\"code\":\"442000106\",\"name\":\"沙溪镇\"},{\"code\":\"442000107\",\"name\":\"坦洲镇\"},{\"code\":\"442000108\",\"name\":\"港口镇\"},{\"code\":\"442000109\",\"name\":\"三角镇\"},{\"code\":\"442000110\",\"name\":\"横栏镇\"},{\"code\":\"442000111\",\"name\":\"南头镇\"},{\"code\":\"442000112\",\"name\":\"阜沙镇\"},{\"code\":\"442000114\",\"name\":\"三乡镇\"},{\"code\":\"442000115\",\"name\":\"板芙镇\"},{\"code\":\"442000116\",\"name\":\"大涌镇\"},{\"code\":\"442000117\",\"name\":\"神湾镇\"},{\"code\":\"442000118\",\"name\":\"小榄镇\"}]},{\"code\":\"445100\",\"name\":\"潮州市\",\"children\":[{\"code\":\"445102\",\"name\":\"湘桥区\"},{\"code\":\"445103\",\"name\":\"潮安区\"},{\"code\":\"445122\",\"name\":\"饶平县\"}]},{\"code\":\"445200\",\"name\":\"揭阳市\",\"children\":[{\"code\":\"445202\",\"name\":\"榕城区\"},{\"code\":\"445203\",\"name\":\"揭东区\"},{\"code\":\"445222\",\"name\":\"揭西县\"},{\"code\":\"445224\",\"name\":\"惠来县\"},{\"code\":\"445281\",\"name\":\"普宁市\"}]},{\"code\":\"445300\",\"name\":\"云浮市\",\"children\":[{\"code\":\"445302\",\"name\":\"云城区\"},{\"code\":\"445303\",\"name\":\"云安区\"},{\"code\":\"445321\",\"name\":\"新兴县\"},{\"code\":\"445322\",\"name\":\"郁南县\"},{\"code\":\"445381\",\"name\":\"罗定市\"}]}]},{\"code\":\"110000\",\"name\":\"北京市\",\"children\":[{\"code\":\"110100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"110101\",\"name\":\"东城区\"},{\"code\":\"110102\",\"name\":\"西城区\"},{\"code\":\"110105\",\"name\":\"朝阳区\"},{\"code\":\"110106\",\"name\":\"丰台区\"},{\"code\":\"110107\",\"name\":\"石景山区\"},{\"code\":\"110108\",\"name\":\"海淀区\"},{\"code\":\"110109\",\"name\":\"门头沟区\"},{\"code\":\"110111\",\"name\":\"房山区\"},{\"code\":\"110112\",\"name\":\"通州区\"},{\"code\":\"110113\",\"name\":\"顺义区\"},{\"code\":\"110114\",\"name\":\"昌平区\"},{\"code\":\"110115\",\"name\":\"大兴区\"},{\"code\":\"110116\",\"name\":\"怀柔区\"},{\"code\":\"110117\",\"name\":\"平谷区\"},{\"code\":\"110118\",\"name\":\"密云区\"},{\"code\":\"110119\",\"name\":\"延庆区\"}]}]},{\"code\":\"120000\",\"name\":\"天津市\",\"children\":[{\"code\":\"120100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"120101\",\"name\":\"和平区\"},{\"code\":\"120102\",\"name\":\"河东区\"},{\"code\":\"120103\",\"name\":\"河西区\"},{\"code\":\"120104\",\"name\":\"南开区\"},{\"code\":\"120105\",\"name\":\"河北区\"},{\"code\":\"120106\",\"name\":\"红桥区\"},{\"code\":\"120110\",\"name\":\"东丽区\"},{\"code\":\"120111\",\"name\":\"西青区\"},{\"code\":\"120112\",\"name\":\"津南区\"},{\"code\":\"120113\",\"name\":\"北辰区\"},{\"code\":\"120114\",\"name\":\"武清区\"},{\"code\":\"120115\",\"name\":\"宝坻区\"},{\"code\":\"120116\",\"name\":\"滨海新区\"},{\"code\":\"120117\",\"name\":\"宁河区\"},{\"code\":\"120118\",\"name\":\"静海区\"},{\"code\":\"120119\",\"name\":\"蓟州区\"}]}]},{\"code\":\"130000\",\"name\":\"河北省\",\"children\":[{\"code\":\"130100\",\"name\":\"石家庄市\",\"children\":[{\"code\":\"130102\",\"name\":\"长安区\"},{\"code\":\"130104\",\"name\":\"桥西区\"},{\"code\":\"130105\",\"name\":\"新华区\"},{\"code\":\"130107\",\"name\":\"井陉矿区\"},{\"code\":\"130108\",\"name\":\"裕华区\"},{\"code\":\"130109\",\"name\":\"藁城区\"},{\"code\":\"130110\",\"name\":\"鹿泉区\"},{\"code\":\"130111\",\"name\":\"栾城区\"},{\"code\":\"130121\",\"name\":\"井陉县\"},{\"code\":\"130123\",\"name\":\"正定县\"},{\"code\":\"130125\",\"name\":\"行唐县\"},{\"code\":\"130126\",\"name\":\"灵寿县\"},{\"code\":\"130127\",\"name\":\"高邑县\"},{\"code\":\"130128\",\"name\":\"深泽县\"},{\"code\":\"130129\",\"name\":\"赞皇县\"},{\"code\":\"130130\",\"name\":\"无极县\"},{\"code\":\"130131\",\"name\":\"平山县\"},{\"code\":\"130132\",\"name\":\"元氏县\"},{\"code\":\"130133\",\"name\":\"赵县\"},{\"code\":\"130171\",\"name\":\"石家庄高新技术产业开发区\"},{\"code\":\"130172\",\"name\":\"石家庄循环化工园区\"},{\"code\":\"130181\",\"name\":\"辛集市\"},{\"code\":\"130183\",\"name\":\"晋州市\"},{\"code\":\"130184\",\"name\":\"新乐市\"}]},{\"code\":\"130200\",\"name\":\"唐山市\",\"children\":[{\"code\":\"130202\",\"name\":\"路南区\"},{\"code\":\"130203\",\"name\":\"路北区\"},{\"code\":\"130204\",\"name\":\"古冶区\"},{\"code\":\"130205\",\"name\":\"开平区\"},{\"code\":\"130207\",\"name\":\"丰南区\"},{\"code\":\"130208\",\"name\":\"丰润区\"},{\"code\":\"130209\",\"name\":\"曹妃甸区\"},{\"code\":\"130224\",\"name\":\"滦南县\"},{\"code\":\"130225\",\"name\":\"乐亭县\"},{\"code\":\"130227\",\"name\":\"迁西县\"},{\"code\":\"130229\",\"name\":\"玉田县\"},{\"code\":\"130271\",\"name\":\"河北唐山芦台经济开发区\"},{\"code\":\"130272\",\"name\":\"唐山市汉沽管理区\"},{\"code\":\"130273\",\"name\":\"唐山高新技术产业开发区\"},{\"code\":\"130274\",\"name\":\"河北唐山海港经济开发区\"},{\"code\":\"130281\",\"name\":\"遵化市\"},{\"code\":\"130283\",\"name\":\"迁安市\"},{\"code\":\"130284\",\"name\":\"滦州市\"}]},{\"code\":\"130300\",\"name\":\"秦皇岛市\",\"children\":[{\"code\":\"130302\",\"name\":\"海港区\"},{\"code\":\"130303\",\"name\":\"山海关区\"},{\"code\":\"130304\",\"name\":\"北戴河区\"},{\"code\":\"130306\",\"name\":\"抚宁区\"},{\"code\":\"130321\",\"name\":\"青龙满族自治县\"},{\"code\":\"130322\",\"name\":\"昌黎县\"},{\"code\":\"130324\",\"name\":\"卢龙县\"},{\"code\":\"130371\",\"name\":\"秦皇岛市经济技术开发区\"},{\"code\":\"130372\",\"name\":\"北戴河新区\"}]},{\"code\":\"130400\",\"name\":\"邯郸市\",\"children\":[{\"code\":\"130402\",\"name\":\"邯山区\"},{\"code\":\"130403\",\"name\":\"丛台区\"},{\"code\":\"130404\",\"name\":\"复兴区\"},{\"code\":\"130406\",\"name\":\"峰峰矿区\"},{\"code\":\"130407\",\"name\":\"肥乡区\"},{\"code\":\"130408\",\"name\":\"永年区\"},{\"code\":\"130423\",\"name\":\"临漳县\"},{\"code\":\"130424\",\"name\":\"成安县\"},{\"code\":\"130425\",\"name\":\"大名县\"},{\"code\":\"130426\",\"name\":\"涉县\"},{\"code\":\"130427\",\"name\":\"磁县\"},{\"code\":\"130430\",\"name\":\"邱县\"},{\"code\":\"130431\",\"name\":\"鸡泽县\"},{\"code\":\"130432\",\"name\":\"广平县\"},{\"code\":\"130433\",\"name\":\"馆陶县\"},{\"code\":\"130434\",\"name\":\"魏县\"},{\"code\":\"130435\",\"name\":\"曲周县\"},{\"code\":\"130471\",\"name\":\"邯郸经济技术开发区\"},{\"code\":\"130473\",\"name\":\"邯郸冀南新区\"},{\"code\":\"130481\",\"name\":\"武安市\"}]},{\"code\":\"130500\",\"name\":\"邢台市\",\"children\":[{\"code\":\"130502\",\"name\":\"襄都区\"},{\"code\":\"130503\",\"name\":\"信都区\"},{\"code\":\"130505\",\"name\":\"任泽区\"},{\"code\":\"130506\",\"name\":\"南和区\"},{\"code\":\"130522\",\"name\":\"临城县\"},{\"code\":\"130523\",\"name\":\"内丘县\"},{\"code\":\"130524\",\"name\":\"柏乡县\"},{\"code\":\"130525\",\"name\":\"隆尧县\"},{\"code\":\"130528\",\"name\":\"宁晋县\"},{\"code\":\"130529\",\"name\":\"巨鹿县\"},{\"code\":\"130530\",\"name\":\"新河县\"},{\"code\":\"130531\",\"name\":\"广宗县\"},{\"code\":\"130532\",\"name\":\"平乡县\"},{\"code\":\"130533\",\"name\":\"威县\"},{\"code\":\"130534\",\"name\":\"清河县\"},{\"code\":\"130535\",\"name\":\"临西县\"},{\"code\":\"130571\",\"name\":\"河北邢台经济开发区\"},{\"code\":\"130581\",\"name\":\"南宫市\"},{\"code\":\"130582\",\"name\":\"沙河市\"}]},{\"code\":\"130600\",\"name\":\"保定市\",\"children\":[{\"code\":\"130602\",\"name\":\"竞秀区\"},{\"code\":\"130606\",\"name\":\"莲池区\"},{\"code\":\"130607\",\"name\":\"满城区\"},{\"code\":\"130608\",\"name\":\"清苑区\"},{\"code\":\"130609\",\"name\":\"徐水区\"},{\"code\":\"130623\",\"name\":\"涞水县\"},{\"code\":\"130624\",\"name\":\"阜平县\"},{\"code\":\"130626\",\"name\":\"定兴县\"},{\"code\":\"130627\",\"name\":\"唐县\"},{\"code\":\"130628\",\"name\":\"高阳县\"},{\"code\":\"130629\",\"name\":\"容城县\"},{\"code\":\"130630\",\"name\":\"涞源县\"},{\"code\":\"130631\",\"name\":\"望都县\"},{\"code\":\"130632\",\"name\":\"安新县\"},{\"code\":\"130633\",\"name\":\"易县\"},{\"code\":\"130634\",\"name\":\"曲阳县\"},{\"code\":\"130635\",\"name\":\"蠡县\"},{\"code\":\"130636\",\"name\":\"顺平县\"},{\"code\":\"130637\",\"name\":\"博野县\"},{\"code\":\"130638\",\"name\":\"雄县\"},{\"code\":\"130671\",\"name\":\"保定高新技术产业开发区\"},{\"code\":\"130672\",\"name\":\"保定白沟新城\"},{\"code\":\"130681\",\"name\":\"涿州市\"},{\"code\":\"130682\",\"name\":\"定州市\"},{\"code\":\"130683\",\"name\":\"安国市\"},{\"code\":\"130684\",\"name\":\"高碑店市\"}]},{\"code\":\"130700\",\"name\":\"张家口市\",\"children\":[{\"code\":\"130702\",\"name\":\"桥东区\"},{\"code\":\"130703\",\"name\":\"桥西区\"},{\"code\":\"130705\",\"name\":\"宣化区\"},{\"code\":\"130706\",\"name\":\"下花园区\"},{\"code\":\"130708\",\"name\":\"万全区\"},{\"code\":\"130709\",\"name\":\"崇礼区\"},{\"code\":\"130722\",\"name\":\"张北县\"},{\"code\":\"130723\",\"name\":\"康保县\"},{\"code\":\"130724\",\"name\":\"沽源县\"},{\"code\":\"130725\",\"name\":\"尚义县\"},{\"code\":\"130726\",\"name\":\"蔚县\"},{\"code\":\"130727\",\"name\":\"阳原县\"},{\"code\":\"130728\",\"name\":\"怀安县\"},{\"code\":\"130730\",\"name\":\"怀来县\"},{\"code\":\"130731\",\"name\":\"涿鹿县\"},{\"code\":\"130732\",\"name\":\"赤城县\"},{\"code\":\"130771\",\"name\":\"张家口经济开发区\"},{\"code\":\"130772\",\"name\":\"张家口市察北管理区\"},{\"code\":\"130773\",\"name\":\"张家口市塞北管理区\"}]},{\"code\":\"130800\",\"name\":\"承德市\",\"children\":[{\"code\":\"130802\",\"name\":\"双桥区\"},{\"code\":\"130803\",\"name\":\"双滦区\"},{\"code\":\"130804\",\"name\":\"鹰手营子矿区\"},{\"code\":\"130821\",\"name\":\"承德县\"},{\"code\":\"130822\",\"name\":\"兴隆县\"},{\"code\":\"130824\",\"name\":\"滦平县\"},{\"code\":\"130825\",\"name\":\"隆化县\"},{\"code\":\"130826\",\"name\":\"丰宁满族自治县\"},{\"code\":\"130827\",\"name\":\"宽城满族自治县\"},{\"code\":\"130828\",\"name\":\"围场满族蒙古族自治县\"},{\"code\":\"130871\",\"name\":\"承德高新技术产业开发区\"},{\"code\":\"130881\",\"name\":\"平泉市\"}]},{\"code\":\"130900\",\"name\":\"沧州市\",\"children\":[{\"code\":\"130902\",\"name\":\"新华区\"},{\"code\":\"130903\",\"name\":\"运河区\"},{\"code\":\"130921\",\"name\":\"沧县\"},{\"code\":\"130922\",\"name\":\"青县\"},{\"code\":\"130923\",\"name\":\"东光县\"},{\"code\":\"130924\",\"name\":\"海兴县\"},{\"code\":\"130925\",\"name\":\"盐山县\"},{\"code\":\"130926\",\"name\":\"肃宁县\"},{\"code\":\"130927\",\"name\":\"南皮县\"},{\"code\":\"130928\",\"name\":\"吴桥县\"},{\"code\":\"130929\",\"name\":\"献县\"},{\"code\":\"130930\",\"name\":\"孟村回族自治县\"},{\"code\":\"130971\",\"name\":\"河北沧州经济开发区\"},{\"code\":\"130972\",\"name\":\"沧州高新技术产业开发区\"},{\"code\":\"130973\",\"name\":\"沧州渤海新区\"},{\"code\":\"130981\",\"name\":\"泊头市\"},{\"code\":\"130982\",\"name\":\"任丘市\"},{\"code\":\"130983\",\"name\":\"黄骅市\"},{\"code\":\"130984\",\"name\":\"河间市\"}]},{\"code\":\"131000\",\"name\":\"廊坊市\",\"children\":[{\"code\":\"131002\",\"name\":\"安次区\"},{\"code\":\"131003\",\"name\":\"广阳区\"},{\"code\":\"131022\",\"name\":\"固安县\"},{\"code\":\"131023\",\"name\":\"永清县\"},{\"code\":\"131024\",\"name\":\"香河县\"},{\"code\":\"131025\",\"name\":\"大城县\"},{\"code\":\"131026\",\"name\":\"文安县\"},{\"code\":\"131028\",\"name\":\"大厂回族自治县\"},{\"code\":\"131071\",\"name\":\"廊坊经济技术开发区\"},{\"code\":\"131081\",\"name\":\"霸州市\"},{\"code\":\"131082\",\"name\":\"三河市\"}]},{\"code\":\"131100\",\"name\":\"衡水市\",\"children\":[{\"code\":\"131102\",\"name\":\"桃城区\"},{\"code\":\"131103\",\"name\":\"冀州区\"},{\"code\":\"131121\",\"name\":\"枣强县\"},{\"code\":\"131122\",\"name\":\"武邑县\"},{\"code\":\"131123\",\"name\":\"武强县\"},{\"code\":\"131124\",\"name\":\"饶阳县\"},{\"code\":\"131125\",\"name\":\"安平县\"},{\"code\":\"131126\",\"name\":\"故城县\"},{\"code\":\"131127\",\"name\":\"景县\"},{\"code\":\"131128\",\"name\":\"阜城县\"},{\"code\":\"131171\",\"name\":\"河北衡水高新技术产业开发区\"},{\"code\":\"131172\",\"name\":\"衡水滨湖新区\"},{\"code\":\"131182\",\"name\":\"深州市\"}]}]},{\"code\":\"140000\",\"name\":\"山西省\",\"children\":[{\"code\":\"140100\",\"name\":\"太原市\",\"children\":[{\"code\":\"140105\",\"name\":\"小店区\"},{\"code\":\"140106\",\"name\":\"迎泽区\"},{\"code\":\"140107\",\"name\":\"杏花岭区\"},{\"code\":\"140108\",\"name\":\"尖草坪区\"},{\"code\":\"140109\",\"name\":\"万柏林区\"},{\"code\":\"140110\",\"name\":\"晋源区\"},{\"code\":\"140121\",\"name\":\"清徐县\"},{\"code\":\"140122\",\"name\":\"阳曲县\"},{\"code\":\"140123\",\"name\":\"娄烦县\"},{\"code\":\"140171\",\"name\":\"山西转型综合改革示范区\"},{\"code\":\"140181\",\"name\":\"古交市\"}]},{\"code\":\"140200\",\"name\":\"大同市\",\"children\":[{\"code\":\"140212\",\"name\":\"新荣区\"},{\"code\":\"140213\",\"name\":\"平城区\"},{\"code\":\"140214\",\"name\":\"云冈区\"},{\"code\":\"140215\",\"name\":\"云州区\"},{\"code\":\"140221\",\"name\":\"阳高县\"},{\"code\":\"140222\",\"name\":\"天镇县\"},{\"code\":\"140223\",\"name\":\"广灵县\"},{\"code\":\"140224\",\"name\":\"灵丘县\"},{\"code\":\"140225\",\"name\":\"浑源县\"},{\"code\":\"140226\",\"name\":\"左云县\"},{\"code\":\"140271\",\"name\":\"山西大同经济开发区\"}]},{\"code\":\"140300\",\"name\":\"阳泉市\",\"children\":[{\"code\":\"140302\",\"name\":\"城区\"},{\"code\":\"140303\",\"name\":\"矿区\"},{\"code\":\"140311\",\"name\":\"郊区\"},{\"code\":\"140321\",\"name\":\"平定县\"},{\"code\":\"140322\",\"name\":\"盂县\"}]},{\"code\":\"140400\",\"name\":\"长治市\",\"children\":[{\"code\":\"140403\",\"name\":\"潞州区\"},{\"code\":\"140404\",\"name\":\"上党区\"},{\"code\":\"140405\",\"name\":\"屯留区\"},{\"code\":\"140406\",\"name\":\"潞城区\"},{\"code\":\"140423\",\"name\":\"襄垣县\"},{\"code\":\"140425\",\"name\":\"平顺县\"},{\"code\":\"140426\",\"name\":\"黎城县\"},{\"code\":\"140427\",\"name\":\"壶关县\"},{\"code\":\"140428\",\"name\":\"长子县\"},{\"code\":\"140429\",\"name\":\"武乡县\"},{\"code\":\"140430\",\"name\":\"沁县\"},{\"code\":\"140431\",\"name\":\"沁源县\"},{\"code\":\"140471\",\"name\":\"山西长治高新技术产业园区\"}]},{\"code\":\"140500\",\"name\":\"晋城市\",\"children\":[{\"code\":\"140502\",\"name\":\"城区\"},{\"code\":\"140521\",\"name\":\"沁水县\"},{\"code\":\"140522\",\"name\":\"阳城县\"},{\"code\":\"140524\",\"name\":\"陵川县\"},{\"code\":\"140525\",\"name\":\"泽州县\"},{\"code\":\"140581\",\"name\":\"高平市\"}]},{\"code\":\"140600\",\"name\":\"朔州市\",\"children\":[{\"code\":\"140602\",\"name\":\"朔城区\"},{\"code\":\"140603\",\"name\":\"平鲁区\"},{\"code\":\"140621\",\"name\":\"山阴县\"},{\"code\":\"140622\",\"name\":\"应县\"},{\"code\":\"140623\",\"name\":\"右玉县\"},{\"code\":\"140671\",\"name\":\"山西朔州经济开发区\"},{\"code\":\"140681\",\"name\":\"怀仁市\"}]},{\"code\":\"140700\",\"name\":\"晋中市\",\"children\":[{\"code\":\"140702\",\"name\":\"榆次区\"},{\"code\":\"140703\",\"name\":\"太谷区\"},{\"code\":\"140721\",\"name\":\"榆社县\"},{\"code\":\"140722\",\"name\":\"左权县\"},{\"code\":\"140723\",\"name\":\"和顺县\"},{\"code\":\"140724\",\"name\":\"昔阳县\"},{\"code\":\"140725\",\"name\":\"寿阳县\"},{\"code\":\"140727\",\"name\":\"祁县\"},{\"code\":\"140728\",\"name\":\"平遥县\"},{\"code\":\"140729\",\"name\":\"灵石县\"},{\"code\":\"140781\",\"name\":\"介休市\"}]},{\"code\":\"140800\",\"name\":\"运城市\",\"children\":[{\"code\":\"140802\",\"name\":\"盐湖区\"},{\"code\":\"140821\",\"name\":\"临猗县\"},{\"code\":\"140822\",\"name\":\"万荣县\"},{\"code\":\"140823\",\"name\":\"闻喜县\"},{\"code\":\"140824\",\"name\":\"稷山县\"},{\"code\":\"140825\",\"name\":\"新绛县\"},{\"code\":\"140826\",\"name\":\"绛县\"},{\"code\":\"140827\",\"name\":\"垣曲县\"},{\"code\":\"140828\",\"name\":\"夏县\"},{\"code\":\"140829\",\"name\":\"平陆县\"},{\"code\":\"140830\",\"name\":\"芮城县\"},{\"code\":\"140881\",\"name\":\"永济市\"},{\"code\":\"140882\",\"name\":\"河津市\"}]},{\"code\":\"140900\",\"name\":\"忻州市\",\"children\":[{\"code\":\"140902\",\"name\":\"忻府区\"},{\"code\":\"140921\",\"name\":\"定襄县\"},{\"code\":\"140922\",\"name\":\"五台县\"},{\"code\":\"140923\",\"name\":\"代县\"},{\"code\":\"140924\",\"name\":\"繁峙县\"},{\"code\":\"140925\",\"name\":\"宁武县\"},{\"code\":\"140926\",\"name\":\"静乐县\"},{\"code\":\"140927\",\"name\":\"神池县\"},{\"code\":\"140928\",\"name\":\"五寨县\"},{\"code\":\"140929\",\"name\":\"岢岚县\"},{\"code\":\"140930\",\"name\":\"河曲县\"},{\"code\":\"140931\",\"name\":\"保德县\"},{\"code\":\"140932\",\"name\":\"偏关县\"},{\"code\":\"140971\",\"name\":\"五台山风景名胜区\"},{\"code\":\"140981\",\"name\":\"原平市\"}]},{\"code\":\"141000\",\"name\":\"临汾市\",\"children\":[{\"code\":\"141002\",\"name\":\"尧都区\"},{\"code\":\"141021\",\"name\":\"曲沃县\"},{\"code\":\"141022\",\"name\":\"翼城县\"},{\"code\":\"141023\",\"name\":\"襄汾县\"},{\"code\":\"141024\",\"name\":\"洪洞县\"},{\"code\":\"141025\",\"name\":\"古县\"},{\"code\":\"141026\",\"name\":\"安泽县\"},{\"code\":\"141027\",\"name\":\"浮山县\"},{\"code\":\"141028\",\"name\":\"吉县\"},{\"code\":\"141029\",\"name\":\"乡宁县\"},{\"code\":\"141030\",\"name\":\"大宁县\"},{\"code\":\"141031\",\"name\":\"隰县\"},{\"code\":\"141032\",\"name\":\"永和县\"},{\"code\":\"141033\",\"name\":\"蒲县\"},{\"code\":\"141034\",\"name\":\"汾西县\"},{\"code\":\"141081\",\"name\":\"侯马市\"},{\"code\":\"141082\",\"name\":\"霍州市\"}]},{\"code\":\"141100\",\"name\":\"吕梁市\",\"children\":[{\"code\":\"141102\",\"name\":\"离石区\"},{\"code\":\"141121\",\"name\":\"文水县\"},{\"code\":\"141122\",\"name\":\"交城县\"},{\"code\":\"141123\",\"name\":\"兴县\"},{\"code\":\"141124\",\"name\":\"临县\"},{\"code\":\"141125\",\"name\":\"柳林县\"},{\"code\":\"141126\",\"name\":\"石楼县\"},{\"code\":\"141127\",\"name\":\"岚县\"},{\"code\":\"141128\",\"name\":\"方山县\"},{\"code\":\"141129\",\"name\":\"中阳县\"},{\"code\":\"141130\",\"name\":\"交口县\"},{\"code\":\"141181\",\"name\":\"孝义市\"},{\"code\":\"141182\",\"name\":\"汾阳市\"}]}]},{\"code\":\"150000\",\"name\":\"内蒙古自治区\",\"children\":[{\"code\":\"150100\",\"name\":\"呼和浩特市\",\"children\":[{\"code\":\"150102\",\"name\":\"新城区\"},{\"code\":\"150103\",\"name\":\"回民区\"},{\"code\":\"150104\",\"name\":\"玉泉区\"},{\"code\":\"150105\",\"name\":\"赛罕区\"},{\"code\":\"150121\",\"name\":\"土默特左旗\"},{\"code\":\"150122\",\"name\":\"托克托县\"},{\"code\":\"150123\",\"name\":\"和林格尔县\"},{\"code\":\"150124\",\"name\":\"清水河县\"},{\"code\":\"150125\",\"name\":\"武川县\"},{\"code\":\"150172\",\"name\":\"呼和浩特经济技术开发区\"}]},{\"code\":\"150200\",\"name\":\"包头市\",\"children\":[{\"code\":\"150202\",\"name\":\"东河区\"},{\"code\":\"150203\",\"name\":\"昆都仑区\"},{\"code\":\"150204\",\"name\":\"青山区\"},{\"code\":\"150205\",\"name\":\"石拐区\"},{\"code\":\"150206\",\"name\":\"白云鄂博矿区\"},{\"code\":\"150207\",\"name\":\"九原区\"},{\"code\":\"150221\",\"name\":\"土默特右旗\"},{\"code\":\"150222\",\"name\":\"固阳县\"},{\"code\":\"150223\",\"name\":\"达尔罕茂明安联合旗\"},{\"code\":\"150271\",\"name\":\"包头稀土高新技术产业开发区\"}]},{\"code\":\"150300\",\"name\":\"乌海市\",\"children\":[{\"code\":\"150302\",\"name\":\"海勃湾区\"},{\"code\":\"150303\",\"name\":\"海南区\"},{\"code\":\"150304\",\"name\":\"乌达区\"}]},{\"code\":\"150400\",\"name\":\"赤峰市\",\"children\":[{\"code\":\"150402\",\"name\":\"红山区\"},{\"code\":\"150403\",\"name\":\"元宝山区\"},{\"code\":\"150404\",\"name\":\"松山区\"},{\"code\":\"150421\",\"name\":\"阿鲁科尔沁旗\"},{\"code\":\"150422\",\"name\":\"巴林左旗\"},{\"code\":\"150423\",\"name\":\"巴林右旗\"},{\"code\":\"150424\",\"name\":\"林西县\"},{\"code\":\"150425\",\"name\":\"克什克腾旗\"},{\"code\":\"150426\",\"name\":\"翁牛特旗\"},{\"code\":\"150428\",\"name\":\"喀喇沁旗\"},{\"code\":\"150429\",\"name\":\"宁城县\"},{\"code\":\"150430\",\"name\":\"敖汉旗\"}]},{\"code\":\"150500\",\"name\":\"通辽市\",\"children\":[{\"code\":\"150502\",\"name\":\"科尔沁区\"},{\"code\":\"150521\",\"name\":\"科尔沁左翼中旗\"},{\"code\":\"150522\",\"name\":\"科尔沁左翼后旗\"},{\"code\":\"150523\",\"name\":\"开鲁县\"},{\"code\":\"150524\",\"name\":\"库伦旗\"},{\"code\":\"150525\",\"name\":\"奈曼旗\"},{\"code\":\"150526\",\"name\":\"扎鲁特旗\"},{\"code\":\"150571\",\"name\":\"通辽经济技术开发区\"},{\"code\":\"150581\",\"name\":\"霍林郭勒市\"}]},{\"code\":\"150600\",\"name\":\"鄂尔多斯市\",\"children\":[{\"code\":\"150602\",\"name\":\"东胜区\"},{\"code\":\"150603\",\"name\":\"康巴什区\"},{\"code\":\"150621\",\"name\":\"达拉特旗\"},{\"code\":\"150622\",\"name\":\"准格尔旗\"},{\"code\":\"150623\",\"name\":\"鄂托克前旗\"},{\"code\":\"150624\",\"name\":\"鄂托克旗\"},{\"code\":\"150625\",\"name\":\"杭锦旗\"},{\"code\":\"150626\",\"name\":\"乌审旗\"},{\"code\":\"150627\",\"name\":\"伊金霍洛旗\"}]},{\"code\":\"150700\",\"name\":\"呼伦贝尔市\",\"children\":[{\"code\":\"150702\",\"name\":\"海拉尔区\"},{\"code\":\"150703\",\"name\":\"扎赉诺尔区\"},{\"code\":\"150721\",\"name\":\"阿荣旗\"},{\"code\":\"150722\",\"name\":\"莫力达瓦达斡尔族自治旗\"},{\"code\":\"150723\",\"name\":\"鄂伦春自治旗\"},{\"code\":\"150724\",\"name\":\"鄂温克族自治旗\"},{\"code\":\"150725\",\"name\":\"陈巴尔虎旗\"},{\"code\":\"150726\",\"name\":\"新巴尔虎左旗\"},{\"code\":\"150727\",\"name\":\"新巴尔虎右旗\"},{\"code\":\"150781\",\"name\":\"满洲里市\"},{\"code\":\"150782\",\"name\":\"牙克石市\"},{\"code\":\"150783\",\"name\":\"扎兰屯市\"},{\"code\":\"150784\",\"name\":\"额尔古纳市\"},{\"code\":\"150785\",\"name\":\"根河市\"}]},{\"code\":\"150800\",\"name\":\"巴彦淖尔市\",\"children\":[{\"code\":\"150802\",\"name\":\"临河区\"},{\"code\":\"150821\",\"name\":\"五原县\"},{\"code\":\"150822\",\"name\":\"磴口县\"},{\"code\":\"150823\",\"name\":\"乌拉特前旗\"},{\"code\":\"150824\",\"name\":\"乌拉特中旗\"},{\"code\":\"150825\",\"name\":\"乌拉特后旗\"},{\"code\":\"150826\",\"name\":\"杭锦后旗\"}]},{\"code\":\"150900\",\"name\":\"乌兰察布市\",\"children\":[{\"code\":\"150902\",\"name\":\"集宁区\"},{\"code\":\"150921\",\"name\":\"卓资县\"},{\"code\":\"150922\",\"name\":\"化德县\"},{\"code\":\"150923\",\"name\":\"商都县\"},{\"code\":\"150924\",\"name\":\"兴和县\"},{\"code\":\"150925\",\"name\":\"凉城县\"},{\"code\":\"150926\",\"name\":\"察哈尔右翼前旗\"},{\"code\":\"150927\",\"name\":\"察哈尔右翼中旗\"},{\"code\":\"150928\",\"name\":\"察哈尔右翼后旗\"},{\"code\":\"150929\",\"name\":\"四子王旗\"},{\"code\":\"150981\",\"name\":\"丰镇市\"}]},{\"code\":\"152200\",\"name\":\"兴安盟\",\"children\":[{\"code\":\"152201\",\"name\":\"乌兰浩特市\"},{\"code\":\"152202\",\"name\":\"阿尔山市\"},{\"code\":\"152221\",\"name\":\"科尔沁右翼前旗\"},{\"code\":\"152222\",\"name\":\"科尔沁右翼中旗\"},{\"code\":\"152223\",\"name\":\"扎赉特旗\"},{\"code\":\"152224\",\"name\":\"突泉县\"}]},{\"code\":\"152500\",\"name\":\"锡林郭勒盟\",\"children\":[{\"code\":\"152501\",\"name\":\"二连浩特市\"},{\"code\":\"152502\",\"name\":\"锡林浩特市\"},{\"code\":\"152522\",\"name\":\"阿巴嘎旗\"},{\"code\":\"152523\",\"name\":\"苏尼特左旗\"},{\"code\":\"152524\",\"name\":\"苏尼特右旗\"},{\"code\":\"152525\",\"name\":\"东乌珠穆沁旗\"},{\"code\":\"152526\",\"name\":\"西乌珠穆沁旗\"},{\"code\":\"152527\",\"name\":\"太仆寺旗\"},{\"code\":\"152528\",\"name\":\"镶黄旗\"},{\"code\":\"152529\",\"name\":\"正镶白旗\"},{\"code\":\"152530\",\"name\":\"正蓝旗\"},{\"code\":\"152531\",\"name\":\"多伦县\"},{\"code\":\"152571\",\"name\":\"乌拉盖管委会\"}]},{\"code\":\"152900\",\"name\":\"阿拉善盟\",\"children\":[{\"code\":\"152921\",\"name\":\"阿拉善左旗\"},{\"code\":\"152922\",\"name\":\"阿拉善右旗\"},{\"code\":\"152923\",\"name\":\"额济纳旗\"},{\"code\":\"152971\",\"name\":\"内蒙古阿拉善高新技术产业开发区\"}]}]},{\"code\":\"210000\",\"name\":\"辽宁省\",\"children\":[{\"code\":\"210100\",\"name\":\"沈阳市\",\"children\":[{\"code\":\"210102\",\"name\":\"和平区\"},{\"code\":\"210103\",\"name\":\"沈河区\"},{\"code\":\"210104\",\"name\":\"大东区\"},{\"code\":\"210105\",\"name\":\"皇姑区\"},{\"code\":\"210106\",\"name\":\"铁西区\"},{\"code\":\"210111\",\"name\":\"苏家屯区\"},{\"code\":\"210112\",\"name\":\"浑南区\"},{\"code\":\"210113\",\"name\":\"沈北新区\"},{\"code\":\"210114\",\"name\":\"于洪区\"},{\"code\":\"210115\",\"name\":\"辽中区\"},{\"code\":\"210123\",\"name\":\"康平县\"},{\"code\":\"210124\",\"name\":\"法库县\"},{\"code\":\"210181\",\"name\":\"新民市\"}]},{\"code\":\"210200\",\"name\":\"大连市\",\"children\":[{\"code\":\"210202\",\"name\":\"中山区\"},{\"code\":\"210203\",\"name\":\"西岗区\"},{\"code\":\"210204\",\"name\":\"沙河口区\"},{\"code\":\"210211\",\"name\":\"甘井子区\"},{\"code\":\"210212\",\"name\":\"旅顺口区\"},{\"code\":\"210213\",\"name\":\"金州区\"},{\"code\":\"210214\",\"name\":\"普兰店区\"},{\"code\":\"210224\",\"name\":\"长海县\"},{\"code\":\"210281\",\"name\":\"瓦房店市\"},{\"code\":\"210283\",\"name\":\"庄河市\"}]},{\"code\":\"210300\",\"name\":\"鞍山市\",\"children\":[{\"code\":\"210302\",\"name\":\"铁东区\"},{\"code\":\"210303\",\"name\":\"铁西区\"},{\"code\":\"210304\",\"name\":\"立山区\"},{\"code\":\"210311\",\"name\":\"千山区\"},{\"code\":\"210321\",\"name\":\"台安县\"},{\"code\":\"210323\",\"name\":\"岫岩满族自治县\"},{\"code\":\"210381\",\"name\":\"海城市\"}]},{\"code\":\"210400\",\"name\":\"抚顺市\",\"children\":[{\"code\":\"210402\",\"name\":\"新抚区\"},{\"code\":\"210403\",\"name\":\"东洲区\"},{\"code\":\"210404\",\"name\":\"望花区\"},{\"code\":\"210411\",\"name\":\"顺城区\"},{\"code\":\"210421\",\"name\":\"抚顺县\"},{\"code\":\"210422\",\"name\":\"新宾满族自治县\"},{\"code\":\"210423\",\"name\":\"清原满族自治县\"}]},{\"code\":\"210500\",\"name\":\"本溪市\",\"children\":[{\"code\":\"210502\",\"name\":\"平山区\"},{\"code\":\"210503\",\"name\":\"溪湖区\"},{\"code\":\"210504\",\"name\":\"明山区\"},{\"code\":\"210505\",\"name\":\"南芬区\"},{\"code\":\"210521\",\"name\":\"本溪满族自治县\"},{\"code\":\"210522\",\"name\":\"桓仁满族自治县\"}]},{\"code\":\"210600\",\"name\":\"丹东市\",\"children\":[{\"code\":\"210602\",\"name\":\"元宝区\"},{\"code\":\"210603\",\"name\":\"振兴区\"},{\"code\":\"210604\",\"name\":\"振安区\"},{\"code\":\"210624\",\"name\":\"宽甸满族自治县\"},{\"code\":\"210681\",\"name\":\"东港市\"},{\"code\":\"210682\",\"name\":\"凤城市\"}]},{\"code\":\"210700\",\"name\":\"锦州市\",\"children\":[{\"code\":\"210702\",\"name\":\"古塔区\"},{\"code\":\"210703\",\"name\":\"凌河区\"},{\"code\":\"210711\",\"name\":\"太和区\"},{\"code\":\"210726\",\"name\":\"黑山县\"},{\"code\":\"210727\",\"name\":\"义县\"},{\"code\":\"210781\",\"name\":\"凌海市\"},{\"code\":\"210782\",\"name\":\"北镇市\"}]},{\"code\":\"210800\",\"name\":\"营口市\",\"children\":[{\"code\":\"210802\",\"name\":\"站前区\"},{\"code\":\"210803\",\"name\":\"西市区\"},{\"code\":\"210804\",\"name\":\"鲅鱼圈区\"},{\"code\":\"210811\",\"name\":\"老边区\"},{\"code\":\"210881\",\"name\":\"盖州市\"},{\"code\":\"210882\",\"name\":\"大石桥市\"}]},{\"code\":\"210900\",\"name\":\"阜新市\",\"children\":[{\"code\":\"210902\",\"name\":\"海州区\"},{\"code\":\"210903\",\"name\":\"新邱区\"},{\"code\":\"210904\",\"name\":\"太平区\"},{\"code\":\"210905\",\"name\":\"清河门区\"},{\"code\":\"210911\",\"name\":\"细河区\"},{\"code\":\"210921\",\"name\":\"阜新蒙古族自治县\"},{\"code\":\"210922\",\"name\":\"彰武县\"}]},{\"code\":\"211000\",\"name\":\"辽阳市\",\"children\":[{\"code\":\"211002\",\"name\":\"白塔区\"},{\"code\":\"211003\",\"name\":\"文圣区\"},{\"code\":\"211004\",\"name\":\"宏伟区\"},{\"code\":\"211005\",\"name\":\"弓长岭区\"},{\"code\":\"211011\",\"name\":\"太子河区\"},{\"code\":\"211021\",\"name\":\"辽阳县\"},{\"code\":\"211081\",\"name\":\"灯塔市\"}]},{\"code\":\"211100\",\"name\":\"盘锦市\",\"children\":[{\"code\":\"211102\",\"name\":\"双台子区\"},{\"code\":\"211103\",\"name\":\"兴隆台区\"},{\"code\":\"211104\",\"name\":\"大洼区\"},{\"code\":\"211122\",\"name\":\"盘山县\"}]},{\"code\":\"211200\",\"name\":\"铁岭市\",\"children\":[{\"code\":\"211202\",\"name\":\"银州区\"},{\"code\":\"211204\",\"name\":\"清河区\"},{\"code\":\"211221\",\"name\":\"铁岭县\"},{\"code\":\"211223\",\"name\":\"西丰县\"},{\"code\":\"211224\",\"name\":\"昌图县\"},{\"code\":\"211281\",\"name\":\"调兵山市\"},{\"code\":\"211282\",\"name\":\"开原市\"}]},{\"code\":\"211300\",\"name\":\"朝阳市\",\"children\":[{\"code\":\"211302\",\"name\":\"双塔区\"},{\"code\":\"211303\",\"name\":\"龙城区\"},{\"code\":\"211321\",\"name\":\"朝阳县\"},{\"code\":\"211322\",\"name\":\"建平县\"},{\"code\":\"211324\",\"name\":\"喀喇沁左翼蒙古族自治县\"},{\"code\":\"211381\",\"name\":\"北票市\"},{\"code\":\"211382\",\"name\":\"凌源市\"}]},{\"code\":\"211400\",\"name\":\"葫芦岛市\",\"children\":[{\"code\":\"211402\",\"name\":\"连山区\"},{\"code\":\"211403\",\"name\":\"龙港区\"},{\"code\":\"211404\",\"name\":\"南票区\"},{\"code\":\"211421\",\"name\":\"绥中县\"},{\"code\":\"211422\",\"name\":\"建昌县\"},{\"code\":\"211481\",\"name\":\"兴城市\"}]}]},{\"code\":\"220000\",\"name\":\"吉林省\",\"children\":[{\"code\":\"220100\",\"name\":\"长春市\",\"children\":[{\"code\":\"220102\",\"name\":\"南关区\"},{\"code\":\"220103\",\"name\":\"宽城区\"},{\"code\":\"220104\",\"name\":\"朝阳区\"},{\"code\":\"220105\",\"name\":\"二道区\"},{\"code\":\"220106\",\"name\":\"绿园区\"},{\"code\":\"220112\",\"name\":\"双阳区\"},{\"code\":\"220113\",\"name\":\"九台区\"},{\"code\":\"220122\",\"name\":\"农安县\"},{\"code\":\"220171\",\"name\":\"长春经济技术开发区\"},{\"code\":\"220172\",\"name\":\"长春净月高新技术产业开发区\"},{\"code\":\"220173\",\"name\":\"长春高新技术产业开发区\"},{\"code\":\"220174\",\"name\":\"长春汽车经济技术开发区\"},{\"code\":\"220182\",\"name\":\"榆树市\"},{\"code\":\"220183\",\"name\":\"德惠市\"},{\"code\":\"220184\",\"name\":\"公主岭市\"}]},{\"code\":\"220200\",\"name\":\"吉林市\",\"children\":[{\"code\":\"220202\",\"name\":\"昌邑区\"},{\"code\":\"220203\",\"name\":\"龙潭区\"},{\"code\":\"220204\",\"name\":\"船营区\"},{\"code\":\"220211\",\"name\":\"丰满区\"},{\"code\":\"220221\",\"name\":\"永吉县\"},{\"code\":\"220271\",\"name\":\"吉林经济开发区\"},{\"code\":\"220272\",\"name\":\"吉林高新技术产业开发区\"},{\"code\":\"220273\",\"name\":\"吉林中国新加坡食品区\"},{\"code\":\"220281\",\"name\":\"蛟河市\"},{\"code\":\"220282\",\"name\":\"桦甸市\"},{\"code\":\"220283\",\"name\":\"舒兰市\"},{\"code\":\"220284\",\"name\":\"磐石市\"}]},{\"code\":\"220300\",\"name\":\"四平市\",\"children\":[{\"code\":\"220302\",\"name\":\"铁西区\"},{\"code\":\"220303\",\"name\":\"铁东区\"},{\"code\":\"220322\",\"name\":\"梨树县\"},{\"code\":\"220323\",\"name\":\"伊通满族自治县\"},{\"code\":\"220382\",\"name\":\"双辽市\"}]},{\"code\":\"220400\",\"name\":\"辽源市\",\"children\":[{\"code\":\"220402\",\"name\":\"龙山区\"},{\"code\":\"220403\",\"name\":\"西安区\"},{\"code\":\"220421\",\"name\":\"东丰县\"},{\"code\":\"220422\",\"name\":\"东辽县\"}]},{\"code\":\"220500\",\"name\":\"通化市\",\"children\":[{\"code\":\"220502\",\"name\":\"东昌区\"},{\"code\":\"220503\",\"name\":\"二道江区\"},{\"code\":\"220521\",\"name\":\"通化县\"},{\"code\":\"220523\",\"name\":\"辉南县\"},{\"code\":\"220524\",\"name\":\"柳河县\"},{\"code\":\"220581\",\"name\":\"梅河口市\"},{\"code\":\"220582\",\"name\":\"集安市\"}]},{\"code\":\"220600\",\"name\":\"白山市\",\"children\":[{\"code\":\"220602\",\"name\":\"浑江区\"},{\"code\":\"220605\",\"name\":\"江源区\"},{\"code\":\"220621\",\"name\":\"抚松县\"},{\"code\":\"220622\",\"name\":\"靖宇县\"},{\"code\":\"220623\",\"name\":\"长白朝鲜族自治县\"},{\"code\":\"220681\",\"name\":\"临江市\"}]},{\"code\":\"220700\",\"name\":\"松原市\",\"children\":[{\"code\":\"220702\",\"name\":\"宁江区\"},{\"code\":\"220721\",\"name\":\"前郭尔罗斯蒙古族自治县\"},{\"code\":\"220722\",\"name\":\"长岭县\"},{\"code\":\"220723\",\"name\":\"乾安县\"},{\"code\":\"220771\",\"name\":\"吉林松原经济开发区\"},{\"code\":\"220781\",\"name\":\"扶余市\"}]},{\"code\":\"220800\",\"name\":\"白城市\",\"children\":[{\"code\":\"220802\",\"name\":\"洮北区\"},{\"code\":\"220821\",\"name\":\"镇赉县\"},{\"code\":\"220822\",\"name\":\"通榆县\"},{\"code\":\"220871\",\"name\":\"吉林白城经济开发区\"},{\"code\":\"220881\",\"name\":\"洮南市\"},{\"code\":\"220882\",\"name\":\"大安市\"}]},{\"code\":\"222400\",\"name\":\"延边朝鲜族自治州\",\"children\":[{\"code\":\"222401\",\"name\":\"延吉市\"},{\"code\":\"222402\",\"name\":\"图们市\"},{\"code\":\"222403\",\"name\":\"敦化市\"},{\"code\":\"222404\",\"name\":\"珲春市\"},{\"code\":\"222405\",\"name\":\"龙井市\"},{\"code\":\"222406\",\"name\":\"和龙市\"},{\"code\":\"222424\",\"name\":\"汪清县\"},{\"code\":\"222426\",\"name\":\"安图县\"}]}]},{\"code\":\"230000\",\"name\":\"黑龙江省\",\"children\":[{\"code\":\"230100\",\"name\":\"哈尔滨市\",\"children\":[{\"code\":\"230102\",\"name\":\"道里区\"},{\"code\":\"230103\",\"name\":\"南岗区\"},{\"code\":\"230104\",\"name\":\"道外区\"},{\"code\":\"230108\",\"name\":\"平房区\"},{\"code\":\"230109\",\"name\":\"松北区\"},{\"code\":\"230110\",\"name\":\"香坊区\"},{\"code\":\"230111\",\"name\":\"呼兰区\"},{\"code\":\"230112\",\"name\":\"阿城区\"},{\"code\":\"230113\",\"name\":\"双城区\"},{\"code\":\"230123\",\"name\":\"依兰县\"},{\"code\":\"230124\",\"name\":\"方正县\"},{\"code\":\"230125\",\"name\":\"宾县\"},{\"code\":\"230126\",\"name\":\"巴彦县\"},{\"code\":\"230127\",\"name\":\"木兰县\"},{\"code\":\"230128\",\"name\":\"通河县\"},{\"code\":\"230129\",\"name\":\"延寿县\"},{\"code\":\"230183\",\"name\":\"尚志市\"},{\"code\":\"230184\",\"name\":\"五常市\"}]},{\"code\":\"230200\",\"name\":\"齐齐哈尔市\",\"children\":[{\"code\":\"230202\",\"name\":\"龙沙区\"},{\"code\":\"230203\",\"name\":\"建华区\"},{\"code\":\"230204\",\"name\":\"铁锋区\"},{\"code\":\"230205\",\"name\":\"昂昂溪区\"},{\"code\":\"230206\",\"name\":\"富拉尔基区\"},{\"code\":\"230207\",\"name\":\"碾子山区\"},{\"code\":\"230208\",\"name\":\"梅里斯达斡尔族区\"},{\"code\":\"230221\",\"name\":\"龙江县\"},{\"code\":\"230223\",\"name\":\"依安县\"},{\"code\":\"230224\",\"name\":\"泰来县\"},{\"code\":\"230225\",\"name\":\"甘南县\"},{\"code\":\"230227\",\"name\":\"富裕县\"},{\"code\":\"230229\",\"name\":\"克山县\"},{\"code\":\"230230\",\"name\":\"克东县\"},{\"code\":\"230231\",\"name\":\"拜泉县\"},{\"code\":\"230281\",\"name\":\"讷河市\"}]},{\"code\":\"230300\",\"name\":\"鸡西市\",\"children\":[{\"code\":\"230302\",\"name\":\"鸡冠区\"},{\"code\":\"230303\",\"name\":\"恒山区\"},{\"code\":\"230304\",\"name\":\"滴道区\"},{\"code\":\"230305\",\"name\":\"梨树区\"},{\"code\":\"230306\",\"name\":\"城子河区\"},{\"code\":\"230307\",\"name\":\"麻山区\"},{\"code\":\"230321\",\"name\":\"鸡东县\"},{\"code\":\"230381\",\"name\":\"虎林市\"},{\"code\":\"230382\",\"name\":\"密山市\"}]},{\"code\":\"230400\",\"name\":\"鹤岗市\",\"children\":[{\"code\":\"230402\",\"name\":\"向阳区\"},{\"code\":\"230403\",\"name\":\"工农区\"},{\"code\":\"230404\",\"name\":\"南山区\"},{\"code\":\"230405\",\"name\":\"兴安区\"},{\"code\":\"230406\",\"name\":\"东山区\"},{\"code\":\"230407\",\"name\":\"兴山区\"},{\"code\":\"230421\",\"name\":\"萝北县\"},{\"code\":\"230422\",\"name\":\"绥滨县\"}]},{\"code\":\"230500\",\"name\":\"双鸭山市\",\"children\":[{\"code\":\"230502\",\"name\":\"尖山区\"},{\"code\":\"230503\",\"name\":\"岭东区\"},{\"code\":\"230505\",\"name\":\"四方台区\"},{\"code\":\"230506\",\"name\":\"宝山区\"},{\"code\":\"230521\",\"name\":\"集贤县\"},{\"code\":\"230522\",\"name\":\"友谊县\"},{\"code\":\"230523\",\"name\":\"宝清县\"},{\"code\":\"230524\",\"name\":\"饶河县\"}]},{\"code\":\"230600\",\"name\":\"大庆市\",\"children\":[{\"code\":\"230602\",\"name\":\"萨尔图区\"},{\"code\":\"230603\",\"name\":\"龙凤区\"},{\"code\":\"230604\",\"name\":\"让胡路区\"},{\"code\":\"230605\",\"name\":\"红岗区\"},{\"code\":\"230606\",\"name\":\"大同区\"},{\"code\":\"230621\",\"name\":\"肇州县\"},{\"code\":\"230622\",\"name\":\"肇源县\"},{\"code\":\"230623\",\"name\":\"林甸县\"},{\"code\":\"230624\",\"name\":\"杜尔伯特蒙古族自治县\"},{\"code\":\"230671\",\"name\":\"大庆高新技术产业开发区\"}]},{\"code\":\"230700\",\"name\":\"伊春市\",\"children\":[{\"code\":\"230717\",\"name\":\"伊美区\"},{\"code\":\"230718\",\"name\":\"乌翠区\"},{\"code\":\"230719\",\"name\":\"友好区\"},{\"code\":\"230722\",\"name\":\"嘉荫县\"},{\"code\":\"230723\",\"name\":\"汤旺县\"},{\"code\":\"230724\",\"name\":\"丰林县\"},{\"code\":\"230725\",\"name\":\"大箐山县\"},{\"code\":\"230726\",\"name\":\"南岔县\"},{\"code\":\"230751\",\"name\":\"金林区\"},{\"code\":\"230781\",\"name\":\"铁力市\"}]},{\"code\":\"230800\",\"name\":\"佳木斯市\",\"children\":[{\"code\":\"230803\",\"name\":\"向阳区\"},{\"code\":\"230804\",\"name\":\"前进区\"},{\"code\":\"230805\",\"name\":\"东风区\"},{\"code\":\"230811\",\"name\":\"郊区\"},{\"code\":\"230822\",\"name\":\"桦南县\"},{\"code\":\"230826\",\"name\":\"桦川县\"},{\"code\":\"230828\",\"name\":\"汤原县\"},{\"code\":\"230881\",\"name\":\"同江市\"},{\"code\":\"230882\",\"name\":\"富锦市\"},{\"code\":\"230883\",\"name\":\"抚远市\"}]},{\"code\":\"230900\",\"name\":\"七台河市\",\"children\":[{\"code\":\"230902\",\"name\":\"新兴区\"},{\"code\":\"230903\",\"name\":\"桃山区\"},{\"code\":\"230904\",\"name\":\"茄子河区\"},{\"code\":\"230921\",\"name\":\"勃利县\"}]},{\"code\":\"231000\",\"name\":\"牡丹江市\",\"children\":[{\"code\":\"231002\",\"name\":\"东安区\"},{\"code\":\"231003\",\"name\":\"阳明区\"},{\"code\":\"231004\",\"name\":\"爱民区\"},{\"code\":\"231005\",\"name\":\"西安区\"},{\"code\":\"231025\",\"name\":\"林口县\"},{\"code\":\"231071\",\"name\":\"牡丹江经济技术开发区\"},{\"code\":\"231081\",\"name\":\"绥芬河市\"},{\"code\":\"231083\",\"name\":\"海林市\"},{\"code\":\"231084\",\"name\":\"宁安市\"},{\"code\":\"231085\",\"name\":\"穆棱市\"},{\"code\":\"231086\",\"name\":\"东宁市\"}]},{\"code\":\"231100\",\"name\":\"黑河市\",\"children\":[{\"code\":\"231102\",\"name\":\"爱辉区\"},{\"code\":\"231123\",\"name\":\"逊克县\"},{\"code\":\"231124\",\"name\":\"孙吴县\"},{\"code\":\"231181\",\"name\":\"北安市\"},{\"code\":\"231182\",\"name\":\"五大连池市\"},{\"code\":\"231183\",\"name\":\"嫩江市\"}]},{\"code\":\"231200\",\"name\":\"绥化市\",\"children\":[{\"code\":\"231202\",\"name\":\"北林区\"},{\"code\":\"231221\",\"name\":\"望奎县\"},{\"code\":\"231222\",\"name\":\"兰西县\"},{\"code\":\"231223\",\"name\":\"青冈县\"},{\"code\":\"231224\",\"name\":\"庆安县\"},{\"code\":\"231225\",\"name\":\"明水县\"},{\"code\":\"231226\",\"name\":\"绥棱县\"},{\"code\":\"231281\",\"name\":\"安达市\"},{\"code\":\"231282\",\"name\":\"肇东市\"},{\"code\":\"231283\",\"name\":\"海伦市\"}]},{\"code\":\"232700\",\"name\":\"大兴安岭地区\",\"children\":[{\"code\":\"232701\",\"name\":\"漠河市\"},{\"code\":\"232721\",\"name\":\"呼玛县\"},{\"code\":\"232722\",\"name\":\"塔河县\"},{\"code\":\"232761\",\"name\":\"加格达奇区\"},{\"code\":\"232762\",\"name\":\"松岭区\"},{\"code\":\"232763\",\"name\":\"新林区\"},{\"code\":\"232764\",\"name\":\"呼中区\"}]}]},{\"code\":\"310000\",\"name\":\"上海市\",\"children\":[{\"code\":\"310100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"310101\",\"name\":\"黄浦区\"},{\"code\":\"310104\",\"name\":\"徐汇区\"},{\"code\":\"310105\",\"name\":\"长宁区\"},{\"code\":\"310106\",\"name\":\"静安区\"},{\"code\":\"310107\",\"name\":\"普陀区\"},{\"code\":\"310109\",\"name\":\"虹口区\"},{\"code\":\"310110\",\"name\":\"杨浦区\"},{\"code\":\"310112\",\"name\":\"闵行区\"},{\"code\":\"310113\",\"name\":\"宝山区\"},{\"code\":\"310114\",\"name\":\"嘉定区\"},{\"code\":\"310115\",\"name\":\"浦东新区\"},{\"code\":\"310116\",\"name\":\"金山区\"},{\"code\":\"310117\",\"name\":\"松江区\"},{\"code\":\"310118\",\"name\":\"青浦区\"},{\"code\":\"310120\",\"name\":\"奉贤区\"},{\"code\":\"310151\",\"name\":\"崇明区\"}]}]},{\"code\":\"320000\",\"name\":\"江苏省\",\"children\":[{\"code\":\"320100\",\"name\":\"南京市\",\"children\":[{\"code\":\"320102\",\"name\":\"玄武区\"},{\"code\":\"320104\",\"name\":\"秦淮区\"},{\"code\":\"320105\",\"name\":\"建邺区\"},{\"code\":\"320106\",\"name\":\"鼓楼区\"},{\"code\":\"320111\",\"name\":\"浦口区\"},{\"code\":\"320113\",\"name\":\"栖霞区\"},{\"code\":\"320114\",\"name\":\"雨花台区\"},{\"code\":\"320115\",\"name\":\"江宁区\"},{\"code\":\"320116\",\"name\":\"六合区\"},{\"code\":\"320117\",\"name\":\"溧水区\"},{\"code\":\"320118\",\"name\":\"高淳区\"}]},{\"code\":\"320200\",\"name\":\"无锡市\",\"children\":[{\"code\":\"320205\",\"name\":\"锡山区\"},{\"code\":\"320206\",\"name\":\"惠山区\"},{\"code\":\"320211\",\"name\":\"滨湖区\"},{\"code\":\"320213\",\"name\":\"梁溪区\"},{\"code\":\"320214\",\"name\":\"新吴区\"},{\"code\":\"320281\",\"name\":\"江阴市\"},{\"code\":\"320282\",\"name\":\"宜兴市\"}]},{\"code\":\"320300\",\"name\":\"徐州市\",\"children\":[{\"code\":\"320302\",\"name\":\"鼓楼区\"},{\"code\":\"320303\",\"name\":\"云龙区\"},{\"code\":\"320305\",\"name\":\"贾汪区\"},{\"code\":\"320311\",\"name\":\"泉山区\"},{\"code\":\"320312\",\"name\":\"铜山区\"},{\"code\":\"320321\",\"name\":\"丰县\"},{\"code\":\"320322\",\"name\":\"沛县\"},{\"code\":\"320324\",\"name\":\"睢宁县\"},{\"code\":\"320371\",\"name\":\"徐州经济技术开发区\"},{\"code\":\"320381\",\"name\":\"新沂市\"},{\"code\":\"320382\",\"name\":\"邳州市\"}]},{\"code\":\"320400\",\"name\":\"常州市\",\"children\":[{\"code\":\"320402\",\"name\":\"天宁区\"},{\"code\":\"320404\",\"name\":\"钟楼区\"},{\"code\":\"320411\",\"name\":\"新北区\"},{\"code\":\"320412\",\"name\":\"武进区\"},{\"code\":\"320413\",\"name\":\"金坛区\"},{\"code\":\"320481\",\"name\":\"溧阳市\"}]},{\"code\":\"320500\",\"name\":\"苏州市\",\"children\":[{\"code\":\"320505\",\"name\":\"虎丘区\"},{\"code\":\"320506\",\"name\":\"吴中区\"},{\"code\":\"320507\",\"name\":\"相城区\"},{\"code\":\"320508\",\"name\":\"姑苏区\"},{\"code\":\"320509\",\"name\":\"吴江区\"},{\"code\":\"320571\",\"name\":\"苏州工业园区\"},{\"code\":\"320581\",\"name\":\"常熟市\"},{\"code\":\"320582\",\"name\":\"张家港市\"},{\"code\":\"320583\",\"name\":\"昆山市\"},{\"code\":\"320585\",\"name\":\"太仓市\"}]},{\"code\":\"320600\",\"name\":\"南通市\",\"children\":[{\"code\":\"320612\",\"name\":\"通州区\"},{\"code\":\"320613\",\"name\":\"崇川区\"},{\"code\":\"320614\",\"name\":\"海门区\"},{\"code\":\"320623\",\"name\":\"如东县\"},{\"code\":\"320671\",\"name\":\"南通经济技术开发区\"},{\"code\":\"320681\",\"name\":\"启东市\"},{\"code\":\"320682\",\"name\":\"如皋市\"},{\"code\":\"320685\",\"name\":\"海安市\"}]},{\"code\":\"320700\",\"name\":\"连云港市\",\"children\":[{\"code\":\"320703\",\"name\":\"连云区\"},{\"code\":\"320706\",\"name\":\"海州区\"},{\"code\":\"320707\",\"name\":\"赣榆区\"},{\"code\":\"320722\",\"name\":\"东海县\"},{\"code\":\"320723\",\"name\":\"灌云县\"},{\"code\":\"320724\",\"name\":\"灌南县\"},{\"code\":\"320771\",\"name\":\"连云港经济技术开发区\"},{\"code\":\"320772\",\"name\":\"连云港高新技术产业开发区\"}]},{\"code\":\"320800\",\"name\":\"淮安市\",\"children\":[{\"code\":\"320803\",\"name\":\"淮安区\"},{\"code\":\"320804\",\"name\":\"淮阴区\"},{\"code\":\"320812\",\"name\":\"清江浦区\"},{\"code\":\"320813\",\"name\":\"洪泽区\"},{\"code\":\"320826\",\"name\":\"涟水县\"},{\"code\":\"320830\",\"name\":\"盱眙县\"},{\"code\":\"320831\",\"name\":\"金湖县\"},{\"code\":\"320871\",\"name\":\"淮安经济技术开发区\"}]},{\"code\":\"320900\",\"name\":\"盐城市\",\"children\":[{\"code\":\"320902\",\"name\":\"亭湖区\"},{\"code\":\"320903\",\"name\":\"盐都区\"},{\"code\":\"320904\",\"name\":\"大丰区\"},{\"code\":\"320921\",\"name\":\"响水县\"},{\"code\":\"320922\",\"name\":\"滨海县\"},{\"code\":\"320923\",\"name\":\"阜宁县\"},{\"code\":\"320924\",\"name\":\"射阳县\"},{\"code\":\"320925\",\"name\":\"建湖县\"},{\"code\":\"320971\",\"name\":\"盐城经济技术开发区\"},{\"code\":\"320981\",\"name\":\"东台市\"}]},{\"code\":\"321000\",\"name\":\"扬州市\",\"children\":[{\"code\":\"321002\",\"name\":\"广陵区\"},{\"code\":\"321003\",\"name\":\"邗江区\"},{\"code\":\"321012\",\"name\":\"江都区\"},{\"code\":\"321023\",\"name\":\"宝应县\"},{\"code\":\"321071\",\"name\":\"扬州经济技术开发区\"},{\"code\":\"321081\",\"name\":\"仪征市\"},{\"code\":\"321084\",\"name\":\"高邮市\"}]},{\"code\":\"321100\",\"name\":\"镇江市\",\"children\":[{\"code\":\"321102\",\"name\":\"京口区\"},{\"code\":\"321111\",\"name\":\"润州区\"},{\"code\":\"321112\",\"name\":\"丹徒区\"},{\"code\":\"321171\",\"name\":\"镇江新区\"},{\"code\":\"321181\",\"name\":\"丹阳市\"},{\"code\":\"321182\",\"name\":\"扬中市\"},{\"code\":\"321183\",\"name\":\"句容市\"}]},{\"code\":\"321200\",\"name\":\"泰州市\",\"children\":[{\"code\":\"321202\",\"name\":\"海陵区\"},{\"code\":\"321203\",\"name\":\"高港区\"},{\"code\":\"321204\",\"name\":\"姜堰区\"},{\"code\":\"321271\",\"name\":\"泰州医药高新技术产业开发区\"},{\"code\":\"321281\",\"name\":\"兴化市\"},{\"code\":\"321282\",\"name\":\"靖江市\"},{\"code\":\"321283\",\"name\":\"泰兴市\"}]},{\"code\":\"321300\",\"name\":\"宿迁市\",\"children\":[{\"code\":\"321302\",\"name\":\"宿城区\"},{\"code\":\"321311\",\"name\":\"宿豫区\"},{\"code\":\"321322\",\"name\":\"沭阳县\"},{\"code\":\"321323\",\"name\":\"泗阳县\"},{\"code\":\"321324\",\"name\":\"泗洪县\"},{\"code\":\"321371\",\"name\":\"宿迁经济技术开发区\"}]}]},{\"code\":\"330000\",\"name\":\"浙江省\",\"children\":[{\"code\":\"330100\",\"name\":\"杭州市\",\"children\":[{\"code\":\"330102\",\"name\":\"上城区\"},{\"code\":\"330105\",\"name\":\"拱墅区\"},{\"code\":\"330106\",\"name\":\"西湖区\"},{\"code\":\"330108\",\"name\":\"滨江区\"},{\"code\":\"330109\",\"name\":\"萧山区\"},{\"code\":\"330110\",\"name\":\"余杭区\"},{\"code\":\"330111\",\"name\":\"富阳区\"},{\"code\":\"330112\",\"name\":\"临安区\"},{\"code\":\"330113\",\"name\":\"临平区\"},{\"code\":\"330114\",\"name\":\"钱塘区\"},{\"code\":\"330122\",\"name\":\"桐庐县\"},{\"code\":\"330127\",\"name\":\"淳安县\"},{\"code\":\"330182\",\"name\":\"建德市\"}]},{\"code\":\"330200\",\"name\":\"宁波市\",\"children\":[{\"code\":\"330203\",\"name\":\"海曙区\"},{\"code\":\"330205\",\"name\":\"江北区\"},{\"code\":\"330206\",\"name\":\"北仑区\"},{\"code\":\"330211\",\"name\":\"镇海区\"},{\"code\":\"330212\",\"name\":\"鄞州区\"},{\"code\":\"330213\",\"name\":\"奉化区\"},{\"code\":\"330225\",\"name\":\"象山县\"},{\"code\":\"330226\",\"name\":\"宁海县\"},{\"code\":\"330281\",\"name\":\"余姚市\"},{\"code\":\"330282\",\"name\":\"慈溪市\"}]},{\"code\":\"330300\",\"name\":\"温州市\",\"children\":[{\"code\":\"330302\",\"name\":\"鹿城区\"},{\"code\":\"330303\",\"name\":\"龙湾区\"},{\"code\":\"330304\",\"name\":\"瓯海区\"},{\"code\":\"330305\",\"name\":\"洞头区\"},{\"code\":\"330324\",\"name\":\"永嘉县\"},{\"code\":\"330326\",\"name\":\"平阳县\"},{\"code\":\"330327\",\"name\":\"苍南县\"},{\"code\":\"330328\",\"name\":\"文成县\"},{\"code\":\"330329\",\"name\":\"泰顺县\"},{\"code\":\"330381\",\"name\":\"瑞安市\"},{\"code\":\"330382\",\"name\":\"乐清市\"},{\"code\":\"330383\",\"name\":\"龙港市\"}]},{\"code\":\"330400\",\"name\":\"嘉兴市\",\"children\":[{\"code\":\"330402\",\"name\":\"南湖区\"},{\"code\":\"330411\",\"name\":\"秀洲区\"},{\"code\":\"330421\",\"name\":\"嘉善县\"},{\"code\":\"330424\",\"name\":\"海盐县\"},{\"code\":\"330481\",\"name\":\"海宁市\"},{\"code\":\"330482\",\"name\":\"平湖市\"},{\"code\":\"330483\",\"name\":\"桐乡市\"}]},{\"code\":\"330500\",\"name\":\"湖州市\",\"children\":[{\"code\":\"330502\",\"name\":\"吴兴区\"},{\"code\":\"330503\",\"name\":\"南浔区\"},{\"code\":\"330521\",\"name\":\"德清县\"},{\"code\":\"330522\",\"name\":\"长兴县\"},{\"code\":\"330523\",\"name\":\"安吉县\"}]},{\"code\":\"330600\",\"name\":\"绍兴市\",\"children\":[{\"code\":\"330602\",\"name\":\"越城区\"},{\"code\":\"330603\",\"name\":\"柯桥区\"},{\"code\":\"330604\",\"name\":\"上虞区\"},{\"code\":\"330624\",\"name\":\"新昌县\"},{\"code\":\"330681\",\"name\":\"诸暨市\"},{\"code\":\"330683\",\"name\":\"嵊州市\"}]},{\"code\":\"330700\",\"name\":\"金华市\",\"children\":[{\"code\":\"330702\",\"name\":\"婺城区\"},{\"code\":\"330703\",\"name\":\"金东区\"},{\"code\":\"330723\",\"name\":\"武义县\"},{\"code\":\"330726\",\"name\":\"浦江县\"},{\"code\":\"330727\",\"name\":\"磐安县\"},{\"code\":\"330781\",\"name\":\"兰溪市\"},{\"code\":\"330782\",\"name\":\"义乌市\"},{\"code\":\"330783\",\"name\":\"东阳市\"},{\"code\":\"330784\",\"name\":\"永康市\"}]},{\"code\":\"330800\",\"name\":\"衢州市\",\"children\":[{\"code\":\"330802\",\"name\":\"柯城区\"},{\"code\":\"330803\",\"name\":\"衢江区\"},{\"code\":\"330822\",\"name\":\"常山县\"},{\"code\":\"330824\",\"name\":\"开化县\"},{\"code\":\"330825\",\"name\":\"龙游县\"},{\"code\":\"330881\",\"name\":\"江山市\"}]},{\"code\":\"330900\",\"name\":\"舟山市\",\"children\":[{\"code\":\"330902\",\"name\":\"定海区\"},{\"code\":\"330903\",\"name\":\"普陀区\"},{\"code\":\"330921\",\"name\":\"岱山县\"},{\"code\":\"330922\",\"name\":\"嵊泗县\"}]},{\"code\":\"331000\",\"name\":\"台州市\",\"children\":[{\"code\":\"331002\",\"name\":\"椒江区\"},{\"code\":\"331003\",\"name\":\"黄岩区\"},{\"code\":\"331004\",\"name\":\"路桥区\"},{\"code\":\"331022\",\"name\":\"三门县\"},{\"code\":\"331023\",\"name\":\"天台县\"},{\"code\":\"331024\",\"name\":\"仙居县\"},{\"code\":\"331081\",\"name\":\"温岭市\"},{\"code\":\"331082\",\"name\":\"临海市\"},{\"code\":\"331083\",\"name\":\"玉环市\"}]},{\"code\":\"331100\",\"name\":\"丽水市\",\"children\":[{\"code\":\"331102\",\"name\":\"莲都区\"},{\"code\":\"331121\",\"name\":\"青田县\"},{\"code\":\"331122\",\"name\":\"缙云县\"},{\"code\":\"331123\",\"name\":\"遂昌县\"},{\"code\":\"331124\",\"name\":\"松阳县\"},{\"code\":\"331125\",\"name\":\"云和县\"},{\"code\":\"331126\",\"name\":\"庆元县\"},{\"code\":\"331127\",\"name\":\"景宁畲族自治县\"},{\"code\":\"331181\",\"name\":\"龙泉市\"}]}]},{\"code\":\"340000\",\"name\":\"安徽省\",\"children\":[{\"code\":\"340100\",\"name\":\"合肥市\",\"children\":[{\"code\":\"340102\",\"name\":\"瑶海区\"},{\"code\":\"340103\",\"name\":\"庐阳区\"},{\"code\":\"340104\",\"name\":\"蜀山区\"},{\"code\":\"340111\",\"name\":\"包河区\"},{\"code\":\"340121\",\"name\":\"长丰县\"},{\"code\":\"340122\",\"name\":\"肥东县\"},{\"code\":\"340123\",\"name\":\"肥西县\"},{\"code\":\"340124\",\"name\":\"庐江县\"},{\"code\":\"340171\",\"name\":\"合肥高新技术产业开发区\"},{\"code\":\"340172\",\"name\":\"合肥经济技术开发区\"},{\"code\":\"340173\",\"name\":\"合肥新站高新技术产业开发区\"},{\"code\":\"340181\",\"name\":\"巢湖市\"}]},{\"code\":\"340200\",\"name\":\"芜湖市\",\"children\":[{\"code\":\"340202\",\"name\":\"镜湖区\"},{\"code\":\"340207\",\"name\":\"鸠江区\"},{\"code\":\"340209\",\"name\":\"弋江区\"},{\"code\":\"340210\",\"name\":\"湾沚区\"},{\"code\":\"340212\",\"name\":\"繁昌区\"},{\"code\":\"340223\",\"name\":\"南陵县\"},{\"code\":\"340271\",\"name\":\"芜湖经济技术开发区\"},{\"code\":\"340272\",\"name\":\"安徽芜湖三山经济开发区\"},{\"code\":\"340281\",\"name\":\"无为市\"}]},{\"code\":\"340300\",\"name\":\"蚌埠市\",\"children\":[{\"code\":\"340302\",\"name\":\"龙子湖区\"},{\"code\":\"340303\",\"name\":\"蚌山区\"},{\"code\":\"340304\",\"name\":\"禹会区\"},{\"code\":\"340311\",\"name\":\"淮上区\"},{\"code\":\"340321\",\"name\":\"怀远县\"},{\"code\":\"340322\",\"name\":\"五河县\"},{\"code\":\"340323\",\"name\":\"固镇县\"},{\"code\":\"340371\",\"name\":\"蚌埠市高新技术开发区\"},{\"code\":\"340372\",\"name\":\"蚌埠市经济开发区\"}]},{\"code\":\"340400\",\"name\":\"淮南市\",\"children\":[{\"code\":\"340402\",\"name\":\"大通区\"},{\"code\":\"340403\",\"name\":\"田家庵区\"},{\"code\":\"340404\",\"name\":\"谢家集区\"},{\"code\":\"340405\",\"name\":\"八公山区\"},{\"code\":\"340406\",\"name\":\"潘集区\"},{\"code\":\"340421\",\"name\":\"凤台县\"},{\"code\":\"340422\",\"name\":\"寿县\"}]},{\"code\":\"340500\",\"name\":\"马鞍山市\",\"children\":[{\"code\":\"340503\",\"name\":\"花山区\"},{\"code\":\"340504\",\"name\":\"雨山区\"},{\"code\":\"340506\",\"name\":\"博望区\"},{\"code\":\"340521\",\"name\":\"当涂县\"},{\"code\":\"340522\",\"name\":\"含山县\"},{\"code\":\"340523\",\"name\":\"和县\"}]},{\"code\":\"340600\",\"name\":\"淮北市\",\"children\":[{\"code\":\"340602\",\"name\":\"杜集区\"},{\"code\":\"340603\",\"name\":\"相山区\"},{\"code\":\"340604\",\"name\":\"烈山区\"},{\"code\":\"340621\",\"name\":\"濉溪县\"}]},{\"code\":\"340700\",\"name\":\"铜陵市\",\"children\":[{\"code\":\"340705\",\"name\":\"铜官区\"},{\"code\":\"340706\",\"name\":\"义安区\"},{\"code\":\"340711\",\"name\":\"郊区\"},{\"code\":\"340722\",\"name\":\"枞阳县\"}]},{\"code\":\"340800\",\"name\":\"安庆市\",\"children\":[{\"code\":\"340802\",\"name\":\"迎江区\"},{\"code\":\"340803\",\"name\":\"大观区\"},{\"code\":\"340811\",\"name\":\"宜秀区\"},{\"code\":\"340822\",\"name\":\"怀宁县\"},{\"code\":\"340825\",\"name\":\"太湖县\"},{\"code\":\"340826\",\"name\":\"宿松县\"},{\"code\":\"340827\",\"name\":\"望江县\"},{\"code\":\"340828\",\"name\":\"岳西县\"},{\"code\":\"340871\",\"name\":\"安徽安庆经济开发区\"},{\"code\":\"340881\",\"name\":\"桐城市\"},{\"code\":\"340882\",\"name\":\"潜山市\"}]},{\"code\":\"341000\",\"name\":\"黄山市\",\"children\":[{\"code\":\"341002\",\"name\":\"屯溪区\"},{\"code\":\"341003\",\"name\":\"黄山区\"},{\"code\":\"341004\",\"name\":\"徽州区\"},{\"code\":\"341021\",\"name\":\"歙县\"},{\"code\":\"341022\",\"name\":\"休宁县\"},{\"code\":\"341023\",\"name\":\"黟县\"},{\"code\":\"341024\",\"name\":\"祁门县\"}]},{\"code\":\"341100\",\"name\":\"滁州市\",\"children\":[{\"code\":\"341102\",\"name\":\"琅琊区\"},{\"code\":\"341103\",\"name\":\"南谯区\"},{\"code\":\"341122\",\"name\":\"来安县\"},{\"code\":\"341124\",\"name\":\"全椒县\"},{\"code\":\"341125\",\"name\":\"定远县\"},{\"code\":\"341126\",\"name\":\"凤阳县\"},{\"code\":\"341171\",\"name\":\"中新苏滁高新技术产业开发区\"},{\"code\":\"341172\",\"name\":\"滁州经济技术开发区\"},{\"code\":\"341181\",\"name\":\"天长市\"},{\"code\":\"341182\",\"name\":\"明光市\"}]},{\"code\":\"341200\",\"name\":\"阜阳市\",\"children\":[{\"code\":\"341202\",\"name\":\"颍州区\"},{\"code\":\"341203\",\"name\":\"颍东区\"},{\"code\":\"341204\",\"name\":\"颍泉区\"},{\"code\":\"341221\",\"name\":\"临泉县\"},{\"code\":\"341222\",\"name\":\"太和县\"},{\"code\":\"341225\",\"name\":\"阜南县\"},{\"code\":\"341226\",\"name\":\"颍上县\"},{\"code\":\"341271\",\"name\":\"阜阳合肥现代产业园区\"},{\"code\":\"341272\",\"name\":\"阜阳经济技术开发区\"},{\"code\":\"341282\",\"name\":\"界首市\"}]},{\"code\":\"341300\",\"name\":\"宿州市\",\"children\":[{\"code\":\"341302\",\"name\":\"埇桥区\"},{\"code\":\"341321\",\"name\":\"砀山县\"},{\"code\":\"341322\",\"name\":\"萧县\"},{\"code\":\"341323\",\"name\":\"灵璧县\"},{\"code\":\"341324\",\"name\":\"泗县\"},{\"code\":\"341371\",\"name\":\"宿州马鞍山现代产业园区\"},{\"code\":\"341372\",\"name\":\"宿州经济技术开发区\"}]},{\"code\":\"341500\",\"name\":\"六安市\",\"children\":[{\"code\":\"341502\",\"name\":\"金安区\"},{\"code\":\"341503\",\"name\":\"裕安区\"},{\"code\":\"341504\",\"name\":\"叶集区\"},{\"code\":\"341522\",\"name\":\"霍邱县\"},{\"code\":\"341523\",\"name\":\"舒城县\"},{\"code\":\"341524\",\"name\":\"金寨县\"},{\"code\":\"341525\",\"name\":\"霍山县\"}]},{\"code\":\"341600\",\"name\":\"亳州市\",\"children\":[{\"code\":\"341602\",\"name\":\"谯城区\"},{\"code\":\"341621\",\"name\":\"涡阳县\"},{\"code\":\"341622\",\"name\":\"蒙城县\"},{\"code\":\"341623\",\"name\":\"利辛县\"}]},{\"code\":\"341700\",\"name\":\"池州市\",\"children\":[{\"code\":\"341702\",\"name\":\"贵池区\"},{\"code\":\"341721\",\"name\":\"东至县\"},{\"code\":\"341722\",\"name\":\"石台县\"},{\"code\":\"341723\",\"name\":\"青阳县\"}]},{\"code\":\"341800\",\"name\":\"宣城市\",\"children\":[{\"code\":\"341802\",\"name\":\"宣州区\"},{\"code\":\"341821\",\"name\":\"郎溪县\"},{\"code\":\"341823\",\"name\":\"泾县\"},{\"code\":\"341824\",\"name\":\"绩溪县\"},{\"code\":\"341825\",\"name\":\"旌德县\"},{\"code\":\"341871\",\"name\":\"宣城市经济开发区\"},{\"code\":\"341881\",\"name\":\"宁国市\"},{\"code\":\"341882\",\"name\":\"广德市\"}]}]},{\"code\":\"350000\",\"name\":\"福建省\",\"children\":[{\"code\":\"350100\",\"name\":\"福州市\",\"children\":[{\"code\":\"350102\",\"name\":\"鼓楼区\"},{\"code\":\"350103\",\"name\":\"台江区\"},{\"code\":\"350104\",\"name\":\"仓山区\"},{\"code\":\"350105\",\"name\":\"马尾区\"},{\"code\":\"350111\",\"name\":\"晋安区\"},{\"code\":\"350112\",\"name\":\"长乐区\"},{\"code\":\"350121\",\"name\":\"闽侯县\"},{\"code\":\"350122\",\"name\":\"连江县\"},{\"code\":\"350123\",\"name\":\"罗源县\"},{\"code\":\"350124\",\"name\":\"闽清县\"},{\"code\":\"350125\",\"name\":\"永泰县\"},{\"code\":\"350128\",\"name\":\"平潭县\"},{\"code\":\"350181\",\"name\":\"福清市\"}]},{\"code\":\"350200\",\"name\":\"厦门市\",\"children\":[{\"code\":\"350203\",\"name\":\"思明区\"},{\"code\":\"350205\",\"name\":\"海沧区\"},{\"code\":\"350206\",\"name\":\"湖里区\"},{\"code\":\"350211\",\"name\":\"集美区\"},{\"code\":\"350212\",\"name\":\"同安区\"},{\"code\":\"350213\",\"name\":\"翔安区\"}]},{\"code\":\"350300\",\"name\":\"莆田市\",\"children\":[{\"code\":\"350302\",\"name\":\"城厢区\"},{\"code\":\"350303\",\"name\":\"涵江区\"},{\"code\":\"350304\",\"name\":\"荔城区\"},{\"code\":\"350305\",\"name\":\"秀屿区\"},{\"code\":\"350322\",\"name\":\"仙游县\"}]},{\"code\":\"350400\",\"name\":\"三明市\",\"children\":[{\"code\":\"350404\",\"name\":\"三元区\"},{\"code\":\"350405\",\"name\":\"沙县区\"},{\"code\":\"350421\",\"name\":\"明溪县\"},{\"code\":\"350423\",\"name\":\"清流县\"},{\"code\":\"350424\",\"name\":\"宁化县\"},{\"code\":\"350425\",\"name\":\"大田县\"},{\"code\":\"350426\",\"name\":\"尤溪县\"},{\"code\":\"350428\",\"name\":\"将乐县\"},{\"code\":\"350429\",\"name\":\"泰宁县\"},{\"code\":\"350430\",\"name\":\"建宁县\"},{\"code\":\"350481\",\"name\":\"永安市\"}]},{\"code\":\"350500\",\"name\":\"泉州市\",\"children\":[{\"code\":\"350502\",\"name\":\"鲤城区\"},{\"code\":\"350503\",\"name\":\"丰泽区\"},{\"code\":\"350504\",\"name\":\"洛江区\"},{\"code\":\"350505\",\"name\":\"泉港区\"},{\"code\":\"350521\",\"name\":\"惠安县\"},{\"code\":\"350524\",\"name\":\"安溪县\"},{\"code\":\"350525\",\"name\":\"永春县\"},{\"code\":\"350526\",\"name\":\"德化县\"},{\"code\":\"350527\",\"name\":\"金门县\"},{\"code\":\"350581\",\"name\":\"石狮市\"},{\"code\":\"350582\",\"name\":\"晋江市\"},{\"code\":\"350583\",\"name\":\"南安市\"}]},{\"code\":\"350600\",\"name\":\"漳州市\",\"children\":[{\"code\":\"350602\",\"name\":\"芗城区\"},{\"code\":\"350603\",\"name\":\"龙文区\"},{\"code\":\"350604\",\"name\":\"龙海区\"},{\"code\":\"350605\",\"name\":\"长泰区\"},{\"code\":\"350622\",\"name\":\"云霄县\"},{\"code\":\"350623\",\"name\":\"漳浦县\"},{\"code\":\"350624\",\"name\":\"诏安县\"},{\"code\":\"350626\",\"name\":\"东山县\"},{\"code\":\"350627\",\"name\":\"南靖县\"},{\"code\":\"350628\",\"name\":\"平和县\"},{\"code\":\"350629\",\"name\":\"华安县\"}]},{\"code\":\"350700\",\"name\":\"南平市\",\"children\":[{\"code\":\"350702\",\"name\":\"延平区\"},{\"code\":\"350703\",\"name\":\"建阳区\"},{\"code\":\"350721\",\"name\":\"顺昌县\"},{\"code\":\"350722\",\"name\":\"浦城县\"},{\"code\":\"350723\",\"name\":\"光泽县\"},{\"code\":\"350724\",\"name\":\"松溪县\"},{\"code\":\"350725\",\"name\":\"政和县\"},{\"code\":\"350781\",\"name\":\"邵武市\"},{\"code\":\"350782\",\"name\":\"武夷山市\"},{\"code\":\"350783\",\"name\":\"建瓯市\"}]},{\"code\":\"350800\",\"name\":\"龙岩市\",\"children\":[{\"code\":\"350802\",\"name\":\"新罗区\"},{\"code\":\"350803\",\"name\":\"永定区\"},{\"code\":\"350821\",\"name\":\"长汀县\"},{\"code\":\"350823\",\"name\":\"上杭县\"},{\"code\":\"350824\",\"name\":\"武平县\"},{\"code\":\"350825\",\"name\":\"连城县\"},{\"code\":\"350881\",\"name\":\"漳平市\"}]},{\"code\":\"350900\",\"name\":\"宁德市\",\"children\":[{\"code\":\"350902\",\"name\":\"蕉城区\"},{\"code\":\"350921\",\"name\":\"霞浦县\"},{\"code\":\"350922\",\"name\":\"古田县\"},{\"code\":\"350923\",\"name\":\"屏南县\"},{\"code\":\"350924\",\"name\":\"寿宁县\"},{\"code\":\"350925\",\"name\":\"周宁县\"},{\"code\":\"350926\",\"name\":\"柘荣县\"},{\"code\":\"350981\",\"name\":\"福安市\"},{\"code\":\"350982\",\"name\":\"福鼎市\"}]}]},{\"code\":\"360000\",\"name\":\"江西省\",\"children\":[{\"code\":\"360100\",\"name\":\"南昌市\",\"children\":[{\"code\":\"360102\",\"name\":\"东湖区\"},{\"code\":\"360103\",\"name\":\"西湖区\"},{\"code\":\"360104\",\"name\":\"青云谱区\"},{\"code\":\"360111\",\"name\":\"青山湖区\"},{\"code\":\"360112\",\"name\":\"新建区\"},{\"code\":\"360113\",\"name\":\"红谷滩区\"},{\"code\":\"360121\",\"name\":\"南昌县\"},{\"code\":\"360123\",\"name\":\"安义县\"},{\"code\":\"360124\",\"name\":\"进贤县\"}]},{\"code\":\"360200\",\"name\":\"景德镇市\",\"children\":[{\"code\":\"360202\",\"name\":\"昌江区\"},{\"code\":\"360203\",\"name\":\"珠山区\"},{\"code\":\"360222\",\"name\":\"浮梁县\"},{\"code\":\"360281\",\"name\":\"乐平市\"}]},{\"code\":\"360300\",\"name\":\"萍乡市\",\"children\":[{\"code\":\"360302\",\"name\":\"安源区\"},{\"code\":\"360313\",\"name\":\"湘东区\"},{\"code\":\"360321\",\"name\":\"莲花县\"},{\"code\":\"360322\",\"name\":\"上栗县\"},{\"code\":\"360323\",\"name\":\"芦溪县\"}]},{\"code\":\"360400\",\"name\":\"九江市\",\"children\":[{\"code\":\"360402\",\"name\":\"濂溪区\"},{\"code\":\"360403\",\"name\":\"浔阳区\"},{\"code\":\"360404\",\"name\":\"柴桑区\"},{\"code\":\"360423\",\"name\":\"武宁县\"},{\"code\":\"360424\",\"name\":\"修水县\"},{\"code\":\"360425\",\"name\":\"永修县\"},{\"code\":\"360426\",\"name\":\"德安县\"},{\"code\":\"360428\",\"name\":\"都昌县\"},{\"code\":\"360429\",\"name\":\"湖口县\"},{\"code\":\"360430\",\"name\":\"彭泽县\"},{\"code\":\"360481\",\"name\":\"瑞昌市\"},{\"code\":\"360482\",\"name\":\"共青城市\"},{\"code\":\"360483\",\"name\":\"庐山市\"}]},{\"code\":\"360500\",\"name\":\"新余市\",\"children\":[{\"code\":\"360502\",\"name\":\"渝水区\"},{\"code\":\"360521\",\"name\":\"分宜县\"}]},{\"code\":\"360600\",\"name\":\"鹰潭市\",\"children\":[{\"code\":\"360602\",\"name\":\"月湖区\"},{\"code\":\"360603\",\"name\":\"余江区\"},{\"code\":\"360681\",\"name\":\"贵溪市\"}]},{\"code\":\"360700\",\"name\":\"赣州市\",\"children\":[{\"code\":\"360702\",\"name\":\"章贡区\"},{\"code\":\"360703\",\"name\":\"南康区\"},{\"code\":\"360704\",\"name\":\"赣县区\"},{\"code\":\"360722\",\"name\":\"信丰县\"},{\"code\":\"360723\",\"name\":\"大余县\"},{\"code\":\"360724\",\"name\":\"上犹县\"},{\"code\":\"360725\",\"name\":\"崇义县\"},{\"code\":\"360726\",\"name\":\"安远县\"},{\"code\":\"360728\",\"name\":\"定南县\"},{\"code\":\"360729\",\"name\":\"全南县\"},{\"code\":\"360730\",\"name\":\"宁都县\"},{\"code\":\"360731\",\"name\":\"于都县\"},{\"code\":\"360732\",\"name\":\"兴国县\"},{\"code\":\"360733\",\"name\":\"会昌县\"},{\"code\":\"360734\",\"name\":\"寻乌县\"},{\"code\":\"360735\",\"name\":\"石城县\"},{\"code\":\"360781\",\"name\":\"瑞金市\"},{\"code\":\"360783\",\"name\":\"龙南市\"}]},{\"code\":\"360800\",\"name\":\"吉安市\",\"children\":[{\"code\":\"360802\",\"name\":\"吉州区\"},{\"code\":\"360803\",\"name\":\"青原区\"},{\"code\":\"360821\",\"name\":\"吉安县\"},{\"code\":\"360822\",\"name\":\"吉水县\"},{\"code\":\"360823\",\"name\":\"峡江县\"},{\"code\":\"360824\",\"name\":\"新干县\"},{\"code\":\"360825\",\"name\":\"永丰县\"},{\"code\":\"360826\",\"name\":\"泰和县\"},{\"code\":\"360827\",\"name\":\"遂川县\"},{\"code\":\"360828\",\"name\":\"万安县\"},{\"code\":\"360829\",\"name\":\"安福县\"},{\"code\":\"360830\",\"name\":\"永新县\"},{\"code\":\"360881\",\"name\":\"井冈山市\"}]},{\"code\":\"360900\",\"name\":\"宜春市\",\"children\":[{\"code\":\"360902\",\"name\":\"袁州区\"},{\"code\":\"360921\",\"name\":\"奉新县\"},{\"code\":\"360922\",\"name\":\"万载县\"},{\"code\":\"360923\",\"name\":\"上高县\"},{\"code\":\"360924\",\"name\":\"宜丰县\"},{\"code\":\"360925\",\"name\":\"靖安县\"},{\"code\":\"360926\",\"name\":\"铜鼓县\"},{\"code\":\"360981\",\"name\":\"丰城市\"},{\"code\":\"360982\",\"name\":\"樟树市\"},{\"code\":\"360983\",\"name\":\"高安市\"}]},{\"code\":\"361000\",\"name\":\"抚州市\",\"children\":[{\"code\":\"361002\",\"name\":\"临川区\"},{\"code\":\"361003\",\"name\":\"东乡区\"},{\"code\":\"361021\",\"name\":\"南城县\"},{\"code\":\"361022\",\"name\":\"黎川县\"},{\"code\":\"361023\",\"name\":\"南丰县\"},{\"code\":\"361024\",\"name\":\"崇仁县\"},{\"code\":\"361025\",\"name\":\"乐安县\"},{\"code\":\"361026\",\"name\":\"宜黄县\"},{\"code\":\"361027\",\"name\":\"金溪县\"},{\"code\":\"361028\",\"name\":\"资溪县\"},{\"code\":\"361030\",\"name\":\"广昌县\"}]},{\"code\":\"361100\",\"name\":\"上饶市\",\"children\":[{\"code\":\"361102\",\"name\":\"信州区\"},{\"code\":\"361103\",\"name\":\"广丰区\"},{\"code\":\"361104\",\"name\":\"广信区\"},{\"code\":\"361123\",\"name\":\"玉山县\"},{\"code\":\"361124\",\"name\":\"铅山县\"},{\"code\":\"361125\",\"name\":\"横峰县\"},{\"code\":\"361126\",\"name\":\"弋阳县\"},{\"code\":\"361127\",\"name\":\"余干县\"},{\"code\":\"361128\",\"name\":\"鄱阳县\"},{\"code\":\"361129\",\"name\":\"万年县\"},{\"code\":\"361130\",\"name\":\"婺源县\"},{\"code\":\"361181\",\"name\":\"德兴市\"}]}]},{\"code\":\"370000\",\"name\":\"山东省\",\"children\":[{\"code\":\"370100\",\"name\":\"济南市\",\"children\":[{\"code\":\"370102\",\"name\":\"历下区\"},{\"code\":\"370103\",\"name\":\"市中区\"},{\"code\":\"370104\",\"name\":\"槐荫区\"},{\"code\":\"370105\",\"name\":\"天桥区\"},{\"code\":\"370112\",\"name\":\"历城区\"},{\"code\":\"370113\",\"name\":\"长清区\"},{\"code\":\"370114\",\"name\":\"章丘区\"},{\"code\":\"370115\",\"name\":\"济阳区\"},{\"code\":\"370116\",\"name\":\"莱芜区\"},{\"code\":\"370117\",\"name\":\"钢城区\"},{\"code\":\"370124\",\"name\":\"平阴县\"},{\"code\":\"370126\",\"name\":\"商河县\"},{\"code\":\"370171\",\"name\":\"济南高新技术产业开发区\"}]},{\"code\":\"370200\",\"name\":\"青岛市\",\"children\":[{\"code\":\"370202\",\"name\":\"市南区\"},{\"code\":\"370203\",\"name\":\"市北区\"},{\"code\":\"370211\",\"name\":\"黄岛区\"},{\"code\":\"370212\",\"name\":\"崂山区\"},{\"code\":\"370213\",\"name\":\"李沧区\"},{\"code\":\"370214\",\"name\":\"城阳区\"},{\"code\":\"370215\",\"name\":\"即墨区\"},{\"code\":\"370271\",\"name\":\"青岛高新技术产业开发区\"},{\"code\":\"370281\",\"name\":\"胶州市\"},{\"code\":\"370283\",\"name\":\"平度市\"},{\"code\":\"370285\",\"name\":\"莱西市\"}]},{\"code\":\"370300\",\"name\":\"淄博市\",\"children\":[{\"code\":\"370302\",\"name\":\"淄川区\"},{\"code\":\"370303\",\"name\":\"张店区\"},{\"code\":\"370304\",\"name\":\"博山区\"},{\"code\":\"370305\",\"name\":\"临淄区\"},{\"code\":\"370306\",\"name\":\"周村区\"},{\"code\":\"370321\",\"name\":\"桓台县\"},{\"code\":\"370322\",\"name\":\"高青县\"},{\"code\":\"370323\",\"name\":\"沂源县\"}]},{\"code\":\"370400\",\"name\":\"枣庄市\",\"children\":[{\"code\":\"370402\",\"name\":\"市中区\"},{\"code\":\"370403\",\"name\":\"薛城区\"},{\"code\":\"370404\",\"name\":\"峄城区\"},{\"code\":\"370405\",\"name\":\"台儿庄区\"},{\"code\":\"370406\",\"name\":\"山亭区\"},{\"code\":\"370481\",\"name\":\"滕州市\"}]},{\"code\":\"370500\",\"name\":\"东营市\",\"children\":[{\"code\":\"370502\",\"name\":\"东营区\"},{\"code\":\"370503\",\"name\":\"河口区\"},{\"code\":\"370505\",\"name\":\"垦利区\"},{\"code\":\"370522\",\"name\":\"利津县\"},{\"code\":\"370523\",\"name\":\"广饶县\"},{\"code\":\"370571\",\"name\":\"东营经济技术开发区\"},{\"code\":\"370572\",\"name\":\"东营港经济开发区\"}]},{\"code\":\"370600\",\"name\":\"烟台市\",\"children\":[{\"code\":\"370602\",\"name\":\"芝罘区\"},{\"code\":\"370611\",\"name\":\"福山区\"},{\"code\":\"370612\",\"name\":\"牟平区\"},{\"code\":\"370613\",\"name\":\"莱山区\"},{\"code\":\"370614\",\"name\":\"蓬莱区\"},{\"code\":\"370671\",\"name\":\"烟台高新技术产业开发区\"},{\"code\":\"370672\",\"name\":\"烟台经济技术开发区\"},{\"code\":\"370681\",\"name\":\"龙口市\"},{\"code\":\"370682\",\"name\":\"莱阳市\"},{\"code\":\"370683\",\"name\":\"莱州市\"},{\"code\":\"370685\",\"name\":\"招远市\"},{\"code\":\"370686\",\"name\":\"栖霞市\"},{\"code\":\"370687\",\"name\":\"海阳市\"}]},{\"code\":\"370700\",\"name\":\"潍坊市\",\"children\":[{\"code\":\"370702\",\"name\":\"潍城区\"},{\"code\":\"370703\",\"name\":\"寒亭区\"},{\"code\":\"370704\",\"name\":\"坊子区\"},{\"code\":\"370705\",\"name\":\"奎文区\"},{\"code\":\"370724\",\"name\":\"临朐县\"},{\"code\":\"370725\",\"name\":\"昌乐县\"},{\"code\":\"370772\",\"name\":\"潍坊滨海经济技术开发区\"},{\"code\":\"370781\",\"name\":\"青州市\"},{\"code\":\"370782\",\"name\":\"诸城市\"},{\"code\":\"370783\",\"name\":\"寿光市\"},{\"code\":\"370784\",\"name\":\"安丘市\"},{\"code\":\"370785\",\"name\":\"高密市\"},{\"code\":\"370786\",\"name\":\"昌邑市\"}]},{\"code\":\"370800\",\"name\":\"济宁市\",\"children\":[{\"code\":\"370811\",\"name\":\"任城区\"},{\"code\":\"370812\",\"name\":\"兖州区\"},{\"code\":\"370826\",\"name\":\"微山县\"},{\"code\":\"370827\",\"name\":\"鱼台县\"},{\"code\":\"370828\",\"name\":\"金乡县\"},{\"code\":\"370829\",\"name\":\"嘉祥县\"},{\"code\":\"370830\",\"name\":\"汶上县\"},{\"code\":\"370831\",\"name\":\"泗水县\"},{\"code\":\"370832\",\"name\":\"梁山县\"},{\"code\":\"370871\",\"name\":\"济宁高新技术产业开发区\"},{\"code\":\"370881\",\"name\":\"曲阜市\"},{\"code\":\"370883\",\"name\":\"邹城市\"}]},{\"code\":\"370900\",\"name\":\"泰安市\",\"children\":[{\"code\":\"370902\",\"name\":\"泰山区\"},{\"code\":\"370911\",\"name\":\"岱岳区\"},{\"code\":\"370921\",\"name\":\"宁阳县\"},{\"code\":\"370923\",\"name\":\"东平县\"},{\"code\":\"370982\",\"name\":\"新泰市\"},{\"code\":\"370983\",\"name\":\"肥城市\"}]},{\"code\":\"371000\",\"name\":\"威海市\",\"children\":[{\"code\":\"371002\",\"name\":\"环翠区\"},{\"code\":\"371003\",\"name\":\"文登区\"},{\"code\":\"371071\",\"name\":\"威海火炬高技术产业开发区\"},{\"code\":\"371072\",\"name\":\"威海经济技术开发区\"},{\"code\":\"371073\",\"name\":\"威海临港经济技术开发区\"},{\"code\":\"371082\",\"name\":\"荣成市\"},{\"code\":\"371083\",\"name\":\"乳山市\"}]},{\"code\":\"371100\",\"name\":\"日照市\",\"children\":[{\"code\":\"371102\",\"name\":\"东港区\"},{\"code\":\"371103\",\"name\":\"岚山区\"},{\"code\":\"371121\",\"name\":\"五莲县\"},{\"code\":\"371122\",\"name\":\"莒县\"},{\"code\":\"371171\",\"name\":\"日照经济技术开发区\"}]},{\"code\":\"371300\",\"name\":\"临沂市\",\"children\":[{\"code\":\"371302\",\"name\":\"兰山区\"},{\"code\":\"371311\",\"name\":\"罗庄区\"},{\"code\":\"371312\",\"name\":\"河东区\"},{\"code\":\"371321\",\"name\":\"沂南县\"},{\"code\":\"371322\",\"name\":\"郯城县\"},{\"code\":\"371323\",\"name\":\"沂水县\"},{\"code\":\"371324\",\"name\":\"兰陵县\"},{\"code\":\"371325\",\"name\":\"费县\"},{\"code\":\"371326\",\"name\":\"平邑县\"},{\"code\":\"371327\",\"name\":\"莒南县\"},{\"code\":\"371328\",\"name\":\"蒙阴县\"},{\"code\":\"371329\",\"name\":\"临沭县\"},{\"code\":\"371371\",\"name\":\"临沂高新技术产业开发区\"}]},{\"code\":\"371400\",\"name\":\"德州市\",\"children\":[{\"code\":\"371402\",\"name\":\"德城区\"},{\"code\":\"371403\",\"name\":\"陵城区\"},{\"code\":\"371422\",\"name\":\"宁津县\"},{\"code\":\"371423\",\"name\":\"庆云县\"},{\"code\":\"371424\",\"name\":\"临邑县\"},{\"code\":\"371425\",\"name\":\"齐河县\"},{\"code\":\"371426\",\"name\":\"平原县\"},{\"code\":\"371427\",\"name\":\"夏津县\"},{\"code\":\"371428\",\"name\":\"武城县\"},{\"code\":\"371471\",\"name\":\"德州天衢新区\"},{\"code\":\"371481\",\"name\":\"乐陵市\"},{\"code\":\"371482\",\"name\":\"禹城市\"}]},{\"code\":\"371500\",\"name\":\"聊城市\",\"children\":[{\"code\":\"371502\",\"name\":\"东昌府区\"},{\"code\":\"371503\",\"name\":\"茌平区\"},{\"code\":\"371521\",\"name\":\"阳谷县\"},{\"code\":\"371522\",\"name\":\"莘县\"},{\"code\":\"371524\",\"name\":\"东阿县\"},{\"code\":\"371525\",\"name\":\"冠县\"},{\"code\":\"371526\",\"name\":\"高唐县\"},{\"code\":\"371581\",\"name\":\"临清市\"}]},{\"code\":\"371600\",\"name\":\"滨州市\",\"children\":[{\"code\":\"371602\",\"name\":\"滨城区\"},{\"code\":\"371603\",\"name\":\"沾化区\"},{\"code\":\"371621\",\"name\":\"惠民县\"},{\"code\":\"371622\",\"name\":\"阳信县\"},{\"code\":\"371623\",\"name\":\"无棣县\"},{\"code\":\"371625\",\"name\":\"博兴县\"},{\"code\":\"371681\",\"name\":\"邹平市\"}]},{\"code\":\"371700\",\"name\":\"菏泽市\",\"children\":[{\"code\":\"371702\",\"name\":\"牡丹区\"},{\"code\":\"371703\",\"name\":\"定陶区\"},{\"code\":\"371721\",\"name\":\"曹县\"},{\"code\":\"371722\",\"name\":\"单县\"},{\"code\":\"371723\",\"name\":\"成武县\"},{\"code\":\"371724\",\"name\":\"巨野县\"},{\"code\":\"371725\",\"name\":\"郓城县\"},{\"code\":\"371726\",\"name\":\"鄄城县\"},{\"code\":\"371728\",\"name\":\"东明县\"},{\"code\":\"371771\",\"name\":\"菏泽经济技术开发区\"},{\"code\":\"371772\",\"name\":\"菏泽高新技术开发区\"}]}]},{\"code\":\"410000\",\"name\":\"河南省\",\"children\":[{\"code\":\"410100\",\"name\":\"郑州市\",\"children\":[{\"code\":\"410102\",\"name\":\"中原区\"},{\"code\":\"410103\",\"name\":\"二七区\"},{\"code\":\"410104\",\"name\":\"管城回族区\"},{\"code\":\"410105\",\"name\":\"金水区\"},{\"code\":\"410106\",\"name\":\"上街区\"},{\"code\":\"410108\",\"name\":\"惠济区\"},{\"code\":\"410122\",\"name\":\"中牟县\"},{\"code\":\"410171\",\"name\":\"郑州经济技术开发区\"},{\"code\":\"410172\",\"name\":\"郑州高新技术产业开发区\"},{\"code\":\"410173\",\"name\":\"郑州航空港经济综合实验区\"},{\"code\":\"410181\",\"name\":\"巩义市\"},{\"code\":\"410182\",\"name\":\"荥阳市\"},{\"code\":\"410183\",\"name\":\"新密市\"},{\"code\":\"410184\",\"name\":\"新郑市\"},{\"code\":\"410185\",\"name\":\"登封市\"}]},{\"code\":\"410200\",\"name\":\"开封市\",\"children\":[{\"code\":\"410202\",\"name\":\"龙亭区\"},{\"code\":\"410203\",\"name\":\"顺河回族区\"},{\"code\":\"410204\",\"name\":\"鼓楼区\"},{\"code\":\"410205\",\"name\":\"禹王台区\"},{\"code\":\"410212\",\"name\":\"祥符区\"},{\"code\":\"410221\",\"name\":\"杞县\"},{\"code\":\"410222\",\"name\":\"通许县\"},{\"code\":\"410223\",\"name\":\"尉氏县\"},{\"code\":\"410225\",\"name\":\"兰考县\"}]},{\"code\":\"410300\",\"name\":\"洛阳市\",\"children\":[{\"code\":\"410302\",\"name\":\"老城区\"},{\"code\":\"410303\",\"name\":\"西工区\"},{\"code\":\"410304\",\"name\":\"瀍河回族区\"},{\"code\":\"410305\",\"name\":\"涧西区\"},{\"code\":\"410307\",\"name\":\"偃师区\"},{\"code\":\"410308\",\"name\":\"孟津区\"},{\"code\":\"410311\",\"name\":\"洛龙区\"},{\"code\":\"410323\",\"name\":\"新安县\"},{\"code\":\"410324\",\"name\":\"栾川县\"},{\"code\":\"410325\",\"name\":\"嵩县\"},{\"code\":\"410326\",\"name\":\"汝阳县\"},{\"code\":\"410327\",\"name\":\"宜阳县\"},{\"code\":\"410328\",\"name\":\"洛宁县\"},{\"code\":\"410329\",\"name\":\"伊川县\"},{\"code\":\"410371\",\"name\":\"洛阳高新技术产业开发区\"}]},{\"code\":\"410400\",\"name\":\"平顶山市\",\"children\":[{\"code\":\"410402\",\"name\":\"新华区\"},{\"code\":\"410403\",\"name\":\"卫东区\"},{\"code\":\"410404\",\"name\":\"石龙区\"},{\"code\":\"410411\",\"name\":\"湛河区\"},{\"code\":\"410421\",\"name\":\"宝丰县\"},{\"code\":\"410422\",\"name\":\"叶县\"},{\"code\":\"410423\",\"name\":\"鲁山县\"},{\"code\":\"410425\",\"name\":\"郏县\"},{\"code\":\"410471\",\"name\":\"平顶山高新技术产业开发区\"},{\"code\":\"410472\",\"name\":\"平顶山市城乡一体化示范区\"},{\"code\":\"410481\",\"name\":\"舞钢市\"},{\"code\":\"410482\",\"name\":\"汝州市\"}]},{\"code\":\"410500\",\"name\":\"安阳市\",\"children\":[{\"code\":\"410502\",\"name\":\"文峰区\"},{\"code\":\"410503\",\"name\":\"北关区\"},{\"code\":\"410505\",\"name\":\"殷都区\"},{\"code\":\"410506\",\"name\":\"龙安区\"},{\"code\":\"410522\",\"name\":\"安阳县\"},{\"code\":\"410523\",\"name\":\"汤阴县\"},{\"code\":\"410526\",\"name\":\"滑县\"},{\"code\":\"410527\",\"name\":\"内黄县\"},{\"code\":\"410571\",\"name\":\"安阳高新技术产业开发区\"},{\"code\":\"410581\",\"name\":\"林州市\"}]},{\"code\":\"410600\",\"name\":\"鹤壁市\",\"children\":[{\"code\":\"410602\",\"name\":\"鹤山区\"},{\"code\":\"410603\",\"name\":\"山城区\"},{\"code\":\"410611\",\"name\":\"淇滨区\"},{\"code\":\"410621\",\"name\":\"浚县\"},{\"code\":\"410622\",\"name\":\"淇县\"},{\"code\":\"410671\",\"name\":\"鹤壁经济技术开发区\"}]},{\"code\":\"410700\",\"name\":\"新乡市\",\"children\":[{\"code\":\"410702\",\"name\":\"红旗区\"},{\"code\":\"410703\",\"name\":\"卫滨区\"},{\"code\":\"410704\",\"name\":\"凤泉区\"},{\"code\":\"410711\",\"name\":\"牧野区\"},{\"code\":\"410721\",\"name\":\"新乡县\"},{\"code\":\"410724\",\"name\":\"获嘉县\"},{\"code\":\"410725\",\"name\":\"原阳县\"},{\"code\":\"410726\",\"name\":\"延津县\"},{\"code\":\"410727\",\"name\":\"封丘县\"},{\"code\":\"410771\",\"name\":\"新乡高新技术产业开发区\"},{\"code\":\"410772\",\"name\":\"新乡经济技术开发区\"},{\"code\":\"410773\",\"name\":\"新乡市平原城乡一体化示范区\"},{\"code\":\"410781\",\"name\":\"卫辉市\"},{\"code\":\"410782\",\"name\":\"辉县市\"},{\"code\":\"410783\",\"name\":\"长垣市\"}]},{\"code\":\"410800\",\"name\":\"焦作市\",\"children\":[{\"code\":\"410802\",\"name\":\"解放区\"},{\"code\":\"410803\",\"name\":\"中站区\"},{\"code\":\"410804\",\"name\":\"马村区\"},{\"code\":\"410811\",\"name\":\"山阳区\"},{\"code\":\"410821\",\"name\":\"修武县\"},{\"code\":\"410822\",\"name\":\"博爱县\"},{\"code\":\"410823\",\"name\":\"武陟县\"},{\"code\":\"410825\",\"name\":\"温县\"},{\"code\":\"410871\",\"name\":\"焦作城乡一体化示范区\"},{\"code\":\"410882\",\"name\":\"沁阳市\"},{\"code\":\"410883\",\"name\":\"孟州市\"}]},{\"code\":\"410900\",\"name\":\"濮阳市\",\"children\":[{\"code\":\"410902\",\"name\":\"华龙区\"},{\"code\":\"410922\",\"name\":\"清丰县\"},{\"code\":\"410923\",\"name\":\"南乐县\"},{\"code\":\"410926\",\"name\":\"范县\"},{\"code\":\"410927\",\"name\":\"台前县\"},{\"code\":\"410928\",\"name\":\"濮阳县\"},{\"code\":\"410971\",\"name\":\"河南濮阳工业园区\"},{\"code\":\"410972\",\"name\":\"濮阳经济技术开发区\"}]},{\"code\":\"411000\",\"name\":\"许昌市\",\"children\":[{\"code\":\"411002\",\"name\":\"魏都区\"},{\"code\":\"411003\",\"name\":\"建安区\"},{\"code\":\"411024\",\"name\":\"鄢陵县\"},{\"code\":\"411025\",\"name\":\"襄城县\"},{\"code\":\"411071\",\"name\":\"许昌经济技术开发区\"},{\"code\":\"411081\",\"name\":\"禹州市\"},{\"code\":\"411082\",\"name\":\"长葛市\"}]},{\"code\":\"411100\",\"name\":\"漯河市\",\"children\":[{\"code\":\"411102\",\"name\":\"源汇区\"},{\"code\":\"411103\",\"name\":\"郾城区\"},{\"code\":\"411104\",\"name\":\"召陵区\"},{\"code\":\"411121\",\"name\":\"舞阳县\"},{\"code\":\"411122\",\"name\":\"临颍县\"},{\"code\":\"411171\",\"name\":\"漯河经济技术开发区\"}]},{\"code\":\"411200\",\"name\":\"三门峡市\",\"children\":[{\"code\":\"411202\",\"name\":\"湖滨区\"},{\"code\":\"411203\",\"name\":\"陕州区\"},{\"code\":\"411221\",\"name\":\"渑池县\"},{\"code\":\"411224\",\"name\":\"卢氏县\"},{\"code\":\"411271\",\"name\":\"河南三门峡经济开发区\"},{\"code\":\"411281\",\"name\":\"义马市\"},{\"code\":\"411282\",\"name\":\"灵宝市\"}]},{\"code\":\"411300\",\"name\":\"南阳市\",\"children\":[{\"code\":\"411302\",\"name\":\"宛城区\"},{\"code\":\"411303\",\"name\":\"卧龙区\"},{\"code\":\"411321\",\"name\":\"南召县\"},{\"code\":\"411322\",\"name\":\"方城县\"},{\"code\":\"411323\",\"name\":\"西峡县\"},{\"code\":\"411324\",\"name\":\"镇平县\"},{\"code\":\"411325\",\"name\":\"内乡县\"},{\"code\":\"411326\",\"name\":\"淅川县\"},{\"code\":\"411327\",\"name\":\"社旗县\"},{\"code\":\"411328\",\"name\":\"唐河县\"},{\"code\":\"411329\",\"name\":\"新野县\"},{\"code\":\"411330\",\"name\":\"桐柏县\"},{\"code\":\"411371\",\"name\":\"南阳高新技术产业开发区\"},{\"code\":\"411372\",\"name\":\"南阳市城乡一体化示范区\"},{\"code\":\"411381\",\"name\":\"邓州市\"}]},{\"code\":\"411400\",\"name\":\"商丘市\",\"children\":[{\"code\":\"411402\",\"name\":\"梁园区\"},{\"code\":\"411403\",\"name\":\"睢阳区\"},{\"code\":\"411421\",\"name\":\"民权县\"},{\"code\":\"411422\",\"name\":\"睢县\"},{\"code\":\"411423\",\"name\":\"宁陵县\"},{\"code\":\"411424\",\"name\":\"柘城县\"},{\"code\":\"411425\",\"name\":\"虞城县\"},{\"code\":\"411426\",\"name\":\"夏邑县\"},{\"code\":\"411471\",\"name\":\"豫东综合物流产业聚集区\"},{\"code\":\"411472\",\"name\":\"河南商丘经济开发区\"},{\"code\":\"411481\",\"name\":\"永城市\"}]},{\"code\":\"411500\",\"name\":\"信阳市\",\"children\":[{\"code\":\"411502\",\"name\":\"浉河区\"},{\"code\":\"411503\",\"name\":\"平桥区\"},{\"code\":\"411521\",\"name\":\"罗山县\"},{\"code\":\"411522\",\"name\":\"光山县\"},{\"code\":\"411523\",\"name\":\"新县\"},{\"code\":\"411524\",\"name\":\"商城县\"},{\"code\":\"411525\",\"name\":\"固始县\"},{\"code\":\"411526\",\"name\":\"潢川县\"},{\"code\":\"411527\",\"name\":\"淮滨县\"},{\"code\":\"411528\",\"name\":\"息县\"},{\"code\":\"411571\",\"name\":\"信阳高新技术产业开发区\"}]},{\"code\":\"411600\",\"name\":\"周口市\",\"children\":[{\"code\":\"411602\",\"name\":\"川汇区\"},{\"code\":\"411603\",\"name\":\"淮阳区\"},{\"code\":\"411621\",\"name\":\"扶沟县\"},{\"code\":\"411622\",\"name\":\"西华县\"},{\"code\":\"411623\",\"name\":\"商水县\"},{\"code\":\"411624\",\"name\":\"沈丘县\"},{\"code\":\"411625\",\"name\":\"郸城县\"},{\"code\":\"411627\",\"name\":\"太康县\"},{\"code\":\"411628\",\"name\":\"鹿邑县\"},{\"code\":\"411671\",\"name\":\"河南周口经济开发区\"},{\"code\":\"411681\",\"name\":\"项城市\"}]},{\"code\":\"411700\",\"name\":\"驻马店市\",\"children\":[{\"code\":\"411702\",\"name\":\"驿城区\"},{\"code\":\"411721\",\"name\":\"西平县\"},{\"code\":\"411722\",\"name\":\"上蔡县\"},{\"code\":\"411723\",\"name\":\"平舆县\"},{\"code\":\"411724\",\"name\":\"正阳县\"},{\"code\":\"411725\",\"name\":\"确山县\"},{\"code\":\"411726\",\"name\":\"泌阳县\"},{\"code\":\"411727\",\"name\":\"汝南县\"},{\"code\":\"411728\",\"name\":\"遂平县\"},{\"code\":\"411729\",\"name\":\"新蔡县\"},{\"code\":\"411771\",\"name\":\"河南驻马店经济开发区\"}]},{\"code\":\"419000\",\"name\":\"省直辖县级行政区划\",\"children\":[{\"code\":\"419001\",\"name\":\"济源市\"}]}]},{\"code\":\"420000\",\"name\":\"湖北省\",\"children\":[{\"code\":\"420100\",\"name\":\"武汉市\",\"children\":[{\"code\":\"420102\",\"name\":\"江岸区\"},{\"code\":\"420103\",\"name\":\"江汉区\"},{\"code\":\"420104\",\"name\":\"硚口区\"},{\"code\":\"420105\",\"name\":\"汉阳区\"},{\"code\":\"420106\",\"name\":\"武昌区\"},{\"code\":\"420107\",\"name\":\"青山区\"},{\"code\":\"420111\",\"name\":\"洪山区\"},{\"code\":\"420112\",\"name\":\"东西湖区\"},{\"code\":\"420113\",\"name\":\"汉南区\"},{\"code\":\"420114\",\"name\":\"蔡甸区\"},{\"code\":\"420115\",\"name\":\"江夏区\"},{\"code\":\"420116\",\"name\":\"黄陂区\"},{\"code\":\"420117\",\"name\":\"新洲区\"}]},{\"code\":\"420200\",\"name\":\"黄石市\",\"children\":[{\"code\":\"420202\",\"name\":\"黄石港区\"},{\"code\":\"420203\",\"name\":\"西塞山区\"},{\"code\":\"420204\",\"name\":\"下陆区\"},{\"code\":\"420205\",\"name\":\"铁山区\"},{\"code\":\"420222\",\"name\":\"阳新县\"},{\"code\":\"420281\",\"name\":\"大冶市\"}]},{\"code\":\"420300\",\"name\":\"十堰市\",\"children\":[{\"code\":\"420302\",\"name\":\"茅箭区\"},{\"code\":\"420303\",\"name\":\"张湾区\"},{\"code\":\"420304\",\"name\":\"郧阳区\"},{\"code\":\"420322\",\"name\":\"郧西县\"},{\"code\":\"420323\",\"name\":\"竹山县\"},{\"code\":\"420324\",\"name\":\"竹溪县\"},{\"code\":\"420325\",\"name\":\"房县\"},{\"code\":\"420381\",\"name\":\"丹江口市\"}]},{\"code\":\"420500\",\"name\":\"宜昌市\",\"children\":[{\"code\":\"420502\",\"name\":\"西陵区\"},{\"code\":\"420503\",\"name\":\"伍家岗区\"},{\"code\":\"420504\",\"name\":\"点军区\"},{\"code\":\"420505\",\"name\":\"猇亭区\"},{\"code\":\"420506\",\"name\":\"夷陵区\"},{\"code\":\"420525\",\"name\":\"远安县\"},{\"code\":\"420526\",\"name\":\"兴山县\"},{\"code\":\"420527\",\"name\":\"秭归县\"},{\"code\":\"420528\",\"name\":\"长阳土家族自治县\"},{\"code\":\"420529\",\"name\":\"五峰土家族自治县\"},{\"code\":\"420581\",\"name\":\"宜都市\"},{\"code\":\"420582\",\"name\":\"当阳市\"},{\"code\":\"420583\",\"name\":\"枝江市\"}]},{\"code\":\"420600\",\"name\":\"襄阳市\",\"children\":[{\"code\":\"420602\",\"name\":\"襄城区\"},{\"code\":\"420606\",\"name\":\"樊城区\"},{\"code\":\"420607\",\"name\":\"襄州区\"},{\"code\":\"420624\",\"name\":\"南漳县\"},{\"code\":\"420625\",\"name\":\"谷城县\"},{\"code\":\"420626\",\"name\":\"保康县\"},{\"code\":\"420682\",\"name\":\"老河口市\"},{\"code\":\"420683\",\"name\":\"枣阳市\"},{\"code\":\"420684\",\"name\":\"宜城市\"}]},{\"code\":\"420700\",\"name\":\"鄂州市\",\"children\":[{\"code\":\"420702\",\"name\":\"梁子湖区\"},{\"code\":\"420703\",\"name\":\"华容区\"},{\"code\":\"420704\",\"name\":\"鄂城区\"}]},{\"code\":\"420800\",\"name\":\"荆门市\",\"children\":[{\"code\":\"420802\",\"name\":\"东宝区\"},{\"code\":\"420804\",\"name\":\"掇刀区\"},{\"code\":\"420822\",\"name\":\"沙洋县\"},{\"code\":\"420881\",\"name\":\"钟祥市\"},{\"code\":\"420882\",\"name\":\"京山市\"}]},{\"code\":\"420900\",\"name\":\"孝感市\",\"children\":[{\"code\":\"420902\",\"name\":\"孝南区\"},{\"code\":\"420921\",\"name\":\"孝昌县\"},{\"code\":\"420922\",\"name\":\"大悟县\"},{\"code\":\"420923\",\"name\":\"云梦县\"},{\"code\":\"420981\",\"name\":\"应城市\"},{\"code\":\"420982\",\"name\":\"安陆市\"},{\"code\":\"420984\",\"name\":\"汉川市\"}]},{\"code\":\"421000\",\"name\":\"荆州市\",\"children\":[{\"code\":\"421002\",\"name\":\"沙市区\"},{\"code\":\"421003\",\"name\":\"荆州区\"},{\"code\":\"421022\",\"name\":\"公安县\"},{\"code\":\"421024\",\"name\":\"江陵县\"},{\"code\":\"421071\",\"name\":\"荆州经济技术开发区\"},{\"code\":\"421081\",\"name\":\"石首市\"},{\"code\":\"421083\",\"name\":\"洪湖市\"},{\"code\":\"421087\",\"name\":\"松滋市\"},{\"code\":\"421088\",\"name\":\"监利市\"}]},{\"code\":\"421100\",\"name\":\"黄冈市\",\"children\":[{\"code\":\"421102\",\"name\":\"黄州区\"},{\"code\":\"421121\",\"name\":\"团风县\"},{\"code\":\"421122\",\"name\":\"红安县\"},{\"code\":\"421123\",\"name\":\"罗田县\"},{\"code\":\"421124\",\"name\":\"英山县\"},{\"code\":\"421125\",\"name\":\"浠水县\"},{\"code\":\"421126\",\"name\":\"蕲春县\"},{\"code\":\"421127\",\"name\":\"黄梅县\"},{\"code\":\"421171\",\"name\":\"龙感湖管理区\"},{\"code\":\"421181\",\"name\":\"麻城市\"},{\"code\":\"421182\",\"name\":\"武穴市\"}]},{\"code\":\"421200\",\"name\":\"咸宁市\",\"children\":[{\"code\":\"421202\",\"name\":\"咸安区\"},{\"code\":\"421221\",\"name\":\"嘉鱼县\"},{\"code\":\"421222\",\"name\":\"通城县\"},{\"code\":\"421223\",\"name\":\"崇阳县\"},{\"code\":\"421224\",\"name\":\"通山县\"},{\"code\":\"421281\",\"name\":\"赤壁市\"}]},{\"code\":\"421300\",\"name\":\"随州市\",\"children\":[{\"code\":\"421303\",\"name\":\"曾都区\"},{\"code\":\"421321\",\"name\":\"随县\"},{\"code\":\"421381\",\"name\":\"广水市\"}]},{\"code\":\"422800\",\"name\":\"恩施土家族苗族自治州\",\"children\":[{\"code\":\"422801\",\"name\":\"恩施市\"},{\"code\":\"422802\",\"name\":\"利川市\"},{\"code\":\"422822\",\"name\":\"建始县\"},{\"code\":\"422823\",\"name\":\"巴东县\"},{\"code\":\"422825\",\"name\":\"宣恩县\"},{\"code\":\"422826\",\"name\":\"咸丰县\"},{\"code\":\"422827\",\"name\":\"来凤县\"},{\"code\":\"422828\",\"name\":\"鹤峰县\"}]},{\"code\":\"429000\",\"name\":\"省直辖县级行政区划\",\"children\":[{\"code\":\"429004\",\"name\":\"仙桃市\"},{\"code\":\"429005\",\"name\":\"潜江市\"},{\"code\":\"429006\",\"name\":\"天门市\"},{\"code\":\"429021\",\"name\":\"神农架林区\"}]}]},{\"code\":\"430000\",\"name\":\"湖南省\",\"children\":[{\"code\":\"430100\",\"name\":\"长沙市\",\"children\":[{\"code\":\"430102\",\"name\":\"芙蓉区\"},{\"code\":\"430103\",\"name\":\"天心区\"},{\"code\":\"430104\",\"name\":\"岳麓区\"},{\"code\":\"430105\",\"name\":\"开福区\"},{\"code\":\"430111\",\"name\":\"雨花区\"},{\"code\":\"430112\",\"name\":\"望城区\"},{\"code\":\"430121\",\"name\":\"长沙县\"},{\"code\":\"430181\",\"name\":\"浏阳市\"},{\"code\":\"430182\",\"name\":\"宁乡市\"}]},{\"code\":\"430200\",\"name\":\"株洲市\",\"children\":[{\"code\":\"430202\",\"name\":\"荷塘区\"},{\"code\":\"430203\",\"name\":\"芦淞区\"},{\"code\":\"430204\",\"name\":\"石峰区\"},{\"code\":\"430211\",\"name\":\"天元区\"},{\"code\":\"430212\",\"name\":\"渌口区\"},{\"code\":\"430223\",\"name\":\"攸县\"},{\"code\":\"430224\",\"name\":\"茶陵县\"},{\"code\":\"430225\",\"name\":\"炎陵县\"},{\"code\":\"430281\",\"name\":\"醴陵市\"}]},{\"code\":\"430300\",\"name\":\"湘潭市\",\"children\":[{\"code\":\"430302\",\"name\":\"雨湖区\"},{\"code\":\"430304\",\"name\":\"岳塘区\"},{\"code\":\"430321\",\"name\":\"湘潭县\"},{\"code\":\"430371\",\"name\":\"湖南湘潭高新技术产业园区\"},{\"code\":\"430372\",\"name\":\"湘潭昭山示范区\"},{\"code\":\"430373\",\"name\":\"湘潭九华示范区\"},{\"code\":\"430381\",\"name\":\"湘乡市\"},{\"code\":\"430382\",\"name\":\"韶山市\"}]},{\"code\":\"430400\",\"name\":\"衡阳市\",\"children\":[{\"code\":\"430405\",\"name\":\"珠晖区\"},{\"code\":\"430406\",\"name\":\"雁峰区\"},{\"code\":\"430407\",\"name\":\"石鼓区\"},{\"code\":\"430408\",\"name\":\"蒸湘区\"},{\"code\":\"430412\",\"name\":\"南岳区\"},{\"code\":\"430421\",\"name\":\"衡阳县\"},{\"code\":\"430422\",\"name\":\"衡南县\"},{\"code\":\"430423\",\"name\":\"衡山县\"},{\"code\":\"430424\",\"name\":\"衡东县\"},{\"code\":\"430426\",\"name\":\"祁东县\"},{\"code\":\"430471\",\"name\":\"衡阳综合保税区\"},{\"code\":\"430472\",\"name\":\"湖南衡阳高新技术产业园区\"},{\"code\":\"430473\",\"name\":\"湖南衡阳松木经济开发区\"},{\"code\":\"430481\",\"name\":\"耒阳市\"},{\"code\":\"430482\",\"name\":\"常宁市\"}]},{\"code\":\"430500\",\"name\":\"邵阳市\",\"children\":[{\"code\":\"430502\",\"name\":\"双清区\"},{\"code\":\"430503\",\"name\":\"大祥区\"},{\"code\":\"430511\",\"name\":\"北塔区\"},{\"code\":\"430522\",\"name\":\"新邵县\"},{\"code\":\"430523\",\"name\":\"邵阳县\"},{\"code\":\"430524\",\"name\":\"隆回县\"},{\"code\":\"430525\",\"name\":\"洞口县\"},{\"code\":\"430527\",\"name\":\"绥宁县\"},{\"code\":\"430528\",\"name\":\"新宁县\"},{\"code\":\"430529\",\"name\":\"城步苗族自治县\"},{\"code\":\"430581\",\"name\":\"武冈市\"},{\"code\":\"430582\",\"name\":\"邵东市\"}]},{\"code\":\"430600\",\"name\":\"岳阳市\",\"children\":[{\"code\":\"430602\",\"name\":\"岳阳楼区\"},{\"code\":\"430603\",\"name\":\"云溪区\"},{\"code\":\"430611\",\"name\":\"君山区\"},{\"code\":\"430621\",\"name\":\"岳阳县\"},{\"code\":\"430623\",\"name\":\"华容县\"},{\"code\":\"430624\",\"name\":\"湘阴县\"},{\"code\":\"430626\",\"name\":\"平江县\"},{\"code\":\"430671\",\"name\":\"岳阳市屈原管理区\"},{\"code\":\"430681\",\"name\":\"汨罗市\"},{\"code\":\"430682\",\"name\":\"临湘市\"}]},{\"code\":\"430700\",\"name\":\"常德市\",\"children\":[{\"code\":\"430702\",\"name\":\"武陵区\"},{\"code\":\"430703\",\"name\":\"鼎城区\"},{\"code\":\"430721\",\"name\":\"安乡县\"},{\"code\":\"430722\",\"name\":\"汉寿县\"},{\"code\":\"430723\",\"name\":\"澧县\"},{\"code\":\"430724\",\"name\":\"临澧县\"},{\"code\":\"430725\",\"name\":\"桃源县\"},{\"code\":\"430726\",\"name\":\"石门县\"},{\"code\":\"430771\",\"name\":\"常德市西洞庭管理区\"},{\"code\":\"430781\",\"name\":\"津市市\"}]},{\"code\":\"430800\",\"name\":\"张家界市\",\"children\":[{\"code\":\"430802\",\"name\":\"永定区\"},{\"code\":\"430811\",\"name\":\"武陵源区\"},{\"code\":\"430821\",\"name\":\"慈利县\"},{\"code\":\"430822\",\"name\":\"桑植县\"}]},{\"code\":\"430900\",\"name\":\"益阳市\",\"children\":[{\"code\":\"430902\",\"name\":\"资阳区\"},{\"code\":\"430903\",\"name\":\"赫山区\"},{\"code\":\"430921\",\"name\":\"南县\"},{\"code\":\"430922\",\"name\":\"桃江县\"},{\"code\":\"430923\",\"name\":\"安化县\"},{\"code\":\"430971\",\"name\":\"益阳市大通湖管理区\"},{\"code\":\"430972\",\"name\":\"湖南益阳高新技术产业园区\"},{\"code\":\"430981\",\"name\":\"沅江市\"}]},{\"code\":\"431000\",\"name\":\"郴州市\",\"children\":[{\"code\":\"431002\",\"name\":\"北湖区\"},{\"code\":\"431003\",\"name\":\"苏仙区\"},{\"code\":\"431021\",\"name\":\"桂阳县\"},{\"code\":\"431022\",\"name\":\"宜章县\"},{\"code\":\"431023\",\"name\":\"永兴县\"},{\"code\":\"431024\",\"name\":\"嘉禾县\"},{\"code\":\"431025\",\"name\":\"临武县\"},{\"code\":\"431026\",\"name\":\"汝城县\"},{\"code\":\"431027\",\"name\":\"桂东县\"},{\"code\":\"431028\",\"name\":\"安仁县\"},{\"code\":\"431081\",\"name\":\"资兴市\"}]},{\"code\":\"431100\",\"name\":\"永州市\",\"children\":[{\"code\":\"431102\",\"name\":\"零陵区\"},{\"code\":\"431103\",\"name\":\"冷水滩区\"},{\"code\":\"431122\",\"name\":\"东安县\"},{\"code\":\"431123\",\"name\":\"双牌县\"},{\"code\":\"431124\",\"name\":\"道县\"},{\"code\":\"431125\",\"name\":\"江永县\"},{\"code\":\"431126\",\"name\":\"宁远县\"},{\"code\":\"431127\",\"name\":\"蓝山县\"},{\"code\":\"431128\",\"name\":\"新田县\"},{\"code\":\"431129\",\"name\":\"江华瑶族自治县\"},{\"code\":\"431171\",\"name\":\"永州经济技术开发区\"},{\"code\":\"431173\",\"name\":\"永州市回龙圩管理区\"},{\"code\":\"431181\",\"name\":\"祁阳市\"}]},{\"code\":\"431200\",\"name\":\"怀化市\",\"children\":[{\"code\":\"431202\",\"name\":\"鹤城区\"},{\"code\":\"431221\",\"name\":\"中方县\"},{\"code\":\"431222\",\"name\":\"沅陵县\"},{\"code\":\"431223\",\"name\":\"辰溪县\"},{\"code\":\"431224\",\"name\":\"溆浦县\"},{\"code\":\"431225\",\"name\":\"会同县\"},{\"code\":\"431226\",\"name\":\"麻阳苗族自治县\"},{\"code\":\"431227\",\"name\":\"新晃侗族自治县\"},{\"code\":\"431228\",\"name\":\"芷江侗族自治县\"},{\"code\":\"431229\",\"name\":\"靖州苗族侗族自治县\"},{\"code\":\"431230\",\"name\":\"通道侗族自治县\"},{\"code\":\"431271\",\"name\":\"怀化市洪江管理区\"},{\"code\":\"431281\",\"name\":\"洪江市\"}]},{\"code\":\"431300\",\"name\":\"娄底市\",\"children\":[{\"code\":\"431302\",\"name\":\"娄星区\"},{\"code\":\"431321\",\"name\":\"双峰县\"},{\"code\":\"431322\",\"name\":\"新化县\"},{\"code\":\"431381\",\"name\":\"冷水江市\"},{\"code\":\"431382\",\"name\":\"涟源市\"}]},{\"code\":\"433100\",\"name\":\"湘西土家族苗族自治州\",\"children\":[{\"code\":\"433101\",\"name\":\"吉首市\"},{\"code\":\"433122\",\"name\":\"泸溪县\"},{\"code\":\"433123\",\"name\":\"凤凰县\"},{\"code\":\"433124\",\"name\":\"花垣县\"},{\"code\":\"433125\",\"name\":\"保靖县\"},{\"code\":\"433126\",\"name\":\"古丈县\"},{\"code\":\"433127\",\"name\":\"永顺县\"},{\"code\":\"433130\",\"name\":\"龙山县\"}]}]},{\"code\":\"450000\",\"name\":\"广西壮族自治区\",\"children\":[{\"code\":\"450100\",\"name\":\"南宁市\",\"children\":[{\"code\":\"450102\",\"name\":\"兴宁区\"},{\"code\":\"450103\",\"name\":\"青秀区\"},{\"code\":\"450105\",\"name\":\"江南区\"},{\"code\":\"450107\",\"name\":\"西乡塘区\"},{\"code\":\"450108\",\"name\":\"良庆区\"},{\"code\":\"450109\",\"name\":\"邕宁区\"},{\"code\":\"450110\",\"name\":\"武鸣区\"},{\"code\":\"450123\",\"name\":\"隆安县\"},{\"code\":\"450124\",\"name\":\"马山县\"},{\"code\":\"450125\",\"name\":\"上林县\"},{\"code\":\"450126\",\"name\":\"宾阳县\"},{\"code\":\"450181\",\"name\":\"横州市\"}]},{\"code\":\"450200\",\"name\":\"柳州市\",\"children\":[{\"code\":\"450202\",\"name\":\"城中区\"},{\"code\":\"450203\",\"name\":\"鱼峰区\"},{\"code\":\"450204\",\"name\":\"柳南区\"},{\"code\":\"450205\",\"name\":\"柳北区\"},{\"code\":\"450206\",\"name\":\"柳江区\"},{\"code\":\"450222\",\"name\":\"柳城县\"},{\"code\":\"450223\",\"name\":\"鹿寨县\"},{\"code\":\"450224\",\"name\":\"融安县\"},{\"code\":\"450225\",\"name\":\"融水苗族自治县\"},{\"code\":\"450226\",\"name\":\"三江侗族自治县\"}]},{\"code\":\"450300\",\"name\":\"桂林市\",\"children\":[{\"code\":\"450302\",\"name\":\"秀峰区\"},{\"code\":\"450303\",\"name\":\"叠彩区\"},{\"code\":\"450304\",\"name\":\"象山区\"},{\"code\":\"450305\",\"name\":\"七星区\"},{\"code\":\"450311\",\"name\":\"雁山区\"},{\"code\":\"450312\",\"name\":\"临桂区\"},{\"code\":\"450321\",\"name\":\"阳朔县\"},{\"code\":\"450323\",\"name\":\"灵川县\"},{\"code\":\"450324\",\"name\":\"全州县\"},{\"code\":\"450325\",\"name\":\"兴安县\"},{\"code\":\"450326\",\"name\":\"永福县\"},{\"code\":\"450327\",\"name\":\"灌阳县\"},{\"code\":\"450328\",\"name\":\"龙胜各族自治县\"},{\"code\":\"450329\",\"name\":\"资源县\"},{\"code\":\"450330\",\"name\":\"平乐县\"},{\"code\":\"450332\",\"name\":\"恭城瑶族自治县\"},{\"code\":\"450381\",\"name\":\"荔浦市\"}]},{\"code\":\"450400\",\"name\":\"梧州市\",\"children\":[{\"code\":\"450403\",\"name\":\"万秀区\"},{\"code\":\"450405\",\"name\":\"长洲区\"},{\"code\":\"450406\",\"name\":\"龙圩区\"},{\"code\":\"450421\",\"name\":\"苍梧县\"},{\"code\":\"450422\",\"name\":\"藤县\"},{\"code\":\"450423\",\"name\":\"蒙山县\"},{\"code\":\"450481\",\"name\":\"岑溪市\"}]},{\"code\":\"450500\",\"name\":\"北海市\",\"children\":[{\"code\":\"450502\",\"name\":\"海城区\"},{\"code\":\"450503\",\"name\":\"银海区\"},{\"code\":\"450512\",\"name\":\"铁山港区\"},{\"code\":\"450521\",\"name\":\"合浦县\"}]},{\"code\":\"450600\",\"name\":\"防城港市\",\"children\":[{\"code\":\"450602\",\"name\":\"港口区\"},{\"code\":\"450603\",\"name\":\"防城区\"},{\"code\":\"450621\",\"name\":\"上思县\"},{\"code\":\"450681\",\"name\":\"东兴市\"}]},{\"code\":\"450700\",\"name\":\"钦州市\",\"children\":[{\"code\":\"450702\",\"name\":\"钦南区\"},{\"code\":\"450703\",\"name\":\"钦北区\"},{\"code\":\"450721\",\"name\":\"灵山县\"},{\"code\":\"450722\",\"name\":\"浦北县\"}]},{\"code\":\"450800\",\"name\":\"贵港市\",\"children\":[{\"code\":\"450802\",\"name\":\"港北区\"},{\"code\":\"450803\",\"name\":\"港南区\"},{\"code\":\"450804\",\"name\":\"覃塘区\"},{\"code\":\"450821\",\"name\":\"平南县\"},{\"code\":\"450881\",\"name\":\"桂平市\"}]},{\"code\":\"450900\",\"name\":\"玉林市\",\"children\":[{\"code\":\"450902\",\"name\":\"玉州区\"},{\"code\":\"450903\",\"name\":\"福绵区\"},{\"code\":\"450921\",\"name\":\"容县\"},{\"code\":\"450922\",\"name\":\"陆川县\"},{\"code\":\"450923\",\"name\":\"博白县\"},{\"code\":\"450924\",\"name\":\"兴业县\"},{\"code\":\"450981\",\"name\":\"北流市\"}]},{\"code\":\"451000\",\"name\":\"百色市\",\"children\":[{\"code\":\"451002\",\"name\":\"右江区\"},{\"code\":\"451003\",\"name\":\"田阳区\"},{\"code\":\"451022\",\"name\":\"田东县\"},{\"code\":\"451024\",\"name\":\"德保县\"},{\"code\":\"451026\",\"name\":\"那坡县\"},{\"code\":\"451027\",\"name\":\"凌云县\"},{\"code\":\"451028\",\"name\":\"乐业县\"},{\"code\":\"451029\",\"name\":\"田林县\"},{\"code\":\"451030\",\"name\":\"西林县\"},{\"code\":\"451031\",\"name\":\"隆林各族自治县\"},{\"code\":\"451081\",\"name\":\"靖西市\"},{\"code\":\"451082\",\"name\":\"平果市\"}]},{\"code\":\"451100\",\"name\":\"贺州市\",\"children\":[{\"code\":\"451102\",\"name\":\"八步区\"},{\"code\":\"451103\",\"name\":\"平桂区\"},{\"code\":\"451121\",\"name\":\"昭平县\"},{\"code\":\"451122\",\"name\":\"钟山县\"},{\"code\":\"451123\",\"name\":\"富川瑶族自治县\"}]},{\"code\":\"451200\",\"name\":\"河池市\",\"children\":[{\"code\":\"451202\",\"name\":\"金城江区\"},{\"code\":\"451203\",\"name\":\"宜州区\"},{\"code\":\"451221\",\"name\":\"南丹县\"},{\"code\":\"451222\",\"name\":\"天峨县\"},{\"code\":\"451223\",\"name\":\"凤山县\"},{\"code\":\"451224\",\"name\":\"东兰县\"},{\"code\":\"451225\",\"name\":\"罗城仫佬族自治县\"},{\"code\":\"451226\",\"name\":\"环江毛南族自治县\"},{\"code\":\"451227\",\"name\":\"巴马瑶族自治县\"},{\"code\":\"451228\",\"name\":\"都安瑶族自治县\"},{\"code\":\"451229\",\"name\":\"大化瑶族自治县\"}]},{\"code\":\"451300\",\"name\":\"来宾市\",\"children\":[{\"code\":\"451302\",\"name\":\"兴宾区\"},{\"code\":\"451321\",\"name\":\"忻城县\"},{\"code\":\"451322\",\"name\":\"象州县\"},{\"code\":\"451323\",\"name\":\"武宣县\"},{\"code\":\"451324\",\"name\":\"金秀瑶族自治县\"},{\"code\":\"451381\",\"name\":\"合山市\"}]},{\"code\":\"451400\",\"name\":\"崇左市\",\"children\":[{\"code\":\"451402\",\"name\":\"江州区\"},{\"code\":\"451421\",\"name\":\"扶绥县\"},{\"code\":\"451422\",\"name\":\"宁明县\"},{\"code\":\"451423\",\"name\":\"龙州县\"},{\"code\":\"451424\",\"name\":\"大新县\"},{\"code\":\"451425\",\"name\":\"天等县\"},{\"code\":\"451481\",\"name\":\"凭祥市\"}]}]},{\"code\":\"460000\",\"name\":\"海南省\",\"children\":[{\"code\":\"460100\",\"name\":\"海口市\",\"children\":[{\"code\":\"460105\",\"name\":\"秀英区\"},{\"code\":\"460106\",\"name\":\"龙华区\"},{\"code\":\"460107\",\"name\":\"琼山区\"},{\"code\":\"460108\",\"name\":\"美兰区\"}]},{\"code\":\"460200\",\"name\":\"三亚市\",\"children\":[{\"code\":\"460202\",\"name\":\"海棠区\"},{\"code\":\"460203\",\"name\":\"吉阳区\"},{\"code\":\"460204\",\"name\":\"天涯区\"},{\"code\":\"460205\",\"name\":\"崖州区\"}]},{\"code\":\"460300\",\"name\":\"三沙市\",\"children\":[{\"code\":\"460321\",\"name\":\"西沙群岛\"},{\"code\":\"460322\",\"name\":\"南沙群岛\"},{\"code\":\"460323\",\"name\":\"中沙群岛的岛礁及其海域\"}]},{\"code\":\"460400\",\"name\":\"儋州市\",\"children\":[{\"code\":\"460400100\",\"name\":\"那大镇\"},{\"code\":\"460400101\",\"name\":\"和庆镇\"},{\"code\":\"460400102\",\"name\":\"南丰镇\"},{\"code\":\"460400103\",\"name\":\"大成镇\"},{\"code\":\"460400104\",\"name\":\"雅星镇\"},{\"code\":\"460400105\",\"name\":\"兰洋镇\"},{\"code\":\"460400106\",\"name\":\"光村镇\"},{\"code\":\"460400107\",\"name\":\"木棠镇\"},{\"code\":\"460400108\",\"name\":\"海头镇\"},{\"code\":\"460400109\",\"name\":\"峨蔓镇\"},{\"code\":\"460400111\",\"name\":\"王五镇\"},{\"code\":\"460400112\",\"name\":\"白马井镇\"},{\"code\":\"460400113\",\"name\":\"中和镇\"},{\"code\":\"460400114\",\"name\":\"排浦镇\"},{\"code\":\"460400115\",\"name\":\"东成镇\"},{\"code\":\"460400116\",\"name\":\"新州镇\"},{\"code\":\"460400499\",\"name\":\"洋浦经济开发区\"},{\"code\":\"460400500\",\"name\":\"华南热作学院\"}]},{\"code\":\"469000\",\"name\":\"省直辖县级行政区划\",\"children\":[{\"code\":\"469001\",\"name\":\"五指山市\"},{\"code\":\"469002\",\"name\":\"琼海市\"},{\"code\":\"469005\",\"name\":\"文昌市\"},{\"code\":\"469006\",\"name\":\"万宁市\"},{\"code\":\"469007\",\"name\":\"东方市\"},{\"code\":\"469021\",\"name\":\"定安县\"},{\"code\":\"469022\",\"name\":\"屯昌县\"},{\"code\":\"469023\",\"name\":\"澄迈县\"},{\"code\":\"469024\",\"name\":\"临高县\"},{\"code\":\"469025\",\"name\":\"白沙黎族自治县\"},{\"code\":\"469026\",\"name\":\"昌江黎族自治县\"},{\"code\":\"469027\",\"name\":\"乐东黎族自治县\"},{\"code\":\"469028\",\"name\":\"陵水黎族自治县\"},{\"code\":\"469029\",\"name\":\"保亭黎族苗族自治县\"},{\"code\":\"469030\",\"name\":\"琼中黎族苗族自治县\"}]}]},{\"code\":\"500000\",\"name\":\"重庆市\",\"children\":[{\"code\":\"500100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"500101\",\"name\":\"万州区\"},{\"code\":\"500102\",\"name\":\"涪陵区\"},{\"code\":\"500103\",\"name\":\"渝中区\"},{\"code\":\"500104\",\"name\":\"大渡口区\"},{\"code\":\"500105\",\"name\":\"江北区\"},{\"code\":\"500106\",\"name\":\"沙坪坝区\"},{\"code\":\"500107\",\"name\":\"九龙坡区\"},{\"code\":\"500108\",\"name\":\"南岸区\"},{\"code\":\"500109\",\"name\":\"北碚区\"},{\"code\":\"500110\",\"name\":\"綦江区\"},{\"code\":\"500111\",\"name\":\"大足区\"},{\"code\":\"500112\",\"name\":\"渝北区\"},{\"code\":\"500113\",\"name\":\"巴南区\"},{\"code\":\"500114\",\"name\":\"黔江区\"},{\"code\":\"500115\",\"name\":\"长寿区\"},{\"code\":\"500116\",\"name\":\"江津区\"},{\"code\":\"500117\",\"name\":\"合川区\"},{\"code\":\"500118\",\"name\":\"永川区\"},{\"code\":\"500119\",\"name\":\"南川区\"},{\"code\":\"500120\",\"name\":\"璧山区\"},{\"code\":\"500151\",\"name\":\"铜梁区\"},{\"code\":\"500152\",\"name\":\"潼南区\"},{\"code\":\"500153\",\"name\":\"荣昌区\"},{\"code\":\"500154\",\"name\":\"开州区\"},{\"code\":\"500155\",\"name\":\"梁平区\"},{\"code\":\"500156\",\"name\":\"武隆区\"}]},{\"code\":\"500200\",\"name\":\"县\",\"children\":[{\"code\":\"500229\",\"name\":\"城口县\"},{\"code\":\"500230\",\"name\":\"丰都县\"},{\"code\":\"500231\",\"name\":\"垫江县\"},{\"code\":\"500233\",\"name\":\"忠县\"},{\"code\":\"500235\",\"name\":\"云阳县\"},{\"code\":\"500236\",\"name\":\"奉节县\"},{\"code\":\"500237\",\"name\":\"巫山县\"},{\"code\":\"500238\",\"name\":\"巫溪县\"},{\"code\":\"500240\",\"name\":\"石柱土家族自治县\"},{\"code\":\"500241\",\"name\":\"秀山土家族苗族自治县\"},{\"code\":\"500242\",\"name\":\"酉阳土家族苗族自治县\"},{\"code\":\"500243\",\"name\":\"彭水苗族土家族自治县\"}]}]},{\"code\":\"510000\",\"name\":\"四川省\",\"children\":[{\"code\":\"510100\",\"name\":\"成都市\",\"children\":[{\"code\":\"510104\",\"name\":\"锦江区\"},{\"code\":\"510105\",\"name\":\"青羊区\"},{\"code\":\"510106\",\"name\":\"金牛区\"},{\"code\":\"510107\",\"name\":\"武侯区\"},{\"code\":\"510108\",\"name\":\"成华区\"},{\"code\":\"510112\",\"name\":\"龙泉驿区\"},{\"code\":\"510113\",\"name\":\"青白江区\"},{\"code\":\"510114\",\"name\":\"新都区\"},{\"code\":\"510115\",\"name\":\"温江区\"},{\"code\":\"510116\",\"name\":\"双流区\"},{\"code\":\"510117\",\"name\":\"郫都区\"},{\"code\":\"510118\",\"name\":\"新津区\"},{\"code\":\"510121\",\"name\":\"金堂县\"},{\"code\":\"510129\",\"name\":\"大邑县\"},{\"code\":\"510131\",\"name\":\"蒲江县\"},{\"code\":\"510181\",\"name\":\"都江堰市\"},{\"code\":\"510182\",\"name\":\"彭州市\"},{\"code\":\"510183\",\"name\":\"邛崃市\"},{\"code\":\"510184\",\"name\":\"崇州市\"},{\"code\":\"510185\",\"name\":\"简阳市\"}]},{\"code\":\"510300\",\"name\":\"自贡市\",\"children\":[{\"code\":\"510302\",\"name\":\"自流井区\"},{\"code\":\"510303\",\"name\":\"贡井区\"},{\"code\":\"510304\",\"name\":\"大安区\"},{\"code\":\"510311\",\"name\":\"沿滩区\"},{\"code\":\"510321\",\"name\":\"荣县\"},{\"code\":\"510322\",\"name\":\"富顺县\"}]},{\"code\":\"510400\",\"name\":\"攀枝花市\",\"children\":[{\"code\":\"510402\",\"name\":\"东区\"},{\"code\":\"510403\",\"name\":\"西区\"},{\"code\":\"510411\",\"name\":\"仁和区\"},{\"code\":\"510421\",\"name\":\"米易县\"},{\"code\":\"510422\",\"name\":\"盐边县\"}]},{\"code\":\"510500\",\"name\":\"泸州市\",\"children\":[{\"code\":\"510502\",\"name\":\"江阳区\"},{\"code\":\"510503\",\"name\":\"纳溪区\"},{\"code\":\"510504\",\"name\":\"龙马潭区\"},{\"code\":\"510521\",\"name\":\"泸县\"},{\"code\":\"510522\",\"name\":\"合江县\"},{\"code\":\"510524\",\"name\":\"叙永县\"},{\"code\":\"510525\",\"name\":\"古蔺县\"}]},{\"code\":\"510600\",\"name\":\"德阳市\",\"children\":[{\"code\":\"510603\",\"name\":\"旌阳区\"},{\"code\":\"510604\",\"name\":\"罗江区\"},{\"code\":\"510623\",\"name\":\"中江县\"},{\"code\":\"510681\",\"name\":\"广汉市\"},{\"code\":\"510682\",\"name\":\"什邡市\"},{\"code\":\"510683\",\"name\":\"绵竹市\"}]},{\"code\":\"510700\",\"name\":\"绵阳市\",\"children\":[{\"code\":\"510703\",\"name\":\"涪城区\"},{\"code\":\"510704\",\"name\":\"游仙区\"},{\"code\":\"510705\",\"name\":\"安州区\"},{\"code\":\"510722\",\"name\":\"三台县\"},{\"code\":\"510723\",\"name\":\"盐亭县\"},{\"code\":\"510725\",\"name\":\"梓潼县\"},{\"code\":\"510726\",\"name\":\"北川羌族自治县\"},{\"code\":\"510727\",\"name\":\"平武县\"},{\"code\":\"510781\",\"name\":\"江油市\"}]},{\"code\":\"510800\",\"name\":\"广元市\",\"children\":[{\"code\":\"510802\",\"name\":\"利州区\"},{\"code\":\"510811\",\"name\":\"昭化区\"},{\"code\":\"510812\",\"name\":\"朝天区\"},{\"code\":\"510821\",\"name\":\"旺苍县\"},{\"code\":\"510822\",\"name\":\"青川县\"},{\"code\":\"510823\",\"name\":\"剑阁县\"},{\"code\":\"510824\",\"name\":\"苍溪县\"}]},{\"code\":\"510900\",\"name\":\"遂宁市\",\"children\":[{\"code\":\"510903\",\"name\":\"船山区\"},{\"code\":\"510904\",\"name\":\"安居区\"},{\"code\":\"510921\",\"name\":\"蓬溪县\"},{\"code\":\"510923\",\"name\":\"大英县\"},{\"code\":\"510981\",\"name\":\"射洪市\"}]},{\"code\":\"511000\",\"name\":\"内江市\",\"children\":[{\"code\":\"511002\",\"name\":\"市中区\"},{\"code\":\"511011\",\"name\":\"东兴区\"},{\"code\":\"511024\",\"name\":\"威远县\"},{\"code\":\"511025\",\"name\":\"资中县\"},{\"code\":\"511083\",\"name\":\"隆昌市\"}]},{\"code\":\"511100\",\"name\":\"乐山市\",\"children\":[{\"code\":\"511102\",\"name\":\"市中区\"},{\"code\":\"511111\",\"name\":\"沙湾区\"},{\"code\":\"511112\",\"name\":\"五通桥区\"},{\"code\":\"511113\",\"name\":\"金口河区\"},{\"code\":\"511123\",\"name\":\"犍为县\"},{\"code\":\"511124\",\"name\":\"井研县\"},{\"code\":\"511126\",\"name\":\"夹江县\"},{\"code\":\"511129\",\"name\":\"沐川县\"},{\"code\":\"511132\",\"name\":\"峨边彝族自治县\"},{\"code\":\"511133\",\"name\":\"马边彝族自治县\"},{\"code\":\"511181\",\"name\":\"峨眉山市\"}]},{\"code\":\"511300\",\"name\":\"南充市\",\"children\":[{\"code\":\"511302\",\"name\":\"顺庆区\"},{\"code\":\"511303\",\"name\":\"高坪区\"},{\"code\":\"511304\",\"name\":\"嘉陵区\"},{\"code\":\"511321\",\"name\":\"南部县\"},{\"code\":\"511322\",\"name\":\"营山县\"},{\"code\":\"511323\",\"name\":\"蓬安县\"},{\"code\":\"511324\",\"name\":\"仪陇县\"},{\"code\":\"511325\",\"name\":\"西充县\"},{\"code\":\"511381\",\"name\":\"阆中市\"}]},{\"code\":\"511400\",\"name\":\"眉山市\",\"children\":[{\"code\":\"511402\",\"name\":\"东坡区\"},{\"code\":\"511403\",\"name\":\"彭山区\"},{\"code\":\"511421\",\"name\":\"仁寿县\"},{\"code\":\"511423\",\"name\":\"洪雅县\"},{\"code\":\"511424\",\"name\":\"丹棱县\"},{\"code\":\"511425\",\"name\":\"青神县\"}]},{\"code\":\"511500\",\"name\":\"宜宾市\",\"children\":[{\"code\":\"511502\",\"name\":\"翠屏区\"},{\"code\":\"511503\",\"name\":\"南溪区\"},{\"code\":\"511504\",\"name\":\"叙州区\"},{\"code\":\"511523\",\"name\":\"江安县\"},{\"code\":\"511524\",\"name\":\"长宁县\"},{\"code\":\"511525\",\"name\":\"高县\"},{\"code\":\"511526\",\"name\":\"珙县\"},{\"code\":\"511527\",\"name\":\"筠连县\"},{\"code\":\"511528\",\"name\":\"兴文县\"},{\"code\":\"511529\",\"name\":\"屏山县\"}]},{\"code\":\"511600\",\"name\":\"广安市\",\"children\":[{\"code\":\"511602\",\"name\":\"广安区\"},{\"code\":\"511603\",\"name\":\"前锋区\"},{\"code\":\"511621\",\"name\":\"岳池县\"},{\"code\":\"511622\",\"name\":\"武胜县\"},{\"code\":\"511623\",\"name\":\"邻水县\"},{\"code\":\"511681\",\"name\":\"华蓥市\"}]},{\"code\":\"511700\",\"name\":\"达州市\",\"children\":[{\"code\":\"511702\",\"name\":\"通川区\"},{\"code\":\"511703\",\"name\":\"达川区\"},{\"code\":\"511722\",\"name\":\"宣汉县\"},{\"code\":\"511723\",\"name\":\"开江县\"},{\"code\":\"511724\",\"name\":\"大竹县\"},{\"code\":\"511725\",\"name\":\"渠县\"},{\"code\":\"511781\",\"name\":\"万源市\"}]},{\"code\":\"511800\",\"name\":\"雅安市\",\"children\":[{\"code\":\"511802\",\"name\":\"雨城区\"},{\"code\":\"511803\",\"name\":\"名山区\"},{\"code\":\"511822\",\"name\":\"荥经县\"},{\"code\":\"511823\",\"name\":\"汉源县\"},{\"code\":\"511824\",\"name\":\"石棉县\"},{\"code\":\"511825\",\"name\":\"天全县\"},{\"code\":\"511826\",\"name\":\"芦山县\"},{\"code\":\"511827\",\"name\":\"宝兴县\"}]},{\"code\":\"511900\",\"name\":\"巴中市\",\"children\":[{\"code\":\"511902\",\"name\":\"巴州区\"},{\"code\":\"511903\",\"name\":\"恩阳区\"},{\"code\":\"511921\",\"name\":\"通江县\"},{\"code\":\"511922\",\"name\":\"南江县\"},{\"code\":\"511923\",\"name\":\"平昌县\"}]},{\"code\":\"512000\",\"name\":\"资阳市\",\"children\":[{\"code\":\"512002\",\"name\":\"雁江区\"},{\"code\":\"512021\",\"name\":\"安岳县\"},{\"code\":\"512022\",\"name\":\"乐至县\"}]},{\"code\":\"513200\",\"name\":\"阿坝藏族羌族自治州\",\"children\":[{\"code\":\"513201\",\"name\":\"马尔康市\"},{\"code\":\"513221\",\"name\":\"汶川县\"},{\"code\":\"513222\",\"name\":\"理县\"},{\"code\":\"513223\",\"name\":\"茂县\"},{\"code\":\"513224\",\"name\":\"松潘县\"},{\"code\":\"513225\",\"name\":\"九寨沟县\"},{\"code\":\"513226\",\"name\":\"金川县\"},{\"code\":\"513227\",\"name\":\"小金县\"},{\"code\":\"513228\",\"name\":\"黑水县\"},{\"code\":\"513230\",\"name\":\"壤塘县\"},{\"code\":\"513231\",\"name\":\"阿坝县\"},{\"code\":\"513232\",\"name\":\"若尔盖县\"},{\"code\":\"513233\",\"name\":\"红原县\"}]},{\"code\":\"513300\",\"name\":\"甘孜藏族自治州\",\"children\":[{\"code\":\"513301\",\"name\":\"康定市\"},{\"code\":\"513322\",\"name\":\"泸定县\"},{\"code\":\"513323\",\"name\":\"丹巴县\"},{\"code\":\"513324\",\"name\":\"九龙县\"},{\"code\":\"513325\",\"name\":\"雅江县\"},{\"code\":\"513326\",\"name\":\"道孚县\"},{\"code\":\"513327\",\"name\":\"炉霍县\"},{\"code\":\"513328\",\"name\":\"甘孜县\"},{\"code\":\"513329\",\"name\":\"新龙县\"},{\"code\":\"513330\",\"name\":\"德格县\"},{\"code\":\"513331\",\"name\":\"白玉县\"},{\"code\":\"513332\",\"name\":\"石渠县\"},{\"code\":\"513333\",\"name\":\"色达县\"},{\"code\":\"513334\",\"name\":\"理塘县\"},{\"code\":\"513335\",\"name\":\"巴塘县\"},{\"code\":\"513336\",\"name\":\"乡城县\"},{\"code\":\"513337\",\"name\":\"稻城县\"},{\"code\":\"513338\",\"name\":\"得荣县\"}]},{\"code\":\"513400\",\"name\":\"凉山彝族自治州\",\"children\":[{\"code\":\"513401\",\"name\":\"西昌市\"},{\"code\":\"513402\",\"name\":\"会理市\"},{\"code\":\"513422\",\"name\":\"木里藏族自治县\"},{\"code\":\"513423\",\"name\":\"盐源县\"},{\"code\":\"513424\",\"name\":\"德昌县\"},{\"code\":\"513426\",\"name\":\"会东县\"},{\"code\":\"513427\",\"name\":\"宁南县\"},{\"code\":\"513428\",\"name\":\"普格县\"},{\"code\":\"513429\",\"name\":\"布拖县\"},{\"code\":\"513430\",\"name\":\"金阳县\"},{\"code\":\"513431\",\"name\":\"昭觉县\"},{\"code\":\"513432\",\"name\":\"喜德县\"},{\"code\":\"513433\",\"name\":\"冕宁县\"},{\"code\":\"513434\",\"name\":\"越西县\"},{\"code\":\"513435\",\"name\":\"甘洛县\"},{\"code\":\"513436\",\"name\":\"美姑县\"},{\"code\":\"513437\",\"name\":\"雷波县\"}]}]},{\"code\":\"520000\",\"name\":\"贵州省\",\"children\":[{\"code\":\"520100\",\"name\":\"贵阳市\",\"children\":[{\"code\":\"520102\",\"name\":\"南明区\"},{\"code\":\"520103\",\"name\":\"云岩区\"},{\"code\":\"520111\",\"name\":\"花溪区\"},{\"code\":\"520112\",\"name\":\"乌当区\"},{\"code\":\"520113\",\"name\":\"白云区\"},{\"code\":\"520115\",\"name\":\"观山湖区\"},{\"code\":\"520121\",\"name\":\"开阳县\"},{\"code\":\"520122\",\"name\":\"息烽县\"},{\"code\":\"520123\",\"name\":\"修文县\"},{\"code\":\"520181\",\"name\":\"清镇市\"}]},{\"code\":\"520200\",\"name\":\"六盘水市\",\"children\":[{\"code\":\"520201\",\"name\":\"钟山区\"},{\"code\":\"520203\",\"name\":\"六枝特区\"},{\"code\":\"520204\",\"name\":\"水城区\"},{\"code\":\"520281\",\"name\":\"盘州市\"}]},{\"code\":\"520300\",\"name\":\"遵义市\",\"children\":[{\"code\":\"520302\",\"name\":\"红花岗区\"},{\"code\":\"520303\",\"name\":\"汇川区\"},{\"code\":\"520304\",\"name\":\"播州区\"},{\"code\":\"520322\",\"name\":\"桐梓县\"},{\"code\":\"520323\",\"name\":\"绥阳县\"},{\"code\":\"520324\",\"name\":\"正安县\"},{\"code\":\"520325\",\"name\":\"道真仡佬族苗族自治县\"},{\"code\":\"520326\",\"name\":\"务川仡佬族苗族自治县\"},{\"code\":\"520327\",\"name\":\"凤冈县\"},{\"code\":\"520328\",\"name\":\"湄潭县\"},{\"code\":\"520329\",\"name\":\"余庆县\"},{\"code\":\"520330\",\"name\":\"习水县\"},{\"code\":\"520381\",\"name\":\"赤水市\"},{\"code\":\"520382\",\"name\":\"仁怀市\"}]},{\"code\":\"520400\",\"name\":\"安顺市\",\"children\":[{\"code\":\"520402\",\"name\":\"西秀区\"},{\"code\":\"520403\",\"name\":\"平坝区\"},{\"code\":\"520422\",\"name\":\"普定县\"},{\"code\":\"520423\",\"name\":\"镇宁布依族苗族自治县\"},{\"code\":\"520424\",\"name\":\"关岭布依族苗族自治县\"},{\"code\":\"520425\",\"name\":\"紫云苗族布依族自治县\"}]},{\"code\":\"520500\",\"name\":\"毕节市\",\"children\":[{\"code\":\"520502\",\"name\":\"七星关区\"},{\"code\":\"520521\",\"name\":\"大方县\"},{\"code\":\"520523\",\"name\":\"金沙县\"},{\"code\":\"520524\",\"name\":\"织金县\"},{\"code\":\"520525\",\"name\":\"纳雍县\"},{\"code\":\"520526\",\"name\":\"威宁彝族回族苗族自治县\"},{\"code\":\"520527\",\"name\":\"赫章县\"},{\"code\":\"520581\",\"name\":\"黔西市\"}]},{\"code\":\"520600\",\"name\":\"铜仁市\",\"children\":[{\"code\":\"520602\",\"name\":\"碧江区\"},{\"code\":\"520603\",\"name\":\"万山区\"},{\"code\":\"520621\",\"name\":\"江口县\"},{\"code\":\"520622\",\"name\":\"玉屏侗族自治县\"},{\"code\":\"520623\",\"name\":\"石阡县\"},{\"code\":\"520624\",\"name\":\"思南县\"},{\"code\":\"520625\",\"name\":\"印江土家族苗族自治县\"},{\"code\":\"520626\",\"name\":\"德江县\"},{\"code\":\"520627\",\"name\":\"沿河土家族自治县\"},{\"code\":\"520628\",\"name\":\"松桃苗族自治县\"}]},{\"code\":\"522300\",\"name\":\"黔西南布依族苗族自治州\",\"children\":[{\"code\":\"522301\",\"name\":\"兴义市\"},{\"code\":\"522302\",\"name\":\"兴仁市\"},{\"code\":\"522323\",\"name\":\"普安县\"},{\"code\":\"522324\",\"name\":\"晴隆县\"},{\"code\":\"522325\",\"name\":\"贞丰县\"},{\"code\":\"522326\",\"name\":\"望谟县\"},{\"code\":\"522327\",\"name\":\"册亨县\"},{\"code\":\"522328\",\"name\":\"安龙县\"}]},{\"code\":\"522600\",\"name\":\"黔东南苗族侗族自治州\",\"children\":[{\"code\":\"522601\",\"name\":\"凯里市\"},{\"code\":\"522622\",\"name\":\"黄平县\"},{\"code\":\"522623\",\"name\":\"施秉县\"},{\"code\":\"522624\",\"name\":\"三穗县\"},{\"code\":\"522625\",\"name\":\"镇远县\"},{\"code\":\"522626\",\"name\":\"岑巩县\"},{\"code\":\"522627\",\"name\":\"天柱县\"},{\"code\":\"522628\",\"name\":\"锦屏县\"},{\"code\":\"522629\",\"name\":\"剑河县\"},{\"code\":\"522630\",\"name\":\"台江县\"},{\"code\":\"522631\",\"name\":\"黎平县\"},{\"code\":\"522632\",\"name\":\"榕江县\"},{\"code\":\"522633\",\"name\":\"从江县\"},{\"code\":\"522634\",\"name\":\"雷山县\"},{\"code\":\"522635\",\"name\":\"麻江县\"},{\"code\":\"522636\",\"name\":\"丹寨县\"}]},{\"code\":\"522700\",\"name\":\"黔南布依族苗族自治州\",\"children\":[{\"code\":\"522701\",\"name\":\"都匀市\"},{\"code\":\"522702\",\"name\":\"福泉市\"},{\"code\":\"522722\",\"name\":\"荔波县\"},{\"code\":\"522723\",\"name\":\"贵定县\"},{\"code\":\"522725\",\"name\":\"瓮安县\"},{\"code\":\"522726\",\"name\":\"独山县\"},{\"code\":\"522727\",\"name\":\"平塘县\"},{\"code\":\"522728\",\"name\":\"罗甸县\"},{\"code\":\"522729\",\"name\":\"长顺县\"},{\"code\":\"522730\",\"name\":\"龙里县\"},{\"code\":\"522731\",\"name\":\"惠水县\"},{\"code\":\"522732\",\"name\":\"三都水族自治县\"}]}]},{\"code\":\"530000\",\"name\":\"云南省\",\"children\":[{\"code\":\"530100\",\"name\":\"昆明市\",\"children\":[{\"code\":\"530102\",\"name\":\"五华区\"},{\"code\":\"530103\",\"name\":\"盘龙区\"},{\"code\":\"530111\",\"name\":\"官渡区\"},{\"code\":\"530112\",\"name\":\"西山区\"},{\"code\":\"530113\",\"name\":\"东川区\"},{\"code\":\"530114\",\"name\":\"呈贡区\"},{\"code\":\"530115\",\"name\":\"晋宁区\"},{\"code\":\"530124\",\"name\":\"富民县\"},{\"code\":\"530125\",\"name\":\"宜良县\"},{\"code\":\"530126\",\"name\":\"石林彝族自治县\"},{\"code\":\"530127\",\"name\":\"嵩明县\"},{\"code\":\"530128\",\"name\":\"禄劝彝族苗族自治县\"},{\"code\":\"530129\",\"name\":\"寻甸回族彝族自治县\"},{\"code\":\"530181\",\"name\":\"安宁市\"}]},{\"code\":\"530300\",\"name\":\"曲靖市\",\"children\":[{\"code\":\"530302\",\"name\":\"麒麟区\"},{\"code\":\"530303\",\"name\":\"沾益区\"},{\"code\":\"530304\",\"name\":\"马龙区\"},{\"code\":\"530322\",\"name\":\"陆良县\"},{\"code\":\"530323\",\"name\":\"师宗县\"},{\"code\":\"530324\",\"name\":\"罗平县\"},{\"code\":\"530325\",\"name\":\"富源县\"},{\"code\":\"530326\",\"name\":\"会泽县\"},{\"code\":\"530381\",\"name\":\"宣威市\"}]},{\"code\":\"530400\",\"name\":\"玉溪市\",\"children\":[{\"code\":\"530402\",\"name\":\"红塔区\"},{\"code\":\"530403\",\"name\":\"江川区\"},{\"code\":\"530423\",\"name\":\"通海县\"},{\"code\":\"530424\",\"name\":\"华宁县\"},{\"code\":\"530425\",\"name\":\"易门县\"},{\"code\":\"530426\",\"name\":\"峨山彝族自治县\"},{\"code\":\"530427\",\"name\":\"新平彝族傣族自治县\"},{\"code\":\"530428\",\"name\":\"元江哈尼族彝族傣族自治县\"},{\"code\":\"530481\",\"name\":\"澄江市\"}]},{\"code\":\"530500\",\"name\":\"保山市\",\"children\":[{\"code\":\"530502\",\"name\":\"隆阳区\"},{\"code\":\"530521\",\"name\":\"施甸县\"},{\"code\":\"530523\",\"name\":\"龙陵县\"},{\"code\":\"530524\",\"name\":\"昌宁县\"},{\"code\":\"530581\",\"name\":\"腾冲市\"}]},{\"code\":\"530600\",\"name\":\"昭通市\",\"children\":[{\"code\":\"530602\",\"name\":\"昭阳区\"},{\"code\":\"530621\",\"name\":\"鲁甸县\"},{\"code\":\"530622\",\"name\":\"巧家县\"},{\"code\":\"530623\",\"name\":\"盐津县\"},{\"code\":\"530624\",\"name\":\"大关县\"},{\"code\":\"530625\",\"name\":\"永善县\"},{\"code\":\"530626\",\"name\":\"绥江县\"},{\"code\":\"530627\",\"name\":\"镇雄县\"},{\"code\":\"530628\",\"name\":\"彝良县\"},{\"code\":\"530629\",\"name\":\"威信县\"},{\"code\":\"530681\",\"name\":\"水富市\"}]},{\"code\":\"530700\",\"name\":\"丽江市\",\"children\":[{\"code\":\"530702\",\"name\":\"古城区\"},{\"code\":\"530721\",\"name\":\"玉龙纳西族自治县\"},{\"code\":\"530722\",\"name\":\"永胜县\"},{\"code\":\"530723\",\"name\":\"华坪县\"},{\"code\":\"530724\",\"name\":\"宁蒗彝族自治县\"}]},{\"code\":\"530800\",\"name\":\"普洱市\",\"children\":[{\"code\":\"530802\",\"name\":\"思茅区\"},{\"code\":\"530821\",\"name\":\"宁洱哈尼族彝族自治县\"},{\"code\":\"530822\",\"name\":\"墨江哈尼族自治县\"},{\"code\":\"530823\",\"name\":\"景东彝族自治县\"},{\"code\":\"530824\",\"name\":\"景谷傣族彝族自治县\"},{\"code\":\"530825\",\"name\":\"镇沅彝族哈尼族拉祜族自治县\"},{\"code\":\"530826\",\"name\":\"江城哈尼族彝族自治县\"},{\"code\":\"530827\",\"name\":\"孟连傣族拉祜族佤族自治县\"},{\"code\":\"530828\",\"name\":\"澜沧拉祜族自治县\"},{\"code\":\"530829\",\"name\":\"西盟佤族自治县\"}]},{\"code\":\"530900\",\"name\":\"临沧市\",\"children\":[{\"code\":\"530902\",\"name\":\"临翔区\"},{\"code\":\"530921\",\"name\":\"凤庆县\"},{\"code\":\"530922\",\"name\":\"云县\"},{\"code\":\"530923\",\"name\":\"永德县\"},{\"code\":\"530924\",\"name\":\"镇康县\"},{\"code\":\"530925\",\"name\":\"双江拉祜族佤族布朗族傣族自治县\"},{\"code\":\"530926\",\"name\":\"耿马傣族佤族自治县\"},{\"code\":\"530927\",\"name\":\"沧源佤族自治县\"}]},{\"code\":\"532300\",\"name\":\"楚雄彝族自治州\",\"children\":[{\"code\":\"532301\",\"name\":\"楚雄市\"},{\"code\":\"532302\",\"name\":\"禄丰市\"},{\"code\":\"532322\",\"name\":\"双柏县\"},{\"code\":\"532323\",\"name\":\"牟定县\"},{\"code\":\"532324\",\"name\":\"南华县\"},{\"code\":\"532325\",\"name\":\"姚安县\"},{\"code\":\"532326\",\"name\":\"大姚县\"},{\"code\":\"532327\",\"name\":\"永仁县\"},{\"code\":\"532328\",\"name\":\"元谋县\"},{\"code\":\"532329\",\"name\":\"武定县\"}]},{\"code\":\"532500\",\"name\":\"红河哈尼族彝族自治州\",\"children\":[{\"code\":\"532501\",\"name\":\"个旧市\"},{\"code\":\"532502\",\"name\":\"开远市\"},{\"code\":\"532503\",\"name\":\"蒙自市\"},{\"code\":\"532504\",\"name\":\"弥勒市\"},{\"code\":\"532523\",\"name\":\"屏边苗族自治县\"},{\"code\":\"532524\",\"name\":\"建水县\"},{\"code\":\"532525\",\"name\":\"石屏县\"},{\"code\":\"532527\",\"name\":\"泸西县\"},{\"code\":\"532528\",\"name\":\"元阳县\"},{\"code\":\"532529\",\"name\":\"红河县\"},{\"code\":\"532530\",\"name\":\"金平苗族瑶族傣族自治县\"},{\"code\":\"532531\",\"name\":\"绿春县\"},{\"code\":\"532532\",\"name\":\"河口瑶族自治县\"}]},{\"code\":\"532600\",\"name\":\"文山壮族苗族自治州\",\"children\":[{\"code\":\"532601\",\"name\":\"文山市\"},{\"code\":\"532622\",\"name\":\"砚山县\"},{\"code\":\"532623\",\"name\":\"西畴县\"},{\"code\":\"532624\",\"name\":\"麻栗坡县\"},{\"code\":\"532625\",\"name\":\"马关县\"},{\"code\":\"532626\",\"name\":\"丘北县\"},{\"code\":\"532627\",\"name\":\"广南县\"},{\"code\":\"532628\",\"name\":\"富宁县\"}]},{\"code\":\"532800\",\"name\":\"西双版纳傣族自治州\",\"children\":[{\"code\":\"532801\",\"name\":\"景洪市\"},{\"code\":\"532822\",\"name\":\"勐海县\"},{\"code\":\"532823\",\"name\":\"勐腊县\"}]},{\"code\":\"532900\",\"name\":\"大理白族自治州\",\"children\":[{\"code\":\"532901\",\"name\":\"大理市\"},{\"code\":\"532922\",\"name\":\"漾濞彝族自治县\"},{\"code\":\"532923\",\"name\":\"祥云县\"},{\"code\":\"532924\",\"name\":\"宾川县\"},{\"code\":\"532925\",\"name\":\"弥渡县\"},{\"code\":\"532926\",\"name\":\"南涧彝族自治县\"},{\"code\":\"532927\",\"name\":\"巍山彝族回族自治县\"},{\"code\":\"532928\",\"name\":\"永平县\"},{\"code\":\"532929\",\"name\":\"云龙县\"},{\"code\":\"532930\",\"name\":\"洱源县\"},{\"code\":\"532931\",\"name\":\"剑川县\"},{\"code\":\"532932\",\"name\":\"鹤庆县\"}]},{\"code\":\"533100\",\"name\":\"德宏傣族景颇族自治州\",\"children\":[{\"code\":\"533102\",\"name\":\"瑞丽市\"},{\"code\":\"533103\",\"name\":\"芒市\"},{\"code\":\"533122\",\"name\":\"梁河县\"},{\"code\":\"533123\",\"name\":\"盈江县\"},{\"code\":\"533124\",\"name\":\"陇川县\"}]},{\"code\":\"533300\",\"name\":\"怒江傈僳族自治州\",\"children\":[{\"code\":\"533301\",\"name\":\"泸水市\"},{\"code\":\"533323\",\"name\":\"福贡县\"},{\"code\":\"533324\",\"name\":\"贡山独龙族怒族自治县\"},{\"code\":\"533325\",\"name\":\"兰坪白族普米族自治县\"}]},{\"code\":\"533400\",\"name\":\"迪庆藏族自治州\",\"children\":[{\"code\":\"533401\",\"name\":\"香格里拉市\"},{\"code\":\"533422\",\"name\":\"德钦县\"},{\"code\":\"533423\",\"name\":\"维西傈僳族自治县\"}]}]},{\"code\":\"540000\",\"name\":\"西藏自治区\",\"children\":[{\"code\":\"540100\",\"name\":\"拉萨市\",\"children\":[{\"code\":\"540102\",\"name\":\"城关区\"},{\"code\":\"540103\",\"name\":\"堆龙德庆区\"},{\"code\":\"540104\",\"name\":\"达孜区\"},{\"code\":\"540121\",\"name\":\"林周县\"},{\"code\":\"540122\",\"name\":\"当雄县\"},{\"code\":\"540123\",\"name\":\"尼木县\"},{\"code\":\"540124\",\"name\":\"曲水县\"},{\"code\":\"540127\",\"name\":\"墨竹工卡县\"},{\"code\":\"540171\",\"name\":\"格尔木藏青工业园区\"},{\"code\":\"540172\",\"name\":\"拉萨经济技术开发区\"},{\"code\":\"540173\",\"name\":\"西藏文化旅游创意园区\"},{\"code\":\"540174\",\"name\":\"达孜工业园区\"}]},{\"code\":\"540200\",\"name\":\"日喀则市\",\"children\":[{\"code\":\"540202\",\"name\":\"桑珠孜区\"},{\"code\":\"540221\",\"name\":\"南木林县\"},{\"code\":\"540222\",\"name\":\"江孜县\"},{\"code\":\"540223\",\"name\":\"定日县\"},{\"code\":\"540224\",\"name\":\"萨迦县\"},{\"code\":\"540225\",\"name\":\"拉孜县\"},{\"code\":\"540226\",\"name\":\"昂仁县\"},{\"code\":\"540227\",\"name\":\"谢通门县\"},{\"code\":\"540228\",\"name\":\"白朗县\"},{\"code\":\"540229\",\"name\":\"仁布县\"},{\"code\":\"540230\",\"name\":\"康马县\"},{\"code\":\"540231\",\"name\":\"定结县\"},{\"code\":\"540232\",\"name\":\"仲巴县\"},{\"code\":\"540233\",\"name\":\"亚东县\"},{\"code\":\"540234\",\"name\":\"吉隆县\"},{\"code\":\"540235\",\"name\":\"聂拉木县\"},{\"code\":\"540236\",\"name\":\"萨嘎县\"},{\"code\":\"540237\",\"name\":\"岗巴县\"}]},{\"code\":\"540300\",\"name\":\"昌都市\",\"children\":[{\"code\":\"540302\",\"name\":\"卡若区\"},{\"code\":\"540321\",\"name\":\"江达县\"},{\"code\":\"540322\",\"name\":\"贡觉县\"},{\"code\":\"540323\",\"name\":\"类乌齐县\"},{\"code\":\"540324\",\"name\":\"丁青县\"},{\"code\":\"540325\",\"name\":\"察雅县\"},{\"code\":\"540326\",\"name\":\"八宿县\"},{\"code\":\"540327\",\"name\":\"左贡县\"},{\"code\":\"540328\",\"name\":\"芒康县\"},{\"code\":\"540329\",\"name\":\"洛隆县\"},{\"code\":\"540330\",\"name\":\"边坝县\"}]},{\"code\":\"540400\",\"name\":\"林芝市\",\"children\":[{\"code\":\"540402\",\"name\":\"巴宜区\"},{\"code\":\"540421\",\"name\":\"工布江达县\"},{\"code\":\"540422\",\"name\":\"米林县\"},{\"code\":\"540423\",\"name\":\"墨脱县\"},{\"code\":\"540424\",\"name\":\"波密县\"},{\"code\":\"540425\",\"name\":\"察隅县\"},{\"code\":\"540426\",\"name\":\"朗县\"}]},{\"code\":\"540500\",\"name\":\"山南市\",\"children\":[{\"code\":\"540502\",\"name\":\"乃东区\"},{\"code\":\"540521\",\"name\":\"扎囊县\"},{\"code\":\"540522\",\"name\":\"贡嘎县\"},{\"code\":\"540523\",\"name\":\"桑日县\"},{\"code\":\"540524\",\"name\":\"琼结县\"},{\"code\":\"540525\",\"name\":\"曲松县\"},{\"code\":\"540526\",\"name\":\"措美县\"},{\"code\":\"540527\",\"name\":\"洛扎县\"},{\"code\":\"540528\",\"name\":\"加查县\"},{\"code\":\"540529\",\"name\":\"隆子县\"},{\"code\":\"540530\",\"name\":\"错那县\"},{\"code\":\"540531\",\"name\":\"浪卡子县\"}]},{\"code\":\"540600\",\"name\":\"那曲市\",\"children\":[{\"code\":\"540602\",\"name\":\"色尼区\"},{\"code\":\"540621\",\"name\":\"嘉黎县\"},{\"code\":\"540622\",\"name\":\"比如县\"},{\"code\":\"540623\",\"name\":\"聂荣县\"},{\"code\":\"540624\",\"name\":\"安多县\"},{\"code\":\"540625\",\"name\":\"申扎县\"},{\"code\":\"540626\",\"name\":\"索县\"},{\"code\":\"540627\",\"name\":\"班戈县\"},{\"code\":\"540628\",\"name\":\"巴青县\"},{\"code\":\"540629\",\"name\":\"尼玛县\"},{\"code\":\"540630\",\"name\":\"双湖县\"}]},{\"code\":\"542500\",\"name\":\"阿里地区\",\"children\":[{\"code\":\"542521\",\"name\":\"普兰县\"},{\"code\":\"542522\",\"name\":\"札达县\"},{\"code\":\"542523\",\"name\":\"噶尔县\"},{\"code\":\"542524\",\"name\":\"日土县\"},{\"code\":\"542525\",\"name\":\"革吉县\"},{\"code\":\"542526\",\"name\":\"改则县\"},{\"code\":\"542527\",\"name\":\"措勤县\"}]}]},{\"code\":\"610000\",\"name\":\"陕西省\",\"children\":[{\"code\":\"610100\",\"name\":\"西安市\",\"children\":[{\"code\":\"610102\",\"name\":\"新城区\"},{\"code\":\"610103\",\"name\":\"碑林区\"},{\"code\":\"610104\",\"name\":\"莲湖区\"},{\"code\":\"610111\",\"name\":\"灞桥区\"},{\"code\":\"610112\",\"name\":\"未央区\"},{\"code\":\"610113\",\"name\":\"雁塔区\"},{\"code\":\"610114\",\"name\":\"阎良区\"},{\"code\":\"610115\",\"name\":\"临潼区\"},{\"code\":\"610116\",\"name\":\"长安区\"},{\"code\":\"610117\",\"name\":\"高陵区\"},{\"code\":\"610118\",\"name\":\"鄠邑区\"},{\"code\":\"610122\",\"name\":\"蓝田县\"},{\"code\":\"610124\",\"name\":\"周至县\"}]},{\"code\":\"610200\",\"name\":\"铜川市\",\"children\":[{\"code\":\"610202\",\"name\":\"王益区\"},{\"code\":\"610203\",\"name\":\"印台区\"},{\"code\":\"610204\",\"name\":\"耀州区\"},{\"code\":\"610222\",\"name\":\"宜君县\"}]},{\"code\":\"610300\",\"name\":\"宝鸡市\",\"children\":[{\"code\":\"610302\",\"name\":\"渭滨区\"},{\"code\":\"610303\",\"name\":\"金台区\"},{\"code\":\"610304\",\"name\":\"陈仓区\"},{\"code\":\"610305\",\"name\":\"凤翔区\"},{\"code\":\"610323\",\"name\":\"岐山县\"},{\"code\":\"610324\",\"name\":\"扶风县\"},{\"code\":\"610326\",\"name\":\"眉县\"},{\"code\":\"610327\",\"name\":\"陇县\"},{\"code\":\"610328\",\"name\":\"千阳县\"},{\"code\":\"610329\",\"name\":\"麟游县\"},{\"code\":\"610330\",\"name\":\"凤县\"},{\"code\":\"610331\",\"name\":\"太白县\"}]},{\"code\":\"610400\",\"name\":\"咸阳市\",\"children\":[{\"code\":\"610402\",\"name\":\"秦都区\"},{\"code\":\"610403\",\"name\":\"杨陵区\"},{\"code\":\"610404\",\"name\":\"渭城区\"},{\"code\":\"610422\",\"name\":\"三原县\"},{\"code\":\"610423\",\"name\":\"泾阳县\"},{\"code\":\"610424\",\"name\":\"乾县\"},{\"code\":\"610425\",\"name\":\"礼泉县\"},{\"code\":\"610426\",\"name\":\"永寿县\"},{\"code\":\"610428\",\"name\":\"长武县\"},{\"code\":\"610429\",\"name\":\"旬邑县\"},{\"code\":\"610430\",\"name\":\"淳化县\"},{\"code\":\"610431\",\"name\":\"武功县\"},{\"code\":\"610481\",\"name\":\"兴平市\"},{\"code\":\"610482\",\"name\":\"彬州市\"}]},{\"code\":\"610500\",\"name\":\"渭南市\",\"children\":[{\"code\":\"610502\",\"name\":\"临渭区\"},{\"code\":\"610503\",\"name\":\"华州区\"},{\"code\":\"610522\",\"name\":\"潼关县\"},{\"code\":\"610523\",\"name\":\"大荔县\"},{\"code\":\"610524\",\"name\":\"合阳县\"},{\"code\":\"610525\",\"name\":\"澄城县\"},{\"code\":\"610526\",\"name\":\"蒲城县\"},{\"code\":\"610527\",\"name\":\"白水县\"},{\"code\":\"610528\",\"name\":\"富平县\"},{\"code\":\"610581\",\"name\":\"韩城市\"},{\"code\":\"610582\",\"name\":\"华阴市\"}]},{\"code\":\"610600\",\"name\":\"延安市\",\"children\":[{\"code\":\"610602\",\"name\":\"宝塔区\"},{\"code\":\"610603\",\"name\":\"安塞区\"},{\"code\":\"610621\",\"name\":\"延长县\"},{\"code\":\"610622\",\"name\":\"延川县\"},{\"code\":\"610625\",\"name\":\"志丹县\"},{\"code\":\"610626\",\"name\":\"吴起县\"},{\"code\":\"610627\",\"name\":\"甘泉县\"},{\"code\":\"610628\",\"name\":\"富县\"},{\"code\":\"610629\",\"name\":\"洛川县\"},{\"code\":\"610630\",\"name\":\"宜川县\"},{\"code\":\"610631\",\"name\":\"黄龙县\"},{\"code\":\"610632\",\"name\":\"黄陵县\"},{\"code\":\"610681\",\"name\":\"子长市\"}]},{\"code\":\"610700\",\"name\":\"汉中市\",\"children\":[{\"code\":\"610702\",\"name\":\"汉台区\"},{\"code\":\"610703\",\"name\":\"南郑区\"},{\"code\":\"610722\",\"name\":\"城固县\"},{\"code\":\"610723\",\"name\":\"洋县\"},{\"code\":\"610724\",\"name\":\"西乡县\"},{\"code\":\"610725\",\"name\":\"勉县\"},{\"code\":\"610726\",\"name\":\"宁强县\"},{\"code\":\"610727\",\"name\":\"略阳县\"},{\"code\":\"610728\",\"name\":\"镇巴县\"},{\"code\":\"610729\",\"name\":\"留坝县\"},{\"code\":\"610730\",\"name\":\"佛坪县\"}]},{\"code\":\"610800\",\"name\":\"榆林市\",\"children\":[{\"code\":\"610802\",\"name\":\"榆阳区\"},{\"code\":\"610803\",\"name\":\"横山区\"},{\"code\":\"610822\",\"name\":\"府谷县\"},{\"code\":\"610824\",\"name\":\"靖边县\"},{\"code\":\"610825\",\"name\":\"定边县\"},{\"code\":\"610826\",\"name\":\"绥德县\"},{\"code\":\"610827\",\"name\":\"米脂县\"},{\"code\":\"610828\",\"name\":\"佳县\"},{\"code\":\"610829\",\"name\":\"吴堡县\"},{\"code\":\"610830\",\"name\":\"清涧县\"},{\"code\":\"610831\",\"name\":\"子洲县\"},{\"code\":\"610881\",\"name\":\"神木市\"}]},{\"code\":\"610900\",\"name\":\"安康市\",\"children\":[{\"code\":\"610902\",\"name\":\"汉滨区\"},{\"code\":\"610921\",\"name\":\"汉阴县\"},{\"code\":\"610922\",\"name\":\"石泉县\"},{\"code\":\"610923\",\"name\":\"宁陕县\"},{\"code\":\"610924\",\"name\":\"紫阳县\"},{\"code\":\"610925\",\"name\":\"岚皋县\"},{\"code\":\"610926\",\"name\":\"平利县\"},{\"code\":\"610927\",\"name\":\"镇坪县\"},{\"code\":\"610929\",\"name\":\"白河县\"},{\"code\":\"610981\",\"name\":\"旬阳市\"}]},{\"code\":\"611000\",\"name\":\"商洛市\",\"children\":[{\"code\":\"611002\",\"name\":\"商州区\"},{\"code\":\"611021\",\"name\":\"洛南县\"},{\"code\":\"611022\",\"name\":\"丹凤县\"},{\"code\":\"611023\",\"name\":\"商南县\"},{\"code\":\"611024\",\"name\":\"山阳县\"},{\"code\":\"611025\",\"name\":\"镇安县\"},{\"code\":\"611026\",\"name\":\"柞水县\"}]}]},{\"code\":\"620000\",\"name\":\"甘肃省\",\"children\":[{\"code\":\"620100\",\"name\":\"兰州市\",\"children\":[{\"code\":\"620102\",\"name\":\"城关区\"},{\"code\":\"620103\",\"name\":\"七里河区\"},{\"code\":\"620104\",\"name\":\"西固区\"},{\"code\":\"620105\",\"name\":\"安宁区\"},{\"code\":\"620111\",\"name\":\"红古区\"},{\"code\":\"620121\",\"name\":\"永登县\"},{\"code\":\"620122\",\"name\":\"皋兰县\"},{\"code\":\"620123\",\"name\":\"榆中县\"},{\"code\":\"620171\",\"name\":\"兰州新区\"}]},{\"code\":\"620200\",\"name\":\"嘉峪关市\",\"children\":[{\"code\":\"620201001\",\"name\":\"雄关街道\"},{\"code\":\"620201002\",\"name\":\"钢城街道\"},{\"code\":\"620201100\",\"name\":\"新城镇\"},{\"code\":\"620201101\",\"name\":\"峪泉镇\"},{\"code\":\"620201102\",\"name\":\"文殊镇\"}]},{\"code\":\"620300\",\"name\":\"金昌市\",\"children\":[{\"code\":\"620302\",\"name\":\"金川区\"},{\"code\":\"620321\",\"name\":\"永昌县\"}]},{\"code\":\"620400\",\"name\":\"白银市\",\"children\":[{\"code\":\"620402\",\"name\":\"白银区\"},{\"code\":\"620403\",\"name\":\"平川区\"},{\"code\":\"620421\",\"name\":\"靖远县\"},{\"code\":\"620422\",\"name\":\"会宁县\"},{\"code\":\"620423\",\"name\":\"景泰县\"}]},{\"code\":\"620500\",\"name\":\"天水市\",\"children\":[{\"code\":\"620502\",\"name\":\"秦州区\"},{\"code\":\"620503\",\"name\":\"麦积区\"},{\"code\":\"620521\",\"name\":\"清水县\"},{\"code\":\"620522\",\"name\":\"秦安县\"},{\"code\":\"620523\",\"name\":\"甘谷县\"},{\"code\":\"620524\",\"name\":\"武山县\"},{\"code\":\"620525\",\"name\":\"张家川回族自治县\"}]},{\"code\":\"620600\",\"name\":\"武威市\",\"children\":[{\"code\":\"620602\",\"name\":\"凉州区\"},{\"code\":\"620621\",\"name\":\"民勤县\"},{\"code\":\"620622\",\"name\":\"古浪县\"},{\"code\":\"620623\",\"name\":\"天祝藏族自治县\"}]},{\"code\":\"620700\",\"name\":\"张掖市\",\"children\":[{\"code\":\"620702\",\"name\":\"甘州区\"},{\"code\":\"620721\",\"name\":\"肃南裕固族自治县\"},{\"code\":\"620722\",\"name\":\"民乐县\"},{\"code\":\"620723\",\"name\":\"临泽县\"},{\"code\":\"620724\",\"name\":\"高台县\"},{\"code\":\"620725\",\"name\":\"山丹县\"}]},{\"code\":\"620800\",\"name\":\"平凉市\",\"children\":[{\"code\":\"620802\",\"name\":\"崆峒区\"},{\"code\":\"620821\",\"name\":\"泾川县\"},{\"code\":\"620822\",\"name\":\"灵台县\"},{\"code\":\"620823\",\"name\":\"崇信县\"},{\"code\":\"620825\",\"name\":\"庄浪县\"},{\"code\":\"620826\",\"name\":\"静宁县\"},{\"code\":\"620881\",\"name\":\"华亭市\"}]},{\"code\":\"620900\",\"name\":\"酒泉市\",\"children\":[{\"code\":\"620902\",\"name\":\"肃州区\"},{\"code\":\"620921\",\"name\":\"金塔县\"},{\"code\":\"620922\",\"name\":\"瓜州县\"},{\"code\":\"620923\",\"name\":\"肃北蒙古族自治县\"},{\"code\":\"620924\",\"name\":\"阿克塞哈萨克族自治县\"},{\"code\":\"620981\",\"name\":\"玉门市\"},{\"code\":\"620982\",\"name\":\"敦煌市\"}]},{\"code\":\"621000\",\"name\":\"庆阳市\",\"children\":[{\"code\":\"621002\",\"name\":\"西峰区\"},{\"code\":\"621021\",\"name\":\"庆城县\"},{\"code\":\"621022\",\"name\":\"环县\"},{\"code\":\"621023\",\"name\":\"华池县\"},{\"code\":\"621024\",\"name\":\"合水县\"},{\"code\":\"621025\",\"name\":\"正宁县\"},{\"code\":\"621026\",\"name\":\"宁县\"},{\"code\":\"621027\",\"name\":\"镇原县\"}]},{\"code\":\"621100\",\"name\":\"定西市\",\"children\":[{\"code\":\"621102\",\"name\":\"安定区\"},{\"code\":\"621121\",\"name\":\"通渭县\"},{\"code\":\"621122\",\"name\":\"陇西县\"},{\"code\":\"621123\",\"name\":\"渭源县\"},{\"code\":\"621124\",\"name\":\"临洮县\"},{\"code\":\"621125\",\"name\":\"漳县\"},{\"code\":\"621126\",\"name\":\"岷县\"}]},{\"code\":\"621200\",\"name\":\"陇南市\",\"children\":[{\"code\":\"621202\",\"name\":\"武都区\"},{\"code\":\"621221\",\"name\":\"成县\"},{\"code\":\"621222\",\"name\":\"文县\"},{\"code\":\"621223\",\"name\":\"宕昌县\"},{\"code\":\"621224\",\"name\":\"康县\"},{\"code\":\"621225\",\"name\":\"西和县\"},{\"code\":\"621226\",\"name\":\"礼县\"},{\"code\":\"621227\",\"name\":\"徽县\"},{\"code\":\"621228\",\"name\":\"两当县\"}]},{\"code\":\"622900\",\"name\":\"临夏回族自治州\",\"children\":[{\"code\":\"622901\",\"name\":\"临夏市\"},{\"code\":\"622921\",\"name\":\"临夏县\"},{\"code\":\"622922\",\"name\":\"康乐县\"},{\"code\":\"622923\",\"name\":\"永靖县\"},{\"code\":\"622924\",\"name\":\"广河县\"},{\"code\":\"622925\",\"name\":\"和政县\"},{\"code\":\"622926\",\"name\":\"东乡族自治县\"},{\"code\":\"622927\",\"name\":\"积石山保安族东乡族撒拉族自治县\"}]},{\"code\":\"623000\",\"name\":\"甘南藏族自治州\",\"children\":[{\"code\":\"623001\",\"name\":\"合作市\"},{\"code\":\"623021\",\"name\":\"临潭县\"},{\"code\":\"623022\",\"name\":\"卓尼县\"},{\"code\":\"623023\",\"name\":\"舟曲县\"},{\"code\":\"623024\",\"name\":\"迭部县\"},{\"code\":\"623025\",\"name\":\"玛曲县\"},{\"code\":\"623026\",\"name\":\"碌曲县\"},{\"code\":\"623027\",\"name\":\"夏河县\"}]}]},{\"code\":\"630000\",\"name\":\"青海省\",\"children\":[{\"code\":\"630100\",\"name\":\"西宁市\",\"children\":[{\"code\":\"630102\",\"name\":\"城东区\"},{\"code\":\"630103\",\"name\":\"城中区\"},{\"code\":\"630104\",\"name\":\"城西区\"},{\"code\":\"630105\",\"name\":\"城北区\"},{\"code\":\"630106\",\"name\":\"湟中区\"},{\"code\":\"630121\",\"name\":\"大通回族土族自治县\"},{\"code\":\"630123\",\"name\":\"湟源县\"}]},{\"code\":\"630200\",\"name\":\"海东市\",\"children\":[{\"code\":\"630202\",\"name\":\"乐都区\"},{\"code\":\"630203\",\"name\":\"平安区\"},{\"code\":\"630222\",\"name\":\"民和回族土族自治县\"},{\"code\":\"630223\",\"name\":\"互助土族自治县\"},{\"code\":\"630224\",\"name\":\"化隆回族自治县\"},{\"code\":\"630225\",\"name\":\"循化撒拉族自治县\"}]},{\"code\":\"632200\",\"name\":\"海北藏族自治州\",\"children\":[{\"code\":\"632221\",\"name\":\"门源回族自治县\"},{\"code\":\"632222\",\"name\":\"祁连县\"},{\"code\":\"632223\",\"name\":\"海晏县\"},{\"code\":\"632224\",\"name\":\"刚察县\"}]},{\"code\":\"632300\",\"name\":\"黄南藏族自治州\",\"children\":[{\"code\":\"632301\",\"name\":\"同仁市\"},{\"code\":\"632322\",\"name\":\"尖扎县\"},{\"code\":\"632323\",\"name\":\"泽库县\"},{\"code\":\"632324\",\"name\":\"河南蒙古族自治县\"}]},{\"code\":\"632500\",\"name\":\"海南藏族自治州\",\"children\":[{\"code\":\"632521\",\"name\":\"共和县\"},{\"code\":\"632522\",\"name\":\"同德县\"},{\"code\":\"632523\",\"name\":\"贵德县\"},{\"code\":\"632524\",\"name\":\"兴海县\"},{\"code\":\"632525\",\"name\":\"贵南县\"}]},{\"code\":\"632600\",\"name\":\"果洛藏族自治州\",\"children\":[{\"code\":\"632621\",\"name\":\"玛沁县\"},{\"code\":\"632622\",\"name\":\"班玛县\"},{\"code\":\"632623\",\"name\":\"甘德县\"},{\"code\":\"632624\",\"name\":\"达日县\"},{\"code\":\"632625\",\"name\":\"久治县\"},{\"code\":\"632626\",\"name\":\"玛多县\"}]},{\"code\":\"632700\",\"name\":\"玉树藏族自治州\",\"children\":[{\"code\":\"632701\",\"name\":\"玉树市\"},{\"code\":\"632722\",\"name\":\"杂多县\"},{\"code\":\"632723\",\"name\":\"称多县\"},{\"code\":\"632724\",\"name\":\"治多县\"},{\"code\":\"632725\",\"name\":\"囊谦县\"},{\"code\":\"632726\",\"name\":\"曲麻莱县\"}]},{\"code\":\"632800\",\"name\":\"海西蒙古族藏族自治州\",\"children\":[{\"code\":\"632801\",\"name\":\"格尔木市\"},{\"code\":\"632802\",\"name\":\"德令哈市\"},{\"code\":\"632803\",\"name\":\"茫崖市\"},{\"code\":\"632821\",\"name\":\"乌兰县\"},{\"code\":\"632822\",\"name\":\"都兰县\"},{\"code\":\"632823\",\"name\":\"天峻县\"},{\"code\":\"632857\",\"name\":\"大柴旦行政委员会\"}]}]},{\"code\":\"640000\",\"name\":\"宁夏回族自治区\",\"children\":[{\"code\":\"640100\",\"name\":\"银川市\",\"children\":[{\"code\":\"640104\",\"name\":\"兴庆区\"},{\"code\":\"640105\",\"name\":\"西夏区\"},{\"code\":\"640106\",\"name\":\"金凤区\"},{\"code\":\"640121\",\"name\":\"永宁县\"},{\"code\":\"640122\",\"name\":\"贺兰县\"},{\"code\":\"640181\",\"name\":\"灵武市\"}]},{\"code\":\"640200\",\"name\":\"石嘴山市\",\"children\":[{\"code\":\"640202\",\"name\":\"大武口区\"},{\"code\":\"640205\",\"name\":\"惠农区\"},{\"code\":\"640221\",\"name\":\"平罗县\"}]},{\"code\":\"640300\",\"name\":\"吴忠市\",\"children\":[{\"code\":\"640302\",\"name\":\"利通区\"},{\"code\":\"640303\",\"name\":\"红寺堡区\"},{\"code\":\"640323\",\"name\":\"盐池县\"},{\"code\":\"640324\",\"name\":\"同心县\"},{\"code\":\"640381\",\"name\":\"青铜峡市\"}]},{\"code\":\"640400\",\"name\":\"固原市\",\"children\":[{\"code\":\"640402\",\"name\":\"原州区\"},{\"code\":\"640422\",\"name\":\"西吉县\"},{\"code\":\"640423\",\"name\":\"隆德县\"},{\"code\":\"640424\",\"name\":\"泾源县\"},{\"code\":\"640425\",\"name\":\"彭阳县\"}]},{\"code\":\"640500\",\"name\":\"中卫市\",\"children\":[{\"code\":\"640502\",\"name\":\"沙坡头区\"},{\"code\":\"640521\",\"name\":\"中宁县\"},{\"code\":\"640522\",\"name\":\"海原县\"}]}]},{\"code\":\"650000\",\"name\":\"新疆维吾尔自治区\",\"children\":[{\"code\":\"650100\",\"name\":\"乌鲁木齐市\",\"children\":[{\"code\":\"650102\",\"name\":\"天山区\"},{\"code\":\"650103\",\"name\":\"沙依巴克区\"},{\"code\":\"650104\",\"name\":\"新市区\"},{\"code\":\"650105\",\"name\":\"水磨沟区\"},{\"code\":\"650106\",\"name\":\"头屯河区\"},{\"code\":\"650107\",\"name\":\"达坂城区\"},{\"code\":\"650109\",\"name\":\"米东区\"},{\"code\":\"650121\",\"name\":\"乌鲁木齐县\"}]},{\"code\":\"650200\",\"name\":\"克拉玛依市\",\"children\":[{\"code\":\"650202\",\"name\":\"独山子区\"},{\"code\":\"650203\",\"name\":\"克拉玛依区\"},{\"code\":\"650204\",\"name\":\"白碱滩区\"},{\"code\":\"650205\",\"name\":\"乌尔禾区\"}]},{\"code\":\"650400\",\"name\":\"吐鲁番市\",\"children\":[{\"code\":\"650402\",\"name\":\"高昌区\"},{\"code\":\"650421\",\"name\":\"鄯善县\"},{\"code\":\"650422\",\"name\":\"托克逊县\"}]},{\"code\":\"650500\",\"name\":\"哈密市\",\"children\":[{\"code\":\"650502\",\"name\":\"伊州区\"},{\"code\":\"650521\",\"name\":\"巴里坤哈萨克自治县\"},{\"code\":\"650522\",\"name\":\"伊吾县\"}]},{\"code\":\"652300\",\"name\":\"昌吉回族自治州\",\"children\":[{\"code\":\"652301\",\"name\":\"昌吉市\"},{\"code\":\"652302\",\"name\":\"阜康市\"},{\"code\":\"652323\",\"name\":\"呼图壁县\"},{\"code\":\"652324\",\"name\":\"玛纳斯县\"},{\"code\":\"652325\",\"name\":\"奇台县\"},{\"code\":\"652327\",\"name\":\"吉木萨尔县\"},{\"code\":\"652328\",\"name\":\"木垒哈萨克自治县\"}]},{\"code\":\"652700\",\"name\":\"博尔塔拉蒙古自治州\",\"children\":[{\"code\":\"652701\",\"name\":\"博乐市\"},{\"code\":\"652702\",\"name\":\"阿拉山口市\"},{\"code\":\"652722\",\"name\":\"精河县\"},{\"code\":\"652723\",\"name\":\"温泉县\"}]},{\"code\":\"652800\",\"name\":\"巴音郭楞蒙古自治州\",\"children\":[{\"code\":\"652801\",\"name\":\"库尔勒市\"},{\"code\":\"652822\",\"name\":\"轮台县\"},{\"code\":\"652823\",\"name\":\"尉犁县\"},{\"code\":\"652824\",\"name\":\"若羌县\"},{\"code\":\"652825\",\"name\":\"且末县\"},{\"code\":\"652826\",\"name\":\"焉耆回族自治县\"},{\"code\":\"652827\",\"name\":\"和静县\"},{\"code\":\"652828\",\"name\":\"和硕县\"},{\"code\":\"652829\",\"name\":\"博湖县\"},{\"code\":\"652871\",\"name\":\"库尔勒经济技术开发区\"}]},{\"code\":\"652900\",\"name\":\"阿克苏地区\",\"children\":[{\"code\":\"652901\",\"name\":\"阿克苏市\"},{\"code\":\"652902\",\"name\":\"库车市\"},{\"code\":\"652922\",\"name\":\"温宿县\"},{\"code\":\"652924\",\"name\":\"沙雅县\"},{\"code\":\"652925\",\"name\":\"新和县\"},{\"code\":\"652926\",\"name\":\"拜城县\"},{\"code\":\"652927\",\"name\":\"乌什县\"},{\"code\":\"652928\",\"name\":\"阿瓦提县\"},{\"code\":\"652929\",\"name\":\"柯坪县\"}]},{\"code\":\"653000\",\"name\":\"克孜勒苏柯尔克孜自治州\",\"children\":[{\"code\":\"653001\",\"name\":\"阿图什市\"},{\"code\":\"653022\",\"name\":\"阿克陶县\"},{\"code\":\"653023\",\"name\":\"阿合奇县\"},{\"code\":\"653024\",\"name\":\"乌恰县\"}]},{\"code\":\"653100\",\"name\":\"喀什地区\",\"children\":[{\"code\":\"653101\",\"name\":\"喀什市\"},{\"code\":\"653121\",\"name\":\"疏附县\"},{\"code\":\"653122\",\"name\":\"疏勒县\"},{\"code\":\"653123\",\"name\":\"英吉沙县\"},{\"code\":\"653124\",\"name\":\"泽普县\"},{\"code\":\"653125\",\"name\":\"莎车县\"},{\"code\":\"653126\",\"name\":\"叶城县\"},{\"code\":\"653127\",\"name\":\"麦盖提县\"},{\"code\":\"653128\",\"name\":\"岳普湖县\"},{\"code\":\"653129\",\"name\":\"伽师县\"},{\"code\":\"653130\",\"name\":\"巴楚县\"},{\"code\":\"653131\",\"name\":\"塔什库尔干塔吉克自治县\"}]},{\"code\":\"653200\",\"name\":\"和田地区\",\"children\":[{\"code\":\"653201\",\"name\":\"和田市\"},{\"code\":\"653221\",\"name\":\"和田县\"},{\"code\":\"653222\",\"name\":\"墨玉县\"},{\"code\":\"653223\",\"name\":\"皮山县\"},{\"code\":\"653224\",\"name\":\"洛浦县\"},{\"code\":\"653225\",\"name\":\"策勒县\"},{\"code\":\"653226\",\"name\":\"于田县\"},{\"code\":\"653227\",\"name\":\"民丰县\"}]},{\"code\":\"654000\",\"name\":\"伊犁哈萨克自治州\",\"children\":[{\"code\":\"654002\",\"name\":\"伊宁市\"},{\"code\":\"654003\",\"name\":\"奎屯市\"},{\"code\":\"654004\",\"name\":\"霍尔果斯市\"},{\"code\":\"654021\",\"name\":\"伊宁县\"},{\"code\":\"654022\",\"name\":\"察布查尔锡伯自治县\"},{\"code\":\"654023\",\"name\":\"霍城县\"},{\"code\":\"654024\",\"name\":\"巩留县\"},{\"code\":\"654025\",\"name\":\"新源县\"},{\"code\":\"654026\",\"name\":\"昭苏县\"},{\"code\":\"654027\",\"name\":\"特克斯县\"},{\"code\":\"654028\",\"name\":\"尼勒克县\"}]},{\"code\":\"654200\",\"name\":\"塔城地区\",\"children\":[{\"code\":\"654201\",\"name\":\"塔城市\"},{\"code\":\"654202\",\"name\":\"乌苏市\"},{\"code\":\"654203\",\"name\":\"沙湾市\"},{\"code\":\"654221\",\"name\":\"额敏县\"},{\"code\":\"654224\",\"name\":\"托里县\"},{\"code\":\"654225\",\"name\":\"裕民县\"},{\"code\":\"654226\",\"name\":\"和布克赛尔蒙古自治县\"}]},{\"code\":\"654300\",\"name\":\"阿勒泰地区\",\"children\":[{\"code\":\"654301\",\"name\":\"阿勒泰市\"},{\"code\":\"654321\",\"name\":\"布尔津县\"},{\"code\":\"654322\",\"name\":\"富蕴县\"},{\"code\":\"654323\",\"name\":\"福海县\"},{\"code\":\"654324\",\"name\":\"哈巴河县\"},{\"code\":\"654325\",\"name\":\"青河县\"},{\"code\":\"654326\",\"name\":\"吉木乃县\"}]},{\"code\":\"659000\",\"name\":\"自治区直辖县级行政区划\",\"children\":[{\"code\":\"659001\",\"name\":\"石河子市\"},{\"code\":\"659002\",\"name\":\"阿拉尔市\"},{\"code\":\"659003\",\"name\":\"图木舒克市\"},{\"code\":\"659004\",\"name\":\"五家渠市\"},{\"code\":\"659005\",\"name\":\"北屯市\"},{\"code\":\"659006\",\"name\":\"铁门关市\"},{\"code\":\"659007\",\"name\":\"双河市\"},{\"code\":\"659008\",\"name\":\"可克达拉市\"},{\"code\":\"659009\",\"name\":\"昆玉市\"},{\"code\":\"659010\",\"name\":\"胡杨河市\"},{\"code\":\"659011\",\"name\":\"新星市\"}]}]}]"), Pn = /* @__PURE__ */ A({
name: "NewbieAddress",
props: {
value: {
type: [
String,
Number,
Array
],
default: () => []
},
level: {
type: Number,
default: 3
},
disabled: {
type: Boolean,
default: !1
},
placeholder: {
type: String,
default: "请选择地区"
},
url: {
type: String,
default: ""
},
afterFetched: {
type: Function,
default: null
},
dataSource: {
type: Array,
default: () => []
}
},
emits: ["update:value"],
setup(e, { emit: t }) {
let n = me({
items: e.dataSource,
value: e.value
});
I(() => e.dataSource, () => {
n.items = e.dataSource;
}), n.items.length === 0 && (e.url ? i() : n.items = Nn);
let i = async () => {
let t = await r().get(e.url);
e.afterFetched && (t = e.afterFetched(t)), n.items = t;
}, a = (e) => {
t("update:value", e);
};
return () => O(Oe, {
value: n.value,
"onUpdate:value": (e) => n.value = e,
fieldNames: {
label: "name",
value: "code",
children: "children"
},
allowClear: !0,
placeholder: e.placeholder,
disabled: e.disabled,
options: n.items,
changeOnSelect: !0,
showSearch: !0,
onChange: a
}, null);
}
});
function Fn(e, t) {
if (e += "", e && e.length === 6) {
if (t ||= /0000$/.test(e) ? 1 : /00$/.test(e) ? 2 : 3, t === 1) return [`${e.substr(0, 2)}0000`];
if (t === 2) return [`${e.substr(0, 2)}0000`, `${e.substr(0, 4)}00`];
if (t === 3) return [
`${e.substr(0, 2)}0000`,
`${e.substr(0, 4)}00`,
e
];
}
return [];
}
//#endregion
//#region utils/withInstall.js
var In = (e) => (e.install = (t) => {
let n = e.name || e.__name;
t.component(n, e);
}, e), Ln = Fn, Rn = In(Pn), zn = /* @__PURE__ */ A({
name: "NewbieButton",
props: {
type: {
type: String,
default: "default"
},
size: {
type: String,
default: "middle"
},
disabled: {
type: Boolean,
default: !1
},
danger: {
type: Boolean,
default: !1
},
label: {
type: String,
default: ""
},
icon: {
type: Object,
default: null
},
iconPosition: {
type: String,
default: "left"
},
fetcher: {
type: Object,
default: () => ({ loading: !1 })
},
buttonProps: {
type: Object,
default: () => ({})
}
},
emits: ["click"],
setup(e, { emit: t, slots: n }) {
let r = (e) => {
t("click", e);
}, i = () => e.label || n.default(), a = () => e.icon && e.iconPosition === "left" ? [e.icon, i()] : e.icon && e.iconPosition === "right" ? [i(), e.icon] : [i()];
return () => O(L, M({
danger: e.danger,
loading: e.fetcher.loading,
type: e.type,
size: e.size,
disabled: e.disabled,
onClick: r
}, e.buttonProps), { default: () => a() });
}
}), Bn = In(zn);
//#endregion
//#region components/editor/utils.js
function Vn(e) {
let t = `请使用 '@${e}' 事件,不要放在 props 中`;
return t += `\nPlease use '@${e}' event instead of props`, t;
}
//#endregion
//#region \0plugin-vue:export-helper
var Hn = (e, t) => {
let n = e.__vccOpts || e;
for (let [e, r] of t) n[e] = r;
return n;
}, Un = A({
props: {
mode: {
type: String,
default: "default"
},
defaultContent: {
type: Array,
default: () => []
},
defaultHtml: {
type: String,
default: ""
},
defaultConfig: {
type: Object,
default: () => ({})
},
modelValue: {
type: String,
default: ""
}
},
emits: [
"update:modelValue",
"onCreated",
"onChange",
"onDestroyed",
"onMaxLength",
"onFocus",
"onBlur",
"customAlert",
"customPaste"
],
setup(e, t) {
let n = N(null), r = P(null), i = N(""), a = (a) => {
if (!n.value) return;
let o = ve(e.defaultContent);
a({
selector: n.value,
mode: e.mode,
content: o || [],
html: e.defaultHtml || e.modelValue || "",
config: {
...e.defaultConfig,
onCreated(n) {
if (r.value = n, t.emit("onCreated", n), e.defaultConfig.onCreated) {
let e = Vn("onCreated");
throw Error(e);
}
},
onChange(n) {
let r = n.getHtml();
if (i.value = r, t.emit("update:modelValue", r), t.emit("onChange", n), e.defaultConfig.onChange) {
let e = Vn("onChange");
throw Error(e);
}
},
onDestroyed(n) {
if (t.emit("onDestroyed", n), e.defaultConfig.onDestroyed) {
let e = Vn("onDestroyed");
throw Error(e);
}
},
onMaxLength(n) {
if (t.emit("onMaxLength", n), e.defaultConfig.onMaxLength) {
let e = Vn("onMaxLength");
throw Error(e);
}
},
onFocus(n) {
if (t.emit("onFocus", n), e.defaultConfig.onFocus) {
let e = Vn("onFocus");
throw Error(e);
}
},
onBlur(n) {
if (t.emit("onBlur", n), e.defaultConfig.onBlur) {
let e = Vn("onBlur");
throw Error(e);
}
},
customAlert(n, r) {
if (t.emit("customAlert", n, r), e.defaultConfig.customAlert) {
let e = Vn("customAlert");
throw Error(e);
}
},
customPaste: (n, r) => {
if (e.defaultConfig.customPaste) {
let e = Vn("customPaste");
throw Error(e);
}
let i;
return t.emit("customPaste", n, r, (e) => {
i = e;
}), i;
}
}
});
};
function o(e) {
r.value?.setHtml(e);
}
return le(() => {
import("./index.esm-Denfxe5W.js").then((e) => {
a(e.createEditor);
});
}), I(() => e.modelValue, (e) => {
e !== i.value && o(e);
}), { box: n };
}
}), Wn = {
ref: "box",
style: { height: "100%" }
};
function Gn(e, t, n, r, i, a) {
return fe(), ee("div", Wn, null, 512);
}
var Kn = /*#__PURE__*/ Hn(Un, [["render", Gn]]), qn = A({
props: {
editor: {
type: Object,
default: () => null
},
mode: {
type: String,
default: "default"
},
defaultConfig: {
type: Object,
default: () => ({})
}
},
setup(e) {
let t = N(null), n = (n) => {
if (t.value) {
if (n == null) throw Error("Not found instance of Editor when create <Toolbar/> component");
import("./index.esm-Denfxe5W.js").then((r) => {
r.DomEditor.getToolbar(n) || r.createToolbar({
editor: n,
selector: t.value || "<div></div>",
mode: e.mode,
config: e.defaultConfig
});
});
}
};
return le(() => {
Se(() => {
let { editor: t } = e;
t != null && n(t);
});
}), { selector: t };
}
}), Jn = { ref: "selector" };
function Yn(e, t, n, r, i, a) {
return fe(), ee("div", Jn, null, 512);
}
var Xn = /*#__PURE__*/ Hn(qn, [["render", Yn]]), Zn = Symbol("NEWBIE_LOCALE"), Qn = Symbol("NEWBIE_EDITOR"), $n = Symbol("NEWBIE_TABLE"), er = Symbol("NEWBIE_UPLOADER"), tr = Symbol("NEWBIE_FORM"), nr = Symbol("NEWBIE_SEARCH"), rr = /* @__PURE__ */ A({
name: "NewbieProvider",
props: {
editor: {
type: Object,
default: () => ({ uploadUrl: "" })
},
table: {
type: Object,
default: () => ({
page: 1,
pageSize: 10,
pageKey: "page",
pageSizeKey: "pageSize",
afterFetched: null
})
},
uploader: {
type: Object,
default: () => ({
uploadUrl: "",
defaultFileItem: {
id: "id",
name: "name",
url: "url",
path: "path",
thumbUrl: "thumbUrl"
},
defaultPreview: null
})
},
form: {
type: Object,
default: () => ({
format: {},
afterFetched: null,
columns: {}
})
},
search: {
type: Object,
default: () => ({
maskClass: "",
inputClass: "",
valueFormatter: null
})
},
locale: {
type: String,
default: "zh_CN"
}
},
setup(e, { slots: t }) {
let { locale: n } = l();
return I(() => e.locale, (e) => {
e && (n.value = e);
}, { immediate: !0 }), pe(Zn, e.locale), pe(Qn, {
uploadUrl: "",
...e.editor
}), pe($n, {
page: 1,
pageSize: 10,
pageKey: "page",
pageSizeKey: "pageSize",
afterFetched: null,
...e.table
}), pe(er, {
defaultFileItem: {
id: "id",
name: "name",
url: "url",
path: "path",
thumbUrl: "thumbUrl"
},
...e.uploader
}), pe(tr, {
format: {},
...e.form
}), pe(nr, {
maskClass: "",
inputClass: "",
valueFormatter: null,
...e.search
}), () => O("div", null, [t.default?.()]);
}
}), ir = /* @__PURE__ */ A({
name: "NewbieEditor",
props: {
value: {
type: String,
default: ""
},
placeholder: {
type: String,
default: ""
},
disabled: {
type: Boolean,
default: !1
},
readonly: {
type: Boolean,
default: !1
},
config: {
type: Object,
default: () => ({
toolbarConfig: {},
editorConfig: {}
})
}
},
emits: ["update:value"],
setup(e, { emit: n, expose: i }) {
let a = ze.useInjectFormItemContext(), o = P(), s = N(""), c = N({
excludeKeys: ["group-video", "emotion"],
...e.config?.toolbarConfig
}), { uploadUrl: l } = ie(Qn, () => ({})), u = N({
placeholder: e.placeholder || _("form.please-input", { title: _("common.content") }),
readOnly: e.disabled || e.readonly,
MENU_CONF: { uploadImage: { async customUpload(e, n) {
let i = new FormData();
i.append("file", e);
try {
let e = await r().post(l, i);
t(e, () => {
let { url: t, alt: r, href: i } = e.result;
n(t, r, i);
});
} catch (e) {
console.log(e);
}
} } },
...e.config?.editorConfig
}), d = (e) => {
o.value && o.value.setHtml(e);
}, f = () => o?.value;
ce(() => {
o.value?.destroy();
}), I(() => e.value, (e) => {
e !== s.value && o.value && d(e);
});
let p = (t) => {
o.value = t, d(e.value), t.on("fullScreen", () => {
document.body.classList.add("fullscreen");
}), t.on("unFullScreen", () => {
document.body.classList.remove("fullscreen");
}), !e.disabled && !e.readonly && (g.value = y());
}, m = (t) => {
let r = t.getHtml();
t.isEmpty() && (r = ""), r !== e.value && (n("update:value", r), a.onFieldChange());
}, h = async (e, t) => {
switch (t) {
case "success":
R.success(e);
break;
case "info":
R.info(e);
break;
case "warning":
R.warning(e);
break;
case "error":
R.error(e);
break;
default:
R.info(e);
break;
}
};
i({
setContent: d,
getEditor: f
});
let g = N(), v = N(), y = () => o?.value?.destroy ? O(Xn, {
editor: o.value,
defaultConfig: c.value,
style: "border-bottom: 1px solid #f0f0f0"
}, null) : O("div", null, null), b = () => O(Kn, {
modelValue: s.value,
"onUpdate:modelValue": (e) => s.value = e,
defaultConfig: u.value,
style: "height: 400px; overflow-y: hidden",
onOnChange: m,
onOnCreated: p,
onCustomAlert: h
}, null);
return le(() => {
v.value = b();
}), () => O("div", { style: "border: 1px solid #f0f0f0" }, [g.value, v.value]);
}
}), ar = In(ir), or = (e) => At(e) || B(e) ? "auto" : isNaN(e) ? e : `${e}px`, sr = (t, n, r, i) => {
let a = "", { uploaderProvider: o } = i;
if (n && !B(n[t.key]) ? a = n[t.key] : B(t.defaultValue) || (a = z(t.defaultValue) ? t.defaultValue({
submitForm: r,
existingData: n
}) : t.defaultValue), t.init && z(t.init) && (a = t.init({
submitForm: r,
value: a,
existingData: n
})), t.type === "number" || t.type === "slider" || t.type === "rate") a = g(a);
else if (t.type === "select" || t.type === "remote") t.defaultProps && (t.defaultProps.mode === "multiple" || t.defaultProps.mode === "tags") ? a ||= [] : a ||= void 0;
else if (t.type === "tree-select") t.defaultProps && (t.defaultProps.multiple === !0 || t.defaultProps.treeCheckable === !0) ? a ||= [] : a ||= void 0;
else if (t.type === "date" || t.type === "time") a = t.defaultProps && t.defaultProps.type === "range" ? a ? [e(a[0]), e(a[1])] : [] : a ? e(a) : null;
else if (t.type === "address") a ||= [], Dt(a) || (a = Fn(a));
else if (t.type === "uploader") if (t.defaultProps && t.defaultProps.maxNum && t.defaultProps.maxNum > 1) a ||= [];
else {
let { path: e, url: t } = o.defaultFileItem;
a ||= {
[e]: "",
[t]: ""
};
}
else [
"matrix-checkbox",
"matrix-radio",
"matrix-scale",
"rate-radio"
].includes(t.type) ? a ||= {} : [
"group",
"tag",
"checkbox",
"rate-checkbox"
].includes(t.type) && (a ||= []);
return a;
}, cr = (e, t) => {
let n = t[e.key];
return !(Mt(n) && !Object.keys(n).length || Dt(n) && !n.length || n === "" || n === !1 || n == null || n === 0);
}, lr = (e, t) => {
let { t: n, locale: r } = l(), i = r.value === "en_US" ? e.title?.toLowerCase() : e.title;
return t === "select" ? e.placeholder || n("form.please-select", { title: i }) : t === "upload" ? e.placeholder || n("form.please-upload", { title: i }) : e.placeholder || n("form.please-input", { title: i });
}, ur = (e, t) => {
let n = Ne, r = lr(e, "select");
return e.defaultProps && e.defaultProps.type === "range" && (n = et, r = Nt(e.placeholder) ? [e.placeholder, e.placeholder] : [r, r]), O(n, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
allowClear: !0,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
placeholder: r,
style: e.style || { width: or(e.width || "200px") },
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), { ...e.defaultSlots });
}, dr = (e, t) => {
let n = pt, r = lr(e, "select");
return e.defaultProps && e.defaultProps.type === "range" && (n = mt, r = Nt(e.placeholder) ? [e.placeholder, e.placeholder] : [r, r]), O(n, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
allowClear: !0,
placeholder: r,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
style: e.style || { width: or(e.width || "200px") },
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), { ...e.defaultSlots });
}, fr = (e, t) => {
(t[e.key] === null || t[e.key] === "null" || t[e.key] === void 0) && (t[e.key] = ""), t[e.key] = String(t[e.key]);
let n = {};
e.defaultProps && (e.defaultProps.prefix && (n.prefix = () => z(e.defaultProps.prefix) ? e.defaultProps.prefix() : e.defaultProps.prefix), e.defaultProps.suffix && (n.suffix = () => z(e.defaultProps.suffix) ? e.defaultProps.suffix() : e.defaultProps.suffix), e.defaultProps.prepend && (n.addonBefore = () => z(e.defaultProps.prepend) ? e.defaultProps.prepend() : e.defaultProps.prepend), e.defaultProps.append && (n.addonAfter = () => z(e.defaultProps.append) ? e.defaultProps.append() : e.defaultProps.append));
let r = { width: or(e.width || "200px") }, i = We;
return (e.type === "textarea" || e.defaultProps && e.defaultProps.type === "textarea") && (i = We.TextArea, r = { width: or(e.width || "100%") }), (e.type === "password" || e.defaultProps && e.defaultProps.type === "password") && (i = We.Password), O(i, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
placeholder: lr(e),
style: e.style || r,
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), {
...n,
...e.defaultSlots
});
};
//#endregion
//#region components/form/components/Tag.jsx
function pr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var mr = (e, t, n) => {
Object.keys(n).length || (n.value = null);
let r = t[e.key]?.length ? t[e.key].map((n) => O(dt, {
key: n,
closable: !e.disabled,
style: { marginBottom: "10px" },
onClose: () => {
t[e.key] = t[e.key].filter((e) => e !== n);
}
}, pr(n) ? n : { default: () => [n] })) : null, i = null;
return i = e.disabled || e.readonly ? null : e.defaultProps?.inputType === "time" ? O(pt, {
value: n.value,
"onUpdate:value": (e) => n.value = e,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
format: e.defaultProps?.format || "HH:mm",
onChange: (r) => {
if (!r) return;
let i = r.format(e.defaultProps?.format || "HH:mm");
if (t[e.key].indexOf(i) !== -1) {
R.warn("时间已存在");
return;
}
t[e.key].push(i), se(() => {
n.value = "";
});
}
}, null) : e.defaultProps?.inputType === "time_range" ? O(mt, {
value: n.value,
"onUpdate:value": (e) => n.value = e,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
format: e.defaultProps?.format || "HH:mm",
onChange: (r) => {
if (!r) return;
let i = [r[0].format(e.defaultProps?.format || "HH:mm"), r[1].format(e.defaultProps?.format || "HH:mm")];
if (i = i.join("至"), t[e.key].indexOf(i) !== -1) {
R.warn("时间已存在");
return;
}
t[e.key].push(i), se(() => {
n.value = [];
});
}
}, null) : O(We, {
value: n.value,
"onUpdate:value": (e) => n.value = e,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
placeholder: e.placeholder || "按Enter键确认",
style: e.style || { width: or(e.width || "200px") },
onPressEnter: Ce((r) => {
if (r.preventDefault(), r.keyCode === 13 && n.value) {
if (t[e.key].indexOf(n.value) !== -1) {
R.warn("标签已存在");
return;
}
t[e.key].push(n.value), n.value = "";
}
}, ["stop"])
}, { prefix: () => O(xn, null, null) }), O("div", { class: "newbie-form-tag" }, [[r, i]]);
}, hr = (e, t) => {
let n = z(e.options) ? e.options(t) : e.options;
return n = n.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e), O(rt, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
options: n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
allowClear: !0,
placeholder: lr(e, "select"),
dropdownMatchSelectWidth: !e.width,
showSearch: !0,
optionFilterProp: "label",
style: e.style || (e.width ? { width: or(e.width) } : {}),
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), { ...e.defaultSlots });
}, gr = (e, t) => {
let n = z(e.options) ? e.options(t) : e.options;
return O(_t, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
treeData: n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
treeDefaultExpandAll: !0,
treeNodeFilterProp: "label",
showSearch: !0,
allowClear: !0,
placeholder: lr(e, "select"),
dropdownMatchSelectWidth: !e.width,
style: e.style || (e.width ? { width: or(e.width) } : {}),
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), { ...e.defaultSlots });
}, _r = (e, n, i) => {
if (Object.keys(i).length || (i.fetcher = { loading: !1 }, i.options = [], i.init = !1), !i.init) {
i.init = !0;
let t = [];
e.options && (t = z(e.options) ? e.options(n) : e.options, t = t.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e)), i.options = t;
}
let a = e.method || "get";
if (["get", "post"].indexOf(a) === -1) return console.error(`${e.key}: method must be 'get' or 'post' in "remote" type`), null;
if (!e.url) return console.error(`${e.key}: url is required in "remote" type`), null;
let o = Ct(async (n) => {
if (n = n.trim(), !n) return;
let o = await r(i.fetcher)[a](e.url, { params: {
[e.keyword || "keyword"]: n,
...e.params
} });
t(o, () => {
e.onSearch && (o.result = e.onSearch(o.result)), i.options = o.result;
});
}, 1e3);
return O(rt, M({
value: n[e.key],
"onUpdate:value": (t) => n[e.key] = t,
options: i.options,
disabled: z(e.disabled) ? e.disabled(n) : e.disabled,
showSearch: !0,
allowClear: !0,
filterOption: !1,
notFoundContent: i.fetcher.loading ? void 0 : _("common.no-content"),
placeholder: lr(e, "select"),
dropdownMatchSelectWidth: !e.width,
style: e.style || (e.width ? { width: or(e.width) } : {}),
class: {
readonly: e.readonly,
...e.class
},
onSearch: o
}, e.defaultProps), {
notFoundContent: () => i.fetcher.loading ? O(ot, null, null) : "",
...e.defaultSlots
});
}, vr = (e, t) => O(Pn, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
placeholder: lr(e, "select"),
class: {
readonly: e.readonly,
...e.class
},
style: e.style || { width: or(e.width || "200px") }
}, e.defaultProps), null), yr = (e, t) => {
let n = z(e.options) ? e.options(t) : e.options;
return (jt(t[e.key]) || Nt(t[e.key])) && (t[e.key] = p(n, t[e.key], e.defaultProps?.fieldNames)), O(Oe, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
allowClear: !0,
options: n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
changeOnSelect: !0,
showSearch: { filter(e, t) {
return t.some((t) => t.label && t.label.toLowerCase().indexOf(e.toLowerCase()) > -1);
} },
placeholder: lr(e, "select"),
style: e.style || { width: or(e.width || "200px") },
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), { ...e.defaultSlots });
}, br = (e, t) => (t[e.key] = Number(t[e.key]) || 0, O(Ge, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
placeholder: lr(e),
style: e.style || { width: or(e.width) || "100px" },
class: {
readonly: e.readonly,
...e.class
}
}, e.defaultProps), { ...e.defaultSlots }));
//#endregion
//#region components/form/components/Switch.jsx
function xr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Sr = (e, t) => {
let n = {
checkedChildren: () => e.options?.[0] || null,
unCheckedChildren: () => e.options?.[1] || null
};
return O(st, M({
checked: t[e.key],
"onUpdate:checked": (n) => t[e.key] = n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
style: e.style || {}
}, e.defaultProps), xr(n) ? n : { default: () => [n] });
};
//#endregion
//#region components/form/components/Radio.jsx
function Cr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var wr = (e, t) => {
let n, r = z(e.options) ? e.options(t) : e.options;
return r = r.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e), e.readonly ? O("div", { style: { padding: "0 11px" } }, [O(dt, null, Cr(n = v(t[e.key], r)) ? n : { default: () => [n] })]) : O($e, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
optionType: "button",
buttonStyle: "solid",
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
options: r,
style: e.style || {}
}, e.defaultProps), { ...e.defaultSlots });
};
//#endregion
//#region components/form/components/Checkbox.jsx
function Tr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Er = (e, t) => {
let n = z(e.options) ? e.options(t) : e.options;
return n = n.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e), e.readonly ? O("div", { style: { padding: "0 11px" } }, [f(n, t[e.key]).map((e) => O(dt, { style: { marginRight: "5px" } }, Tr(e) ? e : { default: () => [e] }))]) : O(je, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
options: n,
shape: "square",
style: e.style || {}
}, e.defaultProps), { ...e.defaultSlots });
}, Dr = (e, t) => t[e.key] ? O("div", M({
style: e.style || {},
innerHTML: t[e.key]
}, e.defaultProps), null) : null, Or = /* @__PURE__ */ o((/* @__PURE__ */ i(((e, t) => {
(function() {
var e = function(t) {
if (!(this instanceof e)) return new e(t);
if (this.version = 1, this.support = typeof File < "u" && typeof Blob < "u" && typeof FileList < "u" && (!!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice || !!Blob.prototype.slice || !1), !this.support) return !1;
var n = this;
n.files = [], n.defaults = {
chunkSize: 1 * 1024 * 1024,
forceChunkSize: !1,
simultaneousUploads: 3,
fileParameterName: "file",
chunkNumberParameterName: "resumableChunkNumber",
chunkSizeParameterName: "resumableChunkSize",
currentChunkSizeParameterName: "resumableCurrentChunkSize",
totalSizeParameterName: "resumableTotalSize",
typeParameterName: "resumableType",
identifierParameterName: "resumableIdentifier",
fileNameParameterName: "resumableFilename",
relativePathParameterName: "resumableRelativePath",
totalChunksParameterName: "resumableTotalChunks",
throttleProgressCallbacks: .5,
query: {},
headers: {},
preprocess: null,
method: "multipart",
uploadMethod: "POST",
testMethod: "GET",
prioritizeFirstAndLastChunk: !1,
target: "/",
testTarget: null,
parameterNamespace: "",
testChunks: !0,
generateUniqueIdentifier: null,
getTarget: null,
maxChunkRetries: 100,
chunkRetryInterval: void 0,
permanentErrors: [
400,
404,
415,
500,
501
],
maxFiles: void 0,
withCredentials: !1,
xhrTimeout: 0,
clearInput: !0,
chunkFormat: "blob",
setChunkTypeFromFile: !1,
maxFilesErrorCallback: function(e, t) {
var r = n.getOpt("maxFiles");
alert("Please upload no more than " + r + " file" + (r === 1 ? "" : "s") + " at a time.");
},
minFileSize: 1,
minFileSizeErrorCallback: function(e, t) {
alert(e.fileName || e.name + " is too small, please upload files larger than " + r.formatSize(n.getOpt("minFileSize")) + ".");
},
maxFileSize: void 0,
maxFileSizeErrorCallback: function(e, t) {
alert(e.fileName || e.name + " is too large, please upload files less than " + r.formatSize(n.getOpt("maxFileSize")) + ".");
},
fileType: [],
fileTypeErrorCallback: function(e, t) {
alert(e.fileName || e.name + " has type not allowed, please upload files of type " + n.getOpt("fileType") + ".");
}
}, n.opts = t || {}, n.getOpt = function(t) {
var n = this;
if (t instanceof Array) {
var i = {};
return r.each(t, function(e) {
i[e] = n.getOpt(e);
}), i;
}
if (n instanceof f) {
if (n.opts[t] !== void 0) return n.opts[t];
n = n.fileObj;
}
if (n instanceof d) {
if (n.opts[t] !== void 0) return n.opts[t];
n = n.resumableObj;
}
if (n instanceof e) return n.opts[t] === void 0 ? n.defaults[t] : n.opts[t];
}, n.events = [], n.on = function(e, t) {
n.events.push(e.toLowerCase(), t);
}, n.fire = function() {
for (var e = [], t = 0; t < arguments.length; t++) e.push(arguments[t]);
for (var r = e[0].toLowerCase(), t = 0; t <= n.events.length; t += 2) n.events[t] == r && n.events[t + 1].apply(n, e.slice(1)), n.events[t] == "catchall" && n.events[t + 1].apply(null, e);
r == "fileerror" && n.fire("error", e[2], e[1]), r == "fileprogress" && n.fire("progress");
};
var r = {
stopEvent: function(e) {
e.stopPropagation(), e.preventDefault();
},
each: function(e, t) {
if (e.length !== void 0) {
for (var n = 0; n < e.length; n++) if (t(e[n]) === !1) return;
} else for (n in e) if (t(n, e[n]) === !1) return;
},
generateUniqueIdentifier: function(e, t) {
var r = n.getOpt("generateUniqueIdentifier");
if (typeof r == "function") return r(e, t);
var i = e.webkitRelativePath || e.fileName || e.name;
return e.size + "-" + i.replace(/[^0-9a-zA-Z_-]/gim, "");
},
contains: function(e, t) {
var n = !1;
return r.each(e, function(e) {
return e == t ? (n = !0, !1) : !0;
}), n;
},
formatSize: function(e) {
return e < 1024 ? e + " bytes" : e < 1024 * 1024 ? (e / 1024).toFixed(0) + " KB" : e < 1024 * 1024 * 1024 ? (e / 1024 / 1024).toFixed(1) + " MB" : (e / 1024 / 1024 / 1024).toFixed(1) + " GB";
},
getTarget: function(e, t) {
var r = n.getOpt("target");
if (e === "test" && n.getOpt("testTarget") && (r = n.getOpt("testTarget") === "/" ? n.getOpt("target") : n.getOpt("testTarget")), typeof r == "function") return r(t);
var i = r.indexOf("?") < 0 ? "?" : "&", a = t.join("&");
return r + i + a;
}
}, i = function(e) {
r.stopEvent(e), e.dataTransfer && e.dataTransfer.items ? l(e.dataTransfer.items, e) : e.dataTransfer && e.dataTransfer.files && l(e.dataTransfer.files, e);
}, a = function(e) {
e.preventDefault();
};
function o(e, t, n, r) {
var i;
if (e.isFile) return e.file(function(e) {
e.relativePath = t + e.name, n.push(e), r();
});
if (e.isDirectory ? i = e : e instanceof File && n.push(e), typeof e.webkitGetAsEntry == "function" && (i = e.webkitGetAsEntry()), i && i.isDirectory) return c(i, t + i.name + "/", n, r);
typeof e.getAsFile == "function" && (e = e.getAsFile(), e instanceof File && (e.relativePath = t + e.name, n.push(e))), r();
}
function s(e, t) {
if (!e || e.length === 0) return t();
e[0](function() {
s(e.slice(1), t);
});
}
function c(e, t, n, r) {
e.createReader().readEntries(function(e) {
if (!e.length) return r();
s(e.map(function(e) {
return o.bind(null, e, t, n);
}), r);
});
}
function l(e, t) {
if (e.length) {
n.fire("beforeAdd");
var r = [];
s(Array.prototype.map.call(e, function(e) {
return o.bind(null, e, "", r);
}), function() {
r.length && u(r, t);
});
}
}
var u = function(e, t) {
var i = 0, a = n.getOpt([
"maxFiles",
"minFileSize",
"maxFileSize",
"maxFilesErrorCallback",
"minFileSizeErrorCallback",
"maxFileSizeErrorCallback",
"fileType",
"fileTypeErrorCallback"
]);
if (a.maxFiles !== void 0 && a.maxFiles < e.length + n.files.length) if (a.maxFiles === 1 && n.files.length === 1 && e.length === 1) n.removeFile(n.files[0]);
else return a.maxFilesErrorCallback(e, i++), !1;
var o = [], s = [], c = e.length, l = function() {
if (!--c) {
if (!o.length && !s.length) return;
window.setTimeout(function() {
n.fire("filesAdded", o, s);
}, 0);
}
};
r.each(e, function(e) {
var c = e.name;
if (a.fileType.length > 0) {
var u = !1;
for (var f in a.fileType) {
var p = "." + a.fileType[f];
if (c.toLowerCase().indexOf(p.toLowerCase(), c.length - p.length) !== -1) {
u = !0;
break;
}
}
if (!u) return a.fileTypeErrorCallback(e, i++), !1;
}
if (a.minFileSize !== void 0 && e.size < a.minFileSize) return a.minFileSizeErrorCallback(e, i++), !1;
if (a.maxFileSize !== void 0 && e.size > a.maxFileSize) return a.maxFileSizeErrorCallback(e, i++), !1;
function m(r) {
n.getFromUniqueIdentifier(r) ? s.push(e) : (function() {
e.uniqueIdentifier = r;
var i = new d(n, e, r);
n.files.push(i), o.push(i), i.container = t === void 0 ? null : t.srcElement, window.setTimeout(function() {
n.fire("fileAdded", i, t);
}, 0);
})(), l();
}
var h = r.generateUniqueIdentifier(e, t);
h && typeof h.then == "function" ? h.then(function(e) {
m(e);
}, function() {
l();
}) : m(h);
});
};
function d(e, t, n) {
var i = this;
i.opts = {}, i.getOpt = e.getOpt, i._prevProgress = 0, i.resumableObj = e, i.file = t, i.fileName = t.fileName || t.name, i.size = t.size, i.relativePath = t.relativePath || t.webkitRelativePath || i.fileName, i.uniqueIdentifier = n, i._pause = !1, i.container = "";
var a = n !== void 0, o = function(e, t) {
switch (e) {
case "progress":
i.resumableObj.fire("fileProgress", i, t);
break;
case "error":
i.abort(), a = !0, i.chunks = [], i.resumableObj.fire("fileError", i, t);
break;
case "success":
if (a) return;
i.resumableObj.fire("fileProgress", i), i.isComplete() && i.resumableObj.fire("fileSuccess", i, t);
break;
case "retry":
i.resumableObj.fire("fileRetry", i);
break;
}
};
return i.chunks = [], i.abort = function() {
var e = 0;
r.each(i.chunks, function(t) {
t.status() == "uploading" && (t.abort(), e++);
}), e > 0 && i.resumableObj.fire("fileProgress", i);
}, i.cancel = function() {
var e = i.chunks;
i.chunks = [], r.each(e, function(e) {
e.status() == "uploading" && (e.abort(), i.resumableObj.uploadNextChunk());
}), i.resumableObj.removeFile(i), i.resumableObj.fire("fileProgress", i);
}, i.retry = function() {
i.bootstrap();
var e = !1;
i.resumableObj.on("chunkingComplete", function() {
e || i.resumableObj.upload(), e = !0;
});
}, i.bootstrap = function() {
i.abort(), a = !1, i.chunks = [], i._prevProgress = 0;
for (var e = i.getOpt("forceChunkSize") ? Math.ceil : Math.floor, t = Math.max(e(i.file.size / i.getOpt("chunkSize")), 1), n = 0; n < t; n++) (function(e) {
window.setTimeout(function() {
i.chunks.push(new f(i.resumableObj, i, e, o)), i.resumableObj.fire("chunkingProgress", i, e / t);
}, 0);
})(n);
window.setTimeout(function() {
i.resumableObj.fire("chunkingComplete", i);
}, 0);
}, i.progress = function() {
if (a) return 1;
var e = 0, t = !1;
return r.each(i.chunks, function(n) {
n.status() == "error" && (t = !0), e += n.progress(!0);
}), e = t || e > .99999 ? 1 : e, e = Math.max(i._prevProgress, e), i._prevProgress = e, e;
}, i.isUploading = function() {
var e = !1;
return r.each(i.chunks, function(t) {
if (t.status() == "uploading") return e = !0, !1;
}), e;
}, i.isComplete = function() {
var e = !1;
return r.each(i.chunks, function(t) {
var n = t.status();
if (n == "pending" || n == "uploading" || t.preprocessState === 1) return e = !0, !1;
}), !e;
}, i.pause = function(e) {
e === void 0 ? i._pause = !i._pause : i._pause = e;
}, i.isPaused = function() {
return i._pause;
}, i.resumableObj.fire("chunkingStart", i), i.bootstrap(), this;
}
function f(e, t, n, i) {
var a = this;
a.opts = {}, a.getOpt = e.getOpt, a.resumableObj = e, a.fileObj = t, a.fileObjSize = t.size, a.fileObjType = t.file.type, a.offset = n, a.callback = i, a.lastProgressCallback = /* @__PURE__ */ new Date(), a.tested = !1, a.retries = 0, a.pendingRetry = !1, a.preprocessState = 0;
var o = a.getOpt("chunkSize");
return a.loaded = 0, a.startByte = a.offset * o, a.endByte = Math.min(a.fileObjSize, (a.offset + 1) * o), a.fileObjSize - a.endByte < o && !a.getOpt("forceChunkSize") && (a.endByte = a.fileObjSize), a.xhr = null, a.test = function() {
a.xhr = new XMLHttpRequest();
var e = function(e) {
a.tested = !0;
var t = a.status();
t == "success" ? (a.callback(t, a.message()), a.resumableObj.uploadNextChunk()) : a.send();
};
a.xhr.addEventListener("load", e, !1), a.xhr.addEventListener("error", e, !1), a.xhr.addEventListener("timeout", e, !1);
var t = [], n = a.getOpt("parameterNamespace"), i = a.getOpt("query");
typeof i == "function" && (i = i(a.fileObj, a)), r.each(i, function(e, r) {
t.push([encodeURIComponent(n + e), encodeURIComponent(r)].join("="));
}), t = t.concat([
["chunkNumberParameterName", a.offset + 1],
["chunkSizeParameterName", a.getOpt("chunkSize")],
["currentChunkSizeParameterName", a.endByte - a.startByte],
["totalSizeParameterName", a.fileObjSize],
["typeParameterName", a.fileObjType],
["identifierParameterName", a.fileObj.uniqueIdentifier],
["fileNameParameterName", a.fileObj.fileName],
["relativePathParameterName", a.fileObj.relativePath],
["totalChunksParameterName", a.fileObj.chunks.length]
].filter(function(e) {
return a.getOpt(e[0]);
}).map(function(e) {
return [n + a.getOpt(e[0]), encodeURIComponent(e[1])].join("=");
})), a.xhr.open(a.getOpt("testMethod"), r.getTarget("test", t)), a.xhr.timeout = a.getOpt("xhrTimeout"), a.xhr.withCredentials = a.getOpt("withCredentials");
var o = a.getOpt("headers");
typeof o == "function" && (o = o(a.fileObj, a)), r.each(o, function(e, t) {
a.xhr.setRequestHeader(e, t);
}), a.xhr.send(null);
}, a.preprocessFinished = function() {
a.preprocessState = 2, a.send();
}, a.send = function() {
var e = a.getOpt("preprocess");
if (typeof e == "function") switch (a.preprocessState) {
case 0:
a.preprocessState = 1, e(a);
return;
case 1: return;
case 2: break;
}
if (a.getOpt("testChunks") && !a.tested) {
a.test();
return;
}
a.xhr = new XMLHttpRequest(), a.xhr.upload.addEventListener("progress", function(e) {
/* @__PURE__ */ new Date() - a.lastProgressCallback > a.getOpt("throttleProgressCallbacks") * 1e3 && (a.callback("progress"), a.lastProgressCallback = /* @__PURE__ */ new Date()), a.loaded = e.loaded || 0;
}, !1), a.loaded = 0, a.pendingRetry = !1, a.callback("progress");
var t = function(e) {
var t = a.status();
if (t == "success" || t == "error") a.callback(t, a.message()), a.resumableObj.uploadNextChunk();
else {
a.callback("retry", a.message()), a.abort(), a.retries++;
var n = a.getOpt("chunkRetryInterval");
n === void 0 ? a.send() : (a.pendingRetry = !0, setTimeout(a.send, n));
}
};
a.xhr.addEventListener("load", t, !1), a.xhr.addEventListener("error", t, !1), a.xhr.addEventListener("timeout", t, !1);
var n = [
["chunkNumberParameterName", a.offset + 1],
["chunkSizeParameterName", a.getOpt("chunkSize")],
["currentChunkSizeParameterName", a.endByte - a.startByte],
["totalSizeParameterName", a.fileObjSize],
["typeParameterName", a.fileObjType],
["identifierParameterName", a.fileObj.uniqueIdentifier],
["fileNameParameterName", a.fileObj.fileName],
["relativePathParameterName", a.fileObj.relativePath],
["totalChunksParameterName", a.fileObj.chunks.length]
].filter(function(e) {
return a.getOpt(e[0]);
}).reduce(function(e, t) {
return e[a.getOpt(t[0])] = t[1], e;
}, {}), i = a.getOpt("query");
typeof i == "function" && (i = i(a.fileObj, a)), r.each(i, function(e, t) {
n[e] = t;
});
var o = a.fileObj.file.slice ? "slice" : a.fileObj.file.mozSlice ? "mozSlice" : a.fileObj.file.webkitSlice ? "webkitSlice" : "slice", s = a.fileObj.file[o](a.startByte, a.endByte, a.getOpt("setChunkTypeFromFile") ? a.fileObj.file.type : ""), c = null, l = [], u = a.getOpt("parameterNamespace");
if (a.getOpt("method") === "octet") c = s, r.each(n, function(e, t) {
l.push([encodeURIComponent(u + e), encodeURIComponent(t)].join("="));
});
else if (c = new FormData(), r.each(n, function(e, t) {
c.append(u + e, t), l.push([encodeURIComponent(u + e), encodeURIComponent(t)].join("="));
}), a.getOpt("chunkFormat") == "blob") c.append(u + a.getOpt("fileParameterName"), s, a.fileObj.fileName);
else if (a.getOpt("chunkFormat") == "base64") {
var d = new FileReader();
d.onload = function(e) {
c.append(u + a.getOpt("fileParameterName"), d.result), a.xhr.send(c);
}, d.readAsDataURL(s);
}
var f = r.getTarget("upload", l), p = a.getOpt("uploadMethod");
a.xhr.open(p, f), a.getOpt("method") === "octet" && a.xhr.setRequestHeader("Content-Type", "application/octet-stream"), a.xhr.timeout = a.getOpt("xhrTimeout"), a.xhr.withCredentials = a.getOpt("withCredentials");
var m = a.getOpt("headers");
typeof m == "function" && (m = m(a.fileObj, a)), r.each(m, function(e, t) {
a.xhr.setRequestHeader(e, t);
}), a.getOpt("chunkFormat") == "blob" && a.xhr.send(c);
}, a.abort = function() {
a.xhr && a.xhr.abort(), a.xhr = null;
}, a.status = function() {
return a.pendingRetry ? "uploading" : a.xhr ? a.xhr.readyState < 4 ? "uploading" : a.xhr.status == 200 || a.xhr.status == 201 ? "success" : r.contains(a.getOpt("permanentErrors"), a.xhr.status) || a.retries >= a.getOpt("maxChunkRetries") ? "error" : (a.abort(), "pending") : "pending";
}, a.message = function() {
return a.xhr ? a.xhr.responseText : "";
}, a.progress = function(e) {
e === void 0 && (e = !1);
var t = e ? (a.endByte - a.startByte) / a.fileObjSize : 1;
if (a.pendingRetry) return 0;
switch ((!a.xhr || !a.xhr.status) && (t *= .95), a.status()) {
case "success":
case "error": return 1 * t;
case "pending": return 0 * t;
default: return a.loaded / (a.endByte - a.startByte) * t;
}
}, this;
}
return n.uploadNextChunk = function() {
var e = !1;
if (n.getOpt("prioritizeFirstAndLastChunk") && (r.each(n.files, function(t) {
if (t.chunks.length && t.chunks[0].status() == "pending" && t.chunks[0].preprocessState === 0) return t.chunks[0].send(), e = !0, !1;
if (t.chunks.length > 1 && t.chunks[t.chunks.length - 1].status() == "pending" && t.chunks[t.chunks.length - 1].preprocessState === 0) return t.chunks[t.chunks.length - 1].send(), e = !0, !1;
}), e) || (r.each(n.files, function(t) {
if (t.isPaused() === !1 && r.each(t.chunks, function(t) {
if (t.status() == "pending" && t.preprocessState === 0) return t.send(), e = !0, !1;
}), e) return !1;
}), e)) return !0;
var t = !1;
return r.each(n.files, function(e) {
if (!e.isComplete()) return t = !0, !1;
}), t || n.fire("complete"), !1;
}, n.assignBrowse = function(e, t) {
e.length === void 0 && (e = [e]), r.each(e, function(e) {
var r;
e.tagName === "INPUT" && e.type === "file" ? r = e : (r = document.createElement("input"), r.setAttribute("type", "file"), r.style.display = "none", e.addEventListener("click", function() {
r.style.opacity = 0, r.style.display = "block", r.focus(), r.click(), r.style.display = "none";
}, !1), e.appendChild(r));
var i = n.getOpt("maxFiles");
i === void 0 || i != 1 ? r.setAttribute("multiple", "multiple") : r.removeAttribute("multiple"), t ? r.setAttribute("webkitdirectory", "webkitdirectory") : r.removeAttribute("webkitdirectory");
var a = n.getOpt("fileType");
a !== void 0 && a.length >= 1 ? r.setAttribute("accept", a.map(function(e) {
return "." + e;
}).join(",")) : r.removeAttribute("accept"), r.addEventListener("change", function(e) {
u(e.target.files, e), n.getOpt("clearInput") && (e.target.value = "");
}, !1);
});
}, n.assignDrop = function(e) {
e.length === void 0 && (e = [e]), r.each(e, function(e) {
e.addEventListener("dragover", a, !1), e.addEventListener("dragenter", a, !1), e.addEventListener("drop", i, !1);
});
}, n.unAssignDrop = function(e) {
e.length === void 0 && (e = [e]), r.each(e, function(e) {
e.removeEventListener("dragover", a), e.removeEventListener("dragenter", a), e.removeEventListener("drop", i);
});
}, n.isUploading = function() {
var e = !1;
return r.each(n.files, function(t) {
if (t.isUploading()) return e = !0, !1;
}), e;
}, n.upload = function() {
if (!n.isUploading()) {
n.fire("uploadStart");
for (var e = 1; e <= n.getOpt("simultaneousUploads"); e++) n.uploadNextChunk();
}
}, n.pause = function() {
r.each(n.files, function(e) {
e.abort();
}), n.fire("pause");
}, n.cancel = function() {
n.fire("beforeCancel");
for (var e = n.files.length - 1; e >= 0; e--) n.files[e].cancel();
n.fire("cancel");
}, n.progress = function() {
var e = 0, t = 0;
return r.each(n.files, function(n) {
e += n.progress() * n.size, t += n.size;
}), t > 0 ? e / t : 0;
}, n.addFile = function(e, t) {
u([e], t);
}, n.addFiles = function(e, t) {
u(e, t);
}, n.removeFile = function(e) {
for (var t = n.files.length - 1; t >= 0; t--) n.files[t] === e && n.files.splice(t, 1);
}, n.getFromUniqueIdentifier = function(e) {
var t = !1;
return r.each(n.files, function(n) {
n.uniqueIdentifier == e && (t = n);
}), t;
}, n.getSize = function() {
var e = 0;
return r.each(n.files, function(t) {
e += t.size;
}), e;
}, n.handleDropEvent = function(e) {
i(e);
}, n.handleChangeEvent = function(e) {
u(e.target.files, e), e.target.value = "";
}, n.updateQuery = function(e) {
n.opts.query = e;
}, this;
};
t === void 0 ? typeof define == "function" && define.amd ? define(function() {
return e;
}) : window.Resumable = e : t.exports = e;
})();
})))(), 1);
//#endregion
//#region components/uploader/NewbieUploader.jsx
function kr(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Ar = /* @__PURE__ */ A({
name: "NewbieUploader",
props: {
value: {
type: [
Object,
Array,
String
],
default: () => ({})
},
name: {
type: String,
default: "file"
},
headers: {
type: Object,
default: () => ({})
},
accept: {
type: String,
default: ""
},
type: {
type: String,
default: "file"
},
disabled: {
type: Boolean,
default: !1
},
maxSize: {
type: Number,
default: 20
},
maxNum: {
type: Number,
default: 1
},
multiple: {
type: Boolean,
default: !1
},
multipart: {
type: Boolean,
default: !1
},
action: {
type: String,
default: ""
},
extraData: {
type: Object,
default: () => ({})
},
uploadText: {
type: String,
default: ""
},
disk: {
type: String,
default: ""
},
preview: {
type: Function,
default: null
},
uploadProps: {
type: Object,
default: () => ({})
}
},
emits: ["update:value", "success"],
setup(e, { emit: t }) {
let { STATE_CODE_SUCCESS: n } = x, i = ze.useInjectFormItemContext(), a = ie(er, () => ({})), o = a.uploadUrl || "", s = a.defaultFileItem || {}, c = a.defaultPreview || null, { url: l, path: u, name: d } = s, f = me({
fileList: [],
previewVisible: !1,
previewCurrent: 0,
progress: e.multipart ? {
strokeColor: {
"0%": "#108ee9",
"100%": "#87d068"
},
strokeWidth: 3,
format: (e) => `${parseFloat(e.toFixed(2))}%`
} : null
}), p = E(() => !e.maxNum || e.maxNum === 1), m = E(() => f.fileList.length >= e.maxNum), h = E(() => e.type === "picture-card" || e.type === "picture"), g = (t) => {
Dt(t) || (t = [t]);
let n = t.filter((e) => e.done || !!e[u] || !!e[d]).map((t) => ({
...It(t, Object.values(s)),
_type: "file",
_disk: e.disk
}));
return p.value ? n[0] || null : n;
}, v = (e) => {
if (!e) return [];
e = Dt(e) ? e : [e], f.fileList = e.filter((e) => e[l] || e[d] || e[u]).map((e) => ({
uid: Lt(1, 1e7),
done: !0,
name: e[d] || _("form.attachment"),
url: e[l],
_type: "file",
...e
})), t("update:value", g(f.fileList));
};
le(() => {
v(e.value);
}), I(() => e.value, (e) => {
e && !Dt(e) && (e = [e]), kt(Pt(e, u).sort(), Pt(f.fileList, u).sort()) || v(e);
});
let y = (t) => {
let n = t[l];
n && (n = n.toLowerCase(), n.includes(".jpg") || n.includes(".jpeg") || n.includes(".png") || n.includes(".gif") || h.value ? (f.previewCurrent = f.fileList.findIndex((e) => e.uid === t.uid), f.previewVisible = !0) : e.preview ? e.preview(t) : c ? c(t) : location.href = t[l]);
}, b = (e) => {
let n = g(e);
t("update:value", n), t("success", n), i.onFieldChange();
}, S = ({ file: e, fileList: t }) => {
if (t = t.map((e) => {
if (e.status === "done" && e.response) {
let t = e.response;
t.result[u] ? (e = {
...e,
...It(t.result, Object.values(s))
}, e.done = !0) : e.isRemoved = !0;
} else e.status === "error" && (e.isRemoved = !0);
return e;
}).filter((e) => !e.isRemoved), e.status === "removed") b(t);
else if (e.status === "done" && e.response?.status !== n) R.error(e.response?.result || _("form.upload-fail"));
else if (e.status === "error" && e.error) e.error.status === 413 ? R.error(`${e.error.status}: ${_("form.upload-size-limit")}`) : R.error(e.error.message || _("form.upload-fail"));
else if (!e.status) {
let n = -1;
t.forEach((t, r) => {
t.uid === e.uid && (n = r);
}), n >= 0 && t.splice(n, 1);
}
wt(t, (e) => e.done) && b(t), f.fileList = t;
}, C = (t) => t.size > e.maxSize * 1024 * 1024 ? (R.error(_("form.upload-size-max", { size: e.maxSize })), !1) : m.value ? (R.error(_("form.upload-num-max", { num: e.maxNum })), !1) : !0, w = async ({ action: t, data: n, file: i, filename: a, headers: o, onError: s, onProgress: c, onSuccess: l, withCredentials: u }) => {
console.log("Using uploadAction");
let d = new FormData();
n && Object.keys(n).forEach((e) => {
d.append(e, n[e]);
}), d.append(a, i), e.disk && d.append("_disk", e.disk);
try {
l(await r().post(t, d, {
withCredentials: u,
headers: o,
onUploadProgress: ({ total: e, loaded: t }) => {
c({ percent: parseInt(Math.round(t / e * 100).toFixed(2)) }, i);
}
}), i);
} catch (e) {
s(e);
}
return { abort() {
console.log("upload progress is aborted.");
} };
}, T = async ({ action: t, data: n, file: r, headers: i, onError: a, onProgress: o, onSuccess: s }) => {
n ||= {}, e.disk && (n._disk = e.disk);
let c = new Or.default({
chunkSize: 1 * 1024 * 1024,
forceChunkSize: !1,
simultaneousUploads: 3,
testChunks: !1,
throttleProgressCallbacks: 1,
target: t,
query: n,
headers: i
});
c.on("fileAdded", () => {
c.upload();
}), c.on("fileProgress", (e) => {
o({ percent: e.progress() * 100 });
}), c.on("fileSuccess", (e, t) => {
s(JSON.parse(t), e);
}), c.on("fileError", (e) => {
a(e);
}), c.addFile(r);
}, ee = () => e.disabled ? null : h.value ? m.value ? null : [O(Xt, null, null), O("div", { class: "newbie-upload-text" }, [_("form.upload")])] : !h.value && !m.value ? [O(zn, {
label: e.uploadText || _("form.upload"),
type: "primary",
icon: O(Xt, null, null)
}, null)] : null;
return () => {
let t, n;
return O("div", { class: "newbie-uploader" }, [O(yt, M({
fileList: f.fileList,
"onUpdate:fileList": (e) => f.fileList = e,
class: `newbie-upload ${h.value ? "is-image" : ""}`,
name: e.name,
listType: e.type,
disabled: e.disabled,
accept: e.accept,
action: e.action || o,
headers: e.headers,
data: e.extraData,
multiple: e.multiple,
progress: f.progress,
beforeUpload: C,
customRequest: e.multipart ? T : w,
onPreview: y,
onChange: S
}, e.uploadProps), kr(t = ee()) ? t : { default: () => [t] }), O(Ue, { preview: {
visible: f.previewVisible,
onVisibleChange: (e) => f.previewVisible = e,
current: f.previewCurrent
} }, kr(n = f.fileList.map((e) => O(He, {
style: { display: "none" },
src: e.url
}, null))) ? n : { default: () => [n] })]);
};
}
}), jr = (e, t) => O(Ar, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
key: e.key,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, e.defaultProps), { ...e.defaultSlots }), Mr = (e, t) => O(ir, M({
key: e.key,
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
readonly: e.readonly,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
placeholder: lr(e)
}, e.defaultProps), null), Nr = (e, t) => {
let n = t[e.key];
return n ? Dt(n) ? n.map((e) => O(dt, e.defaultProps, { default: () => e })) : O(dt, e.defaultProps, { default: () => n }) : null;
};
//#endregion
//#region node_modules/.pnpm/@vueuse+shared@14.3.0_vue@3.5.39/node_modules/@vueuse/shared/dist/index.js
function Pr(e = {}) {
function t(e) {
return typeof e == "function";
}
let n = t(e) ? {
mounted: e,
updated: e
} : e, { mounted: r, unmounted: i } = n;
if (!t(r)) return e;
let a = /* @__PURE__ */ new WeakMap();
return {
...n,
mounted(e, t, n, i) {
let o = a.get(e) ?? te();
a.set(e, o), o.run(() => {
r?.(e, t, n, i);
});
},
unmounted(e, n, r, o) {
var s;
(s = a.get(e)) == null || s.stop(), a.delete(e), t(i) && i(e, n, r, o);
}
};
}
function Fr(e, t) {
return re() ? (ue(e, t), !0) : !1;
}
var Ir = typeof window < "u" && typeof document < "u";
typeof WorkerGlobalScope < "u" && globalThis instanceof WorkerGlobalScope;
var Lr = (e) => e != null, Rr = Object.prototype.toString, zr = (e) => Rr.call(e) === "[object Object]", Br = () => {}, Vr = /* @__PURE__ */ Hr();
function Hr() {
var e, t;
return Ir && !!(!((e = window) == null || (e = e.navigator) == null) && e.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((t = window) == null || (t = t.navigator) == null ? void 0 : t.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent));
}
function Ur(...e) {
if (e.length !== 1) return ye(...e);
let t = e[0];
return typeof t == "function" ? he(k(() => ({
get: t,
set: Br
}))) : N(t);
}
function Wr(e, t) {
function n(...n) {
return new Promise((r, i) => {
Promise.resolve(e(() => t.apply(this, n), {
fn: t,
thisArg: this,
args: n
})).then(r).catch(i);
});
}
return n;
}
function Gr(e, t = {}) {
let n, r, i = Br, a = (e) => {
clearTimeout(e), i(), i = Br;
}, o;
return (s) => {
let c = F(e), l = F(t.maxWait);
return n && a(n), c <= 0 || l !== void 0 && l <= 0 ? (r &&= (a(r), void 0), Promise.resolve(s())) : new Promise((e, u) => {
i = t.rejectOnCancel ? u : e, o = s, l && !r && (r = setTimeout(() => {
n && a(n), r = void 0, e(o());
}, l)), n = setTimeout(() => {
r && a(r), r = void 0, e(s());
}, c);
});
};
}
function Kr(...e) {
let t = 0, n, r = !0, i = Br, a, o, s, c, l;
!ae(e[0]) && typeof e[0] == "object" ? {delay: o, trailing: s = !0, leading: c = !0, rejectOnCancel: l = !1} = e[0] : [o, s = !0, c = !0, l = !1] = e;
let u = () => {
n && (clearTimeout(n), n = void 0, i(), i = Br);
};
return (e) => {
let d = F(o), f = Date.now() - t, p = () => a = e();
return u(), d <= 0 ? (t = Date.now(), p()) : (f > d ? (t = Date.now(), (c || !r) && p()) : s && (a = new Promise((e, a) => {
i = l ? a : e, n = setTimeout(() => {
t = Date.now(), r = !0, e(p()), u();
}, Math.max(0, d - f));
})), !c && !n && (n = setTimeout(() => r = !0, d)), r = !1, a);
};
}
function qr(e) {
let t;
function n() {
return t ||= e(), t;
}
return n.reset = async () => {
let e = t;
t = void 0, e && await e;
}, n;
}
function Jr(e) {
return Array.isArray(e) ? e : [e];
}
function Yr(e) {
return e || ne();
}
function Xr(e) {
return ae(e) ? me(new Proxy({}, {
get(t, n, r) {
return xe(Reflect.get(e.value, n, r));
},
set(t, n, r) {
return ae(e.value[n]) && !ae(r) ? e.value[n].value = r : e.value[n] = r, !0;
},
deleteProperty(t, n) {
return Reflect.deleteProperty(e.value, n);
},
has(t, n) {
return Reflect.has(e.value, n);
},
ownKeys() {
return Object.keys(e.value);
},
getOwnPropertyDescriptor() {
return {
enumerable: !0,
configurable: !0
};
}
})) : me(e);
}
function Zr(e) {
return Xr(E(e));
}
function Qr(e, ...t) {
let n = t.flat(), r = n[0];
return Zr(() => Object.fromEntries(typeof r == "function" ? Object.entries(be(e)).filter(([e, t]) => !r(F(t), e)) : Object.entries(be(e)).filter((e) => !n.includes(e[0]))));
}
function $r(e, t = 200, n = {}) {
return Wr(Gr(t, n), e);
}
function ei(e, t = 200, n = !1, r = !0, i = !1) {
return Wr(Kr(t, n, r, i), e);
}
function ti(e, t = {}) {
if (!ae(e)) return be(e);
let n = Array.isArray(e.value) ? Array.from({ length: e.value.length }) : {};
for (let r in e.value) n[r] = k(() => ({
get() {
return e.value[r];
},
set(n) {
if (F(t.replaceRef) ?? !0) if (Array.isArray(e.value)) {
let t = [...e.value];
t[r] = n, e.value = t;
} else {
let t = {
...e.value,
[r]: n
};
Object.setPrototypeOf(t, Object.getPrototypeOf(e.value)), e.value = t;
}
else e.value[r] = n;
}
}));
return n;
}
function ni(e, t = !0, n) {
Yr(n) ? le(e, n) : t ? e() : se(e);
}
function ri(e, t) {
Yr(t) && de(e, t);
}
function ii(e, t, n = {}) {
let { immediate: r = !0, immediateCallback: i = !1 } = n, a = P(!1), o;
function s() {
o &&= (clearTimeout(o), void 0);
}
function c() {
a.value = !1, s();
}
function l(...n) {
i && e(), s(), a.value = !0, o = setTimeout(() => {
a.value = !1, o = void 0, e(...n);
}, F(t));
}
return r && (a.value = !0, Ir && l()), Fr(c), {
isPending: _e(a),
start: l,
stop: c
};
}
function ai(e, t, n) {
return I(e, t, {
...n,
immediate: !0
});
}
function oi(e, t, n) {
return I(e, t, {
...n,
once: !0
});
}
//#endregion
//#region node_modules/.pnpm/@vueuse+core@14.3.0_vue@3.5.39/node_modules/@vueuse/core/dist/index.js
var si = Ir ? window : void 0;
Ir && window.document;
var ci = Ir ? window.navigator : void 0;
Ir && window.location;
function li(e) {
let t = F(e);
return t?.$el ?? t;
}
function V(...e) {
let t = (e, t, n, r) => (e.addEventListener(t, n, r), () => e.removeEventListener(t, n, r)), n = E(() => {
let t = Jr(F(e[0])).filter((e) => e != null);
return t.every((e) => typeof e != "string") ? t : void 0;
});
return ai(() => [
n.value?.map((e) => li(e)) ?? [si].filter((e) => e != null),
Jr(F(n.value ? e[1] : e[0])),
Jr(xe(n.value ? e[2] : e[1])),
F(n.value ? e[3] : e[2])
], ([e, n, r, i], a, o) => {
if (!e?.length || !n?.length || !r?.length) return;
let s = zr(i) ? { ...i } : i, c = e.flatMap((e) => n.flatMap((n) => r.map((r) => t(e, n, r, s))));
o(() => {
c.forEach((e) => e());
});
}, { flush: "post" });
}
var ui = !1;
function di(e, t, n = {}) {
let { window: r = si, ignore: i = [], capture: a = !0, detectIframe: o = !1, controls: s = !1 } = n;
if (!r) return s ? {
stop: Br,
cancel: Br,
trigger: Br
} : Br;
if (Vr && !ui) {
ui = !0;
let e = { passive: !0 };
Array.from(r.document.body.children).forEach((t) => t.addEventListener("click", Br, e)), r.document.documentElement.addEventListener("click", Br, e);
}
let c = !0, l = (e) => F(i).some((t) => {
if (typeof t == "string") return Array.from(r.document.querySelectorAll(t)).some((t) => t === e.target || e.composedPath().includes(t));
{
let n = li(t);
return n && (e.target === n || e.composedPath().includes(n));
}
});
function u(e) {
let t = F(e);
return t && t.$.subTree.shapeFlag === 16;
}
function d(e, t) {
let n = F(e), r = n.$.subTree && n.$.subTree.children;
return r == null || !Array.isArray(r) ? !1 : r.some((e) => e.el === t.target || t.composedPath().includes(e.el));
}
let f = (n) => {
let r = li(e);
if (n.target != null && !(!(r instanceof Element) && u(e) && d(e, n)) && !(!r || r === n.target || n.composedPath().includes(r))) {
if ("detail" in n && n.detail === 0 && (c = !l(n)), !c) {
c = !0;
return;
}
t(n);
}
}, p = !1, m = [
V(r, "click", (e) => {
p || (p = !0, setTimeout(() => {
p = !1;
}, 0), f(e));
}, {
passive: !0,
capture: a
}),
V(r, "pointerdown", (t) => {
let n = li(e);
c = !l(t) && !!(n && !t.composedPath().includes(n));
}, { passive: !0 }),
o && V(r, "blur", (n) => {
setTimeout(() => {
let i = li(e), a = r.document.activeElement;
for (; a?.shadowRoot;) a = a.shadowRoot.activeElement;
a?.tagName === "IFRAME" && !i?.contains(r.document.activeElement) && t(n);
}, 0);
}, { passive: !0 })
].filter(Boolean), h = () => m.forEach((e) => e());
return s ? {
stop: h,
cancel: () => {
c = !1;
},
trigger: (e) => {
c = !0, f(e), c = !1;
}
} : h;
}
function fi() {
let e = P(!1), t = ne();
return t && le(() => {
e.value = !0;
}, t), e;
}
/* @__NO_SIDE_EFFECTS__ */
function pi(e) {
let t = fi();
return E(() => (t.value, !!e()));
}
function mi(e, t, n = {}) {
let { window: r = si, ...i } = n, a, o = /* @__PURE__ */ pi(() => r && "MutationObserver" in r), s = () => {
a &&= (a.disconnect(), void 0);
}, c = I(E(() => {
let t = Jr(F(e)).map(li).filter(Lr);
return new Set(t);
}), (e) => {
s(), o.value && e.size && (a = new MutationObserver(t), e.forEach((e) => a.observe(e, i)));
}, {
immediate: !0,
flush: "post"
}), l = () => a?.takeRecords(), u = () => {
c(), s();
};
return Fr(u), {
isSupported: o,
stop: u,
takeRecords: l
};
}
function hi(e, t, n = {}) {
let { window: r = si, document: i = r?.document, flush: a = "sync" } = n;
if (!r || !i) return Br;
let o, s = (e) => {
o?.(), o = e;
}, c = Se(() => {
let n = li(e);
if (n) {
let { stop: e } = mi(i, (e) => {
e.map((e) => [...e.removedNodes]).flat().some((e) => e === n || e.contains(n)) && t(e);
}, {
window: r,
childList: !0,
subtree: !0
});
s(e);
}
}, { flush: a }), l = () => {
c(), s();
};
return Fr(l), l;
}
function gi(e) {
return typeof e == "function" ? e : typeof e == "string" ? (t) => t.key === e : Array.isArray(e) ? (t) => e.includes(t.key) : () => !0;
}
function _i(...e) {
let t, n, r = {};
e.length === 3 ? (t = e[0], n = e[1], r = e[2]) : e.length === 2 ? typeof e[1] == "object" ? (t = !0, n = e[0], r = e[1]) : (t = e[0], n = e[1]) : (t = !0, n = e[0]);
let { target: i = si, eventName: a = "keydown", passive: o = !1, dedupe: s = !1 } = r, c = gi(t);
return V(i, a, (e) => {
e.repeat && F(s) || c(e) && n(e);
}, o);
}
var vi = 500, yi = 10;
function bi(e, t, n) {
var r, i;
let a = E(() => li(e)), o, s, c, l = !1;
function u() {
o &&= (clearTimeout(o), void 0), s = void 0, c = void 0, l = !1;
}
function d(e) {
let t = n?.delay;
return typeof t == "function" ? t(e) : t ?? vi;
}
function f(e) {
var t, r, i;
let [o, d, f] = [
c,
s,
l
];
if (u(), !n?.onMouseUp || !d || !o || !(n == null || (t = n.modifiers) == null) && t.self && e.target !== a.value) return;
!(n == null || (r = n.modifiers) == null) && r.prevent && e.preventDefault(), !(n == null || (i = n.modifiers) == null) && i.stop && e.stopPropagation();
let p = e.x - d.x, m = e.y - d.y, h = Math.sqrt(p * p + m * m);
n.onMouseUp(e.timeStamp - o, h, f, e);
}
function p(e) {
var r, i, f;
!(n == null || (r = n.modifiers) == null) && r.self && e.target !== a.value || (u(), !(n == null || (i = n.modifiers) == null) && i.prevent && e.preventDefault(), !(n == null || (f = n.modifiers) == null) && f.stop && e.stopPropagation(), s = {
x: e.x,
y: e.y
}, c = e.timeStamp, o = setTimeout(() => {
l = !0, t(e);
}, d(e)));
}
function m(e) {
var t, r, i;
if (!(n == null || (t = n.modifiers) == null) && t.self && e.target !== a.value || !s || n?.distanceThreshold === !1) return;
!(n == null || (r = n.modifiers) == null) && r.prevent && e.preventDefault(), !(n == null || (i = n.modifiers) == null) && i.stop && e.stopPropagation();
let o = e.x - s.x, c = e.y - s.y;
Math.sqrt(o * o + c * c) >= (n?.distanceThreshold ?? yi) && u();
}
let h = {
capture: n == null || (r = n.modifiers) == null ? void 0 : r.capture,
once: n == null || (i = n.modifiers) == null ? void 0 : i.once
}, g = [
V(a, "pointerdown", p, h),
V(a, "pointermove", m, h),
V(a, ["pointerup", "pointerleave"], f, h)
];
return () => g.forEach((e) => e());
}
function xi(e, t = {}) {
let { controls: n = !1, navigator: r = ci } = t, i = /* @__PURE__ */ pi(() => r && "permissions" in r), a = P(), o = typeof e == "string" ? { name: e } : e, s = P(), c = () => {
s.value = a.value?.state ?? "prompt";
};
V(a, "change", c, { passive: !0 });
let l = qr(async () => {
if (i.value) {
if (!a.value) try {
a.value = await r.permissions.query(o);
} catch {
a.value = void 0;
} finally {
c();
}
if (n) return ve(a.value);
}
});
return l(), n ? {
state: s,
isSupported: i,
query: l
} : s;
}
function Si(e = {}) {
let { navigator: t = ci, read: n = !1, source: r, copiedDuring: i = 1500, legacy: a = !1 } = e, o = /* @__PURE__ */ pi(() => t && "clipboard" in t), s = xi("clipboard-read"), c = xi("clipboard-write"), l = E(() => o.value || a), u = P(""), d = P(!1), f = P(!1), p = ii(() => d.value = !1, i, { immediate: !1 }), m = 0;
async function h() {
let e = !(o.value && b(s.value));
if (!e) try {
u.value = await t.clipboard.readText();
} catch {
e = !0;
}
e && (u.value = y());
}
l.value && n && V(["copy", "cut"], h, { passive: !0 });
async function g(e) {
let n = e ?? F(r);
if (l.value && n != null) {
f.value = !0;
let e = !(o.value && b(c.value));
if (!e) try {
let e = _(n);
await t.clipboard.write([e]);
} catch {
e = !0;
}
if (e) if (typeof n == "string") u.value = n, v(n);
else {
let e = ++m, t = await n();
t != null && e === m && (u.value = t, v(t));
}
d.value = !0, p.start(), f.value = !1;
}
}
function _(e) {
return typeof e == "string" ? (u.value = e, new ClipboardItem({ "text/plain": e })) : new ClipboardItem({ "text/plain": e().then((e = "") => (u.value = e, new Blob([e], { type: "text/plain" }))) });
}
function v(e) {
let t = document.createElement("textarea");
t.value = e, t.style.position = "absolute", t.style.opacity = "0", t.setAttribute("readonly", ""), document.body.appendChild(t), t.select(), document.execCommand("copy"), t.remove();
}
function y() {
var e, t;
return ((e = document) == null || (t = e.getSelection) == null || (t = t.call(e)) == null ? void 0 : t.toString()) ?? "";
}
function b(e) {
return e === "granted" || e === "prompt";
}
return {
copyPending: _e(f),
isSupported: l,
text: _e(u),
copied: _e(d),
copy: g
};
}
var Ci = {
speed: 2,
margin: 30,
direction: "both"
};
function wi(e) {
e.scrollLeft > e.scrollWidth - e.clientWidth && (e.scrollLeft = Math.max(0, e.scrollWidth - e.clientWidth)), e.scrollTop > e.scrollHeight - e.clientHeight && (e.scrollTop = Math.max(0, e.scrollHeight - e.clientHeight));
}
function Ti(e, t = {}) {
let { pointerTypes: n, preventDefault: r, stopPropagation: i, exact: a, onMove: o, onEnd: s, onStart: c, initialValue: l, axis: u = "both", draggingElement: d = si, containerElement: f, handle: p = e, buttons: m = [0], restrictInView: h, autoScroll: g = !1 } = t, _ = N(F(l) ?? {
x: 0,
y: 0
}), v = N(), y = (e) => n ? n.includes(e.pointerType) : !0, b = (e) => {
F(r) && e.preventDefault(), F(i) && e.stopPropagation();
}, x = F(g), S = typeof x == "object" ? {
speed: F(x.speed) ?? Ci.speed,
margin: F(x.margin) ?? Ci.margin,
direction: x.direction ?? Ci.direction
} : Ci, C = (e) => typeof e == "number" ? [e, e] : [e.x, e.y], w = (e, t, n) => {
let { clientWidth: r, clientHeight: i, scrollLeft: a, scrollTop: o, scrollWidth: s, scrollHeight: c } = e, [l, u] = C(S.margin), [d, f] = C(S.speed), p = 0, m = 0;
(S.direction === "x" || S.direction === "both") && (n.x < l && a > 0 ? p = -d : n.x + t.width > r - l && a < s - r && (p = d)), (S.direction === "y" || S.direction === "both") && (n.y < u && o > 0 ? m = -f : n.y + t.height > i - u && o < c - i && (m = f)), (p || m) && e.scrollBy({
left: p,
top: m,
behavior: "auto"
});
}, T = null, ee = () => {
let t = F(f);
t && !T && (T = setInterval(() => {
let n = F(e).getBoundingClientRect(), { x: r, y: i } = _.value, a = {
x: r - t.scrollLeft,
y: i - t.scrollTop
};
a.x >= 0 && a.y >= 0 && (w(t, n, a), a.x += t.scrollLeft, a.y += t.scrollTop, _.value = a);
}, 1e3 / 60));
}, D = () => {
T &&= (clearInterval(T), null);
}, O = (e, t, n, r) => {
let [i, a] = typeof n == "number" ? [n, n] : [n.x, n.y], { clientWidth: o, clientHeight: s } = t;
return e.x < i || e.x + r.width > o - i || e.y < a || e.y + r.height > s - a;
};
F(g) && I(_, () => {
if (F(t.disabled) || !v.value) return;
let n = F(f);
if (!n) return;
let r = F(e).getBoundingClientRect(), { x: i, y: a } = _.value;
O({
x: i - n.scrollLeft,
y: a - n.scrollTop
}, n, S.margin, r) ? ee() : D();
});
let k = (n) => {
var r;
if (!F(m).includes(n.button) || F(t.disabled) || !y(n) || F(a) && n.target !== F(e)) return;
let i = F(f), o = i == null || (r = i.getBoundingClientRect) == null ? void 0 : r.call(i), s = F(e).getBoundingClientRect(), l = {
x: n.clientX - (i ? s.left - o.left + (g ? 0 : i.scrollLeft) : s.left),
y: n.clientY - (i ? s.top - o.top + (g ? 0 : i.scrollTop) : s.top)
};
c?.(l, n) !== !1 && (v.value = l, b(n));
}, A = (n) => {
if (F(t.disabled) || !y(n) || !v.value) return;
let r = F(f);
r instanceof HTMLElement && wi(r);
let i = F(e).getBoundingClientRect(), { x: a, y: s } = _.value;
if ((u === "x" || u === "both") && (a = n.clientX - v.value.x, r && (a = Math.min(Math.max(0, a), r.scrollWidth - i.width))), (u === "y" || u === "both") && (s = n.clientY - v.value.y, r && (s = Math.min(Math.max(0, s), r.scrollHeight - i.height))), F(g) && r && (T === null && w(r, i, {
x: a,
y: s
}), a += r.scrollLeft, s += r.scrollTop), r && (h || g)) {
if (u !== "y") {
let e = a - r.scrollLeft;
e < 0 ? a = r.scrollLeft : e > r.clientWidth - i.width && (a = r.clientWidth - i.width + r.scrollLeft);
}
if (u !== "x") {
let e = s - r.scrollTop;
e < 0 ? s = r.scrollTop : e > r.clientHeight - i.height && (s = r.clientHeight - i.height + r.scrollTop);
}
}
_.value = {
x: a,
y: s
}, o?.(_.value, n), b(n);
}, te = (e) => {
F(t.disabled) || !y(e) || v.value && (v.value = void 0, g && D(), s?.(_.value, e), b(e));
};
if (Ir) {
let e = () => ({
capture: t.capture ?? !0,
passive: !F(r)
});
V(p, "pointerdown", k, e), V(d, "pointermove", A, e), V(d, "pointerup", te, e);
}
return {
...ti(_),
position: _,
isDragging: E(() => !!v.value),
style: E(() => `
left: ${_.value.x}px;
top: ${_.value.y}px;
${g ? "text-wrap: nowrap;" : ""}
`)
};
}
function Ei(e, t, n = {}) {
let { window: r = si, ...i } = n, a, o = /* @__PURE__ */ pi(() => r && "ResizeObserver" in r), s = () => {
a &&= (a.disconnect(), void 0);
}, c = I(E(() => {
let t = F(e);
return Array.isArray(t) ? t.map((e) => li(e)) : [li(t)];
}), (e) => {
if (s(), o.value && r) {
a = new ResizeObserver(t);
for (let t of e) t && a.observe(t, i);
}
}, {
immediate: !0,
flush: "post"
}), l = () => {
s(), c();
};
return Fr(l), {
isSupported: o,
stop: l
};
}
function Di(e, t = {}) {
let { reset: n = !0, windowResize: r = !0, windowScroll: i = !0, immediate: a = !0, updateTiming: o = "sync" } = t, s = P(0), c = P(0), l = P(0), u = P(0), d = P(0), f = P(0), p = P(0), m = P(0);
function h() {
let t = li(e);
if (!t) {
n && (s.value = 0, c.value = 0, l.value = 0, u.value = 0, d.value = 0, f.value = 0, p.value = 0, m.value = 0);
return;
}
let r = t.getBoundingClientRect();
s.value = r.height, c.value = r.bottom, l.value = r.left, u.value = r.right, d.value = r.top, f.value = r.width, p.value = r.x, m.value = r.y;
}
function g() {
o === "sync" ? h() : o === "next-frame" && requestAnimationFrame(() => h());
}
return Ei(e, g), I(() => li(e), (e) => !e && g()), mi(e, g, { attributeFilter: ["style", "class"] }), i && V("scroll", g, {
capture: !0,
passive: !0
}), r && V("resize", g, { passive: !0 }), ni(() => {
a && g();
}), {
height: s,
bottom: c,
left: l,
right: u,
top: d,
width: f,
x: p,
y: m,
update: g
};
}
function Oi(e, t = {}) {
let { delayEnter: n = 0, delayLeave: r = 0, triggerOnRemoval: i = !1, window: a = si } = t, o = P(!1), s, c = (e) => {
let t = e ? n : r;
s &&= (clearTimeout(s), void 0), t ? s = setTimeout(() => o.value = e, t) : o.value = e;
};
return a ? (V(e, "mouseenter", () => c(!0), { passive: !0 }), V(e, "mouseleave", () => c(!1), { passive: !0 }), i && hi(E(() => li(e)), () => c(!1)), o) : o;
}
function ki(e, t = {
width: 0,
height: 0
}, n = {}) {
let { window: r = si, box: i = "content-box" } = n, a = E(() => {
var t;
return (t = li(e)) == null || (t = t.namespaceURI) == null ? void 0 : t.includes("svg");
}), o = P(t.width), s = P(t.height), { stop: c } = Ei(e, ([t]) => {
let n = i === "border-box" ? t.borderBoxSize : i === "content-box" ? t.contentBoxSize : t.devicePixelContentBoxSize;
if (r && a.value) {
let t = li(e);
if (t) {
let e = t.getBoundingClientRect();
o.value = e.width, s.value = e.height;
}
} else if (n) {
let e = Jr(n);
o.value = e.reduce((e, { inlineSize: t }) => e + t, 0), s.value = e.reduce((e, { blockSize: t }) => e + t, 0);
} else o.value = t.contentRect.width, s.value = t.contentRect.height;
}, n);
ni(() => {
let n = li(e);
n && (o.value = "offsetWidth" in n ? n.offsetWidth : t.width, s.value = "offsetHeight" in n ? n.offsetHeight : t.height);
});
let l = I(() => li(e), (e) => {
o.value = e ? t.width : 0, s.value = e ? t.height : 0;
});
function u() {
c(), l();
}
return {
width: o,
height: s,
stop: u
};
}
function Ai(e, t, n = {}) {
let { root: r, rootMargin: i, threshold: a = 0, window: o = si, immediate: s = !0 } = n, c = /* @__PURE__ */ pi(() => o && "IntersectionObserver" in o), l = E(() => Jr(F(e)).map(li).filter(Lr)), u = Br, d = P(s), f = c.value ? I(() => [
l.value,
li(r),
F(i),
d.value
], ([e, n, r]) => {
if (u(), !d.value || !e.length) return;
let i = new IntersectionObserver(t, {
root: li(n),
rootMargin: r,
threshold: a
});
e.forEach((e) => e && i.observe(e)), u = () => {
i.disconnect(), u = Br;
};
}, {
immediate: s,
flush: "post"
}) : Br, p = () => {
u(), f(), d.value = !1;
};
return Fr(p), {
isSupported: c,
isActive: d,
pause() {
u(), d.value = !1;
},
resume() {
d.value = !0;
},
stop: p
};
}
function ji(e, t = {}) {
let { window: n = si, scrollTarget: r, threshold: i = 0, rootMargin: a, once: o = !1, initialValue: s = !1 } = t, c = P(s), l = Ai(e, (e) => {
let t = c.value, n = 0;
for (let r of e) r.time >= n && (n = r.time, t = r.isIntersecting);
c.value = t, o && oi(c, () => {
l.stop();
});
}, {
root: r,
window: n,
threshold: i,
rootMargin: a
});
return t.controls ? {
...l,
isVisible: c
} : c;
}
function Mi(e) {
return typeof Window < "u" && e instanceof Window ? e.document.documentElement : typeof Document < "u" && e instanceof Document ? e.documentElement : e;
}
var Ni = 1;
function Pi(e, t = {}) {
let { throttle: n = 0, idle: r = 200, onStop: i = Br, onScroll: a = Br, offset: o = {
left: 0,
right: 0,
top: 0,
bottom: 0
}, observe: s = { mutation: !1 }, eventListenerOptions: c = {
capture: !1,
passive: !0
}, behavior: l = "auto", window: u = si, onError: d = (e) => {
console.error(e);
} } = t, f = typeof s == "boolean" ? { mutation: s } : s, p = P(0), m = P(0), h = E({
get() {
return p.value;
},
set(e) {
_(e, void 0);
}
}), g = E({
get() {
return m.value;
},
set(e) {
_(void 0, e);
}
});
function _(t, n) {
var r, i;
if (!u) return;
let a = F(e);
if (!a) return;
(r = a instanceof Document ? u.document.body : a) == null || r.scrollTo({
top: F(n) ?? g.value,
left: F(t) ?? h.value,
behavior: F(l)
});
let o = (a == null || (i = a.document) == null ? void 0 : i.documentElement) || a?.documentElement || a;
h != null && (p.value = o.scrollLeft), g != null && (m.value = o.scrollTop);
}
let v = P(!1), y = me({
left: !0,
right: !1,
top: !0,
bottom: !1
}), b = me({
left: !1,
right: !1,
top: !1,
bottom: !1
}), x = (e) => {
v.value && (v.value = !1, b.left = !1, b.right = !1, b.top = !1, b.bottom = !1, i(e));
}, S = $r(x, n + r), C = (e) => {
var t;
if (!u) return;
let n = (e == null || (t = e.document) == null ? void 0 : t.documentElement) || e?.documentElement || li(e), { display: r, flexDirection: i, direction: a } = u.getComputedStyle(n), s = a === "rtl" ? -1 : 1, c = n.scrollLeft;
b.left = c < p.value, b.right = c > p.value;
let l = Math.abs(c * s) <= (o.left || 0), d = Math.abs(c * s) + n.clientWidth >= n.scrollWidth - (o.right || 0) - Ni;
r === "flex" && i === "row-reverse" ? (y.left = d, y.right = l) : (y.left = l, y.right = d), p.value = c;
let f = n.scrollTop;
e === u.document && !f && (f = u.document.body.scrollTop), b.top = f < m.value, b.bottom = f > m.value;
let h = Math.abs(f) <= (o.top || 0), g = Math.abs(f) + n.clientHeight >= n.scrollHeight - (o.bottom || 0) - Ni;
r === "flex" && i === "column-reverse" ? (y.top = g, y.bottom = h) : (y.top = h, y.bottom = g), m.value = f;
}, w = (e) => {
u && (C(e.target.documentElement ?? e.target), v.value = !0, S(e), a(e));
};
return V(e, "scroll", n ? ei(w, n, !0, !1) : w, c), ni(() => {
try {
let t = F(e);
if (!t) return;
C(t);
} catch (e) {
d(e);
}
}), f?.mutation && e != null && e !== u && e !== document && mi(e, () => {
let t = F(e);
t && C(t);
}, {
attributes: !0,
childList: !0,
subtree: !0
}), V(e, "scrollend", x, c), {
x: h,
y: g,
isScrolling: v,
arrivedState: y,
directions: b,
measure() {
let t = F(e);
u && t && C(t);
}
};
}
function Fi(e, t, n = {}) {
let { direction: r = "bottom", interval: i = 100, canLoadMore: a = () => !0 } = n, o = me(Pi(e, {
...n,
offset: {
[r]: n.distance ?? 0,
...n.offset
}
})), s = P(), c = E(() => !!s.value), l = E(() => Mi(F(e))), u = ji(l), d = E(() => l.value ? a(l.value) : !1);
function f() {
if (o.measure(), !l.value || !u.value || !d.value || s.value) return;
let { scrollHeight: e, clientHeight: n, scrollWidth: a, clientWidth: c } = l.value, p = r === "bottom" || r === "top" ? e <= n : a <= c;
(o.arrivedState[r] || p) && (s.value = Promise.all([t(o), new Promise((e) => setTimeout(e, i))]).finally(() => {
s.value = null, se(() => f());
}));
}
return ri(I(() => [
o.arrivedState[r],
u.value,
d.value
], f, {
immediate: !0,
flush: "post"
})), {
isLoading: c,
reset() {
se(() => f());
}
};
}
var Ii = {
page: (e) => [e.pageX, e.pageY],
client: (e) => [e.clientX, e.clientY],
screen: (e) => [e.screenX, e.screenY],
movement: (e) => e instanceof MouseEvent ? [e.movementX, e.movementY] : null
};
function Li(e = {}) {
let { type: t = "page", touch: n = !0, resetOnTouchEnds: r = !1, initialValue: i = {
x: 0,
y: 0
}, window: a = si, target: o = a, scroll: s = !0, eventFilter: c } = e, l = null, u = 0, d = 0, f = P(i.x), p = P(i.y), m = P(null), h = typeof t == "function" ? t : Ii[t], g = (e) => {
let t = h(e);
l = e, t && ([f.value, p.value] = t, m.value = "mouse"), a && (u = a.scrollX, d = a.scrollY);
}, _ = (e) => {
if (e.touches.length > 0) {
let t = h(e.touches[0]);
t && ([f.value, p.value] = t, m.value = "touch");
}
}, v = () => {
if (!l || !a) return;
let e = h(l);
l instanceof MouseEvent && e && (f.value = e[0] + a.scrollX - u, p.value = e[1] + a.scrollY - d);
}, y = () => {
f.value = i.x, p.value = i.y;
}, b = c ? (e) => c(() => g(e), {}) : (e) => g(e), x = c ? (e) => c(() => _(e), {}) : (e) => _(e), S = c ? () => c(() => v(), {}) : () => v();
if (o) {
let e = { passive: !0 };
V(o, ["mousemove", "dragover"], b, e), n && t !== "movement" && (V(o, ["touchstart", "touchmove"], x, e), r && V(o, "touchend", y, e)), s && t === "page" && V(a, "scroll", S, e);
}
return {
x: f,
y: p,
sourceType: m
};
}
function Ri(e, t = {}) {
let { windowResize: n = !0, windowScroll: r = !0, handleOutside: i = !0, window: a = si } = t, o = t.type || "page", { x: s, y: c, sourceType: l } = Li(t), u = P(e ?? a?.document.body), d = P(0), f = P(0), p = P(0), m = P(0), h = P(0), g = P(0), _ = P(!0);
function v() {
if (!a) return;
let e = li(u);
if (!(!e || !(e instanceof Element))) for (let t of e.getClientRects()) {
let { left: e, top: n, width: r, height: l } = t;
p.value = e + (o === "page" ? a.pageXOffset : 0), m.value = n + (o === "page" ? a.pageYOffset : 0), h.value = l, g.value = r;
let u = s.value - p.value, v = c.value - m.value;
if (_.value = r === 0 || l === 0 || u < 0 || v < 0 || u > r || v > l, (i || !_.value) && (d.value = u, f.value = v), !_.value) break;
}
}
let y = [];
function b() {
y.forEach((e) => e()), y.length = 0;
}
if (ni(() => {
v();
}), a) {
let { stop: e } = Ei(u, v), { stop: t } = mi(u, v, { attributeFilter: ["style", "class"] }), i = I([
u,
s,
c
], v);
y.push(e, t, i), V(document, "mouseleave", () => _.value = !0, { passive: !0 }), r && y.push(V("scroll", v, {
capture: !0,
passive: !0
})), n && y.push(V("resize", v, { passive: !0 }));
}
return {
x: s,
y: c,
sourceType: l,
elementX: d,
elementY: f,
elementPositionX: p,
elementPositionY: m,
elementHeight: h,
elementWidth: g,
isOutside: _,
stop: b
};
}
function zi(e) {
let t = window.getComputedStyle(e);
if (t.overflowX === "scroll" || t.overflowY === "scroll" || t.overflowX === "auto" && e.clientWidth < e.scrollWidth || t.overflowY === "auto" && e.clientHeight < e.scrollHeight) return !0;
{
let t = e.parentNode;
return !t || t.tagName === "BODY" ? !1 : zi(t);
}
}
function Bi(e) {
let t = e || window.event, n = t.target;
return zi(n) ? !1 : t.touches.length > 1 ? !0 : (t.preventDefault && t.preventDefault(), !1);
}
var Vi = /* @__PURE__ */ new WeakMap();
function Hi(e, t = !1) {
let n = P(t), r = null, i = "";
I(Ur(e), (e) => {
let t = Mi(F(e));
if (t) {
let e = t;
if (Vi.get(e) || Vi.set(e, e.style.overflow), e.style.overflow !== "hidden" && (i = e.style.overflow), e.style.overflow === "hidden") return n.value = !0;
if (n.value) return e.style.overflow = "hidden";
}
}, { immediate: !0 });
let a = () => {
let t = Mi(F(e));
!t || n.value || (Vr && (r = V(t, "touchmove", (e) => {
Bi(e);
}, { passive: !1 })), t.style.overflow = "hidden", n.value = !0);
}, o = () => {
let t = Mi(F(e));
!t || !n.value || (Vr && r?.(), t.style.overflow = i, Vi.delete(t), n.value = !1);
};
return Fr(o), E({
get() {
return n.value;
},
set(e) {
e ? a() : o();
}
});
}
//#endregion
//#region components/modal/NewbieModal.jsx
var Ui = /* @__PURE__ */ A({
name: "NewbieModal",
props: {
type: {
type: String,
default: "modal"
},
visible: {
type: Boolean,
default: !1
},
width: {
type: [Number, String],
default: 800
},
height: {
type: [Number, String],
default: 500
},
title: {
type: String,
default: ""
},
beforeClose: {
type: [Function, Object],
default: null
},
modalProps: {
type: Object,
default: () => ({})
}
},
emits: ["update:visible", "close"],
setup(e, { emit: t, slots: n }) {
let r = N(null), i = N(!1), a = N(!1);
I(() => e.visible, (e) => {
a.value = e;
}, { immediate: !0 });
let o = async () => {
if (!(e.beforeClose && z(e.beforeClose) && !await e.beforeClose())) {
if (e.beforeClose && Mt(e.beforeClose)) {
let { title: n, content: r, okText: a, cancelText: o, trigger: s } = e.beforeClose;
if (z(s) ? s() : s) {
Xe.confirm({
title: n || _("common.action-prompt"),
content: r || _("common.close-confirm"),
okText: a || _("common.confirm"),
cancelText: o || _("common.cancel"),
onOk: () => {
i.value = !1, t("update:visible", !1), t("close");
}
});
return;
}
}
i.value = !1, t("update:visible", !1), t("close");
}
}, { x: s, y: c, isDragging: l } = Ti(r), u = N(0), d = N(0), f = N(!1), p = N(0), m = N(0), h = N(0), g = N(0), v = N({
left: 0,
right: 0,
top: 0,
bottom: 0
});
I([s, c], () => {
if (!f.value) {
u.value = s.value, d.value = c.value;
let e = document.body.getBoundingClientRect(), t = r.value.getBoundingClientRect();
v.value.right = e.width - t.width, v.value.bottom = Math.max(e.height - t.height, 800), h.value = p.value, g.value = m.value;
}
f.value = !0;
}), I(l, () => {
l || (f.value = !1);
}), Se(() => {
f.value && (p.value = h.value + Math.min(Math.max(v.value.left, s.value), v.value.right) - u.value, m.value = g.value + Math.min(Math.max(v.value.top, c.value), v.value.bottom) - d.value);
});
let y = E(() => ({ transform: `translate(${p.value}px, ${m.value}px)` })), b = () => O("div", { class: "newbie-modal-header" }, [O("span", {
class: "newbie-modal-title",
ref: r
}, [e.title]), O("div", { class: "newbie-modal-actions" }, [i.value ? O("a", { onClick: () => i.value = !1 }, [O(Zt, { style: { fontSize: "16px" } }, null)]) : O("a", { onClick: () => i.value = !0 }, [O(on, { style: { fontSize: "16px" } }, null)]), O("a", { onClick: o }, [O(Yt, { style: {
fontSize: "20px",
marginTop: "2px"
} }, null)])])]), x = () => O(Xe, M({
footer: null,
wrapStyle: { overflow: "hidden" },
wrapClassName: `newbie-modal ${i.value ? "full-modal" : ""}`,
width: i.value ? "100%" : or(e.width),
open: a.value,
"onUpdate:open": (e) => a.value = e,
bodyStyle: {
maxHeight: e.height ? or(e.height) : "600px",
overflow: "auto"
},
closable: !1,
destroyOnClose: !0,
maskClosable: !1,
onCancel: o
}, e.modalProps), {
default: () => n.default?.(),
title: () => b(),
modalRender: ({ originVNode: e }) => O("div", { style: y.value }, [e])
}), S = () => O(Fe, M({
title: e.title,
open: a.value,
"onUpdate:open": (e) => a.value = e,
closable: !1,
destroyOnClose: !0,
width: or(e.width),
maskClosable: !1,
onClose: o
}, e.modalProps), {
default: () => n.default?.(),
extra: () => O(Yt, { onClick: o }, null)
});
return () => O("div", { class: "newbie-modal" }, [e.type === "modal" ? x() : S()]);
}
}), Wi = (e, t, n) => {
let { searchProvider: r } = n, i = [
{
label: _("search.equal"),
value: "equal"
},
{
label: _("search.not-equal"),
value: "notEqual"
},
{
label: _("search.include"),
value: "include"
},
{
label: _("search.exclude"),
value: "exclude"
},
{
label: _("search.null"),
value: "null"
},
{
label: _("search.not-null"),
value: "notNull"
}
];
e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
let a = E(() => t[e.key].value), o = N();
e.collectItem = () => {
let n = t[e.key].value || null, r = null, a = Tt(i, { value: t[e.key].condition });
return a && ["null", "notNull"].includes(a.value) ? (n = null, r = `${e.title}${a?.label}`) : n && (r = `${e.title}${a?.label}: ${n}`), {
value: n,
searchLabel: r
};
};
let s = () => {
o.value?.focus();
}, c = O(We, M({
ref: o,
value: t[e.key].value,
"onUpdate:value": (n) => t[e.key].value = n,
allowClear: !0,
disabled: t[e.key].condition === "null" || t[e.key].condition === "notNull",
class: `${r.inputClass || ""}`,
style: { width: "200px" },
placeholder: b(_("common.search"), e.title)
}, e.inputProps), null);
return {
conditions: i,
Component: c,
displayValue: a,
onComponentOpen: s
};
}, Gi = (e, t, n) => {
let { searchProvider: r } = n, i = [
{
label: _("search.equal"),
value: "equal"
},
{
label: _("search.not-equal"),
value: "notEqual"
},
{
label: _("search.less-than"),
value: "lessThan"
},
{
label: _("search.greater-than"),
value: "greaterThan"
},
{
label: _("search.between"),
value: "between"
}
];
e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
let a = () => {
if (t[e.key].condition === "between" && t[e.key].value && jt(t[e.key].value[0]) && jt(t[e.key].value[1]) && t[e.key].value[0] > t[e.key].value[1]) {
let n = t[e.key].value[0];
t[e.key].value[0] = t[e.key].value[1], t[e.key].value[1] = n;
}
}, o = N(null);
e.collectItem = () => {
let n = null, r = null, a = Tt(i, { value: t[e.key].condition })?.label;
return t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, jt) ? (n = t[e.key].value, r = `${e.title}${a}: ${n[0]} - ${n[1]} `) : t[e.key].condition !== "between" && t[e.key].value && jt(t[e.key].value[0]) && (n = t[e.key].value[0], r = `${e.title}${a}: ${n}`), {
value: n,
searchLabel: r
};
};
let s = () => {
o.value?.focus();
}, c = E(() => t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, jt) ? [
O(dt, { style: { marginRight: 0 } }, { default: () => t[e.key].value[0] }),
O("span", null, [D(" - ")]),
O(dt, null, { default: () => t[e.key].value[1] })
] : t[e.key].value[0]), l = [O(Ge, M({
ref: o,
value: t[e.key].value[0],
"onUpdate:value": (n) => t[e.key].value[0] = n,
style: { width: "200px" },
class: `${r.inputClass || ""}`,
placeholder: b(_("common.search"), e.title),
onBlur: a
}, e.inputProps), null)];
return t[e.key].condition === "between" && (l = O("div", { style: {
display: "flex",
alignItems: "center"
} }, [l.concat([O("span", { style: { margin: "0 8px" } }, [D("-")]), O(Ge, M({
value: t[e.key].value[1],
"onUpdate:value": (n) => t[e.key].value[1] = n,
style: { width: "200px" },
class: `${r.inputClass || ""}`,
placeholder: _("form.please-input"),
onBlur: a
}, e.inputProps), null)])])), {
conditions: i,
Component: l,
displayValue: c,
onComponentOpen: s
};
}, Ki = (e, t, n) => {
let { searchProvider: r } = n, i = [
{
label: _("search.equal"),
value: "equal"
},
{
label: _("search.not-equal"),
value: "notEqual"
},
{
label: _("search.include"),
value: "include"
},
{
label: _("search.exclude"),
value: "exclude"
}
];
e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
let a = z(e.options) ? e.options() : e.options;
a = a.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e);
let o = E(() => O(at, null, { default: () => t[e.key].value.map((e) => O(dt, null, { default: () => Tt(a, { value: e })?.label })) }));
I(() => t[e.key].condition, (n) => {
["equal", "notEqual"].includes(n) && (t[e.key].value = t[e.key].value?.[0] ? [t[e.key].value[0]] : []);
});
let s = N(null);
e.collectItem = () => {
let n = null, r = null, o = Tt(i, { value: t[e.key].condition })?.label;
if (["equal", "notEqual"].includes(t[e.key].condition) && !B(t[e.key].value?.[0]) && !At(t[e.key].value?.[0])) n = t[e.key].value?.[0] || null, r = `${e.title}${o}: ${Tt(a, { value: n })?.label}`;
else if (!["equal", "notEqual"].includes(t[e.key].condition) && wt(t[e.key].value, (e) => !At(e) && !B(e))) {
n = t[e.key].value;
let i = n.map((e) => Tt(a, { value: e })?.label)?.join(",");
r = `${e.title}${o}: ${i}`;
}
return {
value: n,
searchLabel: r
};
};
let c = () => {}, l = ["equal", "notEqual"].includes(t[e.key].condition) ? O(rt, M({
ref: s,
value: t[e.key].value[0],
"onUpdate:value": (n) => t[e.key].value[0] = n,
allowClear: !0,
options: a,
style: { width: "200px" },
class: `${r.inputClass || ""}`,
defaultOpen: !0,
filterOption: !0,
showSearch: !0,
optionFilterProp: "label",
placeholder: b(_("common.search"), e.title),
getPopupContainer: (e) => e.parentNode
}, e.inputProps), null) : O(rt, M({
ref: s,
value: t[e.key].value,
"onUpdate:value": (n) => t[e.key].value = n,
allowClear: !0,
options: a,
mode: "multiple",
class: `${r.inputClass || ""}`,
style: { width: "200px" },
defaultOpen: !0,
filterOption: !0,
optionFilterProp: "label",
placeholder: b(_("common.search"), e.title),
getPopupContainer: (e) => e.parentNode
}, e.inputProps), null);
return {
conditions: i,
Component: l,
displayValue: o,
onComponentOpen: c
};
}, qi = (e, t, n) => {
let { searchProvider: r } = n, i = [{
label: _("search.equal"),
value: "equal"
}, {
label: _("search.exclude"),
value: "exclude"
}];
e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
let a = E(() => t[e.key].value && Nt(t[e.key].value) ? t[e.key].value.trim().split("\n").join(",") : t[e.key].value && Dt(t[e.key].value) ? t[e.key].value.join(",") : ""), o = N(null);
e.collectItem = () => {
let n = null, r = null, a = Tt(i, { value: t[e.key].condition })?.label;
return n = null, t[e.key].value && Nt(t[e.key].value) ? n = t[e.key].value.trim().split("\n") : t[e.key].value && Dt(t[e.key].value) && (n = t[e.key].value), r = n ? `${e.title}${a}: ${n?.join(",")}` : null, {
value: n,
searchLabel: r
};
};
let s = () => {
o.value?.focus();
}, c = O(ft, M({
ref: o,
value: t[e.key].value,
"onUpdate:value": (n) => t[e.key].value = n,
allowClear: !0,
class: `${r.inputClass || ""}`,
style: { width: "200px" },
autoSize: {
minRows: 4,
maxRows: 8
},
placeholder: _("search.textarea-placeholder", { title: e.title })
}, e.inputProps), null);
return {
conditions: i,
Component: c,
displayValue: a,
onComponentOpen: s
};
}, Ji = (e, t, n) => {
let { searchProvider: r } = n, i = [
{
label: _("search.equal"),
value: "equal"
},
{
label: _("search.less-than"),
value: "lessThan"
},
{
label: _("search.greater-than"),
value: "greaterThan"
},
{
label: _("search.between"),
value: "between"
},
{
label: _("search.null"),
value: "null"
},
{
label: _("search.not-null"),
value: "notNull"
}
];
e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
let a = N(null), o = e.inputProps?.format || "YYYY-MM-DD", s = e.inputProps?.picker || "date";
e.collectItem = () => {
let n = null, r = null, a = Tt(i, { value: t[e.key].condition })?.label;
return t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, bt.isDayjs) ? (n = t[e.key].value, r = `${e.title}${a}: ${n[0].format(o)} - ${n[1].format(o)} `) : t[e.key].condition !== "between" && bt.isDayjs(t[e.key].value[0]) && (n = t[e.key].value[0], r = `${e.title}${a}: ${n.format(o)}`), {
value: n,
searchLabel: r
};
};
let c = () => {
a.value?.focus();
}, l = E(() => t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, bt.isDayjs) ? [
O(dt, { style: { marginRight: 0 } }, { default: () => t[e.key].value?.[0]?.format(o) }),
O("span", null, [D(" - ")]),
O(dt, null, { default: () => t[e.key].value?.[1]?.format(o) })
] : t[e.key].value?.[0]?.format(o)), u = N([{
label: _("search.last-week"),
value: bt().add(-7, "d")
}, {
label: _("search.last-month"),
value: bt().add(-1, "month")
}]), d = N([
{
label: _("search.past-week"),
value: [bt().add(-7, "d"), bt()]
},
{
label: _("search.past-two-weeks"),
value: [bt().add(-14, "d"), bt()]
},
{
label: _("search.past-days", { days: 30 }),
value: [bt().add(-30, "d"), bt()]
},
{
label: _("search.past-days", { days: 90 }),
value: [bt().add(-90, "d"), bt()]
}
]), f = t[e.key].condition === "between" ? O(et, M({
ref: a,
value: t[e.key].value,
"onUpdate:value": (n) => t[e.key].value = n,
allowClear: !0,
inputReadOnly: !0,
open: !0,
presets: s === "date" ? d.value : [],
style: { width: "400px" },
class: `${r.inputClass || ""}`,
placeholder: [_("search.start-time"), _("search.end-time")],
getPopupContainer: (e) => e?.parentNode
}, e.inputProps), null) : O(Ne, M({
ref: a,
value: t[e.key].value[0],
"onUpdate:value": (n) => t[e.key].value[0] = n,
allowClear: !0,
open: !0,
inputReadOnly: !0,
presets: s === "date" ? u.value : [],
style: { width: "200px" },
class: `${r.inputClass || ""}`,
placeholder: b(_("common.search"), e.title),
getPopupContainer: (e) => e?.parentNode
}, e.inputProps), null);
return {
conditions: i,
Component: f,
displayValue: l,
onComponentOpen: c
};
}, Yi = (e, t, n) => {
let { searchProvider: r } = n, i = z(e.options) ? e.options() : e.options, a = [
{
label: _("search.equal"),
value: "equal"
},
{
label: _("search.not-equal"),
value: "notEqual"
},
{
label: _("search.include-sub"),
value: "include"
}
];
e.conditions && e.conditions.length && (a = a.filter((t) => e.conditions.includes(t.value)));
let o = E(() => y(i, t[e.key].value, e.inputProps?.fieldNames).join("/")), s = N(null);
e.collectItem = () => {
let n = t[e.key].value || null, r = null, o = Tt(a, { value: t[e.key].condition })?.label;
return n && (r = `${e.title}${o}: ${y(i, n, e.inputProps?.fieldNames).join("/")}`), {
value: n,
searchLabel: r
};
};
let c = () => {
s.value?.focus();
}, l = O(Oe, M({
ref: s,
value: t[e.key].value,
"onUpdate:value": (n) => t[e.key].value = n,
allowClear: !0,
open: !0,
class: `${r.inputClass || ""}`,
style: { width: "200px" },
options: i,
changeOnSelect: Et(a, { value: "include" }) > -1,
showSearch: !0,
placeholder: b(_("common.search"), e.title),
getPopupContainer: (e) => e?.parentNode
}, e.inputProps), null);
return {
conditions: a,
Component: l,
displayValue: o,
onComponentOpen: c
};
}, Xi = (e, t, n) => {
let { searchProvider: r } = n, i = [{
label: _("search.equal"),
value: "equal"
}];
e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
let a = [{
value: "checked",
label: e.options?.[0] || _("common.yes")
}, {
value: "unchecked",
label: e.options?.[1] || _("common.no")
}], o = E(() => Tt(a, { value: t[e.key].value })?.label), s = N(null);
e.collectItem = () => {
let n = t[e.key].value === void 0 ? void 0 : t[e.key].value === "checked", r = null, o = Tt(i, { value: t[e.key].condition });
return n && (r = `${e.title}${o?.label}: ${Tt(a, { value: t[e.key].value })?.label}`), {
value: n,
searchLabel: r
};
};
let c = () => {}, l = O(rt, M({
ref: s,
value: t[e.key].value,
"onUpdate:value": (n) => t[e.key].value = n,
allowClear: !0,
options: a,
style: { width: "200px" },
class: `${r.inputClass || ""}`,
defaultOpen: !0,
getPopupContainer: (e) => e.parentNode,
placeholder: b(_("common.search"), e.title)
}, e.inputProps), null);
return {
conditions: i,
Component: l,
displayValue: o,
onComponentOpen: c
};
}, Zi = (e, t) => {
let { t: n, locale: r } = l(), i = z(e.options) ? e.options() : e.options;
i = i.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e);
let a = N(e.options.map(() => !1));
t[e.key].value?.length && t[e.key].value.forEach((e) => {
let t = i.findIndex((t) => t.value === e);
t !== -1 && (a.value[t] = !0);
}), e.expandable === "multiple" && (t[e.key].condition = "include");
let o = (n) => {
e.expandable === "multiple" ? t[e.key].value = a.value.map((e, t) => {
if (e) return i[t].value;
}) : a.value.forEach((r, o) => {
if (o === n) {
r ? t[e.key].value = [i[n].value] : t[e.key].value = [];
return;
}
a.value[o] = !1;
});
};
return e.collectItem = () => {
let a = null, o = null;
if (e.expandable === "multiple") if (a = t[e.key].value?.filter((e) => e), !a || !a.length) a = null;
else {
let t = a.map((e) => Tt(i, { value: e })?.label)?.join(",");
o = `${b(e.title, n("search.include"), { locale: r })}: ${t}`;
}
else a = t[e.key].value?.[0] || null, o = `${b(e.title, n("search.equal"), { locale: r })}: ${Tt(i, { value: a })?.label}`;
return {
value: a,
searchLabel: o
};
}, O("div", { class: "newbie-search-expand-item" }, [
O("div", { class: "newbie-search-expand-item-title" }, [e.title, D(":")]),
O("div", { class: "newbie-search-expand-item-options" }, [O(at, {
size: [8, 2],
wrap: !0
}, { default: () => i.map((e, t) => O(ke, {
checked: a.value[t],
"onUpdate:checked": (e) => a.value[t] = e,
onChange: () => o(t)
}, { default: () => e.label })) })]),
O("div", { class: "newbie-search-expand-item-extra" }, [e.expandable === "multiple" ? n("search.multiple-choice-available") : ""])
]);
};
//#endregion
//#region node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.js
function Qi(e, t) {
var n = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(e);
t && (r = r.filter(function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable;
})), n.push.apply(n, r);
}
return n;
}
function $i(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t] == null ? {} : arguments[t];
t % 2 ? Qi(Object(n), !0).forEach(function(t) {
ta(e, t, n[t]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Qi(Object(n)).forEach(function(t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
});
}
return e;
}
function ea(e) {
"@babel/helpers - typeof";
return ea = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
return typeof e;
} : function(e) {
return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
}, ea(e);
}
function ta(e, t, n) {
return t in e ? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = n, e;
}
function na() {
return na = Object.assign || function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);
}
return e;
}, na.apply(this, arguments);
}
function ra(e, t) {
if (e == null) return {};
var n = {}, r = Object.keys(e), i, a;
for (a = 0; a < r.length; a++) i = r[a], !(t.indexOf(i) >= 0) && (n[i] = e[i]);
return n;
}
function ia(e, t) {
if (e == null) return {};
var n = ra(e, t), r, i;
if (Object.getOwnPropertySymbols) {
var a = Object.getOwnPropertySymbols(e);
for (i = 0; i < a.length; i++) r = a[i], !(t.indexOf(r) >= 0) && Object.prototype.propertyIsEnumerable.call(e, r) && (n[r] = e[r]);
}
return n;
}
var aa = "1.14.0";
function oa(e) {
if (typeof window < "u" && window.navigator) return !!/*@__PURE__*/ navigator.userAgent.match(e);
}
var sa = oa(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), ca = oa(/Edge/i), la = oa(/firefox/i), ua = oa(/safari/i) && !oa(/chrome/i) && !oa(/android/i), da = oa(/iP(ad|od|hone)/i), fa = oa(/chrome/i) && oa(/android/i), pa = {
capture: !1,
passive: !1
};
function H(e, t, n) {
e.addEventListener(t, n, !sa && pa);
}
function U(e, t, n) {
e.removeEventListener(t, n, !sa && pa);
}
function ma(e, t) {
if (t) {
if (t[0] === ">" && (t = t.substring(1)), e) try {
if (e.matches) return e.matches(t);
if (e.msMatchesSelector) return e.msMatchesSelector(t);
if (e.webkitMatchesSelector) return e.webkitMatchesSelector(t);
} catch {
return !1;
}
return !1;
}
}
function ha(e) {
return e.host && e !== document && e.host.nodeType ? e.host : e.parentNode;
}
function ga(e, t, n, r) {
if (e) {
n ||= document;
do {
if (t != null && (t[0] === ">" ? e.parentNode === n && ma(e, t) : ma(e, t)) || r && e === n) return e;
if (e === n) break;
} while (e = ha(e));
}
return null;
}
var _a = /\s+/g;
function va(e, t, n) {
e && t && (e.classList ? e.classList[n ? "add" : "remove"](t) : e.className = ((" " + e.className + " ").replace(_a, " ").replace(" " + t + " ", " ") + (n ? " " + t : "")).replace(_a, " "));
}
function W(e, t, n) {
var r = e && e.style;
if (r) {
if (n === void 0) return document.defaultView && document.defaultView.getComputedStyle ? n = document.defaultView.getComputedStyle(e, "") : e.currentStyle && (n = e.currentStyle), t === void 0 ? n : n[t];
!(t in r) && t.indexOf("webkit") === -1 && (t = "-webkit-" + t), r[t] = n + (typeof n == "string" ? "" : "px");
}
}
function ya(e, t) {
var n = "";
if (typeof e == "string") n = e;
else do {
var r = W(e, "transform");
r && r !== "none" && (n = r + " " + n);
} while (!t && (e = e.parentNode));
var i = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
return i && new i(n);
}
function ba(e, t, n) {
if (e) {
var r = e.getElementsByTagName(t), i = 0, a = r.length;
if (n) for (; i < a; i++) n(r[i], i);
return r;
}
return [];
}
function xa() {
return document.scrollingElement || document.documentElement;
}
function Sa(e, t, n, r, i) {
if (!(!e.getBoundingClientRect && e !== window)) {
var a, o, s, c, l, u, d;
if (e !== window && e.parentNode && e !== xa() ? (a = e.getBoundingClientRect(), o = a.top, s = a.left, c = a.bottom, l = a.right, u = a.height, d = a.width) : (o = 0, s = 0, c = window.innerHeight, l = window.innerWidth, u = window.innerHeight, d = window.innerWidth), (t || n) && e !== window && (i ||= e.parentNode, !sa)) do
if (i && i.getBoundingClientRect && (W(i, "transform") !== "none" || n && W(i, "position") !== "static")) {
var f = i.getBoundingClientRect();
o -= f.top + parseInt(W(i, "border-top-width")), s -= f.left + parseInt(W(i, "border-left-width")), c = o + a.height, l = s + a.width;
break;
}
while (i = i.parentNode);
if (r && e !== window) {
var p = ya(i || e), m = p && p.a, h = p && p.d;
p && (o /= h, s /= m, d /= m, u /= h, c = o + u, l = s + d);
}
return {
top: o,
left: s,
bottom: c,
right: l,
width: d,
height: u
};
}
}
function Ca(e, t, n) {
for (var r = ka(e, !0), i = Sa(e)[t]; r;) {
var a = Sa(r)[n], o = void 0;
if (o = n === "top" || n === "left" ? i >= a : i <= a, !o) return r;
if (r === xa()) break;
r = ka(r, !1);
}
return !1;
}
function wa(e, t, n, r) {
for (var i = 0, a = 0, o = e.children; a < o.length;) {
if (o[a].style.display !== "none" && o[a] !== q.ghost && (r || o[a] !== q.dragged) && ga(o[a], n.draggable, e, !1)) {
if (i === t) return o[a];
i++;
}
a++;
}
return null;
}
function Ta(e, t) {
for (var n = e.lastElementChild; n && (n === q.ghost || W(n, "display") === "none" || t && !ma(n, t));) n = n.previousElementSibling;
return n || null;
}
function Ea(e, t) {
var n = 0;
if (!e || !e.parentNode) return -1;
for (; e = e.previousElementSibling;) e.nodeName.toUpperCase() !== "TEMPLATE" && e !== q.clone && (!t || ma(e, t)) && n++;
return n;
}
function Da(e) {
var t = 0, n = 0, r = xa();
if (e) do {
var i = ya(e), a = i.a, o = i.d;
t += e.scrollLeft * a, n += e.scrollTop * o;
} while (e !== r && (e = e.parentNode));
return [t, n];
}
function Oa(e, t) {
for (var n in e) if (e.hasOwnProperty(n)) {
for (var r in t) if (t.hasOwnProperty(r) && t[r] === e[n][r]) return Number(n);
}
return -1;
}
function ka(e, t) {
if (!e || !e.getBoundingClientRect) return xa();
var n = e, r = !1;
do
if (n.clientWidth < n.scrollWidth || n.clientHeight < n.scrollHeight) {
var i = W(n);
if (n.clientWidth < n.scrollWidth && (i.overflowX == "auto" || i.overflowX == "scroll") || n.clientHeight < n.scrollHeight && (i.overflowY == "auto" || i.overflowY == "scroll")) {
if (!n.getBoundingClientRect || n === document.body) return xa();
if (r || t) return n;
r = !0;
}
}
while (n = n.parentNode);
return xa();
}
function Aa(e, t) {
if (e && t) for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
return e;
}
function ja(e, t) {
return Math.round(e.top) === Math.round(t.top) && Math.round(e.left) === Math.round(t.left) && Math.round(e.height) === Math.round(t.height) && Math.round(e.width) === Math.round(t.width);
}
var Ma;
function Na(e, t) {
return function() {
if (!Ma) {
var n = arguments, r = this;
n.length === 1 ? e.call(r, n[0]) : e.apply(r, n), Ma = setTimeout(function() {
Ma = void 0;
}, t);
}
};
}
function Pa() {
clearTimeout(Ma), Ma = void 0;
}
function Fa(e, t, n) {
e.scrollLeft += t, e.scrollTop += n;
}
function Ia(e) {
var t = window.Polymer, n = window.jQuery || window.Zepto;
return t && t.dom ? t.dom(e).cloneNode(!0) : n ? n(e).clone(!0)[0] : e.cloneNode(!0);
}
var La = "Sortable" + (/* @__PURE__ */ new Date()).getTime();
function Ra() {
var e = [], t;
return {
captureAnimationState: function() {
e = [], this.options.animation && [].slice.call(this.el.children).forEach(function(t) {
if (!(W(t, "display") === "none" || t === q.ghost)) {
e.push({
target: t,
rect: Sa(t)
});
var n = $i({}, e[e.length - 1].rect);
if (t.thisAnimationDuration) {
var r = ya(t, !0);
r && (n.top -= r.f, n.left -= r.e);
}
t.fromRect = n;
}
});
},
addAnimationState: function(t) {
e.push(t);
},
removeAnimationState: function(t) {
e.splice(Oa(e, { target: t }), 1);
},
animateAll: function(n) {
var r = this;
if (!this.options.animation) {
clearTimeout(t), typeof n == "function" && n();
return;
}
var i = !1, a = 0;
e.forEach(function(e) {
var t = 0, n = e.target, o = n.fromRect, s = Sa(n), c = n.prevFromRect, l = n.prevToRect, u = e.rect, d = ya(n, !0);
d && (s.top -= d.f, s.left -= d.e), n.toRect = s, n.thisAnimationDuration && ja(c, s) && !ja(o, s) && (u.top - s.top) / (u.left - s.left) === (o.top - s.top) / (o.left - s.left) && (t = Ba(u, c, l, r.options)), ja(s, o) || (n.prevFromRect = o, n.prevToRect = s, t ||= r.options.animation, r.animate(n, u, s, t)), t && (i = !0, a = Math.max(a, t), clearTimeout(n.animationResetTimer), n.animationResetTimer = setTimeout(function() {
n.animationTime = 0, n.prevFromRect = null, n.fromRect = null, n.prevToRect = null, n.thisAnimationDuration = null;
}, t), n.thisAnimationDuration = t);
}), clearTimeout(t), i ? t = setTimeout(function() {
typeof n == "function" && n();
}, a) : typeof n == "function" && n(), e = [];
},
animate: function(e, t, n, r) {
if (r) {
W(e, "transition", ""), W(e, "transform", "");
var i = ya(this.el), a = i && i.a, o = i && i.d, s = (t.left - n.left) / (a || 1), c = (t.top - n.top) / (o || 1);
e.animatingX = !!s, e.animatingY = !!c, W(e, "transform", "translate3d(" + s + "px," + c + "px,0)"), this.forRepaintDummy = za(e), W(e, "transition", "transform " + r + "ms" + (this.options.easing ? " " + this.options.easing : "")), W(e, "transform", "translate3d(0,0,0)"), typeof e.animated == "number" && clearTimeout(e.animated), e.animated = setTimeout(function() {
W(e, "transition", ""), W(e, "transform", ""), e.animated = !1, e.animatingX = !1, e.animatingY = !1;
}, r);
}
}
};
}
function za(e) {
return e.offsetWidth;
}
function Ba(e, t, n, r) {
return Math.sqrt((t.top - e.top) ** 2 + (t.left - e.left) ** 2) / Math.sqrt((t.top - n.top) ** 2 + (t.left - n.left) ** 2) * r.animation;
}
var Va = [], Ha = { initializeByDefault: !0 }, Ua = {
mount: function(e) {
for (var t in Ha) Ha.hasOwnProperty(t) && !(t in e) && (e[t] = Ha[t]);
Va.forEach(function(t) {
if (t.pluginName === e.pluginName) throw `Sortable: Cannot mount plugin ${e.pluginName} more than once`;
}), Va.push(e);
},
pluginEvent: function(e, t, n) {
var r = this;
this.eventCanceled = !1, n.cancel = function() {
r.eventCanceled = !0;
};
var i = e + "Global";
Va.forEach(function(r) {
t[r.pluginName] && (t[r.pluginName][i] && t[r.pluginName][i]($i({ sortable: t }, n)), t.options[r.pluginName] && t[r.pluginName][e] && t[r.pluginName][e]($i({ sortable: t }, n)));
});
},
initializePlugins: function(e, t, n, r) {
for (var i in Va.forEach(function(r) {
var i = r.pluginName;
if (!(!e.options[i] && !r.initializeByDefault)) {
var a = new r(e, t, e.options);
a.sortable = e, a.options = e.options, e[i] = a, na(n, a.defaults);
}
}), e.options) if (e.options.hasOwnProperty(i)) {
var a = this.modifyOption(e, i, e.options[i]);
a !== void 0 && (e.options[i] = a);
}
},
getEventProperties: function(e, t) {
var n = {};
return Va.forEach(function(r) {
typeof r.eventProperties == "function" && na(n, r.eventProperties.call(t[r.pluginName], e));
}), n;
},
modifyOption: function(e, t, n) {
var r;
return Va.forEach(function(i) {
e[i.pluginName] && i.optionListeners && typeof i.optionListeners[t] == "function" && (r = i.optionListeners[t].call(e[i.pluginName], n));
}), r;
}
};
function Wa(e) {
var t = e.sortable, n = e.rootEl, r = e.name, i = e.targetEl, a = e.cloneEl, o = e.toEl, s = e.fromEl, c = e.oldIndex, l = e.newIndex, u = e.oldDraggableIndex, d = e.newDraggableIndex, f = e.originalEvent, p = e.putSortable, m = e.extraEventProperties;
if (t ||= n && n[La], t) {
var h, g = t.options, _ = "on" + r.charAt(0).toUpperCase() + r.substr(1);
window.CustomEvent && !sa && !ca ? h = new CustomEvent(r, {
bubbles: !0,
cancelable: !0
}) : (h = document.createEvent("Event"), h.initEvent(r, !0, !0)), h.to = o || n, h.from = s || n, h.item = i || n, h.clone = a, h.oldIndex = c, h.newIndex = l, h.oldDraggableIndex = u, h.newDraggableIndex = d, h.originalEvent = f, h.pullMode = p ? p.lastPutMode : void 0;
var v = $i($i({}, m), Ua.getEventProperties(r, t));
for (var y in v) h[y] = v[y];
n && n.dispatchEvent(h), g[_] && g[_].call(t, h);
}
}
var Ga = ["evt"], Ka = function(e, t) {
var n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, r = n.evt, i = ia(n, Ga);
Ua.pluginEvent.bind(q)(e, t, $i({
dragEl: G,
parentEl: Ja,
ghostEl: K,
rootEl: Ya,
nextEl: Xa,
lastDownEl: Za,
cloneEl: Qa,
cloneHidden: $a,
dragStarted: go,
putSortable: ao,
activeSortable: q.active,
originalEvent: r,
oldIndex: eo,
oldDraggableIndex: no,
newIndex: to,
newDraggableIndex: ro,
hideGhostForTarget: Fo,
unhideGhostForTarget: Io,
cloneNowHidden: function() {
$a = !0;
},
cloneNowShown: function() {
$a = !1;
},
dispatchSortableEvent: function(e) {
qa({
sortable: t,
name: e,
originalEvent: r
});
}
}, i));
};
function qa(e) {
Wa($i({
putSortable: ao,
cloneEl: Qa,
targetEl: G,
rootEl: Ya,
oldIndex: eo,
oldDraggableIndex: no,
newIndex: to,
newDraggableIndex: ro
}, e));
}
var G, Ja, K, Ya, Xa, Za, Qa, $a, eo, to, no, ro, io, ao, oo = !1, so = !1, co = [], lo, uo, fo, po, mo, ho, go, _o, vo, yo = !1, bo = !1, xo, So, Co = [], wo = !1, To = [], Eo = typeof document < "u", Do = da, Oo = ca || sa ? "cssFloat" : "float", ko = Eo && !fa && !da && "draggable" in document.createElement("div"), Ao = function() {
if (Eo) {
if (sa) return !1;
var e = document.createElement("x");
return e.style.cssText = "pointer-events:auto", e.style.pointerEvents === "auto";
}
}(), jo = function(e, t) {
var n = W(e), r = parseInt(n.width) - parseInt(n.paddingLeft) - parseInt(n.paddingRight) - parseInt(n.borderLeftWidth) - parseInt(n.borderRightWidth), i = wa(e, 0, t), a = wa(e, 1, t), o = i && W(i), s = a && W(a), c = o && parseInt(o.marginLeft) + parseInt(o.marginRight) + Sa(i).width, l = s && parseInt(s.marginLeft) + parseInt(s.marginRight) + Sa(a).width;
if (n.display === "flex") return n.flexDirection === "column" || n.flexDirection === "column-reverse" ? "vertical" : "horizontal";
if (n.display === "grid") return n.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal";
if (i && o.float && o.float !== "none") {
var u = o.float === "left" ? "left" : "right";
return a && (s.clear === "both" || s.clear === u) ? "vertical" : "horizontal";
}
return i && (o.display === "block" || o.display === "flex" || o.display === "table" || o.display === "grid" || c >= r && n[Oo] === "none" || a && n[Oo] === "none" && c + l > r) ? "vertical" : "horizontal";
}, Mo = function(e, t, n) {
var r = n ? e.left : e.top, i = n ? e.right : e.bottom, a = n ? e.width : e.height, o = n ? t.left : t.top, s = n ? t.right : t.bottom, c = n ? t.width : t.height;
return r === o || i === s || r + a / 2 === o + c / 2;
}, No = function(e, t) {
var n;
return co.some(function(r) {
var i = r[La].options.emptyInsertThreshold;
if (!(!i || Ta(r))) {
var a = Sa(r), o = e >= a.left - i && e <= a.right + i, s = t >= a.top - i && t <= a.bottom + i;
if (o && s) return n = r;
}
}), n;
}, Po = function(e) {
function t(e, n) {
return function(r, i, a, o) {
var s = r.options.group.name && i.options.group.name && r.options.group.name === i.options.group.name;
if (e == null && (n || s)) return !0;
if (e == null || e === !1) return !1;
if (n && e === "clone") return e;
if (typeof e == "function") return t(e(r, i, a, o), n)(r, i, a, o);
var c = (n ? r : i).options.group.name;
return e === !0 || typeof e == "string" && e === c || e.join && e.indexOf(c) > -1;
};
}
var n = {}, r = e.group;
(!r || ea(r) != "object") && (r = { name: r }), n.name = r.name, n.checkPull = t(r.pull, !0), n.checkPut = t(r.put), n.revertClone = r.revertClone, e.group = n;
}, Fo = function() {
!Ao && K && W(K, "display", "none");
}, Io = function() {
!Ao && K && W(K, "display", "");
};
Eo && document.addEventListener("click", function(e) {
if (so) return e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.stopImmediatePropagation && e.stopImmediatePropagation(), so = !1, !1;
}, !0);
var Lo = function(e) {
if (G) {
e = e.touches ? e.touches[0] : e;
var t = No(e.clientX, e.clientY);
if (t) {
var n = {};
for (var r in e) e.hasOwnProperty(r) && (n[r] = e[r]);
n.target = n.rootEl = t, n.preventDefault = void 0, n.stopPropagation = void 0, t[La]._onDragOver(n);
}
}
}, Ro = function(e) {
G && G.parentNode[La]._isOutsideThisEl(e.target);
};
function q(e, t) {
if (!(e && e.nodeType && e.nodeType === 1)) throw `Sortable: \`el\` must be an HTMLElement, not ${{}.toString.call(e)}`;
this.el = e, this.options = t = na({}, t), e[La] = this;
var n = {
group: null,
sort: !0,
disabled: !1,
store: null,
handle: null,
draggable: /^[uo]l$/i.test(e.nodeName) ? ">li" : ">*",
swapThreshold: 1,
invertSwap: !1,
invertedSwapThreshold: null,
removeCloneOnHide: !0,
direction: function() {
return jo(e, this.options);
},
ghostClass: "sortable-ghost",
chosenClass: "sortable-chosen",
dragClass: "sortable-drag",
ignore: "a, img",
filter: null,
preventOnFilter: !0,
animation: 0,
easing: null,
setData: function(e, t) {
e.setData("Text", t.textContent);
},
dropBubble: !1,
dragoverBubble: !1,
dataIdAttr: "data-id",
delay: 0,
delayOnTouchOnly: !1,
touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,
forceFallback: !1,
fallbackClass: "sortable-fallback",
fallbackOnBody: !1,
fallbackTolerance: 0,
fallbackOffset: {
x: 0,
y: 0
},
supportPointer: q.supportPointer !== !1 && "PointerEvent" in window && !ua,
emptyInsertThreshold: 5
};
for (var r in Ua.initializePlugins(this, e, n), n) !(r in t) && (t[r] = n[r]);
for (var i in Po(t), this) i.charAt(0) === "_" && typeof this[i] == "function" && (this[i] = this[i].bind(this));
this.nativeDraggable = t.forceFallback ? !1 : ko, this.nativeDraggable && (this.options.touchStartThreshold = 1), t.supportPointer ? H(e, "pointerdown", this._onTapStart) : (H(e, "mousedown", this._onTapStart), H(e, "touchstart", this._onTapStart)), this.nativeDraggable && (H(e, "dragover", this), H(e, "dragenter", this)), co.push(this.el), t.store && t.store.get && this.sort(t.store.get(this) || []), na(this, Ra());
}
q.prototype = {
constructor: q,
_isOutsideThisEl: function(e) {
!this.el.contains(e) && e !== this.el && (_o = null);
},
_getDirection: function(e, t) {
return typeof this.options.direction == "function" ? this.options.direction.call(this, e, t, G) : this.options.direction;
},
_onTapStart: function(e) {
if (e.cancelable) {
var t = this, n = this.el, r = this.options, i = r.preventOnFilter, a = e.type, o = e.touches && e.touches[0] || e.pointerType && e.pointerType === "touch" && e, s = (o || e).target, c = e.target.shadowRoot && (e.path && e.path[0] || e.composedPath && e.composedPath()[0]) || s, l = r.filter;
if (Jo(n), !G && !(/mousedown|pointerdown/.test(a) && e.button !== 0 || r.disabled) && !c.isContentEditable && !(!this.nativeDraggable && ua && s && s.tagName.toUpperCase() === "SELECT") && (s = ga(s, r.draggable, n, !1), !(s && s.animated) && Za !== s)) {
if (eo = Ea(s), no = Ea(s, r.draggable), typeof l == "function") {
if (l.call(this, e, s, this)) {
qa({
sortable: t,
rootEl: c,
name: "filter",
targetEl: s,
toEl: n,
fromEl: n
}), Ka("filter", t, { evt: e }), i && e.cancelable && e.preventDefault();
return;
}
} else if (l && (l = l.split(",").some(function(r) {
if (r = ga(c, r.trim(), n, !1), r) return qa({
sortable: t,
rootEl: r,
name: "filter",
targetEl: s,
fromEl: n,
toEl: n
}), Ka("filter", t, { evt: e }), !0;
}), l)) {
i && e.cancelable && e.preventDefault();
return;
}
r.handle && !ga(c, r.handle, n, !1) || this._prepareDragStart(e, o, s);
}
}
},
_prepareDragStart: function(e, t, n) {
var r = this, i = r.el, a = r.options, o = i.ownerDocument, s;
if (n && !G && n.parentNode === i) {
var c = Sa(n);
if (Ya = i, G = n, Ja = G.parentNode, Xa = G.nextSibling, Za = n, io = a.group, q.dragged = G, lo = {
target: G,
clientX: (t || e).clientX,
clientY: (t || e).clientY
}, mo = lo.clientX - c.left, ho = lo.clientY - c.top, this._lastX = (t || e).clientX, this._lastY = (t || e).clientY, G.style["will-change"] = "all", s = function() {
if (Ka("delayEnded", r, { evt: e }), q.eventCanceled) {
r._onDrop();
return;
}
r._disableDelayedDragEvents(), !la && r.nativeDraggable && (G.draggable = !0), r._triggerDragStart(e, t), qa({
sortable: r,
name: "choose",
originalEvent: e
}), va(G, a.chosenClass, !0);
}, a.ignore.split(",").forEach(function(e) {
ba(G, e.trim(), Vo);
}), H(o, "dragover", Lo), H(o, "mousemove", Lo), H(o, "touchmove", Lo), H(o, "mouseup", r._onDrop), H(o, "touchend", r._onDrop), H(o, "touchcancel", r._onDrop), la && this.nativeDraggable && (this.options.touchStartThreshold = 4, G.draggable = !0), Ka("delayStart", this, { evt: e }), a.delay && (!a.delayOnTouchOnly || t) && (!this.nativeDraggable || !(ca || sa))) {
if (q.eventCanceled) {
this._onDrop();
return;
}
H(o, "mouseup", r._disableDelayedDrag), H(o, "touchend", r._disableDelayedDrag), H(o, "touchcancel", r._disableDelayedDrag), H(o, "mousemove", r._delayedDragTouchMoveHandler), H(o, "touchmove", r._delayedDragTouchMoveHandler), a.supportPointer && H(o, "pointermove", r._delayedDragTouchMoveHandler), r._dragStartTimer = setTimeout(s, a.delay);
} else s();
}
},
_delayedDragTouchMoveHandler: function(e) {
var t = e.touches ? e.touches[0] : e;
Math.max(Math.abs(t.clientX - this._lastX), Math.abs(t.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag();
},
_disableDelayedDrag: function() {
G && Vo(G), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents();
},
_disableDelayedDragEvents: function() {
var e = this.el.ownerDocument;
U(e, "mouseup", this._disableDelayedDrag), U(e, "touchend", this._disableDelayedDrag), U(e, "touchcancel", this._disableDelayedDrag), U(e, "mousemove", this._delayedDragTouchMoveHandler), U(e, "touchmove", this._delayedDragTouchMoveHandler), U(e, "pointermove", this._delayedDragTouchMoveHandler);
},
_triggerDragStart: function(e, t) {
t ||= e.pointerType == "touch" && e, !this.nativeDraggable || t ? this.options.supportPointer ? H(document, "pointermove", this._onTouchMove) : t ? H(document, "touchmove", this._onTouchMove) : H(document, "mousemove", this._onTouchMove) : (H(G, "dragend", this), H(Ya, "dragstart", this._onDragStart));
try {
document.selection ? Yo(function() {
document.selection.empty();
}) : window.getSelection().removeAllRanges();
} catch {}
},
_dragStarted: function(e, t) {
if (oo = !1, Ya && G) {
Ka("dragStarted", this, { evt: t }), this.nativeDraggable && H(document, "dragover", Ro);
var n = this.options;
!e && va(G, n.dragClass, !1), va(G, n.ghostClass, !0), q.active = this, e && this._appendGhost(), qa({
sortable: this,
name: "start",
originalEvent: t
});
} else this._nulling();
},
_emulateDragOver: function() {
if (uo) {
this._lastX = uo.clientX, this._lastY = uo.clientY, Fo();
for (var e = document.elementFromPoint(uo.clientX, uo.clientY), t = e; e && e.shadowRoot && (e = e.shadowRoot.elementFromPoint(uo.clientX, uo.clientY), e !== t);) t = e;
if (G.parentNode[La]._isOutsideThisEl(e), t) do {
if (t[La]) {
var n = void 0;
if (n = t[La]._onDragOver({
clientX: uo.clientX,
clientY: uo.clientY,
target: e,
rootEl: t
}), n && !this.options.dragoverBubble) break;
}
e = t;
} while (t = t.parentNode);
Io();
}
},
_onTouchMove: function(e) {
if (lo) {
var t = this.options, n = t.fallbackTolerance, r = t.fallbackOffset, i = e.touches ? e.touches[0] : e, a = K && ya(K, !0), o = K && a && a.a, s = K && a && a.d, c = Do && So && Da(So), l = (i.clientX - lo.clientX + r.x) / (o || 1) + (c ? c[0] - Co[0] : 0) / (o || 1), u = (i.clientY - lo.clientY + r.y) / (s || 1) + (c ? c[1] - Co[1] : 0) / (s || 1);
if (!q.active && !oo) {
if (n && Math.max(Math.abs(i.clientX - this._lastX), Math.abs(i.clientY - this._lastY)) < n) return;
this._onDragStart(e, !0);
}
if (K) {
a ? (a.e += l - (fo || 0), a.f += u - (po || 0)) : a = {
a: 1,
b: 0,
c: 0,
d: 1,
e: l,
f: u
};
var d = `matrix(${a.a},${a.b},${a.c},${a.d},${a.e},${a.f})`;
W(K, "webkitTransform", d), W(K, "mozTransform", d), W(K, "msTransform", d), W(K, "transform", d), fo = l, po = u, uo = i;
}
e.cancelable && e.preventDefault();
}
},
_appendGhost: function() {
if (!K) {
var e = this.options.fallbackOnBody ? document.body : Ya, t = Sa(G, !0, Do, !0, e), n = this.options;
if (Do) {
for (So = e; W(So, "position") === "static" && W(So, "transform") === "none" && So !== document;) So = So.parentNode;
So !== document.body && So !== document.documentElement ? (So === document && (So = xa()), t.top += So.scrollTop, t.left += So.scrollLeft) : So = xa(), Co = Da(So);
}
K = G.cloneNode(!0), va(K, n.ghostClass, !1), va(K, n.fallbackClass, !0), va(K, n.dragClass, !0), W(K, "transition", ""), W(K, "transform", ""), W(K, "box-sizing", "border-box"), W(K, "margin", 0), W(K, "top", t.top), W(K, "left", t.left), W(K, "width", t.width), W(K, "height", t.height), W(K, "opacity", "0.8"), W(K, "position", Do ? "absolute" : "fixed"), W(K, "zIndex", "100000"), W(K, "pointerEvents", "none"), q.ghost = K, e.appendChild(K), W(K, "transform-origin", mo / parseInt(K.style.width) * 100 + "% " + ho / parseInt(K.style.height) * 100 + "%");
}
},
_onDragStart: function(e, t) {
var n = this, r = e.dataTransfer, i = n.options;
if (Ka("dragStart", this, { evt: e }), q.eventCanceled) {
this._onDrop();
return;
}
Ka("setupClone", this), q.eventCanceled || (Qa = Ia(G), Qa.draggable = !1, Qa.style["will-change"] = "", this._hideClone(), va(Qa, this.options.chosenClass, !1), q.clone = Qa), n.cloneId = Yo(function() {
Ka("clone", n), !q.eventCanceled && (n.options.removeCloneOnHide || Ya.insertBefore(Qa, G), n._hideClone(), qa({
sortable: n,
name: "clone"
}));
}), !t && va(G, i.dragClass, !0), t ? (so = !0, n._loopId = setInterval(n._emulateDragOver, 50)) : (U(document, "mouseup", n._onDrop), U(document, "touchend", n._onDrop), U(document, "touchcancel", n._onDrop), r && (r.effectAllowed = "move", i.setData && i.setData.call(n, r, G)), H(document, "drop", n), W(G, "transform", "translateZ(0)")), oo = !0, n._dragStartId = Yo(n._dragStarted.bind(n, t, e)), H(document, "selectstart", n), go = !0, ua && W(document.body, "user-select", "none");
},
_onDragOver: function(e) {
var t = this.el, n = e.target, r, i, a, o = this.options, s = o.group, c = q.active, l = io === s, u = o.sort, d = ao || c, f, p = this, m = !1;
if (wo) return;
function h(o, s) {
Ka(o, p, $i({
evt: e,
isOwner: l,
axis: f ? "vertical" : "horizontal",
revert: a,
dragRect: r,
targetRect: i,
canSort: u,
fromSortable: d,
target: n,
completed: _,
onMove: function(n, i) {
return Bo(Ya, t, G, r, n, Sa(n), e, i);
},
changed: v
}, s));
}
function g() {
h("dragOverAnimationCapture"), p.captureAnimationState(), p !== d && d.captureAnimationState();
}
function _(r) {
return h("dragOverCompleted", { insertion: r }), r && (l ? c._hideClone() : c._showClone(p), p !== d && (va(G, ao ? ao.options.ghostClass : c.options.ghostClass, !1), va(G, o.ghostClass, !0)), ao !== p && p !== q.active ? ao = p : p === q.active && ao && (ao = null), d === p && (p._ignoreWhileAnimating = n), p.animateAll(function() {
h("dragOverAnimationComplete"), p._ignoreWhileAnimating = null;
}), p !== d && (d.animateAll(), d._ignoreWhileAnimating = null)), (n === G && !G.animated || n === t && !n.animated) && (_o = null), !o.dragoverBubble && !e.rootEl && n !== document && (G.parentNode[La]._isOutsideThisEl(e.target), !r && Lo(e)), !o.dragoverBubble && e.stopPropagation && e.stopPropagation(), m = !0;
}
function v() {
to = Ea(G), ro = Ea(G, o.draggable), qa({
sortable: p,
name: "change",
toEl: t,
newIndex: to,
newDraggableIndex: ro,
originalEvent: e
});
}
if (e.preventDefault !== void 0 && e.cancelable && e.preventDefault(), n = ga(n, o.draggable, t, !0), h("dragOver"), q.eventCanceled) return m;
if (G.contains(e.target) || n.animated && n.animatingX && n.animatingY || p._ignoreWhileAnimating === n) return _(!1);
if (so = !1, c && !o.disabled && (l ? u || (a = Ja !== Ya) : ao === this || (this.lastPutMode = io.checkPull(this, c, G, e)) && s.checkPut(this, c, G, e))) {
if (f = this._getDirection(e, n) === "vertical", r = Sa(G), h("dragOverValid"), q.eventCanceled) return m;
if (a) return Ja = Ya, g(), this._hideClone(), h("revert"), q.eventCanceled || (Xa ? Ya.insertBefore(G, Xa) : Ya.appendChild(G)), _(!0);
var y = Ta(t, o.draggable);
if (!y || Wo(e, f, this) && !y.animated) {
if (y === G) return _(!1);
if (y && t === e.target && (n = y), n && (i = Sa(n)), Bo(Ya, t, G, r, n, i, e, !!n) !== !1) return g(), t.appendChild(G), Ja = t, v(), _(!0);
} else if (y && Uo(e, f, this)) {
var b = wa(t, 0, o, !0);
if (b === G) return _(!1);
if (n = b, i = Sa(n), Bo(Ya, t, G, r, n, i, e, !1) !== !1) return g(), t.insertBefore(G, b), Ja = t, v(), _(!0);
} else if (n.parentNode === t) {
i = Sa(n);
var x = 0, S, C = G.parentNode !== t, w = !Mo(G.animated && G.toRect || r, n.animated && n.toRect || i, f), T = f ? "top" : "left", E = Ca(n, "top", "top") || Ca(G, "top", "top"), ee = E ? E.scrollTop : void 0;
_o !== n && (S = i[T], yo = !1, bo = !w && o.invertSwap || C), x = Go(e, n, i, f, w ? 1 : o.swapThreshold, o.invertedSwapThreshold == null ? o.swapThreshold : o.invertedSwapThreshold, bo, _o === n);
var D;
if (x !== 0) {
var O = Ea(G);
do
O -= x, D = Ja.children[O];
while (D && (W(D, "display") === "none" || D === K));
}
if (x === 0 || D === n) return _(!1);
_o = n, vo = x;
var k = n.nextElementSibling, A = !1;
A = x === 1;
var te = Bo(Ya, t, G, r, n, i, e, A);
if (te !== !1) return (te === 1 || te === -1) && (A = te === 1), wo = !0, setTimeout(Ho, 30), g(), A && !k ? t.appendChild(G) : n.parentNode.insertBefore(G, A ? k : n), E && Fa(E, 0, ee - E.scrollTop), Ja = G.parentNode, S !== void 0 && !bo && (xo = Math.abs(S - Sa(n)[T])), v(), _(!0);
}
if (t.contains(G)) return _(!1);
}
return !1;
},
_ignoreWhileAnimating: null,
_offMoveEvents: function() {
U(document, "mousemove", this._onTouchMove), U(document, "touchmove", this._onTouchMove), U(document, "pointermove", this._onTouchMove), U(document, "dragover", Lo), U(document, "mousemove", Lo), U(document, "touchmove", Lo);
},
_offUpEvents: function() {
var e = this.el.ownerDocument;
U(e, "mouseup", this._onDrop), U(e, "touchend", this._onDrop), U(e, "pointerup", this._onDrop), U(e, "touchcancel", this._onDrop), U(document, "selectstart", this);
},
_onDrop: function(e) {
var t = this.el, n = this.options;
if (to = Ea(G), ro = Ea(G, n.draggable), Ka("drop", this, { evt: e }), Ja = G && G.parentNode, to = Ea(G), ro = Ea(G, n.draggable), q.eventCanceled) {
this._nulling();
return;
}
oo = !1, bo = !1, yo = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), Xo(this.cloneId), Xo(this._dragStartId), this.nativeDraggable && (U(document, "drop", this), U(t, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), ua && W(document.body, "user-select", ""), W(G, "transform", ""), e && (go && (e.cancelable && e.preventDefault(), !n.dropBubble && e.stopPropagation()), K && K.parentNode && K.parentNode.removeChild(K), (Ya === Ja || ao && ao.lastPutMode !== "clone") && Qa && Qa.parentNode && Qa.parentNode.removeChild(Qa), G && (this.nativeDraggable && U(G, "dragend", this), Vo(G), G.style["will-change"] = "", go && !oo && va(G, ao ? ao.options.ghostClass : this.options.ghostClass, !1), va(G, this.options.chosenClass, !1), qa({
sortable: this,
name: "unchoose",
toEl: Ja,
newIndex: null,
newDraggableIndex: null,
originalEvent: e
}), Ya === Ja ? to !== eo && to >= 0 && (qa({
sortable: this,
name: "update",
toEl: Ja,
originalEvent: e
}), qa({
sortable: this,
name: "sort",
toEl: Ja,
originalEvent: e
})) : (to >= 0 && (qa({
rootEl: Ja,
name: "add",
toEl: Ja,
fromEl: Ya,
originalEvent: e
}), qa({
sortable: this,
name: "remove",
toEl: Ja,
originalEvent: e
}), qa({
rootEl: Ja,
name: "sort",
toEl: Ja,
fromEl: Ya,
originalEvent: e
}), qa({
sortable: this,
name: "sort",
toEl: Ja,
originalEvent: e
})), ao && ao.save()), q.active && ((to == null || to === -1) && (to = eo, ro = no), qa({
sortable: this,
name: "end",
toEl: Ja,
originalEvent: e
}), this.save()))), this._nulling();
},
_nulling: function() {
Ka("nulling", this), Ya = G = Ja = K = Xa = Qa = Za = $a = lo = uo = go = to = ro = eo = no = _o = vo = ao = io = q.dragged = q.ghost = q.clone = q.active = null, To.forEach(function(e) {
e.checked = !0;
}), To.length = fo = po = 0;
},
handleEvent: function(e) {
switch (e.type) {
case "drop":
case "dragend":
this._onDrop(e);
break;
case "dragenter":
case "dragover":
G && (this._onDragOver(e), zo(e));
break;
case "selectstart":
e.preventDefault();
break;
}
},
toArray: function() {
for (var e = [], t, n = this.el.children, r = 0, i = n.length, a = this.options; r < i; r++) t = n[r], ga(t, a.draggable, this.el, !1) && e.push(t.getAttribute(a.dataIdAttr) || qo(t));
return e;
},
sort: function(e, t) {
var n = {}, r = this.el;
this.toArray().forEach(function(e, t) {
var i = r.children[t];
ga(i, this.options.draggable, r, !1) && (n[e] = i);
}, this), t && this.captureAnimationState(), e.forEach(function(e) {
n[e] && (r.removeChild(n[e]), r.appendChild(n[e]));
}), t && this.animateAll();
},
save: function() {
var e = this.options.store;
e && e.set && e.set(this);
},
closest: function(e, t) {
return ga(e, t || this.options.draggable, this.el, !1);
},
option: function(e, t) {
var n = this.options;
if (t === void 0) return n[e];
var r = Ua.modifyOption(this, e, t);
r === void 0 ? n[e] = t : n[e] = r, e === "group" && Po(n);
},
destroy: function() {
Ka("destroy", this);
var e = this.el;
e[La] = null, U(e, "mousedown", this._onTapStart), U(e, "touchstart", this._onTapStart), U(e, "pointerdown", this._onTapStart), this.nativeDraggable && (U(e, "dragover", this), U(e, "dragenter", this)), Array.prototype.forEach.call(e.querySelectorAll("[draggable]"), function(e) {
e.removeAttribute("draggable");
}), this._onDrop(), this._disableDelayedDragEvents(), co.splice(co.indexOf(this.el), 1), this.el = e = null;
},
_hideClone: function() {
if (!$a) {
if (Ka("hideClone", this), q.eventCanceled) return;
W(Qa, "display", "none"), this.options.removeCloneOnHide && Qa.parentNode && Qa.parentNode.removeChild(Qa), $a = !0;
}
},
_showClone: function(e) {
if (e.lastPutMode !== "clone") {
this._hideClone();
return;
}
if ($a) {
if (Ka("showClone", this), q.eventCanceled) return;
G.parentNode == Ya && !this.options.group.revertClone ? Ya.insertBefore(Qa, G) : Xa ? Ya.insertBefore(Qa, Xa) : Ya.appendChild(Qa), this.options.group.revertClone && this.animate(G, Qa), W(Qa, "display", ""), $a = !1;
}
}
};
function zo(e) {
e.dataTransfer && (e.dataTransfer.dropEffect = "move"), e.cancelable && e.preventDefault();
}
function Bo(e, t, n, r, i, a, o, s) {
var c, l = e[La], u = l.options.onMove, d;
return window.CustomEvent && !sa && !ca ? c = new CustomEvent("move", {
bubbles: !0,
cancelable: !0
}) : (c = document.createEvent("Event"), c.initEvent("move", !0, !0)), c.to = t, c.from = e, c.dragged = n, c.draggedRect = r, c.related = i || t, c.relatedRect = a || Sa(t), c.willInsertAfter = s, c.originalEvent = o, e.dispatchEvent(c), u && (d = u.call(l, c, o)), d;
}
function Vo(e) {
e.draggable = !1;
}
function Ho() {
wo = !1;
}
function Uo(e, t, n) {
var r = Sa(wa(n.el, 0, n.options, !0)), i = 10;
return t ? e.clientX < r.left - i || e.clientY < r.top && e.clientX < r.right : e.clientY < r.top - i || e.clientY < r.bottom && e.clientX < r.left;
}
function Wo(e, t, n) {
var r = Sa(Ta(n.el, n.options.draggable)), i = 10;
return t ? e.clientX > r.right + i || e.clientX <= r.right && e.clientY > r.bottom && e.clientX >= r.left : e.clientX > r.right && e.clientY > r.top || e.clientX <= r.right && e.clientY > r.bottom + i;
}
function Go(e, t, n, r, i, a, o, s) {
var c = r ? e.clientY : e.clientX, l = r ? n.height : n.width, u = r ? n.top : n.left, d = r ? n.bottom : n.right, f = !1;
if (!o) {
if (s && xo < l * i) {
if (!yo && (vo === 1 ? c > u + l * a / 2 : c < d - l * a / 2) && (yo = !0), yo) f = !0;
else if (vo === 1 ? c < u + xo : c > d - xo) return -vo;
} else if (c > u + l * (1 - i) / 2 && c < d - l * (1 - i) / 2) return Ko(t);
}
return f ||= o, f && (c < u + l * a / 2 || c > d - l * a / 2) ? c > u + l / 2 ? 1 : -1 : 0;
}
function Ko(e) {
return Ea(G) < Ea(e) ? 1 : -1;
}
function qo(e) {
for (var t = e.tagName + e.className + e.src + e.href + e.textContent, n = t.length, r = 0; n--;) r += t.charCodeAt(n);
return r.toString(36);
}
function Jo(e) {
To.length = 0;
for (var t = e.getElementsByTagName("input"), n = t.length; n--;) {
var r = t[n];
r.checked && To.push(r);
}
}
function Yo(e) {
return setTimeout(e, 0);
}
function Xo(e) {
return clearTimeout(e);
}
Eo && H(document, "touchmove", function(e) {
(q.active || oo) && e.cancelable && e.preventDefault();
}), q.utils = {
on: H,
off: U,
css: W,
find: ba,
is: function(e, t) {
return !!ga(e, t, e, !1);
},
extend: Aa,
throttle: Na,
closest: ga,
toggleClass: va,
clone: Ia,
index: Ea,
nextTick: Yo,
cancelNextTick: Xo,
detectDirection: jo,
getChild: wa
}, q.get = function(e) {
return e[La];
}, q.mount = function() {
var e = [...arguments];
e[0].constructor === Array && (e = e[0]), e.forEach(function(e) {
if (!e.prototype || !e.prototype.constructor) throw `Sortable: Mounted plugin must be a constructor function, not ${{}.toString.call(e)}`;
e.utils && (q.utils = $i($i({}, q.utils), e.utils)), Ua.mount(e);
});
}, q.create = function(e, t) {
return new q(e, t);
}, q.version = aa;
var Zo = [], Qo, $o, es = !1, ts, ns, rs, is;
function as() {
function e() {
for (var e in this.defaults = {
scroll: !0,
forceAutoScrollFallback: !1,
scrollSensitivity: 30,
scrollSpeed: 10,
bubbleScroll: !0
}, this) e.charAt(0) === "_" && typeof this[e] == "function" && (this[e] = this[e].bind(this));
}
return e.prototype = {
dragStarted: function(e) {
var t = e.originalEvent;
this.sortable.nativeDraggable ? H(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? H(document, "pointermove", this._handleFallbackAutoScroll) : t.touches ? H(document, "touchmove", this._handleFallbackAutoScroll) : H(document, "mousemove", this._handleFallbackAutoScroll);
},
dragOverCompleted: function(e) {
var t = e.originalEvent;
!this.options.dragOverBubble && !t.rootEl && this._handleAutoScroll(t);
},
drop: function() {
this.sortable.nativeDraggable ? U(document, "dragover", this._handleAutoScroll) : (U(document, "pointermove", this._handleFallbackAutoScroll), U(document, "touchmove", this._handleFallbackAutoScroll), U(document, "mousemove", this._handleFallbackAutoScroll)), ss(), os(), Pa();
},
nulling: function() {
rs = $o = Qo = es = is = ts = ns = null, Zo.length = 0;
},
_handleFallbackAutoScroll: function(e) {
this._handleAutoScroll(e, !0);
},
_handleAutoScroll: function(e, t) {
var n = this, r = (e.touches ? e.touches[0] : e).clientX, i = (e.touches ? e.touches[0] : e).clientY, a = document.elementFromPoint(r, i);
if (rs = e, t || this.options.forceAutoScrollFallback || ca || sa || ua) {
cs(e, this.options, a, t);
var o = ka(a, !0);
es && (!is || r !== ts || i !== ns) && (is && ss(), is = setInterval(function() {
var a = ka(document.elementFromPoint(r, i), !0);
a !== o && (o = a, os()), cs(e, n.options, a, t);
}, 10), ts = r, ns = i);
} else {
if (!this.options.bubbleScroll || ka(a, !0) === xa()) {
os();
return;
}
cs(e, this.options, ka(a, !1), !1);
}
}
}, na(e, {
pluginName: "scroll",
initializeByDefault: !0
});
}
function os() {
Zo.forEach(function(e) {
clearInterval(e.pid);
}), Zo = [];
}
function ss() {
clearInterval(is);
}
var cs = Na(function(e, t, n, r) {
if (t.scroll) {
var i = (e.touches ? e.touches[0] : e).clientX, a = (e.touches ? e.touches[0] : e).clientY, o = t.scrollSensitivity, s = t.scrollSpeed, c = xa(), l = !1, u;
$o !== n && ($o = n, os(), Qo = t.scroll, u = t.scrollFn, Qo === !0 && (Qo = ka(n, !0)));
var d = 0, f = Qo;
do {
var p = f, m = Sa(p), h = m.top, g = m.bottom, _ = m.left, v = m.right, y = m.width, b = m.height, x = void 0, S = void 0, C = p.scrollWidth, w = p.scrollHeight, T = W(p), E = p.scrollLeft, ee = p.scrollTop;
p === c ? (x = y < C && (T.overflowX === "auto" || T.overflowX === "scroll" || T.overflowX === "visible"), S = b < w && (T.overflowY === "auto" || T.overflowY === "scroll" || T.overflowY === "visible")) : (x = y < C && (T.overflowX === "auto" || T.overflowX === "scroll"), S = b < w && (T.overflowY === "auto" || T.overflowY === "scroll"));
var D = x && (Math.abs(v - i) <= o && E + y < C) - (Math.abs(_ - i) <= o && !!E), O = S && (Math.abs(g - a) <= o && ee + b < w) - (Math.abs(h - a) <= o && !!ee);
if (!Zo[d]) for (var k = 0; k <= d; k++) Zo[k] || (Zo[k] = {});
(Zo[d].vx != D || Zo[d].vy != O || Zo[d].el !== p) && (Zo[d].el = p, Zo[d].vx = D, Zo[d].vy = O, clearInterval(Zo[d].pid), (D != 0 || O != 0) && (l = !0, Zo[d].pid = setInterval(function() {
r && this.layer === 0 && q.active._onTouchMove(rs);
var t = Zo[this.layer].vy ? Zo[this.layer].vy * s : 0, n = Zo[this.layer].vx ? Zo[this.layer].vx * s : 0;
typeof u == "function" && u.call(q.dragged.parentNode[La], n, t, e, rs, Zo[this.layer].el) !== "continue" || Fa(Zo[this.layer].el, n, t);
}.bind({ layer: d }), 24))), d++;
} while (t.bubbleScroll && f !== c && (f = ka(f, !1)));
es = l;
}
}, 30), ls = function(e) {
var t = e.originalEvent, n = e.putSortable, r = e.dragEl, i = e.activeSortable, a = e.dispatchSortableEvent, o = e.hideGhostForTarget, s = e.unhideGhostForTarget;
if (t) {
var c = n || i;
o();
var l = t.changedTouches && t.changedTouches.length ? t.changedTouches[0] : t, u = document.elementFromPoint(l.clientX, l.clientY);
s(), c && !c.el.contains(u) && (a("spill"), this.onSpill({
dragEl: r,
putSortable: n
}));
}
};
function us() {}
us.prototype = {
startIndex: null,
dragStart: function(e) {
var t = e.oldDraggableIndex;
this.startIndex = t;
},
onSpill: function(e) {
var t = e.dragEl, n = e.putSortable;
this.sortable.captureAnimationState(), n && n.captureAnimationState();
var r = wa(this.sortable.el, this.startIndex, this.options);
r ? this.sortable.el.insertBefore(t, r) : this.sortable.el.appendChild(t), this.sortable.animateAll(), n && n.animateAll();
},
drop: ls
}, na(us, { pluginName: "revertOnSpill" });
function ds() {}
ds.prototype = {
onSpill: function(e) {
var t = e.dragEl, n = e.putSortable || this.sortable;
n.captureAnimationState(), t.parentNode && t.parentNode.removeChild(t), n.animateAll();
},
drop: ls
}, na(ds, { pluginName: "removeOnSpill" }), q.mount(new as()), q.mount(ds, us);
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/htmlHelper.js
function fs(e) {
e.parentElement !== null && e.parentElement.removeChild(e);
}
function ps(e, t, n) {
let r = n === 0 ? e.children[0] : e.children[n - 1].nextSibling;
e.insertBefore(t, r);
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/console.js
function ms() {
return typeof window < "u" ? window.console : global.console;
}
var hs = ms();
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/string.js
function gs(e) {
let t = Object.create(null);
return function(n) {
return t[n] || (t[n] = e(n));
};
}
var _s = /-(\w)/g, vs = gs((e) => e.replace(_s, (e, t) => t.toUpperCase())), ys = [
"Start",
"Add",
"Remove",
"Update",
"End"
], bs = [
"Choose",
"Unchoose",
"Sort",
"Filter",
"Clone"
], xs = ["Move"], Ss = [
xs,
ys,
bs
].flatMap((e) => e).map((e) => `on${e}`), Cs = {
manage: xs,
manageAndEmit: ys,
emit: bs
};
function ws(e) {
return Ss.indexOf(e) !== -1;
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/tags.js
var Ts = /* @__PURE__ */ "a.abbr.address.area.article.aside.audio.b.base.bdi.bdo.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.data.datalist.dd.del.details.dfn.dialog.div.dl.dt.em.embed.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.img.input.ins.kbd.label.legend.li.link.main.map.mark.math.menu.menuitem.meta.meter.nav.noscript.object.ol.optgroup.option.output.p.param.picture.pre.progress.q.rb.rp.rt.rtc.ruby.s.samp.script.section.select.slot.small.source.span.strong.style.sub.summary.sup.svg.table.tbody.td.template.textarea.tfoot.th.thead.time.title.tr.track.u.ul.var.video.wbr".split(".");
function Es(e) {
return Ts.includes(e);
}
function Ds(e) {
return ["transition-group", "TransitionGroup"].includes(e);
}
function Os(e) {
return [
"id",
"class",
"role",
"style"
].includes(e) || e.startsWith("data-") || e.startsWith("aria-") || e.startsWith("on");
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/core/componentBuilderHelper.js
function ks(e) {
return e.reduce((e, [t, n]) => (e[t] = n, e), {});
}
function As({ $attrs: e, componentData: t = {} }) {
return {
...ks(Object.entries(e).filter(([e, t]) => Os(e))),
...t
};
}
function js({ $attrs: e, callBackBuilder: t }) {
let n = ks(Ms(e));
Object.entries(t).forEach(([e, t]) => {
Cs[e].forEach((e) => {
n[`on${e}`] = t(e);
});
});
let r = `[data-draggable]${n.draggable || ""}`;
return {
...n,
draggable: r
};
}
function Ms(e) {
return Object.entries(e).filter(([e, t]) => !Os(e)).map(([e, t]) => [vs(e), t]).filter(([e, t]) => !ws(e));
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/core/componentStructure.js
var Ns = ({ el: e }) => e, Ps = (e, t) => e.__draggable_context = t, Fs = (e) => e.__draggable_context, Is = class {
constructor({ nodes: { header: e, default: t, footer: n }, root: r, realList: i }) {
this.defaultNodes = t, this.children = [
...e,
...t,
...n
], this.externalComponent = r.externalComponent, this.rootTransition = r.transition, this.tag = r.tag, this.realList = i;
}
get _isRootComponent() {
return this.externalComponent || this.rootTransition;
}
render(e, t) {
let { tag: n, children: r, _isRootComponent: i } = this;
return e(n, t, i ? { default: () => r } : r);
}
updated() {
let { defaultNodes: e, realList: t } = this;
e.forEach((e, n) => {
Ps(Ns(e), {
element: t[n],
index: n
});
});
}
getUnderlyingVm(e) {
return Fs(e);
}
getVmIndexFromDomIndex(e, t) {
let { defaultNodes: n } = this, { length: r } = n, i = t.children, a = i.item(e);
if (a === null) return r;
let o = Fs(a);
if (o) return o.index;
if (r === 0) return 0;
let s = Ns(n[0]);
return e < [...i].findIndex((e) => e === s) ? 0 : r;
}
};
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/core/renderHelper.js
function Ls(e, t) {
let n = e[t];
return n ? n() : [];
}
function Rs({ $slots: e, realList: t, getKey: n }) {
let r = t || [], [i, a] = ["header", "footer"].map((t) => Ls(e, t)), { item: o } = e;
if (!o) throw Error("draggable element must have an item slot");
let s = r.flatMap((e, t) => o({
element: e,
index: t
}).map((t) => (t.key = n(e), t.props = {
...t.props || {},
"data-draggable": !0
}, t)));
if (s.length !== r.length) throw Error("Item slot must have only one child");
return {
header: i,
footer: a,
default: s
};
}
function zs(e) {
let t = Ds(e), n = !Es(e) && !t;
return {
transition: t,
externalComponent: n,
tag: n ? ge(e) : t ? T : e
};
}
function Bs({ $slots: e, tag: t, realList: n, getKey: r }) {
return new Is({
nodes: Rs({
$slots: e,
realList: n,
getKey: r
}),
root: zs(t),
realList: n
});
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/vuedraggable.js
function Vs(e, t) {
se(() => this.$emit(e.toLowerCase(), t));
}
function Hs(e) {
return (t, n) => {
if (this.realList !== null) return this[`onDrag${e}`](t, n);
};
}
function Us(e) {
let t = Hs.call(this, e);
return (n, r) => {
t.call(this, n, r), Vs.call(this, e, n);
};
}
var Ws = null, Gs = A({
name: "draggable",
inheritAttrs: !1,
props: {
list: {
type: Array,
required: !1,
default: null
},
modelValue: {
type: Array,
required: !1,
default: null
},
itemKey: {
type: [String, Function],
required: !0
},
clone: {
type: Function,
default: (e) => e
},
tag: {
type: String,
default: "div"
},
move: {
type: Function,
default: null
},
componentData: {
type: Object,
required: !1,
default: null
}
},
emits: [
"update:modelValue",
"change",
...[...Cs.manageAndEmit, ...Cs.emit].map((e) => e.toLowerCase())
],
data() {
return { error: !1 };
},
render() {
try {
this.error = !1;
let { $slots: e, $attrs: t, tag: n, componentData: r, realList: i, getKey: a } = this, o = Bs({
$slots: e,
tag: n,
realList: i,
getKey: a
});
this.componentStructure = o;
let s = As({
$attrs: t,
componentData: r
});
return o.render(j, s);
} catch (e) {
return this.error = !0, j("pre", { style: { color: "red" } }, e.stack);
}
},
created() {
this.list !== null && this.modelValue !== null && hs.error("modelValue and list props are mutually exclusive! Please set one or another.");
},
mounted() {
if (this.error) return;
let { $attrs: e, $el: t, componentStructure: n } = this;
n.updated();
let r = js({
$attrs: e,
callBackBuilder: {
manageAndEmit: (e) => Us.call(this, e),
emit: (e) => Vs.bind(this, e),
manage: (e) => Hs.call(this, e)
}
}), i = t.nodeType === 1 ? t : t.parentElement;
this._sortable = new q(i, r), this.targetDomElement = i, i.__draggable_component__ = this;
},
updated() {
this.componentStructure.updated();
},
beforeUnmount() {
this._sortable !== void 0 && this._sortable.destroy();
},
computed: {
realList() {
let { list: e } = this;
return e || this.modelValue;
},
getKey() {
let { itemKey: e } = this;
return typeof e == "function" ? e : (t) => t[e];
}
},
watch: { $attrs: {
handler(e) {
let { _sortable: t } = this;
t && Ms(e).forEach(([e, n]) => {
t.option(e, n);
});
},
deep: !0
} },
methods: {
getUnderlyingVm(e) {
return this.componentStructure.getUnderlyingVm(e) || null;
},
getUnderlyingPotencialDraggableComponent(e) {
return e.__draggable_component__;
},
emitChanges(e) {
se(() => this.$emit("change", e));
},
alterList(e) {
if (this.list) {
e(this.list);
return;
}
let t = [...this.modelValue];
e(t), this.$emit("update:modelValue", t);
},
spliceList() {
this.alterList((e) => e.splice(...arguments));
},
updatePosition(e, t) {
this.alterList((n) => n.splice(t, 0, n.splice(e, 1)[0]));
},
getRelatedContextFromMoveEvent({ to: e, related: t }) {
let n = this.getUnderlyingPotencialDraggableComponent(e);
if (!n) return { component: n };
let r = n.realList, i = {
list: r,
component: n
};
return e !== t && r ? {
...n.getUnderlyingVm(t) || {},
...i
} : i;
},
getVmIndexFromDomIndex(e) {
return this.componentStructure.getVmIndexFromDomIndex(e, this.targetDomElement);
},
onDragStart(e) {
this.context = this.getUnderlyingVm(e.item), e.item._underlying_vm_ = this.clone(this.context.element), Ws = e.item;
},
onDragAdd(e) {
let t = e.item._underlying_vm_;
if (t === void 0) return;
fs(e.item);
let n = this.getVmIndexFromDomIndex(e.newIndex);
this.spliceList(n, 0, t);
let r = {
element: t,
newIndex: n
};
this.emitChanges({ added: r });
},
onDragRemove(e) {
if (ps(this.$el, e.item, e.oldIndex), e.pullMode === "clone") {
fs(e.clone);
return;
}
let { index: t, element: n } = this.context;
this.spliceList(t, 1);
let r = {
element: n,
oldIndex: t
};
this.emitChanges({ removed: r });
},
onDragUpdate(e) {
fs(e.item), ps(e.from, e.item, e.oldIndex);
let t = this.context.index, n = this.getVmIndexFromDomIndex(e.newIndex);
this.updatePosition(t, n);
let r = {
element: this.context.element,
oldIndex: t,
newIndex: n
};
this.emitChanges({ moved: r });
},
computeFutureIndex(e, t) {
if (!e.element) return 0;
let n = [...t.to.children].filter((e) => e.style.display !== "none"), r = n.indexOf(t.related), i = e.component.getVmIndexFromDomIndex(r);
return n.indexOf(Ws) !== -1 || !t.willInsertAfter ? i : i + 1;
},
onDragMove(e, t) {
let { move: n, realList: r } = this;
if (!n || !r) return !0;
let i = this.getRelatedContextFromMoveEvent(e), a = this.computeFutureIndex(i, e), o = {
...this.context,
futureIndex: a
};
return n({
...e,
relatedContext: i,
draggedContext: o
}, t);
},
onDragEnd() {
Ws = null;
}
}
}), Ks = (e, t) => {
let n = (e) => {
let n = t.targetKeys.indexOf(e.key);
t.targetKeys.splice(n, 1);
};
return O(gt, {
class: "newbie-search-sortable",
selectedKeys: t.selectedKeys,
"onUpdate:selectedKeys": (e) => t.selectedKeys = e,
targetKeys: t.targetKeys,
"onUpdate:targetKeys": (e) => t.targetKeys = e,
locale: {
itemUnit: "",
itemsUnit: "",
notFoundContent: _("common.no-data"),
searchPlaceholder: _("form.search-placeholder"),
titles: [_("search.sortable-items"), _("search.sorted-items")]
},
listStyle: { minWidth: "300px" },
dataSource: e,
titles: [_("search.sortable-items"), _("search.sorted-items")],
oneWay: !0,
render: (e) => e.title
}, { children({ direction: r, filteredItems: i }) {
if (r === "right") return i.length ? O(Gs, {
class: "list-group",
itemKey: "key",
tag: "div",
modelValue: t.targetKeys,
"onUpdate:modelValue": (e) => t.targetKeys = e,
sort: !0,
animation: 0,
group: "sortables",
ghostClass: "ghost",
handle: ".drag-handle"
}, { item: ({ element: t }) => {
let r = Tt(e, { key: t });
return r.direction ||= "asc", O("div", { class: "newbie-search-sortable__sortable-item" }, [
O("span", { class: "drag-handle" }, [O(gn, null, null)]),
O("div", { class: "newbie-search-sortable__sortable-item-content" }, [O("span", { class: "newbie-search-sortable__sortable-item-title" }, [r.title]), O("span", { class: "newbie-search-sortable__sortable-item-sorter" }, [O(ht, {
title: r.direction === "asc" ? _("search.ascending") : _("search.descending"),
placement: "left"
}, { default: () => [O(L, {
size: "small",
type: r.direction === "asc" ? "primary" : "default",
icon: r.direction === "asc" ? O(Cn, null, null) : O(sn, null, null),
onClick: () => r.direction = r.direction === "asc" ? "desc" : "asc"
}, null)] })])]),
O("span", { class: "newbie-search-sortable__sortable-item-delete" }, [O(ht, {
title: _("search.remove-item"),
placement: "right"
}, { default: () => [O(L, {
type: "danger",
icon: O($t, null, null),
onClick: () => n(r)
}, null)] })])
]);
} }) : O("div", { class: "newbie-search-sortable__sortable-empty" }, [_("search.select-sorting-item")]);
} });
}, qs = /* @__PURE__ */ A((e, { slots: t, emit: n }) => {
let r = P();
return di(r, (e) => {
n("trigger", e);
}, e.options), () => {
if (t.default) return j(e.as || "div", { ref: r }, t.default());
};
}, {
name: "OnClickOutside",
props: ["as", "options"],
emits: ["trigger"]
});
Pr({ mounted(e, t) {
let n = t.arg?.split(",") ?? !0;
if (typeof t.value == "function") _i(n, t.value, { target: e });
else {
let [r, i] = t.value;
_i(n, r, {
target: e,
...i
});
}
} }), Pr({ mounted(e, t) {
typeof t.value == "function" ? bi(e, t.value, { modifiers: t.modifiers }) : bi(e, ...t.value);
} }), Pr({ mounted(e, t) {
let [n, r] = typeof t.value == "function" ? [t.value, {}] : t.value, { height: i, bottom: a, left: o, right: s, top: c, width: l, x: u, y: d } = Di(e, r);
I([
i,
a,
o,
s,
c,
l,
u,
d
], () => n({
height: i,
bottom: a,
left: o,
right: s,
top: c,
width: l,
x: u,
y: d
}));
} }), Pr({ mounted(e, t) {
let n = t.value;
if (typeof n == "function") I(Oi(e), (e) => n(e));
else {
let [t, r] = n;
I(Oi(e, r), (e) => t(e));
}
} }), Pr({ mounted(e, t) {
let n = typeof t.value == "function" ? t.value : t.value?.[0], { width: r, height: i } = ki(e, ...typeof t.value == "function" ? [] : t.value.slice(1));
I([r, i], ([e, t]) => n({
width: e,
height: t
}));
} }), Pr({ mounted(e, t) {
if (typeof t.value == "function") {
let n = t.value;
I(ji(e), (e) => n(e), { immediate: !0 });
} else {
let [n, r] = t.value;
if (r?.controls) {
let t = ji(e, r);
I(t.isVisible, () => n(t), { immediate: !0 });
} else I(ji(e, r), (e) => n(e), { immediate: !0 });
}
} }), Pr({ mounted(e, t) {
typeof t.value == "function" ? Fi(e, t.value) : Fi(e, ...t.value);
} }), Pr({ mounted(e, t) {
typeof t.value == "function" ? Ai(e, t.value) : Ai(e, ...t.value);
} }), Pr({ mounted(e, t) {
let [n, r] = typeof t.value == "function" ? [t.value, {}] : t.value;
I(Qr(me(Ri(e, r)), "stop"), (e) => n(e));
} }), Pr({ mounted(e, t) {
typeof t.value == "function" ? Ei(e, t.value) : Ei(e, ...t.value);
} }), Pr({ mounted(e, t) {
if (typeof t.value == "function") {
let n = t.value, r = Pi(e, {
onScroll() {
n(r);
},
onStop() {
n(r);
}
});
} else {
let [n, r] = t.value, i = Pi(e, {
...r,
onScroll(e) {
var t;
(t = r.onScroll) == null || t.call(r, e), n(i);
},
onStop(e) {
var t;
(t = r.onStop) == null || t.call(r, e), n(i);
}
});
}
} });
function Js() {
let e = !1, t = P(!1);
return Pr((n, r) => {
if (t.value = r.value, e) return;
e = !0;
let i = Hi(n, r.value);
I(t, (e) => i.value = e);
});
}
Js();
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/consts.js
var Ys = typeof window < "u", Xs = Ys ? window : null, Zs = Ys ? document : null, Qs = {
OBJECT: 0,
ATTRIBUTE: 1,
CSS: 2,
TRANSFORM: 3,
CSS_VAR: 4
}, J = {
NUMBER: 0,
UNIT: 1,
COLOR: 2,
COMPLEX: 3
}, $s = {
NONE: 0,
AUTO: 1,
FORCE: 2
}, ec = {
replace: 0,
none: 1,
blend: 2
}, tc = Symbol(), nc = Symbol(), rc = Symbol(), ic = Symbol(), ac = Symbol(), oc = 1e-11, sc = 0xe8d4a51000, cc = 1e3, lc = [], uc = /*#__PURE__*/ (() => {
let e = /* @__PURE__ */ new Map();
return e.set("x", "translateX"), e.set("y", "translateY"), e.set("z", "translateZ"), e;
})(), dc = [
"perspective",
"translateX",
"translateY",
"translateZ",
"rotate",
"rotateX",
"rotateY",
"rotateZ",
"scale",
"scaleX",
"scaleY",
"scaleZ",
"skew",
"skewX",
"skewY"
], fc = /*#__PURE__*/ dc.reduce((e, t) => ({
...e,
[t]: t + "("
}), {}), pc = () => {}, mc = (e) => e, hc = /\)\s*[-.\d]/, gc = /(^#([\da-f]{3}){1,2}$)|(^#([\da-f]{4}){1,2}$)/i, _c = /rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i, vc = /rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i, yc = /hsl\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*\)/i, bc = /hsla\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i, xc = /[-+]?\d*\.?\d+(?:e[-+]?\d)?/gi, Sc = /^([-+]?\d*\.?\d+(?:e[-+]?\d+)?)([a-z]+|%)$/i, Cc = /([a-z])([A-Z])/g, wc = /var\(\s*(--[\w-]+)(?:\s*,\s*([^)]+))?\s*\)/, Tc = {
id: null,
keyframes: null,
playbackEase: null,
playbackRate: 1,
frameRate: 240,
loop: 0,
reversed: !1,
alternate: !1,
autoplay: !0,
persist: !1,
duration: cc,
delay: 0,
loopDelay: 0,
ease: "out(2)",
composition: ec.replace,
modifier: mc,
onBegin: pc,
onBeforeUpdate: pc,
onUpdate: pc,
onLoop: pc,
onPause: pc,
onComplete: pc,
onRender: pc
}, Ec = {
current: null,
root: Zs
}, Dc = {
defaults: Tc,
precision: 4,
timeScale: 1,
tickThreshold: 200,
editor: null
}, Oc = {
version: "4.5.0",
engine: null
};
Ys && (Xs.AnimeJS ||= [], Xs.AnimeJS.push(Oc));
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/helpers.js
var kc = (e) => e.replace(Cc, "$1-$2").toLowerCase(), Ac = (e, t) => e.indexOf(t) === 0, jc = Date.now, Mc = Array.isArray, Nc = (e) => e && e.constructor === Object, Pc = (e) => typeof e == "number" && !isNaN(e), Fc = (e) => typeof e == "string", Ic = (e) => typeof e == "function", Lc = (e) => e === void 0, Rc = (e) => Lc(e) || e === null, zc = (e) => Ys && e instanceof SVGElement, Bc = (e) => gc.test(e), Vc = (e) => Ac(e, "rgb"), Hc = (e) => Ac(e, "hsl"), Uc = (e) => Bc(e) || (Vc(e) || Hc(e)) && (e[e.length - 1] === ")" || !hc.test(e)), Wc = (e) => !Dc.defaults.hasOwnProperty(e), Gc = [
"opacity",
"rotate",
"overflow",
"color"
], Kc = (e, t) => {
if (Gc.includes(t)) return !1;
if (e.getAttribute(t) || t in e) {
if (t === "scale") {
let t = e.parentNode;
return t && t.tagName === "filter";
}
return !0;
}
}, qc = Math.pow, Jc = Math.sqrt, Yc = Math.sin, Xc = Math.cos, Zc = Math.floor, Qc = Math.asin, $c = Math.PI, el = Math.round, tl = (e, t, n) => e < t ? t : e > n ? n : e, Y = (e, t) => {
if (t < 0) return e;
if (!t) return el(e);
let n = 10 ** t;
return el(e * n) / n;
}, nl = (e, t, n) => n === 1 ? t : n === 0 ? e : e + (t - e) * n, rl = (e) => e === Infinity ? sc : e === -Infinity ? -sc : e, il = (e) => e <= 1e-11 ? oc : rl(Y(e, 11)), al = (e) => Mc(e) ? [...e] : e, ol = (e, t) => {
let n = { ...e };
for (let r in t) {
let i = e[r];
n[r] = Lc(i) ? t[r] : i;
}
return n;
}, sl = (e, t, n, r = "_prev", i = "_next") => {
let a = e._head, o = i;
for (n && (a = e._tail, o = r); a;) {
let e = a[o];
t(a), a = e;
}
}, cl = (e, t, n = "_prev", r = "_next") => {
let i = t[n], a = t[r];
i ? i[r] = a : e._head = a, a ? a[n] = i : e._tail = i, t[n] = null, t[r] = null;
}, ll = (e, t, n, r = "_prev", i = "_next") => {
let a = e._tail;
for (; a && n && n(a, t);) a = a[r];
let o = a ? a[i] : e._head;
a ? a[i] = t : e._head = t, o ? o[r] = t : e._tail = t, t[r] = a, t[i] = o;
}, ul = (e, t, n) => {
let r = e.style.transform;
if (r) {
let i = e[ic], a = 0, o = r.length, s;
for (; a < o;) {
for (; a < o && r.charCodeAt(a) === 32;) a++;
if (a >= o) break;
let e = a;
for (; a < o && r.charCodeAt(a) !== 40;) a++;
if (a >= o) break;
let t = r.substring(e, a), n = 1, c = a + 1, l = -1, u = -1;
for (a++; a < o && n > 0;) {
let e = r.charCodeAt(a);
e === 40 ? n++ : e === 41 ? n-- : e === 44 && n === 1 && (l === -1 ? l = a : u === -1 && (u = a)), a++;
}
let d = a - 1;
t === "translate" || t === "translate3d" ? (l === -1 ? i.translateX = r.substring(c, d).trim() : (i.translateX = r.substring(c, l).trim(), u === -1 ? i.translateY = r.substring(l + 1, d).trim() : (i.translateY = r.substring(l + 1, u).trim(), i.translateZ = r.substring(u + 1, d).trim())), s = r.substring(c, d)) : t === "scale" || t === "scale3d" ? l === -1 ? i.scale = r.substring(c, d).trim() : (i.scaleX = r.substring(c, l).trim(), u === -1 ? i.scaleY = r.substring(l + 1, d).trim() : (i.scaleY = r.substring(l + 1, u).trim(), i.scaleZ = r.substring(u + 1, d).trim())) : i[t] = r.substring(c, d);
}
if (t === "translate3d" && s) return n && (n[t] = s), s;
let c = i[t];
if (!Lc(c)) return n && (n[t] = c), c;
}
return t === "translate3d" ? "0px, 0px, 0px" : t === "rotate3d" ? "0, 0, 0, 0deg" : Ac(t, "scale") ? "1" : Ac(t, "rotate") || Ac(t, "skew") ? "0deg" : "0px";
}, dl = (e) => {
let t = "";
for (let n = 0, r = dc.length; n < r; n++) {
let r = dc[n], i = e[r];
if (i !== void 0) {
if (r === "translateX") {
let r = e.translateY;
if (r !== void 0) {
let a = e.translateZ;
a === void 0 ? (t += `translate(${i},${r}) `, n += 1) : (t += `translate3d(${i},${r},${a}) `, n += 2);
continue;
}
}
if (r === "scaleX" && e.scale === void 0) {
let r = e.scaleY;
if (r !== void 0) {
let a = e.scaleZ;
a === void 0 ? (t += `scale(${i},${r}) `, n += 1) : (t += `scale3d(${i},${r},${a}) `, n += 2);
continue;
}
}
t += `${fc[r]}${i}) `;
}
r === "rotateZ" && e.rotate3d !== void 0 && (t += `rotate3d(${e.rotate3d}) `);
}
return e.matrix !== void 0 && (t += `matrix(${e.matrix}) `), e.matrix3d !== void 0 && (t += `matrix3d(${e.matrix3d}) `), t;
}, fl = [];
function pl(e, t) {
if (!e) return null;
let n = fl.length;
outer: for (let r = 0; r < n; r++) {
let n = fl[r];
if (n.detect && !n.detect(e)) continue;
let i = n.targetAdapters;
for (let n = 0, r = i.length; n < r; n++) {
let r = i[n];
if (r.detect(e)) {
let n = r.props[t];
if (n && (!n.gate || n.gate(e))) return n;
break outer;
}
}
}
for (let r = 0; r < n; r++) {
let n = fl[r];
if (n.detect && !n.detect(e)) continue;
let i = n.propertyResolvers;
for (let n = 0, r = i.length; n < r; n++) {
let r = i[n](e, t);
if (r) return r;
}
}
return null;
}
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/colors.js
var ml = (e) => {
let t = _c.exec(e) || vc.exec(e), n = Lc(t[4]) ? 1 : +t[4];
return [
+t[1],
+t[2],
+t[3],
n
];
}, hl = (e) => {
let t = e.length, n = t === 4 || t === 5;
return [
+("0x" + e[1] + e[n ? 1 : 2]),
+("0x" + e[n ? 2 : 3] + e[n ? 2 : 4]),
+("0x" + e[n ? 3 : 5] + e[n ? 3 : 6]),
t === 5 || t === 9 ? +(("0x" + e[n ? 4 : 7] + e[n ? 4 : 8]) / 255).toFixed(3) : 1
];
}, gl = (e, t, n) => (n < 0 && (n += 1), n > 1 && --n, n < 1 / 6 ? e + (t - e) * 6 * n : n < 1 / 2 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e), _l = (e) => {
let t = yc.exec(e) || bc.exec(e), n = t[1] / 360, r = t[2] / 100, i = t[3] / 100, a = Lc(t[4]) ? 1 : +t[4], o, s, c;
if (r === 0) o = s = c = i;
else {
let e = i < .5 ? i * (1 + r) : i + r - i * r, t = 2 * i - e;
o = Y(gl(t, e, n + 1 / 3) * 255, 0), s = Y(gl(t, e, n) * 255, 0), c = Y(gl(t, e, n - 1 / 3) * 255, 0);
}
return [
o,
s,
c,
a
];
}, vl = (e) => Vc(e) ? ml(e) : Bc(e) ? hl(e) : Hc(e) ? _l(e) : [
0,
0,
0,
1
], yl = (e, t) => Lc(e) ? t : e, bl = (e, t) => {
let n = e.match(wc), r = t[nc] ? t : document.documentElement, i = getComputedStyle(r)?.getPropertyValue(n[1]);
return (!i || i.trim() === "") && n[2] && (i = n[2].trim()), i || 0;
}, xl = (e, t, n, r, i, a) => {
if (Ic(e)) {
if (!i) {
let i = e(t, n, r, a);
return isNaN(+i) ? i || 0 : +i;
}
let o = () => {
let i = e(t, n, r, a);
return isNaN(+i) ? i || 0 : +i;
};
return i.func = o, o();
}
if (Fc(e) && Ac(e, "var(")) {
if (!i) return bl(e, t);
let n = () => bl(e, t);
return i.func = n, n();
}
return e;
}, Sl = (e, t) => e[nc] ? e[rc] && Kc(e, t) ? Qs.ATTRIBUTE : dc.includes(t) || uc.get(t) ? Qs.TRANSFORM : Ac(t, "--") ? Qs.CSS_VAR : t in e.style ? Qs.CSS : t in e ? Qs.OBJECT : Qs.ATTRIBUTE : Qs.OBJECT, Cl = (e, t, n) => {
let r = e.style[t];
r && n && (n[t] = r);
let i = r || getComputedStyle(e[ac] || e).getPropertyValue(t);
return i === "auto" ? "0" : i;
}, wl = (e, t, n, r) => {
let i = Lc(n) ? Sl(e, t) : n, a = pl(e, t);
if (a) {
let n = a.get(e);
return n && r && (r[t] = n), n ?? 0;
}
if (i === Qs.OBJECT) {
let n = e[t];
return n && r && (r[t] = n), n || 0;
}
if (i === Qs.ATTRIBUTE) {
let n = e.getAttribute(t);
return n && r && (r[t] = n), n;
}
return i === Qs.TRANSFORM ? ul(e, t, r) : i === Qs.CSS_VAR ? Cl(e, t, r).trimStart() : Cl(e, t, r);
}, Tl = (e, t, n) => n === "-" ? e - t : n === "+" ? e + t : e * t, El = () => ({
t: J.NUMBER,
n: 0,
u: null,
o: null,
d: null,
s: null
}), Dl = (e, t) => {
if (t.t = J.NUMBER, t.n = 0, t.u = null, t.o = null, t.d = null, t.s = null, !e) return t;
let n = +e;
if (!isNaN(n)) return t.n = n, t;
let r = e;
r[1] === "=" && (t.o = r[0], r = r.slice(2));
let i = r.includes(" ") ? !1 : Sc.exec(r);
if (i) return t.t = J.UNIT, t.n = +i[1], t.u = i[2], t;
if (t.o) return t.n = +r, t;
if (Uc(r)) return t.t = J.COLOR, t.d = vl(r), t;
{
let e = r.match(xc);
return t.t = J.COMPLEX, t.d = e ? e.map(Number) : [], t.s = r.split(xc) || [], t;
}
}, Ol = (e, t) => (t.t = e._valueType, t.n = e._toNumber, t.u = e._unit, t.o = null, t.d = al(e._toNumbers), t.s = al(e._strings), t), kl = El(), Al = (e, t, n) => {
let r = e._modifier, i = e._fromNumbers, a = e._toNumbers, o = e._strings, s = o[0];
for (let c = 0, l = a.length; c < l; c++) {
let l = r(Y(nl(i[c], a[c], t), n)), u = o[c + 1];
s += `${u ? l + u : l}`, e._numbers[c] = l;
}
return s;
}, jl = (e, t, n, r, i) => {
let a = e.parent, o = e.duration, s = e.completed, c = e.iterationDuration, l = e.iterationCount, u = e._currentIteration, d = e._loopDelay, f = e._reversed, p = e._alternate, m = e._hasChildren, h = e._delay, g = e._currentTime, _ = h + c, v = t - h, y = tl(g, -h, o), b = tl(v, -h, o), x = v - g, S = b > 0, C = b >= o, w = o <= oc, T = i === $s.FORCE, E = 0, ee = v, D = 0;
if (l > 1) {
let t = c + (C ? 0 : d), n = ~~(b / t);
e._currentIteration = tl(n, 0, l), C && e._currentIteration--, E = e._currentIteration % 2, ee = b - n * t || 0;
}
let O = f ^ (p && E), k = e._ease, A = C ? O ? 0 : o : O ? c - ee : ee;
k && (A = c * k(A / c) || 0);
let te = (a ? a.backwards : v < g) ? !O : !!O;
if (e._currentTime = v, e._iterationTime = A, e.backwards = te, S && !e.began ? (e.began = !0, !n && !(a && (te || !a.began)) && e.onBegin(e)) : v <= 0 && (e.began = !1), !n && !m && S && e._currentIteration !== u && e.onLoop(e), T || i === $s.AUTO && (t >= (a && h > 0 ? 0 : h) && t <= _ || t <= h && y > h || t >= _ && y !== o) || A >= _ && y !== o || A <= h && y > 0 && !C || t <= y && y === o && s || C && !s && w) {
if (S && (e.computeDeltaTime(y), n || e.onBeforeUpdate(e)), !m) {
let t = T || (te ? x * -1 : x) >= Dc.tickThreshold, i = Y(e._offset + (a ? a._offset : 0) + h + A, 12), o = e._head, s, c, l, u, d = 0;
for (; o;) {
let e = o._composition, n = o._currentTime, a = o._changeDuration, f = o._absoluteStartTime + o._changeDuration, p = o._nextRep, m = o._prevRep, h = e !== ec.none, g = m ? m._absoluteStartTime + m._changeDuration : 0, _ = m && m.parent !== o.parent, v = !p || p._isOverridden ? f : p.parent === o.parent ? f + p._delay : p._absoluteStartTime < p._absoluteUpdateStartTime ? p._absoluteStartTime : p._absoluteUpdateStartTime;
if ((t || (n !== a || i <= v || m && !_ && (!p || p.parent !== o.parent)) && (n !== 0 || i >= o._absoluteStartTime || _ && !o._hasFromValue && !m._isOverridden && i >= g || p && !p._isOverridden && p.parent === o.parent && p._currentTime !== 0 && A < p._startTime)) && (!m || _ || A >= o._startTime) && (!h || !o._isOverridden && (!o._isOverlapped || i <= f) && (!p || p._isOverridden || i <= v) && (!m || m._isOverridden || (_ ? i >= o._absoluteStartTime || !o._hasFromValue && i >= g : i >= g + o._delay)))) {
let t = o._currentTime = tl(A - o._startTime, 0, a), n = o._ease(t / o._updateDuration), i = o._modifier, f = o._valueType, p = o._tweenType, m = p === Qs.OBJECT, g = f === J.NUMBER, _ = g && m || n === 0 || n === 1 ? -1 : Dc.precision, v, y;
if (g) v = y = i(Y(nl(o._fromNumber, o._toNumber, n), _));
else if (f === J.UNIT) y = i(Y(nl(o._fromNumber, o._toNumber, n), _)), v = `${y}${o._unit}`;
else if (f === J.COLOR) {
let e = o._numbers, t = o._fromNumbers, a = o._toNumbers, s = 1 - n, c = t[0], l = t[1], u = t[2], d = a[0], f = a[1], p = a[2];
e[0] = i(Math.sqrt(c * c * s + d * d * n)), e[1] = i(Math.sqrt(l * l * s + f * f * n)), e[2] = i(Math.sqrt(u * u * s + p * p * n)), e[3] = i(nl(t[3], a[3], n)), (!o._setter || r) && (v = `rgba(${Y(e[0], 0)},${Y(e[1], 0)},${Y(e[2], 0)},${e[3]})`);
} else f === J.COMPLEX && (v = Al(o, n, _));
if (h && (o._number = y), !r && e !== ec.blend) {
let e = o.property;
s = o.target, o._setter ? o._setter(s, y, o) : m ? s[e] = v : p === Qs.ATTRIBUTE ? s.setAttribute(e, v) : (c = s.style, p === Qs.TRANSFORM ? (s !== l && (l = s, u = s[ic]), u[e] = v, d = 1) : p === Qs.CSS ? c[e] = v : p === Qs.CSS_VAR && c.setProperty(e, v)), S && (D = 1);
} else o._value = v;
} else n && m && !_ && A < o._startTime && (o._currentTime = 0);
d && o._renderTransforms && (c.transform = dl(u), d = 0), o = o._next;
}
!n && D && e.onRender(e);
}
!n && S && e.onUpdate(e);
}
return a && w ? !n && (a.began && !te && v > 0 && !s || te && v <= 1e-11 && s) && (e.onComplete(e), e.completed = !te) : S && C ? l === Infinity ? e._startTime += e.duration : e._currentIteration >= l - 1 && (e.paused = !0, !s && !m && (e.completed = !0, !n && !(a && (te || !a.began)) && (e.onComplete(e), e._resolve(e)))) : e.completed = !1, D;
}, Ml = (e, t, n, r, i) => {
let a = e._currentIteration;
if (jl(e, t, n, r, i), e._hasChildren) {
let o = e, s = o.backwards, c = r ? t : o._iterationTime, l = jc(), u = 0, d = !0;
if (!r && o._currentIteration !== a) {
let e = o.iterationDuration;
sl(o, (t) => {
if (!s) !t.completed && !t.backwards && t._currentTime < t.iterationDuration && jl(t, e, n, 1, $s.FORCE), t.began = !1, t.completed = !1;
else {
let r = t.duration, i = t._offset + t._delay, a = i + r;
!n && r <= 1e-11 && (!i || a === e) && t.onComplete(t);
}
}), n || o.onLoop(o);
}
sl(o, (e) => {
let t = Y((c - e._offset) * e._speed, 12);
if (s && t > e._delay + e.duration) return;
let a = e._fps < o._fps ? e.requestTick(l) : i;
u += jl(e, t, n, r, a), !e.completed && d && (d = !1);
}, s), !n && u && o.onRender(o), (d || s) && o._currentTime >= o.duration && (o.paused = !0, o.completed || (o.completed = !0, n || (o.onComplete(o), o._resolve(o))));
}
}, Nl = {}, Pl = (e, t, n) => {
if (n === Qs.TRANSFORM) return uc.get(e) || e;
if (n === Qs.CSS || n === Qs.ATTRIBUTE && zc(t) && e in t.style) {
let t = Nl[e];
if (t) return t;
{
let t = e && kc(e);
return Nl[e] = t, t;
}
} else return e;
}, Fl = (e, t = !1) => {
if (e._hasChildren) sl(e, (e) => Fl(e, t), !0);
else {
let n = e;
n.pause(), sl(n, (e) => {
let r = e.property, i = e.target, a = e._tweenType, o = e._inlineValue, s = Rc(o) || o === "";
if (e._setter) {
if (!t && !s) {
if (Dl(o, kl), kl.d) {
let t = kl.d, n = e._numbers;
for (let e = 0, r = t.length; e < r; e++) n[e] = t[e];
} else e._number = kl.n;
e._setter(e.target, e._number, e);
}
} else if (a === Qs.OBJECT) !t && !s && (i[r] = o);
else if (i[nc]) if (a === Qs.ATTRIBUTE) t || (s ? i.removeAttribute(r) : i.setAttribute(r, o));
else {
let t = i.style;
if (a === Qs.TRANSFORM) {
let n = i[ic];
s ? delete n[r] : n[r] = o, e._renderTransforms && (Object.keys(n).length ? t.transform = dl(n) : t.removeProperty("transform"));
} else s ? t.removeProperty(kc(r)) : t[r] = o;
}
i[nc] && n._tail === e && n.targets.forEach((e) => {
e.getAttribute && e.getAttribute("style") === "" && e.removeAttribute("style");
});
});
}
return e;
}, Il = class {
constructor(e = 0) {
this.deltaTime = 0, this._currentTime = e, this._lastTickTime = e, this._startTime = e, this._lastTime = e, this._frameDuration = cc / 240, this._fps = 240, this._speed = 1, this._hasChildren = !1, this._head = null, this._tail = null;
}
get fps() {
return this._fps;
}
set fps(e) {
let t = +e, n = t < 1e-11 ? oc : t, r = cc / n;
n > Tc.frameRate && (Tc.frameRate = n), this._fps = n, this._frameDuration = r;
}
get speed() {
return this._speed;
}
set speed(e) {
let t = +e;
this._speed = t < 1e-11 ? oc : t;
}
requestTick(e) {
let t = this._frameDuration, n = e - this._lastTickTime, r = t * .25;
return n + (r < 4 ? r : 4) < t ? $s.NONE : (this._lastTickTime = n >= t ? e - n % t : e, $s.AUTO);
}
computeDeltaTime(e) {
let t = e - this._lastTime;
return this.deltaTime = t, this._lastTime = e, t;
}
}, Ll = {
animation: null,
update: pc
}, Rl = (e) => {
let t = Ll.animation;
return t || (t = {
duration: oc,
computeDeltaTime: pc,
_offset: 0,
_delay: 0,
_head: null,
_tail: null
}, Ll.animation = t, Ll.update = () => {
e.forEach((e) => {
for (let t in e) {
let n = e[t], r = n._head;
if (r) {
let e = r._valueType, t = e === J.COMPLEX || e === J.COLOR ? al(r._fromNumbers) : null, i = r._fromNumber, a = n._tail;
for (; a && a !== r;) {
if (t) for (let e = 0, n = a._numbers.length; e < n; e++) t[e] += a._numbers[e];
else i += a._number;
a = a._prevAdd;
}
r._toNumber = i, r._toNumbers = t;
}
}
}), jl(t, 1, 1, 0, $s.FORCE);
}), t;
}, zl = Ys ? requestAnimationFrame : setImmediate, Bl = Ys ? cancelAnimationFrame : clearImmediate, Vl = class extends Il {
constructor(e) {
super(e), this.useDefaultMainLoop = !0, this.pauseOnDocumentHidden = !0, this.defaults = Tc, this.paused = !0, this.reqId = 0;
}
update() {
let e = this._currentTime = jc();
if (this.requestTick(e)) {
this.computeDeltaTime(e);
let t = this._speed, n = this._fps, r = this._head;
for (; r;) {
let i = r._next;
r.paused ? (cl(this, r), this._hasChildren = !!this._tail, r._running = !1, r.completed && !r._cancelled && r.cancel()) : Ml(r, (e - r._startTime) * r._speed * t, 0, 0, r._fps < n ? r.requestTick(e) : $s.AUTO), r = i;
}
Ll.update();
}
}
wake() {
return this.useDefaultMainLoop && !this.reqId && (this.requestTick(jc()), this.reqId = zl(Ul)), this;
}
pause() {
if (this.reqId) return this.paused = !0, Wl();
}
resume() {
if (this.paused) return this.paused = !1, sl(this, (e) => e.resetTime()), this.wake();
}
get speed() {
return this._speed * (Dc.timeScale === 1 ? 1 : cc);
}
set speed(e) {
let t = e * Dc.timeScale;
this._speed !== t && (this._speed = t, sl(this, (e) => e.speed = e._speed));
}
get timeUnit() {
return Dc.timeScale === 1 ? "ms" : "s";
}
set timeUnit(e) {
let t = .001, n = e === "s", r = n ? t : 1;
if (Dc.timeScale !== r) {
Dc.timeScale = r, Dc.tickThreshold = 200 * r;
let e = n ? t : cc;
this.defaults.duration *= e, this._speed *= e;
}
}
get precision() {
return Dc.precision;
}
set precision(e) {
Dc.precision = e;
}
}, Hl = /*#__PURE__*/ (() => {
let e = new Vl(jc());
return Ys && (Oc.engine = e, Zs.addEventListener("visibilitychange", () => {
e.pauseOnDocumentHidden && (Zs.hidden ? e.pause() : e.resume());
})), e;
})(), Ul = () => {
Hl._head ? (Hl.reqId = zl(Ul), Hl.update()) : Hl.reqId = 0;
}, Wl = () => (Bl(Hl.reqId), Hl.reqId = 0, Hl), Gl = {
_rep: /* @__PURE__ */ new WeakMap(),
_add: /* @__PURE__ */ new Map()
}, Kl = (e, t, n = "_rep") => {
let r = Gl[n], i = r.get(e);
return i || (i = {}, r.set(e, i)), i[t] ? i[t] : i[t] = {
_head: null,
_tail: null
};
}, ql = (e, t) => e._isOverridden || e._absoluteStartTime > t._absoluteStartTime, Jl = (e) => {
e._isOverlapped = 1, e._isOverridden = 1, e._changeDuration = oc, e._currentTime = oc;
}, Yl = (e, t) => {
let n = e._composition;
if (n === ec.replace) {
let n = e._absoluteStartTime;
ll(t, e, ql, "_prevRep", "_nextRep");
let r = e._prevRep;
if (r) {
let t = r.parent, i = r._absoluteEndTime;
if (e.parent.id !== t.id && t.iterationCount > 1 && i + (t.duration - t.iterationDuration) > n) {
Jl(r);
let e = r._prevRep;
for (; e && e.parent.id === t.id;) Jl(e), e = e._prevRep;
}
let a = e._absoluteUpdateStartTime;
if (i > a) {
let e = r._startTime, t = Y(a - (i - (e + r._updateDuration)) - e, 12);
r._changeDuration = t, r._currentTime = t, r._isOverlapped = 1, t < 1e-11 && Jl(r);
}
let o = e.parent.parent;
if (!o || o !== t.parent) {
let e = !0;
if (sl(t, (t) => {
t._isOverlapped || (e = !1);
}), e) {
let e = t.parent;
if (e) {
let n = !0;
sl(e, (e) => {
e !== t && sl(e, (e) => {
e._isOverlapped || (n = !1);
});
}), n && e.cancel();
} else t.cancel();
}
}
}
} else if (n === ec.blend) {
let t = Kl(e.target, e.property, "_add"), n = Rl(Gl._add), r = t._head;
r || (r = { ...e }, r._composition = ec.replace, r._updateDuration = oc, r._startTime = 0, r._numbers = al(e._fromNumbers), r._number = 0, r._next = null, r._prev = null, ll(t, r), ll(n, r));
let i = e._toNumber;
if (e._fromNumber = r._fromNumber - i, e._toNumber = 0, e._numbers = al(e._fromNumbers), e._number = 0, r._fromNumber = i, e._toNumbers.length) {
let t = al(e._toNumbers);
t.forEach((t, n) => {
e._fromNumbers[n] = r._fromNumbers[n] - t, e._toNumbers[n] = 0;
}), r._fromNumbers = t;
}
ll(t, e, null, "_prevAdd", "_nextAdd");
}
return e;
}, Xl = (e) => {
let t = e._composition;
if (t !== ec.none) {
let n = e.target, r = e.property, i = Gl._rep.get(n)[r];
if (cl(i, e, "_prevRep", "_nextRep"), t === ec.blend) {
let t = Gl._add, i = t.get(n);
if (!i) return;
let a = i[r], o = Ll.animation;
cl(a, e, "_prevAdd", "_nextAdd");
let s = a._head;
if (s && s === a._tail) {
cl(a, s, "_prevAdd", "_nextAdd"), cl(o, s);
let e = !0;
for (let t in i) if (i[t]._head) {
e = !1;
break;
}
e && t.delete(n);
}
}
}
return e;
}, Zl = (e) => (e.paused = !0, e.began = !1, e.completed = !1, e), Ql = (e) => e._cancelled ? (e._hasChildren ? sl(e, Ql) : sl(e, (e) => {
e._composition !== ec.none && Yl(e, Kl(e.target, e.property));
}), e._cancelled = 0, e) : e, $l = 0, eu = (e, t) => e._priority > t._priority, tu = class extends Il {
constructor(e = {}, t = null, n = 0) {
super(0), ++$l;
let { id: r, delay: i, duration: a, reversed: o, alternate: s, loop: c, loopDelay: l, autoplay: u, frameRate: d, playbackRate: f, priority: p, onComplete: m, onLoop: h, onPause: g, onBegin: _, onBeforeUpdate: v, onUpdate: y } = e;
Ec.current && Ec.current.register(this);
let b = t ? 0 : Hl._lastTickTime, x = t ? t.defaults : Dc.defaults, S = Ic(i) || Lc(i) ? x.delay : +i, C = Ic(a) || Lc(a) ? Infinity : +a, w = yl(c, x.loop), T = yl(l, x.loopDelay), E = w === !0 || w === Infinity || w < 0 ? Infinity : w + 1, ee = 0;
t ? ee = n : (Hl.reqId || Hl.requestTick(jc()), ee = (Hl._lastTickTime - Hl._startTime) * Dc.timeScale), this.id = Lc(r) ? $l : r, this.parent = t, this.duration = rl((C + T) * E - T) || 1e-11, this.backwards = !1, this.paused = !0, this.began = !1, this.completed = !1, this.onBegin = _ || x.onBegin, this.onBeforeUpdate = v || x.onBeforeUpdate, this.onUpdate = y || x.onUpdate, this.onLoop = h || x.onLoop, this.onPause = g || x.onPause, this.onComplete = m || x.onComplete, this.iterationDuration = C, this.iterationCount = E, this._autoplay = t ? !1 : yl(u, x.autoplay), this._offset = ee, this._delay = S, this._loopDelay = T, this._iterationTime = 0, this._currentIteration = 0, this._resolve = pc, this._running = !1, this._reversed = +yl(o, x.reversed), this._reverse = this._reversed, this._cancelled = 0, this._alternate = yl(s, x.alternate), this._prev = null, this._next = null, this._lastTickTime = b, this._startTime = b, this._lastTime = b, this._fps = yl(d, x.frameRate), this._speed = yl(f, x.playbackRate), this._priority = +yl(p, 1);
}
get cancelled() {
return !!this._cancelled;
}
set cancelled(e) {
e ? this.cancel() : this.reset(!0).play();
}
get currentTime() {
return tl(Y(this._currentTime, Dc.precision), -this._delay, this.duration);
}
set currentTime(e) {
let t = this.paused;
this.pause().seek(+e), t || this.resume();
}
get iterationCurrentTime() {
return tl(Y(this._iterationTime, Dc.precision), 0, this.iterationDuration);
}
set iterationCurrentTime(e) {
this.currentTime = this.iterationDuration * this._currentIteration + e;
}
get progress() {
return tl(Y(this._currentTime / this.duration, 10), 0, 1);
}
set progress(e) {
this.currentTime = this.duration * e;
}
get iterationProgress() {
return tl(Y(this._iterationTime / this.iterationDuration, 10), 0, 1);
}
set iterationProgress(e) {
let t = this.iterationDuration;
this.currentTime = t * this._currentIteration + t * e;
}
get currentIteration() {
return this._currentIteration;
}
set currentIteration(e) {
this.currentTime = this.iterationDuration * tl(+e, 0, this.iterationCount - 1);
}
get reversed() {
return !!this._reversed;
}
set reversed(e) {
e ? this.reverse() : this.play();
}
get speed() {
return super.speed;
}
set speed(e) {
super.speed = e, this.resetTime();
}
reset(e = !1) {
return Ql(this), this._reversed && !this._reverse && (this.reversed = !1), this._iterationTime = this.iterationDuration, Ml(this, 0, 1, ~~e, $s.FORCE), Zl(this), this._hasChildren && sl(this, Zl), this;
}
init(e = !1) {
this.fps = this._fps, this.speed = this._speed, !e && this._hasChildren && Ml(this, this.duration, 1, ~~e, $s.FORCE), this.reset(e);
let t = this._autoplay;
return t === !0 ? this.resume() : t && !Lc(t.linked) && t.link(this), this;
}
resetTime() {
let e = 1 / (this._speed * Hl._speed);
return this._startTime = jc() - (this._currentTime + this._delay) * e, this;
}
pause() {
return this.paused ? this : (this.paused = !0, this.onPause(this), this);
}
resume() {
return this.paused ? (this.paused = !1, this.duration <= 1e-11 && !this._hasChildren ? Ml(this, oc, 0, 0, $s.FORCE) : (this._running ||= (ll(Hl, this, eu), Hl._hasChildren = !0, !0), this.resetTime(), this._startTime -= 12, Hl.wake()), this) : this;
}
restart() {
return this.reset().resume();
}
seek(e, t = 0, n = 0) {
Ql(this), this.completed = !1;
let r = this.paused;
return this.paused = !0, Ml(this, e + this._delay, ~~t, ~~n, $s.AUTO), r ? this : this.resume();
}
alternate() {
let e = this._reversed, t = this.iterationCount, n = this.iterationDuration, r = t === Infinity ? Zc(sc / n) : t;
return this._reversed = +(this._alternate && !(r % 2) ? e : !e), t === Infinity ? this.iterationProgress = this._reversed ? 1 - this.iterationProgress : this.iterationProgress : this.seek(n * r - this._currentTime), this.resetTime(), this;
}
play() {
return this._reversed && this.alternate(), this.resume();
}
reverse() {
return this._reversed || this.alternate(), this.resume();
}
cancel() {
return this._hasChildren ? sl(this, (e) => e.cancel(), !0) : sl(this, Xl), this._cancelled = 1, this.pause();
}
stretch(e) {
let t = this.duration, n = il(e);
if (t === n) return this;
let r = e / t, i = e <= oc;
return this.duration = i ? oc : n, this.iterationDuration = i ? oc : il(this.iterationDuration * r), this._offset *= r, this._delay *= r, this._loopDelay *= r, this;
}
revert() {
Ml(this, 0, 1, 0, $s.AUTO);
let e = this._autoplay;
return e && e.linked && e.linked === this && e.revert(), this.cancel();
}
complete(e = 0) {
return this.seek(this.duration, e).cancel();
}
then(e = pc) {
let t = this.then, n = () => {
this.then = null, e(this), this.then = t, this._resolve = pc;
};
return new Promise((e) => (this._resolve = () => e(n()), this.completed && this._resolve(), this));
}
};
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/targets.js
function nu(e) {
let t = Fc(e) ? Ec.root.querySelectorAll(e) : e;
if (t instanceof NodeList || t instanceof HTMLCollection) return t;
}
function ru(e) {
if (Rc(e)) return [];
if (!Ys) return Mc(e) && e.flat(Infinity) || [e];
if (Mc(e)) {
let t = e.flat(Infinity), n = [];
for (let e = 0, r = t.length; e < r; e++) {
let r = t[e];
if (!Rc(r)) {
let e = nu(r);
if (e) for (let t = 0, r = e.length; t < r; t++) {
let r = e[t];
if (!Rc(r)) {
let e = !1;
for (let t = 0, i = n.length; t < i; t++) if (n[t] === r) {
e = !0;
break;
}
e || n.push(r);
}
}
else {
let e = !1;
for (let t = 0, i = n.length; t < i; t++) if (n[t] === r) {
e = !0;
break;
}
e || n.push(r);
}
}
}
return n;
}
let t = nu(e);
return t ? Array.from(t) : [e];
}
function iu(e) {
let t = ru(e), n = t.length;
for (let e = 0; e < n; e++) {
let n = t[e];
if (!n[tc]) {
n[tc] = !0;
let e = zc(n);
(n.nodeType || e) && (n[nc] = !0, n[rc] = e, n[ic] = {});
}
}
return t;
}
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/units.js
var au = {
deg: 1,
rad: 180 / $c,
turn: 360
}, ou = {}, su = (e, t, n, r = !1) => {
let i = t.u, a = t.n;
if (t.t === J.UNIT && i === n) return t;
let o = a + i + n, s = ou[o];
if (!Lc(s) && !r) t.n = s;
else {
let r;
if (i in au) r = a * au[i] / au[n];
else {
let t = e.cloneNode(), o = e.parentNode, s = o && o !== Zs ? o : Zs.body;
s.appendChild(t);
let c = t.style;
c.width = 100 + i;
let l = t.offsetWidth || 100;
c.width = 100 + n;
let u = l / (t.offsetWidth || 100);
s.removeChild(t), r = u * a;
}
t.n = r, ou[o] = r;
}
return t.t, J.UNIT, t.u = n, t;
}, cu = (e) => e, lu = (e = 1.68) => (t) => qc(t, +e), uu = {
in: (e) => (t) => e(t),
out: (e) => (t) => 1 - e(1 - t),
inOut: (e) => (t) => t < .5 ? e(t * 2) / 2 : 1 - e(t * -2 + 2) / 2,
outIn: (e) => (t) => t < .5 ? (1 - e(1 - t * 2)) / 2 : (e(t * 2 - 1) + 1) / 2
}, du = $c / 2, fu = $c * 2, pu = {
"": lu,
Quad: lu(2),
Cubic: lu(3),
Quart: lu(4),
Quint: lu(5),
Sine: (e) => 1 - Xc(e * du),
Circ: (e) => 1 - Jc(1 - e * e),
Expo: (e) => e ? qc(2, 10 * e - 10) : 0,
Bounce: (e) => {
let t, n = 4;
for (; e < ((t = qc(2, --n)) - 1) / 11;);
return 1 / qc(4, 3 - n) - 7.5625 * qc((t * 3 - 2) / 22 - e, 2);
},
Back: (e = 1.7) => (t) => (+e + 1) * t * t * t - +e * t * t,
Elastic: (e = 1, t = .3) => {
let n = tl(+e, 1, 10), r = tl(+t, oc, 2), i = r / fu * Qc(1 / n), a = fu / r;
return (e) => e === 0 || e === 1 ? e : -n * qc(2, -10 * (1 - e)) * Yc((1 - e - i) * a);
}
}, mu = /*#__PURE__ */ (() => {
let e = {
linear: cu,
none: cu
};
for (let t in uu) for (let n in pu) {
let r = pu[n], i = uu[t];
e[t + n] = n === "" || n === "Back" || n === "Elastic" ? (e, t) => i(r(e, t)) : i(r);
}
return e;
})(), hu = {
linear: cu,
none: cu
}, gu = (e) => {
if (hu[e]) return hu[e];
if (e.indexOf("(") <= -1) {
let t = uu[e] || e.includes("Back") || e.includes("Elastic") ? mu[e]() : mu[e];
return t ? hu[e] = t : cu;
} else {
let t = e.slice(0, -1).split("("), n = mu[t[0]];
return n ? hu[e] = n(...t[1].split(",")) : cu;
}
}, _u = [
"steps(",
"irregular(",
"linear(",
"cubicBezier("
], vu = (e) => {
if (Fc(e)) {
for (let t = 0, n = _u.length; t < n; t++) if (Ac(e, _u[t])) return console.warn(`String syntax for \`ease: "${e}"\` has been removed from the core and replaced by importing and passing the easing function directly: \`ease: ${e}\``), cu;
}
return Ic(e) ? e : Fc(e) ? gu(e) : cu;
}, X = El(), Z = El(), yu = {}, bu = { func: null }, xu = { func: null }, Su = [null], Cu = [null, null], wu = { to: null }, Tu = 0, Eu = 0, Du, Ou, ku = (e, t) => {
let n = {};
if (Mc(e)) {
let t = [].concat(...e.map((e) => Object.keys(e))).filter(Wc);
for (let r = 0, i = t.length; r < i; r++) {
let i = t[r];
n[i] = e.map((e) => {
let t = {};
for (let n in e) {
let r = e[n];
Wc(n) ? n === i && (t.to = r) : t[n] = r;
}
return t;
});
}
} else {
let r = yl(t.duration, Dc.defaults.duration);
Object.keys(e).map((t) => ({
o: parseFloat(t) / 100,
p: e[t]
})).sort((e, t) => e.o - t.o).forEach((e) => {
let t = e.o, i = e.p;
for (let e in i) if (Wc(e)) {
let a = n[e];
a ||= n[e] = [];
let o = t * r, s = a.length, c = a[s - 1], l = { to: i[e] }, u = 0;
for (let e = 0; e < s; e++) u += a[e].duration;
s === 1 && (l.from = c.to), i.ease && (l.ease = i.ease), l.duration = o - (s ? u : 0), a.push(l);
}
return e;
});
for (let e in n) {
let t = n[e], r;
for (let e = 0, n = t.length; e < n; e++) {
let n = t[e], i = n.ease;
n.ease = r || void 0, r = i;
}
t[0].duration || t.shift();
}
}
return n;
}, Au = class extends tu {
constructor(e, t, n, r, i = !1, a = 0, o) {
super(t, n, r), this._head, this._tail, ++Eu;
let s = iu(e), c = s.length, l = t.keyframes, u = l ? ol(ku(l, t), t) : t, { id: d, delay: f, duration: p, ease: m, playbackEase: h, modifier: g, composition: _, onRender: v } = u, y = n ? n.defaults : Dc.defaults, b = yl(m, y.ease), x = yl(h, y.playbackEase), S = x ? vu(x) : null, C = !Lc(b.ease), w = C ? b.ease : yl(m, S ? "linear" : y.ease), T = C ? b.settlingDuration : yl(p, y.duration), E = yl(f, y.delay), ee = g || y.modifier, D = Lc(_) && c >= 1e3 ? ec.none : Lc(_) ? y.composition : _, O = this._offset + (n ? n._offset : 0);
C && (b.parent = this);
let k = NaN, A = NaN, te = 0, ne = 0;
for (let e = 0; e < c; e++) {
let t = s[e], r = a || e, c = o || s, l = NaN, d = NaN;
for (let e in u) if (Wc(e)) {
let a = Sl(t, e), o = pl(t, e), s = Pl(e, t, a), f = u[e], p = Mc(f);
if (i && !p && (Cu[0] = f, Cu[1] = f, f = Cu), p) {
let e = f.length, t = !Nc(f[0]);
e === 2 && t ? (wu.to = f, Su[0] = wu, Du = Su) : e > 2 && t ? (Du = [], f.forEach((e, t) => {
t ? t === 1 ? (Cu[1] = e, Du.push(Cu)) : Du.push(e) : Cu[0] = e;
})) : Du = f;
} else Su[0] = f, Du = Su;
let m = null, h = null, g = NaN, _ = 0, v = 0;
for (let e = Du.length; v < e; v++) {
let i = Du[v];
Nc(i) ? Ou = i : (wu.to = i, Ou = wu), bu.func = null, xu.func = null;
let l = xl(yl(Ou.composition, D), t, r, c, null, null), u = Pc(l) ? l : ec[l];
!m && u !== ec.none && (m = Kl(t, s));
let d = m ? m._tail : null, f = n && d && d.parent.parent === n ? d : h, p = xl(Ou.to, t, r, c, bu, f), y;
Nc(p) && !Lc(p.to) ? (Ou = p, y = p.to) : y = p;
let b = xl(Ou.from, t, r, c, xu, f), x = Ou.ease || w, S = xl(x, t, r, c, null, f), C = Ic(S) || Fc(S) ? S : x, k = !Lc(C) && !Lc(C.ease), A = k ? C.ease : C, re = k ? C.settlingDuration : xl(yl(Ou.duration, e > 1 ? xl(T, t, r, c, null, f) / e : T), t, r, c, null, f), j = xl(yl(Ou.delay, v ? 0 : E), t, r, c, null, f), ie = Ou.modifier || ee, ae = !Lc(b), oe = !Lc(y), M = Mc(y), se = M || ae && oe, ce = h ? _ : 0, le = h ? _ + j : j, ue = Y(O + le, 12), de = Y(O + ce, 12);
!ne && (ae || M) && (ne = 1);
let fe = h;
if (u !== ec.none) {
let e = m._head;
for (; e && e._absoluteStartTime <= ue;) if (e._isOverridden || (fe = e), e = e._nextRep, e && e._absoluteStartTime >= ue) for (; e;) Jl(e), e = e._nextRep;
}
if (se) {
Dl(M ? xl(y[0], t, r, c, xu, f) : b, X), Dl(M ? xl(y[1], t, r, c, bu, f) : y, Z);
let e = wl(t, s, a, yu);
X.t === J.NUMBER && (fe ? fe._valueType === J.UNIT && (X.t = J.UNIT, X.u = fe._unit) : (Dl(e, kl), kl.t === J.UNIT && (X.t = J.UNIT, X.u = kl.u)));
} else oe ? Dl(y, Z) : h ? Ol(h, Z) : Dl(n && fe && fe.parent.parent === n ? fe._value : wl(t, s, a, yu), Z), ae ? Dl(b, X) : h ? Ol(h, X) : Dl(n && fe && fe.parent.parent === n ? fe._value : wl(t, s, a, yu), X);
if (X.o && (X.n = Tl(fe ? fe._toNumber : Dl(wl(t, s, a, yu), kl).n, X.n, X.o)), Z.o && (Z.n = Tl(X.n, Z.n, Z.o)), X.t !== Z.t) {
if (X.t === J.COMPLEX || Z.t === J.COMPLEX) {
let e = X.t === J.COMPLEX ? X : Z, t = X.t === J.COMPLEX ? Z : X;
t.t = J.COMPLEX, t.s = al(e.s), t.d = e.d.map(() => t.n);
} else if (X.t === J.UNIT || Z.t === J.UNIT) {
let e = X.t === J.UNIT ? X : Z, t = X.t === J.UNIT ? Z : X;
t.t = J.UNIT, t.u = e.u;
} else if (X.t === J.COLOR || Z.t === J.COLOR) {
let e = X.t === J.COLOR ? X : Z, t = X.t === J.COLOR ? Z : X;
t.t = J.COLOR, t.d = e.d.map(() => 0);
}
}
if (X.u !== Z.u) {
let e = Z.u ? X : Z;
e = su(t, e, Z.u ? Z.u : X.u, !1);
}
if (Z.d && X.d && Z.d.length !== X.d.length) {
let e = X.d.length > Z.d.length ? X : Z, t = e === X ? Z : X;
t.d = e.d.map((e, n) => Lc(t.d[n]) ? 0 : t.d[n]), t.s = al(e.s);
}
let pe = Y(+re || 1e-11, 12), me = yu[s];
Rc(me) || (yu[s] = null);
let he = o ? o.set : null;
_ = Y(le + pe, 12);
let N = X.d, ge = Z.d, _e = Z.s, P = {
parent: this,
id: Tu++,
property: s,
target: t,
_value: null,
_toFunc: bu.func,
_fromFunc: xu.func,
_ease: vu(A),
_fromNumbers: N ? al(N) : lc,
_toNumbers: ge ? al(ge) : lc,
_strings: _e ? al(_e) : lc,
_fromNumber: X.n,
_toNumber: Z.n,
_numbers: N ? al(N) : lc,
_number: X.n,
_unit: Z.u,
_modifier: ie,
_currentTime: 0,
_startTime: le,
_delay: +j,
_updateDuration: pe,
_changeDuration: pe,
_absoluteStartTime: ue,
_absoluteUpdateStartTime: de,
_absoluteEndTime: Y(O + _, 12),
_hasFromValue: ae || M ? 1 : 0,
_tweenType: a,
_setter: he,
_valueType: Z.t,
_composition: u,
_isOverlapped: 0,
_isOverridden: 0,
_renderTransforms: 0,
_inlineValue: me,
_prevRep: null,
_nextRep: null,
_prevAdd: null,
_nextAdd: null,
_prev: null,
_next: null
};
u !== ec.none && Yl(P, m);
let ve = P._valueType;
if (ve === J.COMPLEX) P._value = Al(P, 1, -1);
else if (ve === J.UNIT) P._value = `${ie(P._toNumber)}${P._unit}`;
else if (ve === J.COLOR) {
let e = Z.d;
P._value = `rgba(${Y(e[0], 0)},${Y(e[1], 0)},${Y(e[2], 0)},${e[3]})`;
} else P._value = ie(P._toNumber);
isNaN(g) && (g = P._startTime), h = P, te++, ll(this, P);
}
(isNaN(A) || g < A) && (A = g), (isNaN(k) || _ > k) && (k = _), a === Qs.TRANSFORM && (l = te - v, d = te);
}
if (!isNaN(l)) {
let e = 0;
sl(this, (t) => {
e >= l && e < d && (t._renderTransforms = 1, t._composition === ec.blend && sl(Ll.animation, (e) => {
e.id === t.id && (e._renderTransforms = 1);
})), e++;
});
}
}
c || console.warn("No target found. Make sure the element you're trying to animate is accessible before creating your animation."), A ? (sl(this, (e) => {
e._startTime - e._delay || (e._delay -= A), e._startTime -= A;
}), k -= A) : A = 0, k || (k = oc, this.iterationCount = 0), this.targets = s, this.id = Lc(d) ? Eu : d, this.duration = k === 1e-11 ? oc : rl((k + this._loopDelay) * this.iterationCount - this._loopDelay) || 1e-11, this.onRender = v || y.onRender, this._ease = S, this._delay = A, this.iterationDuration = k, !this._autoplay && ne && this.onRender(this);
}
stretch(e) {
let t = this.duration;
if (t === il(e)) return this;
let n = e / t;
return sl(this, (e) => {
e._updateDuration = il(e._updateDuration * n), e._changeDuration = il(e._changeDuration * n), e._currentTime *= n, e._delay *= n, e._startTime *= n, e._absoluteStartTime *= n, e._absoluteUpdateStartTime *= n, e._absoluteEndTime *= n;
}), super.stretch(e);
}
refresh() {
return sl(this, (e) => {
let t = e._toFunc, n = e._fromFunc;
(t || n) && (n ? (Dl(n(), X), X.u !== e._unit && e.target[nc] && su(e.target, X, e._unit, !0), e._fromNumbers = al(X.d), e._fromNumber = X.n) : t && (Dl(wl(e.target, e.property, e._tweenType), kl), e._fromNumbers = al(kl.d), e._fromNumber = kl.n), t && (Dl(t(), Z), e._toNumbers = al(Z.d), e._strings = al(Z.s), e._toNumber = Z.o ? Tl(e._fromNumber, Z.n, Z.o) : Z.n));
}), this.duration === 1e-11 && this.restart(), this;
}
revert() {
return super.revert(), Fl(this);
}
then(e) {
return super.then(e);
}
}, ju = (e, t) => Dc.editor ? Dc.editor.addAnimation(e, t) : new Au(e, t, null, 0, !1).init(), Mu = (e, t, n, r) => {
let { searchProvider: i, props: a, slots: o } = r, s = N(null), c = {};
if (e.customRender) c = e.customRender({
item: e,
queryForm: t,
context: r
});
else switch (e.type) {
case "number":
c = Gi(e, t, r);
break;
case "select":
c = Ki(e, t, r);
break;
case "textarea":
c = qi(e, t, r);
break;
case "date":
c = Ji(e, t, r);
break;
case "cascade":
c = Yi(e, t, r);
break;
case "switch":
c = Xi(e, t, r);
break;
default:
c = Wi(e, t, r);
break;
}
o[e.key] && (c.Component = o[e.key]({
item: e,
queryForm: t,
context: r
}));
let { conditions: l = [], Component: u, displayValue: d = "", onComponentOpen: f = null } = c, p = E(() => n.hidden === !0), m = (n) => {
t[e.key].condition = l[n].value;
}, h = () => {
n.showPanel &&= !1;
}, g = () => {
n.showPanel = !0, se(() => {
f && f();
});
}, v = { onEnter: (e, t) => {
ju(".newbie-search-input-container", {
padding: "8px",
translateX: "0",
translateY: "0",
duration: 100,
ease: "linear"
}), ju(".newbie-search-condition", {
top: "-44px",
opacity: 1,
duration: 100,
ease: "linear"
}), t();
} }, y = E(() => Tt(l, { value: t[e.key].condition })?.label || _("search.equal")), b = E(() => Tt(l, { value: t[e.key].condition })?.label || _("search.equal"));
return O(qs, { onTrigger: h }, { default: () => [O("div", { class: `newbie-search-item ${p.value ? "hidden" : ""} ${i.maskClass || ""}` }, [O("div", {
class: "newbie-search-mask",
onClick: g
}, [O("div", { class: "newbie-search-mask-title" }, [e.title]), O("div", { class: "newbie-search-mask-content" }, [t[e.key].condition === "equal" ? null : O("div", { class: "newbie-search-mask-condition" }, [b.value]), O("div", { class: "newbie-search-mask-value" }, [d?.value])])]), O(w, {
css: !1,
onEnter: v.onEnter
}, { default: () => [n.showPanel ? O("div", {
class: "newbie-search-popup-panel",
ref: s
}, [O("div", { class: "newbie-search-condition" }, [O("span", { class: "newbie-search-condition-title" }, [
_("common.search"),
" ",
O(vt, { code: !0 }, { default: () => e.title })
]), a.disableConditions || e.disableConditions ? null : O(Ie, {
trigger: ["click"],
getPopupContainer: () => s.value
}, {
default: () => O("a", {
class: "newbie-search-condition-dropdown-link",
onClick: Ce(() => {}, ["prevent"])
}, [
y.value,
" ",
O(en, null, null)
]),
overlay: () => O(Je, null, { default: () => l.map((e, t) => O(Ye, { key: e.value }, { default: () => O("a", { onClick: () => m(t) }, [e.label]) })) })
})]), O("div", { class: "newbie-search-input-container" }, [z(u) ? u() : u])]) : null] })])] });
};
//#endregion
//#region components/search/NewbieSearch.jsx
function Nu(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Pu = /* @__PURE__ */ A({
name: "NewbieSearch",
props: {
filterableColumns: {
type: [Array, Function],
default: () => []
},
sortableColumns: {
type: [Array, Function],
default: () => []
},
disableConditions: {
type: Boolean,
default: !1
},
autoQuery: {
type: Boolean,
default: !1
},
gutter: {
type: [String, Number],
default: 16
},
persistence: {
type: [
Boolean,
String,
Object
],
default: !1
}
},
emits: ["search"],
setup(e, { expose: t, emit: n, slots: r }) {
let i = ie(nr, () => {}), a = E(() => h(e.persistence)), o = E(() => a.value.storage === "local"), c = E(() => {
if (!a.value.enabled) return null;
let { key: e } = a.value;
return e ? `search_${s(location.pathname + "_" + e)}` : `search_${s(location.href)}`;
}), l = E(() => {
let e = c.value;
return e ? u(e, { storage: a.value.storage }) : null;
}), d = me({
queryForm: {},
sortForm: {
selectedKeys: [],
targetKeys: []
},
columnKey: {},
searchKey: {},
searchLabels: [],
fieldColumns: [],
expandColumns: [],
sortColumns: [],
openSortable: !1,
isFormExpanded: !1,
overflowCount: 0
}), f = N(), p = ["number", "date"], m = ["select", "cascade"], g = {}, v = () => {
let t = {}, n = [], r = [], i = [], a = [], s = l.value && !o.value ? l.value.load("form", {}) : {}, c = l.value && !o.value ? l.value.load("sort", {}) : {};
e.filterableColumns.forEach((e) => {
let i = xt(e);
B(i.sortOrder) && (i.sortOrder = 0), g[i.key] || (g[i.key] = me({ showPanel: !1 })), i.type = i.type || "input";
let a = "", o = "equal";
if (i.expandable ? a = [] : p.includes(i.type) ? a = [null, null] : m.includes(i.type) && (a = []), B(s[i.key])) B(i.defaultValue) || (a = z(i.defaultValue) ? i.defaultValue() : i.defaultValue);
else {
let e = s[i.key].value;
a = (p.includes(i.type) || m.includes(i.type)) && !Dt(e) ? [e] : e;
}
if (B(s[i.key]) ? i.conditions && i.conditions.length === 1 ? o = i.conditions[0] : i.defaultCondition && (o = z(i.defaultCondition) ? i.defaultCondition() : i.defaultCondition) : o = s[i.key].condition, i.expandable) {
if (!i.options) {
console.error("expandable 为 true 时,必须提供 options 属性");
return;
}
i.type = "select", n.push(i);
} else B(g[i.key].hidden) && (g[i.key].hidden = !1), r.push(i);
i.type === "date" && (Dt(a) ? a = a.map((e) => Nt(e) ? bt(new Date(e)) : e) : Nt(a) && (a = bt(new Date(a)))), i.type === "switch" && (a = Ot(a) ? a ? "checked" : "unchecked" : void 0), t[i.key] = {
value: a,
type: i.type,
condition: o
};
}), e.sortableColumns.forEach((e) => {
let t = xt(e);
B(c[e.key]) || (a.push(e.key), t.direction = c[e.key]), (e.direction === "asc" || e.direction === "desc") && a.push(e.key), i.push(t);
}), d.queryForm = t, d.sortColumns = Ft(i, ["sortOrder"], ["desc"]), d.fieldColumns = Ft(r, ["sortOrder"], ["desc"]), d.expandColumns = Ft(n, ["sortOrder"], ["desc"]), d.sortForm.targetKeys = a;
};
I(() => [e.filterableColumns, e.sortableColumns], () => {
v(), se(() => S());
}, { immediate: !0 });
let y = () => {
d.openSortable = !1, T.value = !1, n("search", {
newbieQuery: w(),
newbieSort: C()
});
}, b = () => {
l.value && l.value.clear(["search", "sort"]), T.value = !1, v();
}, x = () => {
d.isFormExpanded = !d.isFormExpanded, se(() => S());
}, S = () => {
if (!f.value) return;
let t = f.value, n = t.querySelector(".newbie-search-item"), r = d.fieldColumns.length;
if (n && d.fieldColumns.length > 0) {
let i = n.getBoundingClientRect().width;
if (i > 0) {
let n = t.getBoundingClientRect().width, a = Number(e.gutter) || 0;
r = Math.max(1, Math.floor((n + a) / (i + a)));
}
}
let i = d.isFormExpanded ? d.fieldColumns.length : r;
d.overflowCount = d.fieldColumns.length - i, d.fieldColumns.forEach((e, t) => {
let n = t >= i;
n && g[e.key]?.showPanel ? g[e.key].hidden = !1 : g[e.key].hidden = n;
});
};
le(() => {
l.value && !o.value ? n("search", {
persistence: !0,
newbieQuery: w(),
newbieSort: C()
}) : l.value && o.value ? (l.value.hasLocalData("search") && (T.value = !0), n("search", {
persistence: !0,
newbieQuery: w(!0),
newbieSort: C(!0)
})) : e.persistence && n("search", {
persistence: !0,
newbieQuery: {},
newbieSort: {}
}), requestAnimationFrame(() => S());
});
let C = (e = !1) => {
let t = {};
return d.sortForm.targetKeys.forEach((e) => {
let n = Tt(d.sortColumns, { key: e });
t[e] = n.direction;
let r = d.searchLabels.length;
d.searchLabels.push(O(dt, {
color: "green",
closable: !0,
onClose: (t) => {
t?.preventDefault?.();
let n = d.sortForm.targetKeys.indexOf(e);
n > -1 && d.sortForm.targetKeys.splice(n, 1), d.searchLabels[r] = null;
}
}, { default: () => [O("span", { style: { marginRight: "2px" } }, [n.title]), n.direction === "asc" ? O(Cn, null, null) : O(sn, null, null)] }));
}), l.value && !e && l.value.save("sort", t), t;
}, w = (t = !1) => {
let n = {}, r = {};
return d.searchLabels = [], St(d.fieldColumns, d.expandColumns).forEach((t) => {
let { value: a, searchLabel: o } = t.collectItem ? t.collectItem({
queryForm: d.queryForm,
item: t
}) : {}, { condition: s, type: c } = d.queryForm[t.key];
if (Array.isArray(a) && a.length > 0 || !Array.isArray(a) && a != null && a !== "" || s === "null" || s === "notNull") {
e.persistence && (r[t.key] = {
condition: s,
type: c,
value: a
});
let l = i?.valueFormatter?.[t.type];
l && z(l) && (a = Dt(a) ? a.map((e) => l(e)) : l(a)), n[t.key] = {
condition: s,
type: c,
value: a
};
let u = d.searchLabels.length;
d.searchLabels.push(o ? O(dt, {
color: "blue",
closable: !0,
onClose: (e) => {
if (e?.preventDefault?.(), d.queryForm[t.key]) {
let e = d.queryForm[t.key].type || t.type;
p.includes(e) ? d.queryForm[t.key].value = [null, null] : m.includes(e) ? d.queryForm[t.key].value = [] : e === "switch" ? d.queryForm[t.key].value = void 0 : d.queryForm[t.key].value = "";
}
d.searchLabels[u] = null;
}
}, Nu(o) ? o : { default: () => [o] }) : null);
}
}), l.value && !t && l.value.save("search", r), n;
};
t({
getQueryForm: w,
setQueryForm: (e) => {
Object.keys(e).forEach((t) => {
d.queryForm[t] ? d.queryForm[t].value = e[t] : d.queryForm[t] = { value: e[t] };
});
},
getSortForm: C,
getSearch: () => {
d.searchLabels = [];
let e = {}, t = w(), n = C();
return Object.keys(t).length && (e.newbieQuery = t), Object.keys(n).length && (e.newbieSort = n), e;
}
});
let T = N(!1), ee = () => {
if (!l.value) return;
let e = l.value.loadLocal("search", {}), t = l.value.loadLocal("sort", {});
l.value.save("search", e), l.value.save("sort", t), Object.keys(e).forEach((t) => {
let n = e[t], r = n.value, i = d.queryForm[t], a = i?.type || n.type || "input";
(p.includes(a) || m.includes(a)) && !Dt(r) && r != null && r !== "" && (r = [r]), i ? (i.value = r, n.condition && (i.condition = n.condition)) : d.queryForm[t] = {
value: r,
condition: n.condition || "equal",
type: a
};
}), Object.keys(d.queryForm).forEach((e) => {
let t = d.queryForm[e];
!t || !t.type || (t.type === "date" && t.value != null ? t.value = Dt(t.value) ? t.value.map((e) => Nt(e) ? bt(new Date(e)) : e) : Nt(t.value) ? bt(new Date(t.value)) : t.value : t.type === "switch" && t.value != null && (t.value = Ot(t.value) ? t.value ? "checked" : "unchecked" : void 0));
});
let n = [];
Object.keys(t).forEach((e) => {
n.push(e);
let r = Tt(d.sortColumns, { key: e });
r && (r.direction = t[e]);
}), d.sortForm.targetKeys = n, T.value = !1, y();
}, D = () => d.fieldColumns.map((t) => Mu(t, d.queryForm, g[t.key], {
props: e,
slots: r,
searchProvider: i
})), k = () => d.expandColumns.map((e) => Zi(e, d.queryForm)), A = () => d.sortColumns.length ? O(Xe, {
title: _("search.sort-setting"),
open: d.openSortable,
"onUpdate:open": (e) => d.openSortable = e,
width: "800px",
okText: _("common.search"),
cancelText: _("common.cancel"),
onOk: () => y()
}, { default: () => Ks(d.sortColumns, d.sortForm) }) : null;
return () => O("div", { class: "newbie-search" }, [
O("div", { class: "newbie-search-query" }, [O("div", { class: "newbie-search-form" }, [O("div", {
class: "newbie-search-form-wrapper",
ref: f
}, [O(at, {
size: [e.gutter, 10],
wrap: !0,
style: { marginBottom: 0 }
}, { default: () => D() })])]), O(at, { class: "newbie-search-operation" }, { default: () => [
d.overflowCount > 0 || d.isFormExpanded ? O(ht, { title: _("search.toggle-more") }, { default: () => O(L, {
type: "link",
icon: d.isFormExpanded ? O(En, null, null) : O(Vt, null, null),
onClick: x
}, { default: () => d.isFormExpanded ? _("search.collapse") : _("common.more") + "(" + d.overflowCount + ")" }) }) : null,
O(ht, { title: _("search.clear-all-search-items") }, { default: () => O(L, {
type: "dashed",
icon: O(Kt, null, null),
onClick: b
}, { default: () => e.sortableColumns.length ? "" : _("common.clear") }) }),
e.sortableColumns.length ? O(ht, { title: _("search.sort-setting") }, { default: () => O(L, {
type: d.sortForm.targetKeys.length ? "primary" : "default",
icon: O(yn, null, null),
onClick: () => d.openSortable = !0
}, null) }) : null,
O(L, {
type: "primary",
icon: O(Tn, null, null),
onClick: y
}, { default: () => _("common.search") })
] })]),
d.expandColumns?.length ? O("div", { class: "newbie-search-expand" }, [k()]) : null,
d.searchLabels?.length || T.value ? O("div", { class: "newbie-search-label" }, [O(at, {
class: "newbie-search-label-content",
wrap: !0,
style: { marginBottom: 0 }
}, { default: () => [T.value ? O(dt, {
style: {
cursor: "pointer",
color: "#92400e",
background: "#fff7e6",
borderColor: "#ffa940",
borderStyle: "dashed"
},
onClick: ee
}, { default: () => [O(pn, { style: { marginRight: "4px" } }, null), _("search.restore-last")] }) : null, ...d.searchLabels.filter(Boolean)] })]) : null,
A()
]);
}
});
//#endregion
//#region components/table/NewbieTable.jsx
function Fu(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Iu = /* @__PURE__ */ A({
name: "NewbieTable",
props: {
title: {
type: String,
default: ""
},
filterable: {
type: Boolean,
default: !0
},
tableProps: {
type: Object,
default: () => ({})
},
tableEvents: {
type: Object,
default: () => ({})
},
tableSlots: {
type: Object,
default: () => ({})
},
searchSlots: {
type: Object,
default: () => ({})
},
pagination: {
type: [Boolean, Object],
default: !0
},
pageEvents: {
type: Object,
default: () => ({})
},
autoQuery: {
type: Boolean,
default: !1
},
url: {
type: String,
default: ""
},
editable: {
type: Boolean,
default: !1
},
submitUrl: {
type: String,
default: ""
},
beforeCellSubmit: {
type: Function,
default: null
},
method: {
type: String,
default: "get"
},
extraData: {
type: Object,
default: () => ({})
},
afterFetched: {
type: Function,
default: null
},
columns: {
type: [Array, Function],
default: () => []
},
rowSelection: {
type: [Boolean, Object],
default: () => null
},
rowKey: {
type: [String, Function],
default: "id"
},
dataSource: {
type: Array,
default: () => []
},
formData: {
type: Array,
default: () => []
},
expandRender: {
type: [String, Function],
default: null
},
expandedRowKeys: {
type: Array,
default: () => null
},
showRefresh: {
type: Boolean,
default: !0
},
persistence: {
type: [
Boolean,
String,
Object
],
default: !1
},
cardWrapper: {
type: Boolean,
default: !1
}
},
emits: [
"fetch",
"rowClick",
"cellSubmit"
],
setup(e, { emit: n, slots: i, expose: a }) {
let o = N(), c = N(), l = ie($n, () => {}), { copy: d } = Si({ legacy: !0 }), f = E(() => h(e.persistence)), p = E(() => {
if (!f.value.enabled) return null;
let { key: e } = f.value;
return e ? `table_${s(location.pathname + "_" + e)}` : `table_${s(location.href)}`;
}), g = E(() => {
let e = p.value;
return e ? u(e, { storage: f.value.storage }) : null;
}), v = g.value ? g.value.loadWithFallback("pagination", {}) : {}, y = me({
customColumns: [],
tableColumns: [],
editingData: {},
editingSwitchData: {},
filterableColumns: [],
sortableColumns: [],
temporary: {},
tableLoading: { loading: !1 },
customColumnVisible: !1,
columnKeyModal: [],
pagination: {
totalSize: 0,
currentPage: v.currentPage || 1,
pageSize: v.pageSize || e.pagination?.pageSize || 10
},
id: "",
tableSelection: [],
tableKeySelection: [],
items: [],
columnKey: {},
fetchQueue: [],
searchFormData: {}
}), b = () => {
g.value && g.value.save("pagination", { ...y.pagination });
}, x = () => {
y.columnKeyModal = [], Object.keys(y.columnKey).forEach((e) => {
y.columnKey[e] && y.columnKeyModal.push(e);
}), y.customColumnVisible = !0;
}, S = () => {
y.columnKeyModal = [];
}, C = () => {
S(), Object.keys(y.columnKey).forEach((e) => {
y.columnKeyModal.push(e);
});
}, w = (e, t) => {
y.tableKeySelection = [].concat(e), y.tableSelection = [].concat(t);
}, T = (e, t) => {
t.width = e;
}, ee = () => {
Object.keys(y.columnKey).forEach((e) => {
y.columnKey[e] = y.columnKeyModal.indexOf(e) > -1;
}), y.customColumnVisible = !1;
}, D = () => {
let t = {
...y.searchFormData,
...e.extraData
};
return e.pagination && (y.pagination.pageSize && (t[l.pageSizeKey] = y.pagination.pageSize), t[l.pageKey] = y.pagination.currentPage), t;
}, k = (e) => {
o.value && o.value?.setQueryForm(e);
}, A = async () => {
let n = {}, i = D(), a = (/* @__PURE__ */ new Date()).getTime();
y.fetchQueue.push(a);
let o = e.method;
o === "get" ? n = { params: i } : o === "post" && (n = { ...i });
let s = await r(y.tableLoading)[o](e.url, n);
t(s, () => {
if (!y.fetchQueue.length) return;
y.fetchQueue[y.fetchQueue.length - 1] === a && (y.fetchQueue = []), y.tableKeySelection = [], y.tableSelection = [];
let t = (e.afterFetched || l.afterFetched)(s);
e.pagination && (y.pagination.totalSize = t.totalSize), y.items = t.items;
});
}, te = async (t) => {
t === !0 && (y.pagination.currentPage = 1), e.url ? await A() : n("fetch"), b();
}, ne = (e) => {
let { persistence: t, ...n } = e || {};
y.searchFormData = n, te(!t);
}, re = (e) => e.key ? e.key : Dt(e.dataIndex) ? e.dataIndex.join(".") : e.dataIndex, j = (e) => {
let t = [];
return e && e.length && e.forEach((e) => {
let n = xt(e), r = re(n);
if (r && B(y.columnKey[r]) && (y.columnKey[r] = !0), !n.children) (r && y.columnKey[r] || !r) && t.push({
...n,
resizable: !0
});
else {
let e = j([].concat(n.children));
e.length && (n.children = e, (r && y.columnKey[r] || !r) && t.push(n));
}
}), t;
}, ae = (e) => {
let t = [];
return e && e.length && e.forEach((e) => {
let n = xt(e);
if (n.checkKey = re(n), !n.children) t.push(n);
else {
let e = ae(n.children);
delete n.children, t.push(n), t = t.concat(e);
}
}), t;
}, oe = E(() => {
let t;
return t = z(e.columns) ? e.columns() : e.columns.length ? e.columns : e.tableProps.columns, t.map((e) => (e.minWidth && (e.RC_TABLE_INTERNAL_COL_DEFINE = { style: { "min-width": `${e.minWidth}px` } }, e.width = e.minWidth), e.key = re(e), e));
}), ce = () => {
let e = oe.value.filter((e) => !e.isOnlyForQuery);
y.customColumns = ae([].concat(e)), y.tableColumns = j([].concat(e));
}, ue = () => {
y.filterableColumns = oe.value.filter((e) => e.filterable || e.isOnlyForQuery).map((e) => ({
title: e.title,
key: re(e),
options: e.options,
...e.filterable
})), y.sortableColumns = oe.value.filter((e) => e.sortable).map((e) => {
let t = {
title: e.title,
key: re(e)
};
return e.sortable === "asc" || e.sortable === "ASC" ? t.direction = "asc" : e.sortable === "desc" || e.sortable === "DESC" ? t.direction = "desc" : t = {
...t,
...e.sortable
}, t;
});
};
I(() => [oe, y.columnKey], (e, t) => {
ce(), (!t || !kt(e[0].value.map((e) => re(e)).toSorted(), t[0].value.map((e) => re(e)).toSorted())) && ue();
}, {
immediate: !0,
deep: !0
}), Se(() => {
e.pagination && c.value && c.value?.classList.add("pagination-adapt");
}), I(() => e.formData, (e, t) => {
kt(e, t) || (y.items = e);
});
let de = () => {
e.url ? (y.searchFormData = o.value?.getSearch(), se(() => A())) : (e.formData.length && (y.items = e.formData), e.dataSource.length && (y.items = e.dataSource), n("fetch"));
};
le(() => {
(!e.persistence || !e.filterable) && de();
}), a({
getData: () => [].concat(y.items),
setData: (e) => {
y.items = e;
},
setPagination: (e, t, n) => {
B(e) || (y.pagination.totalSize = e), B(t) || (y.pagination.currentPage = t), B(n) || (y.pagination.pageSize = n);
},
getPagination: () => y.pagination,
getSelection: () => [].concat(y.tableSelection),
getQueryData: D,
setQueryData: k,
doFetch: te,
setTableLoading: (e) => y.tableLoading.loading = e
});
let fe = () => i.title ? O("div", { class: "newbie-table-title-wrapper" }, [i.title()]) : e.title ? O("div", { class: "newbie-table-title-wrapper" }, [e.title]) : null, pe = () => i.prepend ? O("div", { class: "newbie-table-prepend-wrapper" }, [i.prepend()]) : null, he = () => e.filterable ? [O(Pu, {
ref: o,
persistence: e.persistence,
filterableColumns: y.filterableColumns,
sortableColumns: y.sortableColumns,
onSearch: ne
}, { ...e.searchSlots })] : null, ge = () => O("div", { class: "newbie-table-functional-wrapper" }, [O("div", { class: "newbie-table-functional" }, [i.functional ? i.functional() : null]), O("div", { class: "newbie-table-functional-default" }, [e.filterable ? O(L, {
type: "link",
style: { marginRight: "5px" },
onClick: x
}, { default: () => _("table.custom") }) : null, e.showRefresh ? O(L, {
class: "newbie-table-refresh",
icon: O(jn, null, null),
onClick: () => te(!1)
}, null) : null])]), _e = () => ({
bordered: !0,
size: "middle",
scroll: {
y: 570,
x: 1e3,
scrollToFirstRowOnChange: !0
},
rowClassName: (e, t) => t % 2 == 1 ? "newbie-table-striped" : null,
expandedRowRender: e.expandRender,
expandedRowKeys: e.expandedRowKeys,
rowKey: e.rowKey,
customRow: (t, r) => ({ onClick: (i) => {
y.editingData[t[e.rowKey]] || n("rowClick", {
record: t,
index: r,
event: i
});
} }),
...e.tableProps
}), P = () => {
let t = e.pagination ? Mt(e.pagination) ? xt(e.pagination) : {} : !1;
return Mt(t) && (t = {
size: "small",
showQuickJumper: !0,
showSizeChanger: !0,
showTotal: (e) => _("table.total", { total: e }),
pageSizeOptions: [
"10",
"30",
"50",
"100",
"300",
"500"
],
total: y.pagination.totalSize,
pageSize: y.pagination.pageSize,
current: y.pagination.currentPage,
"onUpdate:current": (e) => {
y.pagination.currentPage = e;
},
"onUpdate:pageSize": (e) => {
y.pagination.pageSize = e;
},
onChange: () => {
te(!1);
},
showSizeChange: () => {
te(!0);
},
...t
}), t;
}, ve = () => {
let t = e.rowSelection ? Mt(e.rowSelection) ? xt(e.rowSelection) : {} : null;
return Mt(t) && (t = {
selectedRowKeys: y.tableKeySelection,
preserveSelectedRowKeys: !0,
columnWidth: 40,
fixed: !0,
onChange: w,
...t
}), t;
}, ye = (t, n, r, i) => {
y.editingData[n[e.rowKey]] ? y.editingData[n[e.rowKey]][r] = i : y.editingData[n[e.rowKey]] = { [r]: i };
}, be = (t, n) => {
y.editingData[t[e.rowKey]] && delete y.editingData[t[e.rowKey]][n];
}, F = async (i, a, o) => {
if (!e.submitUrl && !e.beforeCellSubmit) return;
let s = null;
s = i.type === "switch" ? y.editingSwitchData[a[e.rowKey]][o] : y.editingData[a[e.rowKey]][o];
let c = {
[e.rowKey]: a[e.rowKey],
[o]: s
};
be(a, o), i.beforeCellSubmit ? (y.tableLoading.loading = !0, await i.beforeCellSubmit(c), y.tableLoading.loading = !1) : e.beforeCellSubmit ? (y.tableLoading.loading = !0, await e.beforeCellSubmit(c), y.tableLoading.loading = !1) : t(await r(y.tableLoading).post(e.submitUrl, c), () => {
R.success(m.global.t("common.save-success")), n("cellSubmit", {
record: a,
key: o,
value: s
});
});
}, xe = (t) => {
let { column: n, text: r, record: i } = t, a = n.editable;
n.editable === !0 && (a = { type: "input" });
let o = a.key || n.key, s = B(a.defaultValue) ? r : a.defaultValue, c = y.editingData[i[e.rowKey]] && !B(y.editingData[i[e.rowKey]][o]), l = c ? O("span", { class: "table-editable-icon editing" }, [O(Wt, {
class: "check-icon",
onClick: Ce(() => F(a, i, o), ["stop"])
}, null), O(Jt, {
class: "close-icon",
onClick: Ce(() => be(i, o), ["stop"])
}, null)]) : O("span", { class: "table-editable-icon" }, [O(rn, {
class: "edit-icon",
onClick: Ce(() => ye(a, i, o, s), ["stop"])
}, null)]), u = () => {
if (a.type === "input") return O(We, M({
value: y.editingData[i[e.rowKey]][o],
"onUpdate:value": (t) => y.editingData[i[e.rowKey]][o] = t,
style: { width: "100%" }
}, a.defaultProps), { ...a.defaultSlots });
if (a.type === "number") return O(Ge, M({
value: y.editingData[i[e.rowKey]][o],
"onUpdate:value": (t) => y.editingData[i[e.rowKey]][o] = t,
style: { width: "100%" }
}, a.defaultProps), { ...a.defaultSlots });
if (a.type === "select") return O(rt, M({
value: y.editingData[i[e.rowKey]][o],
"onUpdate:value": (t) => y.editingData[i[e.rowKey]][o] = t,
options: a.options,
style: { width: "100%" }
}, a.defaultProps), { ...a.defaultSlots });
};
if (a.type === "switch") {
let t = {
checkedChildren: () => a.options?.[0] || null,
unCheckedChildren: () => a.options?.[1] || null
};
return B(y.editingSwitchData[i[e.rowKey]]) && (y.editingSwitchData[i[e.rowKey]] = {}), B(y.editingSwitchData[i[e.rowKey]][o]) && (y.editingSwitchData[i[e.rowKey]][o] = s), O("div", { class: "table-editable-wrapper" }, [O("div", { class: "table-editable-text" }, [O(st, M({
checked: y.editingSwitchData[i[e.rowKey]][o],
"onUpdate:checked": (t) => y.editingSwitchData[i[e.rowKey]][o] = t,
onClick: (e, t) => t.stopPropagation(),
onChange: (e, t) => {
t.stopPropagation(), F(a, i, o);
}
}, a.defaultProps), Fu(t) ? t : { default: () => [t] })])]);
} else {
let e = null;
return e = c ? u() : n.customRender ? n.customRender(t) : r, O("div", { class: "table-editable-wrapper" }, [O("div", { class: "table-editable-text" }, [e]), l]);
}
}, we = () => O(ct, M({
rowSelection: ve(),
pagination: P(),
loading: y.tableLoading.loading,
dataSource: y.items,
columns: y.tableColumns,
onResizeColumn: T
}, _e()), {
headerCell: ({ column: t }) => {
let n = [O("span", null, [t.title]), t.tooltip ? z(t.tooltip) ? O(ht, null, {
default: () => O(mn, { style: { marginLeft: "5px" } }, null),
title: t.tooltip
}) : O(ht, { title: t.tooltip }, { default: () => O(mn, { style: { marginLeft: "5px" } }, null) }) : null], r = [];
return e.editable && t.editable && r.push(O("span", { class: "newbie-table-header-func" }, [_("table.editable")])), O("div", { class: `newbie-table-header-wrapper ${r?.length ? "with-func" : ""}` }, [O("div", { class: "newbie-table-header-title-wrapper" }, [n]), O("div", { class: "newbie-table-header-func-wrapper" }, [r])]);
},
bodyCell: ({ column: t, text: n, record: r, index: i }) => e.editable && t.editable ? xe({
column: t,
text: n,
record: r,
index: i
}) : t.customRender ? t.customRender({
column: t,
text: n,
record: r,
index: i
}) : t.onClick ? O("a", {
href: "javascript:void(0);",
onClick: Ce(() => t.onClick({
column: t,
text: n,
record: r,
index: i
}), ["stop"])
}, [n]) : t.onCopy ? O("span", {
class: "table-copy-wrapper",
onClick: Ce(() => {
t.onCopy === !0 ? d(n) : t.onCopy(d, {
column: t,
text: n,
record: r,
index: i
}), R.success(m.global.t("table.copy-success"));
}, ["stop"])
}, [O("span", { class: "table-copy-content" }, [n]), O(Qt, null, null)]) : O("span", null, [n]),
...e.tableSlots
}), Te = () => i.append || e.pagination ? O("div", { class: "newbie-table-footer" }, [O("div", { class: "newbie-table-append-wrapper" }, [i.append ? i.append() : null]), O("div", { class: "newbie-table-pagination-wrapper" }, null)]) : null;
return () => O("div", {
class: "newbie-table",
ref: c
}, [e.cardWrapper ? O(De, {
size: "small",
class: "newbie-table-card"
}, {
title: () => fe(),
extra: () => i.extra ? i.extra() : null,
default: () => [
pe(),
he(),
ge(),
we(),
Te()
]
}) : [
pe(),
he(),
O("div", { class: "newbie-table-content" }, [[
ge(),
we(),
Te()
]])
], O(Xe, {
open: y.customColumnVisible,
"onUpdate:open": (e) => y.customColumnVisible = e,
title: _("table.custom"),
width: "900px",
onOk: ee
}, { default: () => [
O(je, {
value: y.columnKeyModal,
"onUpdate:value": (e) => y.columnKeyModal = e,
style: { width: "100%" }
}, { default: () => O(nt, { gutter: 15 }, { default: () => y.customColumns.map((e) => O(Me, { span: 6 }, { default: () => O(Ae, {
style: {
width: "100%",
marginBottom: "5px",
overflow: "hidden"
},
value: e.checkKey
}, { default: () => e.title }) })) }) }),
O(Pe, null, null),
O(L, { onClick: C }, { default: () => _("table.select-all") }),
O(L, {
onClick: S,
style: { marginLeft: "5px" }
}, { default: () => _("table.unselect-all") })
] })]);
}
});
function Lu(e) {
return e ? (Dt(e) || (e = [e]), O("div", { class: "table-actions-wrapper" }, [e.map((e) => {
let t = { ...e.props }, { type: n } = e, { name: r } = e, i = null;
if ((!n || n === "button") && (i = zn, t.type = t.type || "text"), (n === "a-tag" || n === "tag") && (i = dt), n === "switch" && (i = st, e.name && (t.checkedChildren = e.name?.[0] || "", t.unCheckedChildren = e.name?.[1] || ""), t.checked = e.value, t.disabled = !0), e.action && (t.onClick = Ce(() => e.action(), ["stop"])), e.tooltip) {
let n = e.tooltip;
return O(ht, {
title: n,
transfer: !0
}, { default: () => O(i, t, { default: () => r }) });
}
if (e.children?.length) {
let n = e.children;
return O(Ie, {
placement: "bottom",
onClick: Ce(() => {}, ["stop"])
}, {
default: () => O(zn, M({
type: "text",
size: "small"
}, t), { default: () => [O(en, { style: { fontSize: "12px" } }, null), r] }),
overlay: () => O(Je, null, { default: () => n.map((e) => O(Ye, null, { default: () => O(zn, M({
type: "text",
style: { textAlign: "left" },
buttonProps: { block: !0 },
onClick: Ce(() => e.action(), ["stop"])
}, e.props), { default: () => e.name }) })) })
});
}
return O(i, t, { default: () => r });
})])) : null;
}
function Ru(e, t) {
return e ? (Dt(e) || (e = [e]), O(Re, { gap: "small" }, { default: () => e.map((e) => O(He, {
src: e.thumbUrl || e.url || e,
preview: { src: e.url || e.thumbUrl || e },
width: 48,
height: 48
}, null)) })) : O("span", { style: { fontSize: "30px" } }, [O(t || bn, null, null)]);
}
function zu(e, t) {
let { DefaultIcon: n, placeholder: r = "暂无内容", fileName: i } = t || {};
return e ? (Dt(e) || (e = [e]), e.map((t, r) => {
let a = t.url || t, o = i || t.name || (e.length > 1 ? `查看附件${r + 1}` : "查看附件");
return O("a", {
href: a,
style: { display: "block" },
target: "_blank"
}, [O("span", { style: { fontSize: "14px" } }, [
O(n || un, null, null),
D(" "),
o
])]);
})) : O("span", null, [r]);
}
//#endregion
//#region components/table/index.js
var Bu = Lu, Vu = Ru, Hu = zu, Uu = In(Iu);
//#endregion
//#region components/form/components/Group.jsx
function Wu(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Gu = (e, t, n, r) => {
let { t: i } = l();
Object.keys(n).length || (n.editFormRef = null, n.showEditModal = !1, n.editIndex = -1, n.editFormData = {});
let a = ye(n.editFormRef), { provider: o } = r, s = o.uploaderProvider, c = e.children;
z(e.children) && (c = e.children({ submitForm: t }));
let u = c.filter((e) => !e.invisible).map((e) => ({
dataIndex: e.key,
title: e.title,
width: e.width,
key: e.key,
item: e,
...e.cellProps
})), d = {
title: i("common.actions"),
dataIndex: "operations",
align: "center",
fixed: "right",
width: 120 + (e.childrenOperations?.length || 0) * 60
}, p = e.disabled || e.readonly ? [...u] : [...u, d], m = E(() => t[e.key] || []), h = (e, t) => {
if (e) n.editFormData = e, n.editIndex = t;
else {
let e = {};
c.forEach((t) => {
e[t.key] = sr(t, {}, {}, { uploaderProvider: s });
}), n.editFormData = e, n.editIndex = -1;
}
n.showEditModal = !0;
}, g = ({ formatForm: r }) => (n.editIndex === -1 ? t[e.key].push(r) : t[e.key][n.editIndex] = r, n.showEditModal = !1, !1), _ = () => new Promise((e) => {
a.value?.isDirty() ? Xe.confirm({
content: i("common.cancel-confirm"),
okText: i("common.confirm"),
cancelText: i("common.cancel"),
onOk: () => e(!0),
onCancel: () => e(!1)
}) : e(!0);
}), y = (n) => {
t[e.key].splice(n, 1);
};
return O("div", null, [O(ct, {
columns: p,
dataSource: m.value,
pagination: !1,
bordered: !0,
size: "small"
}, {
bodyCell: ({ column: n, record: r, index: a }) => {
if (n.item?.type === "select") {
let e = z(n.item?.options) ? n.item.options({
submitForm: t,
record: r
}) : n.item.options;
return e = e.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e), O("span", null, [v(r[n.item.key], e)]);
} else if (n.item?.type === "date") {
if (r[n.item.key]) {
let e = bt(r[n.item.key]);
return n.item?.defaultProps?.format ? O("span", null, [e.format(n.item.defaultProps.format)]) : n.item?.defaultProps?.showTime ? O("span", null, [e.format("YYYY-MM-DD HH:mm:ss")]) : O("span", null, [e.format("YYYY-MM-DD")]);
}
return null;
} else if (n.item?.type === "switch") {
let e = n.item.options || [i("common.yes"), i("common.no")];
return O(Ve, null, { default: () => [O(st, M({
checked: r[n.item.key],
"onUpdate:checked": (e) => r[n.item.key] = e,
disabled: !0,
checkedChildren: e[0],
unCheckedChildren: e[1]
}, n.item.defaultProps), null)] });
} else if (n.item?.type === "tree-select") {
let e = z(n.item?.options) ? n.item.options({
submitForm: t,
record: r
}) : n.item.options, i = xt(r[n.item.key]);
return Dt(i) || (i = [i]), O("span", null, [f(e, i, n.item?.defaultProps?.fieldNames || null).join(", ")]);
} else if (n.item?.type === "tag") return r[n.item.key]?.map((e) => O(dt, { color: "blue" }, Wu(e) ? e : { default: () => [e] }));
else if (n.item?.type === "uploader") return O("div", { class: "flex justify-center" }, [Vu(r[n.item.key])]);
else if (n.item?.type === "time" || n.item?.type === "date") {
let e = n.item?.defaultProps?.format || (n.item?.type === "time" ? "HH:mm:ss" : "YYYY-MM-DD");
return n.item?.defaultProps?.type === "range" ? O("span", null, [
bt(r[n.item.key][0]).format(e),
D(" -"),
" ",
bt(r[n.item.key][1]).format(e)
]) : r[n.item.key] ? O("span", null, [bt(r[n.item.key]).format(e)]) : O("span", null, null);
}
if (n.dataIndex === "operations") {
let t = [O(L, {
type: "text",
size: "small",
onClick: () => h(r, a)
}, { default: () => i("common.edit") })];
return e.childrenOperations?.forEach((e) => {
t.push(O(L, {
type: "text",
size: "small",
onClick: () => e.action({
column: n,
record: r,
index: a
})
}, { default: () => e.name }));
}), t.push(O(Ze, {
title: i("common.delete-confirm"),
onConfirm: () => y(a)
}, { default: () => O(L, {
type: "text",
size: "small"
}, { default: () => i("common.delete") }) })), O("div", { class: "table-actions-wrapper" }, [
D(" "),
t,
D(" ")
]);
}
},
summary: () => e.disabled || e.readonly ? null : O(ut, null, { default: () => O(lt, { colSpan: p.length }, { default: () => O(L, {
icon: O(xn, null, null),
block: !0,
onClick: () => h(!1)
}, { default: () => b(i("common.add"), e.title) }) }) })
}), O(Ui, {
visible: n.showEditModal,
"onUpdate:visible": (e) => n.showEditModal = e,
type: "drawer",
title: b(i("common.edit"), e.title),
beforeClose: _
}, { default: () => [O(ge("NewbieForm"), {
ref: a,
form: c,
closable: !1,
data: n.editFormData,
beforeSubmit: g,
onClose: async () => {
n.showEditModal = !await _();
}
}, null)] })]);
}, Ku = (e, t) => (t[e.key] = Number(t[e.key]) || 0, O(tt, M({
value: t[e.key],
"onUpdate:value": (n) => t[e.key] = n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, e.defaultProps), { ...e.defaultSlots })), qu = (e, t) => {
let n = z(e.rows) ? e.rows(t) : e.rows, r = z(e.options) ? e.options(t) : e.options;
return r = r.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e), O(ct, {
pagination: !1,
bordered: !0,
columns: [{
title: `${_("form.row-title")}\\${_("form.options")}`,
dataIndex: "row",
type: "title"
}].concat(r.map((e) => ({
title: e.label,
dataIndex: e.value,
align: "center",
type: "option"
}))),
dataSource: n,
size: "middle"
}, { bodyCell: ({ index: r, column: i }) => {
let a = n[r];
if (i.type === "title") return a;
if (i.type === "option") {
let n = `${i.dataIndex}`;
return O(Ve, null, { default: () => O($e, {
value: t[e.key][a],
"onUpdate:value": (n) => t[e.key][a] = n
}, { default: () => [O(Qe, {
value: n,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, null)] }) });
}
} });
}, Ju = (e, t) => {
let n = z(e.rows) ? e.rows(t) : e.rows, r = z(e.options) ? e.options(t) : e.options;
r = r.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e);
let i = [{
title: `${_("form.row-title")}\\${_("form.options")}`,
dataIndex: "row",
type: "title"
}].concat(r.map((e) => ({
title: e.label,
dataIndex: e.value,
align: "center",
type: "option"
}))), a = (n, r) => {
t[e.key][n] || (t[e.key][n] = []), t[e.key][n].includes(r) ? Rt(t[e.key][n], (e) => e === r) : t[e.key][n].push(r);
};
return O(ct, {
pagination: !1,
bordered: !0,
columns: i,
dataSource: n,
size: "middle"
}, { bodyCell: ({ index: r, column: i }) => {
let o = n[r];
if (i.type === "title") return o;
if (i.type === "option") {
let n = `${i.dataIndex}`;
return O(Ve, null, { default: () => O(Ae, {
id: `${o}_${n}`,
checked: t[e.key][o]?.includes(n),
onChange: () => a(o, n),
disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, null) });
}
} });
}, Yu = (e, t) => {
let n = z(e.rows) ? e.rows(t) : xt(e.rows), r = e.defaultProps?.level || 5, i = z(e.options) ? e.options(t) : e.options || [];
if (i = i.map((e) => Nt(e) || jt(e) ? {
value: e,
label: e
} : e), i.length > r) i = i.slice(0, r);
else if (i.length < r) for (let e = i.length; e < r; e += 1) i.push({
label: e + 1,
value: e + 1
});
let a = [{
title: `${_("form.row-title")}\\${_("form.options")}`,
dataIndex: "row",
type: "title"
}].concat(i.map((e) => ({
title: e.label,
dataIndex: e.value,
align: "center",
type: "option"
})));
if (n = n.map((e) => ({ row: e })), e.defaultProps?.showScale) {
let e = { row: _("form.scale") };
i.forEach((t, n) => e[t.value] = n + 1), n.unshift(e);
}
return O(ct, {
pagination: !1,
bordered: !0,
columns: a,
dataSource: n,
size: "middle"
}, { bodyCell: ({ index: r, column: i, record: o }) => {
if (r === 0 && e.defaultProps?.showScale) return O("span", { style: {
color: "orange",
fontWeight: "bold"
} }, [o[i.dataIndex]]);
if (i.type === "option") {
let { row: o } = n[r], s = Et(a, { dataIndex: i.dataIndex });
return O(Ve, null, { default: () => O($e, {
value: t[e.key][o],
"onUpdate:value": (n) => t[e.key][o] = n
}, { default: () => [O(Qe, {
value: s,
disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, null)] }) });
}
return o[i.dataIndex];
} });
};
//#endregion
//#region components/form/components/RateRadio.jsx
function Xu(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Zu = (e, t) => {
let n, r = z(e.options) ? e.options(t) : e.options;
return r = r.map((e) => {
if (Nt(e) || jt(e)) return {
value: e,
label: e,
rate: 0
};
if (Mt(e) && e.value) return B(e.label) && (e.label = e.value), B(e.rate) && (e.rate = 0), e;
}), e.readonly ? O("div", { style: { padding: "0 11px" } }, [O(dt, null, Xu(n = v(t[e.key].value, r)) ? n : { default: () => [n] })]) : O($e, M({
value: t[e.key].value,
"onUpdate:value": (n) => t[e.key].value = n,
optionType: "button",
buttonStyle: "solid",
disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
options: r,
style: e.style || {},
onChange: (n) => {
let { value: i } = n.target;
t[e.key].rate = Tt(r, { value: i })?.rate || 0;
}
}, e.defaultProps), { ...e.defaultSlots });
};
//#endregion
//#region components/form/components/RateCheckbox.jsx
function Qu(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var $u = (e, t) => {
let n = z(e.options) ? e.options(t) : e.options;
n = n.map((e) => {
if (Nt(e) || jt(e)) return {
value: e,
label: e,
rate: 0
};
if (Mt(e) && e.value) return B(e.label) && (e.label = e.value), B(e.rate) && (e.rate = 0), e;
});
let r = (n) => {
t[e.key] || (t[e.key] = []), t[e.key].filter((e) => e.value === n.value).length ? t[e.key] = t[e.key].filter((e) => e.value !== n.value) : t[e.key].push({
value: n.value,
rate: n.rate
});
};
return e.readonly ? O("div", { style: { padding: "0 11px" } }, [f(n, t[e.key].map((e) => e.value)).map((e) => O(dt, { style: { marginRight: "5px" } }, Qu(e) ? e : { default: () => [e] }))]) : O(Ve, null, { default: () => n.map((n) => {
let i = t[e.key].filter((e) => e.value === n.value).length > 0;
return O(Ae, {
id: n.value,
checked: i,
onChange: () => r(n),
disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, { default: () => n.label });
}) });
}, ed = (e, t) => O("span", {
style: e.style,
class: { ...e.class }
}, [z(e.defaultValue) ? e.defaultValue({ submitForm: t }) : e.defaultValue]), td = (e, t, n) => {
let r = e.children;
return O("div", {
style: {
display: "flex",
gap: "6px",
...e.style
},
class: { ...e.class }
}, [r.map((e) => _d(e, t, n))]);
}, nd = {
NUMBER: "NUMBER",
STRING: "STRING",
FIELD_REF: "FIELD_REF",
LPAREN: "LPAREN",
RPAREN: "RPAREN",
COMMA: "COMMA",
OPERATOR: "OPERATOR",
FUNCTION: "FUNCTION"
};
function rd(e) {
let t = [], n = 0;
for (; n < e.length;) {
let r = e[n];
if (/\s/.test(r)) {
n++;
continue;
}
if (r === "[") {
let r = e.indexOf("]", n);
if (r === -1) throw Error(`未闭合的字段引用,位置 ${n}`);
let i = e.slice(n + 1, r);
t.push({
type: nd.FIELD_REF,
value: i
}), n = r + 1;
continue;
}
if (r === "\"" || r === "'") {
let i = r, a = "";
for (n++; n < e.length && e[n] !== i;) e[n] === "\\" && n++, a += e[n], n++;
if (n >= e.length) throw Error("未闭合的字符串字面量");
t.push({
type: nd.STRING,
value: a
}), n++;
continue;
}
if (/\d/.test(r) || r === "-" && n + 1 < e.length && /\d/.test(e[n + 1])) {
let i = "";
if (r === "-") {
let e = t[t.length - 1];
if (e && e.type !== nd.OPERATOR && e.type !== nd.LPAREN && e.type !== nd.COMMA) {
t.push({
type: nd.OPERATOR,
value: "-"
}), n++;
continue;
}
}
for (; n < e.length && /[\d.]/.test(e[n]);) i += e[n], n++;
t.push({
type: nd.NUMBER,
value: parseFloat(i)
});
continue;
}
if (r === "(") {
t.push({
type: nd.LPAREN,
value: "("
}), n++;
continue;
}
if (r === ")") {
t.push({
type: nd.RPAREN,
value: ")"
}), n++;
continue;
}
if (r === ",") {
t.push({
type: nd.COMMA,
value: ","
}), n++;
continue;
}
if (/[+\-*/%><=!]/.test(r)) {
let i = r;
n + 1 < e.length && /[=]/.test(e[n + 1]) && (i += e[n + 1], n++), t.push({
type: nd.OPERATOR,
value: i
}), n++;
continue;
}
if (/[a-zA-Z_]/.test(r)) {
let r = "";
for (; n < e.length && /[a-zA-Z0-9_]/.test(e[n]);) r += e[n], n++;
let i = n;
for (; i < e.length && /\s/.test(e[i]);) i++;
i < e.length && e[i] === "(" ? t.push({
type: nd.FUNCTION,
value: r.toUpperCase()
}) : t.push({
type: nd.FIELD_REF,
value: r
});
continue;
}
throw Error(`未知字符: '${r}',位置 ${n}`);
}
return t;
}
var id = {
NumberLiteral: "NumberLiteral",
StringLiteral: "StringLiteral",
FieldRef: "FieldRef",
BinaryOp: "BinaryOp",
UnaryOp: "UnaryOp",
FunctionCall: "FunctionCall"
};
function ad(e) {
let t = 0, n = {
"+": 10,
"-": 10,
"*": 20,
"/": 20,
"%": 20,
"==": 5,
"!=": 5,
">": 5,
"<": 5,
">=": 5,
"<=": 5
};
function r() {
return e[t];
}
function i() {
return e[t++];
}
function a(s = 0) {
let c = o();
for (; t < e.length && r().type === nd.OPERATOR && n[r().value] >= s;) {
let e = i().value, t = a(n[e] + 1);
c = {
type: id.BinaryOp,
operator: e,
left: c,
right: t
};
}
return c;
}
function o() {
let e = r();
if (!e) throw Error("意外的表达式结尾");
switch (e.type) {
case nd.NUMBER: return i(), {
type: id.NumberLiteral,
value: e.value
};
case nd.STRING: return i(), {
type: id.StringLiteral,
value: e.value
};
case nd.FIELD_REF: return i(), {
type: id.FieldRef,
name: e.value
};
case nd.LPAREN:
i();
let t = a();
if (!r() || r().type !== nd.RPAREN) throw Error("缺少右括号");
return i(), t;
case nd.FUNCTION: return s();
default: throw Error(`意外的 token: ${e.value}`);
}
}
function s() {
let e = i().value;
if (!r() || r().type !== nd.LPAREN) throw Error(`函数 ${e} 后期望有左括号`);
i();
let t = [];
if (r() && r().type === nd.RPAREN) return i(), {
type: id.FunctionCall,
name: e,
args: t
};
for (t.push(a()); r() && r().type === nd.COMMA;) i(), t.push(a());
if (!r() || r().type !== nd.RPAREN) throw Error(`函数 ${e} 缺少右括号`);
return i(), {
type: id.FunctionCall,
name: e,
args: t
};
}
if (e.length === 0) throw Error("空的公式表达式");
let c = a();
if (t < e.length) throw Error(`未解析的 token: ${e[t].value}`);
return c;
}
function od(e, t = {}) {
if (!e) return null;
switch (e.type) {
case id.NumberLiteral: return e.value;
case id.StringLiteral: return e.value;
case id.FieldRef: return t[e.name] ?? null;
case id.BinaryOp: return sd(e.operator, e.left, e.right, t);
case id.FunctionCall: return cd(e.name, e.args, t);
default: throw Error(`未知的 AST 节点类型: ${e.type}`);
}
}
function sd(e, t, n, r) {
let i = od(t, r), a = od(n, r), o = Q(i), s = Q(a), c = ud(i), l = ud(a);
switch (e) {
case "+": return typeof i == "string" || typeof a == "string" ? c + l : o + s;
case "-": return o - s;
case "*": return o * s;
case "/": return s === 0 ? { error: "除零错误" } : o / s;
case "%": return s === 0 ? { error: "除零错误" } : o % s;
case "==": return +!!ld(i, a);
case "!=": return +!ld(i, a);
case ">": return +(o > s);
case "<": return +(o < s);
case ">=": return +(o >= s);
case "<=": return +(o <= s);
default: throw Error(`未知的运算符: ${e}`);
}
}
function cd(e, t, n) {
let r = t.map((e) => od(e, n));
switch (e) {
case "IF": return r.length < 3 ? { error: "IF 函数需要 3 个参数" } : Q(r[0]) ? r[1] : r[2];
case "SUM": return r.reduce((e, t) => e + Q(t), 0);
case "AVG": return r.length === 0 ? { error: "AVG 函数至少需要 1 个参数" } : r.reduce((e, t) => e + Q(t), 0) / r.length;
case "MAX": return Math.max(...r.map(Q));
case "MIN": return Math.min(...r.map(Q));
case "ABS": return r.length === 1 ? Math.abs(Q(r[0])) : { error: "ABS 函数需要 1 个参数" };
case "ROUND":
if (r.length < 1) return { error: "ROUND 函数至少需要 1 个参数" };
let t = 10 ** (r.length > 1 ? Q(r[1]) : 0);
return Math.round(Q(r[0]) * t) / t;
case "COUNT": return r.filter((e) => e != null).length;
case "PERCENT":
if (r.length < 2) return { error: "PERCENT 函数需要 2 个参数" };
let n = Q(r[1]);
return n === 0 ? { error: "PERCENT 函数除零错误" } : Q(r[0]) / n * 100;
case "CONCAT": return r.map(ud).join("");
case "LEN": return r.length === 1 ? ud(r[0]).length : { error: "LEN 函数需要 1 个参数" };
case "UPPER": return r.length === 1 ? ud(r[0]).toUpperCase() : { error: "UPPER 函数需要 1 个参数" };
case "LOWER": return r.length === 1 ? ud(r[0]).toLowerCase() : { error: "LOWER 函数需要 1 个参数" };
case "MOD":
if (r.length < 2) return { error: "MOD 函数需要 2 个参数" };
let i = Q(r[1]);
return i === 0 ? { error: "MOD 函数除零错误" } : Q(r[0]) % i;
case "POWER": return r.length < 2 ? { error: "POWER 函数需要 2 个参数" } : Q(r[0]) ** +Q(r[1]);
case "SQRT":
if (r.length !== 1) return { error: "SQRT 函数需要 1 个参数" };
let a = Q(r[0]);
return a < 0 ? { error: "SQRT 函数参数不能为负数" } : Math.sqrt(a);
case "AND": return r.length === 0 ? { error: "AND 函数至少需要 1 个参数" } : +!!r.every((e) => Q(e) !== 0);
case "OR": return r.length === 0 ? { error: "OR 函数至少需要 1 个参数" } : +!!r.some((e) => Q(e) !== 0);
case "NOT": return r.length === 1 ? +(Q(r[0]) === 0) : { error: "NOT 函数需要 1 个参数" };
case "XOR": return r.length < 2 ? { error: "XOR 函数至少需要 2 个参数" } : +(r.filter((e) => Q(e) !== 0).length % 2 == 1);
case "TODAY": return (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
case "NOW": return (/* @__PURE__ */ new Date()).toISOString();
case "DATE":
if (r.length < 3) return { error: "DATE 函数需要 3 个参数 (年, 月, 日)" };
let o = Q(r[0]), s = Q(r[1]), c = Q(r[2]), l = new Date(o, s - 1, c);
return isNaN(l.getTime()) ? { error: "DATE 函数参数无效" } : l.toISOString().slice(0, 10);
case "YEAR": return r.length === 1 ? dd(r[0]).getFullYear() : { error: "YEAR 函数需要 1 个参数" };
case "MONTH": return r.length === 1 ? dd(r[0]).getMonth() + 1 : { error: "MONTH 函数需要 1 个参数" };
case "DAY": return r.length === 1 ? dd(r[0]).getDate() : { error: "DAY 函数需要 1 个参数" };
case "HOUR": return r.length === 1 ? dd(r[0]).getHours() : { error: "HOUR 函数需要 1 个参数" };
case "MINUTE": return r.length === 1 ? dd(r[0]).getMinutes() : { error: "MINUTE 函数需要 1 个参数" };
case "DATEDIF":
if (r.length < 3) return { error: "DATEDIF 函数需要 3 个参数 (开始日期, 结束日期, 单位)" };
let u = dd(r[0]), d = dd(r[1]), f = ud(r[2]).toUpperCase(), p = d - u;
if (isNaN(p)) return { error: "DATEDIF 函数日期参数无效" };
switch (f) {
case "Y": return d.getFullYear() - u.getFullYear();
case "M": return (d.getFullYear() - u.getFullYear()) * 12 + (d.getMonth() - u.getMonth());
case "D": return Math.floor(p / (1e3 * 60 * 60 * 24));
default: return { error: "DATEDIF 单位应为 \"Y\"、\"M\" 或 \"D\"" };
}
default: return { error: `未知函数: ${e}` };
}
}
function ld(e, t) {
let n = e == null || e === "", r = t == null || t === "";
if (n && r) return !0;
if (n || r) return !1;
let i = Number(e), a = Number(t);
return !isNaN(i) && !isNaN(a) ? i === a : String(e) === String(t);
}
function Q(e) {
if (e == null || e === "") return 0;
if (typeof e == "number") return e;
if (typeof e == "boolean") return +!!e;
let t = Number(e);
return isNaN(t) ? 0 : t;
}
function ud(e) {
return e == null ? "" : String(e);
}
function dd(e) {
if (e instanceof Date) return e;
if (typeof e == "number") return new Date(e);
if (typeof e == "string") {
let t = new Date(e);
if (!isNaN(t.getTime())) return t;
let n = e.match(/(\d{4})[年/-](\d{1,2})[月/-](\d{1,2})/);
if (n) return new Date(Number(n[1]), Number(n[2]) - 1, Number(n[3]));
}
return /* @__PURE__ */ new Date(NaN);
}
var fd = /* @__PURE__ */ new Map();
function pd(e) {
let t = /* @__PURE__ */ new Set();
if (!e) return t;
switch (e.type) {
case id.FieldRef:
t.add(e.name);
break;
case id.BinaryOp:
pd(e.left).forEach((e) => t.add(e)), pd(e.right).forEach((e) => t.add(e));
break;
case id.FunctionCall:
e.args.forEach((e) => pd(e).forEach((e) => t.add(e)));
break;
default: break;
}
return t;
}
function md(e, t) {
if (!e || !t) return !1;
try {
let n = fd.get(e);
return n || (n = ad(rd(e)), fd.set(e, n)), pd(n).has(t);
} catch {
return !1;
}
}
function hd(e, t = {}) {
try {
let n = fd.get(e);
n || (n = ad(rd(e)), fd.set(e, n));
let r = od(n, t);
return r && typeof r == "object" && r.error, r;
} catch (e) {
return { error: e.message };
}
}
//#endregion
//#region components/form/components/ComputedField.jsx
var gd = (e, t) => {
let { formula: n } = e, r = !n || !n.trim(), i = "", a = !1, o = {};
if (e.defaultProps && (e.defaultProps.prefix && (o.prefix = () => z(e.defaultProps.prefix) ? e.defaultProps.prefix() : e.defaultProps.prefix), e.defaultProps.suffix && (o.suffix = () => z(e.defaultProps.suffix) ? e.defaultProps.suffix() : e.defaultProps.suffix), e.defaultProps.prepend && (o.addonBefore = () => z(e.defaultProps.prepend) ? e.defaultProps.prepend() : e.defaultProps.prepend), e.defaultProps.append && (o.addonAfter = () => z(e.defaultProps.append) ? e.defaultProps.append() : e.defaultProps.append)), r) i = "暂未设置计算公式";
else {
let e = hd(n, t);
e && typeof e == "object" && e.error ? (i = e.error, a = !0) : (i = e === "" || e == null ? "—" : String(e), a = !1);
}
return O(We, M({
value: i,
placeholder: lr(e),
style: { ...e.style },
status: a ? "error" : "",
class: {
readonly: !0,
...e.class
}
}, e.defaultProps), {
...o,
...e.defaultSlots
});
}, _d = (e, t, { props: n, slots: r, formState: i }) => {
let { t: a } = l(), o = ie(er, () => ({})), s = ie(tr, () => ({}));
B(t[e.key]) && e.key && (t[e.key] = sr(e, {}, t, {
formProvider: s,
uploaderProvider: o
}));
let c = null, u = e.rules?.length ? e.rules.map((e) => e.pattern ? {
...e,
pattern: new RegExp(e.pattern)
} : { ...e }) : [], d = {
required: !0,
message: e.requiredMessage || lr(e, "select")
};
e.type = e.type ? e.type.toLowerCase() : e.type;
let f = z(e.required) ? e.required(t) : e.required;
if (e.readonly = e.readonly || n.readonly, e.disabled = e.disabled || n.disabled || n.readonly || e.readonly, (e.readonly || e.disabled) && (e.placeholder = "--"), e.visible === !1 || z(e.hidden) && e.hidden(t) || Ot(e.hidden) && e.hidden) return null;
if (e.type === "slot" && r[e.key]) return r[e.key]({
submitForm: t,
item: e
});
if (e.customRender) {
if (c = e.customRender({
submitForm: t,
item: e
}), !c) return null;
} else if (e.match) return _d({
...e,
...e.match(t),
match: null
}, t, {
props: n,
slots: r
});
else switch (e.type) {
case "select":
c = hr(e, t);
break;
case "remote":
c = _r(e, t, i[e.key]);
break;
case "tree-select":
c = gr(e, t);
break;
case "date":
c = ur(e, t);
break;
case "time":
c = dr(e, t);
break;
case "switch":
c = Sr(e, t);
break;
case "radio":
c = wr(e, t);
break;
case "checkbox":
c = Er(e, t), d.type = "array";
break;
case "tag":
c = mr(e, t, i[e.key]), d.type = "array";
break;
case "address":
c = vr(e, t), d.type = "array";
break;
case "cascade":
c = yr(e, t), d.type = "array";
break;
case "number":
c = br(e, t), d.trigger = "blur", d.type = "number", d.message = e.requiredMessage || lr(e);
break;
case "html":
c = Dr(e, t);
break;
case "uploader":
if (c = jr(e, t), f) {
if (!Object.keys(o).length) {
console.error("Please inject NEWBIE_UPLOADER config in root component"), c = null;
break;
}
e.defaultProps?.maxNum && e.defaultProps?.maxNum > 1 ? (d.type = "array", d.message = e.requiredMessage || lr(e, "upload")) : (d.type = "object", d.message = e.requiredMessage || lr(e, "upload"), d.fields = { [o.defaultFileItem.path]: {
type: "string",
required: !0,
message: lr(e, "upload")
} });
}
break;
case "editor":
c = Mr(e, t), d.message = e.requiredMessage || lr(e), d.type = "string";
break;
case "text":
c = Nr(e, t);
break;
case "plain":
c = ed(e, t);
break;
case "group":
c = Gu(e, t, i[e.key], { provider: { uploaderProvider: o } });
break;
case "rate":
c = Ku(e, t);
break;
case "matrix-radio": {
c = qu(e, t), d.type = "object", d.message = e.requiredMessage || lr(e, "select");
let n = {};
e.rows.forEach((e) => {
n[e] = {
required: !0,
message: a("form.please-select", { title: e })
};
}), d.fields = n;
break;
}
case "matrix-checkbox": {
c = Ju(e, t), d.type = "object", d.message = e.requiredMessage || lr(e, "select");
let n = {};
e.rows.forEach((e) => {
n[e] = {
required: !0,
type: "array",
message: a("form.please-select", { title: e })
};
}), d.fields = n;
break;
}
case "matrix-scale": {
c = Yu(e, t), d.type = "object", d.message = e.requiredMessage || lr(e, "select");
let n = {};
e.rows.forEach((e) => {
n[e] = {
type: "number",
required: !0,
message: a("form.please-select", { title: e })
};
}), d.fields = n;
break;
}
case "rate-radio":
c = Zu(e, t);
break;
case "rate-checkbox":
c = $u(e, t), d.type = "array";
break;
case "combiner":
c = td(e, t, {
props: n,
slots: r
});
break;
case "computed":
c = gd(e, t, {
props: n,
slots: r
});
break;
default:
c = fr(e, t), d.message = e.requiredMessage || lr(e), d.trigger = "blur", d.type = "string";
break;
}
f && (u.length ? u[0].required = !0 : u.push(d));
let p = {
label: e.title,
name: e.key,
validateFirst: !0,
required: f,
hasFeedback: u?.length > 0,
rules: u
};
p = {
...p,
...e.formItemProps
};
let m = e.formItemSlots || {};
e.help && (m.extra = () => O("div", { class: "newbie-form__form-item-help" }, [z(e.help) ? e.help(t) : e.help])), m.label && delete p.label;
let h = null;
return e.optional && !e.readonly && (B(e.optionalValue) && (e.optionalValue = N(cr(e, t))), h = O("div", { class: "newbie-form__optional" }, [O(Ve, null, { default: () => [O(st, {
checked: e.optionalValue.value,
"onUpdate:checked": (t) => e.optionalValue.value = t,
checkedChildren: e.optional?.[0] || "",
unCheckedChildren: e.optional?.[1] || "",
onChange: (n) => !n && (t[e.key] = null)
}, null)] }), O("div", { class: "newbie-form__optional-content" }, [e.optionalValue.value ? c : !1])])), O(Be, p, {
default: () => e.optional && !e.readonly ? h : c,
...m
});
};
//#endregion
//#region components/form/components/Layout.jsx
function vd(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var yd = (e, t, n, r) => {
let { props: i, slots: a, formState: o, fieldVisibility: s } = r, c = (e) => _d({
...e,
visible: s ? s[e.key] !== !1 : !0
}, t, r), l = [], u = [];
e.filter((e) => e.type !== "computed").forEach((e) => {
e.columnIndex === "fixed" ? l.push(e) : ((e.break || !u.length) && u.push([]), u[u.length - 1].push(e));
});
let d = i.columns;
if ((!d || !Dt(d) || !d.length) && (d = [24]), zt(d) !== 24) return console.error("NewbieForm columns must sum up to 24"), null;
let f = u.map(() => d.map(() => []));
u.forEach((e, t) => {
e.forEach((e) => {
let n = e.columnIndex || 0;
n = jt(n) ? Math.min(n, i.columns.length - 1) : n;
let r = 0;
if (Dt(n)) {
for (let e = n[0]; e <= n[1] && d[e]; e++) r += d[e], e !== n[0] && f[t][e].push("placeholder");
e.span = r, e.formItemProps = {
labelCol: { span: (i.formProps.labelCol?.span || 6) / (n[n.length - 1] - n[0] + 1) },
...e.formItemProps
}, f[t][n[0]].push(e);
} else jt(n) && (e.span = d[n], f[t][n].push(e));
});
});
let p = l.map((e) => c(e)), m = [], h = (e) => {
let t = document.getElementById(`collapse_${e.key}`);
o[e.key].isCollapse ? t.style.height = `${t.scrollHeight}px` : (t.style.height || (t.style.height = `${t.scrollHeight}px`), setTimeout(() => t.style.height = "0px")), se(() => {
o[e.key].isCollapse = !o[e.key].isCollapse;
});
};
f.forEach((e, t) => {
let n = Math.max(...e.map((e) => e.length)), r = [], a = null;
for (let e = 0; e < n; e++) {
let n = 0, i = [];
for (let r = 0; r < f[t].length; r++) {
let o, s = f[t][r][e];
if (!s) {
n += d[r];
continue;
}
s.break && (a = s), s !== "placeholder" && (i.push(O(Me, {
span: s.span,
offset: n
}, vd(o = c(s)) ? o : { default: () => [o] })), n = 0);
}
r.push(O(nt, { gutter: 16 }, vd(i) ? i : { default: () => [i] }));
}
if (a) {
if (i.breakMode === "divider") r.unshift(O(Pe, i.dividerProps, { default: () => Nt(a.break) ? a.break : "" })), m = m.concat(r);
else if (i.breakMode === "collapse") {
B(o[a.key].isCollapse) && (o[a.key].isCollapse = !!t);
let e = O("div", { class: "newbie-form__collapse-wrapper" }, [O("div", {
class: "newbie-form__collapse-header",
onClick: () => h(a)
}, [O("span", { class: `newbie-form__collapse-icon ${o[a.key].isCollapse ? "" : "open"}` }, [O(Sn, null, null)]), O("span", { class: "newbie-form__collapse-title" }, [a.break])]), O("div", {
class: `newbie-form__collapse-content-wrapper ${o[a.key].isCollapse ? "collapse" : ""}`,
id: `collapse_${a.key}`
}, [O("div", { class: "newbie-form__collapse-content" }, [r])])]);
m = m.concat(e);
}
} else m = m.concat(r);
});
let g = () => a.footer ? O("div", { class: "newbie-form__footer" }, [a.footer()]) : null, _;
if (p.length) {
let e = i.disabled || i.readonly || i.hideButtons ? null : O("div", { class: "newbie-form__submit-wrapper" }, [O(Pe, null, null), O(nt, null, { default: () => [O(Me, {
span: 24,
offset: 2
}, { default: () => n })] })]);
_ = O(nt, { gutter: 16 }, { default: () => [O(Me, { span: 24 - i.fixedColumns }, { default: () => m }), O(Me, { span: i.fixedColumns }, { default: () => [O(we, { offsetTop: 20 }, { default: () => [O(De, { style: { marginLeft: "20px" } }, { default: () => [
p,
g(),
e
] })] })] })] });
} else {
let e = i.disabled || i.readonly || i.hideButtons ? null : O("div", { class: "newbie-form__submit-wrapper" }, [O(Pe, null, null), O(nt, { gutter: 16 }, { default: () => [O(Me, { offset: i.closable ? 9 : 10 }, { default: () => n })] })]);
_ = [
m,
g(),
e
];
}
return _;
}, bd = {
equals: (e, t) => e == t,
notEquals: (e, t) => e != t,
isEmpty: (e) => e == null || e === "",
isNotEmpty: (e) => e != null && e !== "",
gt: (e, t) => Number(e) > Number(t),
lt: (e, t) => Number(e) < Number(t),
gte: (e, t) => Number(e) >= Number(t),
lte: (e, t) => Number(e) <= Number(t),
contains: (e, t) => String(e).includes(t),
notContains: (e, t) => !String(e).includes(t),
startsWith: (e, t) => String(e).startsWith(t),
endsWith: (e, t) => String(e).endsWith(t),
in: (e, t) => Array.isArray(e) && e.includes(t),
notIn: (e, t) => !Array.isArray(e) || !e.includes(t)
};
function xd(e, t = {}) {
if (!e || !e.conditions || e.conditions.length === 0) return !1;
let { conditions: n, logicGate: r = "and" } = e, i = n.map((e) => {
let { field: n, operator: r, value: i } = e, a = t[n], o = bd[r];
return o ? r === "isEmpty" || r === "isNotEmpty" ? o(a) : o(a, i) : (console.warn(`未知操作符: ${r}`), !1);
});
return (r || "and").toLowerCase() === "and" ? i.every((e) => e) : i.some((e) => e);
}
function Sd(e = [], t = {}) {
let n = {};
if (!e || e.length === 0) return n;
let r = /* @__PURE__ */ new Set();
return e.forEach((e) => {
e.targetField && r.add(e.targetField);
}), r.forEach((r) => {
let i = e.filter((e) => e.targetField === r), a = !0, o = i.some((e) => e.action === "show" && xd(e, t)), s = i.some((e) => e.action === "hide" && xd(e, t));
o ? a = !0 : s && (a = !1), n[r] = a;
}), n;
}
//#endregion
//#region components/form/utils/normalize-form-config.js
function Cd(e) {
return e ? Array.isArray(e) ? {
fields: e,
logic: { rules: [] }
} : {
fields: e.fields || [],
logic: { rules: (e.logic || { rules: [] }).rules || [] }
} : {
fields: [],
logic: { rules: [] }
};
}
//#endregion
//#region components/form/NewbieForm.jsx
var wd = /* @__PURE__ */ A({
name: "NewbieForm",
props: {
title: {
type: String,
default: ""
},
data: {
type: [Object, String],
default: ""
},
autoLoad: {
type: [
Boolean,
Array,
String
],
default: !0
},
fetchUrl: {
type: String,
default: ""
},
extraData: {
type: Object,
default: () => ({})
},
submitUrl: {
type: String,
default: ""
},
submitButtonText: {
type: String,
default: ""
},
submitConfirmText: {
type: String,
default: ""
},
closable: {
type: Boolean,
default: !0
},
closeButtonText: {
type: String,
default: ""
},
closeButtonFirst: {
type: Boolean,
default: !1
},
hideButtons: {
type: Boolean,
default: !1
},
disabled: {
type: Boolean,
default: !1
},
readonly: {
type: Boolean,
default: !1
},
submitDisabled: {
type: Boolean,
default: !1
},
breakMode: {
type: String,
default: "divider"
},
dividerProps: {
type: Object,
default: () => ({})
},
columns: {
type: Array,
default: () => [24]
},
fixedColumns: {
type: Number,
default: 6
},
cardWrapper: {
type: Boolean,
default: !0
},
cardProps: {
type: Object,
default: () => {}
},
cardSlots: {
type: Object,
default: () => {}
},
form: {
type: [Array, Function],
default() {
return [];
}
},
afterFetched: {
type: Function,
default: null
},
beforeSubmit: {
type: Function,
default: null
},
close: {
type: Function,
default: null
},
afterSubmit: {
type: Function,
default: null
},
formProps: {
type: Object,
default: () => ({})
}
},
emits: ["success"],
setup(e, { expose: n, slots: i, emit: a }) {
let { t: o, locale: s } = l(), c = N(null), u = me({
temporary: {},
submitFetcher: { loading: !1 },
isInitializing: !0,
submitForm: {},
submitFormBackup: {}
}), f = ie(er, () => ({})), p = ie(tr, () => ({})), m = {}, h = E(() => Cd(typeof e.form == "function" ? e.form() : e.form)), g = E(() => h.value.fields.map((e) => (e.type ||= "input", p?.columns?.[e.type] && (e = {
...p.columns[e.type],
...e
}), m[e.key] || (m[e.key] = me({})), e))), _ = E(() => {
let e = h.value.logic.rules;
return e.length ? Sd(e, u.submitForm) : {};
});
I(() => u.submitForm, () => {
h.value.fields.forEach((e) => {
if (e.type === "computed" && e.formula) {
let t = hd(e.formula, u.submitForm);
t && typeof t == "object" && t.error || (u.submitForm[e.key] = t);
}
});
}, { deep: !0 }), I(() => e.data, (e) => {
y(e || "");
}), I(_, (e) => {
if (Object.keys(e).length !== 0) for (let t of Object.keys(e)) e[t] || (u.submitForm[t] = null);
}, { deep: !0 });
let v = () => {
u.isInitializing = !1, y(e.data || "");
};
le(() => {
let t = !1;
e.autoLoad && e.fetchUrl && (t = !0, e.autoLoad && Mt(e.autoLoad) ? t = wt(Object.values(It(e.extraData, Object.keys(e.autoLoad)))) : e.autoLoad && Nt(e.autoLoad) && (t = !!e.extraData[e.autoLoad])), t ? x() : v();
});
let y = (e) => {
let t = {}, n = e ? xt(e) : !1;
g.value.forEach((e) => {
e.type === "combiner" ? e.children.forEach((e) => {
t[e.key] = sr(e, n, u.submitForm, { uploaderProvider: f });
}) : t[e.key] = sr(e, n, u.submitForm, { uploaderProvider: f });
}), n && (t = {
...n,
...t
}), u.submitForm = t, u.submitFormBackup = xt(t);
}, x = () => {
e.fetchUrl && (u.isInitializing = !0, r().get(e.fetchUrl, { params: e.extraData }).then((n) => {
u.isInitializing = !1, t(n, () => {
e.afterFetched && z(e.afterFetched) ? n = e.afterFetched(n) : p.afterFetched && z(p.afterFetched) && (n = p.afterFetched(n)), y(n);
});
}).finally(() => {
u.isInitializing = !1;
}));
}, C = () => new Promise((n, i) => {
c.value.validate().then(async () => {
let i = xt(u.submitForm), c = g.value.map((e) => e.match ? {
...e,
...e.match(i)
} : e).filter((e) => e.beforeSubmit && z(e.beforeSubmit));
for (let e of c) i[e.key] = await e.beforeSubmit({
value: i[e.key],
submitForm: i
});
if (i = d(i, p.format || {}), e.beforeSubmit && z(e.beforeSubmit) && (i = await e.beforeSubmit({
formatForm: i,
originalForm: u.submitForm
}), i === !1)) return n();
let l = await r(u.submitFetcher).post(e.submitUrl, i);
return u.submitFormBackup = xt(u.submitForm), e.afterSubmit ? e.afterSubmit(l) : t(l, () => {
R.success(b(e.submitButtonText || o("common.save"), o("common.success"), { locale: s })), a("success", l);
}), n();
}).catch((e) => (S(e), i(e)));
}), w = (e) => {
u.isInitializing = e;
}, T = () => {
c.value.resetFields();
}, ee = () => xt(u.submitForm);
n({
submit: C,
getForm: ee,
getFormStandalone: ee,
getFormRealtime: () => u.submitForm,
getField: (e) => xt(u.submitForm[e]),
setForm: (e) => {
Object.keys(e).forEach((t) => {
u.submitForm[t] = e[t];
});
},
reset: T,
isDirty: () => !kt(u.submitForm, u.submitFormBackup),
isInitializing: w
});
let D = () => {
let t = () => O(L, {
loading: u.submitFetcher.loading,
type: "primary",
htmlType: "submit",
disabled: e.submitDisabled,
onClick: () => {
e.submitConfirmText ? Xe.confirm({
content: e.submitConfirmText,
onOk() {
C();
}
}) : C();
}
}, { default: () => `${e.submitButtonText || o("common.save")}${u.submitFetcher.loading ? "..." : ""}` }), n = () => O(L, {
type: "default",
onClick: () => {
e.close && z(e.close) && e.close();
}
}, { default: () => e.closeButtonText || o("common.close") });
return O(at, { size: "large" }, { default: () => e.closeButtonFirst ? [e.closable ? n() : null, t()] : [t(), e.closable ? n() : null] });
}, k = () => yd(g.value, u.submitForm, D(), {
props: e,
slots: i,
formState: m,
fieldVisibility: _
}), A = () => O(ze, M({
model: u.submitForm,
ref: c,
class: "newbie-form",
labelCol: { span: 6 },
scrollToFirstError: !0
}, e.formProps), { default: () => [k()] }), te = () => O(it, {
active: !0,
paragraph: { rows: 10 },
loading: u.isInitializing
}, { default: () => [
i.prepend?.(),
A(),
i.append?.()
] });
return () => O("div", { class: "newbie-form-wrapper" }, [e.cardWrapper ? O(De, M(e.cardProps, { title: e.title }), {
default: () => te(),
...e.cardSlots
}) : te()]);
}
}), Td = In(wd), Ed = In(/* @__PURE__ */ A({
name: "NewbieList",
props: {
url: {
type: String,
default: ""
},
extraData: {
type: Object,
default: () => ({})
},
height: {
type: Number,
default: 300
},
offset: {
type: Number,
default: 50
},
finishedText: {
type: String,
default: ""
},
autoLoad: {
type: Boolean,
default: !0
},
useStore: {
type: Object,
default: () => null
},
listProps: {
type: Object,
default: () => ({})
}
},
setup(e, { slots: t, expose: r }) {
let i = N(null), a = N(null), o = E(() => ({ ...e.listProps })), s;
e.useStore?.initPagination ? (e.useStore.initPagination({
uri: e.url,
params: e.extraData
}), s = E(() => e.useStore.pagination)) : s = N({
uri: e.url,
params: e.extraData
});
let c = (e) => {
s.value = n(s.value, e);
}, { y: l } = Pi(i);
return I(l, async (t) => {
t + e.height + e.offset >= i.value.scrollHeight && !s.value.loading && !s.value.finished && await c();
}), e.autoLoad && c(), r({
loadMore: c,
items: () => s.value.items || [],
pagination: s
}), () => O("div", {
ref: i,
class: "newbie-list",
style: { height: `${e.height}px` }
}, [O(qe, M({
ref: a,
dataSource: s.value?.items || []
}, o.value), {
default: () => t.default?.(),
renderItem: ({ item: e, index: n }) => t.renderItem ? t.renderItem({
item: e,
index: n
}) : null,
loadMore: () => [s.value?.loading ? O("div", { class: "loading-container" }, [O(ot, null, null)]) : null, s.value?.finished ? O("div", { class: "finished-text" }, [e.finishedText || _("common.loading-finished")]) : null]
})]);
}
})), Dd = In(Ui), Od = In(/* @__PURE__ */ A({
name: "NewbiePassword",
components: { InputPassword: Ke },
props: {
value: {
type: String,
default: ""
},
min: {
type: Number,
default: 8
},
max: {
type: Number,
default: 20
},
width: {
type: [Number, String],
default: 300
}
},
emits: ["update:value", "change"],
setup(e, { emit: t, expose: n }) {
let r = N("");
I(() => e.modelValue, () => {
r.value = e.modelValue;
});
let i = E(() => {
let e = 0;
return [
/\d/,
/[a-z]/,
/[A-Z]/,
/[^a-zA-Z0-9]/
].forEach((t) => {
t.test(r.value) && (e += 1);
}), e;
}), a = [
"",
"bad",
"weak",
"medium",
"strong"
], o = (e) => {
let { value: n } = e.target;
t("change", e), t("update:value", n);
}, s = E(() => r.value.length > 0 && r.value.length < e.min || r.value.length > e.max || i.value < 4), c = E(() => r.value.length > 0 && r.value.length < e.min ? `密码长度不能少于${e.min}个字符` : r.value.length > e.max ? `密码长度不能超过${e.max}个字符` : i.value < 4 ? "密码必须包含数字、小写字母、大写字母和特殊符号" : "");
return n({ strength: i }), () => O("div", {
class: "newbie-password",
style: { width: or(e.width) }
}, [
O(ge("input-password"), {
value: r.value,
"onUpdate:value": (e) => r.value = e,
onChange: o,
minlength: e.min,
maxlength: e.max
}, null),
O("div", { class: `strength-indicator-container ${a[i.value]}` }, [
O("div", { class: `strength-indicator ${i.value >= 1 ? "active" : ""}` }, null),
O("div", { class: `strength-indicator ${i.value >= 2 ? "active" : ""}` }, null),
O("div", { class: `strength-indicator ${i.value >= 3 ? "active" : ""}` }, null),
O("div", { class: `strength-indicator ${i.value >= 4 ? "active" : ""}` }, null)
]),
s.value ? O("div", { class: "error-message" }, [c.value]) : null
]);
}
})), kd = In(rr), Ad = In(Pu), jd = In(Ar);
//#endregion
//#region components/form-designer/defaultWidgets.jsx
function Md(e) {
return e && e === "quiz" ? [{
title: "题目类型",
children: [
{
name: "单选",
type: "radio",
icon: () => j(Wt),
props: {
defaultProps: { optionType: "outlined" },
options: [
"A. 选项一",
"B. 选项二",
"C. 选项三",
"D. 选项四"
]
}
},
{
name: "多选",
type: "checkbox",
icon: () => j(Gt),
props: { options: [
"A. 选项一",
"B. 选项二",
"C. 选项三",
"D. 选项四"
] }
},
{
name: "填空",
type: "input",
icon: () => j(rn),
props: { width: "100%" }
}
]
}] : [
{
title: "选择",
children: [
{
name: "单选",
type: "radio",
icon: () => j(Wt),
props: {
defaultProps: { optionType: "outlined" },
options: ["选项一", "选项二"]
}
},
{
name: "多选",
type: "checkbox",
icon: () => j(Gt),
props: { options: ["选项一", "选项二"] }
},
{
name: "下拉选择",
type: "select",
icon: () => j(tn),
props: {
options: ["选项一", "选项二"],
width: 300
}
},
{
name: "开关",
icon: () => j(An),
type: "switch"
},
{
name: "图片上传",
type: "uploader",
icon: () => j(ln),
props: { defaultProps: { accept: ".png,.jpg,.jpeg" } }
},
{
name: "文件上传",
type: "uploader",
icon: () => j(un),
props: { defaultProps: {
accept: ".doc,.docx,.pdf,.xls,.xlsx,.ppt,.pptx,.png,.jpg,jpeg",
type: "text"
} }
}
]
},
{
title: "填空",
children: [
{
name: "文本",
type: "input",
icon: () => j(rn),
props: { width: "100%" }
},
{
name: "多行文本",
icon: () => j(dn),
type: "textarea"
},
{
name: "日期",
icon: () => j(Ut),
type: "date"
},
{
name: "日期范围",
type: "date",
icon: () => j(Ut),
props: {
width: 300,
defaultProps: { type: "range" }
}
},
{
name: "时间",
icon: () => j(qt),
type: "time"
},
{
name: "时间范围",
type: "time",
icon: () => j(qt),
props: {
width: 300,
defaultProps: { type: "range" }
}
},
{
name: "数字",
icon: () => j(cn),
type: "number"
},
{
name: "计算字段",
type: "computed",
icon: () => j(Ht),
props: {
title: "计算字段",
formula: "",
help: "输入公式,如 SUM([q1], [q2])。用 [字段key] 引用其他字段的值。"
}
}
]
},
{
title: "评分",
children: [
{
name: "星级评分",
icon: () => j(kn),
type: "rate"
},
{
name: "单选评分",
type: "rate-radio",
icon: () => j(Wt),
props: {
defaultProps: { optionType: "outlined" },
options: [
{
value: "选项一",
rate: 1
},
{
value: "选项二",
rate: 2
},
{
value: "选项三",
rate: 3
}
]
}
},
{
name: "多选评分",
type: "rate-checkbox",
icon: () => j(Gt),
props: { options: [
{
value: "选项一",
rate: 1
},
{
value: "选项二",
rate: 2
},
{
value: "选项三",
rate: 3
}
] }
}
]
},
{
title: "矩阵",
children: [
{
name: "矩阵单选",
type: "matrix-radio",
icon: () => j(Wt),
props: {
options: [
"好",
"一般",
"差"
],
rows: ["质量", "外观"]
}
},
{
name: "矩阵多选",
type: "matrix-checkbox",
icon: () => j(Gt),
props: {
options: [
"好",
"一般",
"差"
],
rows: ["质量", "外观"]
}
},
{
name: "矩阵量表",
type: "matrix-scale",
icon: () => j(vn),
props: {
defaultProps: { showScale: !0 },
options: [],
rows: ["质量", "外观"]
}
}
]
},
{
title: "个人信息",
children: [
{
name: "姓名",
type: "input",
icon: () => j(Mn),
props: { title: "您的姓名" }
},
{
name: "性别",
type: "radio",
icon: () => j(Dn),
props: {
title: "您的性别",
options: ["男", "女"]
}
},
{
name: "手机号码",
type: "input",
icon: () => j(_n),
props: {
title: "请输入您的手机号码",
rules: [{
pattern: "^1[3456789]\\d{9}$",
message: "手机号码格式不正确"
}]
}
},
{
name: "邮箱",
type: "input",
icon: () => j(hn),
props: {
title: "请输入您的邮箱地址",
rules: [{
pattern: "^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$",
message: "邮箱地址格式不正确"
}]
}
},
{
name: "省市区",
type: "address",
icon: () => j(an),
props: { title: "请选择省份城市与地区" }
}
]
}
];
}
//#endregion
//#region components/form-designer/widgetProps.js
var Nd = (e, t) => {
let n = [
{
title: "字段标识",
key: "key",
type: "input",
readonly: !0,
help: "字段唯一标识,用于公式引用和逻辑规则"
},
{
title: "标题",
key: "title",
required: !0,
type: "textarea"
},
{
title: "必填",
key: "required",
type: "switch",
defaultValue: !1
},
{
title: "备注/提示",
key: "help"
},
{
title: "添加分页栏",
type: "switch",
key: "break",
defaultValue: !1
}
];
return [
"input",
"select",
"textarea"
].includes(e.type) && (n = n.concat([{
title: "输入框提示",
key: "placeholder"
}])), [
"matrix-radio",
"matrix-checkbox",
"matrix-scale"
].includes(e.type) && (n = n.concat([{
title: "行标题",
key: "rows",
type: "slot"
}])), [
"radio",
"checkbox",
"select",
"matrix-radio",
"matrix-checkbox",
"matrix-scale",
"rate-radio",
"rate-checkbox"
].includes(e.type) && (n = n.concat([{
title: "选项",
key: "options",
type: "slot"
}])), e.type === "matrix-scale" && (n = n.concat([{
title: "量表等级",
type: "number",
key: "level",
defaultProps: {
min: 1,
max: 10
},
defaultValue: 5
}])), e.type === "rate" && (n = n.concat([{
title: "星星总数",
type: "number",
key: "count",
defaultProps: {
min: 1,
max: 10
},
defaultValue: 5
}, {
title: "是否允许半选",
type: "switch",
key: "allowHalf",
defaultValue: !1
}])), e.type === "uploader" && (n = n.concat([{
title: "最大上传数",
key: "maxNum",
type: "number",
defaultValue: 1,
defaultProps: {
min: 1,
max: 9
}
}, {
title: "文件权限",
key: "privacy",
type: "radio",
options: [{
label: "公开",
value: "public"
}, {
label: "隐私",
value: "private"
}],
help: "公开:如新闻图片,通知文件等对所有人可见;隐私:如个人照片,私密文件等会进行访问限制",
defaultValue: "public"
}])), t && t === "quiz" && (n = n.concat([{
title: "分值",
key: "quiz_score",
type: "number",
required: !0,
defaultValue: 1
}]), !e.type || e.type === "input" ? n = n.concat([{
break: !0,
title: "正确答案",
key: "__quiz_answer"
}]) : e.type === "radio" ? n = n.concat([{
break: !0,
title: "正确答案",
key: "__quiz_answer",
type: "select",
options: e.props.options?.map((e, t) => String.fromCharCode(65 + t))
}]) : e.type === "checkbox" && (n = n.concat([{
break: !0,
title: "正确答案",
key: "__quiz_answer",
type: "select",
options: e.props.options?.map((e, t) => String.fromCharCode(65 + t)),
defaultProps: { mode: "multiple" }
}])), n = n.concat([{
title: "解析",
key: "__quiz_analysis",
type: "textarea"
}])), n;
}, Pd = (e, t) => {
let n = e.props, r = {};
return [
"key",
"title",
"required",
"help",
"break"
].forEach((e) => {
r[e] = n[e];
}), t && t === "quiz" && (r.quiz_score = n.quiz_score, r.__quiz_answer = n.__quiz_answer, r.__quiz_analysis = n.__quiz_analysis), [
"radio",
"checkbox",
"select",
"rate-radio",
"rate-checkbox"
].includes(e.type) && (r.options = n.options), [
"input",
"select",
"textarea"
].includes(e.type) && (r.placeholder = n.placeholder), e.type === "rate" && (r.count = n.defaultProps?.count, r.allowHalf = n.defaultProps?.allowHalf), e.type === "computed" && (r.formula = n.formula, r.decimal = n.decimal === void 0 ? 2 : n.decimal, r.prefix = n.prefix || "", r.suffix = n.suffix || ""), e.type === "matrix-scale" && (r.level = n.defaultProps?.level), e.type === "uploader" && (r.maxNum = n.defaultProps?.maxNum || 1, r.privacy = n.defaultProps?.extraData?.type || "private"), r;
}, Fd = (e, t, n) => {
if (!t) return;
let r = t.props;
[
"title",
"required",
"help",
"break"
].forEach((t) => {
r[t] = e[t];
}), n && n === "quiz" && (r.quiz_score = e.quiz_score, r.__quiz_answer = e.__quiz_answer, r.__quiz_analysis = e.__quiz_analysis), [
"radio",
"checkbox",
"select",
"rate-radio",
"rate-checkbox"
].includes(t.type) && (r.options = e.options), [
"input",
"select",
"textarea"
].includes(t.type) && (r.placeholder = e.placeholder), t.type === "rate" && (r.defaultProps ||= {}, r.defaultProps.count = e.count, r.defaultProps.allowHalf = e.allowHalf), t.type === "computed" && (r.formula = e.formula, r.decimal = e.decimal === void 0 ? 2 : e.decimal, r.prefix = e.prefix || "", r.suffix = e.suffix || ""), t.type === "matrix-scale" && (r.defaultProps ||= {}, r.defaultProps.level = e.level), t.type === "uploader" && (r.defaultProps ||= {}, r.defaultProps.extraData || (r.defaultProps.extraData = {}), r.defaultProps.maxNum = e.maxNum, r.defaultProps.extraData.type = e.privacy);
}, Id = {
all: [
"equals",
"notEquals",
"isEmpty",
"isNotEmpty"
],
number: [
"gt",
"lt",
"gte",
"lte"
],
text: [
"contains",
"notContains",
"startsWith",
"endsWith"
],
multi: ["in", "notIn"]
}, Ld = {
equals: "等于",
notEquals: "不等于",
isEmpty: "为空",
isNotEmpty: "不为空",
gt: "大于",
lt: "小于",
gte: "大于等于",
lte: "小于等于",
contains: "包含",
notContains: "不包含",
startsWith: "开头是",
endsWith: "结尾是",
in: "已选择",
notIn: "未选择"
}, Rd = /* @__PURE__ */ A({
name: "GlobalLogicPanel",
props: {
rules: {
type: Array,
default: () => []
},
onChange: {
type: Function,
default: () => {}
},
availableFields: {
type: Array,
default: () => []
},
open: {
type: Boolean,
default: !1
},
onClose: {
type: Function,
default: () => {}
}
},
setup(e) {
let t = N(!1), n = N(""), r = N(""), i = N("show"), a = N("AND"), o = N([]), s = () => {
n.value = "", r.value = "", i.value = "show", a.value = "AND", o.value = [];
}, c = E(() => e.availableFields.filter((e) => e.type !== "computed")), l = (t) => {
let n = e.availableFields.find((e) => e.key === t);
if (!n) return Id.all;
let r = [...Id.all];
return n.type === "number" ? r.push(...Id.number) : ["input", "textarea"].includes(n.type) ? r.push(...Id.text) : ["checkbox", "select"].includes(n.type) && n.props?.mode === "multiple" && r.push(...Id.multi), r;
}, u = (t) => {
let n = e.availableFields.find((e) => e.key === t);
return n ? ["radio", "select"].includes(n.type) ? "select" : n.type === "number" ? "number" : "input" : "input";
}, d = (t) => {
let n = e.availableFields.find((e) => e.key === t);
return !n || !n.props?.options ? [] : n.props.options.map((e) => typeof e == "object" ? e : {
label: e,
value: e
});
}, f = () => {
s(), n.value = Date.now().toString(), t.value = !0;
}, p = (e) => {
n.value = e.id || "", r.value = e.targetField || "", i.value = e.action || "show", a.value = (e.logicGate || "AND").toUpperCase(), o.value = e.conditions ? xt(e.conditions).map((e) => me(e)) : [], t.value = !0;
}, m = (t) => {
let n = e.rules.filter((e) => e.id !== t);
e.onChange(n);
}, h = () => {
if (!r.value) {
R.warn("请选择目标字段");
return;
}
if (!o.value || o.value.length === 0) {
R.warn("请至少添加一个条件");
return;
}
let c = {
id: n.value,
targetField: r.value,
action: i.value,
logicGate: a.value,
conditions: xt(o.value)
}, l = e.rules.findIndex((e) => e.id === c.id), u;
l >= 0 ? (u = [...e.rules], u[l] = c) : u = [...e.rules, c], e.onChange(u), t.value = !1, s();
}, g = () => {
t.value = !1, s();
}, _ = () => {
o.value.push(me({
field: "",
operator: "equals",
value: ""
}));
}, v = (e) => {
o.value.splice(e, 1);
}, y = (t) => {
let n = t.targetField ? e.availableFields.find((e) => e.key === t.targetField) : null, r = n ? `${n.title}(${n.key})` : t.targetField || "未知字段", i = t.action === "show" ? "显示" : "隐藏";
return `当 ${t.conditions?.length || 0} 个条件(${(t.logicGate || "AND").toUpperCase() === "AND" ? "全部满足" : "任一满足"})时,${i} ${r}`;
}, b = () => t.value ? O("div", { class: "rule-edit-form" }, [O(ze, { layout: "vertical" }, { default: () => [
O(Be, { label: "目标字段" }, { default: () => [O(rt, {
value: r.value,
"onUpdate:value": (e) => {
r.value = e;
},
placeholder: "选择目标字段",
options: c.value.map((e) => ({
label: `${e.key}(${e.title})`,
value: e.key
}))
}, null)] }),
O(Be, { label: "动作" }, { default: () => [O(Qe.Group, {
value: i.value,
onChange: (e) => {
i.value = e && e.target ? e.target.value : e;
}
}, { default: () => [O(Qe, { value: "show" }, { default: () => [D("显示")] }), O(Qe, { value: "hide" }, { default: () => [D("隐藏")] })] })] }),
O(Be, { label: "逻辑门" }, { default: () => [O(Qe.Group, {
value: a.value,
onChange: (e) => {
a.value = e && e.target ? e.target.value : e;
}
}, { default: () => [O(Qe, { value: "AND" }, { default: () => [D("AND(全部满足)")] }), O(Qe, { value: "OR" }, { default: () => [D("OR(任一满足)")] })] })] }),
O(Be, { label: "条件列表" }, { default: () => [O(at, {
direction: "vertical",
style: { width: "100%" }
}, { default: () => [o.value.map((e, t) => {
let n = l(e.field), r = u(e.field), i = d(e.field);
return O("div", {
key: t,
class: "condition-row"
}, [O(at, null, { default: () => [
O(rt, {
value: e.field,
"onUpdate:value": (e) => {
o.value[t] = me({
field: e,
operator: l(e)[0],
value: ""
});
},
placeholder: "选择字段",
style: { width: "150px" },
options: c.value.map((e) => ({
label: `${e.key}(${e.title})`,
value: e.key
}))
}, null),
O(rt, {
value: e.operator,
"onUpdate:value": (t) => {
e.operator = t;
},
placeholder: "操作符",
style: { width: "130px" },
options: n.map((e) => ({
label: Ld[e] || e,
value: e
}))
}, null),
r === "select" ? O(rt, {
value: e.value,
"onUpdate:value": (t) => {
e.value = t;
},
placeholder: "选择值",
style: { width: "150px" },
options: i
}, null) : O(r === "number" ? Ge : We, {
value: e.value,
"onUpdate:value": (t) => {
e.value = t;
},
placeholder: "输入值",
style: { width: 150 }
}, null),
O(L, {
danger: !0,
size: "small",
onClick: () => v(t)
}, { default: () => [D("删除")] })
] })]);
}), O(L, {
type: "dashed",
onClick: _
}, { default: () => [D("+ 添加条件")] })] })] })
] }), O(at, { style: { marginTop: "16px" } }, { default: () => [O(L, {
type: "primary",
onClick: h
}, { default: () => [D("保存")] }), O(L, { onClick: g }, { default: () => [D("取消")] })] })]) : null;
return () => O(Fe, {
title: "表单逻辑",
open: e.open,
onClose: e.onClose,
width: 600
}, { default: () => [t.value ? b() : O(C, null, [O(L, {
type: "primary",
icon: O(xn, null, null),
onClick: f,
style: { marginBottom: "16px" }
}, { default: () => [D("添加规则")] }), e.rules.length === 0 ? O("div", { style: {
textAlign: "center",
padding: "40px 0",
color: "#999"
} }, [D("暂无规则,点击\"添加规则\"开始配置")]) : e.rules.map((e) => O(De, {
key: e.id,
size: "small",
style: { marginBottom: "8px" }
}, { default: () => [O("div", null, [y(e)]), O(at, { style: { marginTop: "8px" } }, { default: () => [O(L, {
size: "small",
onClick: () => p(e)
}, { default: () => [D("编辑")] }), O(L, {
danger: !0,
size: "small",
onClick: () => m(e.id)
}, { default: () => [D("删除")] })] })] }))])] });
}
});
//#endregion
//#region components/form-designer/FormulaEditor.jsx
function zd(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var { TextArea: Bd } = We, $ = {
code: {
background: "#fff1f0",
border: "1px solid #ffccc7",
borderRadius: 4,
padding: "2px 6px",
fontFamily: "Consolas, Monaco, monospace",
fontSize: "13px",
color: "#cf1322"
},
guideBg: {
background: "#fafafa",
padding: "12px 16px",
borderRadius: 6
},
table: {
border: "1px solid #f0f0f0",
borderRadius: 6,
overflow: "hidden",
margin: "8px 0 16px"
},
tableHeader: {
display: "flex",
background: "#fafafa",
borderBottom: "1px solid #f0f0f0"
},
tableCell: (e, t) => ({
flex: 1,
padding: "8px 12px",
borderRight: e < t - 1 ? "1px solid #f0f0f0" : "none"
}),
tableRow: (e, t) => ({
display: "flex",
borderBottom: e < t - 1 ? "1px solid #f0f0f0" : "none"
}),
sep: {
borderBottom: "1px solid #f0f0f0",
margin: "16px 0"
},
section: { marginBottom: 16 },
card: {
border: "1px solid #f0f0f0",
borderRadius: 8,
padding: "12px 16px",
marginBottom: 12
},
cardCode: {
background: "#fafafa",
padding: "8px 12px",
borderRadius: 4
},
h4: {
fontSize: 16,
fontWeight: 600,
marginBottom: 12,
marginTop: 0
},
h5: {
fontSize: 14,
fontWeight: 600,
marginBottom: 8,
marginTop: 0
},
p: {
margin: "0 0 8px",
lineHeight: 1.6
},
secondary: { color: "#8c8c8c" }
}, Vd = {
math: [
[
"SUM",
"[q1], [q2], ...",
"求和"
],
[
"AVG",
"[q1], [q2], ...",
"平均值"
],
[
"MAX",
"[q1], [q2], [q3]",
"最大值"
],
[
"MIN",
"[q1], [q2]",
"最小值"
],
[
"ABS",
"[q1]",
"绝对值"
],
[
"ROUND",
"[q1], 2",
"四舍五入到指定位数"
],
[
"MOD",
"[q1], [q2]",
"取模(余数)"
],
[
"POWER",
"[q1], [q2]",
"幂运算(q1 的 q2 次方)"
],
[
"SQRT",
"[q1]",
"平方根"
]
],
logic: [
[
"AND",
"[a], [b], ...",
"逻辑与(全部为真返回 1)"
],
[
"OR",
"[a], [b], ...",
"逻辑或(任一为真返回 1)"
],
[
"NOT",
"[a]",
"逻辑非(取反)"
],
[
"XOR",
"[a], [b], ...",
"异或(奇数个真返回 1)"
]
],
string: [
[
"CONCAT",
"[a], \" \", [b]",
"字符串拼接"
],
[
"LEN",
"[q1]",
"字符串长度"
],
[
"UPPER",
"[q1]",
"转大写"
],
[
"LOWER",
"[q1]",
"转小写"
]
],
date: [
[
"TODAY",
"",
"返回今天的日期 (YYYY-MM-DD)"
],
[
"NOW",
"",
"返回当前日期时间"
],
[
"DATE",
"2024, 1, 15",
"构造日期"
],
[
"YEAR",
"[dateField]",
"提取年份"
],
[
"MONTH",
"[dateField]",
"提取月份 (1-12)"
],
[
"DAY",
"[dateField]",
"提取日期 (1-31)"
],
[
"DATEDIF",
"[start], [end], \"Y\"",
"日期差(Y/M/D)"
]
],
other: [[
"COUNT",
"[q1], [q2], ...",
"非空计数"
], [
"PERCENT",
"[q1], [q2]",
"百分比 (q1/q2*100)"
]]
}, Hd = (e) => O("div", { style: $.table }, [O("div", { style: $.tableHeader }, [
O("div", { style: {
...$.tableCell(0, 3),
fontWeight: 600,
color: "#262626"
} }, [D("函数名")]),
O("div", { style: {
...$.tableCell(1, 3),
fontWeight: 600,
color: "#262626"
} }, [D("参数")]),
O("div", { style: {
...$.tableCell(2, 3),
fontWeight: 600,
color: "#262626"
} }, [D("说明")])
]), e.map((t, n) => O("div", {
key: n,
style: $.tableRow(n, e.length)
}, [
O("div", { style: {
...$.tableCell(0, 3),
color: "#595959",
fontWeight: 600
} }, [t[0]]),
O("div", { style: {
...$.tableCell(1, 3),
color: "#cf1322"
} }, [O("code", { style: $.code }, [t[1]])]),
O("div", { style: {
...$.tableCell(2, 3),
color: "#595959"
} }, [t[2]])
]))]), Ud = () => O("div", { style: {
maxHeight: "60vh",
overflowY: "auto"
} }, [
O("div", { style: {
background: "#e6f7ff",
border: "1px solid #91d5ff",
borderRadius: 6,
padding: "12px 16px",
marginBottom: 24
} }, [
O("strong", null, [D("快速开始:")]),
D("使用方括号引用字段值,如 "),
O("code", { style: $.code }, [D("[radio-1]")]),
D("。支持基本运算和函数调用。")
]),
O("h4", { style: $.h4 }, [D("基础语法")]),
O("div", { style: $.section }, [
O("h5", { style: $.h5 }, [D("字段引用")]),
O("p", { style: $.p }, [D("使用方括号引用其他字段的值:")]),
O("div", { style: $.guideBg }, [
O("code", { style: $.code }, [D("[fieldKey]")]),
D(" "),
O("span", { style: $.secondary }, [D("例如:")]),
O("code", { style: $.code }, [D("[radio-1]")]),
D(" "),
O("code", { style: $.code }, [D("[input-1]")])
])
]),
O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("算术运算")]), O("div", { style: $.guideBg }, [
O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] + [q2]")]), D(" — 加法")]),
O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] - [q2]")]), D(" — 减法")]),
O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] * [q2]")]), D(" — 乘法")]),
O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] / [q2]")]), D(" — 除法")]),
O("p", { style: {
...$.p,
marginBottom: 0
} }, [O("code", { style: $.code }, [D("[q1] % 100")]), D(" — 取模")])
])]),
O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("比较运算")]), O("div", { style: $.guideBg }, [
O("p", { style: $.p }, [O("code", { style: $.code }, [D("==")]), D(" — 等于")]),
O("p", { style: $.p }, [O("code", { style: $.code }, [D("!=")]), D(" — 不等于")]),
O("p", { style: {
...$.p,
marginBottom: 0
} }, [O("code", { style: $.code }, [D("> < >= <=")]), D(" — 大小比较")])
])]),
O("div", { style: $.sep }, null),
O("h4", { style: $.h4 }, [D("函数")]),
O("div", { style: $.section }, [
O("h5", { style: $.h5 }, [D("条件判断")]),
O("div", { style: $.guideBg }, [O("code", { style: $.code }, [D("IF([q1] == \"A\", [q2], 0)")])]),
O("p", { style: {
...$.p,
...$.secondary
} }, [D("如果 q1 等于 \"A\",返回 q2 的值,否则返回 0")])
]),
O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("数学函数")]), Hd(Vd.math)]),
O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("逻辑函数")]), Hd(Vd.logic)]),
O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("字符串函数")]), Hd(Vd.string)]),
O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("日期函数")]), Hd(Vd.date)]),
O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("其他函数")]), Hd(Vd.other)]),
O("div", { style: $.sep }, null),
O("h4", { style: $.h4 }, [D("常用示例")]),
[
["计算总分", "SUM([q1], [q2], [q3])"],
["条件计分", "IF([radio-1] == \"A\", 10, 0)"],
["百分比计算", "PERCENT([score], [total])"],
["字符串拼接", "CONCAT([firstName], \" \", [lastName])"],
["取模判断奇偶", "IF(MOD([num], 2) == 0, \"偶数\", \"奇数\")"],
["多条件判断", "IF(AND([score] >= 60, [attendance] > 80), \"通过\", \"不通过\")"],
["计算年龄", "DATEDIF([birthday], TODAY(), \"Y\")"]
].map(([e, t], n) => O("div", {
key: n,
style: $.card
}, [O("div", { style: {
marginBottom: 8,
fontWeight: 600
} }, [e]), O("div", { style: $.cardCode }, [O("code", { style: $.code }, [t])])]))
]), Wd = /* @__PURE__ */ A({
name: "FormulaEditor",
props: {
value: {
type: String,
default: ""
},
onChange: {
type: Function,
default: () => {}
},
availableFields: {
type: Array,
default: () => []
},
previewData: {
type: Object,
default: () => ({})
},
fieldKey: {
type: String,
default: ""
}
},
setup(e) {
let t = N(null), n = N(null), r = N(!1), i = N(null), a = (r) => {
if (!r || !r.trim()) {
n.value = null, t.value = null;
return;
}
if (e.fieldKey && md(r, e.fieldKey)) {
t.value = `公式不能引用自身字段 [${e.fieldKey}],这会导致循环计算`, n.value = null;
return;
}
try {
let i = hd(r, e.previewData);
i && typeof i == "object" && i.error ? (t.value = i.error, n.value = null) : (n.value = i, t.value = null);
} catch (e) {
t.value = e.message || "公式语法错误", n.value = null;
}
}, o = (t) => {
let n = t.target.value;
e.onChange(n), a(n);
}, s = (t) => {
let n = i.value?.ref || i.value, r = e.value || "", o = `[${t}]`, s, c;
if (n && typeof n.selectionStart == "number") {
let e = n.selectionStart, t = n.selectionEnd, i = r.slice(0, e), a = r.slice(t), l = i.replace(/\s+$/, ""), u = l.slice(-1), d = l.length > 0 && u !== "(" && u !== "," && !"+-*/%><=!".includes(u), f = a.replace(/^\s+/, "").startsWith("["), p = (d ? "+" : "") + o + (f ? "+" : "");
s = i + p + a, c = (i + p).length;
} else {
let e = r.replace(/\s+$/, ""), t = e.slice(-1);
s = r + (e.length > 0 && t !== "(" && t !== "," && !"+-*/%><=!".includes(t) ? "+" : "") + o, c = s.length;
}
e.onChange(s), a(s), se(() => {
n && (n.focus(), typeof n.setSelectionRange == "function" && n.setSelectionRange(c, c));
});
};
return e.value && a(e.value), I(() => e.value, (e) => a(e)), () => {
let a;
return O("div", { class: "formula-editor" }, [
O("div", { style: {
display: "flex",
justifyContent: "space-between",
alignItems: "center",
marginBottom: "8px"
} }, [O("span", { style: { fontSize: "14px" } }, [D("计算公式")]), O(L, {
type: "link",
size: "small",
onClick: () => {
r.value = !0;
}
}, { default: () => [D("使用说明")] })]),
O(Bd, {
ref: i,
value: e.value,
onChange: o,
placeholder: "如: SUM([q1], [q2]) 或点击下面字段自动拼接",
rows: 4
}, null),
t.value && O("div", { style: {
color: "#ff4d4f",
marginTop: 4,
fontSize: 13
} }, [t.value]),
n.value !== null && O("div", { style: {
color: "#52c41a",
marginTop: 4,
fontSize: 13
} }, [D("结果: "), String(n.value)]),
e.availableFields.length > 0 && O("div", { style: { marginTop: "8px" } }, [O("span", { style: $.secondary }, [D("可用字段:")]), e.availableFields.map((e) => O(dt, {
key: e.key,
onClick: () => s(e.key),
style: {
cursor: "pointer",
marginTop: 4
}
}, { default: () => [
e.title,
D(" ["),
e.key,
D("]")
] }))]),
r.value && O(Xe, {
open: r.value,
"onUpdate:open": (e) => r.value = e,
title: "公式使用说明",
width: 720
}, zd(a = Ud()) ? a : { default: () => [a] })
]);
};
}
}), Gd = In(/* @__PURE__ */ A({
name: "NewbieFormDesigner",
props: {
title: {
type: String,
default: ""
},
widgets: {
type: Array,
default: () => []
},
formItems: {
type: [Array, Function],
default: () => []
},
height: {
type: [String, Number],
default: "100%"
},
mode: {
type: String,
default: null
}
},
emits: ["submit"],
setup(e, { emit: t }) {
let n = N(null), r = N([]), i = N(!1), a = me({
submitForm: {},
painterItems: [],
dragOptions: {
animation: 200,
group: "designer",
disabled: !1,
ghostClass: "ghost"
},
isDragging: !1,
currentItem: null,
currentIndex: null,
propsFormData: {},
showOptionsModal: !1,
showValueOptionsModal: !1,
currentOptionItem: null,
optionsValue: "",
rateValue: "",
showLogicPanel: !1
}), o = {}, s = (e) => {
if (!(e in o)) {
let t = 0;
a.painterItems.forEach((n) => {
if (n.type === e && n.key) {
let r = e + "-(\\d+)$", i = n.key.match(new RegExp(r));
i && (t = Math.max(t, parseInt(i[1])));
}
}), o[e] = t;
}
return o[e] += 1, e + "-" + o[e];
}, c = () => {
let t = [], n = { rules: [] };
t = z(e.formItems) ? e.formItems() : xt(e.formItems), !Array.isArray(t) && t && t.fields && (n = t.logic || { rules: [] }, t = t.fields), Array.isArray(n.rules) && !i.value && (r.value = n.rules), a.painterItems = t.map((e) => ({
key: e.key,
type: e.type,
name: e.title,
props: e
}));
};
I(() => e.formItems, () => c(), { deep: !0 }), c();
let l = N(Md(e.mode).concat(e.widgets).map((e) => (Dt(e) && (e = { children: e }), e))), u = (e) => {
let t = xt(e), n = t.type || "field";
return t.key = s(n), t.props ||= {}, t.props.title = t.props.title || t.name, t.props.key = t.key, t.props.type = t.type, t.props.placeholder = " - ", t;
}, d = (e) => {
let t = u(e);
a.painterItems.push(t), f(a.painterItems.length - 1);
}, f = (t) => {
a.currentItem = a.painterItems[t], a.currentIndex = t, a.propsFormData = Pd(a.painterItems[t], e.mode);
}, p = ({ newIndex: e }) => {
e === 0 && f(0);
}, m = (e) => {
a.painterItems[e].key === a.currentItem?.key && (a.currentItem = null, a.currentIndex = null), a.painterItems.splice(e, 1);
}, h = (e) => {
if (a.currentOptionItem = e, a.currentItem.type.startsWith("rate-")) {
let t = "", n = "", r = a.currentItem?.props[e.key] || [];
r.forEach((e, i) => {
Mt(e) ? (t += e.value, n += e.rate ? String(e.rate) : "") : t += e, i < r.length - 1 && (t += "\n", n += "\n");
}), a.optionsValue = t, a.rateValue = n, a.showValueOptionsModal = !0;
} else a.optionsValue = a.currentItem?.props[e.key]?.join("\n"), a.showOptionsModal = !0;
}, g = () => {
if (!a.optionsValue.trim()) {
R.warn("请至少设置一个选项");
return;
}
if (!a.currentOptionItem) return;
let t = a.optionsValue.split("\n").filter((e) => e.trim());
if (e.mode === "quiz" && (t = t.map((e, t) => /^[A-Z]\.\s?/.test(e) ? e : `${String.fromCharCode(65 + t)}. ${e}`)), !kt(t, Bt(t))) {
R.warn("选项有重复,请检查数据");
return;
}
a.currentItem.props || (a.currentItem.props = {}), a.currentItem.props[a.currentOptionItem.key] = t, a.showOptionsModal = !1;
}, _ = () => {
if (!a.optionsValue.trim()) {
R.warn("请至少设置一个选项");
return;
}
if (!a.currentOptionItem) return;
let e = a.optionsValue.split("\n").filter((e) => e.trim()), t = a.rateValue.split("\n");
if (!kt(e, Bt(e))) {
R.warn("选项有重复,请检查数据");
return;
}
a.currentItem.props || (a.currentItem.props = {}), a.currentItem.props[a.currentOptionItem.key] = e.map((e, n) => ({
label: e,
value: e,
rate: t[n] ? String(t[n]).trim() : 0
})), a.showOptionsModal = !1, a.showValueOptionsModal = !1;
}, v = (e) => {
let { key: t } = e;
t === "increase" ? a.rateValue = a.optionsValue.split("\n").map((e, t) => t + 1).join("\n") : a.rateValue = a.rateValue.split("\n").map((e) => !isNaN(e) && !isNaN(parseFloat(e)) ? t === "add1" ? Number(e) + 1 : Number(e) - 1 : e).join("\n");
}, y = () => {
Xe.confirm({
title: "清空表单",
content: "清空表单后,所有数据将被清空,是否继续?",
onOk: () => {
a.painterItems = [], a.submitForm = {};
}
});
}, b = () => {
t("submit", {
fields: a.painterItems?.length ? a.painterItems.map((e) => e.props) : [],
logic: { rules: r.value }
});
}, x = E(() => n.value?.getForm());
return I(() => x.value, (t) => {
Fd(t, a.currentItem, e.mode);
}, { deep: !0 }), () => O("div", {
class: "newbie-form-designer",
style: { height: or(e.height) }
}, [
O("div", { class: "newbie-form-designer__widget-container" }, [O("div", { class: "widget-container" }, [l.value.map((e) => O("div", { class: "widget-list-container" }, [O("div", { class: "widget-list-title" }, [e.title || "默认"]), O(Gs, {
tag: "div",
list: e.children,
sort: !1,
group: {
name: "designer",
pull: "clone",
put: !1
},
clone: u,
handle: ".drag-handle",
class: "widget-list",
itemKey: "name"
}, { item: ({ element: e }) => O(L, {
class: "widget-item drag-handle",
onClick: () => d(e)
}, { default: () => [e.icon ? O("span", {
role: "img",
class: "widget-icon"
}, [z(e.icon) ? e.icon() : e.icon]) : null, O("span", { class: "widget-name" }, [e.name])] }) })]))])]),
O("div", { class: "newbie-form-designer__painter-container" }, [O("div", { class: "newbie-form-designer__painter-scroll" }, [O(ze, {
labelCol: { span: 24 },
wrapperCol: { span: 24 },
model: a.submitForm,
labelAlign: "left",
class: "newbie-form"
}, { default: () => [
e.title ? O("div", { class: "painter-title" }, [e.title]) : null,
a.painterItems.length ? null : O("div", { class: "newbie-form-designer__help-wrapper" }, [O("p", null, [O(On, { style: { marginRight: "4px" } }, null), D("请点击或者拖拽左侧组件至下面区域生成表单")])]),
O(T, null, { default: () => [O(Gs, M({
list: a.painterItems,
class: "painter-wrapper",
handle: ".painter-item",
itemKey: "key",
key: "key"
}, a.dragOptions, {
onStart: () => a.isDragging = !0,
onEnd: () => a.isDragging = !1,
onAdd: p
}), { item: ({ element: e, index: t }) => {
let n = String(t + 1).padStart(2, "0") + ".";
return O("div", {
class: `painter-item ${a.currentItem?.key === e.key ? "active" : ""}`,
key: e.key,
onClick: () => f(t)
}, [
O("div", { class: "drag-handle" }, [O(nn, null, null)]),
O("div", { class: "op-container" }, [O("div", {
class: "op-item",
onClick: Ce(() => m(t), ["stop"])
}, [O(ht, { title: "删除" }, { default: () => [O($t, null, null)] })])]),
e.props.break ? O(Pe, null, { default: () => "分页栏" }) : null,
_d({
formItemSlots: { label: () => O("div", { class: "item-label" }, [O("span", { class: "item-index" }, [n]), O("span", { class: "item-name" }, [
O("span", { class: "item-key" }, [
D("["),
e.props.key,
D("]")
]),
e.props.title,
e.type === "computed" ? O(ht, { title: "计算字段不会展示给填写用户,仅根据表单数据自动计算,可用于统计等用途" }, { default: () => [O("span", { class: "item-computed-badge" }, [O(Ht, { style: { marginRight: 4 } }, null), D("计算字段")])] }) : null
])]) },
...e.props
}, a.submitForm, { props: {} })
]);
} })] })
] })]), O("div", { class: "newbie-form-designer__painter-toolbar" }, [O(ht, { title: "清空表单" }, { default: () => [O(L, {
type: "default",
danger: !0,
icon: O($t, null, null),
onClick: y
}, { default: () => [D("清空表单")] })] }), O(at, { span: 8 }, { default: () => [O(Ee, {
count: r.value.length,
offset: [-4, 0]
}, { default: () => [O(L, {
type: "default",
icon: O(fn, null, null),
onClick: () => {
a.showLogicPanel = !0;
}
}, { default: () => [D("表单逻辑")] })] }), O(L, {
type: "primary",
icon: O(wn, null, null),
onClick: b
}, { default: () => [D("保存表单")] })] })])]),
O("div", { class: "newbie-form-designer__props-container" }, [a.currentItem ? [
O("div", { class: "widget-name" }, [a.currentItem.icon ? O("span", {
role: "img",
class: "widget-icon"
}, [z(a.currentItem.icon) ? a.currentItem.icon() : a.currentItem.icon]) : null, a.currentItem.name]),
O(wd, {
ref: n,
form: () => Nd(a.currentItem, e.mode),
cardWrapper: !1,
closable: !1,
data: a.propsFormData
}, {
options: ({ item: e }) => O(Be, { label: e.title }, { default: () => O(L, {
type: "primary",
onClick: () => h(e)
}, { default: () => "设置选项" }) }),
rows: ({ item: e }) => O(Be, { label: e.title }, { default: () => O(L, {
type: "primary",
onClick: () => h(e)
}, { default: () => "设置行标题" }) })
}),
a.currentItem.type === "computed" ? O("div", { style: { padding: "0 16px 16px" } }, [O(Wd, {
value: a.currentItem.props.formula,
onChange: (e) => {
a.currentItem.props.formula = e;
},
availableFields: a.painterItems.filter((e) => e.type !== "computed" && e.props.key !== a.currentItem.props.key).map((e) => ({
key: e.props.key,
title: e.props.title
})),
previewData: a.submitForm,
fieldKey: a.currentItem.props.key
}, null)]) : null
] : O("div", { class: "empty-props" }, [O(Le, { description: "未选中内容" }, null)])]),
O(Xe, {
open: a.showOptionsModal,
"onUpdate:open": (e) => a.showOptionsModal = e,
title: "选项设置",
onOk: g
}, { default: () => [O(Te, {
message: e.mode === "quiz" ? "每行一个选项,选项不能重复,选项序号A, B, C, D...会自动添加" : "每行一个选项,选项不能重复",
style: { marginBottom: "10px" }
}, null), O(ft, {
value: a.optionsValue,
"onUpdate:value": (e) => a.optionsValue = e,
placeholder: "每行一个选项,如:\n选项一\n选项二",
"auto-size": {
minRows: 14,
maxRows: 14
}
}, null)] }),
O(Xe, {
open: a.showValueOptionsModal,
"onUpdate:open": (e) => a.showValueOptionsModal = e,
title: "选项设置",
onOk: _
}, { default: () => [O(Te, {
message: "每行一个选项,且选项不能重复",
style: { marginBottom: "10px" }
}, null), O(nt, { gutter: 8 }, { default: () => [O(Me, { span: 14 }, { default: () => [O("div", null, [D("选项")]), O(ft, {
value: a.optionsValue,
"onUpdate:value": (e) => a.optionsValue = e,
placeholder: "每行一个选项,如:\n选项一\n选项二",
"auto-size": {
minRows: 14,
maxRows: 14
}
}, null)] }), O(Me, { span: 10 }, { default: () => [O(Ie, null, {
default: () => O("div", null, [O("a", { class: "ant-dropdown-link" }, [D("分值(不填代表0分)"), O(en, { style: {
marginLeft: "4px",
fontSize: "12px"
} }, null)])]),
overlay: () => O(Je, { onClick: v }, { default: () => [
O(Ye, { key: "increase" }, { default: () => "分数从 1 开始顺序递增" }),
O(Ye, { key: "add1" }, { default: () => "选项分数全部加 1" }),
O(Ye, { key: "minus1" }, { default: () => "选项分数全部减 1" })
] })
}), O(ft, {
value: a.rateValue,
"onUpdate:value": (e) => a.rateValue = e,
placeholder: "每行一个对应分值,如:\n1\n2",
"auto-size": {
minRows: 14,
maxRows: 14
}
}, null)] })] })] }),
O(Rd, {
rules: r.value,
onChange: (e) => {
r.value = e, i.value = !0;
},
availableFields: a.painterItems.map((e) => ({
key: e.key,
title: e.props.title || e.name,
type: e.type,
props: e.props
})),
open: a.showLogicPanel,
onClose: () => {
a.showLogicPanel = !1;
}
}, null)
]);
}
})), Kd = In(/* @__PURE__ */ A({
name: "NewbieCopy",
props: {
text: {
type: String,
default: ""
},
showIcon: {
type: Boolean,
default: !1
},
customRender: {
type: Function,
default: null
},
copy: {
type: Function,
default: null
}
},
setup(e) {
let { copy: t } = Si({ legacy: !0 }), n = async () => {
e.copy ? await e.copy(e.text) : (await t(e.text), R.success(m.global.t("table.copy-success")));
}, r = () => e.customRender ? O("span", { class: "newbie-copy-text" }, [e.customRender(e.text)]) : O("span", { class: "newbie-copy-text" }, [e.text]);
return () => O("span", {
class: "newbie-copy",
onClick: n
}, [r(), O("span", { class: `newbie-copy-icon ${e.showIcon ? "always-show" : ""}` }, [O(Qt, null, null)])]);
}
})), qd = class {
x;
y;
pressure;
time;
constructor(e, t, n, r) {
if (isNaN(e) || isNaN(t)) throw Error(`Point is invalid: (${e}, ${t})`);
this.x = +e, this.y = +t, this.pressure = n || 0, this.time = r || Date.now();
}
distanceTo(e) {
return Math.sqrt((this.x - e.x) ** 2 + (this.y - e.y) ** 2);
}
equals(e) {
return this.x === e.x && this.y === e.y && this.pressure === e.pressure && this.time === e.time;
}
velocityFrom(e) {
return this.time === e.time ? 0 : this.distanceTo(e) / (this.time - e.time);
}
}, Jd = class e {
constructor(e, t, n, r, i, a) {
this.startPoint = e, this.control2 = t, this.control1 = n, this.endPoint = r, this.startWidth = i, this.endWidth = a;
}
static fromPoints(t, n) {
let r = this.calculateControlPoints(t[0], t[1], t[2]).c2, i = this.calculateControlPoints(t[1], t[2], t[3]).c1;
return new e(t[1], r, i, t[2], n.start, n.end);
}
static calculateControlPoints(e, t, n) {
let r = e.x - t.x, i = e.y - t.y, a = t.x - n.x, o = t.y - n.y, s = {
x: (e.x + t.x) / 2,
y: (e.y + t.y) / 2
}, c = {
x: (t.x + n.x) / 2,
y: (t.y + n.y) / 2
}, l = Math.sqrt(r * r + i * i), u = Math.sqrt(a * a + o * o), d = s.x - c.x, f = s.y - c.y, p = l + u == 0 ? 0 : u / (l + u), m = {
x: c.x + d * p,
y: c.y + f * p
}, h = t.x - m.x, g = t.y - m.y;
return {
c1: new qd(s.x + h, s.y + g),
c2: new qd(c.x + h, c.y + g)
};
}
length() {
let e = 0, t, n;
for (let r = 0; r <= 10; r += 1) {
let i = r / 10, a = this.point(i, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x), o = this.point(i, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);
if (r > 0) {
let r = a - t, i = o - n;
e += Math.sqrt(r * r + i * i);
}
t = a, n = o;
}
return e;
}
point(e, t, n, r, i) {
return t * (1 - e) * (1 - e) * (1 - e) + 3 * n * (1 - e) * (1 - e) * e + 3 * r * (1 - e) * e * e + i * e * e * e;
}
}, Yd = class {
_et;
constructor() {
try {
this._et = new EventTarget();
} catch {
this._et = document;
}
}
addEventListener(e, t, n) {
this._et.addEventListener(e, t, n);
}
dispatchEvent(e) {
return this._et.dispatchEvent(e);
}
removeEventListener(e, t, n) {
this._et.removeEventListener(e, t, n);
}
};
function Xd(e, t = 250) {
let n = 0, r = null, i, a, o, s = () => {
n = Date.now(), r = null, i = e.apply(a, o), r || (a = null, o = []);
};
return function(...c) {
let l = Date.now(), u = t - (l - n);
return a = this, o = c, u <= 0 || u > t ? (r &&= (clearTimeout(r), null), n = l, i = e.apply(a, o), r || (a = null, o = [])) : r ||= window.setTimeout(s, u), i;
};
}
var Zd = class e extends Yd {
constructor(t, n = {}) {
super(), this.canvas = t, this.velocityFilterWeight = n.velocityFilterWeight || .7, this.minWidth = n.minWidth || .5, this.maxWidth = n.maxWidth || 2.5, this.throttle = n.throttle ?? 16, this.minDistance = n.minDistance ?? 5, this.dotSize = n.dotSize || 0, this.penColor = n.penColor || "black", this.backgroundColor = n.backgroundColor || "rgba(0,0,0,0)", this.compositeOperation = n.compositeOperation || "source-over", this.canvasContextOptions = n.canvasContextOptions ?? {}, this._strokeMoveUpdate = this.throttle ? Xd(e.prototype._strokeUpdate, this.throttle) : e.prototype._strokeUpdate, this._handleMouseDown = this._handleMouseDown.bind(this), this._handleMouseMove = this._handleMouseMove.bind(this), this._handleMouseUp = this._handleMouseUp.bind(this), this._handleTouchStart = this._handleTouchStart.bind(this), this._handleTouchMove = this._handleTouchMove.bind(this), this._handleTouchEnd = this._handleTouchEnd.bind(this), this._handlePointerDown = this._handlePointerDown.bind(this), this._handlePointerMove = this._handlePointerMove.bind(this), this._handlePointerUp = this._handlePointerUp.bind(this), this._handlePointerCancel = this._handlePointerCancel.bind(this), this._handleTouchCancel = this._handleTouchCancel.bind(this), this._ctx = t.getContext("2d", this.canvasContextOptions), this.clear(), this.on();
}
dotSize;
minWidth;
maxWidth;
penColor;
minDistance;
velocityFilterWeight;
compositeOperation;
backgroundColor;
throttle;
canvasContextOptions;
_ctx;
_drawingStroke = !1;
_isEmpty = !0;
_dataUrl;
_dataUrlOptions;
_lastPoints = [];
_data = [];
_lastVelocity = 0;
_lastWidth = 0;
_strokeMoveUpdate;
_strokePointerId;
clear() {
let { _ctx: e, canvas: t } = this;
e.fillStyle = this.backgroundColor, e.clearRect(0, 0, t.width, t.height), e.fillRect(0, 0, t.width, t.height), this._data = [], this._reset(this._getPointGroupOptions()), this._isEmpty = !0, this._dataUrl = void 0, this._dataUrlOptions = void 0, this._strokePointerId = void 0;
}
redraw() {
let e = this._data, t = this._dataUrl, n = this._dataUrlOptions;
this.clear(), t && this.fromDataURL(t, n), this.fromData(e, { clear: !1 });
}
fromDataURL(e, t = {}) {
return new Promise((n, r) => {
let i = new Image(), a = t.ratio || window.devicePixelRatio || 1, o = t.width || this.canvas.width / a, s = t.height || this.canvas.height / a, c = t.xOffset || 0, l = t.yOffset || 0;
this._reset(this._getPointGroupOptions()), i.onload = () => {
this._ctx.drawImage(i, c, l, o, s), n();
}, i.onerror = (e) => {
r(e);
}, i.crossOrigin = "anonymous", i.src = e, this._isEmpty = !1, this._dataUrl = e, this._dataUrlOptions = { ...t };
});
}
toDataURL(e = "image/png", t) {
switch (e) {
case "image/svg+xml": return typeof t != "object" && (t = void 0), `data:image/svg+xml;base64,${btoa(this.toSVG(t))}`;
default: return typeof t != "number" && (t = void 0), this.canvas.toDataURL(e, t);
}
}
on() {
this.canvas.style.touchAction = "none", this.canvas.style.msTouchAction = "none", this.canvas.style.userSelect = "none", this.canvas.style.webkitUserSelect = "none";
let e = /Macintosh/.test(navigator.userAgent) && "ontouchstart" in document;
window.PointerEvent && !e ? this._handlePointerEvents() : (this._handleMouseEvents(), "ontouchstart" in window && this._handleTouchEvents());
}
off() {
this.canvas.style.touchAction = "auto", this.canvas.style.msTouchAction = "auto", this.canvas.style.userSelect = "auto", this.canvas.style.webkitUserSelect = "auto", this.canvas.removeEventListener("pointerdown", this._handlePointerDown), this.canvas.removeEventListener("mousedown", this._handleMouseDown), this.canvas.removeEventListener("touchstart", this._handleTouchStart), this._removeMoveUpEventListeners();
}
_getListenerFunctions() {
let e = window.document === this.canvas.ownerDocument ? window : this.canvas.ownerDocument.defaultView ?? this.canvas.ownerDocument;
return {
addEventListener: e.addEventListener.bind(e),
removeEventListener: e.removeEventListener.bind(e)
};
}
_removeMoveUpEventListeners() {
let { removeEventListener: e } = this._getListenerFunctions();
e("pointermove", this._handlePointerMove), e("pointerup", this._handlePointerUp), e("pointercancel", this._handlePointerCancel), e("mousemove", this._handleMouseMove), e("mouseup", this._handleMouseUp), e("touchmove", this._handleTouchMove), e("touchend", this._handleTouchEnd), e("touchcancel", this._handleTouchCancel);
}
isEmpty() {
return this._isEmpty;
}
fromData(e, { clear: t = !0 } = {}) {
t && this.clear(), this._fromData(e, this._drawCurve.bind(this), this._drawDot.bind(this)), this._data = this._data.concat(e);
}
toData() {
return this._data;
}
_isLeftButtonPressed(e, t) {
return t ? e.buttons === 1 : (e.buttons & 1) == 1;
}
_pointerEventToSignatureEvent(e) {
return {
event: e,
type: e.type,
x: e.clientX,
y: e.clientY,
pressure: "pressure" in e ? e.pressure : 0
};
}
_touchEventToSignatureEvent(e) {
let t = e.changedTouches[0];
return {
event: e,
type: e.type,
x: t.clientX,
y: t.clientY,
pressure: t.force
};
}
_handleMouseDown(e) {
!this._isLeftButtonPressed(e, !0) || this._drawingStroke || this._strokeBegin(this._pointerEventToSignatureEvent(e));
}
_handleMouseMove(e) {
if (!this._isLeftButtonPressed(e, !0) || !this._drawingStroke) {
this._strokeEnd(this._pointerEventToSignatureEvent(e), !1);
return;
}
this._strokeMoveUpdate(this._pointerEventToSignatureEvent(e));
}
_handleMouseUp(e) {
this._isLeftButtonPressed(e) || this._strokeEnd(this._pointerEventToSignatureEvent(e));
}
_handleTouchStart(e) {
e.targetTouches.length !== 1 || this._drawingStroke || (e.cancelable && e.preventDefault(), this._strokeBegin(this._touchEventToSignatureEvent(e)));
}
_handleTouchMove(e) {
if (e.targetTouches.length === 1) {
if (e.cancelable && e.preventDefault(), !this._drawingStroke) {
this._strokeEnd(this._touchEventToSignatureEvent(e), !1);
return;
}
this._strokeMoveUpdate(this._touchEventToSignatureEvent(e));
}
}
_handleTouchEnd(e) {
e.targetTouches.length === 0 && (e.cancelable && e.preventDefault(), this._strokeEnd(this._touchEventToSignatureEvent(e)));
}
_handlePointerCancel(e) {
this._allowPointerId(e) && (e.preventDefault(), this._strokeEnd(this._pointerEventToSignatureEvent(e), !1));
}
_handleTouchCancel(e) {
e.cancelable && e.preventDefault(), this._strokeEnd(this._touchEventToSignatureEvent(e), !1);
}
_getPointerId(e) {
return e.persistentDeviceId || e.pointerId;
}
_allowPointerId(e, t = !1) {
return this._strokePointerId === void 0 ? t : this._getPointerId(e) === this._strokePointerId;
}
_handlePointerDown(e) {
this._drawingStroke || !this._isLeftButtonPressed(e) || !this._allowPointerId(e, !0) || (this._strokePointerId = this._getPointerId(e), e.preventDefault(), this._strokeBegin(this._pointerEventToSignatureEvent(e)));
}
_handlePointerMove(e) {
if (this._allowPointerId(e)) {
if (!this._isLeftButtonPressed(e, !0) || !this._drawingStroke) {
this._strokeEnd(this._pointerEventToSignatureEvent(e), !1);
return;
}
e.preventDefault(), this._strokeMoveUpdate(this._pointerEventToSignatureEvent(e));
}
}
_handlePointerUp(e) {
this._isLeftButtonPressed(e) || !this._allowPointerId(e) || (e.preventDefault(), this._strokeEnd(this._pointerEventToSignatureEvent(e)));
}
_getPointGroupOptions(e) {
return {
penColor: e && "penColor" in e ? e.penColor : this.penColor,
dotSize: e && "dotSize" in e ? e.dotSize : this.dotSize,
minWidth: e && "minWidth" in e ? e.minWidth : this.minWidth,
maxWidth: e && "maxWidth" in e ? e.maxWidth : this.maxWidth,
velocityFilterWeight: e && "velocityFilterWeight" in e ? e.velocityFilterWeight : this.velocityFilterWeight,
compositeOperation: e && "compositeOperation" in e ? e.compositeOperation : this.compositeOperation
};
}
_strokeBegin(e) {
if (!this.dispatchEvent(new CustomEvent("beginStroke", {
detail: e,
cancelable: !0
}))) return;
let { addEventListener: t } = this._getListenerFunctions();
switch (e.event.type) {
case "mousedown":
t("mousemove", this._handleMouseMove, { passive: !1 }), t("mouseup", this._handleMouseUp, { passive: !1 });
break;
case "touchstart":
t("touchmove", this._handleTouchMove, { passive: !1 }), t("touchend", this._handleTouchEnd, { passive: !1 }), t("touchcancel", this._handleTouchCancel, { passive: !1 });
break;
case "pointerdown":
t("pointermove", this._handlePointerMove, { passive: !1 }), t("pointerup", this._handlePointerUp, { passive: !1 }), t("pointercancel", this._handlePointerCancel, { passive: !1 });
break;
default:
}
this._drawingStroke = !0;
let n = this._getPointGroupOptions(), r = {
...n,
points: []
};
this._data.push(r), this._reset(n), this._strokeUpdate(e);
}
_strokeUpdate(e) {
if (!this._drawingStroke) return;
if (this._data.length === 0) {
this._strokeBegin(e);
return;
}
this.dispatchEvent(new CustomEvent("beforeUpdateStroke", { detail: e }));
let t = this._createPoint(e.x, e.y, e.pressure), n = this._data[this._data.length - 1], r = n.points, i = r.length > 0 && r[r.length - 1], a = i ? t.distanceTo(i) <= this.minDistance : !1, o = this._getPointGroupOptions(n);
if (!i || !(i && a)) {
let e = this._addPoint(t, o);
i ? e && this._drawCurve(e, o) : this._drawDot(t, o), r.push({
time: t.time,
x: t.x,
y: t.y,
pressure: t.pressure
});
}
this.dispatchEvent(new CustomEvent("afterUpdateStroke", { detail: e }));
}
_strokeEnd(e, t = !0) {
this._removeMoveUpEventListeners(), this._drawingStroke && (t && this._strokeUpdate(e), this._drawingStroke = !1, this._strokePointerId = void 0, this.dispatchEvent(new CustomEvent("endStroke", { detail: e })));
}
_handlePointerEvents() {
this._drawingStroke = !1, this.canvas.addEventListener("pointerdown", this._handlePointerDown, { passive: !1 });
}
_handleMouseEvents() {
this._drawingStroke = !1, this.canvas.addEventListener("mousedown", this._handleMouseDown, { passive: !1 });
}
_handleTouchEvents() {
this.canvas.addEventListener("touchstart", this._handleTouchStart, { passive: !1 });
}
_reset(e) {
this._lastPoints = [], this._lastVelocity = 0, this._lastWidth = (e.minWidth + e.maxWidth) / 2, this._ctx.fillStyle = e.penColor, this._ctx.globalCompositeOperation = e.compositeOperation;
}
_createPoint(e, t, n) {
let r = this.canvas.getBoundingClientRect();
return new qd(e - r.left, t - r.top, n, (/* @__PURE__ */ new Date()).getTime());
}
_addPoint(e, t) {
let { _lastPoints: n } = this;
if (n.push(e), n.length > 2) {
n.length === 3 && n.unshift(n[0]);
let e = this._calculateCurveWidths(n[1], n[2], t), r = Jd.fromPoints(n, e);
return n.shift(), r;
}
return null;
}
_calculateCurveWidths(e, t, n) {
let r = n.velocityFilterWeight * t.velocityFrom(e) + (1 - n.velocityFilterWeight) * this._lastVelocity, i = this._strokeWidth(r, n), a = {
end: i,
start: this._lastWidth
};
return this._lastVelocity = r, this._lastWidth = i, a;
}
_strokeWidth(e, t) {
return Math.max(t.maxWidth / (e + 1), t.minWidth);
}
_drawCurveSegment(e, t, n) {
let r = this._ctx;
r.moveTo(e, t), r.arc(e, t, n, 0, 2 * Math.PI, !1), this._isEmpty = !1;
}
_drawCurve(e, t) {
let n = this._ctx, r = e.endWidth - e.startWidth, i = Math.ceil(e.length()) * 2;
n.beginPath(), n.fillStyle = t.penColor;
for (let n = 0; n < i; n += 1) {
let a = n / i, o = a * a, s = o * a, c = 1 - a, l = c * c, u = l * c, d = u * e.startPoint.x;
d += 3 * l * a * e.control1.x, d += 3 * c * o * e.control2.x, d += s * e.endPoint.x;
let f = u * e.startPoint.y;
f += 3 * l * a * e.control1.y, f += 3 * c * o * e.control2.y, f += s * e.endPoint.y;
let p = Math.min(e.startWidth + s * r, t.maxWidth);
this._drawCurveSegment(d, f, p);
}
n.closePath(), n.fill();
}
_drawDot(e, t) {
let n = this._ctx, r = t.dotSize > 0 ? t.dotSize : (t.minWidth + t.maxWidth) / 2;
n.beginPath(), this._drawCurveSegment(e.x, e.y, r), n.closePath(), n.fillStyle = t.penColor, n.fill();
}
_fromData(e, t, n) {
for (let r of e) {
let { points: e } = r, i = this._getPointGroupOptions(r);
if (e.length > 1) for (let n = 0; n < e.length; n += 1) {
let r = e[n], a = new qd(r.x, r.y, r.pressure, r.time);
n === 0 && this._reset(i);
let o = this._addPoint(a, i);
o && t(o, i);
}
else this._reset(i), n(e[0], i);
}
}
toSVG({ includeBackgroundColor: e = !1, includeDataUrl: t = !1 } = {}) {
let n = this._data, r = Math.max(window.devicePixelRatio || 1, 1), i = this.canvas.width / r, a = this.canvas.height / r, o = document.createElementNS("http://www.w3.org/2000/svg", "svg");
if (o.setAttribute("xmlns", "http://www.w3.org/2000/svg"), o.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), o.setAttribute("viewBox", `0 0 ${i} ${a}`), o.setAttribute("width", i.toString()), o.setAttribute("height", a.toString()), e && this.backgroundColor) {
let e = document.createElement("rect");
e.setAttribute("width", "100%"), e.setAttribute("height", "100%"), e.setAttribute("fill", this.backgroundColor), o.appendChild(e);
}
if (t && this._dataUrl) {
let e = this._dataUrlOptions?.ratio || window.devicePixelRatio || 1, t = this._dataUrlOptions?.width || this.canvas.width / e, n = this._dataUrlOptions?.height || this.canvas.height / e, r = this._dataUrlOptions?.xOffset || 0, i = this._dataUrlOptions?.yOffset || 0, a = document.createElement("image");
a.setAttribute("x", r.toString()), a.setAttribute("y", i.toString()), a.setAttribute("width", t.toString()), a.setAttribute("height", n.toString()), a.setAttribute("preserveAspectRatio", "none"), a.setAttribute("href", this._dataUrl), o.appendChild(a);
}
return this._fromData(n, (e, { penColor: t }) => {
let n = document.createElement("path");
if (!isNaN(e.control1.x) && !isNaN(e.control1.y) && !isNaN(e.control2.x) && !isNaN(e.control2.y)) {
let r = `M ${e.startPoint.x.toFixed(3)},${e.startPoint.y.toFixed(3)} C ${e.control1.x.toFixed(3)},${e.control1.y.toFixed(3)} ${e.control2.x.toFixed(3)},${e.control2.y.toFixed(3)} ${e.endPoint.x.toFixed(3)},${e.endPoint.y.toFixed(3)}`;
n.setAttribute("d", r), n.setAttribute("stroke-width", (e.endWidth * 2.25).toFixed(3)), n.setAttribute("stroke", t), n.setAttribute("fill", "none"), n.setAttribute("stroke-linecap", "round"), o.appendChild(n);
}
}, (e, { penColor: t, dotSize: n, minWidth: r, maxWidth: i }) => {
let a = document.createElement("circle"), s = n > 0 ? n : (r + i) / 2;
a.setAttribute("r", s.toString()), a.setAttribute("cx", e.x.toString()), a.setAttribute("cy", e.y.toString()), a.setAttribute("fill", t), o.appendChild(a);
}), o.outerHTML;
}
};
//#endregion
//#region components/signature-pad/NewbieSignaturePad.jsx
function Qd(e) {
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
//#endregion
//#region components/signature-pad/index.js
var $d = In(/* @__PURE__ */ A({
name: "NewbieSignaturePad",
props: {
title: {
type: String,
default: ""
},
readonly: {
type: Boolean,
default: !1
},
agreement: {
type: String,
default: ""
},
preset: {
type: String,
default: ""
}
},
emits: ["save"],
setup(e, { emit: t, expose: n, slots: r }) {
let { t: i } = l(), a = N(!1), o = N(null), s = N(null), c = N(null), u = N(!1), d = () => {
a.value = !0;
}, f = () => {
c.value.width = s.value.offsetWidth, o.value?.fromData(o.value?.toData());
};
window.onresize = f;
let p = () => {
c.value && (f(), o.value = new Zd(c.value), e.preset && o.value.fromDataURL(e.preset), e.readonly && o.value.off());
}, m = () => {
o.value && o.value.clear();
}, h = () => {
if (!(!o.value || o.value.isEmpty())) {
if (e.agreement && !u.value) {
R.warn(i("signature-pad.agreement"));
return;
}
t("save", o.value.toDataURL()), a.value = !1;
}
}, g = () => {
a.value = !1;
};
return I(a, (e) => {
e && setTimeout(p, 100);
}), n({ open: d }), () => {
let t, n, o;
return O(Xe, {
open: a.value,
"onUpdate:open": (e) => a.value = e,
footer: null,
width: 600
}, { default: () => [O("div", { class: "newbie-signature-pad" }, [
r.title || e.title ? O("div", { class: "newbie-signature-pad__title" }, [r.title?.() || e.title]) : null,
O("div", {
class: "newbie-signature-pad__canvas-container",
ref: s
}, [O("canvas", {
class: "newbie-signature-pad__canvas",
ref: c
}, null)]),
e.agreement && !e.readonly && O("div", { class: "newbie-signature-pad__agreement" }, [O(Ae, {
checked: u.value,
"onUpdate:checked": (e) => u.value = e
}, { default: () => [e.agreement] })]),
e.readonly ? O("div", { class: "newbie-signature-pad__actions" }, [O(zn, {
type: "default",
onClick: g
}, Qd(t = i("common.close")) ? t : { default: () => [t] })]) : O("div", { class: "newbie-signature-pad__actions" }, [O(zn, {
type: "default",
onClick: m,
style: { marginRight: "4px" }
}, Qd(n = i("common.clear")) ? n : { default: () => [n] }), O(zn, {
type: "primary",
onClick: h
}, Qd(o = i("common.save")) ? o : { default: () => [o] })])
])] });
};
}
})), ef = /* @__PURE__ */ a({
NewbieAddress: () => Rn,
NewbieButton: () => Bn,
NewbieCopy: () => Kd,
NewbieEditor: () => ar,
NewbieForm: () => Td,
NewbieFormDesigner: () => Gd,
NewbieList: () => Ed,
NewbieModal: () => Dd,
NewbiePassword: () => Od,
NewbieProvider: () => kd,
NewbieSearch: () => Ad,
NewbieSignaturePad: () => $d,
NewbieTable: () => Uu,
NewbieUploader: () => jd,
useAddressFullCode: () => Ln,
useTableActions: () => Bu,
useTableFile: () => Hu,
useTableImage: () => Vu
}), tf = {
install(e) {
e.use(m);
for (let t in ef) {
let n = ef[t];
e.use(n);
}
},
config({ httpStatus: e }) {
e && Object.keys(e).length && c(e);
}
};
//#endregion
export { Rn as NewbieAddress, Bn as NewbieButton, Kd as NewbieCopy, ar as NewbieEditor, Td as NewbieForm, Gd as NewbieFormDesigner, Ed as NewbieList, Dd as NewbieModal, Od as NewbiePassword, kd as NewbieProvider, Ad as NewbieSearch, $d as NewbieSignaturePad, Uu as NewbieTable, jd as NewbieUploader, tf as default, Ln as useAddressFullCode, Bu as useTableActions, Hu as useTableFile, Vu as useTableImage };
//# sourceMappingURL=jobsys-newbie.js.map