hyperscript-rxjs 1.3.18 → 1.3.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,4 @@
1
1
  import { BehaviorSubject } from 'rxjs';
2
- import { HyperscriptExtensions as HyperscriptExtensions_2 } from './HyperscriptExtensions.d.ts';
3
2
  import { Observable } from 'rxjs';
4
3
  import { Observer as Observer_2 } from 'rxjs';
5
4
  import { Subject } from 'rxjs';
@@ -120,9 +119,6 @@ export declare function caption(props?: {
120
119
  [_: string]: any;
121
120
  }, ...childNodes: any[]): HyperscriptExtensions<HTMLElement>;
122
121
 
123
- /**
124
- * @typedef {import("./HyperscriptExtensions.d.ts").HyperscriptExtensions<HTMLInputElement>} HyperscriptInputElement
125
- */
126
122
  /**
127
123
  * 创建一个支持 RxJS 的复选框组件。
128
124
  *
@@ -697,9 +693,6 @@ export declare function hr(props?: {
697
693
  [_: string]: any;
698
694
  }, ...childNodes: any[]): HyperscriptExtensions<HTMLHRElement>;
699
695
 
700
- /**
701
- * @typedef {import("./HyperscriptExtensions.d.ts").HyperscriptExtensions<HTMLElement>} HyperscriptElement
702
- */
703
696
  /**
704
697
  * Creates an HTML element with extended event handling capabilities
705
698
  * @public
@@ -710,22 +703,20 @@ export declare function hr(props?: {
710
703
  */
711
704
  export declare function hyperscript(elemName: string, ...args: any[]): HyperscriptElement;
712
705
 
713
- export declare type HyperscriptElement = HyperscriptExtensions_2<HTMLElement>;
706
+ export declare type HyperscriptElement = HyperscriptExtensions<HTMLElement>;
714
707
 
715
- export declare type HyperscriptExtensions<T extends HTMLElement> = HyperscriptExtensions_2<T>;
716
-
717
- declare type HyperscriptExtensions_3<T extends HTMLElement> =
708
+ export declare type HyperscriptExtensions<T extends HTMLElement> =
718
709
  T & {
719
710
 
720
711
  pipeEvent(
721
712
  event: string,
722
713
  subscriber: (input$: Observable<Event>) => Subscription
723
- ): HyperscriptExtensions_3<T>;
714
+ ): HyperscriptExtensions<T>;
724
715
 
725
716
  subscribeEvent(
726
717
  event: string,
727
718
  observer: ((value: Event) => void) | Partial<Observer_2<Event>>
728
- ): HyperscriptExtensions_3<T>;
719
+ ): HyperscriptExtensions<T>;
729
720
 
730
721
  unsubscribe(): void;
731
722
 
@@ -733,15 +724,11 @@ T & {
733
724
 
734
725
  };
735
726
 
736
- export declare type HyperscriptInputElement = HyperscriptExtensions_2<HTMLInputElement>;
737
-
738
- declare type HyperscriptInputElement_2 = HyperscriptExtensions_3<HTMLInputElement>;
739
-
740
- export declare type HyperscriptSelectElement = HyperscriptExtensions_2<HTMLSelectElement>;
727
+ export declare type HyperscriptInputElement = HyperscriptExtensions<HTMLInputElement>;
741
728
 
742
- declare type HyperscriptSelectElement_2 = HyperscriptExtensions_3<HTMLSelectElement>;
729
+ export declare type HyperscriptSelectElement = HyperscriptExtensions<HTMLSelectElement>;
743
730
 
744
- declare type HyperscriptTextAreaElement = HyperscriptExtensions_3<HTMLTextAreaElement>;
731
+ export declare type HyperscriptTextAreaElement = HyperscriptExtensions<HTMLTextAreaElement>;
745
732
 
