@genesislcap/foundation-ui 15.84.0 → 15.84.2

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.
@@ -2008,37 +2008,6 @@
2008
2008
  }
2009
2009
  ]
2010
2010
  },
2011
- {
2012
- "kind": "javascript-module",
2013
- "path": "src/_config/index.ts",
2014
- "declarations": [],
2015
- "exports": [
2016
- {
2017
- "kind": "js",
2018
- "name": "*",
2019
- "declaration": {
2020
- "name": "*",
2021
- "package": "./styles"
2022
- }
2023
- },
2024
- {
2025
- "kind": "js",
2026
- "name": "*",
2027
- "declaration": {
2028
- "name": "*",
2029
- "package": "./tokens"
2030
- }
2031
- },
2032
- {
2033
- "kind": "js",
2034
- "name": "*",
2035
- "declaration": {
2036
- "name": "*",
2037
- "package": "./values"
2038
- }
2039
- }
2040
- ]
2041
- },
2042
2011
  {
2043
2012
  "kind": "javascript-module",
2044
2013
  "path": "src/accordion-item/accordion-item.styles.ts",
@@ -2435,11 +2404,65 @@
2435
2404
  },
2436
2405
  {
2437
2406
  "kind": "javascript-module",
2438
- "path": "src/ai-indicator/ai-indicator.styles.ts",
2407
+ "path": "src/_config/index.ts",
2408
+ "declarations": [],
2409
+ "exports": [
2410
+ {
2411
+ "kind": "js",
2412
+ "name": "*",
2413
+ "declaration": {
2414
+ "name": "*",
2415
+ "package": "./styles"
2416
+ }
2417
+ },
2418
+ {
2419
+ "kind": "js",
2420
+ "name": "*",
2421
+ "declaration": {
2422
+ "name": "*",
2423
+ "package": "./tokens"
2424
+ }
2425
+ },
2426
+ {
2427
+ "kind": "js",
2428
+ "name": "*",
2429
+ "declaration": {
2430
+ "name": "*",
2431
+ "package": "./values"
2432
+ }
2433
+ }
2434
+ ]
2435
+ },
2436
+ {
2437
+ "kind": "javascript-module",
2438
+ "path": "src/actions-menu/actions-menu.styles.ts",
2439
2439
  "declarations": [
2440
2440
  {
2441
2441
  "kind": "function",
2442
- "name": "foundationAiIndicatorStyles",
2442
+ "name": "actionsMenuBaseStyles",
2443
+ "return": {
2444
+ "type": {
2445
+ "text": "ElementStyles"
2446
+ }
2447
+ },
2448
+ "parameters": [
2449
+ {
2450
+ "name": "context",
2451
+ "type": {
2452
+ "text": "ElementDefinitionContext"
2453
+ }
2454
+ },
2455
+ {
2456
+ "name": "definition",
2457
+ "type": {
2458
+ "text": "FoundationElementDefinition"
2459
+ }
2460
+ }
2461
+ ]
2462
+ },
2463
+ {
2464
+ "kind": "function",
2465
+ "name": "foundationActionsMenuStyles",
2443
2466
  "return": {
2444
2467
  "type": {
2445
2468
  "text": "ElementStyles"
@@ -2464,225 +2487,376 @@
2464
2487
  "exports": [
2465
2488
  {
2466
2489
  "kind": "js",
2467
- "name": "foundationAiIndicatorStyles",
2490
+ "name": "actionsMenuBaseStyles",
2468
2491
  "declaration": {
2469
- "name": "foundationAiIndicatorStyles",
2470
- "module": "src/ai-indicator/ai-indicator.styles.ts"
2492
+ "name": "actionsMenuBaseStyles",
2493
+ "module": "src/actions-menu/actions-menu.styles.ts"
2494
+ }
2495
+ },
2496
+ {
2497
+ "kind": "js",
2498
+ "name": "foundationActionsMenuStyles",
2499
+ "declaration": {
2500
+ "name": "foundationActionsMenuStyles",
2501
+ "module": "src/actions-menu/actions-menu.styles.ts"
2471
2502
  }
2472
2503
  }
2473
2504
  ]
2474
2505
  },
2475
2506
  {
2476
2507
  "kind": "javascript-module",
2477
- "path": "src/ai-indicator/ai-indicator.template.ts",
2508
+ "path": "src/actions-menu/actions-menu.template.ts",
2478
2509
  "declarations": [
2479
2510
  {
2480
2511
  "kind": "variable",
2481
- "name": "foundationAiIndicatorTemplate",
2512
+ "name": "menuTemplate"
2513
+ },
2514
+ {
2515
+ "kind": "variable",
2516
+ "name": "singleOptionTemplate"
2517
+ },
2518
+ {
2519
+ "kind": "variable",
2520
+ "name": "foundationActionsMenuTemplate",
2482
2521
  "type": {
2483
- "text": "ViewTemplate<AiIndicator>"
2522
+ "text": "ViewTemplate<ActionsMenu>"
2484
2523
  },
2485
- "default": "html`\n ${(x) => aiIndicatorTemplate(getPrefix(x))}\n`"
2524
+ "default": "html`\n <div\n class=\"actions-container${(x) => (x.isVertical ? ' actions-vertical' : '')}\"\n part=\"actions-container\"\n >\n ${(x) => x.getTemplate(getPrefix(x))}\n </div>\n`"
2486
2525
  }
2487
2526
  ],
2488
2527
  "exports": [
2489
2528
  {
2490
2529
  "kind": "js",
2491
- "name": "foundationAiIndicatorTemplate",
2530
+ "name": "menuTemplate",
2492
2531
  "declaration": {
2493
- "name": "foundationAiIndicatorTemplate",
2494
- "module": "src/ai-indicator/ai-indicator.template.ts"
2532
+ "name": "menuTemplate",
2533
+ "module": "src/actions-menu/actions-menu.template.ts"
2534
+ }
2535
+ },
2536
+ {
2537
+ "kind": "js",
2538
+ "name": "singleOptionTemplate",
2539
+ "declaration": {
2540
+ "name": "singleOptionTemplate",
2541
+ "module": "src/actions-menu/actions-menu.template.ts"
2542
+ }
2543
+ },
2544
+ {
2545
+ "kind": "js",
2546
+ "name": "foundationActionsMenuTemplate",
2547
+ "declaration": {
2548
+ "name": "foundationActionsMenuTemplate",
2549
+ "module": "src/actions-menu/actions-menu.template.ts"
2495
2550
  }
2496
2551
  }
2497
2552
  ]
2498
2553
  },
2499
2554
  {
2500
2555
  "kind": "javascript-module",
2501
- "path": "src/ai-indicator/ai-indicator.ts",
2556
+ "path": "src/actions-menu/actions-menu.ts",
2502
2557
  "declarations": [
2503
2558
  {
2504
2559
  "kind": "class",
2505
2560
  "description": "",
2506
- "name": "AiIndicator",
2561
+ "name": "ActionsMenu",
2507
2562
  "members": [
2508
2563
  {
2509
2564
  "kind": "field",
2510
- "name": "providerRegistry",
2565
+ "name": "actions",
2511
2566
  "type": {
2512
- "text": "AIProviderRegistry"
2567
+ "text": "ActionMenuItem[]"
2513
2568
  }
2514
2569
  },
2515
2570
  {
2516
2571
  "kind": "field",
2517
- "name": "aiProvider",
2572
+ "name": "actionsResolver",
2518
2573
  "type": {
2519
- "text": "AIProvider | undefined"
2574
+ "text": "ActionMenuItemsResolver | undefined"
2520
2575
  },
2521
- "privacy": "private",
2522
- "description": "The indicator reflects status for the registry's default provider only —\nper-agent provider overrides live with the assistant component, not this\ntop-level chrome.",
2523
- "readonly": true
2576
+ "description": "Resolves the actions per row instead of `actions`, from the row data in `definition`."
2524
2577
  },
2525
2578
  {
2526
2579
  "kind": "field",
2527
- "name": "status",
2580
+ "name": "isVertical",
2528
2581
  "type": {
2529
- "text": "AIStatus | null"
2582
+ "text": "boolean"
2530
2583
  },
2531
- "default": "null"
2584
+ "default": "false"
2532
2585
  },
2533
2586
  {
2534
2587
  "kind": "field",
2535
- "name": "open",
2588
+ "name": "addDefaultActions",
2536
2589
  "type": {
2537
2590
  "text": "boolean"
2538
2591
  },
2539
- "default": "false"
2592
+ "default": "true"
2540
2593
  },
2541
2594
  {
2542
2595
  "kind": "field",
2543
- "name": "state",
2596
+ "name": "autoCloseOnAction",
2544
2597
  "type": {
2545
- "text": "AIIndicatorState"
2598
+ "text": "boolean"
2546
2599
  },
2547
- "default": "'none'"
2600
+ "default": "true"
2548
2601
  },
2549
2602
  {
2550
2603
  "kind": "field",
2551
- "name": "isInstalling",
2604
+ "name": "classNames",
2552
2605
  "type": {
2553
- "text": "boolean"
2554
- },
2555
- "default": "false"
2606
+ "text": "string"
2607
+ }
2556
2608
  },
2557
2609
  {
2558
2610
  "kind": "field",
2559
- "name": "pollTimer",
2611
+ "name": "definition",
2560
2612
  "type": {
2561
- "text": "ReturnType<typeof setInterval> | null"
2613
+ "text": "any"
2614
+ }
2615
+ },
2616
+ {
2617
+ "kind": "field",
2618
+ "name": "name",
2619
+ "type": {
2620
+ "text": "string"
2562
2621
  },
2563
- "privacy": "private",
2564
- "default": "null"
2622
+ "default": "'Actions'"
2565
2623
  },
2566
2624
  {
2567
2625
  "kind": "field",
2568
- "name": "clickOutside",
2569
- "privacy": "private"
2626
+ "name": "iconName",
2627
+ "type": {
2628
+ "text": "string"
2629
+ },
2630
+ "description": "When set, the opener renders this icon instead of the `name` text (e.g. `ellipsis`\nfor an icon-only \"kebab\" opener)."
2570
2631
  },
2571
2632
  {
2572
2633
  "kind": "field",
2573
- "name": "chromeStatusLabel",
2634
+ "name": "open",
2574
2635
  "type": {
2575
- "text": "string | null"
2636
+ "text": "boolean"
2576
2637
  },
2577
- "readonly": true
2638
+ "default": "false"
2578
2639
  },
2579
2640
  {
2580
2641
  "kind": "field",
2581
- "name": "canInstall",
2642
+ "name": "buttonAppearance",
2643
+ "type": {
2644
+ "text": "string"
2645
+ }
2646
+ },
2647
+ {
2648
+ "kind": "field",
2649
+ "name": "hideDisabled",
2582
2650
  "type": {
2583
2651
  "text": "boolean"
2584
2652
  },
2585
- "readonly": true
2653
+ "default": "false"
2586
2654
  },
2587
2655
  {
2588
2656
  "kind": "field",
2589
- "name": "isDownloading",
2657
+ "name": "hideMenuSingleOption",
2590
2658
  "type": {
2591
2659
  "text": "boolean"
2592
2660
  },
2593
- "readonly": true
2661
+ "default": "false"
2594
2662
  },
2595
2663
  {
2596
- "kind": "method",
2597
- "name": "openChanged",
2598
- "return": {
2599
- "type": {
2600
- "text": "void"
2601
- }
2664
+ "kind": "field",
2665
+ "name": "singleOption",
2666
+ "type": {
2667
+ "text": "ActionMenuItem"
2602
2668
  }
2603
2669
  },
2604
2670
  {
2605
- "kind": "method",
2606
- "name": "handleClickOutside",
2607
- "privacy": "private",
2608
- "parameters": [
2609
- {
2610
- "name": "event",
2611
- "type": {
2612
- "text": "MouseEvent"
2613
- }
2614
- }
2615
- ]
2671
+ "kind": "field",
2672
+ "name": "actionsMenu",
2673
+ "type": {
2674
+ "text": "HTMLElement"
2675
+ }
2616
2676
  },
2617
2677
  {
2618
- "kind": "method",
2619
- "name": "toggleDropdown"
2678
+ "kind": "field",
2679
+ "name": "actionsOpener",
2680
+ "type": {
2681
+ "text": "HTMLElement"
2682
+ }
2620
2683
  },
2621
2684
  {
2622
- "kind": "method",
2623
- "name": "refreshStatus",
2624
- "return": {
2625
- "type": {
2626
- "text": "Promise<void>"
2685
+ "kind": "field",
2686
+ "name": "positionTracker",
2687
+ "type": {
2688
+ "text": "AnchoredPopoverPositionTracker | undefined"
2689
+ },
2690
+ "privacy": "private"
2691
+ },
2692
+ {
2693
+ "kind": "field",
2694
+ "name": "focusMenuOnOpen",
2695
+ "type": {
2696
+ "text": "boolean"
2697
+ },
2698
+ "privacy": "private",
2699
+ "default": "false",
2700
+ "description": "Set when the keyboard opens the menu, so focus moves into it as screen readers announce."
2701
+ },
2702
+ {
2703
+ "kind": "method",
2704
+ "name": "updateMenuPosition",
2705
+ "privacy": "private"
2706
+ },
2707
+ {
2708
+ "kind": "method",
2709
+ "name": "startTrackingPosition",
2710
+ "privacy": "private"
2711
+ },
2712
+ {
2713
+ "kind": "method",
2714
+ "name": "stopTrackingPosition",
2715
+ "privacy": "private"
2716
+ },
2717
+ {
2718
+ "kind": "method",
2719
+ "name": "definitionChanged",
2720
+ "privacy": "protected",
2721
+ "parameters": [
2722
+ {
2723
+ "name": "oldValue",
2724
+ "type": {
2725
+ "text": "any"
2726
+ }
2727
+ },
2728
+ {
2729
+ "name": "newValue",
2730
+ "type": {
2731
+ "text": "any"
2732
+ }
2627
2733
  }
2628
- }
2734
+ ]
2629
2735
  },
2630
2736
  {
2631
2737
  "kind": "method",
2632
- "name": "deriveState",
2633
- "privacy": "private",
2738
+ "name": "openChanged",
2739
+ "privacy": "protected"
2740
+ },
2741
+ {
2742
+ "kind": "method",
2743
+ "name": "toggleActionsMenuVisibility"
2744
+ },
2745
+ {
2746
+ "kind": "method",
2747
+ "name": "onPopoverToggle",
2748
+ "parameters": [
2749
+ {
2750
+ "name": "event",
2751
+ "type": {
2752
+ "text": "Event"
2753
+ }
2754
+ }
2755
+ ],
2756
+ "description": "Syncs `open` when the native `popover=\"auto\"` light-dismiss (outside click / Escape) closes\nthe vertical menu without going through `toggleActionsMenuVisibility()`."
2757
+ },
2758
+ {
2759
+ "kind": "method",
2760
+ "name": "onIconOpenerKeydown",
2634
2761
  "return": {
2635
2762
  "type": {
2636
- "text": "AIIndicatorState"
2763
+ "text": "boolean"
2637
2764
  }
2638
2765
  },
2639
2766
  "parameters": [
2640
2767
  {
2641
- "name": "s",
2768
+ "name": "event",
2642
2769
  "type": {
2643
- "text": "AIStatus | null"
2770
+ "text": "KeyboardEvent"
2644
2771
  }
2645
2772
  }
2646
- ]
2773
+ ],
2774
+ "description": "Opens the icon-only opener from the keyboard, as a native button would."
2647
2775
  },
2648
2776
  {
2649
2777
  "kind": "method",
2650
- "name": "maybeStartPolling",
2651
- "privacy": "private",
2652
- "return": {
2653
- "type": {
2654
- "text": "void"
2778
+ "name": "onActionMenuItemClick",
2779
+ "parameters": [
2780
+ {
2781
+ "name": "callback",
2782
+ "type": {
2783
+ "text": "(rowData) => void | any"
2784
+ }
2655
2785
  }
2656
- }
2786
+ ]
2657
2787
  },
2658
2788
  {
2659
2789
  "kind": "method",
2660
- "name": "startPolling",
2661
- "privacy": "private",
2790
+ "name": "isActionDisabled",
2662
2791
  "return": {
2663
2792
  "type": {
2664
- "text": "void"
2793
+ "text": "boolean"
2665
2794
  }
2666
- }
2795
+ },
2796
+ "parameters": [
2797
+ {
2798
+ "name": "action",
2799
+ "type": {
2800
+ "text": "ActionMenuItem"
2801
+ }
2802
+ }
2803
+ ],
2804
+ "description": "Resolves an action's `isDisabled` for the current row."
2805
+ },
2806
+ {
2807
+ "kind": "field",
2808
+ "name": "resolvedActions",
2809
+ "type": {
2810
+ "text": "ActionMenuItem[]"
2811
+ },
2812
+ "description": "The actions for the current row: from `actionsResolver` when set, else `actions`.",
2813
+ "readonly": true
2814
+ },
2815
+ {
2816
+ "kind": "field",
2817
+ "name": "hasVisibleActions",
2818
+ "type": {
2819
+ "text": "boolean"
2820
+ },
2821
+ "description": "Whether the row has an action to show: an enabled one, or any when disabled ones show.",
2822
+ "readonly": true
2823
+ },
2824
+ {
2825
+ "kind": "field",
2826
+ "name": "allActions",
2827
+ "type": {
2828
+ "text": "ActionMenuItem[]"
2829
+ },
2830
+ "readonly": true
2831
+ },
2832
+ {
2833
+ "kind": "field",
2834
+ "name": "rowData",
2835
+ "readonly": true
2667
2836
  },
2668
2837
  {
2669
2838
  "kind": "method",
2670
- "name": "stopPolling",
2671
- "privacy": "private",
2672
- "return": {
2673
- "type": {
2674
- "text": "void"
2839
+ "name": "getLabel",
2840
+ "parameters": [
2841
+ {
2842
+ "name": "name",
2843
+ "type": {
2844
+ "text": "string | ((rowData: any) => string)"
2845
+ }
2675
2846
  }
2676
- }
2847
+ ]
2677
2848
  },
2678
2849
  {
2679
2850
  "kind": "method",
2680
- "name": "onInstall",
2681
- "return": {
2682
- "type": {
2683
- "text": "Promise<void>"
2851
+ "name": "getTemplate",
2852
+ "parameters": [
2853
+ {
2854
+ "name": "prefix",
2855
+ "type": {
2856
+ "text": "string"
2857
+ }
2684
2858
  }
2685
- }
2859
+ ]
2686
2860
  },
2687
2861
  {
2688
2862
  "kind": "field",
@@ -2796,88 +2970,190 @@
2796
2970
  }
2797
2971
  }
2798
2972
  ],
2973
+ "attributes": [
2974
+ {
2975
+ "name": "is-vertical",
2976
+ "type": {
2977
+ "text": "boolean"
2978
+ },
2979
+ "default": "false",
2980
+ "fieldName": "isVertical"
2981
+ },
2982
+ {
2983
+ "name": "add-default-actions",
2984
+ "type": {
2985
+ "text": "boolean"
2986
+ },
2987
+ "default": "true",
2988
+ "fieldName": "addDefaultActions"
2989
+ },
2990
+ {
2991
+ "name": "auto-close-on-action",
2992
+ "type": {
2993
+ "text": "boolean"
2994
+ },
2995
+ "default": "true",
2996
+ "fieldName": "autoCloseOnAction"
2997
+ },
2998
+ {
2999
+ "name": "name",
3000
+ "type": {
3001
+ "text": "string"
3002
+ },
3003
+ "default": "'Actions'",
3004
+ "fieldName": "name"
3005
+ },
3006
+ {
3007
+ "name": "icon-name",
3008
+ "type": {
3009
+ "text": "string"
3010
+ },
3011
+ "description": "When set, the opener renders this icon instead of the `name` text (e.g. `ellipsis`\nfor an icon-only \"kebab\" opener).",
3012
+ "fieldName": "iconName"
3013
+ },
3014
+ {
3015
+ "name": "open",
3016
+ "type": {
3017
+ "text": "boolean"
3018
+ },
3019
+ "default": "false",
3020
+ "fieldName": "open"
3021
+ },
3022
+ {
3023
+ "name": "buttonAppearance",
3024
+ "type": {
3025
+ "text": "string"
3026
+ },
3027
+ "fieldName": "buttonAppearance"
3028
+ },
3029
+ {
3030
+ "name": "hide-disabled",
3031
+ "type": {
3032
+ "text": "boolean"
3033
+ },
3034
+ "default": "false",
3035
+ "fieldName": "hideDisabled"
3036
+ },
3037
+ {
3038
+ "name": "hide-menu-single-option",
3039
+ "type": {
3040
+ "text": "boolean"
3041
+ },
3042
+ "default": "false",
3043
+ "fieldName": "hideMenuSingleOption"
3044
+ }
3045
+ ],
2799
3046
  "superclass": {
2800
3047
  "name": "FoundationElement",
2801
3048
  "package": "@microsoft/fast-foundation"
2802
3049
  },
2803
- "tagName": "%%prefix%%-ai-indicator",
3050
+ "tagName": "%%prefix%%-actions-menu",
2804
3051
  "customElement": true
2805
3052
  },
2806
3053
  {
2807
3054
  "kind": "variable",
2808
- "name": "foundationAiIndicator"
3055
+ "name": "foundationActionsMenu",
3056
+ "description": "The Foundation Actions Menu",
3057
+ "privacy": "public"
2809
3058
  }
2810
3059
  ],
2811
3060
  "exports": [
2812
3061
  {
2813
3062
  "kind": "js",
2814
- "name": "AiIndicator",
3063
+ "name": "ActionsMenu",
2815
3064
  "declaration": {
2816
- "name": "AiIndicator",
2817
- "module": "src/ai-indicator/ai-indicator.ts"
3065
+ "name": "ActionsMenu",
3066
+ "module": "src/actions-menu/actions-menu.ts"
2818
3067
  }
2819
3068
  },
2820
3069
  {
2821
3070
  "kind": "js",
2822
- "name": "foundationAiIndicator",
3071
+ "name": "foundationActionsMenu",
2823
3072
  "declaration": {
2824
- "name": "foundationAiIndicator",
2825
- "module": "src/ai-indicator/ai-indicator.ts"
3073
+ "name": "foundationActionsMenu",
3074
+ "module": "src/actions-menu/actions-menu.ts"
2826
3075
  }
2827
3076
  }
2828
3077
  ]
2829
3078
  },
2830
3079
  {
2831
3080
  "kind": "javascript-module",
2832
- "path": "src/ai-indicator/index.ts",
2833
- "declarations": [],
2834
- "exports": [
3081
+ "path": "src/actions-menu/ag-menu.styles.ts",
3082
+ "declarations": [
2835
3083
  {
2836
- "kind": "js",
2837
- "name": "AiIndicator",
2838
- "declaration": {
2839
- "name": "AiIndicator",
2840
- "module": "./ai-indicator"
2841
- }
2842
- },
3084
+ "kind": "function",
3085
+ "name": "agMenuStyles",
3086
+ "return": {
3087
+ "type": {
3088
+ "text": ""
3089
+ }
3090
+ },
3091
+ "parameters": [
3092
+ {
3093
+ "name": "menuSelector",
3094
+ "type": {
3095
+ "text": "string"
3096
+ },
3097
+ "description": "Selects the menu surface. May be a selector list."
3098
+ },
3099
+ {
3100
+ "name": "itemSelector",
3101
+ "type": {
3102
+ "text": "string"
3103
+ },
3104
+ "description": "Selects a menu item. Must be a single selector, as states are appended to it."
3105
+ }
3106
+ ],
3107
+ "description": "Styles a menu to match AG Grid's own menu (ag-menu / ag-menu-list / ag-menu-option), so a menu\ndrawn over a grid looks like the grid's. AG Grid's `--ag-*` variables apply where they are set;\nelsewhere the design system's tokens do, with fallbacks for when neither is in scope.",
3108
+ "privacy": "public"
3109
+ }
3110
+ ],
3111
+ "exports": [
2843
3112
  {
2844
3113
  "kind": "js",
2845
- "name": "foundationAiIndicator",
3114
+ "name": "agMenuStyles",
2846
3115
  "declaration": {
2847
- "name": "foundationAiIndicator",
2848
- "module": "./ai-indicator"
3116
+ "name": "agMenuStyles",
3117
+ "module": "src/actions-menu/ag-menu.styles.ts"
2849
3118
  }
2850
- },
3119
+ }
3120
+ ]
3121
+ },
3122
+ {
3123
+ "kind": "javascript-module",
3124
+ "path": "src/actions-menu/index.ts",
3125
+ "declarations": [],
3126
+ "exports": [
2851
3127
  {
2852
3128
  "kind": "js",
2853
- "name": "type",
3129
+ "name": "*",
2854
3130
  "declaration": {
2855
- "name": "type",
2856
- "module": "./ai-indicator"
3131
+ "name": "*",
3132
+ "package": "./actions-menu.styles"
2857
3133
  }
2858
3134
  },
2859
3135
  {
2860
3136
  "kind": "js",
2861
- "name": "AIIndicatorState",
3137
+ "name": "*",
2862
3138
  "declaration": {
2863
- "name": "AIIndicatorState",
2864
- "module": "./ai-indicator"
3139
+ "name": "*",
3140
+ "package": "./actions-menu.template"
2865
3141
  }
2866
3142
  },
2867
3143
  {
2868
3144
  "kind": "js",
2869
- "name": "foundationAiIndicatorTemplate",
3145
+ "name": "*",
2870
3146
  "declaration": {
2871
- "name": "foundationAiIndicatorTemplate",
2872
- "module": "./ai-indicator.template"
3147
+ "name": "*",
3148
+ "package": "./actions-menu"
2873
3149
  }
2874
3150
  },
2875
3151
  {
2876
3152
  "kind": "js",
2877
- "name": "foundationAiIndicatorStyles",
3153
+ "name": "*",
2878
3154
  "declaration": {
2879
- "name": "foundationAiIndicatorStyles",
2880
- "module": "./ai-indicator.styles"
3155
+ "name": "*",
3156
+ "package": "./ag-menu.styles"
2881
3157
  }
2882
3158
  }
2883
3159
  ]
@@ -3493,34 +3769,11 @@
3493
3769
  },
3494
3770
  {
3495
3771
  "kind": "javascript-module",
3496
- "path": "src/actions-menu/actions-menu.styles.ts",
3772
+ "path": "src/ai-indicator/ai-indicator.styles.ts",
3497
3773
  "declarations": [
3498
3774
  {
3499
3775
  "kind": "function",
3500
- "name": "actionsMenuBaseStyles",
3501
- "return": {
3502
- "type": {
3503
- "text": "ElementStyles"
3504
- }
3505
- },
3506
- "parameters": [
3507
- {
3508
- "name": "context",
3509
- "type": {
3510
- "text": "ElementDefinitionContext"
3511
- }
3512
- },
3513
- {
3514
- "name": "definition",
3515
- "type": {
3516
- "text": "FoundationElementDefinition"
3517
- }
3518
- }
3519
- ]
3520
- },
3521
- {
3522
- "kind": "function",
3523
- "name": "foundationActionsMenuStyles",
3776
+ "name": "foundationAiIndicatorStyles",
3524
3777
  "return": {
3525
3778
  "type": {
3526
3779
  "text": "ElementStyles"
@@ -3545,147 +3798,71 @@
3545
3798
  "exports": [
3546
3799
  {
3547
3800
  "kind": "js",
3548
- "name": "actionsMenuBaseStyles",
3549
- "declaration": {
3550
- "name": "actionsMenuBaseStyles",
3551
- "module": "src/actions-menu/actions-menu.styles.ts"
3552
- }
3553
- },
3554
- {
3555
- "kind": "js",
3556
- "name": "foundationActionsMenuStyles",
3801
+ "name": "foundationAiIndicatorStyles",
3557
3802
  "declaration": {
3558
- "name": "foundationActionsMenuStyles",
3559
- "module": "src/actions-menu/actions-menu.styles.ts"
3803
+ "name": "foundationAiIndicatorStyles",
3804
+ "module": "src/ai-indicator/ai-indicator.styles.ts"
3560
3805
  }
3561
3806
  }
3562
3807
  ]
3563
3808
  },
3564
3809
  {
3565
3810
  "kind": "javascript-module",
3566
- "path": "src/actions-menu/actions-menu.template.ts",
3811
+ "path": "src/ai-indicator/ai-indicator.template.ts",
3567
3812
  "declarations": [
3568
3813
  {
3569
3814
  "kind": "variable",
3570
- "name": "menuTemplate"
3571
- },
3572
- {
3573
- "kind": "variable",
3574
- "name": "singleOptionTemplate"
3575
- },
3576
- {
3577
- "kind": "variable",
3578
- "name": "foundationActionsMenuTemplate",
3815
+ "name": "foundationAiIndicatorTemplate",
3579
3816
  "type": {
3580
- "text": "ViewTemplate<ActionsMenu>"
3817
+ "text": "ViewTemplate<AiIndicator>"
3581
3818
  },
3582
- "default": "html`\n <div\n class=\"actions-container${(x) => (x.isVertical ? ' actions-vertical' : '')}\"\n part=\"actions-container\"\n >\n ${(x) => x.getTemplate(getPrefix(x))}\n </div>\n`"
3819
+ "default": "html`\n ${(x) => aiIndicatorTemplate(getPrefix(x))}\n`"
3583
3820
  }
3584
3821
  ],
3585
3822
  "exports": [
3586
3823
  {
3587
3824
  "kind": "js",
3588
- "name": "menuTemplate",
3589
- "declaration": {
3590
- "name": "menuTemplate",
3591
- "module": "src/actions-menu/actions-menu.template.ts"
3592
- }
3593
- },
3594
- {
3595
- "kind": "js",
3596
- "name": "singleOptionTemplate",
3597
- "declaration": {
3598
- "name": "singleOptionTemplate",
3599
- "module": "src/actions-menu/actions-menu.template.ts"
3600
- }
3601
- },
3602
- {
3603
- "kind": "js",
3604
- "name": "foundationActionsMenuTemplate",
3825
+ "name": "foundationAiIndicatorTemplate",
3605
3826
  "declaration": {
3606
- "name": "foundationActionsMenuTemplate",
3607
- "module": "src/actions-menu/actions-menu.template.ts"
3827
+ "name": "foundationAiIndicatorTemplate",
3828
+ "module": "src/ai-indicator/ai-indicator.template.ts"
3608
3829
  }
3609
3830
  }
3610
3831
  ]
3611
3832
  },
3612
3833
  {
3613
3834
  "kind": "javascript-module",
3614
- "path": "src/actions-menu/actions-menu.ts",
3835
+ "path": "src/ai-indicator/ai-indicator.ts",
3615
3836
  "declarations": [
3616
3837
  {
3617
3838
  "kind": "class",
3618
3839
  "description": "",
3619
- "name": "ActionsMenu",
3840
+ "name": "AiIndicator",
3620
3841
  "members": [
3621
3842
  {
3622
3843
  "kind": "field",
3623
- "name": "actions",
3624
- "type": {
3625
- "text": "ActionMenuItem[]"
3626
- }
3627
- },
3628
- {
3629
- "kind": "field",
3630
- "name": "actionsResolver",
3631
- "type": {
3632
- "text": "ActionMenuItemsResolver | undefined"
3633
- },
3634
- "description": "Resolves the actions per row instead of `actions`, from the row data in `definition`."
3635
- },
3636
- {
3637
- "kind": "field",
3638
- "name": "isVertical",
3639
- "type": {
3640
- "text": "boolean"
3641
- },
3642
- "default": "false"
3643
- },
3644
- {
3645
- "kind": "field",
3646
- "name": "addDefaultActions",
3647
- "type": {
3648
- "text": "boolean"
3649
- },
3650
- "default": "true"
3651
- },
3652
- {
3653
- "kind": "field",
3654
- "name": "autoCloseOnAction",
3655
- "type": {
3656
- "text": "boolean"
3657
- },
3658
- "default": "true"
3659
- },
3660
- {
3661
- "kind": "field",
3662
- "name": "classNames",
3663
- "type": {
3664
- "text": "string"
3665
- }
3666
- },
3667
- {
3668
- "kind": "field",
3669
- "name": "definition",
3844
+ "name": "providerRegistry",
3670
3845
  "type": {
3671
- "text": "any"
3846
+ "text": "AIProviderRegistry"
3672
3847
  }
3673
3848
  },
3674
3849
  {
3675
3850
  "kind": "field",
3676
- "name": "name",
3851
+ "name": "aiProvider",
3677
3852
  "type": {
3678
- "text": "string"
3853
+ "text": "AIProvider | undefined"
3679
3854
  },
3680
- "default": "'Actions'"
3855
+ "privacy": "private",
3856
+ "description": "The indicator reflects status for the registry's default provider only —\nper-agent provider overrides live with the assistant component, not this\ntop-level chrome.",
3857
+ "readonly": true
3681
3858
  },
3682
3859
  {
3683
3860
  "kind": "field",
3684
- "name": "iconName",
3861
+ "name": "status",
3685
3862
  "type": {
3686
- "text": "string"
3863
+ "text": "AIStatus | null"
3687
3864
  },
3688
- "description": "When set, the opener renders this icon instead of the `name` text (e.g. `ellipsis`\nfor an icon-only \"kebab\" opener)."
3865
+ "default": "null"
3689
3866
  },
3690
3867
  {
3691
3868
  "kind": "field",
@@ -3697,22 +3874,15 @@
3697
3874
  },
3698
3875
  {
3699
3876
  "kind": "field",
3700
- "name": "buttonAppearance",
3701
- "type": {
3702
- "text": "string"
3703
- }
3704
- },
3705
- {
3706
- "kind": "field",
3707
- "name": "hideDisabled",
3877
+ "name": "state",
3708
3878
  "type": {
3709
- "text": "boolean"
3879
+ "text": "AIIndicatorState"
3710
3880
  },
3711
- "default": "false"
3881
+ "default": "'none'"
3712
3882
  },
3713
3883
  {
3714
3884
  "kind": "field",
3715
- "name": "hideMenuSingleOption",
3885
+ "name": "isInstalling",
3716
3886
  "type": {
3717
3887
  "text": "boolean"
3718
3888
  },
@@ -3720,202 +3890,134 @@
3720
3890
  },
3721
3891
  {
3722
3892
  "kind": "field",
3723
- "name": "singleOption",
3724
- "type": {
3725
- "text": "ActionMenuItem"
3726
- }
3727
- },
3728
- {
3729
- "kind": "field",
3730
- "name": "actionsMenu",
3731
- "type": {
3732
- "text": "HTMLElement"
3733
- }
3734
- },
3735
- {
3736
- "kind": "field",
3737
- "name": "actionsOpener",
3738
- "type": {
3739
- "text": "HTMLElement"
3740
- }
3741
- },
3742
- {
3743
- "kind": "field",
3744
- "name": "positionTracker",
3745
- "type": {
3746
- "text": "AnchoredPopoverPositionTracker | undefined"
3747
- },
3748
- "privacy": "private"
3749
- },
3750
- {
3751
- "kind": "field",
3752
- "name": "focusMenuOnOpen",
3893
+ "name": "pollTimer",
3753
3894
  "type": {
3754
- "text": "boolean"
3895
+ "text": "ReturnType<typeof setInterval> | null"
3755
3896
  },
3756
3897
  "privacy": "private",
3757
- "default": "false",
3758
- "description": "Set when the keyboard opens the menu, so focus moves into it as screen readers announce."
3759
- },
3760
- {
3761
- "kind": "method",
3762
- "name": "updateMenuPosition",
3763
- "privacy": "private"
3764
- },
3765
- {
3766
- "kind": "method",
3767
- "name": "startTrackingPosition",
3768
- "privacy": "private"
3898
+ "default": "null"
3769
3899
  },
3770
3900
  {
3771
- "kind": "method",
3772
- "name": "stopTrackingPosition",
3901
+ "kind": "field",
3902
+ "name": "clickOutside",
3773
3903
  "privacy": "private"
3774
3904
  },
3775
- {
3776
- "kind": "method",
3777
- "name": "definitionChanged",
3778
- "privacy": "protected",
3779
- "parameters": [
3780
- {
3781
- "name": "oldValue",
3782
- "type": {
3783
- "text": "any"
3784
- }
3785
- },
3786
- {
3787
- "name": "newValue",
3788
- "type": {
3789
- "text": "any"
3790
- }
3791
- }
3792
- ]
3793
- },
3794
- {
3795
- "kind": "method",
3796
- "name": "openChanged",
3797
- "privacy": "protected"
3798
- },
3799
- {
3800
- "kind": "method",
3801
- "name": "toggleActionsMenuVisibility"
3802
- },
3803
- {
3804
- "kind": "method",
3805
- "name": "onPopoverToggle",
3806
- "parameters": [
3807
- {
3808
- "name": "event",
3809
- "type": {
3810
- "text": "Event"
3811
- }
3812
- }
3813
- ],
3814
- "description": "Syncs `open` when the native `popover=\"auto\"` light-dismiss (outside click / Escape) closes\nthe vertical menu without going through `toggleActionsMenuVisibility()`."
3815
- },
3816
- {
3817
- "kind": "method",
3818
- "name": "onIconOpenerKeydown",
3819
- "return": {
3820
- "type": {
3821
- "text": "boolean"
3822
- }
3823
- },
3824
- "parameters": [
3825
- {
3826
- "name": "event",
3827
- "type": {
3828
- "text": "KeyboardEvent"
3829
- }
3830
- }
3831
- ],
3832
- "description": "Opens the icon-only opener from the keyboard, as a native button would."
3833
- },
3834
- {
3835
- "kind": "method",
3836
- "name": "onActionMenuItemClick",
3837
- "parameters": [
3838
- {
3839
- "name": "callback",
3840
- "type": {
3841
- "text": "(rowData) => void | any"
3842
- }
3843
- }
3844
- ]
3845
- },
3846
- {
3847
- "kind": "method",
3848
- "name": "isActionDisabled",
3849
- "return": {
3850
- "type": {
3851
- "text": "boolean"
3852
- }
3853
- },
3854
- "parameters": [
3855
- {
3856
- "name": "action",
3857
- "type": {
3858
- "text": "ActionMenuItem"
3859
- }
3860
- }
3861
- ],
3862
- "description": "Resolves an action's `isDisabled` for the current row."
3863
- },
3864
3905
  {
3865
3906
  "kind": "field",
3866
- "name": "resolvedActions",
3907
+ "name": "chromeStatusLabel",
3867
3908
  "type": {
3868
- "text": "ActionMenuItem[]"
3909
+ "text": "string | null"
3869
3910
  },
3870
- "description": "The actions for the current row: from `actionsResolver` when set, else `actions`.",
3871
3911
  "readonly": true
3872
3912
  },
3873
3913
  {
3874
3914
  "kind": "field",
3875
- "name": "hasVisibleActions",
3915
+ "name": "canInstall",
3876
3916
  "type": {
3877
3917
  "text": "boolean"
3878
3918
  },
3879
- "description": "Whether the row has an action to show: an enabled one, or any when disabled ones show.",
3880
3919
  "readonly": true
3881
3920
  },
3882
3921
  {
3883
3922
  "kind": "field",
3884
- "name": "allActions",
3923
+ "name": "isDownloading",
3885
3924
  "type": {
3886
- "text": "ActionMenuItem[]"
3925
+ "text": "boolean"
3887
3926
  },
3888
3927
  "readonly": true
3889
3928
  },
3890
3929
  {
3891
- "kind": "field",
3892
- "name": "rowData",
3893
- "readonly": true
3930
+ "kind": "method",
3931
+ "name": "openChanged",
3932
+ "return": {
3933
+ "type": {
3934
+ "text": "void"
3935
+ }
3936
+ }
3894
3937
  },
3895
3938
  {
3896
3939
  "kind": "method",
3897
- "name": "getLabel",
3940
+ "name": "handleClickOutside",
3941
+ "privacy": "private",
3898
3942
  "parameters": [
3899
3943
  {
3900
- "name": "name",
3944
+ "name": "event",
3901
3945
  "type": {
3902
- "text": "string | ((rowData: any) => string)"
3946
+ "text": "MouseEvent"
3903
3947
  }
3904
3948
  }
3905
3949
  ]
3906
3950
  },
3907
3951
  {
3908
3952
  "kind": "method",
3909
- "name": "getTemplate",
3953
+ "name": "toggleDropdown"
3954
+ },
3955
+ {
3956
+ "kind": "method",
3957
+ "name": "refreshStatus",
3958
+ "return": {
3959
+ "type": {
3960
+ "text": "Promise<void>"
3961
+ }
3962
+ }
3963
+ },
3964
+ {
3965
+ "kind": "method",
3966
+ "name": "deriveState",
3967
+ "privacy": "private",
3968
+ "return": {
3969
+ "type": {
3970
+ "text": "AIIndicatorState"
3971
+ }
3972
+ },
3910
3973
  "parameters": [
3911
3974
  {
3912
- "name": "prefix",
3975
+ "name": "s",
3913
3976
  "type": {
3914
- "text": "string"
3977
+ "text": "AIStatus | null"
3915
3978
  }
3916
3979
  }
3917
3980
  ]
3918
3981
  },
3982
+ {
3983
+ "kind": "method",
3984
+ "name": "maybeStartPolling",
3985
+ "privacy": "private",
3986
+ "return": {
3987
+ "type": {
3988
+ "text": "void"
3989
+ }
3990
+ }
3991
+ },
3992
+ {
3993
+ "kind": "method",
3994
+ "name": "startPolling",
3995
+ "privacy": "private",
3996
+ "return": {
3997
+ "type": {
3998
+ "text": "void"
3999
+ }
4000
+ }
4001
+ },
4002
+ {
4003
+ "kind": "method",
4004
+ "name": "stopPolling",
4005
+ "privacy": "private",
4006
+ "return": {
4007
+ "type": {
4008
+ "text": "void"
4009
+ }
4010
+ }
4011
+ },
4012
+ {
4013
+ "kind": "method",
4014
+ "name": "onInstall",
4015
+ "return": {
4016
+ "type": {
4017
+ "text": "Promise<void>"
4018
+ }
4019
+ }
4020
+ },
3919
4021
  {
3920
4022
  "kind": "field",
3921
4023
  "name": "_presentation",
@@ -4028,190 +4130,88 @@
4028
4130
  }
4029
4131
  }
4030
4132
  ],
4031
- "attributes": [
4032
- {
4033
- "name": "is-vertical",
4034
- "type": {
4035
- "text": "boolean"
4036
- },
4037
- "default": "false",
4038
- "fieldName": "isVertical"
4039
- },
4040
- {
4041
- "name": "add-default-actions",
4042
- "type": {
4043
- "text": "boolean"
4044
- },
4045
- "default": "true",
4046
- "fieldName": "addDefaultActions"
4047
- },
4048
- {
4049
- "name": "auto-close-on-action",
4050
- "type": {
4051
- "text": "boolean"
4052
- },
4053
- "default": "true",
4054
- "fieldName": "autoCloseOnAction"
4055
- },
4056
- {
4057
- "name": "name",
4058
- "type": {
4059
- "text": "string"
4060
- },
4061
- "default": "'Actions'",
4062
- "fieldName": "name"
4063
- },
4064
- {
4065
- "name": "icon-name",
4066
- "type": {
4067
- "text": "string"
4068
- },
4069
- "description": "When set, the opener renders this icon instead of the `name` text (e.g. `ellipsis`\nfor an icon-only \"kebab\" opener).",
4070
- "fieldName": "iconName"
4071
- },
4072
- {
4073
- "name": "open",
4074
- "type": {
4075
- "text": "boolean"
4076
- },
4077
- "default": "false",
4078
- "fieldName": "open"
4079
- },
4080
- {
4081
- "name": "buttonAppearance",
4082
- "type": {
4083
- "text": "string"
4084
- },
4085
- "fieldName": "buttonAppearance"
4086
- },
4087
- {
4088
- "name": "hide-disabled",
4089
- "type": {
4090
- "text": "boolean"
4091
- },
4092
- "default": "false",
4093
- "fieldName": "hideDisabled"
4094
- },
4095
- {
4096
- "name": "hide-menu-single-option",
4097
- "type": {
4098
- "text": "boolean"
4099
- },
4100
- "default": "false",
4101
- "fieldName": "hideMenuSingleOption"
4102
- }
4103
- ],
4104
4133
  "superclass": {
4105
4134
  "name": "FoundationElement",
4106
4135
  "package": "@microsoft/fast-foundation"
4107
4136
  },
4108
- "tagName": "%%prefix%%-actions-menu",
4137
+ "tagName": "%%prefix%%-ai-indicator",
4109
4138
  "customElement": true
4110
4139
  },
4111
4140
  {
4112
4141
  "kind": "variable",
4113
- "name": "foundationActionsMenu",
4114
- "description": "The Foundation Actions Menu",
4115
- "privacy": "public"
4142
+ "name": "foundationAiIndicator"
4116
4143
  }
4117
4144
  ],
4118
4145
  "exports": [
4119
4146
  {
4120
4147
  "kind": "js",
4121
- "name": "ActionsMenu",
4148
+ "name": "AiIndicator",
4122
4149
  "declaration": {
4123
- "name": "ActionsMenu",
4124
- "module": "src/actions-menu/actions-menu.ts"
4150
+ "name": "AiIndicator",
4151
+ "module": "src/ai-indicator/ai-indicator.ts"
4125
4152
  }
4126
4153
  },
4127
4154
  {
4128
4155
  "kind": "js",
4129
- "name": "foundationActionsMenu",
4156
+ "name": "foundationAiIndicator",
4130
4157
  "declaration": {
4131
- "name": "foundationActionsMenu",
4132
- "module": "src/actions-menu/actions-menu.ts"
4158
+ "name": "foundationAiIndicator",
4159
+ "module": "src/ai-indicator/ai-indicator.ts"
4133
4160
  }
4134
4161
  }
4135
4162
  ]
4136
4163
  },
4137
4164
  {
4138
4165
  "kind": "javascript-module",
4139
- "path": "src/actions-menu/ag-menu.styles.ts",
4140
- "declarations": [
4141
- {
4142
- "kind": "function",
4143
- "name": "agMenuStyles",
4144
- "return": {
4145
- "type": {
4146
- "text": ""
4147
- }
4148
- },
4149
- "parameters": [
4150
- {
4151
- "name": "menuSelector",
4152
- "type": {
4153
- "text": "string"
4154
- },
4155
- "description": "Selects the menu surface. May be a selector list."
4156
- },
4157
- {
4158
- "name": "itemSelector",
4159
- "type": {
4160
- "text": "string"
4161
- },
4162
- "description": "Selects a menu item. Must be a single selector, as states are appended to it."
4163
- }
4164
- ],
4165
- "description": "Styles a menu to match AG Grid's own menu (ag-menu / ag-menu-list / ag-menu-option), so a menu\ndrawn over a grid looks like the grid's. AG Grid's `--ag-*` variables apply where they are set;\nelsewhere the design system's tokens do, with fallbacks for when neither is in scope.",
4166
- "privacy": "public"
4167
- }
4168
- ],
4166
+ "path": "src/ai-indicator/index.ts",
4167
+ "declarations": [],
4169
4168
  "exports": [
4170
4169
  {
4171
4170
  "kind": "js",
4172
- "name": "agMenuStyles",
4171
+ "name": "AiIndicator",
4173
4172
  "declaration": {
4174
- "name": "agMenuStyles",
4175
- "module": "src/actions-menu/ag-menu.styles.ts"
4173
+ "name": "AiIndicator",
4174
+ "module": "./ai-indicator"
4176
4175
  }
4177
- }
4178
- ]
4179
- },
4180
- {
4181
- "kind": "javascript-module",
4182
- "path": "src/actions-menu/index.ts",
4183
- "declarations": [],
4184
- "exports": [
4176
+ },
4185
4177
  {
4186
4178
  "kind": "js",
4187
- "name": "*",
4179
+ "name": "foundationAiIndicator",
4188
4180
  "declaration": {
4189
- "name": "*",
4190
- "package": "./actions-menu.styles"
4181
+ "name": "foundationAiIndicator",
4182
+ "module": "./ai-indicator"
4191
4183
  }
4192
4184
  },
4193
4185
  {
4194
4186
  "kind": "js",
4195
- "name": "*",
4187
+ "name": "type",
4196
4188
  "declaration": {
4197
- "name": "*",
4198
- "package": "./actions-menu.template"
4189
+ "name": "type",
4190
+ "module": "./ai-indicator"
4199
4191
  }
4200
4192
  },
4201
4193
  {
4202
4194
  "kind": "js",
4203
- "name": "*",
4195
+ "name": "AIIndicatorState",
4204
4196
  "declaration": {
4205
- "name": "*",
4206
- "package": "./actions-menu"
4197
+ "name": "AIIndicatorState",
4198
+ "module": "./ai-indicator"
4207
4199
  }
4208
4200
  },
4209
4201
  {
4210
4202
  "kind": "js",
4211
- "name": "*",
4203
+ "name": "foundationAiIndicatorTemplate",
4212
4204
  "declaration": {
4213
- "name": "*",
4214
- "package": "./ag-menu.styles"
4205
+ "name": "foundationAiIndicatorTemplate",
4206
+ "module": "./ai-indicator.template"
4207
+ }
4208
+ },
4209
+ {
4210
+ "kind": "js",
4211
+ "name": "foundationAiIndicatorStyles",
4212
+ "declaration": {
4213
+ "name": "foundationAiIndicatorStyles",
4214
+ "module": "./ai-indicator.styles"
4215
4215
  }
4216
4216
  }
4217
4217
  ]