Commit Graph

111 Commits

Author SHA1 Message Date
Richard Zito
f24d7dbf6a CKComponentViewContext -> RCComponentViewContext
Summary: This lives in RenderCore, it should have an RC prefix.

Differential Revision: D51586116

fbshipit-source-id: 102c71f68d6505d34b5a4aac2bd97a49dcaf8408
2023-11-28 04:46:33 -08:00
Lorenzo Blasa
c1badd1a29 RCMountable -> CKMountable (#4522)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/4522

^

A codemod changed the name of `CKMountable` for the OSS ComponentKit integration, this is a breaking change as we are pinned to a specific Cocoapods version of CK.

Reviewed By: passy

Differential Revision: D43303489

fbshipit-source-id: 4d8ad472735414ca8e67a8ce4409efe84aab3e94
2023-02-15 03:55:28 -08:00
Kfir Schindelhaim
b55a35dd0f Rename CKMountable -> RCMountable
Summary: ^^

Reviewed By: adamjernst

Differential Revision: D41496622

fbshipit-source-id: aa4ce00ef5f05f58935e30d1570fbaa8b57c55d7
2022-12-01 13:20:37 -08:00
Luke De Feo
f72406b06c Ensure that highlight always responds to prevent timeouts
Summary: In a previous diff D32278523 (8764da7c0b) The desktop request was changed from send to call. Call expects a response and not all code paths return a response. Most calls to set highlight are timing out.

Reviewed By: mweststrate

Differential Revision: D38074704

fbshipit-source-id: 6e85416d6b6470efaa177ad1b74420c8237366d5
2022-07-25 14:51:41 -07:00
Lorenzo Blasa
aed7e7e6f2 UI preview of selected element
Summary:
This is a prototype for view preview within Flipper for iOS (Android next).

If enabled, a preview of the selected element is rendered in the attribute inspector.

Changelog: Add view preview/snapshot for the Layout plugin on iOS.

Reviewed By: antonk52

Differential Revision: D34990372

fbshipit-source-id: 1984514fbf59041ad236008a8db10569c5fc5f94
2022-03-28 05:17:23 -07:00
Andres Suarez
79023ee190 Update copyright headers from Facebook to Meta
Reviewed By: bhamodi

Differential Revision: D33331422

fbshipit-source-id: 016e8dcc0c0c7f1fc353a348b54fda0d5e2ddc01
2021-12-27 14:31:45 -08:00
Ruslan Serebriakov
43a3f4634d CKVariant
Summary:
fastmod --accept-all CK::Variant RC::Variant
fastmod --accept-all CKVariant.h RCVariant.h

Reviewed By: cuva

Differential Revision: D30540421

fbshipit-source-id: 523aa4db311f4cc5694b7b44858d7eb2388d76c0
2021-08-26 06:28:41 -07:00
Hugo Cuvillier
7572178f25 Remove redeclared header CKMutex from CK
Summary: It can now only be accessed through `RenderCore`.

Reviewed By: ivanmisuno

Differential Revision: D28532729

fbshipit-source-id: b5b97ec93c96303b2a6e4c270dfc667712086b79
2021-05-19 02:38:15 -07:00
Fabio Milano
5a7d4e2f17 Remove empty files from ComponentKit plugin
Summary: just empty files

Reviewed By: kevin0571

Differential Revision: D28315389

fbshipit-source-id: 9022c98bd3d97b1f7b38e5d14877e710c1ac707d
2021-05-10 03:44:48 -07:00
Michel Weststrate
32bf4c32c2 Remove Console feature
Reviewed By: fabiomassimo

Differential Revision: D27622952

fbshipit-source-id: 45ce5188a55f50b8ca28f28f354d9402902a5df8
2021-04-09 05:03:28 -07:00
Hugo Cuvillier
3423d78f59 Rename CKComponentViewConfiguration -> CKViewConfiguration
Summary:
Ditto. #cleanup

allow-large-files

Reviewed By: kevin0571

Differential Revision: D27498785

fbshipit-source-id: 06aa1cd186a4784a93be3fe2fc240a10c3f9fabe
2021-04-01 04:58:24 -07:00
Hugo Cuvillier
a501838650 Migrate #import <ComponentKit/ headers to #import <RenderCore
Summary:
Ditto.

drop-conflicts

Reviewed By: fabiomassimo

Differential Revision: D27437645

fbshipit-source-id: ddc096154df1845c614c829f7234b41cd49d9503
2021-03-31 06:10:06 -07:00
Xiangxin Sun
a783c0d691 Revert D27328277: add macOS deps to shared libraries
Differential Revision:
D27328277 (7c44d4d4f0)

Original commit changeset: f22d1e9f6a54

fbshipit-source-id: bc893df5ba5a0bd9d47eeab4ff345e7c5047da9b
2021-03-29 20:11:37 -07:00
Xiangxin Sun
2bae11e132 Revert D27332601: add macOS descriptors for layout plugin
Differential Revision:
D27332601 (ed69c4f16a)

Original commit changeset: 35c93cf715f0

fbshipit-source-id: 5dd601f1ec88d890886272d829f3ce6da3e72259
2021-03-29 20:11:37 -07:00
Kyle Cui
ed69c4f16a add macOS descriptors for layout plugin
Summary: Add macOS only descriptors. Currently does not support Yoga/YogaKit or accessibility features; will add those in a later diff.

Reviewed By: priteshrnandgaonkar

Differential Revision: D27332601

fbshipit-source-id: 35c93cf715f004dbf8dbf8753534f1d4f9801b4c
2021-03-29 16:13:24 -07:00
Kyle Cui
7c44d4d4f0 add macOS deps to shared libraries
Summary: Add macOS dependencies and alternative classes to the libraries that FlipperKitLayoutPlugin needs to function.

Reviewed By: priteshrnandgaonkar

Differential Revision: D27328277

fbshipit-source-id: f22d1e9f6a5415cee0bae8eaada653be5f5467b3
2021-03-29 16:13:24 -07:00
Pritesh Nandgaonkar
790f23301e Refactor Layout Plugin
Summary:
This diff moves the iOS descriptors and other layout helpers into its own buck target. Earlier everything was part of the FlipperKitLayoutPlugin target. When kcui, tried to add macos descriptors, we realised that FlipperKitLayoutPlugin doesn't have macos platform in it and thus he had to put #if TARGET_OS_SIMULATOR check in iOS descriptors and at some other places.

In order to make the integration easier I decided to split the Layout Plugin in following way.

```
FlipperKitLayoutPlugin
  -> FlipperKitLayoutIOSDescriptors (platform set as IOS)
  -> FlipperKitLayoutHelpers (used in iOS Descriptors and usefule for Macos too)
  -> FlipperKitLayoutMacOSDescriptors(coming soon by kcui)(platform set as MacOS)

```

Reviewed By: kcui

Differential Revision: D27127587

fbshipit-source-id: f108ef81914297e93c886fe53dabf0a4bf11ebc1
2021-03-25 16:00:28 -07:00
Pritesh Nandgaonkar
e104a1fa6b Split up the CK code so that internal refers to the latest and Open source refers to the sunset version and it won't be actively developed
Summary:
This diff keeps the opensource integration of CK for Flipper at the same place. It moves the code which is referred internally to a different folder under Facebook directory.

The reason we are doing this is because, CK won't be publishing any more opensource releases to Cocoapods. Thus we would like to keep the code for opensource compatible to the latest one. Internally we would refer to the CK code from Facebook directory.

Reviewed By: fabiomassimo

Differential Revision: D26047510

fbshipit-source-id: 302890bcd36d3e4c4888577d821433f58fcab5c7
2021-01-27 02:43:07 -08:00
Ruslan Serebriakov
0fd6262044 Fixing the issue with broken CKInsetComponent set up
Summary:
After updating the internal properties of CKInsetComponent we didn't update some KVO magic being used in Flipper which caused some crashes:
https://fb.workplace.com/groups/componentkit/permalink/4986354281413147/

Reviewed By: fabiomassimo

Differential Revision: D25946704

fbshipit-source-id: 5995cda20d12b18f7520507cb6ede897fddf2670
2021-01-20 04:52:29 -08:00
Shuo Yang
f1baf3c1d8 WPM | Fix for missing SonarKit symbols (SKNamed, SKComponentLayoutDescriptor)
Summary:
This should fix build failures with prod config. The symbols should only be in internal builds and not the prod ones.

```
stderr: Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_SKNamed", referenced from:
  ...
  "_OBJC_CLASS_$_SKComponentLayoutDescriptor", referenced from:
  ...
```

Reviewed By: rzito

Differential Revision: D24250749

fbshipit-source-id: 68c3d066a76baf4b1646f27dac0fd081bcaff41b
2020-10-12 09:37:08 -07:00
Dustin Shahidehpour
6a22d6dca9 Add docs to SKSubDesciptor
Summary: This tripped me up for a bit. Add some docs.

Reviewed By: Andrey-Mishanin

Differential Revision: D24160934

fbshipit-source-id: a36ac6b205a9edeeb0698f44476456583146907c
2020-10-07 15:44:33 -07:00
Dustin Shahidehpour
7711502413 Add ability to register additional attribute providers.
Summary:
We have some "internal-only" stuff we want to put in the attribute of a layout node.
This allows us to do so a way that keeps it out of open-source and avoid the clunky subclassing.

Reviewed By: adamjernst

Differential Revision: D24162047

fbshipit-source-id: 518ab9fbf0b4274076f5b0ae1b249e197563fa7f
2020-10-07 15:41:44 -07:00
Paco Estevez Garcia
d488b308de Add support for tagged messages on the Layout Inspector
Summary:
Related diff [Litho]: D23243009

This diff adds support for a protocol for layout messages where the type is recursively encoded as:

```
{
 kind: "type",
 data: ???
}
```

We check if the message adheres to the new encoding, otherwise we fall back to the old behavior. If it's the new encoding, the message is traversed recursively flattening the types to EditorValue using the type hints provided.

Reviewed By: Andrey-Mishanin

Differential Revision: D23319619

fbshipit-source-id: 79e8886f8f5a0aea4ec32938f1d5cd2fd645a297
2020-08-27 05:34:27 -07:00
Dominik Wielgórski
41f1a0b454 Extra data send from iOS to Flipper Desktop
Summary: Added `extraInfo` for node descriptor for ios. Analogical to android node descriptor

Reviewed By: cuva, Andrey-Mishanin

Differential Revision: D23105947

fbshipit-source-id: f21541e97d79c0009815f94e733a056320324459
2020-08-17 10:20:53 -07:00
Adam Ernst
b11082d229 Don't show accessibilityComponentAction in Flipper
Summary: This field is going to be removed in a subsequent version of the struct. Showing it is not that important, so let's just remove it.

Reviewed By: kevin0571

Differential Revision: D22335170

fbshipit-source-id: 0916927ee30757678f847cd0f826caa1d4a6c7cc
2020-07-01 14:54:49 -07:00
Kevin Lin
29c85e672b Rename CKComponentLayout to CKLayout
Summary:
Rename `CKComponentLayout` to `CKLayout`
#nocancel

Reviewed By: adamjernst

Differential Revision: D22332214

fbshipit-source-id: 8845f2b313e214cd7892199bf0c40341c88a595a
2020-07-01 11:59:41 -07:00
Adam Ernst
993dbef7b8 Remove expensive operator== from CKViewConfiguration & AccessibilityContext
Summary:
`CKComponentAccessibilityContext::operator==` can be extremely expensive; it may invoke the `accessibilityLazyTextBlock` for its `CKComponentAccessibilityTextAttribute` members, and that can do a lot of string construction.

I could refactor this to make it cheaper, e.g. by migrating to a function-pointer-and-context-object approach. But the easiest thing to do is to simply remove it; I don't think it's meaningfully used.

Reviewed By: kevin0571

Differential Revision: D22322108

fbshipit-source-id: 82a0548d6dd28ec4adf2f3ba85705eabf665d100
2020-07-01 08:26:04 -07:00
Andrey Mishanin
925a5a4d61 Displaying scope identifier
Summary: Ditto.

Reviewed By: kevin0571

Differential Revision: D21742950

fbshipit-source-id: e2e1e1a7758c0e0c9f0041c4c59f3a59618acbe8
2020-05-27 16:28:09 -07:00
Chaiwat Ekkaewnumchai
a42c2dda5b Fix Highlight not Removed Properly When Quit Flipper via Shortcut
Summary: Discovered in https://fburl.com/h6eczhr2; the highlight didn't get removed correctly. This was from [this method](https://fburl.com/diffusion/twur28gt), which must be called on main thread to be executed completely.

Reviewed By: jknoxville

Differential Revision: D21629318

fbshipit-source-id: cfc52ac755a1ddfe92e675aac1a81066ce338bd7
2020-05-19 09:44:49 -07:00
Adam Ernst
82898b784e Clean up Flipper's iOS layout invalidation
Summary:
This reverts D21285438 and patches some holes in the layout invalidation routines.

(I tried to use `didAddSubview:` and `willRemoveSubview:` but those are annoying for other reasons; for example, `willRemoveSubview:` can be called from within `dealloc` which is surprising. Also they still don't catch the case where subviews are being reordered.)

Reviewed By: Andrey-Mishanin

Differential Revision: D21512129

fbshipit-source-id: 1d9e8dac9333eddfae2309d446ef4de9e83220d6
2020-05-12 05:54:38 -07:00
Adam Ernst
029122ce7a Fix unresponsive UI bug due to sloppy swizzling
Summary:
If you're going to swizzle, you have to be very careful to call the original version of the swizzled method!

The blame diff for this regression is D21285438.

In this case we would fail to call `swizzle_removeFromSuperview` if the view being removed was a child of a window. Thus the view would never be removed.

In practice, this manifested as `UITransitionView` instances being left around. These would block taps, leading to developer reports of unresponsive UI.

Reviewed By: priteshrnandgaonkar

Differential Revision: D21509692

fbshipit-source-id: e400c55232c44e9cd3f478eb2b456222c0bc6576
2020-05-11 16:18:04 -07:00
Chaiwat Ekkaewnumchai
f4c209bc1c (client_ios) Update Descriptors
Summary: Similar to D21040424 and D21040426.

Reviewed By: Andrey-Mishanin

Differential Revision: D21335955

fbshipit-source-id: 5e8326915e54647c77fb241ad2ed4eaa55d0cfe2
2020-05-07 06:18:38 -07:00
Chaiwat Ekkaewnumchai
367dbeee8c (client_ios) Return Tree And Path to Flipper Desktop
Summary:
Similar to D21040429, we need to add data sent to Flipper desktop so that we can use to retrieve necessary data.

~~The implementation is different; storing **all** component data is needed because the plugin refers to it when asked for information. This might cause an issue because we need to store more data. However, due to the sparseness of data at a single touch, this shouldn't cause any OOM.~~

Implementation Detail:
- `FlipperKitLayoutPlugin.mm`
  - When the process finishes the tree returned is trie from root node to every node that is touched
- `SKTouch.m`
  - `_nodeStack` keeps track of path from root to current component
  - `_treeStack` keeps track of current prefix tree (trie)
  - `continueWithChildIndex` takes care of logic for `_nodeStack` and `_treeStack`

Reviewed By: Andrey-Mishanin

Differential Revision: D21335956

fbshipit-source-id: 84c0cabd7399abe50cf2deaff2b01149a1a792d5
2020-05-07 06:18:38 -07:00
Eloy Durán
c393ee9421 Entirely control Flipper being enabled through Podfile (#1086)
Summary:
Currently user’s are being told to add a definition of the `FB_SONARKIT_ENABLED` macro and examples, including those in stock React Native templates, set this for the user by making use of a `post_install` hook in the user’s `Podfile`. This leads to confusion, fragile code [when a user’s project dir structure deviates from vanilla], and is ultimately not necessary as CocoaPods already has dedicated mechanisms to:

* specify build settings (through the `xcconfig` property);
* and selectively include certain pods only in certain build configurations (e.g. debug).

Finally, this PR also includes a commit [to fix the current builds](https://github.com/facebook/flipper/pull/1086/files#r418526812).

## Changelog

> Entirely control Flipper being enabled through inclusion in Podfile and optionally limiting to certain build configurations using the `:configuration` directive.
Pull Request resolved: https://github.com/facebook/flipper/pull/1086

Test Plan: I have built and ran the Sample application, as well as used this version of Flipper with a new RN app built from `master`.

Reviewed By: passy

Differential Revision: D21381828

Pulled By: priteshrnandgaonkar

fbshipit-source-id: edf6dae28eb02336a49e8230654d6186360ea8d6
2020-05-05 03:11:45 -07:00
Pritesh Nandgaonkar
794d2f282f Solved the bug related to the toggle inspector of iOS
Summary:
Before this diff the nodes were not invalidated properly when the new view got added in the hierarchy, due to this there was following bug.

https://our.intern.facebook.com/intern/px/p/15RSP

Reviewed By: Andrey-Mishanin

Differential Revision: D21285438

fbshipit-source-id: b72aa93856688b31296ae1df4f15e128037aa1ca
2020-05-04 09:53:12 -07:00
Adam Ernst
affade67ff Remove unused getAllNodes support from Layout plugin impl
Summary: Added in D14209157, but the JavaScript no longer ever calls this method.

Reviewed By: jknoxville

Differential Revision: D21290792

fbshipit-source-id: df1969d83f0dc096a24977c15c27100d2f2bdfc0
2020-04-29 08:37:55 -07:00
Adam Ernst
c62760b3e8 Speed up Flipper by using background queue for serialization
Reviewed By: jknoxville

Differential Revision: D21290732

fbshipit-source-id: 21fcb793900a6517d764fa3a581255fd75a39801
2020-04-28 21:32:49 -07:00
Adam Ernst
d66484822b Allow subdescriptors to return nil to signal no data
Summary: Currently subdescriptors are *always* rendered. Allow them to return `nil` to signal that they don't need to be rendered.

Reviewed By: cuva

Differential Revision: D21157249

fbshipit-source-id: 68a83424efc50723e1ec71c069feef8e10037671
2020-04-21 11:53:11 -07:00
Adam Ernst
d0803ecd56 Show mounted ComponentKit views in Flipper
Summary:
Before this diff, Flipper showed *leaf* views created by ComponentKit, but not any intermediate views. Now we show both.

A new node type `SKComponentMountedView` is used for this purpose. Its descriptor `SKComponentMountedViewDescriptor` mostly delegates to its view's descriptor, but redirects back into ComponentKit for children.

Reviewed By: Andrey-Mishanin

Differential Revision: D21130997

fbshipit-source-id: b3c12ea7cc1200962b3ba7c269c48d68b1809948
2020-04-21 11:53:10 -07:00
Hugo Cuvillier
1ce8a41556 Use component.className instead of NSStringFromClass"
Summary: Component classes do not reflect the source of the component anymore.

Reviewed By: fabiomassimo

Differential Revision: D20595754

fbshipit-source-id: 645a63f78ee6aaaf75ac0c1e08bf67229a3f906b
2020-04-16 13:50:01 -07:00
Adam Ernst
70d417b62b Tweak docs for [SKNodeDescriptor -identifierForInvalidation:]
Summary: It took me a few tries to understand what this was for.

Reviewed By: jknoxville

Differential Revision: D20462208

fbshipit-source-id: f6dac7836409c8d4ec1ffb90a74f632624fb68f7
2020-03-16 07:29:23 -07:00
Adam Ernst
89d6dfcf95 Simplify invalidate batching in Layout plugin
Summary:
- Avoid holding lock while calling out to `send:withParams:`; it's hard to reason about whether we could trigger deadlock.
- Remove unnecessary `lastInvalidateMessage` ivar; we already ensure that we send at most one invalidate batch per 500ms by using `invalidateMessageQueued`.
- Misc code style items

Reviewed By: Andrey-Mishanin

Differential Revision: D20462193

fbshipit-source-id: 80f61e5a7ce5021e16ebc19a2ec40adfc46f9b92
2020-03-16 07:29:23 -07:00
Adam Ernst
d9a2167019 Refactor SKSubDescriptor
Reviewed By: d16r

Differential Revision: D20458337

fbshipit-source-id: e8ea848c6e2f7521c5a6c6eb4110bba0bfe25593
2020-03-15 19:42:39 -07:00
Adam Ernst
19876273a3 Refactor SKComponentLayoutDescriptor
Reviewed By: Andrey-Mishanin

Differential Revision: D20458227

fbshipit-source-id: 1723043d6b217323a1c70a455042b28eaf5218a0
2020-03-15 19:42:38 -07:00
Adam Ernst
1725fd6bf1 Simplify CKComponentHostingViewProtocol
Summary: All current implementations of `CKComponentHostingViewProtocol` *contain* a `CKInspectableView`, so there is no need for the hosting view itself to conform. This also simplifies the Flipper plugin.

Reviewed By: d16r

Differential Revision: D20457822

fbshipit-source-id: 472f80f5bb2ee507862487d076cfb0e3de6416fa
2020-03-15 19:42:38 -07:00
Shahar Freundlich
72a74c9a1d Change compiler flag
Summary: Change compiler flag "-Wno-unguarded-availability" to "-Wunguarded-availability" in order to make build time safety check for unsafe newly introduced api without guarding it with available conditional.

Reviewed By: priteshrnandgaonkar

Differential Revision: D20335903

fbshipit-source-id: b4b0e492a9244233f1bc3b5ba2a63c6415c92bb4
2020-03-12 00:49:50 -07:00
Andrey Mishanin
f544d95953 Displaying component identifiers
Summary: Adding the new "Identity" section to CK components' description.

Reviewed By: cuva

Differential Revision: D19948738

fbshipit-source-id: cbd9bc9c77b6f6503e10cfc75581ef4b94dd0247
2020-03-11 09:41:06 -07:00
Andrey Mishanin
127cb604be Use unique id for both root and hosting views
Summary: Same as D19600721, but supports hosting views too.

Reviewed By: cuva

Differential Revision: D19949935

fbshipit-source-id: 4490b03aff9f6d00003cf59468081cc3a4fef598
2020-03-11 09:31:09 -07:00
Eloy Durán
c6c667df69 Make iOS 9 compatible again. (#874)
Summary:
React Native v0.62.0’s template still uses iOS 9 as deployment target, bumping it to 10 this late in the release cycle is probably not a good idea, so instead I made this tiny change to make it iOS 9 compatible again.

⚠️  I made this change on top of the `v0.32.2` **tag**, as `master` was giving me a build failure and in any case it would be better to release _just_ this change as a patch release so the RN `v0.62.0-rc.3` release can go out without having to test Flipper as thoroughly again.

## Changelog

Make FlipperKit compatible with iOS 9 again.
Pull Request resolved: https://github.com/facebook/flipper/pull/874

Test Plan:
- `pod install` with a Podfile that has iOS 9 as its deployment target passes again.
- Building the Flipper Sample works.
- Building with a RN application created with the `v0.62.0-rc.3` template works.

Reviewed By: priteshrnandgaonkar

Differential Revision: D20307073

Pulled By: passy

fbshipit-source-id: 0dd02dfb810b7382c52ca81b8f1322f807fb3f29
2020-03-09 07:42:34 -07:00
Hugo Cuvillier
987822074b Back out "Use component.className instead of NSStringFromClass"
Summary:
Original diff broke OSS flipper. Need a new OSS release of CK first

Original commit changeset: 3e7564b25610

Reviewed By: kfirapps

Differential Revision: D20304743

fbshipit-source-id: 08a56359a42bc56b576d212e7cf642197a064076
2020-03-06 07:59:11 -08:00