- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스) - Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포 - 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
107 lines
3.4 KiB
C++
107 lines
3.4 KiB
C++
/*
|
|
* Copyright (c) Meta Platforms, Inc. and 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 <react/renderer/components/view/ViewEventEmitter.h>
|
|
#include <react/renderer/components/view/ViewProps.h>
|
|
#include <react/renderer/components/view/YogaLayoutableShadowNode.h>
|
|
#include <react/renderer/core/ConcreteShadowNode.h>
|
|
#include <react/renderer/core/LayoutableShadowNode.h>
|
|
#include <react/renderer/core/ShadowNode.h>
|
|
#include <react/renderer/core/ShadowNodeFragment.h>
|
|
#include <react/renderer/debug/DebugStringConvertibleItem.h>
|
|
|
|
namespace facebook::react {
|
|
|
|
/*
|
|
* Template for all <View>-like classes (classes which have all same props
|
|
* as <View> and similar basic behaviour).
|
|
* For example: <Paragraph>, <Image>, but not <Text>, <RawText>.
|
|
*/
|
|
template <
|
|
const char* concreteComponentName,
|
|
typename ViewPropsT = ViewProps,
|
|
typename ViewEventEmitterT = ViewEventEmitter,
|
|
typename... Ts>
|
|
class ConcreteViewShadowNode : public ConcreteShadowNode<
|
|
concreteComponentName,
|
|
YogaLayoutableShadowNode,
|
|
ViewPropsT,
|
|
ViewEventEmitterT,
|
|
Ts...> {
|
|
static_assert(
|
|
std::is_base_of<ViewProps, ViewPropsT>::value,
|
|
"ViewPropsT must be a descendant of ViewProps");
|
|
static_assert(
|
|
std::is_base_of<YogaStylableProps, ViewPropsT>::value,
|
|
"ViewPropsT must be a descendant of YogaStylableProps");
|
|
static_assert(
|
|
std::is_base_of<AccessibilityProps, ViewPropsT>::value,
|
|
"ViewPropsT must be a descendant of AccessibilityProps");
|
|
|
|
public:
|
|
using BaseShadowNode = ConcreteShadowNode<
|
|
concreteComponentName,
|
|
YogaLayoutableShadowNode,
|
|
ViewPropsT,
|
|
ViewEventEmitterT,
|
|
Ts...>;
|
|
|
|
ConcreteViewShadowNode(
|
|
const ShadowNodeFragment& fragment,
|
|
const ShadowNodeFamily::Shared& family,
|
|
ShadowNodeTraits traits)
|
|
: BaseShadowNode(fragment, family, traits) {
|
|
initialize();
|
|
}
|
|
|
|
ConcreteViewShadowNode(
|
|
const ShadowNode& sourceShadowNode,
|
|
const ShadowNodeFragment& fragment)
|
|
: BaseShadowNode(sourceShadowNode, fragment) {
|
|
initialize();
|
|
}
|
|
|
|
using ConcreteViewProps = ViewPropsT;
|
|
|
|
using BaseShadowNode::BaseShadowNode;
|
|
|
|
static ShadowNodeTraits BaseTraits() {
|
|
auto traits = BaseShadowNode::BaseTraits();
|
|
traits.set(ShadowNodeTraits::Trait::ViewKind);
|
|
traits.set(ShadowNodeTraits::Trait::FormsStackingContext);
|
|
traits.set(ShadowNodeTraits::Trait::FormsView);
|
|
return traits;
|
|
}
|
|
|
|
Transform getTransform() const override {
|
|
auto layoutMetrics = BaseShadowNode::getLayoutMetrics();
|
|
return BaseShadowNode::getConcreteProps().resolveTransform(layoutMetrics);
|
|
}
|
|
|
|
private:
|
|
void initialize() noexcept {
|
|
auto& props = BaseShadowNode::getConcreteProps();
|
|
|
|
if (props.yogaStyle.display() == yoga::Display::None) {
|
|
BaseShadowNode::traits_.set(ShadowNodeTraits::Trait::Hidden);
|
|
} else {
|
|
BaseShadowNode::traits_.unset(ShadowNodeTraits::Trait::Hidden);
|
|
}
|
|
|
|
// `zIndex` is only defined for non-`static` positioned views.
|
|
if (props.yogaStyle.positionType() != yoga::PositionType::Static) {
|
|
BaseShadowNode::orderIndex_ = props.zIndex.value_or(0);
|
|
} else {
|
|
BaseShadowNode::orderIndex_ = 0;
|
|
}
|
|
}
|
|
};
|
|
|
|
} // namespace facebook::react
|