-
Notifications
You must be signed in to change notification settings - Fork 571
CarPlay MacCatalyst xcode27.0 b2
Alex Soto edited this page Jun 23, 2026
·
1 revision
#CarPlay.framework
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h 2026-05-22 06:39:59
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPChargingStationConnection.h 2026-06-13 03:42:13
@@ -22,7 +22,7 @@
CPChargingStationConnectionConnectorNACSAC NS_SWIFT_NAME(nacsAC),
} NS_SWIFT_NAME(CPChargingStationConnection.Connector);
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPChargingStationConnection : NSObject <NSCopying, NSSecureCoding>
- (instancetype)initWithConnector:(CPChargingStationConnectionConnector)connector
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h 2026-05-22 06:39:59
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanel.h 2026-06-13 03:42:14
@@ -15,15 +15,15 @@
NS_ASSUME_NONNULL_BEGIN
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
-NS_SWIFT_NAME(CPMapPanel.Delegate)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+NS_SWIFT_NAME(CPMapPanel.Delegate)
@protocol CPMapPanelDelegate <NSObject>
@optional
- (void)panelDidShow:(CPMapPanel *)panel;
- (void)panelDidHide:(CPMapPanel *)panel;
@end
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPMapPanel : CPPanel
/**
@@ -36,7 +36,7 @@
*/
- (instancetype)initWithTitle:(nullable NSString *)title
sections:(NSArray<CPMapPanelSection *> *)sections
- buttonConfiguration:(nullable CPMapPanelButtonConfiguration *)buttonConfiguration NS_DESIGNATED_INITIALIZER;
+ buttonConfiguration:(nullable CPMapPanelButtonConfiguration *)buttonConfiguration;
/**
The title of the page.
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h 2026-05-22 06:40:02
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelButtonConfiguration.h 2026-06-13 03:42:16
@@ -15,7 +15,7 @@
NS_ASSUME_NONNULL_BEGIN
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPMapPanelButtonConfiguration : CPPanelButtonConfiguration
/**
@@ -23,23 +23,23 @@
and an optional secondary button.
@param primaryAction The primary text button for the panel.
- @param symbolButton An optional secondary button. Note: only the image property of this button is used. Any title provided will be dropped.
+ @param secondaryButton An optional secondary button. Note: only the image property of this button is used. Any title provided will be dropped.
@param travelEstimates Optional travel estimates to display alongside the primary button.
@return A new @c CPMapPanelButtonConfiguration instance.
*/
- (instancetype)initWithPrimaryAction:(CPTextButton *)primaryAction
- symbolButton:(nullable CPButton *)symbolButton
- travelEstimates:(nullable CPTravelEstimates *)travelEstimates NS_DESIGNATED_INITIALIZER;
+ secondaryButton:(nullable CPButton *)secondaryButton
+ travelEstimates:(nullable CPTravelEstimates *)travelEstimates;
/**
Optional travel estimates displayed alongside the primary action.
*/
-@property (nonatomic, strong, readonly, nullable) CPTravelEstimates *travelEstimates;
+@property (nonatomic, copy, nullable) CPTravelEstimates *travelEstimates;
/**
An optional secondary button shown with this configuration. Note: only the image property of this button is used.
*/
-@property (nonatomic, strong, readonly, nullable) CPButton *symbolButton;
+@property (nonatomic, copy, readonly, nullable) CPButton *secondaryButton;
@end
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h 2026-05-22 06:40:02
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelItem.h 2026-06-13 03:42:16
@@ -20,7 +20,7 @@
NS_ASSUME_NONNULL_BEGIN
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPMapPanelItem : CPPanelItem
/**
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h 2026-05-22 06:39:59
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapPanelSection.h 2026-06-13 03:42:13
@@ -16,7 +16,7 @@
@c CPPanelListSection describes a section within a map template overlay page.
Each section contains a title, a collection of content items, and an optional item selection handler.
*/
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPMapPanelSection : NSObject <NSSecureCoding>
/**
@@ -29,14 +29,6 @@
*/
- (instancetype)initWithTitle:(nullable NSString *)title
items:(NSArray<CPMapPanelItem *> *)items NS_DESIGNATED_INITIALIZER;
-
-/**
- Update the items in this section. If this section is currently visible in a panel,
- the panel will refresh to show the new items.
-
- @param items The new array of items to display in this section.
- */
-- (void)updateItems:(NSArray<CPMapPanelItem *> *)items;
/**
The title of the section.
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h 2026-05-22 06:40:02
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMapTemplate.h 2026-06-13 06:03:08
@@ -193,7 +193,7 @@
@param completion An optional block called when the overlay has been shown.
*/
- (void)showPanel:(CPMapPanel *)panel
- completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion NS_SWIFT_NAME(showPanel(_:completion:)) API_AVAILABLE(ios(27.0));
+ completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion NS_SWIFT_NAME(showPanel(_:completion:)) API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
/**
Pushes a new panel.
@@ -202,21 +202,21 @@
@param completion An optional block called when the panel has been pushed.
*/
- (void)pushPanel:(CPMapPanel *)panel
- completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion NS_SWIFT_NAME(pushPanel(_:completion:)) API_AVAILABLE(ios(27.0));
+ completion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion NS_SWIFT_NAME(pushPanel(_:completion:)) API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
/**
Pops the top panel from the overlay's panel stack.
@param completion An optional block called when the panel has been popped.
*/
-- (void)popPanelWithCompletion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0));
+- (void)popPanelWithCompletion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
/**
Hides the overlay.
@param completion An optional block called when the overlay has been hidden.
*/
-- (void)hidePanelWithCompletion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0));
+- (void)hidePanelWithCompletion:(nullable void (^)(BOOL success, NSError * _Nullable error))completion API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos);
@end
@@ -264,6 +264,12 @@
Called when a navigation request is received. Show a trip preview corresponding to this destination and start navigation if the destination is accepted by the user.
*/
- (void)mapTemplate:(CPMapTemplate *)mapTemplate didReceiveRequestForDestination:(CPNavigationWaypoint *)waypoint API_AVAILABLE(ios(26.4));
+
+/**
+ Called when the route sharing enabled status has been updated by the built-in system. Route sharing enabled is set to true when any vehicle features are enabled that rely on a route provided by the built‑in navigation system to func‑
+ tion.
+ */
+- (void)mapTemplate:(CPMapTemplate *)mapTemplate didUpdateRouteSharingEnabled:(BOOL)enabled API_AVAILABLE(ios(27.0));
#pragma mark - Multi-Stop Routing
/**
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h 2026-05-22 06:40:00
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPMultiStopCardConfiguration.h 2026-06-13 03:42:15
@@ -6,11 +6,13 @@
//
#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
#import <CarPlay/CPTextButton.h>
NS_ASSUME_NONNULL_BEGIN
API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
+
@interface CPMultiStopCardConfiguration : NSObject <NSSecureCoding>
/**
@@ -20,9 +22,33 @@
buttons:(NSArray<CPTextButton *> *)buttons;
/**
- Title of card presented to configure waypoints along a route. If no title is provided, the card title will default to "Trip Overview".
+ Initializes a MultiStopCardConfiguration with an optional title, an array of text buttons, and an optional image
+
+ Your app should provide a @c UIImage that is display-ready, containing
+ two @c UIImageAssets, corresponding to night and day mode.
+
+ When providing an image, your app should provide a @c UIImage that is display-ready. If necessary for the image, provide
+ light and dark styles by using an asset from your asset catalog, prepared with light and dark styles
+ or by using @c UIImageAsset to combine two @c UIImage instances into a single image with
+ both styles.
+
+ UIImageAsset is used to combine multiple UIImages with different trait collections into a single UIImage.
+
*/
+- (instancetype)initWithTitle:(nullable NSString *)title
+ buttons:(NSArray<CPTextButton *> *)buttons
+ image:(nullable UIImage *)image;
+
+
+/**
+ Title of panel presented to configure waypoints along a route. If no panel is provided, the panel title will default to "Add Stop".
+ */
@property (nonatomic, copy, readonly, nullable) NSString *title;
+
+/**
+ An optional image displayed alongside the @c title in the options panel, serving as an entry point to the multi-stop panel.
+ */
+@property (nonatomic, copy, readonly, nullable) UIImage *image;
/**
An array of text buttons to be displayed at the bottom of the card presented to configure waypoints along a route.
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h 2026-05-29 01:19:55
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPNavigationSession.h 2026-06-13 06:03:07
@@ -158,6 +158,16 @@
*/
@property (nonatomic) CPRouteSegment *currentSegment API_AVAILABLE(ios(26.4));
+/**
+ Whether the vehicle is presently using route data for any features in its built-in navigation system.
+ */
+@property (nonatomic, readonly, getter=isRouteSharingEnabled) BOOL routeSharingEnabled API_AVAILABLE(ios(27.0));
+
+/**
+ Whether the connected vehicle supports the route sharing feature.
+ */
+@property (nonatomic, readonly, getter=isRouteSharingSupported) BOOL routeSharingSupported API_AVAILABLE(ios(27.0));
+
@end
NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h 2026-05-22 06:40:01
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanel.h 2026-06-13 03:42:16
@@ -9,13 +9,22 @@
NS_ASSUME_NONNULL_BEGIN
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPPanel : NSObject <NSSecureCoding>
/**
- A unique identifier for this panel.
+ The maximum panel items count.
*/
-@property (nonatomic, readonly) NSUUID *identifier;
+@property (nonatomic, class, readonly) NSInteger maximumPanelItemsCount;
+
+/**
+ A Boolean value indicating whether the close button is allowed to appear.
+
+ @discussion Set the value of this property to @c NO to hide the close button.
+
+ Defaults to YES.
+ */
+@property (nonatomic, assign) BOOL showsCloseButton;
@end
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h 2026-05-22 06:40:02
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelButtonConfiguration.h 2026-06-13 03:42:17
@@ -16,7 +16,7 @@
@c CPPanelButtonConfiguration describes the button configuration for
a panel list section. It contains a primary and secondary action button.
*/
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPPanelButtonConfiguration : NSObject <NSSecureCoding>
/**
diff -ruN /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h
--- /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h 2026-05-22 06:39:59
+++ /Applications/Xcode_27.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/iOSSupport/System/Library/Frameworks/CarPlay.framework/Headers/CPPanelItem.h 2026-06-13 03:42:13
@@ -13,7 +13,7 @@
@c CPPanelItem is the base class for all items that can be displayed within a panel section.
Subclasses represent items specific to a particular template context (e.g., @c CPMapPanelItem for map templates).
*/
-API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(macos, watchos)
@interface CPPanelItem : NSObject <NSSecureCoding>
/**