12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /*
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- #pragma once
- #include <vector>
- #include <react/mounting/ShadowView.h>
- namespace facebook {
- namespace react {
- /*
- * Describes a single native view tree mutation which may contain
- * pointers to an old shadow view, a new shadow view, a parent shadow view and
- * final index of inserted or updated view.
- * Use static methods to instantiate mutations of different types.
- */
- struct ShadowViewMutation final {
- using List = std::vector<ShadowViewMutation>;
- #pragma mark - Designated Initializers
- /*
- * Creates and returns an `Create` mutation.
- */
- static ShadowViewMutation CreateMutation(ShadowView shadowView);
- /*
- * Creates and returns an `Delete` mutation.
- */
- static ShadowViewMutation DeleteMutation(ShadowView shadowView);
- /*
- * Creates and returns an `Insert` mutation.
- */
- static ShadowViewMutation InsertMutation(
- ShadowView parentShadowView,
- ShadowView childShadowView,
- int index);
- /*
- * Creates and returns a `Remove` mutation.
- */
- static ShadowViewMutation RemoveMutation(
- ShadowView parentShadowView,
- ShadowView childShadowView,
- int index);
- /*
- * Creates and returns an `Update` mutation.
- */
- static ShadowViewMutation UpdateMutation(
- ShadowView parentShadowView,
- ShadowView oldChildShadowView,
- ShadowView newChildShadowView,
- int index);
- #pragma mark - Type
- enum Type { Create, Delete, Insert, Remove, Update };
- #pragma mark - Fields
- Type type = {Create};
- ShadowView parentShadowView = {};
- ShadowView oldChildShadowView = {};
- ShadowView newChildShadowView = {};
- int index = {};
- };
- using ShadowViewMutationList = std::vector<ShadowViewMutation>;
- #if RN_DEBUG_STRING_CONVERTIBLE
- std::string getDebugName(ShadowViewMutation const &object);
- std::vector<DebugStringConvertibleObject> getDebugProps(
- ShadowViewMutation const &object,
- DebugStringConvertibleOptions options);
- #endif
- } // namespace react
- } // namespace facebook
|