1/* 2 * Copyright (c) 2024-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 17// HADWRITTEN, DO NOT REGENERATE 18 19/** 20 * @file 21 * @kit ArkUI 22 * @arkts 1.2 23 */ 24 25import { memo, ComponentBuilder, __memo_context_type, __memo_id_type } from './../stateManagement/runtime' 26 27/** 28 * Defines type to operation data source. 29 * 30 * @enum { string } 31 * @syscap SystemCapability.ArkUI.ArkUI.Full 32 * @crossplatform 33 * @atomicservice 34 * @since 20 35 */ 36export enum DataOperationType { 37 /** 38 * Add data. 39 * 40 * @syscap SystemCapability.ArkUI.ArkUI.Full 41 * @crossplatform 42 * @atomicservice 43 * @since 20 44 */ 45 ADD = 'add', 46 /** 47 * Delete data. 48 * 49 * @syscap SystemCapability.ArkUI.ArkUI.Full 50 * @crossplatform 51 * @atomicservice 52 * @since 20 53 */ 54 DELETE = 'delete', 55 /** 56 * Exchange data. 57 * 58 * @syscap SystemCapability.ArkUI.ArkUI.Full 59 * @crossplatform 60 * @atomicservice 61 * @since 20 62 */ 63 EXCHANGE = 'exchange', 64 /** 65 * Move data. 66 * 67 * @syscap SystemCapability.ArkUI.ArkUI.Full 68 * @crossplatform 69 * @atomicservice 70 * @since 20 71 */ 72 MOVE = 'move', 73 /** 74 * Change data. 75 * 76 * @syscap SystemCapability.ArkUI.ArkUI.Full 77 * @crossplatform 78 * @atomicservice 79 * @since 20 80 */ 81 CHANGE = 'change', 82 /** 83 * Reload data. 84 * 85 * @syscap SystemCapability.ArkUI.ArkUI.Full 86 * @crossplatform 87 * @atomicservice 88 * @since 20 89 */ 90 RELOAD = 'reload' 91} 92 93/** 94 * Defines add operation. 95 * 96 * @interface DataAddOperation 97 * @syscap SystemCapability.ArkUI.ArkUI.Full 98 * @crossplatform 99 * @atomicservice 100 * @since 20 101 */ 102export interface DataAddOperation { 103 /** 104 * How to operate added data. 105 * 106 * @type { DataOperationType.ADD } 107 * @syscap SystemCapability.ArkUI.ArkUI.Full 108 * @crossplatform 109 * @atomicservice 110 * @since 20 111 */ 112 type: DataOperationType; 113 /** 114 * Index of added data. 115 * 116 * @type { number } 117 * @syscap SystemCapability.ArkUI.ArkUI.Full 118 * @crossplatform 119 * @atomicservice 120 * @since 20 121 */ 122 index: number; 123 /** 124 * Count of added data in one operation 125 * Only validate for ADD and DELETE. 126 * 127 * @type { ?number } 128 * @default 1 129 * @syscap SystemCapability.ArkUI.ArkUI.Full 130 * @crossplatform 131 * @atomicservice 132 * @since 20 133 */ 134 count?: number; 135 /** 136 * Key of added data. 137 * 138 * @type { ?(string | Array<string>) } 139 * @syscap SystemCapability.ArkUI.ArkUI.Full 140 * @crossplatform 141 * @atomicservice 142 * @since 20 143 */ 144 key?: string | Array<string>; 145} 146 147/** 148 * Defines delete operation. 149 * 150 * @interface DataDeleteOperation 151 * @syscap SystemCapability.ArkUI.ArkUI.Full 152 * @crossplatform 153 * @atomicservice 154 * @since 20 155 */ 156export interface DataDeleteOperation { 157 /** 158 * How to operate deleted data. 159 * 160 * @type { DataOperationType.DELETE } 161 * @syscap SystemCapability.ArkUI.ArkUI.Full 162 * @crossplatform 163 * @atomicservice 164 * @since 20 165 */ 166 type: DataOperationType; 167 /** 168 * Index of deleted data. 169 * 170 * @type { number } 171 * @syscap SystemCapability.ArkUI.ArkUI.Full 172 * @crossplatform 173 * @atomicservice 174 * @since 20 175 */ 176 index: number; 177 /** 178 * Count of deleted data in one operation 179 * Only validate for ADD and DELETE. 180 * 181 * @type { ?number } 182 * @default 1 183 * @syscap SystemCapability.ArkUI.ArkUI.Full 184 * @crossplatform 185 * @atomicservice 186 * @since 20 187 */ 188 count?: number; 189} 190 191/** 192 * Defines change operation. 193 * 194 * @interface DataChangeOperation 195 * @syscap SystemCapability.ArkUI.ArkUI.Full 196 * @crossplatform 197 * @atomicservice 198 * @since 20 199 */ 200export interface DataChangeOperation { 201 /** 202 * How to operate changed data. 203 * 204 * @type { DataOperationType.CHANGE } 205 * @syscap SystemCapability.ArkUI.ArkUI.Full 206 * @crossplatform 207 * @atomicservice 208 * @since 20 209 */ 210 type: DataOperationType; 211 /** 212 * Index of changed data. 213 * 214 * @type { number } 215 * @syscap SystemCapability.ArkUI.ArkUI.Full 216 * @crossplatform 217 * @atomicservice 218 * @since 20 219 */ 220 index: number; 221 /** 222 * Key of changed data. 223 * 224 * @type { ?string } 225 * @syscap SystemCapability.ArkUI.ArkUI.Full 226 * @crossplatform 227 * @atomicservice 228 * @since 20 229 */ 230 key?: string; 231} 232 233/** 234 * Defines position of moved data. 235 * 236 * @interface MoveIndex 237 * @syscap SystemCapability.ArkUI.ArkUI.Full 238 * @crossplatform 239 * @atomicservice 240 * @since 20 241 */ 242export interface MoveIndex { 243 /** 244 * Index of moved data. 245 * 246 * @type { number } 247 * @syscap SystemCapability.ArkUI.ArkUI.Full 248 * @crossplatform 249 * @atomicservice 250 * @since 20 251 */ 252 from: number; 253 /** 254 * Destination of moved data. 255 * 256 * @type { number } 257 * @syscap SystemCapability.ArkUI.ArkUI.Full 258 * @crossplatform 259 * @atomicservice 260 * @since 20 261 */ 262 to: number; 263} 264 265/** 266 * Defines position of exchange data. 267 * 268 * @interface ExchangeIndex 269 * @syscap SystemCapability.ArkUI.ArkUI.Full 270 * @crossplatform 271 * @atomicservice 272 * @since 20 273 */ 274export interface ExchangeIndex { 275 /** 276 * Index of the first exchange data. 277 * 278 * @type { number } 279 * @syscap SystemCapability.ArkUI.ArkUI.Full 280 * @crossplatform 281 * @atomicservice 282 * @since 20 283 */ 284 start: number; 285 /** 286 * Index of the second exchange data. 287 * 288 * @type { number } 289 * @syscap SystemCapability.ArkUI.ArkUI.Full 290 * @crossplatform 291 * @atomicservice 292 * @since 20 293 */ 294 end: number; 295} 296 297/** 298 * Defines new key of exchange data. 299 * 300 * @interface ExchangeKey 301 * @syscap SystemCapability.ArkUI.ArkUI.Full 302 * @crossplatform 303 * @atomicservice 304 * @since 20 305 */ 306export interface ExchangeKey { 307 /** 308 * Key of the first exchange data. 309 * 310 * @type { string } 311 * @syscap SystemCapability.ArkUI.ArkUI.Full 312 * @crossplatform 313 * @atomicservice 314 * @since 20 315 */ 316 start: string; 317 /** 318 * Key of the second exchange data. 319 * 320 * @type { string } 321 * @syscap SystemCapability.ArkUI.ArkUI.Full 322 * @crossplatform 323 * @atomicservice 324 * @since 20 325 */ 326 end: string; 327} 328 329/** 330 * Defines move&exchange operation. 331 * 332 * @interface DataMoveOperation 333 * @syscap SystemCapability.ArkUI.ArkUI.Full 334 * @crossplatform 335 * @atomicservice 336 * @since 20 337 */ 338export interface DataMoveOperation { 339 /** 340 * How to operate moved data. 341 * 342 * @type { DataOperationType.MOVE } 343 * @syscap SystemCapability.ArkUI.ArkUI.Full 344 * @crossplatform 345 * @atomicservice 346 * @since 20 347 */ 348 type: DataOperationType; 349 /** 350 * Index of moved data. 351 * 352 * @type { MoveIndex } 353 * @syscap SystemCapability.ArkUI.ArkUI.Full 354 * @crossplatform 355 * @atomicservice 356 * @since 20 357 */ 358 index: MoveIndex; 359 /** 360 * Key of moved data. 361 * 362 * @type { ?string } 363 * @syscap SystemCapability.ArkUI.ArkUI.Full 364 * @crossplatform 365 * @atomicservice 366 * @since 20 367 */ 368 key?: string; 369} 370 371/** 372 * Defines exchange operation. 373 * 374 * @interface DataExchangeOperation 375 * @syscap SystemCapability.ArkUI.ArkUI.Full 376 * @crossplatform 377 * @atomicservice 378 * @since 20 379 */ 380export interface DataExchangeOperation { 381 /** 382 * How to operate exchange data. 383 * 384 * @type { DataOperationType.EXCHANGE } 385 * @syscap SystemCapability.ArkUI.ArkUI.Full 386 * @crossplatform 387 * @atomicservice 388 * @since 20 389 */ 390 type: DataOperationType; 391 /** 392 * Index of exchange data. 393 * 394 * @type { ExchangeIndex } 395 * @syscap SystemCapability.ArkUI.ArkUI.Full 396 * @crossplatform 397 * @atomicservice 398 * @since 20 399 */ 400 index: ExchangeIndex; 401 /** 402 * Key of exchange data. 403 * 404 * @type { ?ExchangeKey } 405 * @syscap SystemCapability.ArkUI.ArkUI.Full 406 * @crossplatform 407 * @atomicservice 408 * @since 20 409 */ 410 key?: ExchangeKey; 411} 412 413/** 414 * Defines reload operation. 415 * 416 * @interface DataReloadOperation 417 * @syscap SystemCapability.ArkUI.ArkUI.Full 418 * @crossplatform 419 * @atomicservice 420 * @since 20 421 */ 422export interface DataReloadOperation { 423 /** 424 * How to operate reload data. 425 * 426 * @type { DataOperationType.RELOAD } 427 * @syscap SystemCapability.ArkUI.ArkUI.Full 428 * @crossplatform 429 * @atomicservice 430 * @since 20 431 */ 432 type: DataOperationType; 433} 434 435/** 436 * All data operation type 437 * 438 * @typedef { DataAddOperation | DataDeleteOperation | DataChangeOperation | DataMoveOperation | DataExchangeOperation 439 * | DataReloadOperation } 440 * @syscap SystemCapability.ArkUI.ArkUI.Full 441 * @crossplatform 442 * @atomicservice 443 * @since 20 444 */ 445export type DataOperation = DataAddOperation | DataDeleteOperation | DataChangeOperation | DataMoveOperation | 446 DataExchangeOperation | DataReloadOperation; 447 448/** 449 * Data Change Listener. 450 * 451 * @interface DataChangeListener 452 * @syscap SystemCapability.ArkUI.ArkUI.Full 453 * @crossplatform 454 * @atomicservice 455 * @since 20 456 */ 457export interface DataChangeListener { 458 /** 459 * Data ready. 460 * 461 * @syscap SystemCapability.ArkUI.ArkUI.Full 462 * @crossplatform 463 * @atomicservice 464 * @since 20 465 */ 466 onDataReloaded(): void 467 /** 468 * Data added. 469 * 470 * @param { number } index 471 * @syscap SystemCapability.ArkUI.ArkUI.Full 472 * @since 20 473 * @deprecated since 8 474 * @useinstead onDataAdd 475 */ 476 onDataAdded(index: number): void 477 /** 478 * Data added. 479 * 480 * @param { number } index 481 * @syscap SystemCapability.ArkUI.ArkUI.Full 482 * @crossplatform 483 * @atomicservice 484 * @since 20 485 */ 486 onDataAdd(index: number): void 487 /** 488 * Data moved. 489 * 490 * @param { number } from 491 * @param { number } to 492 * @syscap SystemCapability.ArkUI.ArkUI.Full 493 * @since 20 494 * @deprecated since 8 495 * @useinstead onDataMove 496 */ 497 onDataMoved(from: number, to: number): void 498 /** 499 * Data moved. 500 * 501 * @param { number } from 502 * @param { number } to 503 * @syscap SystemCapability.ArkUI.ArkUI.Full 504 * @crossplatform 505 * @atomicservice 506 * @since 20 507 */ 508 onDataMove(from: number, to: number): void 509 /** 510 * Data deleted. 511 * 512 * @param { number } index 513 * @syscap SystemCapability.ArkUI.ArkUI.Full 514 * @since 20 515 * @deprecated since 8 516 * @useinstead onDataDelete 517 */ 518 onDataDeleted(index: number): void 519 /** 520 * Data deleted. 521 * 522 * @param { number } index 523 * @syscap SystemCapability.ArkUI.ArkUI.Full 524 * @crossplatform 525 * @atomicservice 526 * @since 20 527 */ 528 onDataDelete(index: number): void 529 /** 530 * Call when has data change. 531 * 532 * @param { number } index 533 * @syscap SystemCapability.ArkUI.ArkUI.Full 534 * @since 20 535 * @deprecated since 8 536 * @useinstead onDataChange 537 */ 538 onDataChanged(index: number): void 539 /** 540 * Call when has data change. 541 * 542 * @param { number } index 543 * @syscap SystemCapability.ArkUI.ArkUI.Full 544 * @crossplatform 545 * @atomicservice 546 * @since 20 547 */ 548 onDataChange(index: number): void 549 /** 550 * Call when multiple data change. 551 * 552 * @param { DataOperation[] } dataOperations 553 * @syscap SystemCapability.ArkUI.ArkUI.Full 554 * @crossplatform 555 * @atomicservice 556 * @since 20 557 */ 558 onDatasetChange(dataOperations: Array<DataOperation>): void 559} 560 561/** 562 * Developers need to implement this interface to provide data to LazyForEach component. 563 * 564 * @interface IDataSource 565 * @syscap SystemCapability.ArkUI.ArkUI.Full 566 * @crossplatform 567 * @atomicservice 568 * @since 20 569 */ 570export interface IDataSource<T> { 571 /** 572 * Total data count. 573 * 574 * @returns { number } 575 * @syscap SystemCapability.ArkUI.ArkUI.Full 576 * @crossplatform 577 * @atomicservice 578 * @since 20 579 */ 580 totalCount(): number; 581 /** 582 * Return the data of index. 583 * 584 * @param { number } index 585 * @returns { any } 586 * @syscap SystemCapability.ArkUI.ArkUI.Full 587 * @crossplatform 588 * @atomicservice 589 * @since 20 590 */ 591 getData(index: number): T; 592 /** 593 * Register data change listener. 594 * 595 * @param { DataChangeListener } listener 596 * @syscap SystemCapability.ArkUI.ArkUI.Full 597 * @crossplatform 598 * @atomicservice 599 * @since 20 600 */ 601 registerDataChangeListener(listener: DataChangeListener): void; 602 /** 603 * Unregister data change listener. 604 * 605 * @param { DataChangeListener } listener 606 * @syscap SystemCapability.ArkUI.ArkUI.Full 607 * @crossplatform 608 * @atomicservice 609 * @since 20 610 */ 611 unregisterDataChangeListener(listener: DataChangeListener): void; 612} 613 614/** 615 * declare ForEachAttribute 616 * 617 * @syscap SystemCapability.ArkUI.ArkUI.Full 618 * @crossplatform 619 * @atomicservice 620 * @since 20 621 */ 622export interface LazyForEachAttribute {} 623 624/** 625 * declare UILazyForEachAttribute 626 * 627 * @syscap SystemCapability.ArkUI.ArkUI.Full 628 * @crossplatform 629 * @atomicservice 630 * @since 20 631 */ 632export interface UILazyForEachAttribute {} 633 634/** 635 * Enter the value to obtain the LazyForEach. 636 * 637 * @param { IDataSource } dataSource 638 * @param { function } itemGenerator 639 * @param { function } keyGenerator 640 * @returns { LazyForEachAttribute } 641 * @syscap SystemCapability.ArkUI.ArkUI.Full 642 * @crossplatform 643 * @atomicservice 644 * @since 20 645 */ 646@memo 647@ComponentBuilder 648export declare function LazyForEach<T>(dataSource: IDataSource<T>, 649 @memo 650 itemGenerator: (item: T, index: number) => void, 651 keyGenerator?: (item: T, index: number) => string, 652): LazyForEachAttribute