746
733
  export declare function i(props?: {
747
734
  [_: string]: any;
@@ -853,9 +840,6 @@ export declare function meter(props?: {
853
840
  [_: string]: any;
854
841
  }, ...childNodes: any[]): HyperscriptExtensions<HTMLMeterElement>;
855
842
 
856
- /**
857
- * @typedef {import("./HyperscriptExtensions.d.ts").HyperscriptExtensions<HTMLSelectElement>} HyperscriptSelectElement
858
- */
859
843
  /**
860
844
  * 创建一个支持多选功能的 <select> 元素,并绑定选项的选中状态。必须手动添加控件更新BehaviorSubject的事件。
861
845
  *
@@ -911,7 +895,7 @@ export declare function normalizeChildNodes(childNodes: any[]): Node[];
911
895
  export declare function numberbox(props: {
912
896
  number: BehaviorSubject<number>;
913
897
  [key: string]: any;
914
- }): HyperscriptInputElement_2;
898
+ }): HyperscriptInputElement;
915
899
 
916
900
  /**
917
901
  * ObservableArray 是一个可观察的数组,支持 insertBefore、removeChild、replaceChild 操作,
@@ -1082,7 +1066,7 @@ export declare function queryStringify(data: Object): string;
1082
1066
  export declare function radio(props: {
1083
1067
  checked: BehaviorSubject<boolean>;
1084
1068
  [key: string]: any;
1085
- }): HyperscriptInputElement_2;
1069
+ }): HyperscriptInputElement;
1086
1070
 
1087
1071
  /**
1088
1072
  * 创建一个从 0 到 length-1 的数字数组。
@@ -1147,7 +1131,7 @@ export declare function select(props: {
1147
1131
  selectedIndex?: BehaviorSubject<number>;
1148
1132
  value?: BehaviorSubject<string>;
1149
1133
  [key: string]: any;
1150
- }, ...options: HTMLOptionElement[]): HyperscriptSelectElement_2;
1134
+ }, ...options: HTMLOptionElement[]): HyperscriptSelectElement;
1151
1135
 
1152
1136
  /**
1153
1137
  *
@@ -1316,7 +1300,7 @@ export declare function textarea(props: {
1316
1300
  export declare function textbox(props: {
1317
1301
  value: BehaviorSubject<string>;
1318
1302
  [key: string]: any;
1319
- }): HyperscriptInputElement_2;
1303
+ }): HyperscriptInputElement;
1320
1304
 
1321
1305
  /**
1322
1306
  * @typedef {Text & {subscription?: Subscription, unsubscribe?: ()=>void}} ObservableTextNode
@@ -6,23 +6,23 @@
6
6
  else if(typeof exports === 'object')
7
7
  exports["hyperscriptRxjs"] = factory(require("rxjs"), require("rxjs/operators"));
8
8
  else
9
- root["hyperscriptRxjs"] = factory(root["rxjs"], root["rxjs"]);
10
- })(self, (__WEBPACK_EXTERNAL_MODULE__968__, __WEBPACK_EXTERNAL_MODULE__506__) => {
9
+ root["hyperscriptRxjs"] = factory(root[undefined], root["rxjs"]);
10
+ })(self, (__WEBPACK_EXTERNAL_MODULE__313__, __WEBPACK_EXTERNAL_MODULE__506__) => {
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ "use strict";
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 506:
15
+ /***/ 313:
16
16
  /***/ ((module) => {
17
17
 
18
- module.exports = __WEBPACK_EXTERNAL_MODULE__506__;
18
+ module.exports = __WEBPACK_EXTERNAL_MODULE__313__;
19
19
 
20
20
  /***/ }),
21
21
 
22
- /***/ 968:
22
+ /***/ 506:
23
23
  /***/ ((module) => {
24
24
 
25
- module.exports = __WEBPACK_EXTERNAL_MODULE__968__;
25
+ module.exports = __WEBPACK_EXTERNAL_MODULE__506__;
26
26
 
27
27
  /***/ })
28
28
 
@@ -1042,8 +1042,8 @@ const types = ["undefined",
1042
1042
 
1043
1043
 
1044
1044
 
1045
- // EXTERNAL MODULE: external {"commonjs":"rxjs","commonjs2":"rxjs","amd":"rxjs","root":"rxjs"}
1046
- var external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_ = __webpack_require__(968);
1045
+ // EXTERNAL MODULE: external {"commonjs":"rxjs","commonjs2":"rxjs","amd":"rxjs"}
1046
+ var external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_ = __webpack_require__(313);
1047
1047
  // EXTERNAL MODULE: external {"commonjs":"rxjs/operators","commonjs2":"rxjs/operators","amd":"rxjs/operators","root":"rxjs"}
1048
1048
  var operators_root_rxjs_ = __webpack_require__(506);
1049
1049
  ;// ./src/object/pluckProperty.js
@@ -1439,7 +1439,7 @@ class Deep {
1439
1439
  */
1440
1440
  combineLatest() {
1441
1441
  let values = this.getValues();
1442
- return (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.combineLatest)(values).pipe((0,operators_root_rxjs_.map)(values => this.replaceValue(values)));
1442
+ return (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.combineLatest)(values).pipe((0,operators_root_rxjs_.map)(values => this.replaceValue(values)));
1443
1443
  }
1444
1444
 
1445
1445
  /**
@@ -1449,7 +1449,7 @@ class Deep {
1449
1449
  * @returns {Observable<[(string|number)[], U]>}
1450
1450
  */
1451
1451
  merge() {
1452
- return (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.from)(this.entries).pipe((0,operators_root_rxjs_.mergeMap)(([keyPath, value$]) => value$.pipe((0,operators_root_rxjs_.map)(
1452
+ return (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.from)(this.entries).pipe((0,operators_root_rxjs_.mergeMap)(([keyPath, value$]) => value$.pipe((0,operators_root_rxjs_.map)(
1453
1453
  /**
1454
1454
  * @returns {[(string|number)[], U]}
1455
1455
  */
@@ -1476,7 +1476,7 @@ class Deep {
1476
1476
  * @returns {Deep<BehaviorSubject<T>>}
1477
1477
  */
1478
1478
  static fromBehaviorSubject(obj) {
1479
- return Deep.fromObject(obj, v => (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(v) || v instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.Subscription).filter(([k, v]) => v instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject);
1479
+ return Deep.fromObject(obj, v => (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(v) || v instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.Subscription).filter(([k, v]) => v instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject);
1480
1480
  }
1481
1481
 
1482
1482
  /**
@@ -1485,7 +1485,7 @@ class Deep {
1485
1485
  * @returns
1486
1486
  */
1487
1487
  static fromObservable(obj) {
1488
- return Deep.fromObject(obj, v => (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(v) || v instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.Subscription).filter(([k, v]) => (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(v));
1488
+ return Deep.fromObject(obj, v => (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(v) || v instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.Subscription).filter(([k, v]) => (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(v));
1489
1489
  }
1490
1490
  }
1491
1491
  ;// ./src/deep/0.js
@@ -1503,7 +1503,7 @@ class Deep {
1503
1503
  *
1504
1504
  */
1505
1505
  function isRxType(obj) {
1506
- return typeof obj === 'object' && obj && ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(obj) || obj instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.Subscription);
1506
+ return typeof obj === 'object' && obj && ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(obj) || obj instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.Subscription);
1507
1507
  }
1508
1508
  ;// ./src/deep-rxjs/ObservableArray.js
1509
1509
 
@@ -1531,7 +1531,7 @@ class ObservableArray extends Array {
1531
1531
  * 变化通知的 Subject。
1532
1532
  * @type {Subject<any[]>}
1533
1533
  */
1534
- this.action$ = new external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.Subject();
1534
+ this.action$ = new external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.Subject();
1535
1535
 
1536
1536
  /**
1537
1537
  * 插入元素事件流,发出 [item, index]。
@@ -1694,7 +1694,7 @@ const attachSubscriptionToNode = (elem, subscription) => {
1694
1694
  if (!(elem instanceof Node)) {
1695
1695
  throw new Error('Valid DOM node required');
1696
1696
  }
1697
- if (!(subscription instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.Subscription)) {
1697
+ if (!(subscription instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.Subscription)) {
1698
1698
  throw new Error('Valid RxJS subscription required');
1699
1699
  }
1700
1700
 
@@ -1737,7 +1737,7 @@ function pipeEvent(elem) {
1737
1737
  if (typeof subscriber !== 'function') {
1738
1738
  throw new Error('参数 "subscriber" 必须是一个函数。');
1739
1739
  }
1740
- let event$ = (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.fromEvent)(elem, event); // 创建事件流 Observable
1740
+ let event$ = (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.fromEvent)(elem, event); // 创建事件流 Observable
1741
1741
 
1742
1742
  try {
1743
1743
  let subscription = subscriber(event$); // 订阅事件流并处理
@@ -1790,7 +1790,7 @@ function subscribeEvent(elem) {
1790
1790
  }
1791
1791
 
1792
1792
  // 创建事件流 Observable
1793
- let event$ = (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.fromEvent)(elem, event);
1793
+ let event$ = (0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.fromEvent)(elem, event);
1794
1794
 
1795
1795
  // 订阅事件流
1796
1796
  let subscription;
@@ -1919,7 +1919,7 @@ function splitObjectByObservable(obj) {
1919
1919
  let value = obj[key];
1920
1920
 
1921
1921
  // 根据值的类型分类
1922
- if ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(value)) {
1922
+ if ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(value)) {
1923
1923
  observables[key] = value; // 如果是 Observable,存入 observables
1924
1924
  } else {
1925
1925
  scalars[key] = value; // 否则存入 scalars
@@ -2064,7 +2064,7 @@ function subscribeProp(element, key, value$) {
2064
2064
  if (typeof key !== 'string') {
2065
2065
  throw new Error('参数 "key" 必须是一个字符串。');
2066
2066
  }
2067
- if (!(0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(value$)) {
2067
+ if (!(0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(value$)) {
2068
2068
  throw new Error('参数 "value$" 必须是一个有效的 Observable。');
2069
2069
  }
2070
2070
 
@@ -2191,7 +2191,7 @@ function hyperscript(elemName, ...args) {
2191
2191
  return subscribeEvent(element)(event, observer);
2192
2192
  },
2193
2193
  unsubscribe() {
2194
- if ('subscription' in element && element.subscription instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.Subscription) {
2194
+ if ('subscription' in element && element.subscription instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.Subscription) {
2195
2195
  element.subscription.unsubscribe(); // 取消订阅
2196
2196
  delete element.subscription; // 删除属性
2197
2197
  }
@@ -3140,7 +3140,7 @@ function checkbox_checkbox(props) {
3140
3140
  });
3141
3141
 
3142
3142
  // 如果传入了 checked 属性
3143
- if (props.checked && props.checked instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) {
3143
+ if (props.checked && props.checked instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) {
3144
3144
  // 监听复选框的 input 事件,并将选中状态推送到 Observable/Subject
3145
3145
  let subscriber =
3146
3146
  /**
@@ -3306,7 +3306,7 @@ function multiselect(props, ...options) {
3306
3306
 
3307
3307
  /**
3308
3308
  * @internal
3309
- * @typedef {import("./HyperscriptInputElement.d.ts").HyperscriptInputElement} HyperscriptInputElement
3309
+ * @typedef {import("./HyperscriptExtensions.js").HyperscriptInputElement} HyperscriptInputElement
3310
3310
  */
3311
3311
 
3312
3312
  /**
@@ -3332,7 +3332,7 @@ function numberbox(props) {
3332
3332
  ...rest,
3333
3333
  type: 'text'
3334
3334
  });
3335
- if (number && number instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) {
3335
+ if (number && number instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) {
3336
3336
  let value = number.pipe((0,operators_root_rxjs_.map)(n => String(n)));
3337
3337
  subscribeProp(elem, 'value', value);
3338
3338
  let subscriber =
@@ -3374,7 +3374,7 @@ function numberbox(props) {
3374
3374
 
3375
3375
  /**
3376
3376
  * @internal
3377
- * @typedef {import("./HyperscriptInputElement.d.ts").HyperscriptInputElement} HyperscriptInputElement
3377
+ * @typedef {import("./HyperscriptExtensions.d.ts").HyperscriptInputElement} HyperscriptInputElement
3378
3378
  */
3379
3379
 
3380
3380
  /**
@@ -3392,7 +3392,7 @@ function radio_radio(props) {
3392
3392
  ...props,
3393
3393
  type: 'radio'
3394
3394
  });
3395
- if (props.checked && props.checked instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) {
3395
+ if (props.checked && props.checked instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) {
3396
3396
  const subscriber =
3397
3397
  /**
3398
3398
  *
@@ -3422,7 +3422,7 @@ function radio_radio(props) {
3422
3422
 
3423
3423
  /**
3424
3424
  * @internal
3425
- * @typedef {import("./HyperscriptSelectElement.d.ts").HyperscriptSelectElement} HyperscriptSelectElement
3425
+ * @typedef {import("./HyperscriptExtensions.d.ts").HyperscriptSelectElement} HyperscriptSelectElement
3426
3426
  */
3427
3427
 
3428
3428
  /**
@@ -3450,10 +3450,10 @@ function select_select(props, ...options) {
3450
3450
  } = props;
3451
3451
 
3452
3452
  // 确保至少有一个是 BehaviorSubject
3453
- if (elem.options.length > 0 && !(selectedIndex instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) && !(value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject)) {
3453
+ if (elem.options.length > 0 && !(selectedIndex instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) && !(value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject)) {
3454
3454
  throw new Error('`select` requires at least one of `selectedIndex` or `value` to be a BehaviorSubject.');
3455
3455
  }
3456
- if (selectedIndex && selectedIndex instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) {
3456
+ if (selectedIndex && selectedIndex instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) {
3457
3457
  selectedIndex.subscribe(i => {
3458
3458
  /** @type {HTMLOptionElement} */
3459
3459
  elem[i].selected = true;
@@ -3469,7 +3469,7 @@ function select_select(props, ...options) {
3469
3469
  // let subscription = subscriber(event$);
3470
3470
  // attachSubscriptionToNode(elem, subscription);
3471
3471
  }
3472
- if (value && value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) {
3472
+ if (value && value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) {
3473
3473
  value.subscribe(value => {
3474
3474
  Array.from(elem.getElementsByTagName('option')).filter(opt => opt.value === value).forEach(opt => {
3475
3475
  opt.selected = true;
@@ -3513,7 +3513,7 @@ function textarea_textarea(props) {
3513
3513
  const {
3514
3514
  value
3515
3515
  } = props;
3516
- if (!(value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject)) {
3516
+ if (!(value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject)) {
3517
3517
  throw new Error('`value` must be an instance of BehaviorSubject.');
3518
3518
  }
3519
3519
 
@@ -3538,7 +3538,7 @@ function textarea_textarea(props) {
3538
3538
 
3539
3539
  /**
3540
3540
  * @internal
3541
- * @typedef {import("./HyperscriptInputElement.d.ts").HyperscriptInputElement} HyperscriptInputElement
3541
+ * @typedef {import("./HyperscriptExtensions.d.ts").HyperscriptInputElement} HyperscriptInputElement
3542
3542
  */
3543
3543
 
3544
3544
  /**
@@ -3555,7 +3555,7 @@ function textbox(props) {
3555
3555
  const {
3556
3556
  value
3557
3557
  } = props;
3558
- if (!(value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject)) {
3558
+ if (!(value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject)) {
3559
3559
  throw new Error('`value` must be an instance of BehaviorSubject.');
3560
3560
  }
3561
3561
 
@@ -3597,7 +3597,7 @@ function textbox(props) {
3597
3597
  */
3598
3598
  function textNode(text) {
3599
3599
  // 如果传入的是 Observable
3600
- if ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(text)) {
3600
+ if ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(text)) {
3601
3601
  const node = document.createTextNode("");
3602
3602
 
3603
3603
  // 创建订阅并更新文本节点
@@ -3758,7 +3758,7 @@ function pickBehaviorSubject(model) {
3758
3758
  * @throws {Error} 当遇到不符合要求的数据结构时抛出错误
3759
3759
  */
3760
3760
  function loop(value, key, parent) {
3761
- if ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.isObservable)(value) && value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) {
3761
+ if ((0,external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.isObservable)(value) && value instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) {
3762
3762
  return [[key, value.value]]; //保存葉節點
3763
3763
  } else if (value === null || typeof value !== 'object' || isRxType(value)) {
3764
3764
  return [];
@@ -3826,7 +3826,7 @@ function restore(model, src) {
3826
3826
  * @param {any} src - Corresponding source value
3827
3827
  */
3828
3828
  function restore_loop(o, src) {
3829
- if (o instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_root_rxjs_.BehaviorSubject) {
3829
+ if (o instanceof external_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_.BehaviorSubject) {
3830
3830
  // Input value
3831
3831
  o.next(src);
3832
3832
  } else if (o === null || typeof o !== 'object' || isRxType(o)) {
@@ -4163,5 +4163,4 @@ const queryStringify_escape = str => str.replace(/[\x00-\x20#%&+=\x7F]/g, c => m
4163
4163
  /******/ return __webpack_exports__;
4164
4164
  /******/ })()
4165
4165
  ;
4166
- });
4167
- //# sourceMappingURL=hyperscript-rxjs.js.map
4166
+ });
package/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "name": "hyperscript-rxjs",
31
31
  "description": "A js UI library that uses rxjs to handle dom directly.",
32
32
  "author": "cuishengli<34696643@qq.com>",
33
- "version": "1.3.18",
33
+ "version": "1.3.19",
34
34
  "keywords": [
35
35
  "ui",
36
36
  "rxjs",
@@ -1 +0,0 @@
1
- {"version":3,"file":"hyperscript-rxjs.js","mappings":"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","sources":["webpack://hyperscriptRxjs/webpack/universalModuleDefinition","webpack://hyperscriptRxjs/external umd {\"commonjs\":\"rxjs/operators\",\"commonjs2\":\"rxjs/operators\",\"amd\":\"rxjs/operators\",\"root\":\"rxjs\"}","webpack://hyperscriptRxjs/external umd {\"commonjs\":\"rxjs\",\"commonjs2\":\"rxjs\",\"amd\":\"rxjs\",\"root\":\"rxjs\"}","webpack://hyperscriptRxjs/webpack/bootstrap","webpack://hyperscriptRxjs/webpack/runtime/define property getters","webpack://hyperscriptRxjs/webpack/runtime/hasOwnProperty shorthand","webpack://hyperscriptRxjs/webpack/runtime/make namespace object","webpack://hyperscriptRxjs/./src/array/advance.js","webpack://hyperscriptRxjs/./src/array/arrayInsert.js","webpack://hyperscriptRxjs/./src/array/arrayRemove.js","webpack://hyperscriptRxjs/./src/array/findLastIndex.js","webpack://hyperscriptRxjs/./src/array/isRange.js","webpack://hyperscriptRxjs/./src/array/rangeArray.js","webpack://hyperscriptRxjs/./src/array/unwrapArgs.js","webpack://hyperscriptRxjs/./src/array/zipArray.js","webpack://hyperscriptRxjs/./src/array/0.js","webpack://hyperscriptRxjs/./src/comparers/distinctArray.js","webpack://hyperscriptRxjs/./src/comparers/groupSortedEntries.js","webpack://hyperscriptRxjs/./src/comparers/groupArrayBy.js","webpack://hyperscriptRxjs/./src/comparers/differenceSet.js","webpack://hyperscriptRxjs/./src/comparers/findIndexInSet.js","webpack://hyperscriptRxjs/./src/comparers/intersectSet.js","webpack://hyperscriptRxjs/./src/comparers/isEqualset.js","webpack://hyperscriptRxjs/./src/comparers/isSubset.js","webpack://hyperscriptRxjs/./src/comparers/isSuperset.js","webpack://hyperscriptRxjs/./src/comparers/unionSet.js","webpack://hyperscriptRxjs/./src/comparers/sortedArrayToSet.js","webpack://hyperscriptRxjs/./src/comparers/Comparer.js","webpack://hyperscriptRxjs/./src/comparison/defaultCompare.js","webpack://hyperscriptRxjs/./src/comparison/compareKey.js","webpack://hyperscriptRxjs/./src/comparison/compareKeyPath.js","webpack://hyperscriptRxjs/./src/comparison/compareEntries.js","webpack://hyperscriptRxjs/./src/comparers/comparers.js","webpack://hyperscriptRxjs/./src/comparers/0.js","webpack://hyperscriptRxjs/./src/comparison/compareDate.js","webpack://hyperscriptRxjs/./src/comparison/compareNumber.js","webpack://hyperscriptRxjs/./src/comparison/types.js","webpack://hyperscriptRxjs/./src/comparison/0.js","webpack://hyperscriptRxjs/./src/object/pluckProperty.js","webpack://hyperscriptRxjs/./src/structures/groupByFirstLevelKey.js","webpack://hyperscriptRxjs/./src/structures/tojs.js","webpack://hyperscriptRxjs/./src/structures/flat.js","webpack://hyperscriptRxjs/./src/deep/intersectEntries.js","webpack://hyperscriptRxjs/./src/deep/Deep.js","webpack://hyperscriptRxjs/./src/deep/0.js","webpack://hyperscriptRxjs/./src/deep-rxjs/isRxType.js","webpack://hyperscriptRxjs/./src/deep-rxjs/ObservableArray.js","webpack://hyperscriptRxjs/./src/deep-rxjs/0.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/displays/blockLevelFamily.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/displays/inlineFamily.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/displays/getDisplay.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/displays/0.js","webpack://hyperscriptRxjs/./src/nodes/attachSubscriptionToNode.js","webpack://hyperscriptRxjs/./src/nodes/pipeEvent.js","webpack://hyperscriptRxjs/./src/nodes/subscribeEvent.js","webpack://hyperscriptRxjs/./src/nodes/parseHyperscriptArgs.js","webpack://hyperscriptRxjs/./src/nodes/normalizeChildNodes.js","webpack://hyperscriptRxjs/./src/object/splitObjectByObservable.js","webpack://hyperscriptRxjs/./src/props/getNestedProperty.js","webpack://hyperscriptRxjs/./src/props/parsePropName.js","webpack://hyperscriptRxjs/./src/props/setProp.js","webpack://hyperscriptRxjs/./src/props/subscribeProp.js","webpack://hyperscriptRxjs/./src/props/setProps.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/hyperscript.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/tags.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/tabControls/tabRoot.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/tabControls/tabNavItem.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/tabControls/tabPanel.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/tabControls/bindTabIndex.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/tabControls/tabControl.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/tabControls/0.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/checkbox.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/collapse.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/choice.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/flip.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/fragment.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/multiselect.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/numberbox.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/radio.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/select.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/textarea.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/textbox.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/textNode.js","webpack://hyperscriptRxjs/./src/hyperscript-rxjs/0.js","webpack://hyperscriptRxjs/./src/nodes/0.js","webpack://hyperscriptRxjs/./src/object/intersectObject.js","webpack://hyperscriptRxjs/./src/object/isPlainObject.js","webpack://hyperscriptRxjs/./src/object/isEmptyObject.js","webpack://hyperscriptRxjs/./src/object/nestedCombineLatest.js","webpack://hyperscriptRxjs/./src/object/nestedMerge.js","webpack://hyperscriptRxjs/./src/object/pickBehaviorSubject.js","webpack://hyperscriptRxjs/./src/object/restore.js","webpack://hyperscriptRxjs/./src/object/0.js","webpack://hyperscriptRxjs/./src/props/0.js","webpack://hyperscriptRxjs/./src/ramda/compose.js","webpack://hyperscriptRxjs/./src/ramda/cond.js","webpack://hyperscriptRxjs/./src/ramda/fold.js","webpack://hyperscriptRxjs/./src/ramda/pipe.js","webpack://hyperscriptRxjs/./src/ramda/unfold.js","webpack://hyperscriptRxjs/./src/ramda/0.js","webpack://hyperscriptRxjs/./src/structures/erectObject.js","webpack://hyperscriptRxjs/./src/structures/0.js","webpack://hyperscriptRxjs/./src/unquoted-json/stringifyKey.js","webpack://hyperscriptRxjs/./src/unquoted-json/stringifyStringValue.js","webpack://hyperscriptRxjs/./src/unquoted-json/unquotedJsonStringify.js","webpack://hyperscriptRxjs/./src/unquoted-json/queryStringify.js","webpack://hyperscriptRxjs/./src/unquoted-json/0.js","webpack://hyperscriptRxjs/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"rxjs\"), require(\"rxjs/operators\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"rxjs\", \"rxjs/operators\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"hyperscriptRxjs\"] = factory(require(\"rxjs\"), require(\"rxjs/operators\"));\n\telse\n\t\troot[\"hyperscriptRxjs\"] = factory(root[\"rxjs\"], root[\"rxjs\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__968__, __WEBPACK_EXTERNAL_MODULE__506__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__506__;","module.exports = __WEBPACK_EXTERNAL_MODULE__968__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * @template T\r\n * @param {Array<T>} array - 要处理的原数组\r\n * @param {number} n - 要取出的元素个数\r\n * @returns {[Array<T>, Array<T>]} - [已取出的元素数组, 剩余元素数组]\r\n */\r\nexport function advance(array, n) {\r\n let taken = []\r\n for (let i = 0; i < n; i++) {\r\n taken[n - 1 - i] = array[i]\r\n }\r\n return [taken, array.slice(n)]\r\n}","/**\r\n * insert a element at position in place.\r\n * @param {any} array\r\n * @param {any} item\r\n * @param {any} index\r\n */\r\nexport function arrayInsert(array, item, index = array.length) {\r\n const len = array.length\r\n for (let i = len; i > index; i--) {\r\n array[i] = array[i - 1]\r\n }\r\n array[index] = item\r\n}\r\n","/**\r\n * remove a element in place\r\n * \r\n * @template T\r\n * @param {T[]} array\r\n * @param {number} index\r\n */\r\nexport function arrayRemove(array, index = array.length - 1) {\r\n const len = array.length\r\n for (let i = index; i < len - 1; i++) {\r\n array[i] = array[i + 1]\r\n }\r\n Reflect.deleteProperty(array, len - 1)\r\n array.length = len - 1\r\n}","/**\r\n * 查找数组中最后一个满足条件的元素索引。\r\n *\r\n * @public\r\n * @template T\r\n * @param {T[]} array - 要查找的数组\r\n * @param {(value: T, index: number) => boolean} callbackFn - 判断函数,返回 true 表示找到\r\n * @param {number} [lastIndex=array.length-1] - 可选,查找的起始索引(从后往前)\r\n * @returns {number} - 最后一个满足条件的元素索引,未找到返回 -1\r\n */\r\nexport function findLastIndex(array, callbackFn, lastIndex = array.length - 1) {\r\n lastIndex = Math.min(lastIndex, array.length - 1)\r\n while (lastIndex >= 0) {\r\n if (callbackFn(array[lastIndex], lastIndex)) {\r\n return lastIndex;\r\n }\r\n lastIndex--\r\n }\r\n return -1;\r\n}","/**\r\n * 判断输入的字符串数组是否为从0开始的连续数字区间(如 ['0','1','2',...])。\r\n *\r\n * @public\r\n * @param {string[]} keys - 要检查的字符串数组\r\n * @returns {boolean} - 如果是从0开始的连续数字区间返回 true,否则返回 false\r\n */\r\nexport function isRange(keys) {\r\n if (keys.every(key => /^\\d+$/.test(key))) {\r\n let nums = keys.map(key => parseInt(key))\r\n return nums.every((v, i) => v === i)\r\n }\r\n return false\r\n}\r\n\r\n","/**\r\n * 创建一个从 0 到 length-1 的数字数组。\r\n *\r\n * @public\r\n * @param {number} length - 要创建的数组长度\r\n * @returns {number[]} - 从 0 到 length-1 的数字数组\r\n */\r\nexport function rangeArray(length) {\r\n return Array.from({ length }).map((v, i) => i)\r\n}\r\n","/**\r\n * 简易unwrap参数数组。如果子节点是单个数组,则解构为子节点,否则返回原数组。\r\n *\r\n * @template T\r\n * @param {(T|T[])[]} args - 子节点数组。\r\n * @returns {T[]} - 解构后的子节点数组。\r\n */\r\nexport function unwrapArgs(args) {\r\n return (\r\n /** @type{T[]} */\r\n (args.length === 1 && Array.isArray(args[0])\r\n ? args[0]\r\n : args\r\n ));\r\n}","/**\r\n * 合并两个数组为一个元组数组。\r\n *\r\n * 如果数组长度不同,将以较长的数组为基准,短数组对应位置为 undefined。\r\n *\r\n * @public\r\n * @template T, U\r\n * @param {T[]} a - 第一个数组\r\n * @param {U[]} b - 第二个数组\r\n * @returns {Array<[T, U]>} - 合并后的元组数组\r\n * @throws {Error} 如果 a 或 b 不是数组\r\n */\r\nexport function zipArray(a, b) {\r\n if (!Array.isArray(a) || !Array.isArray(b)) {\r\n throw new Error(\"arrayZip(a,b):both a and b should be array\")\r\n }\r\n if (a.length >= b.length) {\r\n return a.map((v, i) => [v, b[i]])\r\n }\r\n else{\r\n return b.map((v, i) => [a[i], v])\r\n }\r\n}\r\n\r\n","export * from './advance.js'\r\nexport * from './arrayInsert.js'\r\nexport * from './arrayRemove.js'\r\nexport * from './findLastIndex.js'\r\nexport * from './isRange.js'\r\nexport * from './rangeArray.js'\r\nexport * from './unwrapArgs.js'\r\nexport * from './zipArray.js'\r\n\r\n","/**\r\n * 数组去重,并保持元素的相对顺序。\r\n * @template T \r\n * @param {T[]} array\r\n * @param {(a:T,b:T)=>boolean} equals\r\n * @returns {T[]}\r\n */\r\nexport function distinctArray(array, equals) {\r\n /**\r\n * 递归处理去重\r\n * @param {T[]} resultArray - 已去重的结果数组\r\n * @param {T[]} rest - 剩余待处理的数组\r\n * @returns {T[]} - 去重后的数组\r\n */ \r\n function loop(resultArray, rest) {\r\n if (rest.length === 0) {\r\n return resultArray\r\n } else {\r\n let [head, ...tail] = rest\r\n if (resultArray.findIndex(e => equals(head, e)) < 0) {\r\n return loop([...resultArray, head], tail)\r\n } else {\r\n return loop(resultArray, tail)\r\n }\r\n\r\n }\r\n }\r\n\r\n return loop([], array)\r\n}\r\n","\r\n/**\r\n * Groups an array of sorted key-value entries into an array of groups, \r\n * where each group contains entries with the same key.\r\n *\r\n * @template K, V\r\n * @param {[K, V][]} sortedEntries - An array of key-value pairs, \r\n * where the keys are already sorted in ascending order.\r\n * @param {(a:K,b:K)=>number} compare - A comparison function that takes two keys \r\n * and returns a number: 0 if the keys are equal, a negative number if the first key \r\n * is less than the second, and a positive number otherwise.\r\n * @returns {[K, V[]][]} An array of groups, where each group is a tuple \r\n * containing a key and an array of values associated with that key.\r\n */\r\nexport function groupSortedEntries(sortedEntries, compare) {\r\n if (sortedEntries.length === 0) {\r\n return []\r\n }\r\n\r\n const [head,...tail] = sortedEntries\r\n /** @type {[K, V[]]} */\r\n const firstGroup = [head[0], [head[1]]]\r\n\r\n return tail.reduce(\r\n (groups, [k, v]) => {\r\n let [k0, group] = groups[groups.length - 1]\r\n if (compare(k0, k) === 0) {\r\n group.push(v)\r\n } else {\r\n groups.push([k, [v]])\r\n }\r\n return groups\r\n },\r\n [firstGroup]\r\n )\r\n\r\n}\r\n\r\n","import { groupSortedEntries } from './groupSortedEntries.js'\r\n\r\n/**\r\n * 按指定的 key 函数对数组元素分组。\r\n *\r\n * 先将数组元素映射为 [key, value] 对,按 key 排序后,再分组。\r\n *\r\n * @public\r\n * @template T, K\r\n * @param {T[]} array - 要分组的数组\r\n * @param {(item: T) => K} getKey - 生成分组 key 的函数\r\n * @param {(a: K, b: K) => number} compare - key 的比较函数\r\n * @returns {[K, T[]][]} 分组后的结果,每组为 [key, 元素数组]\r\n */\r\nexport function groupArrayBy(array, getKey, compare) {\r\n if (array.length === 0) {\r\n return []\r\n }\r\n\r\n let sortedEntries =\r\n array.map(\r\n /**\r\n * @returns {[K, T]}\r\n */\r\n e => [getKey(e), e]\r\n )\r\n .sort(([ka], [kb]) => compare(ka, kb))\r\n return groupSortedEntries(sortedEntries, compare)\r\n}","/**\r\n * return set1 - set2\r\n * @template T \r\n * @param {T[]} set1\r\n * @param {T[]} set2\r\n * @param {(a: T, b: T) => number} compare\r\n * @returns {T[]}\r\n */\r\nexport function differenceSet(set1, set2, compare) {\r\n /**\r\n * @param {T[]} acc\r\n * @param {T[]} a\r\n * @param {T[]} b\r\n * @returns {T[]}\r\n */\r\n function loop(acc, a, b) {\r\n if (a.length === 0) {\r\n return acc\r\n } else if (b.length === 0) {\r\n return [...acc, ...a]\r\n } else {\r\n let n = compare(a[0], b[0])\r\n if (n === 0) {\r\n return loop(acc, a.slice(1), b.slice(1))\r\n } else if (n < 0) {\r\n return loop([...acc, a[0]], a.slice(1), b)\r\n }\r\n else { // if (n > 0)\r\n return loop(acc, a, b.slice(1))\r\n }\r\n\r\n }\r\n }\r\n return loop([], set1, set2)\r\n}\r\n","/**\r\n * 同Array.findIndex,返回元素在集合中的索引位置\r\n * \r\n * @template T\r\n * @param {T[]} set Array.sort(compare)后的Array\r\n * @param {T} e 是要查找的元素\r\n * @param {(a:T,b:T)=>number} compare 元素的比较函数\r\n */\r\nexport function findIndexInSet(set, e, compare) {\r\n /** @param {number} i */\r\n function loop(i) {\r\n if (i === set.length) {\r\n return -1\r\n } else {\r\n const n = compare(set[i], e)\r\n if (n === 0) {\r\n return i\r\n } else if (n < 0) {\r\n return loop(i + 1)\r\n } else {\r\n return -1\r\n }\r\n }\r\n }\r\n\r\n return loop(0)\r\n}\r\n","/**\r\n * 计算两个有序数组的交集。\r\n * @template T\r\n * @param {T[]} set1 - 第一个已排序的数组\r\n * @param {T[]} set2 - 第二个已排序的数组\r\n * @param {(a: T, b: T) => number} compare - 比较函数\r\n * @returns {T[]} 两数组的交集\r\n */\r\nexport function intersectSet(set1, set2, compare) {\r\n /**\r\n * 递归计算交集\r\n * @param {T[]} acc - 当前交集结果\r\n * @param {T[]} a - 剩余的 set1\r\n * @param {T[]} b - 剩余的 set2\r\n * @returns {T[]} 交集\r\n */\r\n function loop(acc, a, b) {\r\n if (a.length === 0 || b.length === 0) {\r\n return acc\r\n } else {\r\n //每次去掉最大的元素\r\n switch (Math.sign(compare(a[0], b[0]))) {\r\n case -1:\r\n return loop(acc, a.slice(1), b)\r\n case 0:\r\n return loop([...acc, a[0]], a.slice(1), b.slice(1))\r\n case 1:\r\n default:\r\n return loop(acc, a, b.slice(1))\r\n }\r\n }\r\n }\r\n\r\n return loop([], set1, set2)\r\n}","/**\r\n * 判断两个集合是否相等(成员完全相同,顺序无关)。\r\n * @template T\r\n * @param {T[]} set1 - 第一个集合\r\n * @param {T[]} set2 - 第二个集合\r\n * @param {(a: T, b: T) => number} compare - 比较函数\r\n * @returns {boolean} 如果集合相等返回 true,否则返回 false\r\n */\r\nexport function isEqualset(set1, set2, compare) {\r\n /**\r\n * @param {T[]} a\r\n * @param {T[]} b\r\n * @returns {boolean}\r\n */\r\n function loop(a, b) {\r\n if (a.length === 0 && b.length === 0) {\r\n return true\r\n }\r\n\r\n if (a.length > 0 && b.length > 0) {\r\n let [a0, ...aa] = a\r\n let [b0, ...bb] = b\r\n if (compare(a0, b0) === 0) {\r\n return loop(aa, bb)\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n return false\r\n }\r\n return loop(set1, set2)\r\n}","/**\r\n * 判断 set1 是否为 set2 的子集(假定已排序)。\r\n * @template T\r\n * @param {T[]} set1 - 可能为子集的数组\r\n * @param {T[]} set2 - 可能为超集的数组\r\n * @param {(a: T, b: T) => number} compare - 比较函数\r\n * @returns {boolean} 如果 set1 是 set2 的子集返回 true,否则返回 false\r\n */\r\nexport function isSubset(set1, set2, compare) {\r\n /**\r\n * @param {T[]} a\r\n * @param {T[]} b\r\n * @returns {boolean}\r\n */\r\n function loop(a, b) {\r\n if (a.length === 0) {\r\n return true\r\n } else if (b.length === 0) {\r\n return false\r\n } else {\r\n switch (Math.sign(compare(a[0], b[0]))) {\r\n case -1:\r\n return false\r\n case 0:\r\n return loop(a.slice(1), b.slice(1))\r\n case 1: \r\n default:\r\n return loop(a, b.slice(1))\r\n }\r\n }\r\n }\r\n return loop(set1, set2)\r\n}","import { isSubset } from './isSubset.js'\r\n\r\n/**\r\n * 判断 a 是否为 b 的超集(假定已排序)。\r\n * @template T\r\n * @param {T[]} a - 可能为超集的数组\r\n * @param {T[]} b - 可能为子集的数组\r\n * @param {(x: T, y: T) => number} compare - 比较函数\r\n * @returns {boolean} 如果 a 是 b 的超集返回 true,否则返回 false\r\n */\r\nexport function isSuperset(a, b, compare) {\r\n return isSubset(b, a, compare)\r\n}","/**\r\n * 计算两个有序数组的并集(去重)。\r\n * @template T\r\n * @param {T[]} set1 - 第一个已排序的数组\r\n * @param {T[]} set2 - 第二个已排序的数组\r\n * @param {(a: T, b: T) => number} compare - 比较函数\r\n * @returns {T[]} 并集后的新数组\r\n */\r\nexport function unionSet(set1, set2, compare) {\r\n /**\r\n * @param {T[]} acc - 当前结果\r\n * @param {T[]} a - 剩余的 set1\r\n * @param {T[]} b - 剩余的 set2\r\n * @returns {T[]} 并集\r\n */\r\n function loop(acc, a, b) {\r\n if (a.length === 0) {\r\n return [...acc, ...b]\r\n } else if (b.length === 0) {\r\n return [...acc, ...a]\r\n } else {\r\n switch (Math.sign(compare(a[0], b[0]))) {\r\n case -1:\r\n return loop([...acc, a[0]], a.slice(1), b)\r\n case 0:\r\n return loop([...acc, a[0]], a.slice(1), b.slice(1))\r\n case 1:\r\n default:\r\n return loop([...acc, b[0]], a, b.slice(1))\r\n }\r\n }\r\n }\r\n return loop([], set1, set2)\r\n}","/**\r\n * 数组去重,排序好后的数组去重。\r\n * @template T\r\n * @param {T[]} sortedArray - 已排序的数组\r\n * @param {(a: T, b: T) => number} compare - 比较函数\r\n * @returns {T[]} 去重后的新数组\r\n */\r\nexport function sortedArrayToSet(sortedArray, compare) {\r\n /**\r\n * @param {T[]} acc - 当前结果\r\n * @param {T[]} sarray - 剩余待处理的数组\r\n * @returns {T[]} 去重后的新数组\r\n */\r\n function loop(acc, sarray) {\r\n if (sarray.length === 0) {\r\n return acc\r\n } else {\r\n switch (Math.sign(compare(acc[acc.length - 1], sarray[0]))) {\r\n case -1:\r\n return loop([...acc, sarray[0]], sarray.slice(1))\r\n case 0:\r\n return loop(acc, sarray.slice(1))\r\n case 1:\r\n default:\r\n throw new Error('sort ascent')\r\n }\r\n }\r\n }\r\n\r\n if (sortedArray.length === 0) {\r\n return []\r\n } else {\r\n return loop([sortedArray[0]], sortedArray.slice(1))\r\n }\r\n}","import { distinctArray } from \"./distinctArray.js\";\r\nimport { groupArrayBy } from \"./groupArrayBy.js\";\r\nimport { groupSortedEntries } from \"./groupSortedEntries.js\";\r\nimport { differenceSet } from \"./differenceSet.js\";\r\nimport { findIndexInSet } from \"./findIndexInSet.js\";\r\nimport { intersectSet } from \"./intersectSet.js\";\r\nimport { isEqualset } from \"./isEqualset.js\";\r\nimport { isSubset } from \"./isSubset.js\";\r\nimport { isSuperset } from \"./isSuperset.js\";\r\nimport { unionSet } from \"./unionSet.js\";\r\nimport { sortedArrayToSet } from \"./sortedArrayToSet.js\";\r\n\r\n/**\r\n * 用于比较和操作数组及集合的工具类。\r\n *\r\n * @public\r\n * @template T\r\n */\r\nexport class Comparer {\r\n /**\r\n * @param {(a: T, b: T) => number} compare - 比较函数\r\n */\r\n constructor(compare) {\r\n this.compare = compare;\r\n }\r\n\r\n /**\r\n * 使用实例的比较函数对数组进行排序。\r\n * @param {T[]} array - 要排序的数组\r\n * @returns {T[]} 排序后的数组\r\n */\r\n sort(array) {\r\n return array.sort(this.compare);\r\n }\r\n\r\n /**\r\n * 移除数组中的重复值。\r\n * @param {T[]} array - 要处理的数组\r\n * @returns {T[]} 去重后的新数组\r\n */\r\n distinct(array) {\r\n return distinctArray(array, (a, b) => this.compare(a, b) === 0);\r\n }\r\n \r\n /**\r\n * 将已排序的数组转为集合(去重)。\r\n * @param {T[]} array - 已排序的数组\r\n * @returns {T[]} 唯一元素数组\r\n */\r\n sortedArrayToSet(array) {\r\n return sortedArrayToSet(array, this.compare);\r\n }\r\n\r\n\r\n /**\r\n * 根据 getKey 生成的 key 对数组元素分组。\r\n * @template U\r\n * @param {U[]} array - 要分组的数组\r\n * @param {(item:U) => T} getKey - 生成分组 key 的函数\r\n * @returns {[T, U[]][]} 分组后的对象或数组\r\n */\r\n groupBy(array, getKey) {\r\n return groupArrayBy(array, getKey, this.compare);\r\n }\r\n\r\n /**\r\n * 对已排序的数组按 key 分组。\r\n * @template V\r\n * @param {[T,V][]} array - 已排序的数组\r\n * @returns {[T, V[]][]} 分组结果\r\n */\r\n groupSortedEntries(array) {\r\n return groupSortedEntries(array, this.compare);\r\n }\r\n\r\n /**\r\n * 计算两个数组的差集。数组元素是升序排列\r\n * @param {T[]} array1 - 第一个数组\r\n * @param {T[]} array2 - 第二个数组\r\n * @returns {T[]} array1 中有而 array2 中没有的元素\r\n */\r\n differenceSet(array1, array2) {\r\n return differenceSet(array1, array2, this.compare);\r\n }\r\n\r\n /**\r\n * 计算两个数组的交集。\r\n * @param {T[]} array1 - 第一个数组\r\n * @param {T[]} array2 - 第二个数组\r\n * @returns {T[]} 同时存在于 array1 和 array2 的元素\r\n */\r\n intersectSet(array1, array2) {\r\n return intersectSet(array1, array2, this.compare);\r\n }\r\n\r\n /**\r\n * 计算两个数组的并集(去重)。\r\n * @param {T[]} array1 - 第一个数组\r\n * @param {T[]} array2 - 第二个数组\r\n * @returns {T[]} 两个数组的唯一元素合集\r\n */\r\n unionSet(array1, array2) {\r\n return unionSet(array1, array2, this.compare);\r\n }\r\n\r\n /**\r\n * 在集合(数组)中查找元素的索引。\r\n * @param {T[]} set - 要查找的数组\r\n * @param {T} element - 要查找的元素\r\n * @returns {number} 元素在集合中的索引,未找到返回 -1\r\n */\r\n findIndexInSet(set, element) {\r\n return findIndexInSet(set, element, this.compare);\r\n }\r\n\r\n /**\r\n * 判断两个数组作为集合是否相等。\r\n * @param {T[]} array1 - 第一个数组\r\n * @param {T[]} array2 - 第二个数组\r\n * @returns {boolean} 如果集合相等返回 true,否则返回 false\r\n */\r\n isEqualset(array1, array2) {\r\n return isEqualset(array1, array2, this.compare);\r\n }\r\n\r\n /**\r\n * 判断第一个数组是否为第二个数组的子集。\r\n * @param {T[]} array1 - 第一个数组\r\n * @param {T[]} array2 - 第二个数组\r\n * @returns {boolean} 如果 array1 是 array2 的子集返回 true,否则返回 false\r\n */\r\n isSubset(array1, array2) {\r\n return isSubset(array1, array2, this.compare);\r\n }\r\n\r\n /**\r\n * 判断第一个数组是否为第二个数组的超集。\r\n * @param {T[]} array1 - 第一个数组\r\n * @param {T[]} array2 - 第二个数组\r\n * @returns {boolean} 如果 array1 是 array2 的超集返回 true,否则返回 false\r\n */\r\n isSuperset(array1, array2) {\r\n return isSuperset(array1, array2, this.compare);\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","/**\r\n * 默认比较函数,适用于可比较的基本类型。\r\n *\r\n * @public\r\n * @template T\r\n * @param {T} a - 第一个值\r\n * @param {T} b - 第二个值\r\n * @returns {number} 如果 a > b 返回 1,a < b 返回 -1,相等返回 0\r\n */\r\nexport function defaultCompare(a, b) {\r\n return a > b ? 1 : a < b ? -1 : 0\r\n}","import { defaultCompare } from './defaultCompare.js'\r\n\r\n/**\r\n * \r\n * Compares two values and returns a number indicating their relative order.\r\n * @param {number|string} a - The first value to compare.\r\n * @param {number|string} b - The second value to compare.\r\n * @returns {number} -1 if a < b, 1 if a > b, or 0 if they are equal.\r\n * \r\n */\r\nexport function compareKey(a, b) {\r\n let type1 = typeof a\r\n let type2 = typeof b\r\n\r\n if (type1 === type2) {\r\n return defaultCompare(a,b)\r\n }\r\n\r\n //string > number\r\n if (type1 === 'string') {\r\n return 1\r\n }\r\n\r\n return -1\r\n}\r\n","import { compareKey } from './compareKey.js'\r\n\r\n/**\r\n * 比较两个 key path(键路径数组)。\r\n *\r\n * @public\r\n * @param {(number|string)[]} a - 第一个 key path\r\n * @param {(number|string)[]} b - 第二个 key path\r\n * @returns {number} 若 a < b 返回负数,相等返回 0,大于返回正数\r\n */\r\nexport function compareKeyPath(a, b) {\r\n //两个空数组相等\r\n if (a.length === 0 && b.length === 0) {\r\n return 0\r\n }\r\n\r\n //空数组小于非空数组。\r\n if (a.length === 0) {\r\n return -1\r\n }\r\n\r\n //非空数组大于空数组。\r\n if (b.length === 0) {\r\n return 1\r\n }\r\n\r\n //两个数组每次从0位出一个元素,进行比较。\r\n let [a0, ...aa] = a\r\n let [b0, ...bb] = b\r\n\r\n //两个元素相等,递归比较剩余数组。\r\n return compareKey(a0, b0) || compareKeyPath(aa, bb)\r\n}","import { compareKeyPath } from \"./compareKeyPath.js\"\r\n\r\n/**\r\n * 比较两个 entries(key-value 对)。依据他们的 key path。\r\n *\r\n * @public\r\n * @param {[(number|string)[], any]} entry1 - 第一个 entry,key 为 key path(键路径数组)\r\n * @param {[(number|string)[], any]} entry2 - 第二个 entry,key 为 key path(键路径数组)\r\n * @returns {number} 若 entry1 < entry2 返回负数,相等返回 0,大于返回正数\r\n */\r\nexport function compareEntries([keypath1], [keypath2]) {\r\n return compareKeyPath(keypath1, keypath2)\r\n}","// import { } from \"../comparison/defaultCompare.js\"\r\n// import { } from \"../comparison/compareKey.js\"\r\n// import { } from \"../comparison/compareKeyPath.js\"\r\n// import { } from \"../comparison/compareEntries.js\"\r\n\r\nimport { compareEntries, defaultCompare, compareKey, compareKeyPath } from \"../comparison/0.js\"\r\nimport { Comparer } from \"./Comparer.js\"\r\n\r\nexport const defaultComparer = new Comparer(defaultCompare)\r\nexport const keyComparer = new Comparer(compareKey)\r\nexport const keyPathComparer = new Comparer(compareKeyPath)\r\nexport const entryComparer = new Comparer(compareEntries)\r\n","export * from \"./Comparer.js\"\r\nexport * from \"./comparers.js\"\r\n// export * from \"./differenceSet.js\"\r\n// export * from \"./distinctArray.js\"\r\n// export * from \"./findIndexInSet.js\"\r\n// export * from \"./groupArrayBy.js\"\r\n// export * from \"./groupSortedEntries.js\"\r\n// export * from \"./intersectSet.js\"\r\n// export * from \"./isEqualset.js\"\r\n// export * from \"./isSubset.js\"\r\n// export * from \"./isSuperset.js\"\r\n// export * from \"./sortedArrayToSet.js\"\r\n// export * from \"./unionSet.js\"\r\n\r\n","/**\r\n * 比较两个日期对象的大小。\r\n *\r\n * @public\r\n * @param {Date} a - 第一个日期\r\n * @param {Date} b - 第二个日期\r\n * @returns {number} 如果 a > b 返回正数,a < b 返回负数,相等返回 0\r\n */\r\nexport function compareDate(a, b) {\r\n return a.valueOf() - b.valueOf()\r\n}","import { defaultCompare } from './defaultCompare.js'\r\n\r\n/**\r\n * 可以比较NaN,Infinity,number,bigint\r\n * @param {number|bigint} a\r\n * @param {number|bigint} b\r\n */\r\nexport function compareNumber(a, b) {\r\n if (Number.isNaN(a) && Number.isNaN(b)) {\r\n return 0\r\n }\r\n\r\n //NaN最大\r\n if (Number.isNaN(a)) {\r\n return 1\r\n }\r\n\r\n if (Number.isNaN(b)) {\r\n return -1\r\n }\r\n\r\n return defaultCompare(a, b)\r\n\r\n}\r\n\r\n\r\n\r\n","/// 这个字符串数组列举了JavaScript 中所有基本数据类型(primitive types)的名称。typeof 返回值域\r\nexport const types = [\r\n \"undefined\", // 未定义类型,表示未赋值的变量\r\n \"object\", // 对象类型(包括 null 和所有对象/数组/日期等)\r\n \"boolean\", // 布尔类型(true/false)\r\n \"number\", // 数字类型(包括整数和浮点数)\r\n \"bigint\", // 大整数类型(ES2020 新增,表示任意精度的整数)\r\n \"string\", // 字符串类型\r\n \"symbol\", // Symbol 类型(ES2015 新增,表示唯一标识符)\r\n \"function\" // 函数类型(虽然 typeof 返回 'function',但函数本质是 object 的子类型)\r\n]","export * from \"./compareDate.js\"\r\nexport * from \"./compareEntries.js\"\r\nexport * from \"./compareKey.js\"\r\nexport * from \"./compareKeyPath.js\"\r\nexport * from \"./compareNumber.js\"\r\nexport * from \"./defaultCompare.js\"\r\nexport * from \"./types.js\"\r\n","/**\r\n * 获取对象的嵌套属性\r\n * @param {Record<string | number, any>} obj - 源对象/数组\r\n * @param {(string|number)[]} keyPath - 属性访问路径数组\r\n * @returns {any} 路径对应的属性值\r\n * @throws {TypeError} 当路径不存在时抛出错误\r\n */\r\nexport function pluckProperty(obj, keyPath) {\r\n // 类型检查\r\n if (typeof obj !== 'object' || obj === null) {\r\n throw new TypeError('First argument must be an object');\r\n }\r\n\r\n if (!Array.isArray(keyPath)) {\r\n throw new TypeError('keyPath must be an array');\r\n }\r\n\r\n return keyPath.reduce((prev, curr) => {\r\n if (prev == null || !(curr in prev)) {\r\n throw new TypeError(`Property '${curr}' not found in path`);\r\n }\r\n return prev[curr];\r\n }, obj);\r\n}","import { keyComparer } from \"../comparers/0.js\"\r\n\r\n/**\r\n * Groups an array of flattened entries by their first level key.\r\n * This function is memory-optimized and adapted from `groupArrayBy`.\r\n * \r\n * @param {[ (string | number)[], any ][]} flatEntries - Array of flattened entries to be grouped. \r\n * Each entry is of the form [[key, ...keyPath], value] where:\r\n * - The first element is an array representing the key path (first element is primary key)\r\n * - The second element is the associated value\r\n * @returns {[ string | number, [ (string | number)[], any ][] ][]} An array of grouped entries where:\r\n * - Each entry is a tuple [key, group]\r\n * - key is the first-level grouping key (string|number)\r\n * - group is an array of entries sharing that key, each of form [keyPath, value]\r\n * \r\n */\r\nexport function groupByFirstLevelKey(flatEntries) {\r\n if (flatEntries.length === 0) {\r\n return []\r\n }\r\n\r\n let sortedKvPairs =\r\n flatEntries.map(\r\n /**\r\n * @returns {[ string | number, [ (string | number)[], any ] ]}\r\n */\r\n ([[key, ...keyPath], value]) => [key, [keyPath, value]]\r\n )\r\n\r\n return keyComparer.groupSortedEntries(sortedKvPairs)\r\n}","import { isRange } from '../array/isRange.js';\r\nimport { groupByFirstLevelKey } from './groupByFirstLevelKey.js';\r\n\r\n/**\r\n * 将扁平化的键值对数组转换为嵌套的 JavaScript 对象或数组。\r\n *\r\n * @param {[ (string | number)[], any ][]} flatEntries - 扁平化的键值对数组。\r\n * 每个键值对的格式为 `[keyPath, value]`,其中 `keyPath` 是一个表示嵌套路径的数组。假设输入的键值对数组已经按照键路径(keyPath)排好顺序。\r\n * @returns {Record<string|number, any>} - 返回嵌套的 JavaScript 对象或数组。\r\n *\r\n */\r\nexport function tojs(flatEntries) {\r\n if (!Array.isArray(flatEntries)) {\r\n throw new TypeError('Expected an array of flat entries');\r\n }\r\n \r\n if (flatEntries.length === 0) {\r\n return {};\r\n }\r\n\r\n if(flatEntries.length === 1 && flatEntries[0][0].length === 0){\r\n return flatEntries[0][1];\r\n }\r\n\r\n // 按第一层键分组,并递归处理嵌套结构\r\n let entries = groupByFirstLevelKey(flatEntries).map(([k, group]) => {\r\n // 如果组中只有一个键值对,且键路径为空,直接取值\r\n let v =\r\n group.length === 1 && group[0][0].length === 0\r\n ? group[0][1]\r\n : tojs(group); // 否则递归处理\r\n return [k, v];\r\n });\r\n\r\n // 获取第一层的键\r\n let keys = entries.map(([k]) => k);\r\n\r\n // 将键值对数组转换为对象\r\n let obj = Object.fromEntries(entries);\r\n\r\n // 如果第一层键是连续的数字序列,则转换为数组\r\n if (isRange(keys)) {\r\n return Array.from({ ...obj, length: keys.length });\r\n } else {\r\n return obj;\r\n }\r\n}","/**\r\n * 扁平化对象或数组,输入参数与JSON.stringify相同。\r\n * @param {any} data\r\n * @param {(value: any,key: string|number, keyPath: (string|number)[]) => boolean} [isLeaf] 当函数返回真时,属性作为叶节点。\r\n * @returns {[(string|number)[],any][]}\r\n */\r\nexport const flat = (data, isLeaf = () => false) => {\r\n\r\n /**\r\n * \r\n * @param {[(string | number)[], any][]} acc \r\n * @param {(string | number)[]} keyPath \r\n * @param {string | number} key \r\n * @param {*} value\r\n * @returns {[(string | number)[], any][]}\r\n */\r\n function loop(acc, keyPath, key, value) {\r\n keyPath = [...keyPath, key]\r\n if (isLeaf(value, key, keyPath)) {\r\n // 首先拦截叶节点\r\n return [...acc, [keyPath, value]]\r\n } else if (value && typeof value === 'object') {\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\r\n // 内置对象为叶节点\r\n if (\r\n value instanceof Function ||\r\n value instanceof Boolean ||\r\n value instanceof Symbol ||\r\n value instanceof Error ||\r\n value instanceof Number ||\r\n value instanceof BigInt ||\r\n value instanceof Date ||\r\n value instanceof String ||\r\n value instanceof RegExp ||\r\n value instanceof Map ||\r\n value instanceof Set ||\r\n value instanceof WeakMap ||\r\n value instanceof WeakSet\r\n ) {\r\n return [...acc, [keyPath, value]]\r\n }\r\n // 空數組為叶節點\r\n if (Array.isArray(value) && value.length === 0) {\r\n return [...acc, [keyPath, value]]\r\n }\r\n\r\n // 空对象为叶节点\r\n if (Object.keys(value).length === 0) {\r\n return [...acc, [keyPath, value]]\r\n }\r\n\r\n // date,regex\r\n let entries = Array.isArray(value) ? value.map((v, i) => [i, v]) : Object.entries(value)\r\n\r\n if (entries.length > 0) {\r\n // 附加当前对象包含的所有词条到词条累加器后面\r\n return entries\r\n .map(([k, v]) => loop([], keyPath, k, v))\r\n .reduce((a, b) => [...a, ...b], acc)\r\n } else {\r\n return [...acc, [keyPath, value]]\r\n }\r\n } else {\r\n return [...acc, [keyPath, value]]\r\n }\r\n }\r\n\r\n return loop([], [], '', data).map(\r\n // 删除辅助的第一层路径: ['', ...paths] -> paths\r\n ([[_, ...keyPath], value]) => [keyPath, value]\r\n )\r\n}\r\n","import { compareKeyPath } from \"../comparison/compareKeyPath.js\"\r\n\r\n/**\r\n * 返回一个新entries,每个entry的key都在keys中。\r\n * @template T\r\n * @param {[(string|number)[],T][]} entries\r\n * @param {(string|number)[][]} keys\r\n */\r\nexport function intersectEntries(entries, keys) {\r\n\r\n /**\r\n * \r\n * @param {[(string|number)[],T][]} acc \r\n * @param {[(string|number)[],T][]} entries \r\n * @param {(string|number)[][]} keys \r\n * @returns {[(string|number)[],T][]}\r\n */\r\n const loop = (acc, entries, keys) => {// 由intersect修改而来\r\n if (entries.length === 0 || keys.length === 0) {\r\n return acc\r\n } else {\r\n switch (Math.sign(compareKeyPath(entries[0][0], keys[0]))) {\r\n case 0:\r\n let yy = [...acc, entries[0]]\r\n return loop(yy, entries.slice(1), keys.slice(1))\r\n\r\n case -1:\r\n return loop(acc, entries.slice(1), keys)\r\n\r\n case 1:\r\n default:\r\n return loop(acc, entries, keys.slice(1))\r\n }\r\n }\r\n }\r\n return loop([], entries, keys)\r\n}\r\n","import { BehaviorSubject, isObservable, Observable, combineLatest, from, Subscription } from 'rxjs'\r\nimport { map, mergeMap } from 'rxjs/operators'\r\n\r\nimport { zipArray } from \"../array/zipArray.js\"\r\nimport { pluckProperty } from '../object/0.js'\r\nimport { keyPathComparer, entryComparer } from '../comparers/0.js'\r\nimport { tojs, flat } from '../structures/0.js'\r\nimport { intersectEntries } from './intersectEntries.js'\r\n\r\n\r\n/**\r\n * 深度(嵌套)数据结构类,用于处理按键路径排序的键值对集合。\r\n * 提供了多种操作方法,包括集合操作、序列操作和数据转换。\r\n * \r\n * @template T\r\n * \r\n */\r\nexport class Deep {\r\n /**\r\n * 构造函数。\r\n *\r\n * @param {[(string|number)[], T][]} entries - 按键路径排序的键值对数组。键值对已经按keypath排序。\r\n */\r\n constructor(entries) {\r\n this._entries = entries\r\n this._keys = this._entries.map(([k]) => k)\r\n }\r\n\r\n ///基本數據屬性\r\n\r\n get entries() { return this._entries }\r\n\r\n get keys() { return this._keys }\r\n\r\n getValues() {\r\n return this.entries.map(([k, v]) => v)\r\n }\r\n\r\n ///构造正常数据对象\r\n /**\r\n * 将深度数据结构转换为普通对象。\r\n * \r\n * @returns {Record<string|number, any>} 转换后的普通对象。\r\n */\r\n toObject() {\r\n return tojs(this.entries)\r\n }\r\n\r\n ///單個讀取\r\n\r\n /**\r\n * \r\n * @param {(string|number)[]} searchKeyPath \r\n * @returns \r\n */\r\n findIndex(searchKeyPath) {\r\n return keyPathComparer.findIndexInSet(this.keys, searchKeyPath)\r\n }\r\n\r\n ///集合操作\r\n\r\n /**\r\n * \r\n * @param {(string|number)[][]} keys \r\n * @returns \r\n */\r\n structuralEqual(keys) {\r\n return keyPathComparer.isEqualset(this.keys, keys)\r\n }\r\n\r\n /**\r\n * \r\n * @param {(string|number)[][]} keys \r\n * @returns \r\n */\r\n structuralSubset(keys) {\r\n return keyPathComparer.isSubset(this.keys, keys)\r\n }\r\n\r\n /**\r\n * \r\n * @param {(string|number)[][]} keys \r\n * @returns \r\n */\r\n structuralSuperset(keys) {\r\n return keyPathComparer.isSuperset(this.keys, keys)\r\n }\r\n\r\n /**\r\n * @param {(string|number)[][]} keys\r\n * @this {Deep<T>}\r\n * @returns {Deep<T>}\r\n */\r\n intersect(keys) {\r\n let entries = intersectEntries(this.entries, keys)\r\n return new Deep(entries)\r\n }\r\n\r\n /**\r\n * \r\n * @param {(string|number)[][]} keys\r\n * @this {Deep<T>}\r\n * @returns {Deep<T>}\r\n */\r\n difference(keys) {\r\n let newkeys = keyPathComparer.differenceSet(this.keys, keys)\r\n return this.intersect(newkeys)\r\n }\r\n\r\n /**\r\n * 后来者赢(参数赢)\r\n * @param {[(string | number)[], T][]} entries \r\n * @returns \r\n */\r\n union(entries) {\r\n let entries2 = entryComparer.sort([...this.entries, ...entries])\r\n return new Deep(entries2)\r\n }\r\n\r\n\r\n /// 序列操作符\r\n\r\n /**\r\n * \r\n * @template U\r\n * @param {(value: [(string | number)[], T], index: number, array: [(string | number)[], T][]) => U} callbackfn 返回的是值,而不是键值对,KeyPath保持不变\r\n * @param {Deep<T>} [thisArg]\r\n * @this {Deep<T>}\r\n * @returns {Deep<U>}\r\n * \r\n */\r\n map(callbackfn, thisArg) {\r\n let values = this.entries.map(callbackfn, thisArg)\r\n return this.replaceValue(values)\r\n }\r\n\r\n /**\r\n * \r\n * @param {(value: [(string | number)[], T], index: number, array: [(string | number)[], T][]) => boolean} predicate \r\n * @param {Deep<T>} [thisArg]\r\n * @returns \r\n */\r\n filter(predicate, thisArg) {\r\n let entries = this.entries.filter(predicate, thisArg)\r\n return new Deep(entries)\r\n }\r\n\r\n /**\r\n * \r\n * @param { (value: [(string | number)[], T], index: number, array: [(string | number)[], T][]) => void} callbackfn \r\n * @param {Deep<T>} [thisArg]\r\n * @returns \r\n */\r\n forEach(callbackfn, thisArg) {\r\n this.entries.forEach(callbackfn, thisArg)\r\n }\r\n\r\n /// 值操作\r\n\r\n /**\r\n * 修改部分个别数值\r\n * @param {Record<string|number,any>} obj \r\n * @this {Deep<T>}\r\n * @returns \r\n */\r\n freshValue(obj) {\r\n let entries = this.keys.map(\r\n /**\r\n * @returns {[(string | number)[],any]}\r\n */\r\n k => [k, pluckProperty(obj, k)]\r\n )\r\n return new Deep(entries)\r\n\r\n }\r\n\r\n /**\r\n * 按列替换数值\r\n * @template U\r\n * @param {U[]} values\r\n * @this {Deep<T>}\r\n * @returns {Deep<U>}\r\n */\r\n replaceValue(values) {\r\n let entries = zipArray(this.keys, values)\r\n return new Deep(entries)\r\n }\r\n\r\n /**\r\n * 按列替换数值,保留原有数值\r\n * @template U\r\n * @param {U[]} values\r\n * @this {Deep<T>}\r\n * @returns {Deep<[T,U]>}\r\n */\r\n zipValue(values) {\r\n return this.replaceValue(zipArray(this.getValues(), values))\r\n }\r\n\r\n /// rxjs操作符\r\n\r\n /**\r\n * 返回Observable of 总体的当前值\r\n * @template U\r\n * @this {Deep<Observable<U>>}\r\n * @returns {Observable<Deep<U>>}\r\n */\r\n combineLatest() {\r\n let values = this.getValues()\r\n return combineLatest(values).pipe(\r\n map(values => this.replaceValue(values))\r\n )\r\n }\r\n\r\n /**\r\n * 返回发射消息的那一个成员的路径以及新值。\r\n * @template U\r\n * @this {Deep<Observable<U>>}\r\n * @returns {Observable<[(string|number)[], U]>}\r\n */\r\n merge() {\r\n return from(this.entries).pipe(\r\n mergeMap(([keyPath, value$]) =>\r\n value$.pipe(\r\n map(\r\n /**\r\n * @returns {[(string|number)[], U]}\r\n */\r\n value => [keyPath, value])\r\n )))\r\n }\r\n\r\n /// 静态构造方法\r\n\r\n /**\r\n * \r\n * @param {{[_:string|number]:any}} obj \r\n * @param {(value: any, key: string | number, keyPath: (string | number)[]) => boolean} [filter]\r\n * @returns \r\n */\r\n static fromObject(obj, filter = () => false) {\r\n let arr = flat(obj, filter)\r\n let entries = entryComparer.sort(arr)\r\n return new Deep(entries)\r\n }\r\n\r\n /**\r\n * @template T\r\n * @param {{[_:string|number]:any}} obj \r\n * @returns {Deep<BehaviorSubject<T>>}\r\n */\r\n static fromBehaviorSubject(obj) {\r\n return Deep.fromObject(obj, v => isObservable(v) || v instanceof Subscription)\r\n .filter(([k, v]) => v instanceof BehaviorSubject)\r\n }\r\n\r\n /**\r\n * @template T\r\n * @param {{[_:string|number]:any}} obj \r\n * @returns \r\n */\r\n static fromObservable(obj) {\r\n return Deep.fromObject(obj, v => isObservable(v) || v instanceof Subscription)\r\n .filter(([k, v]) => isObservable(v))\r\n }\r\n\r\n}\r\n","export * from \"./Deep.js\"\r\n\r\n","import { isObservable, Subscription } from 'rxjs'\r\n\r\n/**\r\n * 检查对象是否为 RxJS 类型。\r\n *\r\n * `isRxType` 函数用于判断给定的对象是否为 RxJS 的 `Observable` 或 `Subscription` 类型。\r\n *\r\n * @param {any} obj - 要检查的对象。\r\n * @returns {boolean} - 如果对象是 `Observable` 或 `Subscription`,返回 `true`;否则返回 `false`。\r\n *\r\n */\r\nexport function isRxType(obj) {\r\n return typeof obj === 'object' && obj && \r\n (isObservable(obj) || obj instanceof Subscription)\r\n}\r\n","import { Subject } from 'rxjs'\r\nimport { filter, map } from 'rxjs/operators'\r\nimport { arrayInsert, arrayRemove } from '../array/0.js'\r\n\r\n/**\r\n * ObservableArray 是一个可观察的数组,支持 insertBefore、removeChild、replaceChild 操作,\r\n * 并通过 RxJS Subject 通知变化,适用于响应式 DOM 操作场景。\r\n * \r\n * @template T\r\n * @extends Array<T>\r\n */\r\nexport class ObservableArray extends Array {\r\n /**\r\n * @constructor 创建一个 ObservableArray 实例。禁止传参。\r\n * @param {()=>T} newItem\r\n * @throws {Error} 如果传入参数则抛出异常。\r\n */\r\n constructor(newItem) {\r\n super();\r\n this.newitem = newItem\r\n\r\n /**\r\n * 变化通知的 Subject。\r\n * @type {Subject<any[]>}\r\n */\r\n this.action$ = new Subject()\r\n\r\n /**\r\n * 插入元素事件流,发出 [item, index]。\r\n * @type {import('rxjs').Observable<[T, number]>}\r\n */\r\n this.insertBefore$ =\r\n this.action$.pipe(\r\n filter(([action]) => action === 'insertBefore'),\r\n map(([_, item, index]) => [item, index]),\r\n )\r\n\r\n /**\r\n * 删除元素事件流,发出 index。\r\n * @type {import('rxjs').Observable<number>}\r\n */\r\n this.removeChild$ =\r\n this.action$.pipe(\r\n filter(([action]) => action === 'removeChild'),\r\n map(([_, index]) => index),\r\n )\r\n\r\n /**\r\n * 替换元素事件流,发出 [item, index]。\r\n * @type {import('rxjs').Observable<[T, number]>}\r\n */\r\n this.replaceChild$ =\r\n this.action$.pipe(\r\n filter(([action]) => action === 'replaceChild'),\r\n map(([_, item, index]) => [item, index]),\r\n )\r\n }\r\n\r\n /**\r\n * 在指定位置插入元素,并通知变化。\r\n * @param {T} item 要插入的元素\r\n * @param {number} [index=this.length] 插入位置,默认为数组末尾\r\n */\r\n insertBefore(item, index = this.length) {\r\n arrayInsert(this, item, index)\r\n this.action$.next(['insertBefore', item, index])\r\n }\r\n\r\n /**\r\n * 删除指定位置的元素,并通知变化。\r\n * @param {number} [index=this.length-1] 删除位置,默认为数组末尾\r\n */\r\n removeChild(index = this.length - 1) {\r\n arrayRemove(this, index)\r\n this.action$.next(['removeChild', index])\r\n }\r\n\r\n /**\r\n * 替换指定位置的元素,并通知变化。\r\n * @param {T} item 新元素\r\n * @param {number} index 替换位置\r\n */\r\n replaceChild(item, index) {\r\n this[index] = item\r\n this.action$.next(['replaceChild', item, index])\r\n }\r\n /**\r\n * 附加一个默认子元素\r\n */\r\n appendChild(){\r\n this.insertBefore(this.newitem(), this.length)\r\n }\r\n\r\n}","export * from './isRxType.js'\r\nexport * from './ObservableArray.js'\r\n","/**\r\n * 一个包含所有 HTML 块级元素标签名称的集合。\r\n * \r\n * 块级元素是 HTML 中的一类元素,它们通常会独占一行,并且可以包含内联元素或其他块级元素。\r\n * 该集合中的标签名称均为大写,便于快速判断某个元素是否为块级元素。\r\n * \r\n * 常见的块级元素包括:\r\n * - 文本结构元素:`P`、`H1`-`H6`、`ADDRESS` 等。\r\n * - 列表元素:`UL`、`OL`、`LI`、`DL`、`DT`、`DD`。\r\n * - 容器元素:`DIV`、`SECTION`、`ARTICLE`、`ASIDE`、`NAV` 等。\r\n * - 表单元素:`FORM`、`FIELDSET`。\r\n * - 表格元素:`TABLE`。\r\n * - 其他:`BLOCKQUOTE`、`PRE`、`FIGURE` 等。\r\n * \r\n * @constant {Set<string>} blockLevelFamily\r\n */\r\nexport const blockLevelFamily = new Set([\r\n 'ADDRESS',\r\n 'ARTICLE',\r\n 'ASIDE',\r\n 'BLOCKQUOTE',\r\n 'DD',\r\n 'DETAILS',\r\n 'DIALOG',\r\n 'DIV',\r\n 'DL',\r\n 'DT',\r\n 'FIELDSET',\r\n 'FIGCAPTION',\r\n 'FIGURE',\r\n 'FOOTER',\r\n 'FORM',\r\n 'H1',\r\n 'H2',\r\n 'H3',\r\n 'H4',\r\n 'H5',\r\n 'H6',\r\n 'HEADER',\r\n 'HGROUP',\r\n 'HR',\r\n 'LI',\r\n 'MAIN',\r\n 'NAV',\r\n 'OL',\r\n 'P',\r\n 'PRE',\r\n 'SECTION',\r\n 'TABLE',\r\n 'UL',\r\n])\r\n","/**\r\n * 一个包含所有 HTML 内联元素标签名称的集合。\r\n * \r\n * 内联元素是 HTML 中的一类元素,它们不会独占一行,通常用于包裹文本或其他内联元素。\r\n * 该集合中的标签名称均为大写,便于快速判断某个元素是否为内联元素。\r\n * \r\n * 常见的内联元素包括:\r\n * - 文本样式:`B`、`I`、`U`、`STRONG`、`EM`、`MARK` 等。\r\n * - 链接和交互:`A`、`BUTTON`、`LABEL`、`INPUT`、`SELECT`、`TEXTAREA` 等。\r\n * - 媒体和嵌入:`IMG`、`SVG`、`VIDEO`、`AUDIO`、`CANVAS` 等。\r\n * - 其他:`SPAN`、`BR`、`WBR`、`CODE`、`Q` 等。\r\n * \r\n * @constant {Set<string>} inlineFamily\r\n */\r\nexport const inlineFamily = new Set([\r\n 'A',\r\n 'ABBR',\r\n 'ACRONYM',\r\n 'AUDIO',\r\n 'B',\r\n 'BDI',\r\n 'BDO',\r\n 'BIG',\r\n 'BR',\r\n 'BUTTON',\r\n 'CANVAS',\r\n 'CITE',\r\n 'CODE',\r\n 'DATA',\r\n 'DATALIST',\r\n 'DEL',\r\n 'DFN',\r\n 'EM',\r\n 'EMBED',\r\n 'I',\r\n 'IFRAME',\r\n 'IMG',\r\n 'INPUT',\r\n 'INS',\r\n 'KBD',\r\n 'LABEL',\r\n 'MAP',\r\n 'MARK',\r\n 'METER',\r\n 'NOSCRIPT',\r\n 'OBJECT',\r\n 'OUTPUT',\r\n 'PICTURE',\r\n 'PROGRESS',\r\n 'Q',\r\n 'RUBY',\r\n 'S',\r\n 'SAMP',\r\n 'SCRIPT',\r\n 'SELECT',\r\n 'SLOT',\r\n 'SMALL',\r\n 'SPAN',\r\n 'STRONG',\r\n 'SUB',\r\n 'SUP',\r\n 'SVG',\r\n 'TEMPLATE',\r\n 'TEXTAREA',\r\n 'TIME',\r\n 'TT',\r\n 'U',\r\n 'VAR',\r\n 'VIDEO',\r\n 'WBR',\r\n]);\r\n\r\n// developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\r\n","import { blockLevelFamily } from './blockLevelFamily.js'\r\nimport { inlineFamily } from './inlineFamily.js'\r\n\r\n/**\r\n * 获取 HTML 元素的默认 CSS `display` 值。\r\n * \r\n * 根据元素的标签名称 (`tagName`),返回其对应的默认 `display` 属性值。\r\n * 支持表格相关标签、块级元素、内联元素等常见 HTML 标签。\r\n * \r\n * @param {HTMLElement} elem - 要获取 `display` 值的 HTML 元素。\r\n * @returns {string} - 元素的默认 `display` 值:\r\n * - 表格相关标签:\r\n * - `TBODY` -> `'table-row-group'`\r\n * - `THEAD` -> `'table-header-group'`\r\n * - `TFOOT` -> `'table-footer-group'`\r\n * - `TR` -> `'table-row'`\r\n * - `TD`、`TH` -> `'table-cell'`\r\n * - `COLGROUP` -> `'table-column-group'`\r\n * - `COL` -> `'table-column'`\r\n * - `CAPTION` -> `'table-caption'`\r\n * - 块级元素 -> `'block'`\r\n * - 内联元素 -> `'inline'`\r\n * - 未知标签 -> `'unset'`\r\n * \r\n */\r\nexport function getDisplay(elem) {\r\n if (elem.tagName === 'TBODY') {\r\n return 'table-row-group'\r\n } else if (elem.tagName === 'THEAD') {\r\n return 'table-header-group'\r\n } else if (elem.tagName === 'TFOOT') {\r\n return 'table-footer-group'\r\n } else if (elem.tagName === 'TR') {\r\n return 'table-row'\r\n } else if (elem.tagName === 'TD' || elem.tagName === 'TH') {\r\n return 'table-cell'\r\n } else if (elem.tagName === 'COLGROUP') {\r\n return 'table-column-group'\r\n } else if (elem.tagName === 'COL') {\r\n return 'table-column'\r\n } else if (elem.tagName === 'CAPTION') {\r\n return 'table-caption'\r\n } else if (blockLevelFamily.has(elem.tagName)) {\r\n return 'block'\r\n } else if (inlineFamily.has(elem.tagName)) {\r\n return 'inline'\r\n } else {\r\n return 'unset'\r\n }\r\n}\r\n\r\n","export * from './blockLevelFamily.js'\r\nexport * from './getDisplay.js'\r\nexport * from './inlineFamily.js'\r\n","import { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Attaches an RxJS subscription to a DOM node.\r\n * @param {Node & { subscription?: Subscription }} elem - DOM node to attach the subscription to.\r\n * @param {Subscription} subscription - RxJS subscription to attach.\r\n * @throws {Error} If parameters are invalid.\r\n */\r\nexport const attachSubscriptionToNode = (elem, subscription) => {\r\n if (!(elem instanceof Node)) {\r\n throw new Error('Valid DOM node required');\r\n }\r\n\r\n if (!(subscription instanceof Subscription)) {\r\n throw new Error('Valid RxJS subscription required');\r\n }\r\n\r\n //新建或附加订阅\r\n if (!elem.subscription) {\r\n elem.subscription = subscription;\r\n } else {\r\n elem.subscription.add(subscription);\r\n }\r\n\r\n};","import { fromEvent } from 'rxjs';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { attachSubscriptionToNode } from './attachSubscriptionToNode.js';\r\n\r\n/**\r\n * 为指定的 DOM 元素订阅事件流,并通过 pipe 对事件流进行处理。\r\n *\r\n * @param {HTMLElement} elem - 要订阅事件的 DOM 元素。\r\n * @returns {(e:string,s:(event$: Observable<Event>) => Subscription)=>HTMLElement} - 返回一个函数,该函数接受事件名称和处理函数,用于订阅和处理事件。\r\n * @throws {Error} 如果参数无效。\r\n */\r\nexport function pipeEvent(elem) {\r\n // 参数检查,确保 elem 是一个有效的 DOM 元素\r\n if (!(elem instanceof HTMLElement)) {\r\n throw new Error('参数 \"elem\" 必须是一个有效的 DOM 元素。');\r\n }\r\n\r\n return (\r\n /**\r\n * \r\n * @param {string} event \r\n * @param {(event$: Observable<Event>) => Subscription} subscriber \r\n * @returns \r\n */\r\n function (event, subscriber) {\r\n // 参数检查,确保 event 是字符串,subscriber 是函数\r\n if (typeof event !== 'string') {\r\n throw new Error('参数 \"event\" 必须是一个字符串。');\r\n }\r\n if (typeof subscriber !== 'function') {\r\n throw new Error('参数 \"subscriber\" 必须是一个函数。');\r\n }\r\n let event$ = fromEvent(elem, event)// 创建事件流 Observable\r\n\r\n try {\r\n let subscription = subscriber(event$); // 订阅事件流并处理 \r\n attachSubscriptionToNode(elem, subscription); // 将订阅附加到 DOM 元素,便于管理\r\n\r\n } catch (error) {\r\n console.error(`处理事件 \"${event}\" 时发生错误:`, error);\r\n throw error;\r\n }\r\n\r\n // 返回元素本身,支持链式调用\r\n return elem;\r\n }\r\n )\r\n\r\n}","import { fromEvent } from 'rxjs';\r\nimport { attachSubscriptionToNode } from './attachSubscriptionToNode.js';\r\n\r\n/**\r\n * @template T\r\n * @typedef { import('rxjs').Observer<T> } Observer\r\n */\r\n\r\n/**\r\n * 为指定的 DOM 元素订阅事件流,并将订阅与元素绑定,便于管理。\r\n *\r\n * @param {HTMLElement} elem - 要订阅事件的 DOM 元素。\r\n * @returns {(e:string, o:((value: Event) => void) | Partial<Observer<Event>>) => HTMLElement} - 返回一个函数,该函数接受事件名称和观察者,用于订阅事件。\r\n * @throws {Error} 如果参数无效。\r\n * \r\n */\r\nexport function subscribeEvent(elem) {\r\n // 参数检查,确保 elem 是一个有效的 DOM 元素\r\n if (!(elem instanceof HTMLElement)) {\r\n throw new Error('参数 \"elem\" 必须是一个有效的 DOM 元素。');\r\n }\r\n\r\n return (\r\n /**\r\n * @param {string} event \r\n * @param {((value: Event) => void) | Partial<Observer<Event>>} observer\r\n * @returns \r\n */\r\n (event, observer) => {\r\n // 参数检查,确保 event 是字符串,observer 是函数或观察者对象\r\n if (typeof event !== 'string') {\r\n throw new Error('参数 \"event\" 必须是一个字符串。');\r\n }\r\n if ((typeof observer !== 'function' && typeof observer !== 'object') || observer === null) {\r\n throw new Error('参数 \"observer\" 必须是一个函数或观察者对象。');\r\n }\r\n\r\n // 创建事件流 Observable\r\n let event$ = fromEvent(elem, event);\r\n\r\n // 订阅事件流\r\n let subscription;\r\n try {\r\n subscription = event$.subscribe(observer);\r\n } catch (error) {\r\n console.error(`订阅事件 \"${event}\" 时发生错误:`, error);\r\n throw error;\r\n }\r\n\r\n // 将订阅附加到 DOM 元素,便于管理\r\n attachSubscriptionToNode(elem, subscription);\r\n\r\n // 返回元素本身,支持链式调用\r\n return elem;\r\n });\r\n}","/**\r\n * 解析 hyperscript 风格的参数,返回 props 和 childNodes。\r\n * \r\n * @param {any[]} args - hyperscript 风格的参数数组。\r\n * @returns {{ props: Record<string, any>, childNodes: any[] }} 包含 props(对象)和 childNodes(数组)的对象。\r\n * @throws 如果参数不是数组会抛出错误。\r\n */\r\n\r\nexport function parseHyperscriptArgs(args) {\r\n // 参数验证,确保 args 是一个数组\r\n if (!Array.isArray(args)) {\r\n throw new Error('参数 \"args\" 必须是一个数组。');\r\n }\r\n\r\n if (args.length === 0) {\r\n return { props: {}, childNodes: [] };\r\n } else {\r\n let [first, ...rest] = args;\r\n\r\n // \r\n if (isProps(first)) {\r\n return {\r\n props: first ? first : {},\r\n childNodes: rest\r\n };\r\n } else {\r\n // 如果第一个参数不是对象,则所有参数作为子节点\r\n return { props: {}, childNodes: args };\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 如果第一个参数是 undefined、null 或普通对象(非数组),则返回 true。\r\n * 否则返回 false。\r\n * @param {unknown} value - 要检查的值\r\n * @returns {boolean}\r\n * \r\n */\r\nfunction isProps(value) {\r\n //// 基本检查: 空作为props的占位符(不建议,作为兼容)\r\n if (value === undefined || value === null) {\r\n return true;\r\n }\r\n\r\n // 基本检查:非对象直接返回false\r\n if (typeof value !== 'object') {\r\n return false;\r\n }\r\n\r\n // 检查原型链\r\n const proto = Object.getPrototypeOf(value);\r\n\r\n // 1. 原型为null(如Object.create(null)创建的对象)\r\n // 2. 原型等于Object.prototype(普通对象)\r\n return proto === null || proto === Object.prototype;\r\n}","import { unwrapArgs } from '../array/unwrapArgs.js';\r\n\r\n/**\r\n * 规范化子节点,将非节点转换为文本节点。\r\n *\r\n * @param {any[]} childNodes - 子节点数组。\r\n * @returns {Node[]} - 返回规范化后的节点数组。\r\n */\r\nexport function normalizeChildNodes(childNodes) {\r\n const normalizedNodes = unwrapArgs(childNodes); // 解构子节点数组\r\n\r\n return normalizedNodes.map(child =>\r\n child instanceof Node ? child : document.createTextNode(String(child)) // 将非节点转换为文本节点\r\n );\r\n}","import { isObservable, Observable } from 'rxjs';\r\n\r\n/**\r\n * 将对象属性按类型分为两部分:可观察对象(Observable)与普通值(非 Observable)。\r\n *\r\n * @param {Record<string,any>} obj - 要分割的对象,其属性值可能是 Observable 或普通值。\r\n * @returns {[Record<string, Observable<any>>, Record<string, any>]} - 返回一个数组,第一个对象包含所有 Observable 属性,第二个对象包含所有非 Observable 属性。\r\n * @throws {Error} 如果参数不是一个非空对象。\r\n */\r\nexport function splitObjectByObservable(obj) {\r\n // 参数检查,确保输入是一个非空对象\r\n if (typeof obj !== 'object' || Array.isArray(obj) || obj === null) {\r\n throw new Error('参数 \"obj\" 必须是一个非空对象。');\r\n }\r\n\r\n /**\r\n * @type {Record<string, Observable<any>>}\r\n */\r\n let observables = {}; // 存储 Observable 属性\r\n \r\n /**\r\n * @type {Record<string, any>}\r\n */\r\n let scalars = {}; // 存储非 Observable 属性\r\n\r\n // 遍历对象的所有属性\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n let value = obj[key];\r\n\r\n // 根据值的类型分类\r\n if (isObservable(value)) {\r\n observables[key] = value; // 如果是 Observable,存入 observables\r\n } else {\r\n scalars[key] = value; // 否则存入 scalars\r\n }\r\n }\r\n }\r\n //可观察对象(Observable)与普通值(非 Observable)\r\n return [observables, scalars];\r\n}","/**\r\n * 根据属性路径数组读取对象的嵌套属性值。\r\n * @param {Record<string | number, any>} obj - 要读取属性的对象。\r\n * @param {(string | number)[]} keyPath - 属性路径数组,例如 ['a', 'b'] 表示 obj.a.b。\r\n * @returns {any} - 返回目标属性的值,如果路径为空数组,则返回对象本身。\r\n * @throws {Error} 如果路径中的某一级属性不存在或输入无效。\r\n */\r\nexport function getNestedProperty(obj, keyPath) {\r\n if (!Array.isArray(keyPath)) {\r\n throw new Error('The \"pathArray\" parameter must be an array.');\r\n }\r\n\r\n if (!obj || typeof obj !== 'object') {\r\n throw new Error('The \"obj\" parameter must be a non-null object.');\r\n }\r\n\r\n return keyPath.reduce((currentObj, key) => {\r\n if (currentObj === null || currentObj === undefined) {\r\n throw new Error(`Cannot read property \"${key}\" of null or undefined.`);\r\n }\r\n\r\n if (typeof key === 'string' && typeof currentObj === 'object' && key in currentObj) {\r\n return /** @type {Record<string, any>} */ (currentObj)[key];\r\n } else if (typeof key === 'number' && Array.isArray(currentObj) && key >= 0 && key < currentObj.length) {\r\n return currentObj[key];\r\n } else {\r\n throw new Error(`Property \"${key}\" does not exist on the object.`);\r\n }\r\n\r\n }, obj);\r\n}","import { getNestedProperty } from './getNestedProperty.js'\r\n\r\n/**\r\n * 解析嵌套的 DOM 属性路径,并返回目标对象和属性名。\r\n *\r\n * @param {string} props - 属性路径,是 DOM API 的属性,不需要引号包裹,支持嵌套属性(如 \"style.color\")。\r\n * @param {Record<string, any>} obj - 起始对象,通常是一个 DOM 元素。\r\n * @returns {[Record<string, any>, string]} - 返回一个数组,表示叶节点,其中第一个元素是目标对象,第二个元素是属性名。(如 [obj.style, \"color\"])。\r\n * @throws {Error} 如果路径中的某一级属性不存在或输入无效。\r\n */\r\nexport function parsePropName(props, obj) {\r\n if (typeof props !== 'string') {\r\n throw new Error('The \"prop\" parameter must be a string.');\r\n }\r\n \r\n /**\r\n * @param {any} target\r\n * @param {string} prop\r\n * @returns {[any, string]}\r\n */\r\n function getTargetAndProp(target, prop) {\r\n if (!target || typeof target !== 'object') {\r\n throw new Error('The \"obj\" parameter must be a non-null object.');\r\n }\r\n\r\n if (!(prop in target)) {\r\n throw new Error(`Property \"${prop}\" does not exist on the target object.`);\r\n }\r\n\r\n return [target, prop];\r\n }\r\n\r\n if (props.includes('.')) {\r\n const pathArray = props.split('.')\r\n const prop = pathArray.pop()\r\n if(!prop){\r\n throw new Error('The \"prop\" parameter must be a non-empty string.');\r\n }\r\n const target = getNestedProperty(obj, pathArray)\r\n return getTargetAndProp(target, prop)\r\n\r\n } else {\r\n return getTargetAndProp(obj, props)\r\n }\r\n}","import { parsePropName } from './parsePropName.js';\r\n\r\n/**\r\n * \r\n * 设置一个元素对象的任意嵌套路径属性的值,如果是CSS类名,值为真则添加类名,值为假则移除类名。如果是普通属性或嵌套属性则设置改属性值。\r\n *\r\n * @param {HTMLElement} root - 要设置属性的 DOM 元素。\r\n * @param {string} key - 属性名称,支持普通属性、嵌套属性(如 \"style.color\")或以 \".\" 开头的类名(如 \".active\")。\r\n * @param {*} value - 要设置的属性值。如果是布尔值,用于控制类名的添加或移除。\r\n * @returns {HTMLElement} - 返回元素本身,支持链式调用。\r\n * @throws {Error} 如果参数无效或设置失败。\r\n * \r\n */\r\nexport function setProp(root, key, value) {\r\n if (!(root instanceof HTMLElement)) {\r\n throw new Error('The \"element\" parameter must be a valid DOM element.');\r\n }\r\n if (typeof key !== 'string') {\r\n throw new Error('The \"key\" parameter must be a string.');\r\n }\r\n\r\n // CSS 类名操作\r\n if (key.charAt(0) === '.') {\r\n const className = key.substring(1);\r\n\r\n if (className.length === 0) {\r\n throw new Error('The class name cannot be empty.');\r\n }\r\n\r\n if (value) {\r\n root.classList.add(className); // 添加类名\r\n } else {\r\n root.classList.remove(className); // 移除类名\r\n }\r\n } else {\r\n // 普通属性或嵌套属性设置\r\n const [target, prop] = parsePropName(key, root); // 解析属性路径\r\n target[prop] = value; // 设置属性值\r\n }\r\n\r\n return root; // 返回元素本身,支持链式调用\r\n}","import { isObservable, Observable } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\nimport { attachSubscriptionToNode } from '../nodes/attachSubscriptionToNode.js'\r\nimport { setProp } from './setProp.js'\r\n\r\n/**\r\n * \r\n * 订阅一个 BehaviorSubject,将其发出的值动态设置为指定 DOM 元素的属性值。\r\n * \r\n * @template T\r\n * @param {HTMLElement} element - 要设置属性的 DOM 元素。\r\n * @param {string} key - 属性名称,支持普通属性、嵌套属性(如 \"style.color\")或以 \".\" 开头的类名(如 \".active\")。\r\n * @param {Observable<T>} value$ - 一个 RxJS Observable ,用于发出属性值。\r\n * @returns {HTMLElement} - 返回元素本身,支持链式调用。\r\n * @throws {Error} 如果参数无效或订阅失败。\r\n */\r\nexport function subscribeProp(element, key, value$) {\r\n // 参数检查,确保输入有效\r\n if (!(element instanceof HTMLElement)) {\r\n throw new Error('参数 \"element\" 必须是一个有效的 DOM 元素。');\r\n }\r\n if (typeof key !== 'string') {\r\n throw new Error('参数 \"key\" 必须是一个字符串。');\r\n }\r\n if (!isObservable(value$)) {\r\n throw new Error('参数 \"value$\" 必须是一个有效的 Observable。');\r\n }\r\n\r\n // 创建订阅,将 BehaviorSubject 的值动态设置为元素的属性\r\n const subscription =\r\n value$.pipe(\r\n startWith(0)\r\n ).subscribe({\r\n next: value => {\r\n setProp(element, key, value);\r\n },\r\n error: e => {\r\n setProp(element, key, e.message);\r\n }\r\n });\r\n\r\n // 将订阅附加到 DOM 节点,便于统一管理\r\n attachSubscriptionToNode(element, subscription);\r\n\r\n // 返回元素本身,支持链式调用\r\n return element;\r\n}","import { splitObjectByObservable } from '../object/splitObjectByObservable.js'\r\nimport { setProp } from './setProp.js'\r\nimport { subscribeProp } from './subscribeProp.js'\r\n\r\n/**\r\n * 为 DOM 元素设置属性,包括静态属性和动态属性(Observable)。\r\n *\r\n * @param {HTMLElement} element - 要设置属性的 DOM 元素。\r\n * @param {Object} props - 包含属性键值对的对象,其中值可以是普通值或 Observable。\r\n * @returns {HTMLElement} - 返回元素本身,支持链式调用。\r\n * @throws {Error} 如果参数无效或设置属性失败。\r\n */\r\nexport function setProps(element, props) {\r\n // 参数检查\r\n if (!(element instanceof HTMLElement)) {\r\n throw new Error('参数 \"element\" 必须是一个有效的 DOM 元素。');\r\n }\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('参数 \"props\" 必须是一个非空对象。');\r\n }\r\n\r\n // 将属性分为 Observable 和普通值\r\n const [observables, scalars] = splitObjectByObservable(props);\r\n\r\n // 设置普通属性\r\n Object.entries(scalars)\r\n .forEach(([key, value]) => {\r\n try {\r\n setProp(element, key, value);\r\n } catch (error) {\r\n console.error(`设置属性 \"${key}\" 时发生错误:`, error);\r\n }\r\n });\r\n\r\n // 注意顺序,订阅动态属性要在设置静态属性之后\r\n Object.entries(observables)\r\n .forEach(([key, value$]) => {\r\n try {\r\n subscribeProp(element, key, value$);\r\n } catch (error) {\r\n console.error(`订阅属性 \"${key}\" 时发生错误:`, error);\r\n }\r\n });\r\n\r\n // 返回元素本身,支持链式调用\r\n return element;\r\n}","import { Subscription, Observable } from 'rxjs';\r\n\r\nimport { pipeEvent } from '../nodes/pipeEvent.js';\r\nimport { subscribeEvent } from '../nodes/subscribeEvent.js';\r\nimport { parseHyperscriptArgs } from '../nodes/parseHyperscriptArgs.js';\r\nimport { normalizeChildNodes } from '../nodes/normalizeChildNodes.js';\r\n\r\nimport { setProps } from '../props/setProps.js';\r\n\r\n/**\r\n * @typedef {import(\"./HyperscriptExtensions.d.ts\").HyperscriptExtensions<HTMLElement>} HyperscriptElement\r\n */\r\n\r\n/**\r\n * Creates an HTML element with extended event handling capabilities\r\n * @public\r\n * @param {string} elemName - The HTML element tag name\r\n * @param {...any} args - Optional properties and child nodes\r\n * @returns {HyperscriptElement} The created element with extended methods\r\n * @throws {Error} If elemName is not a valid HTML element tag name\r\n */\r\nexport function hyperscript(elemName, ...args) {\r\n // 参数验证,确保 elemName 是一个有效的字符串\r\n if (typeof elemName !== 'string' || !tagNames.has(elemName)) {\r\n throw new Error(`参数 elemName 不是一个有效的 HTML 元素标签名。`);\r\n }\r\n\r\n // 创建 HTML 元素\r\n\r\n let element = document.createElement(elemName);\r\n\r\n // 解析传入的参数\r\n const { props, childNodes } = parseHyperscriptArgs(args);\r\n\r\n // 设置元素属性\r\n setProps(element, props);\r\n\r\n // 添加子节点\r\n normalizeChildNodes(childNodes).forEach(child => {\r\n element.appendChild(child); // 将子节点附加到元素\r\n });\r\n\r\n Object.assign(element, {\r\n /**\r\n * \r\n * @param {string} event \r\n * @param {(event$: Observable<Event>) => Subscription} subscriber \r\n */\r\n pipeEvent(event, subscriber) {\r\n return pipeEvent(element)(event, subscriber)\r\n },\r\n /**\r\n * \r\n * @param {string} event \r\n * @param {((value: Event) => void) | import('rxjs').Observer<Event>} observer \r\n */\r\n subscribeEvent(event, observer) {\r\n return subscribeEvent(element)(event, observer)\r\n },\r\n\r\n unsubscribe() {\r\n if ('subscription' in element && element.subscription instanceof Subscription) {\r\n element.subscription.unsubscribe(); // 取消订阅\r\n delete element.subscription; // 删除属性\r\n }\r\n }\r\n\r\n });\r\n\r\n return /** @type {HyperscriptElement} */(element); // 返回创建的元素\r\n}\r\n\r\nconst tagNames = new Set([\r\n \"a\",\r\n \"abbr\",\r\n \"address\",\r\n \"area\",\r\n \"article\",\r\n \"aside\",\r\n \"audio\",\r\n \"b\",\r\n \"bdi\",\r\n \"bdo\",\r\n \"blockquote\",\r\n \"br\",\r\n \"button\",\r\n \"caption\",\r\n \"cite\",\r\n \"code\",\r\n \"col\",\r\n \"colgroup\",\r\n \"data\",\r\n \"datalist\",\r\n \"dd\",\r\n \"del\",\r\n \"details\",\r\n \"dfn\",\r\n \"dialog\",\r\n \"div\",\r\n \"dl\",\r\n \"dt\",\r\n \"em\",\r\n \"fieldset\",\r\n \"figcaption\",\r\n \"figure\",\r\n \"footer\",\r\n \"form\",\r\n \"h1\",\r\n \"h2\",\r\n \"h3\",\r\n \"h4\",\r\n \"h5\",\r\n \"h6\",\r\n \"header\",\r\n \"hgroup\",\r\n \"hr\",\r\n \"i\",\r\n \"img\",\r\n \"input\",\r\n \"ins\",\r\n \"kbd\",\r\n \"label\",\r\n \"legend\",\r\n \"li\",\r\n \"main\",\r\n \"mark\",\r\n \"menu\",\r\n \"menuitem\",\r\n \"meter\",\r\n \"nav\",\r\n \"ol\",\r\n \"optgroup\",\r\n \"option\",\r\n \"output\",\r\n \"p\",\r\n \"pre\",\r\n \"progress\",\r\n \"q\",\r\n \"rb\",\r\n \"rp\",\r\n \"rt\",\r\n \"rtc\",\r\n \"ruby\",\r\n \"s\",\r\n \"samp\",\r\n \"section\",\r\n \"select\",\r\n \"small\",\r\n \"span\",\r\n \"strong\",\r\n \"sub\",\r\n \"summary\",\r\n \"sup\",\r\n \"table\",\r\n \"tbody\",\r\n \"td\",\r\n \"textarea\",\r\n \"tfoot\",\r\n \"th\",\r\n \"thead\",\r\n \"time\",\r\n \"tr\",\r\n \"track\",\r\n \"tt\",\r\n \"u\",\r\n \"ul\",\r\n \"video\",\r\n \"wbr\",\r\n\r\n])\r\n\r\n","import { hyperscript } from './hyperscript.js';\r\n\r\n/**\r\n * @template {HTMLElement} T\r\n * @typedef {import(\"./HyperscriptExtensions.d.ts\").HyperscriptExtensions<T>} HyperscriptExtensions\r\n */\r\n\r\n/**\r\n * 创建 <a> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLAnchorElement>}\r\n */\r\nexport const a = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLAnchorElement>} */(hyperscript('a', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <abbr> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const abbr = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('abbr', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <address> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const address = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('address', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <area> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLAreaElement>}\r\n */\r\nexport const area = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLAreaElement>} */(hyperscript('area', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <article> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const article = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('article', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <aside> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const aside = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('aside', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <audio> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLAudioElement>}\r\n */\r\nexport const audio = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLAudioElement>} */(hyperscript('audio', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <b> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const b = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('b', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <bdi> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const bdi = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('bdi', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <bdo> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const bdo = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('bdo', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <blockquote> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLQuoteElement>}\r\n */\r\nexport const blockquote = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLQuoteElement>} */(hyperscript('blockquote', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <br> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLBRElement>}\r\n */\r\nexport const br = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLBRElement>} */(hyperscript('br', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <button> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLButtonElement>}\r\n */\r\nexport const button = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLButtonElement>} */(hyperscript('button', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <caption> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const caption = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('caption', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <cite> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const cite = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('cite', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <code> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const code = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('code', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <col> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableColElement>}\r\n */\r\nexport const col = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableColElement>} */(hyperscript('col', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <colgroup> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableColElement>}\r\n */\r\nexport const colgroup = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableColElement>} */(hyperscript('colgroup', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <data> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLDataElement>}\r\n */\r\nexport const data = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLDataElement>} */(hyperscript('data', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <datalist> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLDataListElement>}\r\n */\r\nexport const datalist = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLDataListElement>} */(hyperscript('datalist', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <dd> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const dd = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('dd', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <del> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLModElement>}\r\n */\r\nexport const del = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLModElement>} */(hyperscript('del', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <details> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLDetailsElement>}\r\n */\r\nexport const details = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLDetailsElement>} */(hyperscript('details', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <dfn> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const dfn = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('dfn', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <dialog> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLDialogElement>}\r\n */\r\nexport const dialog = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLDialogElement>} */(hyperscript('dialog', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <div> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLDivElement>}\r\n */\r\nexport const div = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLDivElement>} */(hyperscript('div', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <dl> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLDListElement>}\r\n */\r\nexport const dl = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLDListElement>} */(hyperscript('dl', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <dt> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const dt = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('dt', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <em> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const em = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('em', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <fieldset> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLFieldSetElement>}\r\n */\r\nexport const fieldset = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLFieldSetElement>} */(hyperscript('fieldset', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <figcaption> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const figcaption = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('figcaption', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <figure> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const figure = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('figure', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <footer> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const footer = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('footer', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <form> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLFormElement>}\r\n */\r\nexport const form = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLFormElement>} */(hyperscript('form', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <h1> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLHeadingElement>}\r\n */\r\nexport const h1 = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLHeadingElement>} */(hyperscript('h1', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <h2> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLHeadingElement>}\r\n */\r\nexport const h2 = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLHeadingElement>} */(hyperscript('h2', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <h3> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLHeadingElement>}\r\n */\r\nexport const h3 = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLHeadingElement>} */(hyperscript('h3', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <h4> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLHeadingElement>}\r\n */\r\nexport const h4 = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLHeadingElement>} */(hyperscript('h4', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <h5> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLHeadingElement>}\r\n */\r\nexport const h5 = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLHeadingElement>} */(hyperscript('h5', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <h6> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLHeadingElement>}\r\n */\r\nexport const h6 = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLHeadingElement>} */(hyperscript('h6', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <header> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const header = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('header', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <hgroup> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const hgroup = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('hgroup', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <hr> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLHRElement>}\r\n */\r\nexport const hr = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLHRElement>} */(hyperscript('hr', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <i> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const i = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('i', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <img> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLImageElement>}\r\n */\r\nexport const img = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLImageElement>} */(hyperscript('img', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <input> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLInputElement>}\r\n */\r\nexport const input = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLInputElement>} */(hyperscript('input', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <ins> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLModElement>}\r\n */\r\nexport const ins = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLModElement>} */(hyperscript('ins', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <kbd> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const kbd = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('kbd', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <label> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLLabelElement>}\r\n */\r\nexport const label = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLLabelElement>} */(hyperscript('label', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <legend> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLLegendElement>}\r\n */\r\nexport const legend = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLLegendElement>} */(hyperscript('legend', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <li> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLLIElement>}\r\n */\r\nexport const li = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLLIElement>} */(hyperscript('li', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <main> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const main = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('main', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <mark> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const mark = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('mark', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <menu> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLMenuElement>}\r\n */\r\nexport const menu = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLMenuElement>} */(hyperscript('menu', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <menuitem> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const menuitem = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('menuitem', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <meter> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLMeterElement>}\r\n */\r\nexport const meter = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLMeterElement>} */(hyperscript('meter', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <nav> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const nav = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('nav', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <ol> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLOListElement>}\r\n */\r\nexport const ol = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLOListElement>} */(hyperscript('ol', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <optgroup> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLOptGroupElement>}\r\n */\r\nexport const optgroup = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLOptGroupElement>} */(hyperscript('optgroup', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <option> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLOptionElement>}\r\n */\r\nexport const option = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLOptionElement>} */(hyperscript('option', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <output> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLOutputElement>}\r\n */\r\nexport const output = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLOutputElement>} */(hyperscript('output', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <p> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLParagraphElement>}\r\n */\r\nexport const p = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLParagraphElement>} */(hyperscript('p', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <pre> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLPreElement>}\r\n */\r\nexport const pre = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLPreElement>} */(hyperscript('pre', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <progress> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLProgressElement>}\r\n */\r\nexport const progress = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLProgressElement>} */(hyperscript('progress', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <q> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLQuoteElement>}\r\n */\r\nexport const q = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLQuoteElement>} */(hyperscript('q', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <rb> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const rb = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('rb', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <rp> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const rp = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('rp', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <rt> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const rt = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('rt', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <rtc> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const rtc = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('rtc', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <ruby> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const ruby = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('ruby', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <s> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const s = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('s', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <samp> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const samp = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('samp', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <section> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const section = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('section', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <small> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const small = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('small', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <span> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLSpanElement>}\r\n */\r\nexport const span = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLSpanElement>} */(hyperscript('span', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <strong> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const strong = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('strong', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <sub> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const sub = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('sub', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <summary> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const summary = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('summary', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <sup> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const sup = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('sup', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <table> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableElement>}\r\n */\r\nexport const table = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableElement>} */(hyperscript('table', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <tbody> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableSectionElement>}\r\n */\r\nexport const tbody = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableSectionElement>} */(hyperscript('tbody', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <td> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableCellElement>}\r\n */\r\nexport const td = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableCellElement>} */(hyperscript('td', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <tfoot> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableSectionElement>}\r\n */\r\nexport const tfoot = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableSectionElement>} */(hyperscript('tfoot', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <th> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableCellElement>}\r\n */\r\nexport const th = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableCellElement>} */(hyperscript('th', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <thead> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableSectionElement>}\r\n */\r\nexport const thead = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableSectionElement>} */(hyperscript('thead', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <time> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTimeElement>}\r\n */\r\nexport const time = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTimeElement>} */(hyperscript('time', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <tr> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTableRowElement>}\r\n */\r\nexport const tr = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTableRowElement>} */(hyperscript('tr', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <track> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLTrackElement>}\r\n */\r\nexport const track = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLTrackElement>} */(hyperscript('track', props, ...childNodes));\r\n\r\n/**\r\n * 创建 <tt> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const tt = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('tt', props, ...childNodes));\r\n\r\n\r\n/**\r\n * 创建 <u> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const u = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('u', props, ...childNodes))\r\n\r\n/**\r\n * 创建 <ul> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLUListElement>}\r\n */\r\nexport const ul = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLUListElement>} */(hyperscript('ul', props, ...childNodes))\r\n\r\n/**\r\n * 创建 <video> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLVideoElement>}\r\n */\r\nexport const video = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLVideoElement>} */(hyperscript('video', props, ...childNodes))\r\n\r\n/**\r\n * 创建 <wbr> 元素\r\n * @param {{ [_: string]: any }} [props] - 元素属性\r\n * @param {...any} childNodes - 子节点\r\n * @returns {HyperscriptExtensions<HTMLElement>}\r\n */\r\nexport const wbr = (props, ...childNodes) => /** @type {HyperscriptExtensions<HTMLElement>} */(hyperscript('wbr', props, ...childNodes))\r\n","import { div, ul } from '../tags.js';\r\n\r\n/**\r\n * 选项卡组件的基础框架。\r\n *\r\n * `tabRoot` 函数生成一个包含导航栏和内容面板的容器结构,\r\n * 用于构建选项卡组件的基础部分。\r\n *\r\n * @param {Object} props - 传递给根容器 `<div>` 的属性(如 `id`、`className` 等)。\r\n * @returns {HTMLElement} - 返回一个包含导航栏和内容面板的 `<div>` 元素。\r\n *\r\n */\r\nexport function tabRoot(props) {\r\n // <div>\r\n // <ul class=\"nav nav-tabs\"></ul>\r\n // <div class=\"tab-content\"></div>\r\n // </div>\r\n return div(props,\r\n ul({\r\n className: 'nav nav-tabs',\r\n }),\r\n div({\r\n className: 'tab-content',\r\n })\r\n );\r\n}","import { button, li } from '../tags.js';\r\n\r\n/**\r\n * 选项卡的导航按钮。\r\n *\r\n * `tabNavItem` 函数生成一个选项卡的导航按钮,通常用于选项卡的导航栏中。\r\n *\r\n * @param {...(string|HTMLElement)} source - 按钮的内容,可以是字符串或 HTML 元素。\r\n * @returns {HTMLElement} - 返回一个带有 `nav-item` 样式类的 `<li>` 元素,内部包含一个按钮。\r\n *\r\n */\r\nexport function tabNavItem(...source) {\r\n // <li class=\"nav-item\">\r\n // <button type=\"button\" class=\"btn btn-link nav-link\">\r\n // source\r\n // </button>\r\n // </li>\r\n return li(\r\n {\r\n className: 'nav-item',\r\n },\r\n button(\r\n {\r\n type: 'button',\r\n className: 'btn btn-link nav-link',\r\n },\r\n ...source\r\n )\r\n );\r\n}","import { div } from '../tags.js'\r\n\r\n/**\r\n * 选项卡的内容面板。\r\n *\r\n * `tabPanel` 函数生成一个选项卡的内容区域,用于显示与选项卡对应的内容。\r\n *\r\n * @param {...(string|HTMLElement)} source - 面板的内容,可以是字符串或 HTML 元素。\r\n * @returns {HTMLElement} - 返回一个带有 `tab-pane` 样式类的 `<div>` 元素。\r\n *\r\n */\r\nexport function tabPanel(...source) {\r\n // <div class=\"tab-pane\">\r\n // source\r\n // </div>\r\n return div({\r\n className: 'tab-pane',\r\n },\r\n ...source\r\n )\r\n}\r\n","import { filter, map } from 'rxjs/operators';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * 绑定选项卡的激活状态到 `tabIndex`。\r\n *\r\n * `bindTabIndex` 函数将选项卡的导航按钮和内容面板与 `tabIndex` 绑定,\r\n * 实现动态切换选项卡的功能。\r\n *\r\n * @param {HTMLElement} tabRoot - 选项卡的根容器,包含导航栏和内容面板。\r\n * @param {BehaviorSubject<number>} tabIndex$ - 表示当前激活选项卡索引的 BehaviorSubject。\r\n *\r\n */\r\nexport function bindTabIndex(tabRoot, tabIndex$) {\r\n /**\r\n * @typedef {import(\"../HyperscriptExtensions.d.ts\").HyperscriptExtensions<HTMLElement>} HyperscriptElement\r\n */\r\n\r\n const navs = /** @type {HyperscriptElement} */ (tabRoot.firstChild); // 导航栏容器\r\n const panels = /** @type {HyperscriptElement} */ (tabRoot.lastChild); // 内容面板容器\r\n\r\n // 订阅 tabIndex,动态更新选项卡的激活状态\r\n tabIndex$.subscribe(i => {\r\n // 更新导航按钮的激活状态\r\n Array.from(navs.childNodes).forEach((li, j) => {\r\n const btn = /** @type {HTMLElement} */(li.firstChild);\r\n if (i === j) {\r\n btn.classList.add('active');\r\n } else {\r\n btn.classList.remove('active');\r\n }\r\n });\r\n\r\n // 更新内容面板的激活状态\r\n Array.from(panels.childNodes)\r\n .forEach(\r\n (panel, j) => {\r\n const classList = /** @type {HTMLElement} */ (panel).classList\r\n if (i === j) {\r\n classList.add('active');\r\n } else {\r\n classList.remove('active');\r\n }\r\n });\r\n });\r\n\r\n // 监听导航按钮的点击事件,更新 tabIndex\r\n navs.pipeEvent('click', click$ =>\r\n click$.pipe(\r\n map(e =>\r\n Array.from(navs.childNodes)\r\n .map(e => /** @type {HTMLElement} */(e.firstChild))\r\n .indexOf(/** @type {HTMLElement} */(e.target))\r\n ),\r\n filter(i => i > -1) // 过滤无效索引\r\n ).subscribe(tabIndex$)\r\n );\r\n}","import { BehaviorSubject } from 'rxjs';\r\n\r\nimport { tabRoot } from './tabRoot.js';\r\nimport { tabNavItem } from './tabNavItem.js';\r\nimport { tabPanel } from './tabPanel.js';\r\nimport { bindTabIndex } from './bindTabIndex.js';\r\n/**\r\n * 创建静态选项卡组件。\r\n *\r\n * `tabControl` 函数生成一个静态选项卡组件,其中选项卡的数量和顺序是固定的。\r\n * 每个选项卡由一个导航按钮和一个对应的内容面板组成。\r\n *\r\n * @param {{ tabIndex: BehaviorSubject<number>, [key: string]: any}} props - 选项卡组件的属性。\r\n * @param {Array<string|HTMLElement>} tabs - 导航按钮的内容数组,可以是字符串或 HTML 元素。\r\n * @param {Array<string|HTMLElement>} panels - 内容面板的内容数组,可以是字符串或 HTML 元素。\r\n * @returns {HTMLElement} - 返回一个包含导航栏和内容面板的选项卡组件。\r\n */\r\nexport function tabControl(props, tabs, panels) {\r\n const { tabIndex, ...rootProps } = props;\r\n\r\n // 创建选项卡的根容器\r\n const root = tabRoot(rootProps);\r\n const tablist = /** @type {HTMLElement} */ (root.firstChild); // 导航栏容器\r\n const tabcontent = /** @type {HTMLElement} */ (root.lastChild); // 内容面板容器\r\n\r\n // 创建导航按钮并添加到导航栏\r\n tabs\r\n .map(tab => tabNavItem(tab))\r\n .forEach(item => tablist.appendChild(item));\r\n\r\n // 创建内容面板并添加到内容区域\r\n panels\r\n .map(panel => tabPanel(panel))\r\n .forEach(panel => tabcontent.appendChild(panel));\r\n\r\n // 绑定选项卡的激活状态\r\n bindTabIndex(root, tabIndex);\r\n\r\n return root;\r\n}","export * from './tabControl.js'\r\nexport * from './bindTabIndex.js'\r\nexport * from './tabNavItem.js'\r\nexport * from './tabPanel.js'\r\nexport * from './tabRoot.js'\r\n","import { BehaviorSubject, Observable } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\nimport { input } from './tags.js'\r\n\r\n/**\r\n * @typedef {import(\"./HyperscriptExtensions.d.ts\").HyperscriptExtensions<HTMLInputElement>} HyperscriptInputElement\r\n */\r\n\r\n/**\r\n * 创建一个支持 RxJS 的复选框组件。\r\n *\r\n * @param {{checked?:BehaviorSubject<boolean>, [key: string]: any}} props - 复选框的属性对象。\r\n * @returns {HyperscriptInputElement} - 返回一个复选框元素。\r\n */\r\nexport function checkbox(props) {\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('`checkbox` requires a `props` object.');\r\n }\r\n\r\n // 创建复选框元素,确保 type 为 'checkbox'\r\n const elem = /** @type {HyperscriptInputElement}*/ (input({ ...props, type: 'checkbox' }));\r\n\r\n // 如果传入了 checked 属性\r\n if (props.checked && props.checked instanceof BehaviorSubject) {\r\n // 监听复选框的 input 事件,并将选中状态推送到 Observable/Subject\r\n let subscriber =\r\n /**\r\n * \r\n * @param {Observable<Event>} input$ \r\n * @returns \r\n */\r\n input$ =>\r\n input$.pipe(\r\n map(\r\n e => /** @type {HTMLInputElement} */(e.target).checked\r\n ) // 提取复选框的选中状态\r\n ).subscribe(props.checked); // 推送选中状态到 Observable/Subject\r\n\r\n elem.pipeEvent('input', subscriber); // 绑定事件处理器\r\n } else {\r\n throw new Error(\r\n '`checkbox` requires a `checked` prop that is an instance of BehaviorSubject.'\r\n );\r\n }\r\n\r\n return elem; // 返回复选框元素\r\n}","import { Observable } from 'rxjs'\r\n\r\nimport { unwrapArgs } from '../array/unwrapArgs.js'\r\nimport { subscribeProp } from '../props/subscribeProp.js'\r\n\r\n/**\r\n * 显示或隐藏包含的元素。\r\n * \r\n * `collapse` 函数通过绑定 `hidden` 属性,实现一组 HTML 元素的动态显示或隐藏。\r\n * \r\n * @param {Observable<boolean>} hidden$ - 一个可观察对象(如 BehaviorSubject),用于控制元素的 `hidden` 属性。\r\n * @param {...HTMLElement|HTMLElement[]} elements - 一个或多个 HTML 元素,或者包含 HTML 元素的数组。\r\n * @returns {HTMLElement[]} - 处理后的元素数组。\r\n * \r\n * @throws {Error} 如果 `elements` 中包含非元素节点(如 TextNode)。\r\n * \r\n */\r\nexport function collapse(hidden$, ...elements) {\r\n // 支持子元素包含在数组中:collapse([a, b, c]) 或 collapse(a, b, c)\r\n let elems = unwrapArgs(elements);\r\n\r\n elems.forEach(elem => {\r\n if (!(elem instanceof HTMLElement)) {\r\n throw new Error('`collapse` only supports HTMLElement nodes.');\r\n }\r\n\r\n // 绑定 hidden 属性到可观察对象\r\n subscribeProp(elem, 'hidden', hidden$);\r\n });\r\n\r\n return elems;\r\n}","import { Observable } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { collapse } from './collapse.js'\r\n\r\n/**\r\n * @param {Observable<string>} chosen$ \r\n * @param {Record<string, HTMLElement | HTMLElement[]>} possibilities \r\n * @returns {HTMLElement[]}\r\n */\r\nexport function choice(chosen$, possibilities) {\r\n // 遍历 possibilities,将每个可能性绑定到 collapse\r\n const elems = Object.entries(possibilities)\r\n .map(([key, possibility]) => {\r\n const hidden$ =\r\n chosen$.pipe(\r\n map(selectedKey => selectedKey !== key) // 如果当前选中的键不是当前可能性,则隐藏\r\n );\r\n return collapse(hidden$, possibility); // 绑定 hidden 属性\r\n })\r\n .reduce((acc, cur) => [...acc, ...cur], []); // 扁平化数组\r\n\r\n return elems;\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators'\r\nimport { collapse } from './collapse.js'\r\n\r\n/**\r\n * 动态切换两个元素或元素数组的显示状态。\r\n *\r\n * `flip` 函数根据 `yinHidden$` 的值动态控制 `yinElement` 和 `yangElement` 的显示状态:\r\n * - 当 `yinHidden$` 为 `true` 时,隐藏 `yinElement`,显示 `yangElement`。\r\n * - 当 `yinHidden$` 为 `false` 时,显示 `yinElement`,隐藏 `yangElement`。\r\n *\r\n * @param {Observable<boolean>} yinHidden$ - 一个 Observable,表示 `yinElement` 是否隐藏。\r\n * @param {HTMLElement|HTMLElement[]} yin - 需要动态控制显示状态的第一个元素或元素数组。\r\n * @param {HTMLElement|HTMLElement[]} yang - 需要动态控制显示状态的第二个元素或元素数组。\r\n * @returns {HTMLElement[]} - 包含所有元素的数组。\r\n *\r\n */\r\nexport function flip(yinHidden$, yin, yang) {\r\n // 创建一个 Observable,用于控制 yangElement 的隐藏状态\r\n const yangHidden$ = yinHidden$.pipe(\r\n map(isHidden => !isHidden)\r\n );\r\n\r\n // 阴阳交叉\r\n return [\r\n ...collapse(yangHidden$, yin),\r\n ...collapse(yinHidden$, yang)\r\n ];\r\n}\r\n","import { normalizeChildNodes } from '../nodes/normalizeChildNodes.js';\r\n\r\n/**\r\n * 用途:插入一组元素,不必使用循环语句,fragment 用后即弃。\r\n *\r\n * @param {...Node|Node[]} childNodes - 要插入的子节点,可以是单个节点、多个节点或节点数组。\r\n * @returns {DocumentFragment} - 返回包含所有子节点的 DocumentFragment。\r\n * @throws {Error} 如果传入的子节点不是有效的 DOM 节点。\r\n */\r\nexport function fragment(...childNodes) {\r\n // 创建一个 DocumentFragment\r\n const frag = new DocumentFragment();\r\n\r\n // 验证并附加子节点\r\n normalizeChildNodes(childNodes)\r\n .forEach(child => {\r\n frag.appendChild(child); // 将子节点附加到元素\r\n });\r\n\r\n // 返回 DocumentFragment\r\n return frag;\r\n}","import { hyperscript } from './hyperscript.js'\r\n\r\n/**\r\n * @typedef {import(\"./HyperscriptExtensions.d.ts\").HyperscriptExtensions<HTMLSelectElement>} HyperscriptSelectElement\r\n */\r\n\r\n\r\n/**\r\n * 创建一个支持多选功能的 <select> 元素,并绑定选项的选中状态。必须手动添加控件更新BehaviorSubject的事件。\r\n * \r\n * @param {{oninput?: (e:Event)=>void, onchange?: (e:Event)=>void, [key: string]: any}} props - 配置对象,包含 <select> 元素的属性。\r\n * @param {...HTMLOptionElement} options - 一个或多个 <option> 元素,必须是 HTMLOptionElement 类型。\r\n * 每个选项需要包含一个 `selected` 属性,该属性是一个 BehaviorSubject ,用于绑定选中状态。\r\n * @returns {HyperscriptSelectElement} - 创建的 <select> 元素。\r\n * @throws {Error} 如果 `props` 不是对象,或者 `options` 中的选项未正确定义 `selected` 属性。\r\n * \r\n */\r\nexport function multiselect(props, ...options) {\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('`select` requires a `props` object.');\r\n }\r\n let { oninput, onchange, ...rest } = props\r\n\r\n let elem = hyperscript('select', { ...rest, multiple: true }, ...options);\r\n\r\n if (typeof oninput === 'function') {\r\n elem.subscribeEvent('input', e => {\r\n oninput(e)\r\n });\r\n }\r\n\r\n if (typeof onchange === 'function') {\r\n elem.subscribeEvent('change', e => {\r\n onchange(e)\r\n });\r\n }\r\n\r\n return /** @type {HyperscriptSelectElement} */(elem)\r\n\r\n}\r\n\r\n","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { input } from './tags.js';\r\nimport { subscribeProp } from '../props/subscribeProp.js';\r\n// import { fromEvent } from 'rxjs';\r\n// import { attachSubscriptionToNode } from '../../nodes/attachSubscriptionToNode';\r\n\r\n/**\r\n * @internal\r\n * @typedef {import(\"./HyperscriptInputElement.d.ts\").HyperscriptInputElement} HyperscriptInputElement\r\n */\r\n\r\n/**\r\n * 创建一个支持双向绑定的数字输入框。\r\n *\r\n * `numberbox` 是一个自定义的输入框组件,支持通过 RxJS 的 `BehaviorSubject` 实现数字值的双向绑定。\r\n * @public\r\n * @param {{ number: BehaviorSubject<number>; [key: string]: any;}} props - 配置对象,包含输入框的属性。\r\n * @returns {HyperscriptInputElement} - 创建的数字输入框元素。\r\n * @throws {Error} 如果 `props` 不是对象,或者 `number` 不是 `BehaviorSubject` 实例。\r\n * \r\n */\r\nexport function numberbox(props) {\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('`numberbox` requires a `props` object.');\r\n }\r\n let { number, ...rest } = props;\r\n let elem =\r\n /** @type {HyperscriptInputElement} */\r\n (input({ ...rest, type: 'text' }));\r\n\r\n if (number && number instanceof BehaviorSubject) {\r\n let value = number.pipe(map(n => String(n)));\r\n\r\n subscribeProp(elem, 'value', value);\r\n\r\n let subscriber =\r\n /**\r\n * \r\n * @param {Observable<Event>} blur$ \r\n * @returns \r\n */\r\n blur$ =>\r\n blur$.pipe(\r\n map(e => Number(\r\n /** @type {HTMLInputElement} */\r\n (e.target).value)\r\n )\r\n ).subscribe(newValue => {\r\n if (Number.isNaN(newValue)) {\r\n elem.select();\r\n } else if (number.value !== newValue) {\r\n number.next(newValue);\r\n }\r\n })\r\n\r\n // 展开pipeEvent是为了正确生成测试代码\r\n // let event$ = fromEvent(elem, 'blur')// 创建事件流 Observable\r\n // let subscription = blurSubscriber(event$); // 订阅事件流并处理 \r\n // attachSubscriptionToNode(elem, subscription); // 将订阅附加到 DOM 元素,便于管理\r\n\r\n elem.pipeEvent('blur', subscriber)\r\n\r\n } else {\r\n throw new Error(\r\n '`numberbox` requires a `number` prop that is an instance of BehaviorSubject. '\r\n );\r\n }\r\n\r\n // 数字右对齐,用 style 可以获得最高优先级\r\n elem.style.textAlign = 'right';\r\n\r\n return elem;\r\n}","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators'\r\nimport { input } from './tags.js'\r\n\r\n// import { fromEvent } from 'rxjs';\r\n// import { attachSubscriptionToNode } from '../../nodes/attachSubscriptionToNode';\r\n\r\n/**\r\n * @internal\r\n * @typedef {import(\"./HyperscriptInputElement.d.ts\").HyperscriptInputElement} HyperscriptInputElement\r\n */\r\n\r\n/**\r\n * 单选按钮\r\n * @public\r\n * @param {{checked: BehaviorSubject<boolean>; [key: string]: any}} props \r\n * @returns {HyperscriptInputElement}\r\n */\r\nexport function radio(props) {\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('`radio` requires a `props` object.');\r\n }\r\n\r\n const elem =\r\n /** @type {HyperscriptInputElement} */\r\n (input({ ...props, type: 'radio' }))\r\n\r\n if (props.checked && props.checked instanceof BehaviorSubject) {\r\n const subscriber =\r\n /**\r\n * \r\n * @param {Observable<Event>} input$ \r\n * @returns \r\n */\r\n input$ =>\r\n input$.pipe(\r\n map(e =>\r\n /** @type {HTMLInputElement} */\r\n (e.target).checked),\r\n ).subscribe(props.checked)\r\n\r\n elem.pipeEvent('input', subscriber)\r\n\r\n // 展开pipeEvent是为了正确生成测试代码\r\n // let event$ = fromEvent(elem, 'input')// 创建事件流 Observable\r\n // let subscription = subscriber(event$); // 订阅事件流并处理 \r\n // attachSubscriptionToNode(elem, subscription); // 将订阅附加到 DOM 元素,便于管理\r\n\r\n } else {\r\n throw new Error(\r\n '`radio` requires a `checked` prop that is an instance of BehaviorSubject. '\r\n );\r\n }\r\n\r\n return elem\r\n}\r\n","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators'\r\nimport { hyperscript } from './hyperscript.js'\r\n\r\n// import { fromEvent } from 'rxjs';\r\n// import { attachSubscriptionToNode } from '../nodes/attachSubscriptionToNode';\r\n\r\n/**\r\n * @internal\r\n * @typedef {import(\"./HyperscriptSelectElement.d.ts\").HyperscriptSelectElement} HyperscriptSelectElement\r\n */\r\n\r\n/**\r\n * 创建一个支持 RxJS 数据绑定的 <select> 元素。仅单选选择框。\r\n * \r\n * @param {{ selectedIndex?: BehaviorSubject<number>, value?: BehaviorSubject<string>, [key: string]: any }} props - 配置对象,包含 <select> 元素的属性。\r\n * @param {...HTMLOptionElement} options - 一个或多个 <option> 元素,必须是 HTMLOptionElement 类型。\r\n * @returns {HyperscriptSelectElement} - 创建的 <select> 元素。\r\n * @throws {Error} 如果 `props` 不是对象,或者 `selectedIndex` 或 `value` 不是 BehaviorSubject。\r\n */\r\nexport function select(props, ...options) {\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('`select` requires a `props` object.');\r\n }\r\n\r\n let elem =\r\n /** @type {HyperscriptSelectElement} */\r\n (hyperscript('select', { ...props, multiple: false }, ...options))\r\n\r\n // todo: 显示判断属性是否传递了属性,('selectedIndex' in props)\r\n let { selectedIndex, value } = props\r\n\r\n // 确保至少有一个是 BehaviorSubject\r\n if (elem.options.length > 0 &&\r\n !(selectedIndex instanceof BehaviorSubject) &&\r\n !(value instanceof BehaviorSubject)) {\r\n throw new Error('`select` requires at least one of `selectedIndex` or `value` to be a BehaviorSubject.');\r\n }\r\n\r\n if (selectedIndex && selectedIndex instanceof BehaviorSubject) {\r\n\r\n selectedIndex.subscribe(i => {\r\n /** @type {HTMLOptionElement} */\r\n (elem[i]).selected = true\r\n })\r\n let subscriber =\r\n /**\r\n * @param {Observable<Event>} input$ \r\n */\r\n input$ =>\r\n input$.pipe(\r\n map(e =>\r\n /** @type {HTMLSelectElement} */\r\n (e.target).selectedIndex)\r\n ).subscribe(selectedIndex)\r\n\r\n elem.pipeEvent('input', subscriber)\r\n // let event$ = fromEvent(elem, 'input');\r\n // let subscription = subscriber(event$);\r\n // attachSubscriptionToNode(elem, subscription);\r\n }\r\n\r\n if (value && value instanceof BehaviorSubject) {\r\n\r\n value.subscribe(value => {\r\n Array.from(elem.getElementsByTagName('option'))\r\n .filter(opt => opt.value === value)\r\n .forEach(opt => { opt.selected = true })\r\n })\r\n\r\n let subscriber =\r\n /**\r\n * @param {Observable<Event>} input$ \r\n */\r\n\r\n input$ =>\r\n input$.pipe(map(e =>\r\n /** @type {HTMLSelectElement} */\r\n (e.target).value)\r\n ).subscribe(value)\r\n elem.pipeEvent('input', subscriber)\r\n // let event$ = fromEvent(elem, 'input');\r\n // let subscription = subscriber(event$);\r\n // attachSubscriptionToNode(elem, subscription);\r\n }\r\n\r\n return elem\r\n}\r\n\r\n","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { hyperscript } from './hyperscript.js';\r\n\r\n/**\r\n * @internal\r\n * @typedef {import(\"./HyperscriptExtensions.d.ts\").HyperscriptExtensions<HTMLTextAreaElement>} HyperscriptTextAreaElement\r\n */\r\n\r\n/**\r\n * 创建一个支持 RxJS 数据绑定的 <textarea> 元素。\r\n * \r\n * @param {{value:BehaviorSubject<string>, [key:string]:any}} props - 配置对象,包含 <textarea> 元素的属性。\r\n * @returns {HyperscriptTextAreaElement} - 创建的 <textarea> 元素。\r\n * @throws {Error} 如果 `props` 不是对象,或者 `value` 不是 BehaviorSubject。\r\n */\r\nexport function textarea(props) {\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('`textarea` requires a `props` object.');\r\n }\r\n\r\n const { value } = props;\r\n\r\n if (!(value instanceof BehaviorSubject)) {\r\n throw new Error('`value` must be an instance of BehaviorSubject.');\r\n }\r\n\r\n // 创建 <textarea> 元素\r\n const elem = /** @type {HyperscriptTextAreaElement} */ (hyperscript('textarea', props));\r\n\r\n // 订阅输入事件并更新 BehaviorSubject\r\n const subscriber =\r\n /**\r\n * \r\n * @param {Observable<Event>} input$ \r\n * @returns \r\n */\r\n input$ =>\r\n input$.pipe(\r\n map(e => /** @type {HTMLTextAreaElement} */ (e.target).value),\r\n ).subscribe(value);\r\n\r\n elem.pipeEvent('input', subscriber);\r\n\r\n return elem;\r\n}","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { input } from './tags.js';\r\n\r\n/**\r\n * @internal\r\n * @typedef {import(\"./HyperscriptInputElement.d.ts\").HyperscriptInputElement} HyperscriptInputElement\r\n */\r\n\r\n/**\r\n * 创建一个支持 RxJS 数据绑定的 <input type=\"text\"> 元素。\r\n * \r\n * @param {{value: BehaviorSubject<string>, [key: string]: any}} props - 配置对象,包含 <input> 元素的属性。\r\n * @returns {HyperscriptInputElement} - 创建的 <input type=\"text\"> 元素。\r\n * @throws {Error} 如果 `props` 不是对象,或者 `value` 不是 BehaviorSubject。\r\n */\r\nexport function textbox(props) {\r\n if (typeof props !== 'object' || props === null) {\r\n throw new Error('`textbox` requires a `props` object.');\r\n }\r\n\r\n const { value } = props;\r\n\r\n if (!(value instanceof BehaviorSubject)) {\r\n throw new Error('`value` must be an instance of BehaviorSubject.');\r\n }\r\n\r\n // 创建 <input type=\"text\"> 元素\r\n const elem = /** @type {HyperscriptInputElement} */ (input({ ...props, type: 'text' }));\r\n\r\n // 订阅输入事件并更新 BehaviorSubject\r\n const subscriber =\r\n /**\r\n * @param {Observable<Event>} input$ \r\n * @returns \r\n */\r\n input$ =>\r\n input$.pipe(\r\n map(e => /** @type {HTMLInputElement} */(e.target).value),\r\n ).subscribe(value);\r\n elem.pipeEvent('input', subscriber);\r\n return elem;\r\n}","import { Observable, isObservable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n/**\r\n * @typedef {Text & {subscription?: Subscription, unsubscribe?: ()=>void}} ObservableTextNode\r\n */\r\n\r\n/**\r\n * 创建一个文本节点。\r\n * 支持静态文本和动态更新的文本(通过 RxJS Observable)。\r\n *\r\n * - 如果传入的是字符串,则创建一个静态文本节点。\r\n * - 如果传入的是 RxJS Observable,则创建一个动态文本节点,并根据 Observable 的值实时更新文本内容。\r\n * - 动态文本节点支持通过 `unsubscribe` 方法取消订阅。\r\n *\r\n * @param {any} text Observable<any> | any。\r\n * @returns {ObservableTextNode}\r\n *\r\n */\r\nexport function textNode(text) {\r\n // 如果传入的是 Observable\r\n if (isObservable(text)) {\r\n const node = document.createTextNode(\"\");\r\n\r\n // 创建订阅并更新文本节点\r\n const subscription = text.pipe(\r\n map(d => String(d))\r\n ).subscribe({\r\n next(t) { node.nodeValue = t; },\r\n error(err) { node.nodeValue = `Error: ${err.message}`; }\r\n })\r\n\r\n return Object.assign(node, {\r\n subscription,\r\n /**\r\n * @this {ObservableTextNode}\r\n */\r\n unsubscribe() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n delete this.subscription; // 删除 subscription 成员\r\n delete this.unsubscribe;\r\n }\r\n }\r\n });\r\n\r\n } else {\r\n return document.createTextNode(String(text)); // 转换为字符串\r\n }\r\n}\r\n\r\n","export * from './displays/0.js'\r\nexport * from './tabControls/0.js'\r\n\r\nexport * from './checkbox.js'\r\nexport * from './choice.js'\r\nexport * from './collapse.js'\r\nexport * from './flip.js'\r\nexport * from './fragment.js'\r\nexport * from './hyperscript.js'\r\nexport * from './multiselect.js'\r\nexport * from './numberbox.js'\r\nexport * from './radio.js'\r\nexport * from './select.js'\r\nexport * from './tags.js'\r\n\r\nexport * from './textarea.js'\r\nexport * from './textbox.js'\r\nexport * from './textNode.js'\r\n\r\n","export * from './attachSubscriptionToNode.js'\r\nexport * from './normalizeChildNodes.js'\r\nexport * from './parseHyperscriptArgs.js'\r\nexport * from './pipeEvent.js'\r\nexport * from './subscribeEvent.js'\r\n\r\n","/**\r\n * Creates an object composed of the picked object properties.\r\n * @param {Record<string,any>} obj - Source object\r\n * @param {string[]} keys - Array of property keys to pick\r\n * @returns {Record<string,any>} New object with picked properties\r\n * @throws {TypeError} If obj is not an object or keys is not an array\r\n */\r\nexport function intersectObject(obj, keys) {\r\n // 类型检查\r\n if (typeof obj !== 'object' || obj === null) {\r\n throw new TypeError('First argument must be an object');\r\n }\r\n \r\n if (!Array.isArray(keys)) {\r\n throw new TypeError('Second argument must be an array');\r\n }\r\n\r\n return Object.fromEntries(\r\n keys\r\n .filter(key => key in obj)\r\n .map(key => [key, obj[key]])\r\n );\r\n}","/**\r\n * 检查一个值是否是普通对象(Plain Object)\r\n * @param {unknown} value - 要检查的值\r\n * @returns {value is object} - 返回是否是普通对象的类型谓词\r\n */\r\nexport function isPlainObject(value) {\r\n // 基本检查:非对象或为null的直接返回false\r\n if (typeof value !== 'object' || value === null) {\r\n return false;\r\n }\r\n\r\n // 检查原型链\r\n const proto = Object.getPrototypeOf(value);\r\n \r\n // 1. 原型为null(如Object.create(null)创建的对象)\r\n // 2. 原型等于Object.prototype(普通对象)\r\n return proto === null || proto === Object.prototype;\r\n}","import { isPlainObject } from './isPlainObject.js'\r\n\r\n/**\r\n * 判断对象是否为空对象(非数组、非 null,且无自有属性)\r\n * @param {unknown} obj - 要判断的对象\r\n * @returns {obj is Record<never, never>} 类型谓词,确保类型收窄\r\n */\r\nexport const isEmptyObject = (obj) => {\r\n return isPlainObject(obj) && Object.keys(obj).length === 0\r\n}","import { Observable } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { Deep } from '../deep/Deep.js'\r\n\r\n///对象格式的Observale,转化成扁平格式的数据后,整个数组外面Observable\r\n/**\r\n * \r\n * @param {Record<string|number, any>} model \r\n * @returns {Observable<Record<string|number, any>>}\r\n */\r\nexport function nestedCombineLatest(model) {\r\n let deep = Deep.fromObservable(model)\r\n return deep.combineLatest()\r\n .pipe(\r\n map(deep => deep.toObject())\r\n )\r\n}\r\n","import { Observable } from 'rxjs'\r\nimport { Deep } from '../deep/Deep.js'\r\n\r\n/**\r\n * \r\n * @param {Record<string|number, any>} model \r\n * @returns {Observable<[(string | number)[], any]>}\r\n */\r\nexport function nestedMerge(model) {\r\n return Deep.fromObservable(model).merge()\r\n}\r\n","import { BehaviorSubject, isObservable } from 'rxjs'\r\n\r\nimport { isRxType } from '../deep-rxjs/isRxType.js'\r\nimport { ObservableArray } from '../deep-rxjs/ObservableArray.js'\r\n\r\nimport { intersectObject } from './intersectObject.js'\r\n\r\n/**\r\n * \r\n * 拾取对象中的BehaviorSubject值,作爲葉子節點,忽略其他值。\r\n * \r\n * @param {Record<string|number,any> & { pickeys?: string [] }} model - 输入的数据结构,可以是对象、数组或BehaviorSubject\r\n * @returns {Record<string|number,any>} - 返回只包含BehaviorSubject当前值的结构\r\n * @throws {Error} 当输入不包含任何BehaviorSubject或结构不符合预期时抛出错误\r\n */\r\nexport function pickBehaviorSubject(model) {\r\n let x = loop(model, '', null)\r\n if (x.length === 1) {\r\n return x[0][1]\r\n } else {\r\n throw new Error('pickBehaviorSubject')\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * 递归遍历数据结构收集BehaviorSubject值\r\n * \r\n * @param {any} value - 当前遍历的值\r\n * @param {string|number} key - 当前键名\r\n * @param {object|null} parent - 父级对象\r\n * @returns {[string|number, any][]} - 返回收集到的键值对数组,每个元素是一个[key, value]元组\r\n * @throws {Error} 当遇到不符合要求的数据结构时抛出错误\r\n */\r\nfunction loop(value, key, parent) {\r\n if (isObservable(value) && value instanceof BehaviorSubject) {\r\n return [[key, value.value]] //保存葉節點\r\n } else if (value === null || typeof value !== 'object' || isRxType(value)) {\r\n return []\r\n } else if (value instanceof ObservableArray) {\r\n let v = [...value]\r\n .map((e, i) => {\r\n let pelem = loop(e, i, value)\r\n if (pelem.length === 1) {\r\n return pelem[0][1] //表示元素是正常叶节点\r\n } else {\r\n throw new Error('dense Array') //非正常叶节点,有洞\r\n }\r\n })\r\n return [[key, v]]\r\n } else if (value instanceof Array) {\r\n if (value.length === 0) {\r\n return [] //空不可变数组,将丢弃。\r\n } else {\r\n let v = value.map((e, i) => {\r\n let pelem = loop(e, i, value)\r\n if (pelem.length === 1) {\r\n return pelem[0][1]\r\n } else {\r\n throw new Error('dense Array')\r\n }\r\n })\r\n\r\n return [[key, v]]\r\n }\r\n } else if ('pickeys' in value) {\r\n return loop(intersectObject(value, value.pickeys()), key, parent)\r\n } else {\r\n let entries = Object.entries(value)\r\n if (entries.length === 0) {\r\n return []\r\n } else {\r\n let ee = entries\r\n .map(([k, v]) => loop(v, k, parent))\r\n .reduce((acc, val) => [...acc, ...val], [])\r\n if (ee.length === 0) {\r\n return []\r\n } else {\r\n return [[key, Object.fromEntries(ee)]]\r\n }\r\n }\r\n }\r\n}","import { BehaviorSubject } from 'rxjs'\r\nimport { isRxType } from '../deep-rxjs/isRxType.js'\r\nimport { ObservableArray } from '../deep-rxjs/ObservableArray.js'\r\n\r\n/**\r\n * Updates a reactive model with new values from a source object.\r\n * Recursively synchronizes BehaviorSubject, ObservableArray, array and object contents.\r\n * \r\n * @param {Record<string | number, any>} model - The reactive model to update (can be BehaviorSubject, ObservableArray, array or object)\r\n * @param {Record<string | number, any>} src - The new values to restore, should match the structure of the model\r\n * @returns\r\n */\r\nexport function restore(model, src) {\r\n loop(model, src)\r\n // return model\r\n}\r\n\r\n/**\r\n * Recursively updates model values from source\r\n * @param {any & {appendChild?: (c:any) => void }} o - Current model node to update\r\n * @param {any} src - Corresponding source value\r\n */\r\nfunction loop(o, src) {\r\n if (o instanceof BehaviorSubject) {\r\n // Input value\r\n o.next(src)\r\n } else if (o === null || typeof o !== 'object' || isRxType(o)) {\r\n // noop\r\n } else if (o instanceof ObservableArray) {\r\n let len = o.length\r\n let diffcount = len - src.length\r\n if (diffcount > 0) {\r\n // Truncate if longer\r\n Array.from({ length: diffcount })\r\n .map((e, i) => len - 1 - i)\r\n .forEach((last) => {\r\n o.removeChild(last)\r\n })\r\n } else if (diffcount < 0) {\r\n // Extend if shorter\r\n Array.from({ length: -diffcount })\r\n .map((e, i) => len + i)\r\n .forEach(i => {\r\n // Add an item to the end of an Array\r\n o.appendChild()\r\n })\r\n }\r\n\r\n // After alignment, update each element's value\r\n for (let i of o.keys()) {\r\n loop(o[i], src[i])\r\n }\r\n } else if (o instanceof Array) {\r\n // Regular array, tuple\r\n let indexes = o.length < src.length ? o : src\r\n // Ignore extra src elements, noop for missing elements\r\n for (let i of indexes.keys()) {\r\n // todo: Throw error when o[i] is not settable?\r\n loop(o[i], src[i])\r\n }\r\n } else if (typeof o === 'object') {\r\n // Recursively process object properties\r\n Object.entries(o)\r\n .filter(([k, v]) => k in src) // Intersection\r\n .forEach(([k, v]) => {\r\n loop(v, src[k])\r\n })\r\n }\r\n}","export * from './intersectObject.js'\r\nexport * from './isEmptyObject.js'\r\nexport * from './isPlainObject.js'\r\nexport * from './nestedCombineLatest.js'\r\nexport * from './nestedMerge.js'\r\nexport * from './pickBehaviorSubject.js'\r\nexport * from './pluckProperty.js'\r\nexport * from './restore.js'\r\nexport * from './splitObjectByObservable.js'\r\n\r\n\r\n","export * from './getNestedProperty.js'\r\nexport * from './parsePropName.js'\r\nexport * from './setProp.js'\r\nexport * from './setProps.js'\r\nexport * from './subscribeProp.js'\r\n\r\n\r\n","/**\r\n * 函数优先的管道组合工具(从右向左执行)\r\n * @public\r\n * @param {...((arg: any) => any)} fns - 要组合的函数列表\r\n * @returns {(arg: any) => any} 组合后的函数(无参数时返回恒等函数 x => x)\r\n * @throws {TypeError} 当参数包含非函数时抛出错误\r\n */\r\nexport const compose = (...fns) => {\r\n if (!fns || fns.length === 0) {\r\n /** @param {*} x */\r\n return x => x;\r\n }\r\n\r\n const firstNonFunctionIndex = fns.findIndex(fn => typeof fn !== 'function');\r\n if (firstNonFunctionIndex !== -1) {\r\n const invalidFn = fns[firstNonFunctionIndex];\r\n const errorType =\r\n invalidFn === null ? 'null' :\r\n invalidFn === undefined ? 'undefined' :\r\n typeof invalidFn;\r\n throw new TypeError(\r\n `所有参数必须是函数,但第 ${firstNonFunctionIndex} 个参数是: ${errorType}`\r\n );\r\n }\r\n\r\n if (fns.length === 1) {\r\n return fns[0];\r\n }\r\n\r\n // 标注 args 类型\r\n return fns.reduce(\r\n (acc, fn) =>\r\n /** @returns {*} */\r\n (...args) => acc(fn(...args))\r\n );\r\n};","/**\n * 条件分支函数,依次判断分支并返回第一个匹配的结果。\n *\n * @public\n * @param {Array<Function|[Function, Function]>} branches - 分支数组,每个分支可以是函数或 [谓词函数, 动作函数] 形式\n * @returns {function(...*): *} 组合后的条件函数\n */\nexport const cond = function cond(branches) {\n /**\n * @this any\n */\n return function () {\n for (const branch of branches) {\n if (typeof branch === 'function') {\n let tryAction = branch.apply(this, arguments)\n if (tryAction) {\n return tryAction;\n }\n } else if (Array.isArray(branch)) {\n let predicate = branch[0].apply(this, arguments)\n if (predicate) {\n let args = Array.from(arguments)\n args[args.length] = predicate\n return branch[1].apply(this, args);\n }\n }\n }\n }\n}","/**\n * 通用折叠(递归归约)函数。\n *\n * @public\n * @param {(this:any, acc: any, seed: any) => [*, *]|[any]|[]|null|undefined} fn - 处理函数,返回 [新acc, 新seed] 或 [新acc]\n * @param {*} acc - 初始累加值\n * @param {*} seed - 初始种子\n * @returns {*} 折叠后的结果\n * @this *\n */\nexport function fold(fn, acc, seed) {\n while (seed != null) {\n let pair = fn.call(this, acc, seed)\n if (pair == null || pair.length === 0) break\n acc = pair[0]\n if (pair.length === 1) break\n seed = pair[1]\n }\n return acc\n}","/**\r\n * 数据优先的管道处理工具(从左向右执行)\r\n * 适合一次性数据处理流程\r\n * @public\r\n * @param {any} initialValue - 初始值\r\n * @param {...((arg: any) => any)} fns - 要应用的函数管道(从左向右执行)\r\n * @throws {TypeError} 当参数包含非函数时抛出错误\r\n */\r\nexport const pipe = (initialValue, ...fns) => {\r\n // 无函数时直接返回初始值\r\n if (fns.length === 0) return initialValue;\r\n\r\n // 类型检查(遇到第一个错误就抛出)\r\n const firstNonFunctionIndex = fns.findIndex(fn => typeof fn !== 'function');\r\n if (firstNonFunctionIndex !== -1) {\r\n const invalidFn = fns[firstNonFunctionIndex];\r\n const errorType =\r\n invalidFn === null ? 'null' :\r\n invalidFn === undefined ? 'undefined' :\r\n typeof invalidFn;\r\n throw new TypeError(\r\n `所有管道函数必须是函数,但第 ${firstNonFunctionIndex} 个参数是: ${errorType}`\r\n );\r\n }\r\n\r\n return fns.reduce((acc, fn) => fn(acc), initialValue);\r\n};","/**\n * 通过不断调用 fn 生成值,直到 fn 返回 falsy。\n *\n * @public\n * @template T, S\n * @param {(seed: S) => [T, S] | false | null | undefined} fn - 生成函数,接收当前 seed,返回 [value, nextSeed] 或 falsy。\n * @param {S} seed - 初始种子值。\n * @returns {Array<T>} 由 fn 生成的所有 value 组成的数组。\n * @this *\n */\nexport function unfold(fn, seed) {\n let result = [];\n\n let resultSeedPair = fn.call(this, seed);\n while (resultSeedPair && resultSeedPair.length) {\n result[result.length] = resultSeedPair[0];\n resultSeedPair = fn.call(this, resultSeedPair[1]);\n }\n return result;\n}","export * from './compose.js'\r\nexport * from './cond.js'\r\nexport * from './fold.js'\r\nexport * from './pipe.js'\r\nexport * from './unfold.js'\r\n\r\n","import { entryComparer } from '../comparers/0.js'\r\nimport { tojs } from './tojs.js'\r\n\r\n/**\r\n * 从扁平化的数据集构建嵌套的 JavaScript 对象。\r\n *\r\n * @param {[ (string | number)[], any ][]} entries - 扁平化的键值对数组。\r\n * 每个键值对的格式为 `[keyPath, value]`,其中 `keyPath` 是一个表示嵌套路径的数组。\r\n * @returns {object | any[]} - 返回嵌套的 JavaScript 对象或数组。\r\n */\r\nexport function erectObject(entries) {\r\n // 排序以便分组,排序后不需要再次排序\r\n const flatEntries = entryComparer.sort(entries);\r\n return tojs(flatEntries);\r\n}","export * from './erectObject.js'\r\nexport * from './flat.js'\r\nexport * from \"./groupByFirstLevelKey.js\"\r\nexport * from './tojs.js'\r\n","/**\r\n * 将键名字符串化,必要时加引号(如包含特殊字符或空字符串)。\r\n *\r\n * @public\r\n * @param {string} x - 要处理的键名\r\n * @returns {string} 处理后的键名\r\n */\r\nexport const stringifyKey = x => {\r\n if (\r\n x === \"\" ||\r\n /(^\\u0020)|[,:{}[\\]\"\\u0000-\\u001F\\u007F]|(\\u0020$)/.test(x)\r\n )\r\n return JSON.stringify(x)\r\n else\r\n return x\r\n}","import { stringifyKey } from './stringifyKey.js'\r\n\r\n/**\r\n * 将字符串值序列化为 JSON 字符串,必要时加引号(如布尔/null/数字字面量或特殊字符)。\r\n *\r\n * @public\r\n * @param {string} x - 要处理的字符串值\r\n * @returns {string} 处理后的字符串\r\n */\r\nexport const stringifyStringValue = x => {\r\n if (x === \"true\" || x === \"false\" || x === \"null\") \r\n return JSON.stringify(x)\r\n else if (/^[-+]?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$/.test(x)) \r\n return JSON.stringify(x)\r\n else\r\n return stringifyKey(x)\r\n}","import { stringifyKey } from './stringifyKey.js'\r\nimport { stringifyStringValue } from './stringifyStringValue.js'\r\n\r\n/**\r\n * 将任意 JS 值序列化为“无引号 JSON”字符串(仅对键名和部分字符串值去引号)。\r\n *\r\n * @public\r\n * @param {*} value - 要序列化的值\r\n * @returns {string} 序列化后的字符串\r\n */\r\nexport function unquotedJsonStringify(value) {\r\n if (value === null) {\r\n return 'null'\r\n } else if (typeof value === 'string') {\r\n return stringifyStringValue(value)\r\n } else if (typeof value === 'number') {\r\n return isFinite(value) ? value.toString() : 'null'\r\n } else if (typeof value === 'boolean') {\r\n return value ? 'true' : 'false'\r\n } else if (typeof value === 'bigint') {\r\n return value.toString()\r\n } else if (Array.isArray(value)) {\r\n let elems = value.map(e => unquotedJsonStringify(e)).join(',')\r\n return '[' + elems + ']'\r\n } else if (typeof value === 'object') {\r\n let fields = Object.entries(value)\r\n .map(([k, v]) => stringifyKey(k) + ':' + unquotedJsonStringify(v))\r\n .join(',')\r\n return '{' + fields + '}'\r\n } else if (typeof value === 'undefined') {\r\n return 'null'\r\n } else if (typeof value === 'function') {\r\n return 'null'\r\n } else if (typeof value === 'symbol') {\r\n return 'null'\r\n } else {\r\n return 'null'\r\n }\r\n}","import { unquotedJsonStringify } from './unquotedJsonStringify.js'\r\nimport { isPlainObject } from '../object/isPlainObject.js'\r\n/**\r\n * 将对象序列化为 URL 查询字符串(支持嵌套对象和多类型字段)。\r\n *\r\n * @public\r\n * @param {Object} data - 要序列化的对象\r\n * @returns {string} 查询字符串(如 \"?a=1&b=2\"),无有效字段时返回空字符串\r\n */\r\nexport function queryStringify(data) {\r\n if (!isPlainObject(data)) {\r\n throw new Error(\"input should be a plain object.\")\r\n }\r\n let pairs =\r\n Object.entries(data)\r\n .filter(([k, v]) =>\r\n supportedDataTypes.has(typeof v) && v !== ''\r\n )\r\n\r\n if (pairs.length === 0) {\r\n return ''\r\n }\r\n\r\n // 如果字段是对象,包括数组,则序列化字段值,否则不变。\r\n return pairs\r\n .map(([k, v]) => {\r\n let vv = typeof v === 'object' ? unquotedJsonStringify(v) : String(v)\r\n return escape(k) + '=' + escape(vv)\r\n })\r\n .join('&')\r\n\r\n}\r\n\r\nconst supportedDataTypes = new Set([\r\n 'string',\r\n 'number',\r\n 'boolean',\r\n 'bigint',\r\n // 'function',\r\n // 'symbol',\r\n // 'undefined',\r\n 'object',\r\n])\r\n\r\n/**\r\n * 需要编码的ASCII字符及其百分比编码(键为字符本身,用\\x或可打印形式)\r\n * @type {Map<string, string>}\r\n */\r\nconst mp = new Map([\r\n ['\\x00', '%00'], ['\\x01', '%01'], ['\\x02', '%02'], ['\\x03', '%03'], ['\\x04', '%04'],\r\n ['\\x05', '%05'], ['\\x06', '%06'], ['\\x07', '%07'], ['\\x08', '%08'], ['\\t', '%09'],\r\n ['\\n', '%0A'], ['\\x0B', '%0B'], ['\\x0C', '%0C'], ['\\r', '%0D'],\r\n ['\\x0E', '%0E'], ['\\x0F', '%0F'], ['\\x10', '%10'], ['\\x11', '%11'], ['\\x12', '%12'],\r\n ['\\x13', '%13'], ['\\x14', '%14'], ['\\x15', '%15'], ['\\x16', '%16'], ['\\x17', '%17'],\r\n ['\\x18', '%18'], ['\\x19', '%19'], ['\\x1A', '%1A'], ['\\x1B', '%1B'], ['\\x1C', '%1C'],\r\n ['\\x1D', '%1D'], ['\\x1E', '%1E'], ['\\x1F', '%1F'], ['\\x20', '%20'],\r\n ['#', '%23'],\r\n ['%', '%25'], //浏览器能识别不是%dd格式的百分号为原义,这里冗余转义为了保险起见。\r\n ['&', '%26'],\r\n ['+', '%2B'], // 原义+有时候会被解析为空格\r\n ['=', '%3D'],\r\n ['\\x7F', '%7F'], // DEL\r\n]);\r\n\r\n/**\r\n * 这是最小的转义函数,其他一概保持原义。\r\n * @param {string} str \r\n * @returns {string}\r\n */\r\nconst escape = str => str.replace(/[\\x00-\\x20#%&+=\\x7F]/g, c => mp.get(c) || c)\r\n","export * from \"./queryStringify.js\"\r\nexport * from './unquotedJsonStringify.js'\r\n\r\n","export * from \"./array/0.js\"\r\n\r\nexport * from \"./comparers/0.js\"\r\nexport * from \"./comparison/0.js\"\r\n\r\nexport * from \"./deep/0.js\"\r\nexport * from \"./deep-rxjs/0.js\"\r\nexport * from \"./hyperscript-rxjs/0.js\"\r\n\r\nexport * from \"./nodes/0.js\"\r\nexport * from \"./object/0.js\"\r\nexport * from \"./props/0.js\"\r\n\r\nexport * from \"./ramda/0.js\"\r\n\r\nexport * from \"./structures/0.js\"\r\n\r\nexport * from \"./unquoted-json/0.js\"\r\n\r\n"],"names":["advance","array","n","taken","i","slice","arrayInsert","item","index","length","len","arrayRemove","Reflect","deleteProperty","findLastIndex","callbackFn","lastIndex","Math","min","isRange","keys","every","key","test","nums","map","parseInt","v","rangeArray","Array","from","unwrapArgs","args","isArray","zipArray","a","b","Error","distinctArray","equals","loop","resultArray","rest","head","tail","findIndex","e","groupSortedEntries","sortedEntries","compare","firstGroup","reduce","groups","k","k0","group","push","groupArrayBy","getKey","sort","ka","kb","differenceSet","set1","set2","acc","findIndexInSet","set","intersectSet","sign","isEqualset","a0","aa","b0","bb","isSubset","isSuperset","unionSet","sortedArrayToSet","sortedArray","sarray","Comparer","constructor","distinct","groupBy","array1","array2","element","defaultCompare","compareKey","type1","type2","compareKeyPath","compareEntries","keypath1","keypath2","defaultComparer","keyComparer","keyPathComparer","entryComparer","compareDate","valueOf","compareNumber","Number","isNaN","types","pluckProperty","obj","keyPath","TypeError","prev","curr","groupByFirstLevelKey","flatEntries","sortedKvPairs","value","tojs","entries","Object","fromEntries","flat","data","isLeaf","Function","Boolean","Symbol","BigInt","Date","String","RegExp","Map","Set","WeakMap","WeakSet","_","intersectEntries","yy","BehaviorSubject","isObservable","Observable","combineLatest","Subscription","mergeMap","Deep","_entries","_keys","getValues","toObject","searchKeyPath","structuralEqual","structuralSubset","structuralSuperset","intersect","difference","newkeys","union","entries2","callbackfn","thisArg","values","replaceValue","filter","predicate","forEach","freshValue","zipValue","pipe","merge","value$","fromObject","arr","fromBehaviorSubject","fromObservable","isRxType","Subject","ObservableArray","newItem","newitem","action$","insertBefore$","action","removeChild$","replaceChild$","insertBefore","next","removeChild","replaceChild","appendChild","blockLevelFamily","inlineFamily","getDisplay","elem","tagName","has","attachSubscriptionToNode","subscription","Node","add","fromEvent","pipeEvent","HTMLElement","event","subscriber","event$","error","console","subscribeEvent","observer","subscribe","parseHyperscriptArgs","props","childNodes","first","isProps","undefined","proto","getPrototypeOf","prototype","normalizeChildNodes","normalizedNodes","child","document","createTextNode","splitObjectByObservable","observables","scalars","hasOwnProperty","call","getNestedProperty","currentObj","parsePropName","getTargetAndProp","target","prop","includes","pathArray","split","pop","setProp","root","charAt","className","substring","classList","remove","startWith","subscribeProp","message","setProps","hyperscript","elemName","tagNames","createElement","assign","unsubscribe","abbr","address","area","article","aside","audio","bdi","bdo","blockquote","br","button","caption","cite","code","col","colgroup","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","img","input","ins","kbd","label","legend","li","main","mark","menu","menuitem","meter","nav","ol","optgroup","option","output","p","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","section","small","span","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","time","tr","track","tt","u","ul","video","wbr","tabRoot","tabNavItem","source","type","tabPanel","bindTabIndex","tabIndex$","navs","firstChild","panels","lastChild","j","btn","panel","click$","indexOf","tabControl","tabs","tabIndex","rootProps","tablist","tabcontent","tab","checkbox","checked","input$","collapse","hidden$","elements","elems","choice","chosen$","possibilities","possibility","selectedKey","cur","flip","yinHidden$","yin","yang","yangHidden$","isHidden","fragment","frag","DocumentFragment","multiselect","options","oninput","onchange","multiple","numberbox","number","blur$","newValue","select","style","textAlign","radio","selectedIndex","selected","getElementsByTagName","opt","textarea","textbox","textNode","text","node","d","t","nodeValue","err","intersectObject","isPlainObject","isEmptyObject","nestedCombineLatest","model","deep","nestedMerge","pickBehaviorSubject","x","parent","pelem","pickeys","ee","val","restore","src","o","diffcount","last","indexes","compose","fns","firstNonFunctionIndex","fn","invalidFn","errorType","cond","branches","branch","tryAction","apply","arguments","fold","seed","pair","initialValue","unfold","result","resultSeedPair","erectObject","stringifyKey","JSON","stringify","stringifyStringValue","unquotedJsonStringify","isFinite","toString","join","fields","queryStringify","pairs","supportedDataTypes","vv","escape","mp","str","replace","c","get"],"sourceRoot":""}