Summary:
- Introduce new base protocol `CKMountable`
- Contains Layout & Mount methods that have been extracted from `CKComponent`
- This will allows us to introduce a new lighter version of `CKComponent`, which doesn't rely on Scope/State/Controllers/etc
- Refactor `CKComponentLayout` to work with `CKMountable` instead of `CKComponent`, which will allows us to interop between `CKComponent` and a new type of components.
- Refactor the codebase to support this change
Reviewed By: kevin0571
Differential Revision: D17668253
fbshipit-source-id: 13db5ff4acb37b338e291ca2dd7d67cd25dbc6d2
Summary: Moving FlipperKitLayoutPlugin/FlipperKitPluginUtils/SKHighlightOverlay to shared folder, so Layout and WorkingRange plugins can depend on it
Reviewed By: kevin0571
Differential Revision: D17156396
fbshipit-source-id: 3f17371f2ab4818924d61e6cfb243f60ad1f2892
Summary: Size is passed as a prop to every `CKComponent` and `CKFlexboxChild`. It is useful to see where it was set exactly
Reviewed By: kevin0571
Differential Revision: D16688496
fbshipit-source-id: 5f8dc39a967ab2d7d89d6a37a8152aa6b59db220
Summary: objc_msgSend_stret isn't available when building for 64 bit devices so this line breaks. objc_msgSend is the correct function to call in 64 bit, but Flipper doesn't run for devices so its fine either way.
Reviewed By: jasonhotsauce
Differential Revision: D16502377
fbshipit-source-id: cfc20880bcccd086dc34fad74a6eef2c9a17cb17
Summary:
CKCenterLayoutComponent's options are now live editable
P.S. Now it takes some time to see the view changed and the new value of everything on flipper side
Reviewed By: kevin0571
Differential Revision: D16458390
fbshipit-source-id: a5344253641633dd8c985549c2d9bc6f64da1f74
Summary:
CKRatioLayoutComponent's ratio is now live editable
P.S. Now it takes some time to see the view changed and the new value of everything on flipper side
Reviewed By: kevin0571
Differential Revision: D16458380
fbshipit-source-id: 0f06426477b6747f6ad71716dc66e69316b23208
Summary:
CKFlexboxComponent's insets are now live editable
P.S. Now it takes some time to see the view changed and the new value of everything on flipper side
Reviewed By: kevin0571
Differential Revision: D16379743
fbshipit-source-id: 69bc9b7cb6b2103ff34b5c4489b240ac7562a85d
Summary:
CKInsetComponent's insets are now live editable
P.S. Now it takes some time to see the view changed and the new value of insets on flipper side
Reviewed By: kevin0571
Differential Revision: D16338109
fbshipit-source-id: 9c6648e72d55a09df9d715637e82901d1b5dcec8
Summary: Preparation for making components live editable
Reviewed By: kevin0571
Differential Revision: D16379961
fbshipit-source-id: d0ea3d753eb588fe7b55f2345124427b4a5a58b5
Summary: Theadsafe Data Storage for new insets in CKInsetComponent
Reviewed By: kevin0571
Differential Revision: D16338091
fbshipit-source-id: 3b77652a4d08cfebce115a606af3fc3440a1aca0
Summary: Added a possibility to search for the text not only in name and id of components but also in text for all components, that conforms to a protocol <SKTextSearchable>
Reviewed By: priteshrnandgaonkar
Differential Revision: D16108297
fbshipit-source-id: 31da4ac6762c487ef644d62c9576d9eff43e8cd4
Summary:
`/*` is the standard throughout open source code. For example, Firefox uses single /*: https://hg.mozilla.org/mozilla-central/file/21d22b2f541258d3d1cf96c7ba5ad73e96e616b5/gfx/ipc/CompositorWidgetVsyncObserver.cpp#l3
In addition, Rust considers `/**` to be a doc comment (similar to Javadoc) and having such a comment at the beginning of the file causes `rustc` to barf.
Note that some JavaScript tooling requires `/**`. This is OK since JavaScript files were not covered by the linter in the first place, but it would be good to have that tooling fixed too.
Reviewed By: zertosh
Differential Revision: D15640366
fbshipit-source-id: b4ed4599071516364d6109720750d6a43304c089
Summary: Importing the extensions fixes the fact that responds to selector was returned false for `sonar_additionalDataOverride` selector
Reviewed By: priteshrnandgaonkar
Differential Revision: D15535414
fbshipit-source-id: ab465a1aab36cccd2129c5b0c29a7872dfd65015
Summary:
This solves the watch tab crash discussed here D15266478, which got reverted.
Bug: [Here](diffusion/FBS/browse/master/xplat/sonar/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.mm;57c596a566bec49e343af51b93df65ed1377a2b9$338), when the node is `CKComponentRootView` the `[descriptor childForNode: node atIndex: i]` returns `SKComponentLayoutWrapper`. In the next iteration of the loop, node is `SKComponentLayoutWrapper`, the `[descriptor childForNode: node atIndex: i]` returns `CKComponentRootView`, and hence the infinite recursion
I also tested T44431259, it is not regressed.
Reviewed By: passy
Differential Revision: D15451821
fbshipit-source-id: 25f10112f5f52bb1fa964316a4c7e91a3b29156d
Summary: This resolves a crash related to the contents of certain CKComponents, which was apparently introduced by D15266478
Differential Revision: D15406260
fbshipit-source-id: efd1ad1a1bcb41451c56b74c240ad2dca069deb0
Summary:
BUG:
{F158264042}
Context: The code entered an infinite loop till it crashed. In the implementation of `- (SKSearchResultNode *)searchForQuery:(NSString *)query fromNode:(id)node withElementsAlreadyAdded:(NSMutableSet<NSString *> *)alreadyAdded`, we recurse through the child. In the case when the view was `CKRootComponent` it created a `SKComponentLayoutWrapper` in the call to `[descriptor childForNode: node atIndex: i];`. This wrapper's descriptor used to return the very same view from which it was created when it's children were asked. So this led to an infinite loop.
Reviewed By: kfirapps
Differential Revision: D15266478
fbshipit-source-id: 8035209746b7cb4b8773e2fcbdd4c0a148191304
Summary: Add the affiliates bit that the linter is checking for.
Reviewed By: jknoxville
Differential Revision: D15164826
fbshipit-source-id: 500ffe89ec0c2fd3acfbc374408d16a337cecfa4
Summary: Now that we always build the component tree (CKTreeNode) in debug, we can just use the tree node identifier as the component identifier instead of creating a very long string.
Reviewed By: fabiomassimo
Differential Revision: D15046568
fbshipit-source-id: 4d83c1bee3fd7ac85ee4bd6e9f4f47812509e0c3
Summary:
- We cache the layout wrapper, but never used it actually.
- This should make the Layout plugin faster.
Reviewed By: fabiomassimo
Differential Revision: D15046463
fbshipit-source-id: b61f28d9a981e782b76abe78037d37665f7d8ba3
Summary: Remove ObjC categories so we can strip dead code
Reviewed By: kfirapps
Differential Revision: D14665041
fbshipit-source-id: 243dee61a5b7cfd854191bfb5fa3a570b4ac1a4b
Summary:
`CKComponentDataSourceAttachContrlller` doesn't have to be tied with datasource. It's totally legit to use it in hosting view as well.
Renaming it to `CKComponentAttachController` and move it to `Core` folder.
Reviewed By: priteshrnandgaonkar
Differential Revision: D14526150
fbshipit-source-id: f48a8d27a3bfa5170e22a397fe1b32e806bc3c55
Summary: Previously an empty string would crash the flipper client. Now that we handled that ok, we can reenable the descriptors.
Reviewed By: jknoxville
Differential Revision: D13257534
fbshipit-source-id: 09be4834d5a7023b2fa4e2bee7e57e412916120b
Summary:
Bug report here: https://fb.facebook.com/groups/230455004101832/permalink/519062535241076/
This has broken layout plugin when NT components are used.
Removing the subdescriptors as a quick fix. At the moment, this means removing the new NT features.
Reviewed By: priteshrnandgaonkar
Differential Revision: D13103790
fbshipit-source-id: 57c10a0a07507aaba0cd7a20d1b548470203f2f6
Summary: took out dictionary implementation and passing string through NTSubDescriptor
Reviewed By: rohan-mehta
Differential Revision: D12961340
fbshipit-source-id: 73493b83b3b670eb3455148c0223972b0d25815a
Summary: Added NTSubDescriptor file which implements the SKSubDescriptor interface to pass all NT specific data to the Layout Component Descriptor.
Reviewed By: jknoxville
Differential Revision: D12840392
fbshipit-source-id: bff295e13e8531456428424b7e073aefe7e1ced4
Summary: Added separate subsections for ntData in objc - json string will be parsed on ios into correct subsections
Reviewed By: priteshrnandgaonkar
Differential Revision: D12817695
fbshipit-source-id: e1480303e121ceb537c47e6c30d328654ab91b8a