easylogic / css

CSS Prototype Editor
https://css.easylogic.studio/
MIT License
9 stars 1 forks source link

0.4 #5

Open easylogic opened 5 years ago

easylogic commented 5 years ago
easylogic commented 5 years ago

command와 action 을 분리 해야할까?

  1. command ? => 유저가 실행한는 최초 명령 (파라미터를 포함)
  2. action ? => command 이후에 일어나는 비지니스 로직 (어떤 것이든 될 수 있음)

일단 유저는 command 만 호출 가능 , Action 은 command 에서 호출하는 것으로 정함.
즉, 유저는 action 을 호출할 수 없음.

우왕 그럼 지금까지 만들었던 구조를 따 엎어야 하나.....

easylogic commented 5 years ago
easylogic commented 5 years ago
easylogic commented 5 years ago
2019-02-11 6 06 28 2019-02-11 9 31 52 2019-02-11 10 20 35
easylogic commented 5 years ago
2019-02-18 12 14 25
easylogic commented 5 years ago
2019-02-26 2 54 41

검은색이 나은 것 같기도 하고

easylogic commented 5 years ago

처음부터 다시 만들고 있다.

모든 객체의 리팩토링이 필요하다.

project
artboard -> layer, directory, Layout, 
layer -> Rect, Circle, Shape, Layout 
Layout -> Rect, Circle, Shape, Layout 

Layout -> attribute 
attribute -> Filter, BackgroundImage, ClipPath ... 
easylogic commented 5 years ago

중첩이 될때 몇가지 규칙이 필요하다.

  1. 모든 객체는 절대 좌표를 가진다.
  2. Layout 은 표시 방법에 따라 하위 객체들의 절때 좌표를 지정해준다.
  3. 상위가 Layout 이면 Layout 의 방법에 따라 렌더링 하는 방식이 정해진다.

Layout 을 어디까지 해야할까?

position: absolute; position: relative;

display: inilne-block; display: block; display: flex; display: inline-flex; display: grid;

easylogic commented 5 years ago

중첩된 layer 를 다룰려니 할게 많군.

  1. CanvasView 에서 총 4가지 선택 사항이 있다. artboard, layer(절대좌표), layer(상대좌표 중에 상위 Layer 가 layout 을 가진 ), area (드래그 영역)

  2. 개별 사항을 선택 할려면 어떻게 해야하나?

    • artboard-title 클릭
    • drag 해서 layer 클릭 (drag 를 하는 것은 상대좌표를 선택하지 않는다.)
    • click 해서 layer 선택
    • layer 가 상위 레이아웃의 자식이면 resize component를 표현하지 않는다.
    • 이 경우 오직 상위 레이아웃에 의해서 위치가 정해지게 되는데
    • 자식 layer 가 개별 영역을 가지고 flex: none 같은 값을 가지게 되면 스스로 크기를 변화시킬 수 있다.
    • 다만 이 경우도 위치 이동은 레이아웃 엔진의 영향을 받는다.
easylogic commented 5 years ago
easylogic commented 5 years ago

드래그 할 때 마우스 포지션의 위치가 preview element 와 일치하면 그걸로 바꿈. 하지만 move 는 어떻게 하지?

drag 하는 지점과 dx, dy 를 더해서 최종 지점이 preview element 인 경우 preview element 의 row 와 column 을 설정한다.

easylogic commented 5 years ago

기능에 대한 정의를 하자.

  1. grid editor 는 어느 정도 만들었으니
  2. inspector 에 대한 정의를 해보자.
  3. 구성을 어떻게 하면 빠르게 만들어 낼 수 있는가?
  4. 아니면 쉽게 만들어낼 수 있는가?
  5. Inspector 만의 조립을 만들어내보자.
  6. 아니면 순수하게 데이타랑만 통신하는 Inspector 를 만들어보자.

일단은 grid editor 끝

easylogic commented 5 years ago
easylogic commented 5 years ago

Background Property 에서 순서가 필요함.

easylogic commented 5 years ago
easylogic commented 5 years ago

이미지랑 컬러도 모두 image 로 저장 해야할 둣 하다. 대상을 명확히 하기가 어려우니 모두 같은 패턴으로 만들어서 로직을 공통적으로 적용하자

easylogic commented 5 years ago
easylogic commented 5 years ago
easylogic commented 5 years ago
easylogic commented 5 years ago

할 수 있는 것부터 집중하고 나머지는 다음에 해보자.

easylogic commented 5 years ago
easylogic commented 5 years ago

팝업이 열린 이후에 클릭 하는 시점에 내가 없으면 자동으로 닫는걸로 해야 할 듯 , 그렇지 않으면 새로운 컴포넌트가 올라갈 때마다 그것에 대한 예외 처리를 해줘야 한니깐.... 코드를 생각해보자.

[CLICK(document)] (e) { 
    var isInto = new Dom(e.target).isInto(this.$el)
    if (!isInto) { 
        this.$el.hide();
     } 
    // 마우스 포인트가 내 컴포넌트에 속하지 않으면 다는 걸로 
    // Picker, Popup 마다 추가 해야할 듯 
} 
easylogic commented 5 years ago

isInto 는 target 부터 path 를 죽 올라오면서 그 path 안에 현재 this.$el 있으면 성공, 아니면 실패